Re: [Simple-support] Problem serialzing object with lists
Brought to you by:
niallg
|
From: Niall G. <gal...@ya...> - 2007-08-20 13:11:16
|
Hi,
You are missing a @Root annotation on the TestPref1
and TestPref2 classes. The general rule is, if there
is no @Root annotation then a transformation is
attempted as a last resort. However, typically
transformations will be reserved for simple types,
such as integers, booleans, strings, dates, and so on.
Niall
--- Frank Beullens <f_b...@ya...> wrote:
> Hi,
>
> i have created the following objects:
>
> public interface IPreference {
>
> }
>
> public class TestPref1 implements IPreference {
> @Element(name="id")
> private long id = 0;
>
> @Element(name="pref1name")
> private String name = "";
>
> /** Creates a new instance of TestPref1 */
> public TestPref1() {
> }
> public long getId() {
> return id;
> }
> public void setId(long id) {
> this.id = id;
> }
> public String getName() {
> return name;
> }
> public void setName(String name) {
> this.name = name;
> }
>
> }
>
> public class TestPref2 implements IPreference {
> @Element(name="pref2code")
> private String code = "";
>
> /** Creates a new instance of TestPref2 */
> public TestPref2() {
> }
> public String getCode() {
> return code;
> }
> public void setCode(String code) {
> this.code = code;
> }
>
> }
>
> @Root(name="preferencegroup")
> public class PreferenceGroup implements IPreference
> {
> @ElementList(name="preferences")
> private List<IPreference> preferences = null;
>
> @Attribute(name="groupcode")
> private String groupCode = "";
>
> public List<IPreference> getPreferences() {
> return this.preferences;
> }
>
> public void setPreferences(List<IPreference>
> preferences) {
> this.preferences = preferences;
> }
> public String getGroupCode() {
> return groupCode;
> }
> public void setGroupCode(String groupCode) {
> this.groupCode = groupCode;
> }
> }
>
>
> when trying to do the following:
>
> PreferenceGroup group = new
> PreferenceGroup();
> group.setGroupCode("TESTGROUP");
> List<IPreference> preferences = new
> ArrayList<IPreference>();
> TestPref1 pref1 = new TestPref1();
> pref1.setId(1);
> pref1.setName("test preference 1");
> preferences.add(pref1);
> TestPref2 pref2 = new TestPref2();
> pref2.setCode("TSTPRF2");
> preferences.add(pref2);
> group.setPreferences(preferences);
> Serializer serializer = new Persister();
> File result = new File("preferences.xml");
> try {
> serializer.write(group, result);
> } catch (Exception ex) {
> ex.printStackTrace();
> }
>
> I get the error:
>
>
org.simpleframework.xml.transform.TransformException:
> Transform of class
> com.libesoft.rcp.preferences.test.TestPref1 not
> supported
> at
>
org.simpleframework.xml.transform.PackageMatcher.match(PackageMatcher.java:88)
> at
>
org.simpleframework.xml.transform.DefaultMatcher.matchType(DefaultMatcher.java:111)
> at
>
org.simpleframework.xml.transform.DefaultMatcher.match(DefaultMatcher.java:90)
> at
>
org.simpleframework.xml.transform.Transformer.write(Transformer.java:129)
> at
>
org.simpleframework.xml.load.PrimitiveFactory.getText(PrimitiveFactory.java:128)
> at
>
org.simpleframework.xml.load.Primitive.write(Primitive.java:200)
> at
>
org.simpleframework.xml.load.PrimitiveList.write(PrimitiveList.java:157)
> at
>
org.simpleframework.xml.load.Composite.writeElement(Composite.java:589)
> at
>
org.simpleframework.xml.load.Composite.writeElements(Composite.java:485)
> at
>
org.simpleframework.xml.load.Composite.write(Composite.java:423)
> at
>
org.simpleframework.xml.load.Composite.write(Composite.java:401)
> at
>
org.simpleframework.xml.load.Traverser.write(Traverser.java:186)
> at
>
org.simpleframework.xml.load.Traverser.write(Traverser.java:165)
> at
>
org.simpleframework.xml.load.Traverser.write(Traverser.java:143)
> at
>
org.simpleframework.xml.load.Persister.write(Persister.java:608)
> at
>
org.simpleframework.xml.load.Persister.write(Persister.java:590)
> at
>
org.simpleframework.xml.load.Persister.write(Persister.java:571)
> at
>
org.simpleframework.xml.load.Persister.write(Persister.java:687)
> at
>
org.simpleframework.xml.load.Persister.write(Persister.java:669)
> at
>
org.simpleframework.xml.load.Persister.write(Persister.java:650)
> at
>
org.simpleframework.xml.load.Persister.write(Persister.java:629)
>
>
> Any ideas what i am doing wrong????
>
> Thanks
>
> Frank
>
>
-------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?
> Stop.
> Now Search log events and configuration files using
> AJAX and a browser.
> Download your FREE copy of Splunk now >>
> http://get.splunk.com/
> _______________________________________________
> Simple-support mailing list
> Sim...@li...
>
https://lists.sourceforge.net/lists/listinfo/simple-support
>
____________________________________________________________________________________
Boardwalk for $500? In 2007? Ha! Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.
http://get.games.yahoo.com/proddesc?gamekey=monopolyherenow
|