Keith
Now I've got mapping to work, things are looking a lot better. In the
mapping file I've
defined mappings for Mzzz and I'm no longer getting duplicates or
"AsReference"
in the marshalled file.
Thanks for the pointers: you helped me a lot.
Steve
On 24 Aug 2005, at 05:58, Keith Visco wrote:
Steve,
Did you regenerate your classes + descriptors and recompile both
after making the changes to the properties file?
What does your binding file look like? The binding file takes a
higher precendence than what's in the properties file, so sometimes
a configuration setting in the binding file may be conflicting with
that in the properties file. A good example of this is when using
"type" vs "element" centric binding methods.
Are you using a byte-code modifier like cglib that could possibly
be injecting code into your classes before the marshalling takes
place? If so Castor will have trouble matching the modified class
with that specified in the binding file since the classes won't be
equal as they're loaded with two different class loaders.
If none of the above helps then I don't think I'm going to be able
to guess as to what the problem might be without looking at it
first hand. If you can send me a test case which demonstrates the
issue I'll be happy to take a look at it here.
--Keith
Stephen Winnall wrote:
I've solved the problem of the exception being thrown by
setMapping (). As the discerning
reader will have noticed, I forgot to pass a classloader (e.g.
getClass().getClassLoader())
to the Mapping constructor. 1 down, 2 to go. Maybe marketing
isn't for me after all...
Steve
On 23 Aug 2005, at 16:47, Stephen Winnall wrote:
Keith
Thanks for the feedback.
It sounds like the generated classes have the JDO friendly
getters which return an actual reference to the internal
collections instead of a copy. Which would explain why
"AsReference" appears in the getter names of the generated
sources.
I switched off the JDO-friendly getters with
org.exolab.castor.builder.extraCollectionMethods=false
and still get the "AsReference" suffix on the marshalled
elements. There are NO
getters generated with this suffix, even with the above set to
"true".
Though I'm not sure why the "AsReference" methods would be
showing up in the XML, it sounds like Castor was not able to
find the proper ***Descriptor.class. Make sure you compiled all
the descriptor classes, also you may need to define a mapping
file for your MyOwnStuff class which simply declares that it
extends the Mzzz class so that Castor doesn't try to re-
introspect the class.
I'm pretty sure that all the descriptor files have been
compiled. They're in a folder
together with the other SourceGen generated files which I wipe
out en bloc before
generating new sets of files. Eclipse compiles them
automatically. Of course,
MyOwnStuff doesn't have a descriptor file...
I have tried to set up a mapping file. However, I get the
following error from
setMapping:
org.exolab.castor.mapping.MappingException: Nested error:
org.exolab.castor.mapping.MappingException: Could not find the
class a.b.c.d.MyOwnStuff
My mapping file contains entries like the following:
<class name="a.b.c.d.MyOwnStuff"
extends="a.b.c.d.xml.Mzzz"> </class>
<class name="a.b.c.d.xml.Mzzz"> </class>
I have a sneaking suspicion that this may be because MyOwnStuff
is in a different folder
from the SourceGen generated files (a.b.c.d.xml.*), but I'm not
sure.
I use the following code in class a.b.c.d.WriteModel to set up
the mapping:
Mapping mapping = new Mapping();
mapping.loadMapping(getClass().getResource("model-
mapping.xml"));
...
marshaller.setMapping(mapping);
where "model-mapping.xml" is also in a.b.c.d.
If you are using 0.9.7 you can put this mapping in a
".castor.xml" file so that castor will automatically load the
mapping without needing to specify it.
I am indeed using 0.9.7. I didn't know about ".castor.xml", so I
looked in the source to try
to work out how to use it. I could only find the following
declaration in SourceGenerator.java:
private static final String MAPPING_FILE = ".castor.xml";
but it doesn't seem to be referenced anywhere, so I'm none the
wiser.
This whole thing is something of a show-stopper for me, so I'd
be greatful for any
assitance anyone could offer. In the meantime I'm contemplating
whether to retrain
for a career in marketing.
Cheers
Steve
Stephen Winnall wrote:
I have generated (in simplified terms) the following structure
with SourceGen:
public abstract class MAbstractRoot {} // written by me
public class MBaseType extends MAbstractRoot {} //
generated by SourceGen, "extends" defined in binding file
public class Mxxx extends MBaseType {} // generated by SoureGen
....
// generated by SourceGen
public class Mzzz extends Myyy {} // generated
by SourceGen
public class MyOwnStuff extends Mzzz {} // written by me
When I marshal an object from the class MyOwnStuff, all of the
fields generated are
duplicated and are identical, except for the fact one of the
pairs has the suffix
"AsReference" on the element name.
I have only been able to find references to the "AsReference"
suffix in conjunction with
getters and setters. Could someone please point me at an
explanation of what is happening
here and how to control (OK - prevent) it?
Regards
Steve
-------------------------------------------------
If you wish to unsubscribe from this list, please send an
empty message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------
-------------------------------------------------
If you wish to unsubscribe from this list, please send an empty
message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------
-------------------------------------------------
If you wish to unsubscribe from this list, pleasesend an empty
message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------
-------------------------------------------------
If you wish to unsubscribe from this list, please send an empty
message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------
-------------------------------------------------
If you wish to unsubscribe from this list, please send an empty
message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------
-------------------------------------------------
If you wish to unsubscribe from this list, please
send an empty message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------