cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Manolescu, Radu \(IT\)" <Radu.Manole...@MorganStanley.com>
Subject org.apache.cxf.jaxws.interceptors.SwAOutInterceptor | Unreachable Code
Date Mon, 23 Jun 2008 20:56:09 GMT
1. In my opinion, the code at
org.apache.cxf.jaxws.interceptors.SwAOutInterceptor:197 is unreachable.
2. Why does this interceptor support only Source/Image/DataHandler? I
have a byte[] as a SOAP attachment, and this throws an exception at line
195.
 
How can we handle a byte[] as a SOAP attachment using CXF SwA?
 
 
Examine the code fragment below to see that line 197 is unreachable:
On line 148, dh=null.
Then we test the object o for its data type, in a series of if/elseif
clauses.
There are two possibilities for the object o:
1. o instanceof Source / Image / DataHandler
2. all other situations
 
In situation 1, execution will enter the blocks after lines 151, or 155,
or 182, then continue from line 202.
In situation 2, execution will not enter any of the blocks after lines
151, or 155, or 182. As a result, dh is still null when we reach line
194, and a Fault is thrown.
Either way, execution cannot reach line 197.
 
package org.apache.cxf.jaxws.interceptors;
public class SwAOutInterceptor extends AbstractSoapInterceptor {
            DataHandler dh = null; // LINE 148            
            if (o instanceof Source) { // LINE 151
                dh = new DataHandler(createDataSource((Source)o, ct));

            } else if (o instanceof Image) { // LINE 155
                dh = new DataHandler(new
ByteArrayDataSource(bos.toByteArray(), ct));
            } else if (o instanceof DataHandler) { // LINE 182
                dh = (DataHandler) o;
            } else if (dh == null) { // LINE 194
                throw new Fault(...);
            } else if (dh.getDataSource() instanceof URLDataSource) { //
<========== LINE 197: UNREACHABLE
                URLDataSource ds = (URLDataSource)dh.getDataSource();
                dh = new DataHandler(ds.getURL()); 
                ct = ds.getContentType();
            } // LINE 201

 
 
Radu Manolescu
Morgan Stanley | Technology
2000 Westchester Ave, 1st Floor | Purchase, NY  10577
Phone: +1 914 225-5871
Mobile: +1 203 648-6964
Radu.Manolescu@MorganStanley.com
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does not intend to
waive confidentiality or privilege. Use of this email is prohibited when received in error.

Mime
  • Unnamed multipart/alternative (inline, 7-Bit, 0 bytes)
View raw message