[ http://jira.codehaus.org/browse/XFIRE-828?page=all ]
Dan Diephouse updated XFIRE-828: -------------------------------- Fix Version/s: 1.2.5 Thanks for filing this! Scheduling for 1.2.5. > JDOM Stream writer does not properly handle namespace on attributes of element > ------------------------------------------------------------------------------ > > Key: XFIRE-828 > URL: http://jira.codehaus.org/browse/XFIRE-828 > Project: XFire > Issue Type: Bug > Components: JAXB 2.0 > Affects Versions: 1.2.2 > Environment: Linux, Eclipse 3.2, xfire 1.2.2 > Reporter: Yogesh Chawla > Assigned To: Dan Diephouse > Fix For: 1.2.5 > > > I autogenerated an xfire client using the Eclipse plugin. When I go to > invoke my webservice, I get the following error: > Caused by: org.jdom.IllegalNameException: The name "" is not legal for > JDOM/XML attribute namespaces: An attribute namespace without a prefix can > only be the NO_NAMESPACE namespace. > at org.jdom.Attribute.setNamespace(Attribute.java:456) > at org.jdom.Attribute.<init>(Attribute.java:206) > at > org.codehaus.xfire.util.stax.JDOMStreamWriter.writeAttribute(JDOMStreamWriter.java:124) > The app crashes because the 'namespace' attribute is "". There are two > methods for 'writeAttribute'. One that accepts a prefix and one that does > not: > public void writeAttribute(String prefix, String namespace, String local, > String value) > throws XMLStreamException > { > currentNode.setAttribute(new Attribute(local, value, > Namespace.getNamespace(prefix, namespace))); > } > public void writeAttribute(String namespace, String local, String value) > throws XMLStreamException > { > currentNode.setAttribute(new Attribute(local, value, > Namespace.getNamespace(namespace))); > } > Perhaps the XMLStreamWriterOutput.attribute is calling the wrong method. The > two attributes where the failure occurs > should use the default namespace for the element but do not. > To test this, one can generated code from this WSDL: > https://wijis.wisconsin.gov/wsdl/PointerCountService.wsdl > The client can then instantiate a Message Tracking Info object and call the > service like so: > public static final void main(String args[]) > { > PointerCountServiceClient myClient = new PointerCountServiceClient(); > > PointerManagementInvocationType pointerCount = new > PointerManagementInvocationType(); > > pointerCount.setSubmitterURI("http://wijis.wisconsin.gov/names/operators"); > > WijisMessageTrackingInfoType messageTrackingInfo = new > WijisMessageTrackingInfoType(); > BigInteger convSequence = BigInteger.ZERO; > BigInteger reqInvocationNumber = BigInteger.valueOf(10000); > BigInteger serviceInvocationNumber = BigInteger.valueOf(1); > > messageTrackingInfo.setAdHocUserURI("http://[EMAIL > PROTECTED]/names/directories/"); > > > messageTrackingInfo.setBranchStack("0"); > messageTrackingInfo.setConvSeq(convSequence); > > System.out.println(messageTrackingInfo.getBranchStack()); > > > messageTrackingInfo.setCurrentSendingOperatorURI("http://wijis.wisconsin.gov/names/operators/"); > > messageTrackingInfo.setCurrentServiceDefURI("http://wijis.wisconsin.gov/gateway/services/Pointer/request/countMyPointers/"); > messageTrackingInfo.setCurrentServiceLabel("dont know"); > > messageTrackingInfo.setCurrentServiceProviderURI("http://wijis.wisconsin.gov/names/operators/"); > messageTrackingInfo.setInitialUserURI("http://[EMAIL > PROTECTED]/names/directories/"); > messageTrackingInfo.setRequesterInvocationNum(reqInvocationNumber); > messageTrackingInfo.setServiceInvocationNum(serviceInvocationNumber); > messageTrackingInfo.setServiceLabel("dont know"); > > messageTrackingInfo.setServiceDefURI("http://wijis.wisconsin.gov/gateway/services/Pointer/request/countMyPointers/"); > > messageTrackingInfo.setServiceProviderURI("http://wijis.wisconsin.gov/names/operators/"); > > messageTrackingInfo.setServiceRequesterURI("http://wijis.wisconsin.gov/names/operators/"); > > Holder<WijisMessageTrackingInfoType> messageTrackingInfo2 = new > Holder(); > > try { > PointerCountResponseType response = > myClient.getPointerCountServiceSOAP("http://localhost:8080/xfire/PointerCount").pointerCount(pointerCount, > messageTrackingInfo, messageTrackingInfo2); > System.out.println(response.getRecordCount()); > } catch (PointerCountError e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > After this the error will occur on the attributes: convSeq and branchStack. > Both of these attributes use the default namespace of the element > messageTrackingInfo. The default namespace is: > http://wijis.wisconsin.gov/specs/schemas/message/v1.0/2006-05-25/ -- 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