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();