fix for virtual join table with no java join table
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinTable.java
index e6b664e..89990b8 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinTable.java
@@ -39,6 +39,9 @@
 	}
 	
 	public String getName() {
+		if (this.javaJoinTable == null) {
+			return null;
+		}
 		if (this.isOrmMetadataComplete()) {
 			return this.javaJoinTable.getDefaultName();
 		}
@@ -50,6 +53,9 @@
 	}
 
 	public String getCatalog() {
+		if (this.javaJoinTable == null) {
+			return null;
+		}
 		if (this.isOrmMetadataComplete()) {
 			return this.javaJoinTable.getDefaultCatalog();
 		}
@@ -61,6 +67,9 @@
 	}
 
 	public String getSchema() {
+		if (this.javaJoinTable == null) {
+			return null;
+		}
 		if (this.isOrmMetadataComplete()) {
 			return this.javaJoinTable.getDefaultSchema();
 		}
@@ -74,6 +83,9 @@
 	//VirtualXmlJoinTable is rebuilt every time, so just rebuilding the joinColumns list as well
 	public EList<XmlJoinColumn> getJoinColumns() {
 		EList<XmlJoinColumn> joinColumns = new EObjectContainmentEList<XmlJoinColumn>(XmlJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS);
+		if (this.javaJoinTable == null) {
+			return joinColumns;
+		}
 		for (JavaJoinColumn joinColumn : CollectionTools.iterable(this.javaJoinTable.specifiedJoinColumns())) {
 			XmlJoinColumn xmlJoinColumn = new VirtualXmlJoinColumn(joinColumn, isOrmMetadataComplete());
 			joinColumns.add(xmlJoinColumn);
@@ -84,6 +96,9 @@
 	//VirtualXmlJoinTable is rebuilt every time, so just rebuilding the joinColumns list as well
 	public EList<XmlJoinColumn> getInverseJoinColumns() {
 		EList<XmlJoinColumn> inverseJoinColumns = new EObjectContainmentEList<XmlJoinColumn>(XmlJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS);
+		if (this.javaJoinTable == null) {
+			return inverseJoinColumns;
+		}
 		for (JavaJoinColumn joinColumn : CollectionTools.iterable(this.javaJoinTable.specifiedInverseJoinColumns())) {
 			XmlJoinColumn xmlJoinColumn = new VirtualXmlJoinColumn(joinColumn, isOrmMetadataComplete());
 			inverseJoinColumns.add(xmlJoinColumn);
@@ -94,7 +109,9 @@
 
 	public EList<XmlUniqueConstraint> getUniqueConstraints() {
 		EList<XmlUniqueConstraint> xmlUniqueConstraints = new EObjectContainmentEList<XmlUniqueConstraint>(XmlUniqueConstraint.class, this, OrmPackage.XML_JOIN_TABLE__UNIQUE_CONSTRAINTS);
-
+		if (this.javaJoinTable == null) {
+			return xmlUniqueConstraints;
+		}
 		for (JavaUniqueConstraint uniqueConstraint : CollectionTools.iterable(this.javaJoinTable.uniqueConstraints())) {
 			XmlUniqueConstraint xmlUniqueConstraint = new VirtualXmlUniqueConstraint(uniqueConstraint, isOrmMetadataComplete());
 			xmlUniqueConstraints.add(xmlUniqueConstraint);
@@ -116,6 +133,6 @@
 	}
 
 	public boolean isSpecified() {
-		return this.javaJoinTable.isResourceSpecified();
+		return this.javaJoinTable != null;
 	}
 }