Changed my mapping file to this:
...
<field name="innerData" type="java.lang.Object" handler="MyHandler">
<bind-xml name="inner" node="element" />
</field>
...
and created a customer generalized handler:
---------------------------
import org.exolab.castor.mapping.GeneralizedFieldHandler;
public class MyHandler extends GeneralizedFieldHandler
{
public MyHandler() {
super();
}
public Object convertUponGet(Object value) {
if (value == null) return null;
return value.toString();
}
public Object convertUponSet(Object value) {
return value.toString();
}
public Class getFieldType() {
return String.class;
}
public Object newInstance( Object parent )
throws IllegalStateException
{
//-- Since it's marked as a string...just return null,
//-- it's not needed.
return null;
}
}
Thanks for looking at it!
On 3/29/06, Stephen Bash <[EMAIL PROTECTED]> wrote:
Matt-
I haven't used it myself, but I think what you want to look into is
Castor's AnyNode support. I don't know as there is a lot of
documentation available, but I think if you search the mail archives
for AnyNode, you might find some helpful discussions. Sorry I can't
be of more help.
Stephen
On 3/28/06, Matt Secoske <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I am trying to fit this:
>
> <root>
> <inner attribute="innerAttribute">
> <data>Inner Data 1</data>
> <data>Inner Data 2</data>
> </inner>
> <outer>Regular String Data</outer>
> <inner2>
> <misc>Misc xml to be dealt with later</misc>
> </inner2>
> </root>
>
> into this:
>
> package bizobj;
>
> public class Root {
> String innerData;
> String outerData;
> Object innerData2;
>
> public String getInnerData() {
> return innerData;
> }
> public void setInnerData(String innerData) {
> this.innerData = innerData;
> }
> public String getOuterData() {
> return outerData;
> }
> public void setOuterData(String outerData) {
> this.outerData = outerData;
> }
> public Object getInnerData2() {
> return innerData2;
> }
> public void setInnerData2(Object innerData2) {
> this.innerData2 = innerData2;
> }
> }
>
>
> ... and the mapping file I am using:
>
> <?xml version="1.0"?>
> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
>
> "http://castor.org/mapping.dtd ">
> <mapping>
>
> <class name="bizobj.Root">
> <field name="innerData" type="string" >
> <bind-xml name="inner" node="element" />
> </field>
>
> <field name="outerData" type="string">
> <bind-xml name="outer" node="element" />
> </field>
>
> <field name="innerData2" type="java.lang.Object">
> <bind-xml name="inner2" node="element" />
> </field>
> </class>
> </mapping>
>
>
> So, innerData2 (java.lang.Object) works just fine, while I cannot seem to
> get innerData (string) to work, regardless of handlers or config. Using the
> innerData2 (Object) approach will not work for various external reasons...
> Any ideas?
>
> Regards,
> --
> Matt Secoske
--
Matt Secoske
http://blog.secosoft.net

