Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified sources/net.sf.j2s.core/dist/swingjs/SwingJS-site.zip
Binary file not shown.
2 changes: 1 addition & 1 deletion sources/net.sf.j2s.core/dist/swingjs/timestamp
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20200112194529
20200113205904
Binary file modified sources/net.sf.j2s.core/dist/swingjs/ver/3.2.7/SwingJS-site.zip
Binary file not shown.
2 changes: 1 addition & 1 deletion sources/net.sf.j2s.core/dist/swingjs/ver/3.2.7/timestamp
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20200112194529
20200113205904
Binary file modified sources/net.sf.j2s.java.core/dist/SwingJS-site.zip
Binary file not shown.
4 changes: 2 additions & 2 deletions sources/net.sf.j2s.java.core/src/swingjs/xml/JSJAXBClass.java
Original file line number Diff line number Diff line change
Expand Up @@ -235,8 +235,8 @@ private void addField(JSJAXBField field) {
}
fields.add(field);
if (isMarshaller && field.javaName != null) {
System.out.println("jsjaxbclass adding "
+ (field.methodName == null ? "field " + field.javaName : field.methodName + "()"));
// System.out.println("jsjaxbclass adding "
// + (field.methodName == null ? "field " + field.javaName : field.methodName + "()"));
marshallerFieldMap.put(field.javaName, field);
}
}
Expand Down
28 changes: 17 additions & 11 deletions sources/net.sf.j2s.java.core/src/swingjs/xml/JSJAXBMarshaller.java
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,11 @@ private void addFieldListable(JSJAXBClass jaxbClass, JSJAXBField field, Object v
}

