|
View:
New views
11 Messages
—
Rating Filter:
Alert me
|
|
|
Castor CDR file issue with unmarshallingI am trying to unmarshal this:
<FindFileRequestMessage> <fileID>12</fileID> </FindFileRequestMessage> The CDR file has this mapping: com.lmco.dogpatch.messaging.messages.FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor When I unmarshal I get "FindFileRequestMessage" not found. But, if I change the CDR mapping to this: FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor Then it unmarshalls perfectly (removed package name on the left). But, I have to hack the CDR file to do this. Is there a way to get the SourceGenerator to do this for me? Or am I doing it wrong? Thanks, Mike |
|
|
Re: Castor CDR file issue with unmarshallingHi,
you should not have to alter the .castor.cdr files at all after source generation. A few general questions: - What version of Castor are you using ? - What does the XML schema fragment look like for these XML artefacts ? Regards Werner enterpriseseven wrote: > I am trying to unmarshal this: > > <FindFileRequestMessage> > <fileID>12</fileID> > </FindFileRequestMessage> > > The CDR file has this mapping: > > com.lmco.dogpatch.messaging.messages.FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor > > When I unmarshal I get "FindFileRequestMessage" not found. But, if I change > the CDR mapping to this: > > FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor > > Then it unmarshalls perfectly (removed package name on the left). But, I > have to hack the CDR file to do this. Is there a way to get the > SourceGenerator to do this for me? Or am I doing it wrong? > > Thanks, > Mike --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email |
|
|
Re: Castor CDR file issue with unmarshallingHi,
you should not have to alter the .castor.cdr files at all after source generation. A few general questions: - What version of Castor are you using ? - What does the XML schema fragment look like for these XML artefacts ? Regards Werner enterpriseseven wrote: > I am trying to unmarshal this: > > <FindFileRequestMessage> > <fileID>12</fileID> > </FindFileRequestMessage> > > The CDR file has this mapping: > > com.lmco.dogpatch.messaging.messages.FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor > > When I unmarshal I get "FindFileRequestMessage" not found. But, if I change > the CDR mapping to this: > > FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor > > Then it unmarshalls perfectly (removed package name on the left). But, I > have to hack the CDR file to do this. Is there a way to get the > SourceGenerator to do this for me? Or am I doing it wrong? > > Thanks, > Mike --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email |
|
|
Re: Castor CDR file issue with unmarshallingHey,
- I am using Castor 1.3 - Schema is as follows: <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="FindFileRequestMessage"> <xsd:complexType> <xsd:sequence> <xsd:element name="fileID" type="xsd:long"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Thanks, Mike
|
|
|
Re: Castor CDR file issue with unmarshallingThat should work our of the box. What does your code look like that you
use to actually unmarshal your XML document instance ? Regards Werner enterpriseseven wrote: > Hey, > - I am using Castor 1.3 > - Schema is as follows: > > <?xml version="1.0" encoding="UTF-8"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <xsd:element name="FindFileRequestMessage"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="fileID" type="xsd:long"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > </xsd:schema> > > Thanks, > Mike > > > > Werner Guttmann wrote: >> Hi, >> >> you should not have to alter the .castor.cdr files at all after source >> generation. >> >> A few general questions: >> >> - What version of Castor are you using ? >> - What does the XML schema fragment look like for these XML artefacts ? >> >> Regards >> Werner >> >> enterpriseseven wrote: >>> I am trying to unmarshal this: >>> >>> <FindFileRequestMessage> >>> <fileID>12</fileID> >>> </FindFileRequestMessage> >>> >>> The CDR file has this mapping: >>> >>> com.lmco.dogpatch.messaging.messages.FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor >>> >>> When I unmarshal I get "FindFileRequestMessage" not found. But, if I >>> change >>> the CDR mapping to this: >>> >>> FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor >>> >>> Then it unmarshalls perfectly (removed package name on the left). But, I >>> have to hack the CDR file to do this. Is there a way to get the >>> SourceGenerator to do this for me? Or am I doing it wrong? >>> >>> Thanks, >>> Mike >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> >> >> >> > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email |
|
|
Re: Castor CDR file issue with unmarshallingI have a test app that creates an instace of the message, marshalls it and then unmarshalls it. That works fine. The Marshalling process seems to add something to the environment...maybe a class loader...that allows unmarshalling to work. However, the live code I use to unmarshall messages received via OpenMQ only does an unmarshall step. I have tested my test app without the marshalling process and the unmarshalling fails. The following is my unmarshal code in my live code:
public Serializable unmarshall(String xmlString) { StringReader reader = new StringReader(xmlString); Object unmarshalledObject = null; try { unmarshalledObject = unmarshaller.unmarshal(reader); } catch (MarshalException ex) { ex.printStackTrace(); } catch (ValidationException ex) { ex.printStackTrace(); } if(unmarshalledObject instanceof Serializable) { return (Serializable)unmarshalledObject; } else { return null; } } The "xmlString" variable is retrieved from the payload (text field) of a TextMessage that was sent via OpenMQ. The unmarshall function above lives in a "JMessenger" class that I have written and the initialization code is as follows: xmlCtx = new XMLContext(); try { xmlCtx.addPackage(MESSAGES_NAMESPACE); } catch (ResolverException ex) { System.out.println(ex); } marshaller = xmlCtx.createMarshaller(); marshaller.setSuppressNamespaces(true); unmarshaller = xmlCtx.createUnmarshaller(); xmlCtx is a org.exolab.castor.xml.XMLContext MESSAGES_NAMESPACE = "com.lmco.dogpatch.messaging.messages" Thanks, Mike
|
|
|
Re: Castor CDR file issue with unmarshallingHi,
why are you calling XMLContext.addPackage() at all. Castor XML is perfectly capable to use classes as generated with the XML source generator (from your XML schema) as long as .... a) those classes (POJOs as well as descriptor classes) are available on the classpath. b) the .castor.cdr files are available as well. Can you please try this again, making sure that conditions a) and b) are met. Regards Werner enterpriseseven wrote: > I have a test app that creates an instace of the message, marshalls it and > then unmarshalls it. That works fine. The Marshalling process seems to add > something to the environment...maybe a class loader...that allows > unmarshalling to work. However, the live code I use to unmarshall messages > received via OpenMQ only does an unmarshall step. I have tested my test app > without the marshalling process and the unmarshalling fails. The following > is my unmarshal code in my live code: > > public Serializable unmarshall(String xmlString) > { > StringReader reader = new StringReader(xmlString); > Object unmarshalledObject = null; > try { > unmarshalledObject = unmarshaller.unmarshal(reader); > } catch (MarshalException ex) { > ex.printStackTrace(); > } catch (ValidationException ex) { > ex.printStackTrace(); > } > if(unmarshalledObject instanceof Serializable) > { > return (Serializable)unmarshalledObject; > } > else > { > return null; > } > } > > The "xmlString" variable is retrieved from the payload (text field) of a > TextMessage that was sent via OpenMQ. The unmarshall function above lives > in a "JMessenger" class that I have written and the initialization code is > as follows: > > xmlCtx = new XMLContext(); > try { > xmlCtx.addPackage(MESSAGES_NAMESPACE); > > } catch (ResolverException ex) { > System.out.println(ex); > } > marshaller = xmlCtx.createMarshaller(); > marshaller.setSuppressNamespaces(true); > unmarshaller = xmlCtx.createUnmarshaller(); > > xmlCtx is a org.exolab.castor.xml.XMLContext > MESSAGES_NAMESPACE = "com.lmco.dogpatch.messaging.messages" > > Thanks, > Mike > > > > Werner Guttmann-6 wrote: >> That should work our of the box. What does your code look like that you >> use to actually unmarshal your XML document instance ? >> >> Regards >> Werner >> >> enterpriseseven wrote: >>> Hey, >>> - I am using Castor 1.3 >>> - Schema is as follows: >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> >>> <xsd:element name="FindFileRequestMessage"> >>> <xsd:complexType> >>> <xsd:sequence> >>> <xsd:element name="fileID" type="xsd:long"/> >>> </xsd:sequence> >>> </xsd:complexType> >>> </xsd:element> >>> </xsd:schema> >>> >>> Thanks, >>> Mike >>> >>> >>> >>> Werner Guttmann wrote: >>>> Hi, >>>> >>>> you should not have to alter the .castor.cdr files at all after source >>>> generation. >>>> >>>> A few general questions: >>>> >>>> - What version of Castor are you using ? >>>> - What does the XML schema fragment look like for these XML artefacts ? >>>> >>>> Regards >>>> Werner >>>> >>>> enterpriseseven wrote: >>>>> I am trying to unmarshal this: >>>>> >>>>> <FindFileRequestMessage> >>>>> <fileID>12</fileID> >>>>> </FindFileRequestMessage> >>>>> >>>>> The CDR file has this mapping: >>>>> >>>>> com.lmco.dogpatch.messaging.messages.FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor >>>>> >>>>> When I unmarshal I get "FindFileRequestMessage" not found. But, if I >>>>> change >>>>> the CDR mapping to this: >>>>> >>>>> FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor >>>>> >>>>> Then it unmarshalls perfectly (removed package name on the left). But, >>>>> I >>>>> have to hack the CDR file to do this. Is there a way to get the >>>>> SourceGenerator to do this for me? Or am I doing it wrong? >>>>> >>>>> Thanks, >>>>> Mike >>>> --------------------------------------------------------------------- >>>> To unsubscribe from this list, please visit: >>>> >>>> http://xircles.codehaus.org/manage_email >>>> >>>> >>>> >>>> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> >> >> >> > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email |
|
|
Re: Castor CDR file issue with unmarshallingI only added the call to "addPackage()" because I was hoping it would resolve my issue...which it didn't. Conditions a) and b) should be being met as it works if I marshal first and then unmarshal. It just doesn't work if I only do an unmarshal. For instance...
If I do Class.forName("FindFileRequestMessage") it fails, but if I do Class.forName("com.lmco.dogpatch.messaging.messages.FileFileRequestMessage") it works just fine. If this is a classpath issue I'm not sure how to resolve it. Thanks, Mike
|
|
|
Re: Castor CDR file issue with unmarshallingHmm,
Let me see if I can provide a little more information to help you determine if I'm just having a classpath issue. I have a Messaging.jar file which includes all of the messages (ex. FindFileRequestMessage) and JMessenger (which has the unmarshal function). This JAR file is included in the EAR that I deploy to my Application Server (glassfish). The MDBs in the EAR that are using JMessenger to unmarshal messages are getting exceptions stating that Castor is unable to find the messages. How can this be a classpath issue if the JAR file with the messages is contained within the EAR? Thanks, Mike
|
|
|
Re: Castor CDR file issue with unmarshallingHi,
once again, does the Messaging.jar include the .castor.cdr files as well ? Cheers Werner enterpriseseven wrote: > Hmm, > > Let me see if I can provide a little more information to help you determine > if I'm just having a classpath issue. I have a Messaging.jar file which > includes all of the messages (ex. FindFileRequestMessage) and JMessenger > (which has the unmarshal function). This JAR file is included in the EAR > that I deploy to my Application Server (glassfish). The MDBs in the EAR > that are using JMessenger to unmarshal messages are getting exceptions > stating that Castor is unable to find the messages. How can this be a > classpath issue if the JAR file with the messages is contained within the > EAR? > > Thanks, > Mike > > > > enterpriseseven wrote: >> I only added the call to "addPackage()" because I was hoping it would >> resolve my issue...which it didn't. Conditions a) and b) should be being >> met as it works if I marshal first and then unmarshal. It just doesn't >> work if I only do an unmarshal. For instance... >> >> If I do >> >> Class.forName("FindFileRequestMessage") >> >> it fails, but if I do >> >> Class.forName("com.lmco.dogpatch.messaging.messages.FileFileRequestMessage") >> >> it works just fine. If this is a classpath issue I'm not sure how to >> resolve it. >> >> Thanks, >> Mike >> >> >> >> Werner Guttmann-6 wrote: >>> Hi, >>> >>> why are you calling XMLContext.addPackage() at all. Castor XML is >>> perfectly capable to use classes as generated with the XML source >>> generator (from your XML schema) as long as .... >>> >>> a) those classes (POJOs as well as descriptor classes) are available on >>> the classpath. >>> b) the .castor.cdr files are available as well. >>> >>> Can you please try this again, making sure that conditions a) and b) are >>> met. >>> >>> Regards >>> Werner >>> >>> enterpriseseven wrote: >>>> I have a test app that creates an instace of the message, marshalls it >>>> and >>>> then unmarshalls it. That works fine. The Marshalling process seems to >>>> add >>>> something to the environment...maybe a class loader...that allows >>>> unmarshalling to work. However, the live code I use to unmarshall >>>> messages >>>> received via OpenMQ only does an unmarshall step. I have tested my test >>>> app >>>> without the marshalling process and the unmarshalling fails. The >>>> following >>>> is my unmarshal code in my live code: >>>> >>>> public Serializable unmarshall(String xmlString) >>>> { >>>> StringReader reader = new StringReader(xmlString); >>>> Object unmarshalledObject = null; >>>> try { >>>> unmarshalledObject = unmarshaller.unmarshal(reader); >>>> } catch (MarshalException ex) { >>>> ex.printStackTrace(); >>>> } catch (ValidationException ex) { >>>> ex.printStackTrace(); >>>> } >>>> if(unmarshalledObject instanceof Serializable) >>>> { >>>> return (Serializable)unmarshalledObject; >>>> } >>>> else >>>> { >>>> return null; >>>> } >>>> } >>>> >>>> The "xmlString" variable is retrieved from the payload (text field) of a >>>> TextMessage that was sent via OpenMQ. The unmarshall function above >>>> lives >>>> in a "JMessenger" class that I have written and the initialization code >>>> is >>>> as follows: >>>> >>>> xmlCtx = new XMLContext(); >>>> try { >>>> xmlCtx.addPackage(MESSAGES_NAMESPACE); >>>> >>>> } catch (ResolverException ex) { >>>> System.out.println(ex); >>>> } >>>> marshaller = xmlCtx.createMarshaller(); >>>> marshaller.setSuppressNamespaces(true); >>>> unmarshaller = xmlCtx.createUnmarshaller(); >>>> >>>> xmlCtx is a org.exolab.castor.xml.XMLContext >>>> MESSAGES_NAMESPACE = "com.lmco.dogpatch.messaging.messages" >>>> >>>> Thanks, >>>> Mike >>>> >>>> >>>> >>>> Werner Guttmann-6 wrote: >>>>> That should work our of the box. What does your code look like that you >>>>> use to actually unmarshal your XML document instance ? >>>>> >>>>> Regards >>>>> Werner >>>>> >>>>> enterpriseseven wrote: >>>>>> Hey, >>>>>> - I am using Castor 1.3 >>>>>> - Schema is as follows: >>>>>> >>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> >>>>>> <xsd:element name="FindFileRequestMessage"> >>>>>> <xsd:complexType> >>>>>> <xsd:sequence> >>>>>> <xsd:element name="fileID" type="xsd:long"/> >>>>>> </xsd:sequence> >>>>>> </xsd:complexType> >>>>>> </xsd:element> >>>>>> </xsd:schema> >>>>>> >>>>>> Thanks, >>>>>> Mike >>>>>> >>>>>> >>>>>> >>>>>> Werner Guttmann wrote: >>>>>>> Hi, >>>>>>> >>>>>>> you should not have to alter the .castor.cdr files at all after >>>>>>> source >>>>>>> generation. >>>>>>> >>>>>>> A few general questions: >>>>>>> >>>>>>> - What version of Castor are you using ? >>>>>>> - What does the XML schema fragment look like for these XML artefacts >>>>>>> ? >>>>>>> >>>>>>> Regards >>>>>>> Werner >>>>>>> >>>>>>> enterpriseseven wrote: >>>>>>>> I am trying to unmarshal this: >>>>>>>> >>>>>>>> <FindFileRequestMessage> >>>>>>>> <fileID>12</fileID> >>>>>>>> </FindFileRequestMessage> >>>>>>>> >>>>>>>> The CDR file has this mapping: >>>>>>>> >>>>>>>> com.lmco.dogpatch.messaging.messages.FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor >>>>>>>> >>>>>>>> When I unmarshal I get "FindFileRequestMessage" not found. But, if >>>>>>>> I >>>>>>>> change >>>>>>>> the CDR mapping to this: >>>>>>>> >>>>>>>> FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor >>>>>>>> >>>>>>>> Then it unmarshalls perfectly (removed package name on the left). >>>>>>>> But, >>>>>>>> I >>>>>>>> have to hack the CDR file to do this. Is there a way to get the >>>>>>>> SourceGenerator to do this for me? Or am I doing it wrong? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Mike >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe from this list, please visit: >>>>>>> >>>>>>> http://xircles.codehaus.org/manage_email >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe from this list, please visit: >>>>> >>>>> http://xircles.codehaus.org/manage_email >>>>> >>>>> >>>>> >>>>> >>> --------------------------------------------------------------------- >>> To unsubscribe from this list, please visit: >>> >>> http://xircles.codehaus.org/manage_email >>> >>> >>> >>> >> > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email |
|
|
Re: Castor CDR file issue with unmarshallingYeah, otherwise it doesn't work at all.
|
| Free embeddable forum powered by Nabble | Forum Help |