diff --git a/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java b/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java index 03375f0282..80f7a7f9fe 100644 --- a/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java +++ b/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java @@ -37,6 +37,8 @@ */ package org.jooq.util.jaxb.tools; +import static java.util.Arrays.asList; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -55,6 +57,7 @@ import java.lang.reflect.ParameterizedType; import java.net.URL; import java.nio.charset.Charset; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.IdentityHashMap; @@ -65,6 +68,7 @@ import javax.xml.XMLConstants; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlList; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchema; import javax.xml.bind.annotation.XmlType; @@ -243,6 +247,7 @@ public final class MiniJAXB { XmlElementWrapper w = child.getAnnotation(XmlElementWrapper.class); XmlElement e = child.getAnnotation(XmlElement.class); XmlJavaTypeAdapter a = child.getAnnotation(XmlJavaTypeAdapter.class); + XmlList l = child.getAnnotation(XmlList.class); String childName = child.getName(); Class childType = child.getType(); @@ -252,6 +257,10 @@ public final class MiniJAXB { unmarshalList0(list, childElement, e.name(), (Class) ((ParameterizedType) child.getGenericType()).getActualTypeArguments()[0], fieldsByClass); Reflect.on(result).set(childName, list); } + else if (List.class.isAssignableFrom(childType) && l != null) { + List list = new ArrayList(asList(childElement.getTextContent().split(" +"))); + Reflect.on(result).set(childName, Convert.convert(list, (Class) ((ParameterizedType) child.getGenericType()).getActualTypeArguments()[0])); + } else if (childType.getAnnotation(XmlEnum.class) != null) { Reflect.on(result).set(childName, Reflect.onClass(childType).call("fromValue", childElement.getTextContent().trim())); }