Thread: [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
|
|
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
|
|
From: Miha V. <mih...@gm...> - 2014-06-07 08:16:40
|
Thanks, I had a similar idea over the night, but I cannot get it working:
package com.mycompany.simpletest;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root
public class Pair<A, B> {
@Element(name = "first")
private final A first;
@Element(name = "second")
private final B second;
public Pair(@Element(name = "first") A first, @Element(name =
"second") 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
public class Test {
@Root
public class Info {
@Element(name = "name")
private final String name;
public Info(@Element(name = "name") String name) { this.name =
name; }
public String getName() { return name; }
}
@ElementList
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(); }
}
}
Br, Miha
On 7.6.2014 3:58, Niall Gallagher wrote:
> 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:
>
>
|
|
From: Miha V. <mih...@gm...> - 2014-06-12 15:56:50
|
Hi,
could you please help me get this working? I really do not know what is
wrong. I haven't had the time to look into the simple sources yet...
Thanks, Miha
On 7.6.2014 10:16, Miha Vitorovic wrote:
> Thanks, I had a similar idea over the night, but I cannot get it working:
>
> package com.mycompany.simpletest;
>
> import org.simpleframework.xml.Element;
> import org.simpleframework.xml.Root;
>
> @Root
> public class Pair<A, B> {
> @Element(name = "first")
> private final A first;
> @Element(name = "second")
> private final B second;
>
> public Pair(@Element(name = "first") A first, @Element(name =
> "second") 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
> public class Test {
> @Root
> public class Info {
> @Element(name = "name")
> private final String name;
>
> public Info(@Element(name = "name") String name) { this.name =
> name; }
>
> public String getName() { return name; }
> }
>
> @ElementList
> 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(); }
> }
> }
>
> Br, Miha
>
> On 7.6.2014 3:58, Niall Gallagher wrote:
>> 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:
>>
>>
>
|
|
From: Niall G. - Y. <Nia...@yi...> - 2014-06-13 23:37:55
|
I think I mentioned that non-static inners cannot be instantiated via reflection, it has an implicit "this"...
From: Miha Vitorovic [mailto:mih...@gm...]
Sent: 13 June 2014 01:57
To: Niall Gallagher; sim...@li...
Subject: Re: [Simple-support] Writing to XML fails
Hi,
could you please help me get this working? I really do not know what is wrong. I haven't had the time to look into the simple sources yet...
Thanks, Miha
On 7.6.2014 10:16, Miha Vitorovic wrote:
Thanks, I had a similar idea over the night, but I cannot get it working:
package com.mycompany.simpletest;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root
public class Pair<A, B> {
@Element(name = "first")
private final A first;
@Element(name = "second")
private final B second;
public Pair(@Element(name = "first") A first, @Element(name = "second") 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
public class Test {
@Root
public class Info {
@Element(name = "name")
private final String name;
public Info(@Element(name = "name") String name) { this.name = name; }
public String getName() { return name; }
}
@ElementList
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(); }
}
}
Br, Miha
On 7.6.2014 3:58, Niall Gallagher wrote:
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...><mailto:mih...@gm...> wrote:
|