[241507] No notification from JEEModelProvider after calling JEE5ModelProvider.modify
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/Ejb3ModelProviderTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/Ejb3ModelProviderTest.java
new file mode 100644
index 0000000..b5d99bc
--- /dev/null
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/Ejb3ModelProviderTest.java
@@ -0,0 +1,78 @@
+/***********************************************************************
+ * Copyright (c) 2008 by SAP AG, Walldorf.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * SAP AG - initial API and implementation
+ ***********************************************************************/
+package org.eclipse.jst.jee.model.ejb.tests;
+
+import java.util.Collection;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.j2ee.dependency.tests.util.ProjectUtil;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.j2ee.model.IModelProviderEvent;
+import org.eclipse.jst.javaee.core.Description;
+import org.eclipse.jst.javaee.core.JavaeeFactory;
+import org.eclipse.jst.javaee.ejb.EJBJar;
+import org.eclipse.jst.jee.model.internal.Ejb3ModelProvider;
+import org.eclipse.jst.jee.model.tests.SynchronousModelChangedListener;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * @author Kiril Mitov k.mitov@sap.com
+ *
+ */
+public class Ejb3ModelProviderTest extends TestCase {
+
+ private static final String EAR_PROJECT_NAME = "earProject";
+ private static final String EJB_PROJECT_NAME = "ejbProject";
+
+ public static TestSuite suite() throws Exception {
+ TestSuite suite = new TestSuite(Ejb3ModelProviderTest.class);
+ setUpProject();
+ return suite;
+ }
+
+ // @BeforeClass
+ public static void setUpProject() throws Exception {
+ }
+
+ /**
+ * A notification should be send after a modification on the model.
+ * @throws Exception
+ */
+ public void testModifyOnlyModelWithOperation() throws Exception {
+ ProjectUtil.createEARProject(EAR_PROJECT_NAME);
+ IProject project = ProjectUtil.createEJBProject(EJB_PROJECT_NAME, EAR_PROJECT_NAME,
+ J2EEVersionConstants.EJB_3_0_ID, true);
+ IFacetedProject facetedProject = ProjectFacetsManager.create(project);
+ SynchronousModelChangedListener listener = new SynchronousModelChangedListener(1);
+ final Ejb3ModelProvider modelProvider = new Ejb3ModelProvider(facetedProject.getProject());
+ assertNotNull(modelProvider.getModelObject());
+ modelProvider.addListener(listener);
+ modelProvider.modify(new Runnable() {
+ public void run() {
+ EJBJar modelObject = (EJBJar) modelProvider.getModelObject();
+ changeModelObject(modelObject);
+ }
+
+ private void changeModelObject(EJBJar modelObject) {
+ Description description = JavaeeFactory.eINSTANCE.createDescription();
+ modelObject.getDescriptions().add(description);
+ }
+ }, null);
+ assertTrue(listener.waitForEvents());
+ Collection<IModelProviderEvent> events = listener.getReceivedEvents();
+ assertEquals(1, events.size());
+ modelProvider.removeListener(listener);
+ }
+}
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationReaderTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationReaderTest.java
index 566eb09..be8d1bd 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationReaderTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationReaderTest.java
@@ -7,7 +7,7 @@
* it only in accordance with the terms of the license agreement you entered
* into with SAP.
*
- * $Id: EjbAnnotationReaderTest.java,v 1.4 2008/03/28 19:57:50 canderson Exp $
+ * $Id: EjbAnnotationReaderTest.java,v 1.5 2008/10/07 18:01:48 kmitov Exp $
***********************************************************************/
package org.eclipse.jst.jee.model.ejb.tests;
@@ -29,7 +29,9 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jst.j2ee.dependency.tests.util.ProjectUtil;
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.j2ee.model.IModelProvider;
import org.eclipse.jst.javaee.ejb.ActivationConfigProperty;
+import org.eclipse.jst.javaee.ejb.EJBJar;
import org.eclipse.jst.javaee.ejb.EnterpriseBeans;
import org.eclipse.jst.javaee.ejb.InitMethodType;
import org.eclipse.jst.javaee.ejb.MessageDrivenBean;
@@ -41,6 +43,7 @@
import org.eclipse.jst.jee.model.tests.AbstractTest;
import org.eclipse.jst.jee.model.tests.SynchronousModelChangedListener;
import org.eclipse.jst.jee.model.tests.TestUtils;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
/**
* @author Kiril Mitov k.mitov@sap.com
@@ -58,11 +61,11 @@
}
public static void setUpProject() throws Exception {
- IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(EjbAnnotationReaderTest.class.getSimpleName());
- if (!project.exists())
- {
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(
+ EjbAnnotationReaderTest.class.getSimpleName());
+ if (!project.exists()) {
project = ProjectUtil.createEJBProject(EjbAnnotationReaderTest.class.getSimpleName(), null,
- J2EEVersionConstants.EJB_3_0_ID, true);
+ J2EEVersionConstants.EJB_3_0_ID, true);
createProjectContent(project);
}
}
@@ -131,6 +134,36 @@
}
}
+ public void testLoadForEmptyProject() throws Exception {
+ String projectName = EjbAnnotationReaderTest.class.getSimpleName() + "testLoadForEmptyProject";
+ IProject emptyProject = ProjectUtil.createEJBProject(projectName, null, J2EEVersionConstants.EJB_3_0_ID, true);
+ IModelProvider provider = new EJBAnnotationReader(ProjectFacetsManager.create(emptyProject), null);
+ EJBJar ejbJar = (EJBJar) provider.getModelObject();
+ assertNull(ejbJar.getEnterpriseBeans());
+ AbstractTest.deleteProject(projectName);
+ }
+
+ public void testNullEnterpriseBeanAfterDelete() throws Exception {
+ final String projectName = EjbAnnotationReaderTest.class.getSimpleName() + "testNullEnterpriseBeanAfterDelete";
+ IProject oneBeanProject = ProjectUtil
+ .createEJBProject(projectName, null, J2EEVersionConstants.EJB_3_0_ID, true);
+ facetedProject = ProjectFacetsManager.create(oneBeanProject);
+ fixture = new EJBAnnotationReader(facetedProject, clientProject);
+
+ IFile beanFile = oneBeanProject.getFile("ejbModule/testNullEnterpriseBeanAfterDelete.java");
+ assertFalse(beanFile.exists());
+ final String content = "import javax.ejb.Stateless;"
+ + "@Stateless public class testNullEnterpriseBeanAfterDelete implements SessionBeanLocal {}";
+ // add the file
+ saveFileAndUpdate(beanFile, content);
+ SessionBean result = TestUtils.getSessionBean(getEJBJar(), "testNullEnterpriseBeanAfterDelete");
+ assertNotNull(result);
+ // delete the file
+ deleteFileAndUpdate(beanFile);
+ assertNull(getEJBJar().getEnterpriseBeans());
+ AbstractTest.deleteProject(projectName);
+ }
+
// @Test
public void testGetSessionBeans() {
EnterpriseBeans beans = getEJBJar().getEnterpriseBeans();
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/GenerateDDTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/GenerateDDTest.java
index 0ec91cc..c117ef6 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/GenerateDDTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/GenerateDDTest.java
@@ -21,7 +21,6 @@
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.model.IModelProvider;
import org.eclipse.jst.j2ee.model.ModelProviderManager;
-import org.eclipse.jst.jee.model.tests.AbstractTest;
import org.eclipse.jst.jee.model.tests.SynchronousModelChangedListener;
import org.eclipse.jst.jee.project.facet.ICreateDeploymentFilesDataModelProperties;
import org.eclipse.jst.jee.project.facet.IEJBCreateDeploymentFilesDataModelProperties;
@@ -78,8 +77,6 @@
dataModel.setProperty(ICreateDeploymentFilesDataModelProperties.TARGET_PROJECT, project);
dataModel.getDefaultOperation().execute(new NullProgressMonitor(), null);
- AbstractTest.saveFile(file, EJB_JAR_CONTENT);
-
listener.waitForEvents();
fixture.removeListener(listener);
assertEquals(new Integer(1), new Integer(listener.getReceivedEvents().size()));
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AllAnnotationModelTests.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AllAnnotationModelTests.java
index 65bdf48..4c77f98 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AllAnnotationModelTests.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AllAnnotationModelTests.java
@@ -19,9 +19,11 @@
import org.eclipse.jst.jee.model.ejb.tests.EJB3MergedModelProviderFactoryTest;
import org.eclipse.jst.jee.model.ejb.tests.EJB3MergedModelProviderTest;
import org.eclipse.jst.jee.model.ejb.tests.EJBAnnotationReaderWithClientTest;
+import org.eclipse.jst.jee.model.ejb.tests.Ejb3ModelProviderTest;
import org.eclipse.jst.jee.model.ejb.tests.EjbAnnotationFactoryTest;
import org.eclipse.jst.jee.model.ejb.tests.EjbAnnotationReaderTest;
import org.eclipse.jst.jee.model.ejb.tests.EjbReferenceTest;
+import org.eclipse.jst.jee.model.ejb.tests.GenerateDDTest;
import org.eclipse.jst.jee.model.ejb.tests.LifecycleAnnotationsTest;
import org.eclipse.jst.jee.model.ejb.tests.NotifyCloseProjectTest;
import org.eclipse.jst.jee.model.ejb.tests.ResourceReferenceTest;
@@ -64,9 +66,10 @@
suite.addTest(DeleteWebProjectTest.suite());
suite.addTest(NotifyCloseProjectTest.suite());
suite.addTest(Web25MergedModelProviderTest.suite());
-// suite.addTest(GenerateDDTest.suite());
+ suite.addTest(GenerateDDTest.suite());
suite.addTest(EJB3MergedModelProviderFactoryTest.suite());
suite.addTest(EJB3MergedModelProviderTest.suite());
+ suite.addTest(Ejb3ModelProviderTest.suite());
return suite;
} catch (Exception e) {
HeadlessTestsPlugin.getDefault().getLog().log(
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/TestUtils.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/TestUtils.java
index 1b3036e..428c6ba 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/TestUtils.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/TestUtils.java
@@ -119,6 +119,8 @@
}
public static SessionBean getSessionBean(EJBJar jar, String name) {
+ if (jar.getEnterpriseBeans() == null)
+ return null;
for (Iterator iter = jar.getEnterpriseBeans().getSessionBeans().iterator(); iter.hasNext();) {
SessionBean bean = (SessionBean) iter.next();
if (name.equals(bean.getEjbName())) {
@@ -129,6 +131,8 @@
}
public static MessageDrivenBean getMessageDrivenBean(EJBJar jar, String name) {
+ if (jar.getEnterpriseBeans() == null)
+ return null;
for (Iterator iter = jar.getEnterpriseBeans().getMessageDrivenBeans().iterator(); iter.hasNext();) {
MessageDrivenBean bean = (MessageDrivenBean) iter.next();
if (name.equals(bean.getEjbName())) {