[Simple-support] Writing to XML fails
Brought to you by:
niallg
|
From: Miha V. <mih...@gm...> - 2014-06-06 22:38:17
|
Hi Niall,
first off, thanks for the great library. But I'm having trouble fitting
the following together:
package com.mycompany.simpletest;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root(name = "pair")
public class Pair<A, B> {
@Element
private final A first;
@Element
private final B second;
public Pair(A first, B second) {
this.first = first;
this.second = second;
}
public A getFirst() { return first; }
public B getSecond() { return second; }
}
------------------
package com.mycompany.simpletest;
import java.util.ArrayList;
import java.util.List;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
@Root(name = "test")
public class Test {
@Root(name = "element1")
public class Info {
@Element
private String name;
public Info(String name) {
this.name = name;
}
}
@ElementList(name = "list")
private List<Pair<Info, Info>> list;
public Test() {
list = new ArrayList<>();
}
public void add(String s1, String s2) {
Info i1 = new Info(s1);
Info i2 = new Info(s2);
Pair<Info, Info> p = new Pair<>(i1, i2);
list.add(p);
}
}
------------------
package com.mycompany.simpletest;
import java.io.FileOutputStream;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.convert.AnnotationStrategy;
import org.simpleframework.xml.core.Persister;
import org.simpleframework.xml.strategy.Strategy;
public class SimpleTest {
public static void main(String[] args) {
Test t1 = new Test();
t1.add("a", "b");
t1.add("b", "c");
try {
FileOutputStream out = new FileOutputStream("test.xml");
Strategy strategy = new AnnotationStrategy();
Serializer serializer = new Persister(strategy);
serializer.write(t1, out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
And this is the result:
org.simpleframework.xml.core.ConstructorException: Can not construct
inner class com.mycompany.simpletest.Test$Info
at
org.simpleframework.xml.core.ConstructorScanner.scan(ConstructorScanner.java:122)
at
org.simpleframework.xml.core.ConstructorScanner.<init>(ConstructorScanner.java:73)
at
org.simpleframework.xml.core.ClassScanner.<init>(ClassScanner.java:109)
at
org.simpleframework.xml.core.ObjectScanner.<init>(ObjectScanner.java:78)
at
org.simpleframework.xml.core.ScannerFactory.getInstance(ScannerFactory.java:81)
at org.simpleframework.xml.core.Support.getScanner(Support.java:357)
at org.simpleframework.xml.core.Source.getScanner(Source.java:271)
at org.simpleframework.xml.core.Source.getCaller(Source.java:300)
at
org.simpleframework.xml.core.Composite.writeReplace(Composite.java:1147)
at
org.simpleframework.xml.core.Composite.writeUnion(Composite.java:1124)
at
org.simpleframework.xml.core.Composite.writeElements(Composite.java:1098)
at
org.simpleframework.xml.core.Composite.writeSection(Composite.java:1004)
at org.simpleframework.xml.core.Composite.write(Composite.java:975)
at org.simpleframework.xml.core.Composite.write(Composite.java:952)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:236)
at
org.simpleframework.xml.core.CompositeList.write(CompositeList.java:248)
at
org.simpleframework.xml.core.Composite.writeElement(Composite.java:1256)
at
org.simpleframework.xml.core.Composite.writeElement(Composite.java:1239)
at
org.simpleframework.xml.core.Composite.writeUnion(Composite.java:1127)
at
org.simpleframework.xml.core.Composite.writeElements(Composite.java:1098)
at
org.simpleframework.xml.core.Composite.writeSection(Composite.java:1004)
at org.simpleframework.xml.core.Composite.write(Composite.java:975)
at org.simpleframework.xml.core.Composite.write(Composite.java:952)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:236)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:208)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:186)
at org.simpleframework.xml.core.Persister.write(Persister.java:1180)
at org.simpleframework.xml.core.Persister.write(Persister.java:1162)
at org.simpleframework.xml.core.Persister.write(Persister.java:1140)
at org.simpleframework.xml.core.Persister.write(Persister.java:1259)
at org.simpleframework.xml.core.Persister.write(Persister.java:1241)
at org.simpleframework.xml.core.Persister.write(Persister.java:1222)
at com.mycompany.simpletest.SimpleTest.main(SimpleTest.java:31)
Can you please help?
Thanks and br, Miha
|