diff options
author | pfullbright | 2010-02-20 00:19:15 +0000 |
---|---|---|
committer | pfullbright | 2010-02-20 00:19:15 +0000 |
commit | fd43ffb00d089974bf131042a221730e0b817e57 (patch) | |
tree | b2a71da08425804fbfda38d9532cfc797e282433 /jpa | |
parent | ea75d108a8119377afb393f74d37eac304cf9acf (diff) | |
download | webtools.dali-fd43ffb00d089974bf131042a221730e0b817e57.tar.gz webtools.dali-fd43ffb00d089974bf131042a221730e0b817e57.tar.xz webtools.dali-fd43ffb00d089974bf131042a221730e0b817e57.zip |
bug 234191 - ** New I-Build needed **
Diffstat (limited to 'jpa')
13 files changed, 199 insertions, 105 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java index 16408d4cc9..c02ebbfb13 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java @@ -15,6 +15,9 @@ import org.eclipse.jpt.core.context.java.JavaAttributeMappingDefinition; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaPersistentType; import org.eclipse.jpt.core.context.java.JavaTypeMappingDefinition; +import org.eclipse.jpt.core.context.java.NullDefaultJavaAttributeMappingDefinition; +import org.eclipse.jpt.core.context.java.NullJavaTypeMappingDefinition; +import org.eclipse.jpt.core.context.java.NullSpecifiedJavaAttributeMappingDefinition; import org.eclipse.jpt.core.utility.jdt.AnnotationEditFormatter; import org.eclipse.jpt.db.ConnectionProfileFactory; @@ -137,6 +140,12 @@ public interface JpaPlatform // ********** resource types and definitions ********** /** + * Return true if the resource type is supported. The result of this call is consistent with + * the result of {@link #getResourceDefinition(JpaResourceType)} + */ + boolean supportsResourceType(JpaResourceType resourceType); + + /** * Return a {@link ResourceDefinition} to describe the context model for a file of the given * resource type. * Throw an {@link IllegalArgumentException} if the resource type is not supported by the platform. diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaResourceModelListener.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaResourceModelListener.java index 272db14505..60d0925afb 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaResourceModelListener.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaResourceModelListener.java @@ -25,4 +25,7 @@ public interface JpaResourceModelListener { void resourceModelChanged(JpaResourceModel jpaResourceModel); + void resourceModelReverted(JpaResourceModel jpaResourceModel); + + void resourceModelUnloaded(JpaResourceModel jpaResourceModel); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java index e78ca34667..d0d407fc53 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java @@ -10,7 +10,6 @@ package org.eclipse.jpt.core.context.persistence; import org.eclipse.jpt.core.context.XmlFile; -import org.eclipse.jpt.core.resource.xml.JpaXmlResource; /** * JPA <code>persistence.xml</code> file. @@ -41,9 +40,8 @@ public interface PersistenceXml // ********** updating ********** /** - * Update the context persistence XML model to match the resource model. + * Update the context persistence XML model to match its resource file. * @see org.eclipse.jpt.core.JpaProject#update() */ - void update(JpaXmlResource resource); - + void update(); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaProject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaProject.java index d3512b9d65..9f4d2cea50 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaProject.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaProject.java @@ -78,6 +78,7 @@ import org.eclipse.jpt.utility.internal.iterables.LiveCloneIterable; import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; import org.eclipse.jpt.utility.internal.iterables.TransformationIterable; import org.eclipse.jst.j2ee.model.internal.validation.ValidationCancelledException; +import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -1321,6 +1322,17 @@ public abstract class AbstractJpaProject // new Exception(msg).printStackTrace(System.out); AbstractJpaProject.this.synchronizeContextModel(jpaResourceModel); } + + public void resourceModelReverted(JpaResourceModel jpaResourceModel) { + IFile file = WorkbenchResourceHelper.getFile((JpaXmlResource)jpaResourceModel); + AbstractJpaProject.this.removeJpaFile(file); + AbstractJpaProject.this.addJpaFile(file); + } + + public void resourceModelUnloaded(JpaResourceModel jpaResourceModel) { + IFile file = WorkbenchResourceHelper.getFile((JpaXmlResource)jpaResourceModel); + AbstractJpaProject.this.removeJpaFile(file); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java index 713874cbba..195fb19286 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java @@ -207,6 +207,15 @@ public class GenericJpaPlatform // ********** resource types and definitions ********** + public boolean supportsResourceType(JpaResourceType resourceType) { + for (ResourceDefinition resourceDefinition : CollectionTools.iterable(resourceDefinitions())) { + if (resourceDefinition.getResourceType().equals(resourceType)) { + return true; + } + } + return false; + } + public ResourceDefinition getResourceDefinition(JpaResourceType resourceType) { for (ResourceDefinition resourceDefinition : CollectionTools.iterable(resourceDefinitions())) { if (resourceDefinition.getResourceType().equals(resourceType)) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java index bfb7724dbf..d0e119bb83 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java @@ -10,7 +10,6 @@ package org.eclipse.jpt.core.internal.context.persistence; import java.util.List; - import org.eclipse.core.resources.IFile; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.context.MappingFile; @@ -142,18 +141,24 @@ public abstract class AbstractMappingFileRef protected void updateMappingFile() { JpaXmlResource newXmlResource = this.resolveMappingFileXmlResource(); - if (newXmlResource == null) { + + if (newXmlResource == null + || ! getJpaPlatform().supportsResourceType(newXmlResource.getResourceType())) { + if (this.mappingFile != null) { this.mappingFile.dispose(); this.setMappingFile(null); } - } else { + } + else { if (this.mappingFile == null) { this.setMappingFile(this.buildMappingFile(newXmlResource)); - } else { + } + else { if (this.mappingFile.getXmlResource() == newXmlResource) { this.mappingFile.update(); - } else { + } + else { // if the resource's content type has changed, we completely rebuild the mapping file this.mappingFile.dispose(); this.setMappingFile(this.buildMappingFile(newXmlResource)); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/GenericRootContextNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/GenericRootContextNode.java index ec63528cc0..9509448d2f 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/GenericRootContextNode.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/GenericRootContextNode.java @@ -10,7 +10,6 @@ package org.eclipse.jpt.core.internal.jpa1.context; import java.util.List; - import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; @@ -73,13 +72,20 @@ public class GenericRootContextNode public void update(IProgressMonitor monitor) { JpaXmlResource resource = this.resolvePersistenceXmlResource(); - if (resource == null) { - this.setPersistenceXml(null); - } else { + if (resource == null + || ! getJpaPlatform().supportsResourceType(resource.getResourceType())) { + + if (this.persistenceXml != null) { + this.persistenceXml.dispose(); + setPersistenceXml(null); + } + } + else { if (this.persistenceXml == null) { - this.setPersistenceXml(this.buildPersistenceXml(resource)); - } else { - this.persistenceXml.update(resource); + setPersistenceXml(buildPersistenceXml(resource)); + } + else { + this.persistenceXml.update(); } } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmXml.java index 67d6a132b4..37bf01165f 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmXml.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmXml.java @@ -10,7 +10,6 @@ package org.eclipse.jpt.core.internal.jpa1.context.orm; import java.util.List; - import org.eclipse.core.resources.IResource; import org.eclipse.jpt.core.JpaFile; import org.eclipse.jpt.core.JpaResourceType; @@ -43,7 +42,7 @@ public class GenericOrmXml * ref will dispose its current mapping file and build a new one. */ protected final JpaXmlResource xmlResource; - + /** * The resouce type will only change if the XML file's version changes * (since, if the content type changes, we get garbage-collected). @@ -114,6 +113,10 @@ public class GenericOrmXml if (this.entityMappings != null) { this.entityMappings.dispose(); } + JpaFile jpaFile = getJpaFile(); + if (jpaFile != null) { + jpaFile.removeRootStructureNode(this.xmlResource); + } } // ********** MappingFile implementation ********** @@ -163,31 +166,38 @@ public class GenericOrmXml XmlEntityMappings oldXmlEntityMappings = (this.entityMappings == null) ? null : this.entityMappings.getXmlEntityMappings(); XmlEntityMappings newXmlEntityMappings = (XmlEntityMappings) this.xmlResource.getRootObject(); JpaResourceType newResourceType = this.xmlResource.getResourceType(); - + // If the old and new xml entity mappings are different instances, // we scrap the old context entity mappings and rebuild. This can // happen when the resource model drastically changes, such as // a cvs checkout or an edit reversion. - if ((oldXmlEntityMappings != newXmlEntityMappings) || - (newXmlEntityMappings == null) || - this.valuesAreDifferent(this.resourceType, newResourceType) - ) { + if ((oldXmlEntityMappings != newXmlEntityMappings) + || (newXmlEntityMappings == null) + || this.valuesAreDifferent(this.resourceType, newResourceType)) { + if (this.entityMappings != null) { - this.getJpaFile().removeRootStructureNode(this.xmlResource); + getJpaFile().removeRootStructureNode(this.xmlResource); this.entityMappings.dispose(); - this.setEntityMappings(null); + setEntityMappings(null); } } - + + this.resourceType = newResourceType; + if (newXmlEntityMappings != null) { if (this.entityMappings != null) { this.entityMappings.update(); - } else { - this.setEntityMappings(this.buildEntityMappings(newXmlEntityMappings)); } - this.getJpaFile().addRootStructureNode(this.xmlResource, this.entityMappings); + else { + setEntityMappings(buildEntityMappings(newXmlEntityMappings)); + } + + JpaFile jpaFile = getJpaFile(); + if (jpaFile == null) { + System.out.print("Jpa file is null"); + } + jpaFile.addRootStructureNode(this.xmlResource, this.entityMappings); } - this.resourceType = newResourceType; } protected JpaFile getJpaFile() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistenceXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistenceXml.java index 24c5e4230d..83f7e0d9c5 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistenceXml.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistenceXml.java @@ -10,8 +10,8 @@ package org.eclipse.jpt.core.internal.jpa1.context.persistence; import java.util.List; - import org.eclipse.core.resources.IResource; +import org.eclipse.jpt.core.JpaFile; import org.eclipse.jpt.core.JpaResourceType; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.JptCorePlugin; @@ -35,122 +35,133 @@ public class GenericPersistenceXml extends AbstractPersistenceXmlContextNode implements PersistenceXml2_0 { - protected JpaXmlResource persistenceXmlResource; // never null - - protected Persistence persistence; - + /** + * If the XML resource's content type changes a new instance of this object will be built + */ + protected JpaXmlResource xmlResource; // never null + + /** + * The resouce type will only change if the XML file's version changes + * (since, if the content type changes, we get garbage-collected). + */ protected JpaResourceType resourceType; - - + + protected Persistence persistence; + + public GenericPersistenceXml(JpaRootContextNode parent, JpaXmlResource resource) { super(parent); if ( ! resource.getContentType().isKindOf(JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE)) { throw new IllegalArgumentException("Resource " + resource + " must have persistence xml content type"); //$NON-NLS-1$ //$NON-NLS-2$ } - this.persistenceXmlResource = resource; + this.xmlResource = resource; if (resource.getRootObject() != null) { this.persistence = this.buildPersistence((XmlPersistence) resource.getRootObject()); this.resourceType = resource.getResourceType(); } } - - + + // ********** XmlFile implementation ********** - + public JpaXmlResource getXmlResource() { - return this.persistenceXmlResource; + return this.xmlResource; } - - + + // ********** AbstractJpaNode overrides ********** - + @Override public IResource getResource() { - return this.persistenceXmlResource.getFile(); + return this.xmlResource.getFile(); } - - + + // ********** AbstractJpaContextNode overrides ********** - + @Override public JpaResourceType getResourceType() { - return this.persistenceXmlResource.getResourceType(); + return this.xmlResource.getResourceType(); } - - + + // ********** persistence ********** - + public Persistence getPersistence() { return this.persistence; } - + protected void setPersistence(Persistence persistence) { Persistence old = this.persistence; this.persistence = persistence; this.firePropertyChanged(PERSISTENCE_PROPERTY, old, persistence); } - + protected Persistence buildPersistence(XmlPersistence xmlPersistence) { return this.getContextNodeFactory().buildPersistence(this, xmlPersistence); } - - + + // ********** metamodel ********** - + public void initializeMetamodel() { if (this.persistence != null) { ((Persistence2_0) this.persistence).initializeMetamodel(); } } - + public void synchronizeMetamodel() { if (this.persistence != null) { ((Persistence2_0) this.persistence).synchronizeMetamodel(); } } - + public void disposeMetamodel() { if (this.persistence != null) { ((Persistence2_0) this.persistence).disposeMetamodel(); } } - - + + // ********** updating ********** - - //TODO I haven't yet figured out if we do not need the resource object passed in now. - //I don't think we will even build AbstractPersistenceXml if the resource object is null - //I'm pretty sure this won't change now, but need to investigate - KFB - public void update(JpaXmlResource resource) { + + public void update() { XmlPersistence oldXmlPersistence = (this.persistence == null) ? null : this.persistence.getXmlPersistence(); - XmlPersistence newXmlPersistence = (XmlPersistence) resource.getRootObject(); - JpaResourceType newResourceType = resource.getResourceType(); - - this.persistenceXmlResource = resource; - + XmlPersistence newXmlPersistence = (XmlPersistence) this.xmlResource.getRootObject(); + JpaResourceType newResourceType = this.xmlResource.getResourceType(); + // if the old and new xml persistences are different instances, // we scrap the old and rebuild. this can happen when the resource // model drastically changes, such as a cvs checkout or an edit reversion - if ((oldXmlPersistence != newXmlPersistence) || (newXmlPersistence == null) || this.valuesAreDifferent(this.resourceType, newResourceType)) { + if ((oldXmlPersistence != newXmlPersistence) + || (newXmlPersistence == null) + || this.valuesAreDifferent(this.resourceType, newResourceType)) { + if (this.persistence != null) { - this.getJpaFile(this.persistenceXmlResource.getFile()).removeRootStructureNode(this.persistenceXmlResource); + getJpaFile().removeRootStructureNode(this.xmlResource); this.persistence.dispose(); - this.setPersistence(null); + setPersistence(null); } } - + + this.resourceType = newResourceType; + if (newXmlPersistence != null) { if (this.persistence != null) { this.persistence.update(newXmlPersistence); } else { - this.setPersistence(this.buildPersistence(newXmlPersistence)); + setPersistence(buildPersistence(newXmlPersistence)); + } + + JpaFile jpaFile = getJpaFile(); + if (jpaFile == null) { + System.out.print("Jpa file is null"); } - this.getJpaFile(this.persistenceXmlResource.getFile()).addRootStructureNode(this.persistenceXmlResource, this.persistence); + jpaFile.addRootStructureNode(this.xmlResource, this.persistence); } - this.resourceType = newResourceType; } - + @Override public void postUpdate() { super.postUpdate(); @@ -158,43 +169,53 @@ public class GenericPersistenceXml this.persistence.postUpdate(); } } - - + + // ********** JpaStructureNode implementation ********** - + public String getId() { // isn't actually displayed, so needs no details page return null; } - + public JpaStructureNode getStructureNode(int textOffset) { if (this.persistence.containsOffset(textOffset)) { return this.persistence.getStructureNode(textOffset); } return this; } - + // never actually selected public TextRange getSelectionTextRange() { return TextRange.Empty.instance(); } - + public void dispose() { - this.persistence.dispose(); + if (this.persistence != null) { + this.persistence.dispose(); + } + JpaFile jpaFile = getJpaFile(); + if (jpaFile != null) { + jpaFile.removeRootStructureNode(this.xmlResource); + } } - - + + protected JpaFile getJpaFile() { + return this.getJpaFile(this.xmlResource.getFile()); + } + + // ********** validation ********** - + // never actually selected public TextRange getValidationTextRange() { return TextRange.Empty.instance(); } - + @Override public void validate(List<IMessage> messages, IReporter reporter) { super.validate(messages, reporter); - + if (this.persistence == null) { messages.add( DefaultJpaValidationMessages.buildMessage( @@ -205,8 +226,7 @@ public class GenericPersistenceXml ); return; } - + this.persistence.validate(messages, reporter); } - } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java index 2db76c6a46..2a77551db5 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java @@ -103,10 +103,20 @@ public class JpaXmlResource */ @Override public void eNotify(Notification notification) { - if ( ! notification.isTouch() && this.isLoaded() && (this.resourceSet != null)) { + //Unload events can happen before the resource set is removed - should always react to unload events + if (notification.getEventType() == Notification.SET && notification.getFeatureID(null) == Resource.RESOURCE__IS_LOADED) { + super.eNotify(notification); + if (isReverting()) { + resourceModelReverted(); + } + else { + resourceModelUnloaded(); + } + } + else if ( ! notification.isTouch() && this.isLoaded() && (this.resourceSet != null)) { super.eNotify(notification); this.resourceModelChanged(); - } + } } /** @@ -248,6 +258,19 @@ public class JpaXmlResource } } + protected void resourceModelReverted() { + for (JpaResourceModelListener listener : this.resourceModelListenerList.getListeners()) { + listener.resourceModelReverted(this); + } + } + + protected void resourceModelUnloaded() { + for (JpaResourceModelListener listener : this.resourceModelListenerList.getListeners()) { + listener.resourceModelUnloaded(this); + } + } + + // ********** cast things back to what they are in EMF ********** @SuppressWarnings("unchecked") diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java index 51d2b55626..e7f7823356 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java @@ -27,8 +27,8 @@ import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jpt.core.JpaFile; -import org.eclipse.jpt.core.JpaProjectManager; import org.eclipse.jpt.core.JpaProject; +import org.eclipse.jpt.core.JpaProjectManager; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.JptCorePlugin; import org.eclipse.jpt.ui.internal.JptUiMessages; @@ -83,10 +83,10 @@ public class JpaStructurePage private final CollectionChangeListener jpaFilesListener; + public JpaStructurePage( - JpaStructureView jpaStructureView, - JpaFile jpaFile, - JpaStructureProvider structureProvider) { + JpaStructureView jpaStructureView, JpaFile jpaFile, JpaStructureProvider structureProvider) { + this.jpaStructureView = jpaStructureView; this.jpaFile = jpaFile; this.jpaProject = jpaFile.getJpaProject(); @@ -99,6 +99,7 @@ public class JpaStructurePage this.jpaFilesListener = buildJpaFilesListener(); } + private CollectionChangeListener buildProjectsListener() { return new CollectionChangeListener(){ @@ -182,7 +183,7 @@ public class JpaStructurePage @SuppressWarnings("unchecked") void jpaFilesAdded(CollectionAddEvent event) { for (JpaFile item : (Iterable<JpaFile>) event.getItems()) { - if (item.getFile() == JpaStructurePage.this.file) { + if (item.getFile() != null && item.getFile().equals(JpaStructurePage.this.file)) { setJpaFile(item); break; } diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmXmlTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmXmlTests.java index 8c5e5f2340..613f4b14c0 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmXmlTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmXmlTests.java @@ -64,7 +64,6 @@ public class OrmXmlTests extends ContextModelTestCase assertNotNull(getOrmXml().getRoot()); ormResource.getContents().clear(); - - assertNull(getOrmXml().getRoot()); + assertNull(getOrmXml()); } } diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/persistence/PersistenceXmlTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/persistence/PersistenceXmlTests.java index c04c9f9853..2d41aec959 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/persistence/PersistenceXmlTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/persistence/PersistenceXmlTests.java @@ -50,7 +50,6 @@ public class PersistenceXmlTests extends ContextModelTestCase assertNotNull(getPersistenceXml().getPersistence()); prm.getContents().clear(); - - assertNull(getPersistenceXml().getPersistence()); + assertNull(getPersistenceXml()); } } |