### Eclipse Workspace Patch 1.0 #P org.eclipse.jpt.core Index: src/org/eclipse/jpt/core/internal/context/persistence/GenericPersistence.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/GenericPersistence.java,v retrieving revision 1.12 diff -u -r1.12 GenericPersistence.java --- src/org/eclipse/jpt/core/internal/context/persistence/GenericPersistence.java 16 Apr 2008 21:37:22 -0000 1.12 +++ src/org/eclipse/jpt/core/internal/context/persistence/GenericPersistence.java 11 Jun 2008 22:09:31 -0000 @@ -86,6 +86,7 @@ throw new IllegalArgumentException(new Integer(index).toString()); } PersistenceUnit oldPersistenceUnit = persistenceUnit; + persistenceUnit.dispose(); persistenceUnit = null; xmlPersistence.getPersistenceUnits().remove(index); fireItemRemoved(PERSISTENCE_UNITS_LIST, index, oldPersistenceUnit); @@ -97,6 +98,7 @@ } protected void removePersistenceUnit_(PersistenceUnit oldPersistenceUnit) { + persistenceUnit.dispose(); persistenceUnit = null; fireItemRemoved(PERSISTENCE_UNITS_LIST, 0, oldPersistenceUnit); } #P org.eclipse.jpt.core.tests Index: src/org/eclipse/jpt/core/tests/internal/context/JpaFileTests.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/JpaFileTests.java,v retrieving revision 1.3 diff -u -r1.3 JpaFileTests.java --- src/org/eclipse/jpt/core/tests/internal/context/JpaFileTests.java 15 May 2008 05:51:10 -0000 1.3 +++ src/org/eclipse/jpt/core/tests/internal/context/JpaFileTests.java 11 Jun 2008 22:09:32 -0000 @@ -290,6 +290,36 @@ assertEquals(persistenceUnit().impliedClassRefs().next(), javaJpaFile.rootStructureNodes().next().getParent()); } + public void testJavaRootStructureNodesPersistenceUnitRemovedFromResourceModel() throws Exception { + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + + ICompilationUnit cu = createTestEntity(); + JpaFile javaJpaFile = JptCorePlugin.getJpaFile((IFile) cu.getResource()); + + JavaPersistentType javaPersistentType = ormPersistentType.getJavaPersistentType(); + assertEquals(javaPersistentType, javaJpaFile.rootStructureNodes().next()); + + persistenceResource().getPersistence().getPersistenceUnits().remove(0); + + assertFalse(javaJpaFile.rootStructureNodes().hasNext()); + assertEquals(0, javaJpaFile.rootStructureNodesSize()); + } + + public void testJavaRootStructureNodesPersistenceUnitRemoved() throws Exception { + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + + ICompilationUnit cu = createTestEntity(); + JpaFile javaJpaFile = JptCorePlugin.getJpaFile((IFile) cu.getResource()); + + JavaPersistentType javaPersistentType = ormPersistentType.getJavaPersistentType(); + assertEquals(javaPersistentType, javaJpaFile.rootStructureNodes().next()); + + jpaProject().getRootContext().getPersistenceXml().getPersistence().removePersistenceUnit(0); + + assertFalse(javaJpaFile.rootStructureNodes().hasNext()); + assertEquals(0, javaJpaFile.rootStructureNodesSize()); + } + public void testJavaRootStructureNodesOrmPersistentTypeRemoved() throws Exception { OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);