fixed some potential NPE's for partially built context models
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaElementQName.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaElementQName.java
index e47d9b7..d3edefc 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaElementQName.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaElementQName.java
@@ -46,6 +46,7 @@
return getPersistentAttribute().getClassMapping();
}
+ @Override
protected JaxbPackage getJaxbPackage() {
return getJaxbClassMapping().getJaxbType().getJaxbPackage();
}
@@ -81,13 +82,14 @@
@Override
public String getDefaultNamespace() {
- return (getJaxbPackage().getElementFormDefault() == XmlNsForm.QUALIFIED) ?
+ JaxbPackage jaxbPackage = this.getJaxbPackage();
+ return (jaxbPackage != null && jaxbPackage.getElementFormDefault() == XmlNsForm.QUALIFIED) ?
getJaxbClassMapping().getQName().getNamespace() : "";
}
@Override
public Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema schema = getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
return (schema == null) ? EmptyIterable.<String>instance() : schema.getNamespaceProposals(filter);
}
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaQName.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaQName.java
index e345acf..19f81d8 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaQName.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaQName.java
@@ -16,11 +16,13 @@
import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
+import org.eclipse.jpt.jaxb.core.context.JaxbPackage;
import org.eclipse.jpt.jaxb.core.context.JaxbQName;
import org.eclipse.jpt.jaxb.core.context.java.JavaContextNode;
import org.eclipse.jpt.jaxb.core.internal.validation.DefaultValidationMessages;
import org.eclipse.jpt.jaxb.core.internal.validation.JaxbValidationMessages;
import org.eclipse.jpt.jaxb.core.resource.java.QNameAnnotation;
+import org.eclipse.jpt.jaxb.core.xsd.XsdSchema;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -57,6 +59,14 @@
}
+ protected abstract JaxbPackage getJaxbPackage();
+
+ protected final XsdSchema getXsdSchema() {
+ JaxbPackage jaxbPackage = this.getJaxbPackage();
+ return (jaxbPackage == null) ? null : jaxbPackage.getXsdSchema();
+ }
+
+
// ***** namespace *****
public String getNamespace() {
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaTypeMapping.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaTypeMapping.java
index bf9139e..37e03e2 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaTypeMapping.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/AbstractJavaTypeMapping.java
@@ -309,7 +309,10 @@
public Iterable<String> getJavaCompletionProposals(
int pos, Filter<String> filter, CompilationUnit astRoot) {
- getJaxbProject().getSchemaLibrary().refreshSchema(getJaxbPackage().getNamespace());
+ JaxbPackage jaxbPackage = getJaxbPackage();
+ if (jaxbPackage != null) {
+ getJaxbProject().getSchemaLibrary().refreshSchema(jaxbPackage.getNamespace());
+ }
Iterable<String> result = super.getJavaCompletionProposals(pos, filter, astRoot);
if (! CollectionTools.isEmpty(result)) {
@@ -357,7 +360,8 @@
// ***** misc *****
public XsdTypeDefinition getXsdTypeDefinition() {
- XsdSchema xsdSchema = getJaxbPackage().getXsdSchema();
+ JaxbPackage jaxbPackage = getJaxbPackage();
+ XsdSchema xsdSchema = (jaxbPackage == null) ? null : jaxbPackage.getXsdSchema();
if (xsdSchema == null) {
return null;
}
@@ -393,8 +397,14 @@
@Override
+ protected JaxbPackage getJaxbPackage() {
+ return AbstractJavaTypeMapping.this.getJaxbType().getJaxbPackage();
+ }
+
+ @Override
public String getDefaultNamespace() {
- return AbstractJavaTypeMapping.this.getJaxbType().getJaxbPackage().getNamespace();
+ JaxbPackage jaxbPackage = AbstractJavaTypeMapping.this.getJaxbType().getJaxbPackage();
+ return (jaxbPackage == null) ? null : jaxbPackage.getNamespace();
}
@Override
@@ -404,7 +414,7 @@
@Override
protected Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema schema = AbstractJavaTypeMapping.this.getJaxbType().getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema == null) {
return EmptyIterable.instance();
}
@@ -413,7 +423,7 @@
@Override
protected Iterable<String> getNameProposals(Filter<String> filter) {
- XsdSchema schema = AbstractJavaTypeMapping.this.getJaxbType().getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema == null) {
return EmptyIterable.instance();
}
@@ -431,8 +441,8 @@
// if name is absent (""), namespace cannot be different from package namespace
if ("".equals(getName())
&& ! StringTools.stringsAreEqual(
- getNamespace(),
- AbstractJavaTypeMapping.this.getJaxbType().getJaxbPackage().getNamespace())) {
+ getNamespace(),
+ getDefaultNamespace())) {
messages.add(
DefaultValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
@@ -449,8 +459,7 @@
String namespace = getNamespace();
if (! StringTools.stringIsEmpty(name)) {
- XsdSchema schema = AbstractJavaTypeMapping.this.getJaxbType().getJaxbPackage().getXsdSchema();
-
+ XsdSchema schema = this.getXsdSchema();
if (schema != null) {
XsdTypeDefinition schemaType = schema.getTypeDefinition(namespace, name);
if (schemaType == null) {
@@ -470,7 +479,4 @@
return AbstractJavaTypeMapping.this.getXmlTypeAnnotation();
}
}
-
-
-
}
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaElementFactoryMethod.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaElementFactoryMethod.java
index 148869d..5e69ee5 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaElementFactoryMethod.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaElementFactoryMethod.java
@@ -239,9 +239,9 @@
}
- protected XsdSchema getXsdSchema() {
- JaxbPackage jaxbPackage = GenericJavaElementFactoryMethod.this.getRegistry().getJaxbClass().getJaxbPackage();
- return (jaxbPackage == null) ? null : jaxbPackage.getXsdSchema();
+ @Override
+ protected JaxbPackage getJaxbPackage() {
+ return GenericJavaElementFactoryMethod.this.getRegistry().getJaxbClass().getJaxbPackage();
}
@Override
@@ -251,7 +251,7 @@
@Override
public String getDefaultNamespace() {
- JaxbPackage jaxbPackage = GenericJavaElementFactoryMethod.this.getRegistry().getJaxbClass().getJaxbPackage();
+ JaxbPackage jaxbPackage = this.getJaxbPackage();
return (jaxbPackage == null) ? null : jaxbPackage.getNamespace();
}
@@ -269,7 +269,7 @@
}
}
- XsdSchema xsdSchema = getXsdSchema();
+ XsdSchema xsdSchema = this.getXsdSchema();
if (xsdSchema != null) {
return xsdSchema.getElementNameProposals(getNamespace(), filter);
}
@@ -279,7 +279,7 @@
@Override
public Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema xsdSchema = getXsdSchema();
+ XsdSchema xsdSchema = this.getXsdSchema();
return (xsdSchema == null) ? EmptyIterable.<String>instance() : xsdSchema.getNamespaceProposals(filter);
}
@@ -306,7 +306,7 @@
}
}
else {
- XsdSchema xsdSchema = getXsdSchema();
+ XsdSchema xsdSchema = this.getXsdSchema();
if (xsdSchema != null) {
if (xsdSchema.getElementDeclaration(getNamespace(), getName()) == null) {
messages.add(getUnresolveSchemaComponentMessage(astRoot));
@@ -335,9 +335,9 @@
}
- protected XsdSchema getXsdSchema() {
- JaxbPackage jaxbPackage = GenericJavaElementFactoryMethod.this.getRegistry().getJaxbClass().getJaxbPackage();
- return (jaxbPackage == null) ? null : jaxbPackage.getXsdSchema();
+ @Override
+ protected JaxbPackage getJaxbPackage() {
+ return GenericJavaElementFactoryMethod.this.getRegistry().getJaxbClass().getJaxbPackage();
}
@Override
@@ -347,7 +347,7 @@
@Override
public String getDefaultNamespace() {
- JaxbPackage jaxbPackage = GenericJavaElementFactoryMethod.this.getRegistry().getJaxbClass().getJaxbPackage();
+ JaxbPackage jaxbPackage = this.getJaxbPackage();
return (jaxbPackage == null) ? null : jaxbPackage.getNamespace();
}
@@ -363,7 +363,7 @@
}
}
- XsdSchema xsdSchema = getXsdSchema();
+ XsdSchema xsdSchema = this.getXsdSchema();
if (xsdSchema != null) {
return xsdSchema.getElementNameProposals(getNamespace(), filter);
}
@@ -373,7 +373,7 @@
@Override
public Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema xsdSchema = getXsdSchema();
+ XsdSchema xsdSchema = this.getXsdSchema();
return (xsdSchema == null) ? EmptyIterable.<String>instance() : xsdSchema.getNamespaceProposals(filter);
}
@@ -408,7 +408,7 @@
@Override
protected void validateReference(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
- XsdSchema xsdSchema = getXsdSchema();
+ XsdSchema xsdSchema = this.getXsdSchema();
if (xsdSchema != null) {
if (xsdSchema.getElementDeclaration(getNamespace(), getName()) == null) {
messages.add(getUnresolveSchemaComponentMessage(astRoot));
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlAttributeMapping.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlAttributeMapping.java
index 9d39c55..1dee3ea 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlAttributeMapping.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlAttributeMapping.java
@@ -17,6 +17,7 @@
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementIterable;
import org.eclipse.jpt.jaxb.core.MappingKeys;
+import org.eclipse.jpt.jaxb.core.context.JaxbPackage;
import org.eclipse.jpt.jaxb.core.context.JaxbPersistentAttribute;
import org.eclipse.jpt.jaxb.core.context.JaxbQName;
import org.eclipse.jpt.jaxb.core.context.XmlAttributeMapping;
@@ -171,6 +172,11 @@
@Override
+ protected JaxbPackage getJaxbPackage() {
+ return GenericJavaXmlAttributeMapping.this.getJaxbPackage();
+ }
+
+ @Override
public String getReferencedComponentTypeDescription() {
return JptJaxbCoreMessages.XML_ATTRIBUTE_DESC;
}
@@ -188,13 +194,14 @@
@Override
public String getDefaultNamespace() {
- return (GenericJavaXmlAttributeMapping.this.getJaxbPackage().getAttributeFormDefault() == XmlNsForm.QUALIFIED) ?
+ JaxbPackage jaxbPackage = this.getJaxbPackage();
+ return (jaxbPackage != null && jaxbPackage.getAttributeFormDefault() == XmlNsForm.QUALIFIED) ?
GenericJavaXmlAttributeMapping.this.getJaxbClassMapping().getQName().getNamespace() : "";
}
@Override
public Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema schema = GenericJavaXmlAttributeMapping.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
return (schema == null) ? EmptyIterable.<String>instance() : schema.getNamespaceProposals(filter);
}
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlElementWrapper.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlElementWrapper.java
index f0df046..d90b0f6 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlElementWrapper.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlElementWrapper.java
@@ -223,13 +223,19 @@
@Override
+ protected JaxbPackage getJaxbPackage() {
+ return GenericJavaXmlElementWrapper.this.getJaxbPackage();
+ }
+
+ @Override
public String getDefaultName() {
return "";
}
@Override
public String getDefaultNamespace() {
- return (GenericJavaXmlElementWrapper.this.getJaxbPackage().getElementFormDefault() == XmlNsForm.QUALIFIED) ?
+ JaxbPackage jaxbPackage = this.getJaxbPackage();
+ return (jaxbPackage != null && jaxbPackage.getElementFormDefault() == XmlNsForm.QUALIFIED) ?
GenericJavaXmlElementWrapper.this.getJaxbClassMapping().getQName().getNamespace() : "";
}
@@ -241,7 +247,7 @@
@Override
public Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema schema = GenericJavaXmlElementWrapper.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
return (schema == null) ? EmptyIterable.<String>instance() : schema.getNamespaceProposals(filter);
}
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlRootElement.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlRootElement.java
index 891c9ea..5147639 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlRootElement.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlRootElement.java
@@ -139,8 +139,14 @@
@Override
+ protected JaxbPackage getJaxbPackage() {
+ return GenericJavaXmlRootElement.this.getJaxbPackage();
+ }
+
+ @Override
public String getDefaultNamespace() {
- return GenericJavaXmlRootElement.this.getJaxbPackage().getNamespace();
+ JaxbPackage jaxbPackage = this.getJaxbPackage();
+ return (jaxbPackage == null) ? null : jaxbPackage.getNamespace();
}
@Override
@@ -150,7 +156,7 @@
@Override
protected Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema schema = GenericJavaXmlRootElement.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema == null) {
return EmptyIterable.instance();
}
@@ -159,7 +165,7 @@
@Override
protected Iterable<String> getNameProposals(Filter<String> filter) {
- XsdSchema schema = GenericJavaXmlRootElement.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema == null) {
return EmptyIterable.instance();
}
@@ -175,7 +181,7 @@
protected void validateReference(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
String name = getName();
String namespace = getNamespace();
- XsdSchema schema = GenericJavaXmlRootElement.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema != null) {
// element must resolve
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchemaType.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchemaType.java
index f32cc4d..652da46 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchemaType.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchemaType.java
@@ -180,6 +180,11 @@
@Override
+ protected JaxbPackage getJaxbPackage() {
+ return GenericJavaXmlSchemaType.this.getJaxbPackage();
+ }
+
+ @Override
protected String getReferencedComponentTypeDescription() {
return JptJaxbCoreMessages.XML_TYPE_DESC;
}
@@ -196,7 +201,7 @@
@Override
protected Iterable<String> getNamespaceProposals(Filter<String> filter) {
- XsdSchema schema = GenericJavaXmlSchemaType.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema == null) {
return EmptyIterable.instance();
}
@@ -205,7 +210,7 @@
@Override
protected Iterable<String> getNameProposals(Filter<String> filter) {
- XsdSchema schema = GenericJavaXmlSchemaType.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema == null) {
return EmptyIterable.instance();
}
@@ -218,7 +223,7 @@
String namespace = getNamespace();
if (! StringTools.stringIsEmpty(name)) {
- XsdSchema schema = GenericJavaXmlSchemaType.this.getJaxbPackage().getXsdSchema();
+ XsdSchema schema = this.getXsdSchema();
if (schema != null) {
XsdTypeDefinition schemaType = schema.getTypeDefinition(namespace, name);