Marshalling a "Wrapper" Object?

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

Marshalling a "Wrapper" Object?

by Dees, Ian (GE Healthcare) :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi list,
 
I'm trying to marshall a "wrapper" object that adds two attributes to
one of our previously-bound classes.

For example, we have a class "A":

class A {
  private Foo foo;
  private Bar bar;
}

that looks something like this when marshalled:

<a>
  <foo V="123">
    <fooBar/>
  </foo>
  <bar V="456"/>
</a>

My wrapper class "AWrapper":

class AWrapper {
  private A wrappedA;
  private String status;
}

adds status information, and I'd like it to look like this:

<a status="status string">
  <foo V="123">
    <fooBar/>
  </foo>
  <bar V="456"/>
</a>

I have successfully written the binding for class "A", but because
"AWrapper" doesn't extend A, I don't think JiBX will let me do what I
want, right?

Thanks,
Ian

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
jibx-users mailing list
jibx-users@...
https://lists.sourceforge.net/lists/listinfo/jibx-users

Re: Marshalling a "Wrapper" Object?

by DSosnoski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Ian,

You can do part of what you want by splitting the binding for A into an
abstract mapping (which basically has the content definition you've
already got in place) and a separate concrete mapping with the element
name "a" (which just invokes the abstract mapping). That way your
AWrapper mapping can directly invoke the abstract mapping for the A value.

The problem is that you'd then have two concrete mappings for the name
"a", which doesn't work (assuming you're doing both input and output -
it'd work for an output-only binding) - JiBX needs to know which type of
object to create when it sees the "a" element. Can you instead use
different names for the two variations?

Other than that, if you're using these classes (and the associated XML
format) in different contexts you could define a <structure> for each in
context, rather than a <mapping>.

Finally, if it's worth the effort to you you should be able to write
custom marshaller/unmarshaller code which could handle this. The custom
code would handle the added attributes of the AWrapper directly, then
invoke an abstract mapping for the A class.

Hope some of that gives you an idea how to proceed.

  - Dennis

Dennis M. Sosnoski
SOA and Web Services in Java
Training and Consulting
http://www.sosnoski.com - http://www.sosnoski.co.nz
Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117



Dees, Ian (GE Healthcare) wrote:

> Hi list,
>  
> I'm trying to marshall a "wrapper" object that adds two attributes to
> one of our previously-bound classes.
>
> For example, we have a class "A":
>
> class A {
>   private Foo foo;
>   private Bar bar;
> }
>
> that looks something like this when marshalled:
>
> <a>
>   <foo V="123">
>     <fooBar/>
>   </foo>
>   <bar V="456"/>
> </a>
>
> My wrapper class "AWrapper":
>
> class AWrapper {
>   private A wrappedA;
>   private String status;
> }
>
> adds status information, and I'd like it to look like this:
>
> <a status="status string">
>   <foo V="123">
>     <fooBar/>
>   </foo>
>   <bar V="456"/>
> </a>
>
> I have successfully written the binding for class "A", but because
> "AWrapper" doesn't extend A, I don't think JiBX will let me do what I
> want, right?
>
> Thanks,
> Ian
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> jibx-users mailing list
> jibx-users@...
> https://lists.sourceforge.net/lists/listinfo/jibx-users
>
>  

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
jibx-users mailing list
jibx-users@...
https://lists.sourceforge.net/lists/listinfo/jibx-users
LightInTheBox - Buy quality products at wholesale price!