From 727b809a57ebfd4d38370c7f7f538a38a9bf3f7b Mon Sep 17 00:00:00 2001 From: Viral Gohel Date: Thu, 27 Dec 2018 22:07:52 +0530 Subject: [PATCH] Fix (un)marshal bug #1135 --- .../com/sun/xml/bind/v2/runtime/property/PropertyFactory.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jaxb-ri/runtime/impl/src/main/java/com/sun/xml/bind/v2/runtime/property/PropertyFactory.java b/jaxb-ri/runtime/impl/src/main/java/com/sun/xml/bind/v2/runtime/property/PropertyFactory.java index 7f10da812..cbc4ef11e 100644 --- a/jaxb-ri/runtime/impl/src/main/java/com/sun/xml/bind/v2/runtime/property/PropertyFactory.java +++ b/jaxb-ri/runtime/impl/src/main/java/com/sun/xml/bind/v2/runtime/property/PropertyFactory.java @@ -14,6 +14,7 @@ import java.lang.reflect.InvocationTargetException; import java.util.Collection; +import com.sun.xml.bind.v2.model.core.ClassInfo; import com.sun.xml.bind.v2.model.core.ID; import com.sun.xml.bind.v2.model.core.PropertyKind; import com.sun.xml.bind.v2.model.runtime.RuntimeAttributePropertyInfo; @@ -121,6 +122,9 @@ static boolean isLeaf(RuntimePropertyInfo info) { RuntimeTypeInfo rti = types.iterator().next(); if(!(rti instanceof RuntimeNonElement)) return false; + + //if hasSubClasses it's not a leaf and we can't optimize, see #1135 + if (rti instanceof ClassInfo && ((ClassInfo) rti).hasSubClasses()) return false; if(info.id()==ID.IDREF) // IDREF is always handled as leaf -- Transducer maps IDREF String back to an object