Re: [Simple-support] Writing to XML fails
Brought to you by:
niallg
|
From: Niall G. <gal...@ya...> - 2014-06-07 01:58:55
|
You cannot construct a non static inner class through reflection. For the constructors also you must specify the names
Pair(@Element(name="first") A first, @Element(name="second") B second)
--------------------------------------------
On Fri, 6/6/14, Miha Vitorovic <mih...@gm...> wrote:
Subject: [Simple-support] Writing to XML fails
To: sim...@li...
Received: Friday, 6 June, 2014, 3:38 PM
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
-----Inline Attachment Follows-----
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph
databases and their
applications. Written by three acclaimed leaders in the
field,
this first edition is now available. Download your free book
today!
http://p.sf.net/sfu/NeoTech
-----Inline Attachment Follows-----
_______________________________________________
Simple-support mailing list
Sim...@li...
https://lists.sourceforge.net/lists/listinfo/simple-support
|