[ http://jira.codehaus.org/browse/XFIRE-351?page=all ]

Dan Diephouse reopened XFIRE-351:
---------------------------------

             
>From the mailing list:

I'd like to reopen http://jira.codehaus.org/browse/XFIRE-351 as there
are several STAX impl which don't handle prefixes correctly. This means
that the getPrefix() method returns "" instead of null, causing
following code to throw an exception:

if (reader.getPrefix() != null) { e.setPrefix(reader.getPrefix()); }

(snippet from XFIRE-351)

As a workaround you can check for "" too:

if (reader.getPrefix() != null && reader.getPrefix() != "")
{ e.setPrefix(reader.getPrefix()); }

(see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6472960 for
example)

With woodstox I can reproduce this behavior too.

Thanks
Yves

> Exception when enabling DomInHandler
> ------------------------------------
>
>                 Key: XFIRE-351
>                 URL: http://jira.codehaus.org/browse/XFIRE-351
>             Project: XFire
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1-beta-1
>         Environment: java 1.5.0_06 on Mac OS X 10.4.6 (Intel)
>            Reporter: Andrew Wright
>         Assigned To: Dan Diephouse
>            Priority: Critical
>             Fix For: 1.2.3
>
>
> When I add org.codehaus.xfire.util.dom.DOMInHandler to my service:
> <service>
>         <name>ContentService</name>
>         <namespace>http://jivesoftware.com/webservices/</namespace>
>         
> <serviceClass>com.jivesoftware.forum.webservices.ContentService</serviceClass>
>         
> <implementationClass>com.jivesoftware.forum.webservices.xfire.ContentServiceImpl</implementationClass>
>         <inHandlers>
>             <handler handlerClass="org.codehaus.xfire.util.dom.DOMInHandler" 
> />
>             <bean class="org.codehaus.xfire.security.wss4j.WSS4JInHandler" 
> xmlns="">
>                 <property name="properties">
>                     <props>
>                         <prop key="action">UsernameToken</prop>
>                         <prop 
> key="passwordCallbackClass">com.jivesoftware.forum.webservices.xfire.PasswordHandler</prop>
>                     </props>
>                 </property>
>             </bean>
>             <handler 
> handlerClass="com.jivesoftware.forum.webservices.xfire.ValidateUserTokenHandler"/>
>         </inHandlers>
>     </service>
> I receive the following exception when making a request:
> org.w3c.dom.DOMException: DOM002 Illegal character
>     at org.apache.xerces.dom.ElementNSImpl.setPrefix(ElementNSImpl.java:284)
>     at org.codehaus.xfire.util.STAXUtils.startElement(STAXUtils.java:421)
>     at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:496)
>     at org.codehaus.xfire.util.STAXUtils.startElement(STAXUtils.java:446)
>     at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:496)
>     at org.codehaus.xfire.util.STAXUtils.startElement(STAXUtils.java:446)
>     at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:496)
>     at org.codehaus.xfire.util.STAXUtils.read(STAXUtils.java:395)
>     at org.codehaus.xfire.util.dom.DOMInHandler.invoke(DOMInHandler.java:42)
>     at 
> org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:98)
>     at 
> org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:60)
>     at 
> org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
>     at 
> org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:287)
>     at 
> org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:146)
>     at 
> org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:110)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     at 
> com.jivesoftware.base.util.ApplicationInitializedFilter.doFilter(ApplicationInitializedFilter.java:58)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>     at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>     at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>     at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>     at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>     at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>     at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
>     at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
>     at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>     at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>     at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>     at java.lang.Thread.run(Thread.java:613)
> This seems to be because there is no namespace prefix for operation portion 
> the request. However why should this matter, the service works properly when 
> the handler is removed.
> Here is the request I am making:
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>
>     <SOAP-ENV:Header/>
>     <SOAP-ENV:Body>
>         <getForumMessage xmlns="http://jivesoftware.com/webservices/";>
>             <in0>1</in0>
>         </getForumMessage>
>     </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> I made this request using Oxygen xml client, however I get the same problem 
> if I use xfire as the client.
> If I manually change the request to this it works:
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:jive="https://jivesoftware.com/webservices"; >
>     <SOAP-ENV:Header/>
>     <SOAP-ENV:Body>
>         <jive:getForumMessage>
>             <jive:in0>1</jive:in0>
>         </jive:getForumMessage>
>     </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to