Thanks alot Günther for sticking with me on this, much appreciated.
Well it seems I can either use jibx with axis2 web services or
Marshall outside of it - not both yet. Please see my comments inline:

On Nov 18, 2007 3:50 PM, Günther Wieser <[EMAIL PROTECTED]> wrote:
> 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">
> ....
>

Seemingly you can either have type-name OR name but not both. I tried
pretty hard via my custom.xml that I pass to jibx2wsdl to not make the
mapping abstract, including map-abstract=false.  No luck though.

> 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
>

BindingDirectory.getFactory is pretty confusing to me in that
"binding" is the name attribute of the binding element and not a
filename, just "binding" has other references in the classloader
somewhere, I seemingly can't customize the generated binding name, and
there's no public method to find a list from BindingDirectory what
names are lurking in its list and where they came from. Probably good
reasons for all that, I'm just a newbie.

Anyways, I tried the above code without it being abstract, and while
it works, I need something that can both work with axis2 and outside
of it - the latter I mean by uploading an xml file from the file
system or browser and marshalling it with a type-name and being
abstract. I'm looking at the axis2 code gen for my original binding to
see if I can tweak it to work without a soap message.

Any ideas on how to get marshalling to work with type-name and not
just name? I'm going thru axis2 codegen / jibx source and unit tests
to see I can solve this.

Thanks!
Robert


> 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
>

-------------------------------------------------------------------------
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