Finally it worked!
I've just tested the SANPSHOT built on May 9th and the issue is completely
fixed.
Many thanks for your support ;-)
Marco


dkulp wrote:
> 
> On Fri May 8 2009 2:31:56 am marcob wrote:
>> I've tested the latest SNAPSHOT (May 7th).
>> The result now is that the string "lucy&mary" is read as
>> "lucymary"...
>> not completely correct but much better than before!
>> If the issue might be solved by modifying something in my classpath,
>> please
>> let me know.
> 
> OK.  I see what I did.   The second text node is getting lost.  
> Basically, 
> the STAX parser built into Java 6 is splitting that into three text nodes:
> lucy
> &
> mary
> 
> Yesterdays version only grabbed the first.  Today's grabs all but the
> second.   
> Tomorrows should grab all three.   :-)
> 
> The other option for you:  add a woodstox jar to your classpath:
> http://repo1.maven.org/maven2/org/codehaus/woodstox/wstx-asl/3.2.9/
> 
> The woodstox parser puts that all in a single text node.   Thus, that
> should 
> work for you.
> 
> Dan
> 
> 
>>
>> Thanks agian!
>> Marco
>>
>> marcob wrote:
>> > Hi Dan,
>> >
>> > thank you for your detailed reply.
>> > According to your first question, please find below my project
>> classpath:
>> >
>> > activation-1.1.jar
>> > ant-1.6.5.jar
>> > antlr-2.7.6.jar
>> > aopalliance-1.0.jar
>> > apache-pdfbox-0.8.0-incubator-dev.jar
>> > arq.jar
>> > arq-extra.jar
>> > asm.jar
>> > asm-attrs.jar
>> > aspectjrt-1.5.4.jar
>> > backport-util-concurrent.jar
>> > barbecue-1.5-beta1.jar
>> > bcprov-jdk15-140.jar
>> > c3p0-0.9.1.jar
>> > castor-0.9.6.jar
>> > cglib-2.1.3.jar
>> > clibwrapper_jiio.jar
>> > commons-beanutils.jar
>> > commons-chain-1.1.jar
>> > commons-codec-1.3.jar
>> > commons-collections-2.1.1.jar
>> > commons-digester.jar
>> > commons-discovery.jar
>> > commons-el.jar
>> > commons-fileupload.jar
>> > commons-validator-1.3.1.jar
>> > core-3.1.1.jar
>> > cxf-2.2.jar
>> > dom4j-1.6.1.jar
>> > ehcache-1.4.1.jar
>> > ejb3-persistence.jar
>> > el-ri.jar
>> > FastInfoset-1.2.2.jar
>> > filetimes.jar
>> > FontBox-0.2.0-dev.jar
>> > geronimo-activation_1.1_spec-1.0.2.jar
>> > geronimo-annotation_1.0_spec-1.1.1.jar
>> > geronimo-servlet_2.5_spec-1.2.jar
>> > geronimo-stax-api_1.0_spec-1.0.1.jar
>> > hibernate3.jar
>> > hibernate-annotations.jar
>> > hibernate-commons-annotations.jar
>> > icefaces.jar
>> > icefaces-comps.jar
>> > icefaces-facelets.jar
>> > icu4j_3_4.jar
>> > iri.jar
>> > iText-2.1.3.jar
>> > jai_codec.jar
>> > jai_core.jar
>> > jai_imageio.jar
>> > jawin.jar
>> > jawin-stubs.jar
>> > jaxb-impl-2.1.7.jar
>> > jaxb-xjc-2.1.7.jar
>> > jaxen-1.1.jar
>> > jcifs-1.2.24.jar
>> > jcl-over-slf4j-1.5.6.jar
>> > jdom-1.0.jar
>> > jena.jar
>> > jenatest.jar
>> > jettison-1.0.jar
>> > jetty-6.1.15.jar
>> > jetty-util-6.1.15.jar
>> > jsf-api-1.2.jar
>> > jsf-impl-1.2.jar
>> > json.jar
>> > jsp-2.1-glassfish-9.1.1.B51.25.p1.jar
>> > jsp-2.1-jetty-6.1.15.jar
>> > jsp-api-2.1-glassfish-9.1.1.B51.25.p1.jar
>> > jsr107cache-1.0.jar
>> > jstl.jar
>> > jta.jar
>> > krysalis-jCharts-1.0.0-alpha-1.jar
>> > license-1.0.0.0.jar
>> > license-internal-1.0.0.0.jar
>> > log4j-1.2.15.jar
>> > lucene-core-2.2.0.jar
>> > mail-1.4.jar
>> > mysql-connector-java-3.1.14-bin.jar
>> > neethi-2.0.4.jar
>> > opensaml-1.1.jar
>> > PDFRenderer.jar
>> > poi-3.2-FINAL-20081019.jar
>> > poi-contrib-3.2-FINAL-20081019.jar
>> > poi-scratchpad-3.2-FINAL-20081019.jar
>> > postgresql-8.2-508.jdbc3.jar
>> > satanet-app.jar
>> > serializer-2.7.1.jar
>> > servlet-api-2.5-20081211.jar
>> > slf4j-api-1.5.6.jar
>> > slf4j-log4j12-1.5.6.jar
>> > spring.jar
>> > spring-security-acl-2.0.4.jar
>> > spring-security-cas-client-2.0.4.jar
>> > spring-security-catalina-2.0.4.jar
>> > spring-security-core-2.0.4.jar
>> > spring-security-core-tiger-2.0.4.jar
>> > spring-security-jboss-2.0.4.jar
>> > spring-security-jetty-2.0.4.jar
>> > spring-security-ntlm-2.0.4.jar
>> > spring-security-openid-2.0.4.jar
>> > spring-security-portlet-2.0.4.jar
>> > spring-security-resin-2.0.4.jar
>> > spring-security-taglibs-2.0.4.jar
>> > standard-1.1.2.jar
>> > stax-api-1.0.jar
>> > stax-utils-20060502.jar
>> > wsdl4j-1.6.2.jar
>> > wss4j-1.5.7.jar
>> > xalan-2.7.1.jar
>> > xercesImpl.jar
>> > xml-apis.jar
>> > xml-resolver-1.2.jar
>> > XmlSchema-1.4.2.jar
>> > xmlsec-1.4.0.jar
>> > xpp3_min-1.1.4c.jar
>> > xstream-1.2.1.jar
>> >
>> > I've just checked the available snapshots for CXF 2.2 but it seems that
>> > the latest was built on Tuesday 5th, so I guess it isn't the one you
>> > worked on.
>> > Today I'll be out of office but tomorrow (Friday 8th) I'll test your
>> > changes and let you know.
>> >
>> > Marco
>> >
>> > dkulp wrote:
>> >> Well, I'm not able to reproduce the issue.  I've pretty much created a
>> >> testcase in our aegis tests that enable wss4j with username/password
>> >> combos
>> >> just like you have and send "jack&jill" and it works.
>> >>
>> >> HOWEVER, if I send "   jack&jill   ", the string ended up trimmed.
>> >> Digging
>> >> into that more, I did discover a bug that COULD cause what you are
>> >> seeing.
>> >> The DOM reader (when using WSS4J, the message ends up as DOM) we have
>> >> had two
>> >> issues:
>> >> 1) It only checked the first TEXT node.   I THINK this is what you are
>> >> seeing.
>> >> Whatever parser you are using was splitting the text into multiple
>> text
>> >> nodes.
>> >> Are you using something other than woodstox?
>> >>
>> >> 2) It was also calling trim on the resulting string.
>> >>
>> >>
>> >> I've gone ahead and fixed those issues and am running the tests now.
>> >> I'll
>> >> get that committed shortly (providing the tests pass).    New
>> snapshots
>> >> should
>> >> be up tomorrow (or you could checkout from SVN and build).   It would
>> be
>> >> great
>> >> if you could test those to see if your issue is fixed as well.
>> >>
>> >> Dan
>> >>
>> >> On Wed May 6 2009 10:16:56 am marcob wrote:
>> >>> Hi,
>> >>>
>> >>> I tested that the problem occurs if I enable WS-Security. Below the
>> >>> test case.
>> >>>
>> >>> Service Interface:
>> >>> @WebService(name = "BatchManagerService", targetNamespace =
>> >>> "http://www.satanet.it/kfi";)
>> >>> public interface IBatchManagerService {
>> >>>   @WebResult(targetNamespace = "http://www.satanet.it/kfi";)
>> >>>   public String echo(@WebParam(name="text") String txt);
>> >>> }
>> >>>
>> >>> Service implementation:
>> >>> @WebService(endpointInterface =
>> >>>
>> "it.satanet.karthaForInvoice.commonInterfaces.batchManager.IBatchManage
>> >>>rSer vice", serviceName = "BatchManagerService", targetNamespace =
>> >>> "http://www.satanet.it/kfi";)
>> >>> public class BatchManagerServiceImpl implements IBatchManagerService
>> {
>> >>>
>> >>>   @Override
>> >>>   public String echo(String txt) {
>> >>>     System.out.println(txt);
>> >>>     return txt;
>> >>>   }
>> >>>
>> >>> }
>> >>>
>> >>> Service Spring cfg:
>> >>> <bean id="aegisDatabinding"
>> >>> class="org.apache.cxf.aegis.databinding.AegisDatabinding"
>> >>> scope="prototype"
>> >>> />
>> >>>
>> >>> <bean id="myPasswordCallback"
>> >>>
>> class="it.satanet.karthaForInvoice.commonInterfaces.ws_util.ServerPassw
>> >>>ordC allback"/>
>> >>>
>> >>> <!-- WS -->
>> >>>
>> >>> <bean id="wsService"
>> >>>
>> class="it.satanet.karthaForInvoice.batchManager.service.BatchManagerSer
>> >>>vice Impl" />
>> >>> <bean id="serviceFactory"
>> >>> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
>> >>> scope="prototype">
>> >>>   <property name="dataBinding" ref="aegisDatabinding" />
>> >>> </bean>
>> >>> <jaxws:server id="wsServiceEndpoint" serviceBean="#wsService"
>> >>>
>> serviceClass="it.satanet.karthaForInvoice.batchManager.service.BatchMan
>> >>>ager ServiceImpl" address="/ws">
>> >>> <jaxws:serviceFactory>
>> >>>   <ref bean="serviceFactory" />
>> >>> </jaxws:serviceFactory>
>> >>>
>> >>> <jaxws:inInterceptors>
>> >>>   <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>> >>>      <constructor-arg>
>> >>>         <map>
>> >>>            <entry key="action" value="UsernameToken"/>
>> >>>            <entry key="passwordType" value="PasswordText"/>
>> >>>            <entry key="passwordCallbackRef">
>> >>>               <ref bean="myPasswordCallback"/>
>> >>>            </entry>
>> >>>         </map>
>> >>>      </constructor-arg>
>> >>>   </bean>
>> >>> </jaxws:inInterceptors>
>> >>>
>> >>> <jaxws:properties>
>> >>>   <entry key="mtom-enabled" value="true" />
>> >>> </jaxws:properties>
>> >>>
>> >>> </jaxws:server>
>> >>>
>> >>>
>> >>> Client (generic, but you can replace T with the service interface):
>> >>>   @SuppressWarnings("unchecked")
>> >>>   public T getClientProxy(Class<T> c) {
>> >>>     JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>> >>>
>> >>>     // logging
>> >>>     // factory.getInInterceptors().add(new LoggingInInterceptor());
>> >>>     // factory.getOutInterceptors().add(new LoggingOutInterceptor());
>> >>>
>> >>>     Map<String, Object> outProps = new HashMap<String, Object>();
>> >>>     WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
>> >>>     factory.getOutInterceptors().add(wssOut);
>> >>>     outProps.put(WSHandlerConstants.ACTION,
>> >>> WSHandlerConstants.USERNAME_TOKEN);
>> >>>     // Specify our username
>> >>>     outProps.put(WSHandlerConstants.USER,
>> >>> ServerPasswordCallback.WS_SECURITY_USER);
>> >>>     // Password type : plain text
>> >>>     outProps.put(WSHandlerConstants.PASSWORD_TYPE,
>> >>> WSConstants.PW_TEXT); // for hashed password use:
>> >>>     // properties.put(WSHandlerConstants.PASSWORD_TYPE,
>> >>> WSConstants.PW_DIGEST);
>> >>>     outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
>> >>> ClientPasswordHandler.class.getName());
>> >>>
>> >>>     // invocation
>> >>>     factory.setServiceClass(c);
>> >>>     AegisDatabinding dataBinding = new AegisDatabinding();
>> >>>     dataBinding.setMtomEnabled(MTOM_ENABLED);
>> >>>     dataBinding.setMtomUseXmime(MTOM_ENABLED);
>> >>>     factory.setDataBinding(dataBinding);
>> >>>     factory.setAddress(wsUrl);
>> >>>     Map<String, Object> properties = factory.getProperties();
>> >>>     if (properties == null) {
>> >>>       properties = new HashMap<String, Object>();
>> >>>       factory.setProperties(properties);
>> >>>     }
>> >>>     properties.put("mtom-enabled", MTOM_ENABLED);
>> >>>
>> >>>     return (T) factory.create();
>> >>>   }
>> >>>
>> >>> By disabling WSS4J support, everything works fine.
>> >>> Right now, I think I can do without WSS4J but I'd like to know what
>> >>> goes wrong.
>> >>> Marco
>> >>>
>> >>> dkulp wrote:
>> >>> > A simple testcase for this would be great if at all possible.
>> >>> >
>> >>> > I just tested this by adding the string "john&marry" to the
>> >>> > testString stuff
>> >>> > in our type tests and it passed fine.   The full string was
>> properly
>> >>> > echoed
>> >>> > back.    Thus, I'm not sure what would be going on.    A test case
>> >>>
>> >>> would
>> >>>
>> >>> > definitely be useful.
>> >>> >
>> >>> >
>> >>> > Dan
>> >>> >
>> >>> > On Fri May 1 2009 3:38:44 am marcob wrote:
>> >>> >> That was my first reaction as well!
>> >>> >> Yes, I have CXF at both ends. I don't know if it might help, but
>> in
>> >>>
>> >>> the
>> >>>
>> >>> >> previous post I forgot to say that my WS stack also includes a WS
>> >>> >> Security
>> >>> >> Interceptor. When I come back to the office (Monday), I'll test
>> the
>> >>>
>> >>> same
>> >>>
>> >>> >> code without WS-Security and check whether exists a more updated
>> >>>
>> >>> version
>> >>>
>> >>> >> of
>> >>> >> woodstox library.
>> >>> >> In the meanwhile, any further suggestion is very welcome!
>> >>> >> Marco
>> >>> >>
>> >>> >> bimargulies wrote:
>> >>> >> > My first reaction is that I don't believe it. It is the woodstox
>> >>>
>> >>> code
>> >>>
>> >>> >> > that handles all of this, not us. Is the CXF on both ends?
>> >>> >> >
>> >>> >> > On Thu, Apr 30, 2009 at 12:21 PM, marcob <[email protected]>
>> >>>
>> >>> wrote:
>> >>> >> >> Hi,
>> >>> >> >>
>> >>> >> >> I've found this unexpected behaviour while using cxf 2.2.x +
>> >>> >> >> JaxWS
>> >>>
>> >>> +
>> >>>
>> >>> >> >> Aegis.
>> >>> >> >> If I define a method that accepts string parameters, e.g.
>> >>> >> >>
>> >>> >> >> public void echo(String text) {
>> >>> >> >>  System.out.println(text);
>> >>> >> >> }
>> >>> >> >>
>> >>> >> >> and I pass a string containing the ampersand character (&),
>> e.g.
>> >>> >> >> "john&lucy", the echo method only prints "john". I investigated
>> >>>
>> >>> the
>> >>>
>> >>> >> >> problem
>> >>> >> >> with an HTTP Monitor and it seems that at client side the
>> string
>> >>>
>> >>> is
>> >>>
>> >>> >> >> correctly escaped (the SOAP request contains the
>> >>>
>> >>> "john&amp;amp;lucy"
>> >>>
>> >>> >> >> text)
>> >>> >> >> but, at server side, the string is truncated at the & character
>> >>> >> >> position.
>> >>> >> >>
>> >>> >> >> From my point of view, it seems to be a bug.
>> >>> >> >> Any solution?
>> >>> >> >> Thanks
>> >>> >> >> Marco
>> >>> >> >> --
>> >>> >> >> View this message in context:
>> >>>
>> >>>
>> http://www.nabble.com/CXF-2.2.x-ampersand-issue-tp23319655p23319655.htm
>> >>>l
>> >>>
>> >>> >> >> Sent from the cxf-user mailing list archive at Nabble.com.
>> >>> >
>> >>> > --
>> >>> > Daniel Kulp
>> >>> > [email protected]
>> >>> > http://www.dankulp.com/blog
>> >>
>> >> --
>> >> Daniel Kulp
>> >> [email protected]
>> >> http://www.dankulp.com/blog
> 
> -- 
> Daniel Kulp
> [email protected]
> http://www.dankulp.com/blog
> 
> 

-- 
View this message in context: 
http://www.nabble.com/CXF-2.2.x-ampersand-issue-tp23319655p23477731.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to