hi robert,

i've never used jibx2wsdl before, but what this tool does in terms of  
jibx will be "normal" marshalling and unmarshalling, i guess.

when i look at your binding a see that the mapping for  
ExchangePermissionBO is abstract, which means it can NEVER be the root  
element in your xml. furthermore, as it is abstract, it doesn't hold  
any information what the resulting tag will be named.

from my point of view, the <mapping> entry must look like this:

<mapping name="ENTER_THE_TAG_NAME_HERE" abstract="true" type- 
name="tns:exchangePermissionBO"
   class="com.wazollc.alphatheory.hibernate.bo.ExchangePermissionBO">
....

then the code to create XML from this object would be:
IBindingFactory bfact = BindingDirectory.getFactory("binding",  
ExchangePermissionBO.class);
IMarshallingContext mctx = bfact.createMarshallingContext();
mctx.marshalDocument(bo, "UTF-8", null, new  
FileOutputStream("filename.xml"));

br,
günther

Am 16.11.2007 um 11:36 schrieb robert lazarski:

> I'm confused to Günther, please bear with me. Well lets focus on
> marshalling right now. I'm starting from code, ie, jib2wsdl . I have a
> binding file it generates. My classes exist before I call any jibx
> tools. I've read all the docs about 10 times - but I'm a newbie so
> please bear with me. jibx has a binding file which is particular to
> jibx, and does marshalling without a schema. This is unlike xmlbeans /
> adb / jaxb etc - what I know well.
>
> Say I have this binding file:
>
> <binding xmlns:tns="http://wazollc.com/alphatheory/hibernate/bo";
> name="binding" package="com.wazollc.alphatheory.hibernate.bo"
> force-classes="true">
>  <namespace uri="http://wazollc.com/alphatheory/hibernate/bo";
> default="elements" prefix="ns1"/>
>  <namespace 
> uri="http://wazollc.com/alphatheory/webservices/ATWSServer/ATWSServer 
> "
> prefix="ns2"/>
>  <mapping abstract="true" type-name="tns:exchangePermissionBO"
> class="com.wazollc.alphatheory.hibernate.bo.ExchangePermissionBO">
>    <value style="attribute" name="id" get-method="getId"
> set-method="setId" usage="optional"/>
>    <value style="attribute" name="version" get-method="getVersion"
> set-method="setVersion" usage="optional"/>    <value style="element"
> name="name" get-method="getName" set-method="setName"
> usage="optional"/>
>    <value style="element" name="code" get-method="getCode"
> set-method="setCode" usage="optional"/>
>  </mapping>
> </binding>
>
> And lets say I retrieved
> com.wazollc.alphatheory.hibernate.bo.ExchangePermissionBO from a
> hibernate query. I now want to marshall this ExchangePermissionBO into
> xml. My best guess on how to do this is:
>
> com.wazollc.alphatheory.hibernate.bo.ExchangePermissionBO bo =
> getFromHibernate();
>
> IBindingFactory ibf =
> org.jibx.runtime.BindingDirectory.getFactory("binding",
> "com.wazollc.alphatheory.hibernate.bo",
> EntityMarshaller.class.getClassLoader());
> org.jibx.runtime.IMarshallable mctx =  
> (org.jibx.runtime.IMarshallable)bo;
> org.apache.axiom.om.OMDataSource result = new
> org.apache.axis2.jibx.JiBXDataSource(mctx, ibf);
> StringWriter writer = new StringWriter();
> result 
> .serialize 
> (XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
> writer.flush();
> System.out.println("Response: " + writer.toString());
>
> Yet 'ExchangePermissionBO bo' doesn't implement IMarshallable. You say
> it doesn't need to. ok, so I'm approaching this wrong. What's the
> right way - or any way - to do this?
>
> Please help,
> Robert
>
> On Nov 16, 2007 11:16 PM, Günther Wieser <[EMAIL PROTECTED]>  
> wrote:
>> hi robert,
>>
>> i'm confused about the things you write in your emails. i need to ask
>> you if you've read the documentation carefully on the jibx homepage?
>> there is NO NEED for extending a jibx class or implementing an
>> interface of jibx. jibx is straight forward, but the problem might be
>> that you try to marshal/unmarshal only parts of an XML that you have
>> defined in your mappings.
>>
>> jibx takes an xml document, and the root element of this xml needs to
>> be defined as the root in your jibx binding. you cannot unmarshal an
>> XML that only holds a substructure of this root binding that you
>> defined.
>>
>> e.g.
>> <client>
>>        <name>Blablabla</name>
>>        <account>
>>                <id>1231234</id>
>>        <account>
>> <client>
>>
>> if you define a mapping for this xml stucture, client will be the  
>> root
>> element in your xml and your binding. you can unmarshal this XML
>> easily as long as your binding is ok. but you cannot unmarshal the
>> following document:
>> <account>
>>        <id>345345</id>
>> </account>
>> as this is NOT a defined root element in your mapping!
>>
>> br,
>> günther
>>
>> Am 16.11.2007 um 03:10 schrieb robert lazarski:
>>
>>
>>> Still struggling here, any help would be highly appreciated. My  
>>> areas
>>> of confusion are:
>>>
>>> 1) I've used 'code first' with hibernate objects and Jibx2Wsdl to
>>> create my schema and wsdl. I think I need to have JiBX use get/set
>>> methods rather than directly access fields with working with
>>> Hibernate, so I have referenced in a file that I pass to Jibx2Wsdl:
>>>
>>> <custom force-classes="true" strip-prefixes="m_" property-
>>> access="true">
>>> </custom>
>>>
>>>> From an axis2 standpoint, this all works fine on my first simple
>>>> service.
>>>
>>> 2) Now I need to marshall / unmarshall xml files to and from my
>>> hibernate entities, outside of axis2 - basically importing and
>>> exporting entire xml based data graphs into and out of a db  
>>> controled
>>> by hibernate. I need to validate these operations, so I'm using jaxp
>>> against the xml schema that jibx2wsdl created.
>>>
>>> Step 2 is where I'm stuck:
>>>
>>> 2a) jibx marshalling / unmarshalling doesn't appear to be xml schema
>>> based, but rather jibx binding based.
>>>
>>> 2b) jibx marshalling / unmarshalling of an object seems to require
>>> that the object extends MarshallingContext and  
>>> UnmarshallingContext or
>>> implement its interface. This would tightly couple my hibernate
>>> objects to jibx and perhaps needs some custom coding(not just
>>> automatic), but I'd do it it if solved my problem. I tried:
>>>
>>> public class ExchangePermissionBO  extends MarshallingContext
>>> implements java.io.Serializable {
>>> ...
>>> }
>>>
>>> But I get:
>>>
>>> [echo] Running Jibx2Wsdl tool
>>>   [java] Exception in thread "main" java.lang.IllegalStateException:
>>> No way to handle type 'java.lang.Object'
>>>   [java]     at
>>> org
>>> .jibx
>>> .binding
>>> .generator.BindingGenerator.expandReferences(BindingGenerator.java:
>>> 191)
>>>   [java]     at
>>> org
>>> .jibx
>>> .binding
>>> .generator.BindingGenerator.expandReferences(BindingGenerator.java:
>>> 207)
>>>   [java]     at
>>> org
>>> .jibx
>>> .binding
>>> .generator.BindingGenerator.findReferences(BindingGenerator.java: 
>>> 983)
>>>   [java]     at
>>> org
>>> .jibx
>>> .binding
>>> .generator.BindingGenerator.generateSpecified(BindingGenerator.java:
>>> 1123)
>>>   [java]     at org.jibx.ws.wsdl.Jibx2Wsdl.generate(Jibx2Wsdl.java:
>>> 484)
>>>   [java]     at org.jibx.ws.wsdl.Jibx2Wsdl.main(Jibx2Wsdl.java:588)
>>>
>>> I get the feeling I'm aproaching the xml import / export requirement
>>> the wrong way. Please help,
>>> Robert
>>>
>>> On Nov 14, 2007 12:45 PM, robert lazarski <[EMAIL PROTECTED]>
>>> wrote:
>>>> Ahh, just noticed - my mapping is abstract! I'm still confused  
>>>> about
>>>> if my entity needs to be cast to IMarshallable, and what I need to
>>>> do.
>>>> Thanks!
>>>>
>>>> Robert
>>>>
>>>>
>>>> On Nov 14, 2007 12:40 PM, robert lazarski
>>>> <[EMAIL PROTECTED]> wrote:
>>>>> Thanks for the reply Günther Wieser,
>>>>>
>>>>> These additional binding classes, when you say runtime, do I need
>>>>> these in the classloader when marshalling? Or are they just for  
>>>>> the
>>>>> code gen stage of jibx?
>>>>>
>>>>> What's strange to me is that in my jibx based axis2 code it
>>>>> handles my
>>>>> objects just fine. In my working axis2 code, the code gen casts to
>>>>> IMarshallable. What I may need to do is this:
>>>>>
>>>>> IBindingFactory ibf =
>>>>> org.jibx.runtime.BindingDirectory.getFactory("binding",
>>>>> "com.wazollc.alphatheory.hibernate.bo",
>>>>> EntityMarshaller.class.getClassLoader());
>>>>> org.jibx.runtime.IMarshallable mctx =
>>>>> (org.jibx.runtime.IMarshallable)bo;
>>>>>
>>>>> But my hibernate objects would then be tied to jibx. Is that  
>>>>> what I
>>>>> have to do? Here's my simple mapping - AFAICT I'm doing things as
>>>>> you
>>>>> say I need to - do you see something wrong? Thanks for the help!!!
>>>>>
>>>>> <binding xmlns:tns="http://wazollc.com/alphatheory/hibernate/bo";
>>>>> name="binding" package="com.wazollc.alphatheory.hibernate.bo"
>>>>> force-classes="true">
>>>>> <namespace uri="http://wazollc.com/alphatheory/hibernate/bo";
>>>>> default="elements" prefix="ns1"/>
>>>>> <namespace 
>>>>> uri="http://wazollc.com/alphatheory/webservices/ATWSServer/ATWSServer
>>>>> "
>>>>> prefix="ns2"/>
>>>>> <mapping abstract="true" type-name="tns:exchangePermissionBO"
>>>>> class="com.wazollc.alphatheory.hibernate.bo.ExchangePermissionBO">
>>>>>   <value style="attribute" name="id" get-method="getId"
>>>>> set-method="setId" usage="optional"/>
>>>>>   <value style="attribute" name="version" get-method="getVersion"
>>>>> set-method="setVersion" usage="optional"/>    <value  
>>>>> style="element"
>>>>> name="name" get-method="getName" set-method="setName"
>>>>> usage="optional"/>
>>>>>   <value style="element" name="code" get-method="getCode"
>>>>> set-method="setCode" usage="optional"/>
>>>>> </mapping>
>>>>> </binding>
>>>>>
>>>>
>>>
>>> -------------------------------------------------------------------------
>>> This SF.net email is sponsored by: Microsoft
>>> Defy all challenges. Microsoft(R) Visual Studio 2005.
>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>> _______________________________________________
>>> jibx-users mailing list
>>> jibx-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/jibx-users
>>>
>>
>>
>>
>> --
>> Günther Wieser
>> creative-it
>> Guglgasse 6/1/11/1
>> A-1110 Wien
>> [EMAIL PROTECTED]
>> http://www.creative-it.com
>>
>>
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2005.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>
>> _______________________________________________
>> jibx-users mailing list
>> jibx-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/jibx-users
>>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> jibx-users mailing list
> jibx-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jibx-users
>



-- 
Günther Wieser
creative-it
Guglgasse 6/1/11/1
A-1110 Wien
[EMAIL PROTECTED]
http://www.creative-it.com




-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to