Castor CDR file issue with unmarshalling

View: New views
11 Messages — Rating Filter:   Alert me  

Castor CDR file issue with unmarshalling

by enterpriseseven :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

Re: Castor CDR file issue with unmarshalling

by Werner Guttmann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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



Re: Castor CDR file issue with unmarshalling

by Werner Guttmann-6 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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



Re: Castor CDR file issue with unmarshalling

by enterpriseseven :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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


Re: Castor CDR file issue with unmarshalling

by Werner Guttmann-6 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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



Re: Castor CDR file issue with unmarshalling

by enterpriseseven :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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


Re: Castor CDR file issue with unmarshalling

by Werner Guttmann-6 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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



Re: Castor CDR file issue with unmarshalling

by enterpriseseven :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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


Re: Castor CDR file issue with unmarshalling

by enterpriseseven :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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



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



Re: Castor CDR file issue with unmarshalling

by Werner Guttmann-6 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

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 unmarshalling

by enterpriseseven :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Yeah, otherwise it doesn't work at all.


Werner Guttmann-6 wrote:
Hi,

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