diff options
author | pfullbright | 2011-08-25 21:35:25 +0000 |
---|---|---|
committer | pfullbright | 2011-08-25 21:35:25 +0000 |
commit | 3e96439d2b7743b7610c7e2e84fb258eda15b150 (patch) | |
tree | 1b720d421bd2bedd4844afbbc390ee76f1693477 | |
parent | f77f063f864057babbbd6380c591dcc2457552c4 (diff) | |
download | webtools.dali-3e96439d2b7743b7610c7e2e84fb258eda15b150.tar.gz webtools.dali-3e96439d2b7743b7610c7e2e84fb258eda15b150.tar.xz webtools.dali-3e96439d2b7743b7610c7e2e84fb258eda15b150.zip |
fixed xsd type retrieval for anonymous/ root element types
-rw-r--r-- | jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaPersistentType.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaPersistentType.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaPersistentType.java index 47dfec3fa6..915d42c9e2 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaPersistentType.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaPersistentType.java @@ -32,6 +32,7 @@ import org.eclipse.jpt.jaxb.core.internal.validation.JaxbValidationMessages; import org.eclipse.jpt.jaxb.core.resource.java.QNameAnnotation; import org.eclipse.jpt.jaxb.core.resource.java.XmlRootElementAnnotation; import org.eclipse.jpt.jaxb.core.resource.java.XmlTypeAnnotation; +import org.eclipse.jpt.jaxb.core.xsd.XsdElementDeclaration; import org.eclipse.jpt.jaxb.core.xsd.XsdSchema; import org.eclipse.jpt.jaxb.core.xsd.XsdTypeDefinition; import org.eclipse.wst.validation.internal.provisional.core.IMessage; @@ -303,7 +304,22 @@ public abstract class AbstractJavaPersistentType public XsdTypeDefinition getXsdTypeDefinition() { XsdSchema xsdSchema = getJaxbPackage().getXsdSchema(); - return (xsdSchema == null) ? null : xsdSchema.getTypeDefinition(this.qName.getNamespace(), this.qName.getName()); + if (xsdSchema == null) { + return null; + } + + if (! StringTools.stringIsEmpty(this.qName.getName())) { + return xsdSchema.getTypeDefinition(this.qName.getNamespace(), this.qName.getName()); + } + + if (this.rootElement != null) { + XsdElementDeclaration xsdElement = xsdSchema.getElementDeclaration(this.rootElement.getQName().getNamespace(), this.rootElement.getQName().getName()); + if (xsdElement != null) { + return xsdElement.getType(); + } + } + + return null; } @Override |