bug#500139 - Null on unmarshalling of java.util.UUID
Signed-off-by: Andriy Zhdanov <andriy.zhdanov@oracle.com>
Reviewed-by: Petros Splinakis <petros.splinakis@oracle.com>
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/XMLConversionManager.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/XMLConversionManager.java
index dcca604..61a78c3 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/XMLConversionManager.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/XMLConversionManager.java
@@ -27,6 +27,7 @@
import java.util.Locale;
import java.util.StringTokenizer;
import java.util.TimeZone;
+import java.util.UUID;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeConstants;
@@ -192,6 +193,8 @@ public Object convertObject(Object sourceObject, Class javaClass) throws Convers
return convertObjectToDuration(sourceObject);
} else if ((javaClass == CoreClassConstants.FILE) && (sourceObject instanceof String)) {
return convertStringToFile((String) sourceObject);
+ } else if ((javaClass == Constants.UUID) && (sourceObject instanceof String)) {
+ return UUID.fromString((String) sourceObject);
} else {
try {
return super.convertObject(sourceObject, javaClass);
diff --git a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElement.json b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElement.json
index 813e540..b993f5a 100644
--- a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElement.json
+++ b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElement.json
@@ -1 +1 @@
-[{"root":{"name":"FOO"}},{"root":{"name":"BAR"}}]
+[{"root":{"name":"FOO", "uuid":"8ae03765-ee01-4a81-a0de-a2497a10739f"}},{"root":{"name":"BAR"}}]
\ No newline at end of file
diff --git a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementFormatted.json b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementFormatted.json
index ecb8496..6e225c4 100644
--- a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementFormatted.json
+++ b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementFormatted.json
@@ -1,6 +1,7 @@
[ {
"root" : {
- "name" : "FOO"
+ "name" : "FOO",
+ "uuid" : "8ae03765-ee01-4a81-a0de-a2497a10739f"
}
}, {
"root" : {
diff --git a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElement.json b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElement.json
index ab46064..f54f6e6 100644
--- a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElement.json
+++ b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElement.json
@@ -1 +1 @@
-[{"name":"FOO"},{"name":"BAR"}]
+[{"name":"FOO", "uuid":"8ae03765-ee01-4a81-a0de-a2497a10739f"},{"name":"BAR"}]
\ No newline at end of file
diff --git a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementFormatted.json b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementFormatted.json
index 9111255..3177e18 100644
--- a/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementFormatted.json
+++ b/moxy/eclipselink.moxy.test/resource/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementFormatted.json
@@ -1,5 +1,6 @@
[ {
- "name" : "FOO"
+ "name" : "FOO",
+ "uuid" : "8ae03765-ee01-4a81-a0de-a2497a10739f"
}, {
"name" : "BAR"
} ]
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementArrayTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementArrayTestCases.java
index e184f9a..a30689b 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementArrayTestCases.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementArrayTestCases.java
@@ -18,6 +18,7 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import java.util.UUID;
import javax.xml.transform.stream.StreamSource;
@@ -39,6 +40,7 @@ public WithXmlRootElementArrayTestCases(String name) throws Exception {
WithXmlRootElementRoot foo = new WithXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
array[0] = foo;
WithXmlRootElementRoot bar = new WithXmlRootElementRoot();
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementJAXBElementNoRootTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementJAXBElementNoRootTestCases.java
index 7a60055..7b8aaf3 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementJAXBElementNoRootTestCases.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementJAXBElementNoRootTestCases.java
@@ -16,6 +16,7 @@
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.UUID;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
@@ -46,6 +47,7 @@ protected Collection<JAXBElement<WithXmlRootElementRoot>> getControlObject() {
WithXmlRootElementRoot foo = new WithXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
JAXBElement<WithXmlRootElementRoot> jbe1 = new JAXBElement<WithXmlRootElementRoot>(new QName("roottest1"), WithXmlRootElementRoot.class, foo);
list.add(jbe1);
@@ -64,6 +66,7 @@ public Object getReadControlObject() {
WithXmlRootElementRoot foo = new WithXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
list.add(foo);
WithXmlRootElementRoot bar = new WithXmlRootElementRoot();
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementRoot.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementRoot.java
index 1a7315c..d8d0581 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementRoot.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementRoot.java
@@ -12,12 +12,15 @@
******************************************************************************/
package org.eclipse.persistence.testing.jaxb.json.rootlevellist;
+import java.util.UUID;
+
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="root")
public class WithXmlRootElementRoot {//implements Comparable<WithXmlRootElementRoot>{
private String name;
+ private UUID uuid;
public String getName() {
return name;
@@ -27,6 +30,14 @@ public void setName(String name) {
this.name = name;
}
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
@Override
public boolean equals(Object o) {
if(null == o || o.getClass() != this.getClass()) {
@@ -35,8 +46,13 @@ public boolean equals(Object o) {
WithXmlRootElementRoot test = (WithXmlRootElementRoot) o;
if(null == name) {
return null == test.getName();
+ } else if (!name.equals(test.getName())){
+ return false;
+ }
+ if(null == uuid) {
+ return null == test.getUuid();
} else {
- return name.equals(test.getName());
+ return uuid.equals(test.getUuid());
}
}
/*
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementSetTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementSetTestCases.java
index e6ebaeb..71e2d1b 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementSetTestCases.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementSetTestCases.java
@@ -16,6 +16,7 @@
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
+import java.util.UUID;
import javax.xml.transform.stream.StreamSource;
@@ -37,6 +38,7 @@ protected Set<WithXmlRootElementRoot> getControlObject() {
WithXmlRootElementRoot foo = new WithXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
set.add(foo);
WithXmlRootElementRoot bar = new WithXmlRootElementRoot();
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementTestCases.java
index b89eb00..9131fc8 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementTestCases.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithXmlRootElementTestCases.java
@@ -15,6 +15,7 @@
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import javax.xml.transform.stream.StreamSource;
@@ -37,6 +38,7 @@ protected List<WithXmlRootElementRoot> getControlObject() {
WithXmlRootElementRoot foo = new WithXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
list.add(foo);
WithXmlRootElementRoot bar = new WithXmlRootElementRoot();
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementArrayTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementArrayTestCases.java
index 357b3ca..8284277 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementArrayTestCases.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementArrayTestCases.java
@@ -20,6 +20,7 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import java.util.UUID;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
@@ -50,6 +51,7 @@ public Class getUnmarshalClass(){
WithoutXmlRootElementRoot foo = new WithoutXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
array[0] = foo;
WithoutXmlRootElementRoot bar = new WithoutXmlRootElementRoot();
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementRoot.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementRoot.java
index 006557c..a07f3cc 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementRoot.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementRoot.java
@@ -12,9 +12,12 @@
******************************************************************************/
package org.eclipse.persistence.testing.jaxb.json.rootlevellist;
+import java.util.UUID;
+
public class WithoutXmlRootElementRoot {
private String name;
+ private UUID uuid;
public String getName() {
return name;
@@ -24,6 +27,14 @@ public void setName(String name) {
this.name = name;
}
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
@Override
public boolean equals(Object o) {
if(null == o || o.getClass() != this.getClass()) {
@@ -32,8 +43,13 @@ public boolean equals(Object o) {
WithoutXmlRootElementRoot test = (WithoutXmlRootElementRoot) o;
if(null == name) {
return null == test.getName();
+ } else if (!name.equals(test.getName())){
+ return false;
+ }
+ if(null == uuid) {
+ return null == test.getUuid();
} else {
- return name.equals(test.getName());
+ return uuid.equals(test.getUuid());
}
}
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementSetTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementSetTestCases.java
index 0e71d67..516333d 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementSetTestCases.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementSetTestCases.java
@@ -19,6 +19,7 @@
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
+import java.util.UUID;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
@@ -48,6 +49,7 @@ protected Set<WithoutXmlRootElementRoot> getControlObject() {
WithoutXmlRootElementRoot foo = new WithoutXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
set.add(foo);
WithoutXmlRootElementRoot bar = new WithoutXmlRootElementRoot();
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementTestCases.java
index 8c6fd7f..b8c27ad 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementTestCases.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/WithoutXmlRootElementTestCases.java
@@ -16,6 +16,7 @@
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
@@ -46,6 +47,7 @@ protected List<WithoutXmlRootElementRoot> getControlObject() {
WithoutXmlRootElementRoot foo = new WithoutXmlRootElementRoot();
foo.setName("FOO");
+ foo.setUuid(UUID.fromString("8ae03765-ee01-4a81-a0de-a2497a10739f"));
list.add(foo);
WithoutXmlRootElementRoot bar = new WithoutXmlRootElementRoot();