private void writeField(JSJAXBField field, Object value, boolean addXsiType) throws JAXBException {
// System.out.println(field.qualifiedName
// + " xs=" + addXsiType
// + " isattr=" + field.isAttribute
// + " isxval=" + field.isXmlValue
// + " nillable=" + field.isNillable);
if (field.isAttribute) {
writeAttribute(field, value);
} else if (field.isXmlValue) {
Expand Down Expand Up @@ -330,15 +335,15 @@ private void writeField(JSJAXBField field, Object value, boolean addXsiType) thr
private String getEntryType(QName qname, Object value) throws JAXBException {
String className = value.getClass().getName();
switch (className) {
case "Integer":
case "java.lang.Integer":
return "xs:int";
case "Boolean":
case "Byte":
case "Short":
case "Long":
case "Float":
case "Double":
return "xs:" + className.toLowerCase();
case "java.lang.Boolean":
case "java.lang.Byte":
case "java.lang.Short":
case "java.lang.Long":
case "java.lang.Float":
case "java.lang.Double":
return "xs:" + className.substring(10).toLowerCase();
case "java.lang.String":
return "xs:string";
case "java.math.BigInteger":
Expand Down Expand Up @@ -572,18 +577,19 @@ private void writeFieldMap(JSJAXBClass jaxbClass, JSJAXBField field, Map<?, ?> m
output(">\n");
QName qn = field.qualifiedName;
Object eval = field.mapEntryValue;
boolean addXsiType = ((field.holdsObjects & JSJAXBField.MAP_KEY_OBJECT) != 0);
boolean addXsiTypeKey = ((field.holdsObjects & JSJAXBField.MAP_KEY_OBJECT) != 0);
boolean addXsiTypeVal = ((field.holdsObjects & JSJAXBField.MAP_VALUE_OBJECT) != 0);
for (Entry<?, ?> e : map.entrySet()) {
Object key = e.getKey();
Object value = e.getValue();
output("<entry>");
field.qualifiedName = qnEntryKey;
field.mapEntryValue = key;
addFieldListable(jaxbClass, field, key, addXsiType);
addFieldListable(jaxbClass, field, key, addXsiTypeKey);
if (value != null || isNillable) {
field.mapEntryValue = value;
field.qualifiedName = qnEntryValue;
addFieldListable(jaxbClass, field, value, addXsiType);
addFieldListable(jaxbClass, field, value, addXsiTypeVal);
}
output("\n</entry>\n");
}
Expand Down
92 changes: 55 additions & 37 deletions sources/net.sf.j2s.java.core/src/test/Test_JAXB_ORDERED.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.GregorianCalendar;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

import test.jaxb.Root_ORDERED;
import test.jaxb.Root_ORDERED.SomewhatComplex;

/**
* tests:
Expand All @@ -45,39 +43,59 @@
public class Test_JAXB_ORDERED extends Test_ {

public static void main(String[] args) {
JAXBContext jc;
// test read/write of own type
readWrite(null, null);
try {
jc = JAXBContext.newInstance("test.jaxb");
Root_ORDERED root = new Root_ORDERED("test");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
marshaller.marshal(root, bos);
String s = null;
try {
s = new String(bos.toByteArray(), "UTF-8");
System.out.println(s);
Unmarshaller unmarshaller = jc.createUnmarshaller();
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes("UTF-8"));
XMLStreamReader streamReader;
Root_ORDERED r = null;

try {
streamReader = XMLInputFactory.newInstance().createXMLStreamReader(is);
r = (Root_ORDERED) unmarshaller.unmarshal(streamReader, Root_ORDERED.class).getValue();
} catch (XMLStreamException | FactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
boolean isJS = /**@j2sNative true || */false;
// test read/write of xml written by Java if JS; JS if Java
String prefix = (isJS ? "swingjs/j2s/" : "src/");
String fjs = prefix +"test/jaxb_ordered_from_JS.xml";
String fjava = prefix + "test/jaxb_ordered_from_Java.xml";
String outfile = isJS ? fjs : fjava;
String infile = isJS? fjava : fjs;
FileOutputStream fos = new FileOutputStream(outfile);
readWrite(null, fos);
fos.close();
FileInputStream fis = new FileInputStream(infile);
readWrite(fis, null);
System.out.println("File written to " + outfile);
System.out.println("File read from " + infile);
fis.close();
System.out.println("Test_JAXB_ORDERED OK");
} catch (IOException e) {
e.printStackTrace();
assert(false);
}
}

r.validate();

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
/**
* read from a file OR write to a file
*
* @param in
* @param out ignored if in is not null
*/
private static void readWrite(InputStream in, OutputStream out) {
try {
JAXBContext jc = JAXBContext.newInstance("test.jaxb");
if (in == null) {
Root_ORDERED root = new Root_ORDERED("test");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
marshaller.marshal(root, bos);
byte[] bytes = bos.toByteArray();
if (out != null)
out.write(bos.toByteArray());
String s = new String(bytes, "UTF-8");
System.out.println(s);
in = new ByteArrayInputStream(s.getBytes("UTF-8"));
}

System.out.println("Test_JAXB_ORDERED OK");
} catch (JAXBException e) {
XMLStreamReader streamReader;
streamReader = XMLInputFactory.newInstance().createXMLStreamReader(in);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Root_ORDERED r = (Root_ORDERED) unmarshaller.unmarshal(streamReader, Root_ORDERED.class).getValue();
r.validate();
} catch (JAXBException | XMLStreamException | FactoryConfigurationError | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Expand Down
13 changes: 7 additions & 6 deletions sources/net.sf.j2s.java.core/src/test/jaxb/Root_ORDERED.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,16 @@
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlIDREF;
import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;


// adapted source: http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html
Expand Down Expand Up @@ -180,6 +177,7 @@ public void validate() {
assert(b.equals("b"));
assert(c.equals("c"));
assert(hm.containsKey("null") && hm.get("null") == null);
assert(hm.containsKey("map") && hm.get("map").getClass().getName().equals("test.jaxb.Root_ORDERED$SomewhatComplex"));

assert(getCreationDate().toString().indexOf("T") < 0 && getCreationDate().toString().indexOf("0") > 0);
assert(((test.jaxb.Obj) f5[1]).obj1.equals("jaxb#Obj1"));
Expand All @@ -191,9 +189,9 @@ public void validate() {
assert(IFArray[0].equals(Integer.valueOf(2)) && IFArray[1].equals(Float.valueOf(2.1f)));
assert(IFList.get(0).equals(Integer.valueOf(2)) && IFList.get(1).equals(Float.valueOf(2.1f)));


System.out.println(date);
assert(date.equals(new Date("10/20/2018")));
System.out.println("validation for " + getClass().getName() + " OK");
}

// private QName qname;
Expand Down Expand Up @@ -248,8 +246,7 @@ public static class SomewhatComplex {


public SomewhatComplex() {
System.out.println("new somewhatcomplex");

System.out.println("new somewhatcomplex");
}

public SomewhatComplex(String id) {
Expand All @@ -273,6 +270,10 @@ public SomewhatComplex(String id) {
@XmlAttribute
public byte[] bytes;

@Override
public String toString() {
return "SomewhatComplex:" + id;
}
}

private final static String x = "date";
Expand Down
83 changes: 83 additions & 0 deletions sources/net.sf.j2s.java.core/src/test/jaxb_ordered_from_JS.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Root_ORDERED xmlns:ns2="root.ordered" xmlns:ns3="package-namespace" xmlns:ns4="testing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" date="2018-10-20T05:00:00.000Z" byteshex="6465" bytes64="ZGU=" moreAttr="more&amp;amp;" ok="ok" id="test" type="cust">
<ns3:f5 xsi:type="xs:float">1.25</ns3:f5>
<ns3:f5 xmlns:ns5="stolaf.edu" xsi:type="ns5:objclass" xmlns:ns6="www.jalview.org" id="jaxb2.obj">
<ns6:Obj1>jaxb#Obj1</ns6:Obj1></ns3:f5>
<ns3:position>12345678910</ns3:position>
<ns4:what xsi:type="xs:int">3</ns4:what>
<ns3:int>2</ns3:int>
<ns3:float>2.1</ns3:float>
<ns3:intlist>2</ns3:intlist>
<ns3:floatlist>2.1</ns3:floatlist>
<ns3:hm1>
<entry>
<key>null</key>
</entry>
<entry>
<key>testing</key>
<value xsi:type="xs:string">TESTING</value>
</entry>
<entry>
<key>map</key>
<value xmlns:ns7="st.Olaf" xsi:type="ns7:MoreComplex" xmlns:ns8="www.jalview.org2" ns8:cb="c&quot;&amp;lt;&amp;gt;b&amp;amp; &#8491;" bytes="ZGU=">
<ns7:id>id#map</ns7:id>
<ns7:ca>c"&amp;lt;&amp;gt;b&amp;amp; &#8491;</ns7:ca></value>
</entry>
</ns3:hm1>
<ns3:hm2>
<entry>
<key xsi:type="xs:int">-1</key>
<value>V1</value>
</entry>
<entry>
<key xsi:type="xs:int">-2</key>
</entry>
<entry>
<key xsi:type="xs:int">-3</key>
<value>V3</value>
</entry>
</ns3:hm2>
<ns3:cx xmlns:ns7="st.Olaf" xmlns:ns8="www.jalview.org2" ns8:cb="c&quot;&amp;lt;&amp;gt;b&amp;amp; &#8491;" bytes="Y2U=">
<ns7:id>id##??</ns7:id>
<ns7:ca>c"&amp;lt;&amp;gt;b&amp;amp; &#8491;</ns7:ca></ns3:cx>
<ns3:list0 xmlns:ns7="st.Olaf" xsi:type="ns7:MoreComplex" xmlns:ns8="www.jalview.org2" ns8:cb="c&quot;&amp;lt;&amp;gt;b&amp;amp; &#8491;" bytes="ZGU=">
<ns7:id>id#List</ns7:id>
<ns7:ca>c"&amp;lt;&amp;gt;b&amp;amp; &#8491;</ns7:ca></ns3:list0>
<ns3:list0 xsi:type="xs:string">list0[1]</ns3:list0>
<ns3:list0 xsi:type="xs:string">list0[2]</ns3:list0>
<creationDate>2020-01-13-06:00</creationDate>
<ns3:c>c</ns3:c>
<ns3:b>b</ns3:b>
<ns3:a>a</ns3:a>
<ns3:s xsi:type="xs:string">a</ns3:s>
<ns3:s xsi:type="xs:string">b</ns3:s>
<ns3:s xsi:nil="true" />
<ns3:i>1 2 3</ns3:i>
<ns3:I>2</ns3:I>
<ns3:list1>
<ns3:list xsi:type="xs:string">TESTING</ns3:list>
<ns3:list xsi:type="xs:string">null</ns3:list>
<ns3:list xmlns:ns7="st.Olaf" xsi:type="ns7:MoreComplex" xmlns:ns8="www.jalview.org2" ns8:cb="c&quot;&amp;lt;&amp;gt;b&amp;amp; &#8491;" bytes="ZGU=">
<ns7:id>id#idList#1</ns7:id>
<ns7:ca>c"&amp;lt;&amp;gt;b&amp;amp; &#8491;</ns7:ca></ns3:list>
<ns3:list xsi:type="xs:boolean">true</ns3:list>
<ns3:list xsi:type="xs:byte">1</ns3:list>
<ns3:list xsi:type="xs:short">2</ns3:list>
<ns3:list xsi:type="xs:int">3</ns3:list>
<ns3:list xsi:type="xs:long">4</ns3:list>
<ns3:list xsi:type="xs:float">6.6</ns3:list>
<ns3:list xsi:type="xs:double">8.9</ns3:list>
<ns3:list xsi:type="xs:integer">12345678910111213141516</ns3:list>
</ns3:list1>
<ns3:bi>1234567890123456789012345</ns3:bi>
<ns3:bd>123.456</ns3:bd>
<ns3:f>1.2</ns3:f>
<ns3:f2>1.2</ns3:f2>
<ns3:f3>1.2</ns3:f3>
<ns3:f4>1.3</ns3:f4>
<ns3:f6 xsi:type="xs:int">3</ns3:f6>
<ns3:I2 xsi:nil="true" />
<ns3:I2>2</ns3:I2>
<ns3:I2 xsi:nil="true" />
<ns3:moreElem>more&amp;amp;</ns3:moreElem>
</ns2:Root_ORDERED>
Loading