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