[305848, 305849] junit tests for mergers and annotation readers.
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationFactoryTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationFactoryTest.java index 52d1dc4..4474d02 100644 --- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationFactoryTest.java +++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/ejb/tests/EjbAnnotationFactoryTest.java
@@ -20,6 +20,7 @@ import org.eclipse.jst.javaee.ejb.MessageDrivenBean; import org.eclipse.jst.javaee.ejb.RemoveMethodType; import org.eclipse.jst.javaee.ejb.SessionBean; +import org.eclipse.jst.javaee.ejb.SessionType; import org.eclipse.jst.javaee.ejb.TransactionType; import org.eclipse.jst.jee.model.internal.EjbAnnotationFactory; import org.eclipse.jst.jee.model.internal.common.Result; @@ -137,6 +138,17 @@ assertNotNull(sessionBean); assertNull(sessionBean.getTimeoutMethod()); } + + // @Test + public void testSingleton() throws Exception { + final String beanContent = "package com.sap;" + + "@Singleton public class testSingleton implements SessionBeanLocal{}"; + IType type = createCompilationUnit("testSingleton", beanContent).findPrimaryType(); + Result result = fixture.createJavaeeObject(type); + SessionBean sessionBean = (SessionBean) result.getMainObject(); + assertNotNull(sessionBean); + assertTrue(sessionBean.getSessionType() == SessionType.SINGLETON_LITERAL); + } // @Test public void testTransactionManagementBean() throws Exception {
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/mergers/tests/MergersTestSuite.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/mergers/tests/MergersTestSuite.java index 760910e..5073ef3 100644 --- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/mergers/tests/MergersTestSuite.java +++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/mergers/tests/MergersTestSuite.java
@@ -29,6 +29,7 @@ suite.addTestSuite(AssemblyDescriptorMergerTest.class); suite.addTestSuite(JndiRefsTest.class); suite.addTestSuite(WebAppMergerTest.class); + suite.addTestSuite(WebApp3MergerTest.class); return suite; } }
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/mergers/tests/WebApp3MergerTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/mergers/tests/WebApp3MergerTest.java new file mode 100644 index 0000000..a7c5ba2 --- /dev/null +++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/mergers/tests/WebApp3MergerTest.java
@@ -0,0 +1,1201 @@ +/*********************************************************************** + * 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.mergers.tests; + +import java.util.List; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.eclipse.jst.javaee.core.JavaeeFactory; +import org.eclipse.jst.javaee.core.ParamValue; +import org.eclipse.jst.javaee.core.RunAs; +import org.eclipse.jst.javaee.core.SecurityRole; +import org.eclipse.jst.javaee.core.UrlPatternType; +import org.eclipse.jst.javaee.web.AuthConstraint; +import org.eclipse.jst.javaee.web.Filter; +import org.eclipse.jst.javaee.web.FilterMapping; +import org.eclipse.jst.javaee.web.SecurityConstraint; +import org.eclipse.jst.javaee.web.Servlet; +import org.eclipse.jst.javaee.web.ServletMapping; +import org.eclipse.jst.javaee.web.TransportGuaranteeType; +import org.eclipse.jst.javaee.web.UserDataConstraint; +import org.eclipse.jst.javaee.web.WebApp; +import org.eclipse.jst.javaee.web.WebFactory; +import org.eclipse.jst.jee.model.internal.mergers.ModelException; +import org.eclipse.jst.jee.model.internal.mergers.WebApp3Merger; + +/** + * Tester class for WebAPp artifact. + * + * Base suffix means that the base object has some info and + * toMerge is empty: nothing should be merged + * + * ToMerge suffix means that the base is empty object and + * toMerge has some info: all from merge should be present in base. + * + * Same suffix means that the information in merge and base is one + * and the same: no merge should occurred and additional checks for + * doubling of the elements are present. + * + * Complex suffix means variety of information is present in base + * and to merge: consistent information combined by base and toMerge + * should be available at the end. + * + * ComplexOverlapped suffix means variety of information is present + * in base and to merge: consistent information combined by base and toMerge + * should be available at the end. There are artifacts with one and the same + * name and different values: values should be merged into base. + * + * + * @author Dimitar Giormov + * + */ +public class WebApp3MergerTest extends TestCase{ + + /** + * Tests the merger with Base security role only. + * No merge is necessary + * + * @throws ModelException + */ + //@Test + public void testSingleSecurityRoleCaseBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + SecurityRole role = JavaeeFactory.eINSTANCE.createSecurityRole(); + role.setRoleName("test1"); + + descriptorBase.getSecurityRoles().add(role); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(descriptorBase.getSecurityRoles()); + Assert.assertTrue(descriptorBase.getSecurityRoles().size() == 1); + Assert.assertTrue(descriptorToMerge.getSecurityRoles().size() == 0); + Assert.assertTrue(((SecurityRole)descriptorBase.getSecurityRoles().get(0)).getRoleName().equals("test1")); + } + + /** + * Tests the merger with toMerge security role only. + * The role should be copied in base. + * + * @throws ModelException + */ + //@Test + public void testSingleSecurityRoleCaseToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + SecurityRole role = JavaeeFactory.eINSTANCE.createSecurityRole(); + role.setRoleName("test1"); + + descriptorToMerge.getSecurityRoles().add(role); + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(descriptorBase.getSecurityRoles()); + Assert.assertEquals(1, descriptorBase.getSecurityRoles().size()); + Assert.assertEquals(1, descriptorToMerge.getSecurityRoles().size()); + Assert.assertTrue(((SecurityRole)descriptorBase.getSecurityRoles().get(0)).getRoleName().equals("test1")); + } + + /** + * Tests the merger with one and the same security role. + * The result should be non merged 1 security role. + * + * @throws ModelException + */ + //@Test + public void testSingleSecurityRoleCaseSameRole() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + SecurityRole role = JavaeeFactory.eINSTANCE.createSecurityRole(); + role.setRoleName("test1"); + descriptorBase.getSecurityRoles().add(role); + descriptorToMerge.getSecurityRoles().add(role); + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(descriptorBase.getSecurityRoles()); + Assert.assertTrue(descriptorBase.getSecurityRoles().size() == 1); + Assert.assertTrue(descriptorToMerge.getSecurityRoles().size() == 1); + Assert.assertTrue(((SecurityRole)descriptorBase.getSecurityRoles().get(0)).getRoleName().equals("test1")); + } + + /** + * Tests the merger with variety of security roles. + * + * @throws ModelException + */ + //@Test + public void testSingleSecurityRoleCaseComplex() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + SecurityRole role0 = JavaeeFactory.eINSTANCE.createSecurityRole(); + SecurityRole role1 = JavaeeFactory.eINSTANCE.createSecurityRole(); + SecurityRole role2 = JavaeeFactory.eINSTANCE.createSecurityRole(); + SecurityRole role3 = JavaeeFactory.eINSTANCE.createSecurityRole(); + SecurityRole role4 = JavaeeFactory.eINSTANCE.createSecurityRole(); + SecurityRole role5 = JavaeeFactory.eINSTANCE.createSecurityRole(); + role0.setRoleName("test1"); + role1.setRoleName("test2"); + role2.setRoleName("test3"); + role3.setRoleName("test4"); + role4.setRoleName("test5"); + role5.setRoleName("test6"); + + + + descriptorBase.getSecurityRoles().add(role1); + descriptorBase.getSecurityRoles().add(role3); + descriptorBase.getSecurityRoles().add(role4); + descriptorBase.getSecurityRoles().add(role5); + + + descriptorToMerge.getSecurityRoles().add(role0); + descriptorToMerge.getSecurityRoles().add(role1); + descriptorToMerge.getSecurityRoles().add(role2); + + + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(descriptorBase.getSecurityRoles()); + Assert.assertTrue(descriptorBase.getSecurityRoles().size() == 6); + Assert.assertTrue(descriptorToMerge.getSecurityRoles().size() == 3); + Assert.assertTrue(containsSecRole(descriptorBase.getSecurityRoles(), role0.getRoleName())); + Assert.assertTrue(containsSecRole(descriptorBase.getSecurityRoles(), role1.getRoleName())); + Assert.assertTrue(containsSecRole(descriptorBase.getSecurityRoles(), role2.getRoleName())); + Assert.assertTrue(containsSecRole(descriptorBase.getSecurityRoles(), role3.getRoleName())); + Assert.assertTrue(containsSecRole(descriptorBase.getSecurityRoles(), role4.getRoleName())); + Assert.assertTrue(containsSecRole(descriptorBase.getSecurityRoles(), role5.getRoleName())); + } + + private boolean containsSecRole(List list, String roleName) { + + + for (Object object : list) { + SecurityRole role = (SecurityRole) object; + if(roleName == null){ + if(roleName == role.getRoleName()){ + return true; + } + } else if(roleName.equals(role.getRoleName())){ + return true; + } + } + return false; + } + + + /** + * Tests the merger with Base security role only. + * No merge is necessary + * + * @throws ModelException + */ + //@Test + public void testSingleRunAsCaseBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + RunAs role = JavaeeFactory.eINSTANCE.createRunAs(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + servletBase.setServletName("servName"); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + servletMerge.setServletName("servName"); + role.setRoleName("test1"); + servletBase.setRunAs(role); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(servletBase.getRunAs()); + Assert.assertTrue(((RunAs)servletBase.getRunAs()).getRoleName().equals("test1")); + } + + /** + * Tests the merger with toMerge security role only. + * The role should be copied in base. + * + * @throws ModelException + */ + //@Test + public void testSingleRunAsCaseToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + RunAs role = JavaeeFactory.eINSTANCE.createRunAs(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + servletBase.setServletName("servName"); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + servletMerge.setServletName("servName"); + role.setRoleName("test1"); + servletMerge.setRunAs(role); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(servletBase.getRunAs()); + Assert.assertTrue(((RunAs)servletBase.getRunAs()).getRoleName().equals("test1")); + Assert.assertEquals(1, descriptorBase.getServlets().size()); + } + + + /** + * Tests the merger with null named servlet in toMerge array, the merger should ignore such entries. + * + * @throws ModelException + */ + //@Test + public void testSingleNullServletToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + + descriptorToMerge.getServlets().add(servletBase); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(0, descriptorBase.getServlets().size()); + } + + /** + * Tests the merger with null named servlet in Base, as this is extremely unlikely + * the merger should not stop merging because of such error. + * + * @throws ModelException + */ + //@Test + public void testSingleNullNamedServletInBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + servletMerge.setServletName("servName"); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(2, descriptorBase.getServlets().size()); + } + + /** + * Tests the merger with one and the same security role. + * The result should be non merged 1 security role. + * + * @throws ModelException + */ + //@Test + public void testSingleRunAsCaseSameRole() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + RunAs role = JavaeeFactory.eINSTANCE.createRunAs(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + servletBase.setServletName("servName"); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + servletMerge.setServletName("servName"); + role.setRoleName("test1"); + servletBase.setRunAs(role); + servletMerge.setRunAs(role); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(servletBase.getRunAs()); + Assert.assertTrue(((RunAs)servletBase.getRunAs()).getRoleName().equals("test1")); + } + + + + /** + * Tests the merger with Base security constraints only. + * No merge is necessary + * + * @throws ModelException + */ +// @Test + @SuppressWarnings("unchecked") + public void testSingleSecurityConstraintCaseBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + SecurityConstraint sc = WebFactory.eINSTANCE.createSecurityConstraint(); + AuthConstraint createAuthConstraint = WebFactory.eINSTANCE.createAuthConstraint(); + createAuthConstraint.getRoleNames().add("test"); + sc.setAuthConstraint(createAuthConstraint); + UserDataConstraint userDataConstraint = WebFactory.eINSTANCE.createUserDataConstraint(); + userDataConstraint.setTransportGuarantee(TransportGuaranteeType.CONFIDENTIAL_LITERAL); + sc.setUserDataConstraint(userDataConstraint); + + descriptorBase.getSecurityConstraints().add(sc); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertNotNull(descriptorBase.getSecurityConstraints()); + Assert.assertTrue(descriptorBase.getSecurityConstraints().size() == 1); + Assert.assertTrue(descriptorToMerge.getSecurityConstraints().size() == 0); + Assert.assertTrue(((SecurityConstraint)descriptorBase.getSecurityConstraints().get(0)).getAuthConstraint().getRoleNames().get(0).equals("test")); + } + + /** + * Tests the merger with toMerge security constraints only. + * The role should be copied in base. + * + * @throws ModelException + */ + //@Test + public void testSingleSecurityConstraintCaseToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + SecurityConstraint sc = WebFactory.eINSTANCE.createSecurityConstraint(); + AuthConstraint createAuthConstraint = WebFactory.eINSTANCE.createAuthConstraint(); + createAuthConstraint.getRoleNames().add("test"); + sc.setAuthConstraint(createAuthConstraint); + UserDataConstraint userDataConstraint = WebFactory.eINSTANCE.createUserDataConstraint(); + userDataConstraint.setTransportGuarantee(TransportGuaranteeType.CONFIDENTIAL_LITERAL); + sc.setUserDataConstraint(userDataConstraint); + + descriptorBase.getSecurityConstraints().add(sc); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + WebApp3Merger result = new WebApp3Merger(descriptorToMerge, descriptorBase, 0); + result.process(); + Assert.assertNotNull(descriptorToMerge.getSecurityConstraints()); + Assert.assertTrue(descriptorToMerge.getSecurityConstraints().size() == 1); + Assert.assertTrue(((SecurityConstraint)descriptorToMerge.getSecurityConstraints().get(0)).getAuthConstraint().getRoleNames().get(0).equals("test")); + } + + + //@Test + public void testSingleServletMappingInBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + ServletMapping servletMappingBase = WebFactory.eINSTANCE.createServletMapping(); + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + String value = "/1"; + urlPatternType.setValue(value); + + servletMappingBase.setServletName(sname); + servletMappingBase.getUrlPatterns().add(urlPatternType); + + descriptorBase.getServletMappings().add(servletMappingBase); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getServletMappings().size()); + ServletMapping mapping = descriptorBase.getServletMappings().get(0); + + Assert.assertEquals(sname, mapping.getServletName()); + + Assert.assertEquals(1, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + + //@Test + public void testSingleServletMappingInToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + ServletMapping servletMappingBase = WebFactory.eINSTANCE.createServletMapping(); + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + String value = "/1"; + urlPatternType.setValue(value); + + servletMappingBase.setServletName(sname); + servletMappingBase.getUrlPatterns().add(urlPatternType); + + descriptorToMerge.getServletMappings().add(servletMappingBase); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getServletMappings().size()); + ServletMapping mapping = descriptorBase.getServletMappings().get(0); + + Assert.assertEquals(sname, mapping.getServletName()); + + Assert.assertEquals(1, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + //@Test + public void testSingleServletMappingSame() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + ServletMapping servletMappingBase = WebFactory.eINSTANCE.createServletMapping(); + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + String value = "/1"; + urlPatternType.setValue(value); + + servletMappingBase.setServletName(sname); + servletMappingBase.getUrlPatterns().add(urlPatternType); + + descriptorToMerge.getServletMappings().add(servletMappingBase); + descriptorBase.getServletMappings().add(servletMappingBase); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getServletMappings().size()); + ServletMapping mapping = descriptorBase.getServletMappings().get(0); + + Assert.assertEquals(sname, mapping.getServletName()); + + Assert.assertEquals(1, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + //@Test + public void testSingleServletMappingAdditive() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + String value = "/1"; + String value2 = "/2"; + + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType.setValue(value); + + UrlPatternType urlPatternType2 = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType2.setValue(value2); + + ServletMapping servletMappingBase = WebFactory.eINSTANCE.createServletMapping(); + ServletMapping servletMappingMerge = WebFactory.eINSTANCE.createServletMapping(); + + servletMappingBase.setServletName(sname); + servletMappingBase.getUrlPatterns().add(urlPatternType); + + servletMappingMerge.setServletName(sname); + servletMappingMerge.getUrlPatterns().add(urlPatternType2); + + descriptorBase.getServletMappings().add(servletMappingBase); + descriptorToMerge.getServletMappings().add(servletMappingMerge); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getServletMappings().size()); + ServletMapping mapping = descriptorBase.getServletMappings().get(0); + + Assert.assertEquals(sname, mapping.getServletName()); + Assert.assertEquals(2, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + //@Test + public void testSingleServletMappingDifferentServletName() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + String sname1 = "servName1"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname1); + + String value = "/1"; + String value2 = "/2"; + + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType.setValue(value); + + UrlPatternType urlPatternType2 = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType2.setValue(value2); + + ServletMapping servletMappingBase = WebFactory.eINSTANCE.createServletMapping(); + ServletMapping servletMappingMerge = WebFactory.eINSTANCE.createServletMapping(); + + servletMappingBase.setServletName(sname); + servletMappingBase.getUrlPatterns().add(urlPatternType); + + servletMappingMerge.setServletName(sname1); + servletMappingMerge.getUrlPatterns().add(urlPatternType2); + + descriptorBase.getServletMappings().add(servletMappingBase); + descriptorToMerge.getServletMappings().add(servletMappingMerge); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(2, descriptorBase.getServletMappings().size()); + } + + + + + + + + + //@Test + public void testSingleFilterMappingInBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + FilterMapping FilterMappingBase = WebFactory.eINSTANCE.createFilterMapping(); + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + String value = "/1"; + urlPatternType.setValue(value); + + FilterMappingBase.setFilterName(sname); + FilterMappingBase.getUrlPatterns().add(urlPatternType); + + descriptorBase.getFilterMappings().add(FilterMappingBase); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getFilterMappings().size()); + FilterMapping mapping = descriptorBase.getFilterMappings().get(0); + + Assert.assertEquals(sname, mapping.getFilterName()); + + Assert.assertEquals(1, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + + //@Test + public void testSingleFilterMappingInToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + FilterMapping FilterMappingBase = WebFactory.eINSTANCE.createFilterMapping(); + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + String value = "/1"; + urlPatternType.setValue(value); + + FilterMappingBase.setFilterName(sname); + FilterMappingBase.getUrlPatterns().add(urlPatternType); + + descriptorToMerge.getFilterMappings().add(FilterMappingBase); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getFilterMappings().size()); + FilterMapping mapping = descriptorBase.getFilterMappings().get(0); + + Assert.assertEquals(sname, mapping.getFilterName()); + + Assert.assertEquals(1, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + //@Test + public void testSingleFilterMappingSame() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + FilterMapping FilterMappingBase = WebFactory.eINSTANCE.createFilterMapping(); + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + String value = "/1"; + urlPatternType.setValue(value); + + FilterMappingBase.setFilterName(sname); + FilterMappingBase.getUrlPatterns().add(urlPatternType); + + descriptorToMerge.getFilterMappings().add(FilterMappingBase); + descriptorBase.getFilterMappings().add(FilterMappingBase); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getFilterMappings().size()); + FilterMapping mapping = descriptorBase.getFilterMappings().get(0); + + Assert.assertEquals(sname, mapping.getFilterName()); + + Assert.assertEquals(1, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + //@Test + public void testSingleFilterMappingAdditive() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + String value = "/1"; + String value2 = "/2"; + + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType.setValue(value); + + UrlPatternType urlPatternType2 = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType2.setValue(value2); + + FilterMapping filterMappingBase = WebFactory.eINSTANCE.createFilterMapping(); + FilterMapping filterMappingMerge = WebFactory.eINSTANCE.createFilterMapping(); + + filterMappingBase.setFilterName(sname); + filterMappingBase.getUrlPatterns().add(urlPatternType); + + filterMappingMerge.setFilterName(sname); + filterMappingMerge.getUrlPatterns().add(urlPatternType2); + + descriptorBase.getFilterMappings().add(filterMappingBase); + descriptorToMerge.getFilterMappings().add(filterMappingMerge); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(1, descriptorBase.getFilterMappings().size()); + FilterMapping mapping = descriptorBase.getFilterMappings().get(0); + + Assert.assertEquals(sname, mapping.getFilterName()); + Assert.assertEquals(2, mapping.getUrlPatterns().size()); + Assert.assertEquals(value, mapping.getUrlPatterns().get(0).getValue()); + } + + //@Test + public void testSingleFilterMappingDifferentFilterName() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + String sname1 = "servName1"; + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname1); + + String value = "/1"; + String value2 = "/2"; + + UrlPatternType urlPatternType = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType.setValue(value); + + UrlPatternType urlPatternType2 = JavaeeFactory.eINSTANCE.createUrlPatternType(); + urlPatternType2.setValue(value2); + + FilterMapping FilterMappingBase = WebFactory.eINSTANCE.createFilterMapping(); + FilterMapping FilterMappingMerge = WebFactory.eINSTANCE.createFilterMapping(); + + FilterMappingBase.setFilterName(sname); + FilterMappingBase.getUrlPatterns().add(urlPatternType); + + FilterMappingMerge.setFilterName(sname1); + FilterMappingMerge.getUrlPatterns().add(urlPatternType2); + + descriptorBase.getFilterMappings().add(FilterMappingBase); + descriptorToMerge.getFilterMappings().add(FilterMappingMerge); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + Assert.assertEquals(2, descriptorBase.getFilterMappings().size()); + } + + + + + + + + + + + + + + + + + + + + //@Test + public void testSingleInitParamsInBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + String value = "/1"; + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + servletBase.getInitParams().add(initParamsType); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getServlets().size()); + Servlet rservlet = descriptorBase.getServlets().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value, rservlet.getInitParams().get(0).getParamValue()); + } + + + //@Test + public void testSingleInitParamsInToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + String value = "/1"; + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + servletMerge.getInitParams().add(initParamsType); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getServlets().size()); + Servlet rservlet = descriptorBase.getServlets().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value, rservlet.getInitParams().get(0).getParamValue()); + } + + //@Test + public void testSingleInitParamsSame() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + String value = "/1"; + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + servletBase.getInitParams().add(initParamsType); + servletMerge.getInitParams().add(initParamsType); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getServlets().size()); + Servlet rservlet = descriptorBase.getServlets().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value, rservlet.getInitParams().get(0).getParamValue()); + } + + //@Test + public void testSingleInitParamsAdditive() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + + String value = "/1"; + String value2 = "/2"; + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + ParamValue initParamsType2 = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType2.setParamName(sname); + initParamsType2.setParamValue(value2); + + servletBase.getInitParams().add(initParamsType); + servletMerge.getInitParams().add(initParamsType2); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getServlets().size()); + Servlet rservlet = descriptorBase.getServlets().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value2, rservlet.getInitParams().get(0).getParamValue()); + } + + //@Test + public void testSingleInitParamsDifferentServletName() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Servlet servletBase = WebFactory.eINSTANCE.createServlet(); + Servlet servletMerge = WebFactory.eINSTANCE.createServlet(); + + String sname = "servName"; + String sname2 = "servName2"; + + servletBase.setServletName(sname); + servletMerge.setServletName(sname); + + + String value = "/1"; + String value2 = "/2"; + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + ParamValue initParamsType2 = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType2.setParamName(sname2); + initParamsType2.setParamValue(value2); + + servletBase.getInitParams().add(initParamsType); + servletMerge.getInitParams().add(initParamsType2); + + descriptorBase.getServlets().add(servletBase); + descriptorToMerge.getServlets().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getServlets().size()); + Servlet rservlet = descriptorBase.getServlets().get(0); + + Assert.assertEquals(2, rservlet.getInitParams().size()); + } + + + + + + + + + //@Test + public void testSingleFilterInitParamsInBase() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + + String value = "/1"; + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + ParamValue initParamsType2 = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType2.setParamName(sname); + initParamsType2.setParamValue(value); + + servletBase.getInitParams().add(initParamsType); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getFilters().size()); + Filter rservlet = descriptorBase.getFilters().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value, rservlet.getInitParams().get(0).getParamValue()); + } + + + //@Test + public void testSingleFilterInitParamsInToMerge() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + + String value = "/1"; + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + ParamValue initParamsType2 = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType2.setParamName(sname); + initParamsType2.setParamValue(value); + + servletMerge.getInitParams().add(initParamsType2); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getFilters().size()); + Filter rservlet = descriptorBase.getFilters().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value, rservlet.getInitParams().get(0).getParamValue()); + } + + //@Test + public void testSingleFilterInitParamsSame() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + + String value = "/1"; + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + ParamValue initParamsType2 = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType2.setParamName(sname); + initParamsType2.setParamValue(value); + + servletBase.getInitParams().add(initParamsType); + servletMerge.getInitParams().add(initParamsType2); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getFilters().size()); + Filter rservlet = descriptorBase.getFilters().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value, rservlet.getInitParams().get(0).getParamValue()); + } + + //@Test + public void testSingleFilterInitParamsAdditive() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + + String value = "/1"; + String value2 = "/2"; + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + ParamValue initParamsType2 = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType2.setParamName(sname); + initParamsType2.setParamValue(value2); + + servletBase.getInitParams().add(initParamsType); + servletMerge.getInitParams().add(initParamsType2); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getFilters().size()); + Filter rservlet = descriptorBase.getFilters().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + Assert.assertEquals(sname, rservlet.getInitParams().get(0).getParamName()); + Assert.assertEquals(value2, rservlet.getInitParams().get(0).getParamValue()); + } + + //@Test + public void testSingleFilterInitParamDifferentFilterName() throws ModelException{ + WebApp descriptorBase = WebFactory.eINSTANCE.createWebApp(); + WebApp descriptorToMerge = WebFactory.eINSTANCE.createWebApp(); + Filter servletBase = WebFactory.eINSTANCE.createFilter(); + Filter servletMerge = WebFactory.eINSTANCE.createFilter(); + + String sname = "servName"; + + servletBase.setFilterName(sname); + servletMerge.setFilterName(sname); + + + String value = "/1"; + String value2 = "/2"; + + ParamValue initParamsType = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType.setParamName(sname); + initParamsType.setParamValue(value); + + ParamValue initParamsType2 = JavaeeFactory.eINSTANCE.createParamValue(); + initParamsType2.setParamName(sname); + initParamsType2.setParamValue(value2); + + servletBase.getInitParams().add(initParamsType); + servletMerge.getInitParams().add(initParamsType2); + + descriptorBase.getFilters().add(servletBase); + descriptorToMerge.getFilters().add(servletMerge); + + + WebApp3Merger result = new WebApp3Merger(descriptorBase, descriptorToMerge, 0); + result.process(); + + Assert.assertEquals(1, descriptorBase.getFilters().size()); + Filter rservlet = descriptorBase.getFilters().get(0); + + Assert.assertEquals(1, rservlet.getInitParams().size()); + } + +}
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AbstractTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AbstractTest.java index 8e8abe0..415925a 100644 --- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AbstractTest.java +++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/tests/AbstractTest.java
@@ -297,6 +297,10 @@ } public static IFacetedProject createWebProject(String projectName) throws Exception { + return createWebProject(projectName, IJ2EEFacetConstants.DYNAMIC_WEB_25); + } + + public static IFacetedProject createWebProject(String projectName, Object web_version) throws Exception { IDataModel dm = DataModelFactory.createDataModel(new WebFacetProjectCreationDataModelProvider()); dm.setProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME, projectName); //$NON-NLS-1$ FacetDataModelMap facetDataModelMap = (FacetDataModelMap) dm @@ -304,7 +308,8 @@ IDataModel javaFacetDataModel = facetDataModelMap.getFacetDataModel(J2EEProjectUtilities.JAVA); javaFacetDataModel.setProperty(IFacetDataModelProperties.FACET_VERSION, JavaFacetUtils.JAVA_50); IDataModel ejbFacetDataModel = facetDataModelMap.getFacetDataModel(IJ2EEFacetConstants.DYNAMIC_WEB); - ejbFacetDataModel.setProperty(IFacetDataModelProperties.FACET_VERSION, IJ2EEFacetConstants.DYNAMIC_WEB_25); + ejbFacetDataModel.setProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD, true); + ejbFacetDataModel.setProperty(IFacetDataModelProperties.FACET_VERSION, web_version); dm.getDefaultOperation().execute(null, null); IFacetedProject project = ProjectFacetsManager.create(ResourcesPlugin.getWorkspace().getRoot().getProject( projectName));
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 4c77f98..487f677 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
@@ -30,6 +30,7 @@ import org.eclipse.jst.jee.model.ejb.tests.SecurityRolesTest; import org.eclipse.jst.jee.model.web.tests.DeleteWebProjectTest; import org.eclipse.jst.jee.model.web.tests.Web25MergedModelProviderTest; +import org.eclipse.jst.jee.model.web.tests.Web3AnnotationReaderTest; import org.eclipse.jst.jee.model.web.tests.WebAnnotationReaderTest; import org.eclipse.wtp.j2ee.headless.tests.plugin.HeadlessTestsPlugin; @@ -63,6 +64,7 @@ suite.addTest(RegisterMergedModelProviderTest.suite()); suite.addTest(EjbAnnotationFactoryTest.suite()); suite.addTest(WebAnnotationReaderTest.suite()); + suite.addTest(Web3AnnotationReaderTest.suite()); suite.addTest(DeleteWebProjectTest.suite()); suite.addTest(NotifyCloseProjectTest.suite()); suite.addTest(Web25MergedModelProviderTest.suite());
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/web/tests/Web3AnnotationReaderTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/web/tests/Web3AnnotationReaderTest.java new file mode 100644 index 0000000..dfbb93a --- /dev/null +++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/jee/model/web/tests/Web3AnnotationReaderTest.java
@@ -0,0 +1,402 @@ +/*********************************************************************** + * 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.web.tests; + +import junit.framework.TestSuite; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetConstants; +import org.eclipse.jst.javaee.core.RunAs; +import org.eclipse.jst.javaee.core.SecurityRole; +import org.eclipse.jst.javaee.core.SecurityRoleRef; +import org.eclipse.jst.javaee.web.Servlet; +import org.eclipse.jst.javaee.web.WebApp; +import org.eclipse.jst.javaee.web.WebFactory; +import org.eclipse.jst.jee.model.internal.WebAnnotationReader; +import org.eclipse.jst.jee.model.tests.AbstractAnnotationModelTest; +import org.eclipse.jst.jee.model.tests.AbstractTest; +import org.eclipse.jst.jee.model.tests.TestUtils; +import org.eclipse.wst.common.project.facet.core.IFacetedProject; + +/** + * @author Kiril Mitov k.mitov@sap.com + * + */ +public class Web3AnnotationReaderTest extends AbstractAnnotationModelTest { + + private static final String TEST_URL_VALUE = "/testUrl"; + private static final String SERVLET_WITH_URL = "ServletWithUrl"; + private static final String SERVLET_NO_ARGUMENTS = "ServletNoArguments"; + private static final String SERVLET_ANNOTATED_NAME = "ServletNameChange"; + + private static String BEAN_WITH_NAME = "package com.sap;" + "import javax.ejb.Stateless;" + + "@Stateless(name=\"%s\") public class BeanWithName implements SessionBeanLocal {}"; + + public static TestSuite suite() throws Exception { + TestSuite suite = new TestSuite(Web3AnnotationReaderTest.class); + return suite; + } + + // @BeforeClass + public static void setUpProject() throws Exception { + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(Web3AnnotationReaderTest.class.getSimpleName()); + if (!project.exists()) + { + IFacetedProject facetedProject = AbstractTest.createWebProject(Web3AnnotationReaderTest.class.getSimpleName(), IJ2EEFacetConstants.DYNAMIC_WEB_30); + createProjectContent(facetedProject.getProject()); + } + } + + // @AfterClass + public static void tearDownAfterClass() throws InterruptedException { + AbstractTest.deleteProject(Web3AnnotationReaderTest.class.getSimpleName()); + } + + private static void createProjectContent(IProject project) throws Exception { + IJavaProject javaProject = JavaCore.create(project); + IFolder comFolder = javaProject.getProject().getFolder("src/com"); + comFolder.create(true, true, new NullProgressMonitor()); + IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(comFolder); + IPackageFragment fragment = root.createPackageFragment("sap", true, new NullProgressMonitor()); + createServlet3(fragment, SERVLET_NO_ARGUMENTS, null, null); + createServlet3(fragment, SERVLET_ANNOTATED_NAME, "test", null); + createServlet3(fragment, SERVLET_WITH_URL, null, TEST_URL_VALUE); + createServletWithSecurity(fragment); + } + + private static void createServletWithSecurity(IPackageFragment fragment) throws Exception { + final String servletContent = "package com.sap;" + + "import javax.servlet.http.HttpServlet;" + + "@DeclareRoles(value = {\"role1\", \"role2\"}) public class ServletWithSecurity extends HttpServlet {}"; + IFile file = ((IContainer) fragment.getResource()).getFile(new Path("ServletWithSecurity.java")); + AbstractTest.saveFile(file, servletContent); + } + + private static void createServlet3(IPackageFragment fragment, String className, String name, String urlPattern) throws Exception { + String params = ""; + if (name != null){ + params="name=\""+name+"\""; + } + if (urlPattern != null){ + if (params.length() > 0){ + params+=", "; + } + params+="urlPatterns=\""+urlPattern+"\""; + } + if(params.length() > 0){ + params="(" + params+ ")"; + } + final String content = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "import javax.servlet.http.HttpServlet;" + "@WebServlet"+params+" public class "+className+" extends HttpServlet {" + + "private static final long serialVersionUID = 1L;" + + "@EJB private Comparable comp; @EJB public void setComparable(Comparable comp){};" + + "@Resource private Comparable comp2; @Resource public void setComparable2(Comparable comp){} }"; + IFile file = ((IContainer) fragment.getResource()).getFile(new Path(className+".java")); + AbstractTest.saveFile(file, content); + } + + private WebApp ddApp; + + // @Before + @Override + protected void setUp() throws Exception { + setUpProject(); + super.setUp(); + ddApp = WebFactory.eINSTANCE.createWebApp(); + addServlet(ddApp, SERVLET_NO_ARGUMENTS, "com.sap.Servlet1"); + fixture = new WebAnnotationReader(facetedProject, ddApp); + } + + // @After + @Override + protected void tearDown() throws Exception { + ((WebAnnotationReader) fixture).dispose(); + } + + // @Tets + public void testAddDeleteEjbRef() throws Exception { + final String content = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "import javax.servlet.http.HttpServlet;" + "@WebServlet public class testAddDeleteEjbRef extends HttpServlet {" + + "private static final long serialVersionUID = 1L;" + + "@EJB private Comparable comp; @EJB public void setComparable(Comparable comp){};}"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testAddDeleteEjbRef.java"); + saveFileAndUpdate(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(result.getEjbLocalRefs().size())); + + deleteFileAndUpdate(file); + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getEjbLocalRefs().size())); + } + + /** + * The servlet is not described in the web.xml. It is not in the deployment + * descriptor model. + * + * @throws Exception + */ + // @Tets + public void testNotAServletAddDeleteEjbRef() throws Exception { + final String content = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "import javax.servlet.http.HttpServlet;" + + "public class testNotAServletAddDeleteEjbRef {" + + "private static final long serialVersionUID = 1L;" + + "@EJB private Comparable comp; @EJB public void setComparable(Comparable comp){};}"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testNotAServletAddDeleteEjbRef.java"); + AbstractTest.saveFile(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getEjbLocalRefs().size())); + + AbstractTest.deleteFile(file); + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getEjbLocalRefs().size())); + } + + // @Tets + public void testAddDeleteResourceRef() throws Exception { + final String content = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "import javax.servlet.http.HttpServlet;" + + "@WebServlet public class testAddDeleteResourceRef extends HttpServlet {" + + "private static final long serialVersionUID = 1L;" + + "@Resource private Comparable comp2; @Resource public void setComparable2(Comparable comp){} }"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testAddDeleteResourceRef.java"); + saveFileAndUpdate(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(result.getResourceRefs().size())); + deleteFileAndUpdate(file); + + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getResourceRefs().size())); + } + + // @Tets + public void testListener() throws Exception { + final String content = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "@WebServletContextListener public class testListener {" + + "@EJB private Comparable comp; @EJB public void setComparable(Comparable comp){};" + + "@Resource private Comparable comp2; @Resource public void setComparable2(Comparable comp){} }"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testListener.java"); + saveFileAndUpdate(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(result.getResourceRefs().size())); + assertEquals(new Integer(8), new Integer(result.getEjbLocalRefs().size())); + + deleteFileAndUpdate(file); + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getResourceRefs().size())); + assertEquals(new Integer(6), new Integer(result.getEjbLocalRefs().size())); + } + + // @Tets + public void testFilter() throws Exception { + final String content = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "@WebFilter public class testFilter {" + + "@EJB private Comparable comp; @EJB public void setComparable(Comparable comp){};" + + "@Resource private Comparable comp2; @Resource public void setComparable2(Comparable comp){} }"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testFilter.java"); + saveFileAndUpdate(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(result.getResourceRefs().size())); + assertEquals(new Integer(8), new Integer(result.getEjbLocalRefs().size())); + + deleteFileAndUpdate(file); + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getResourceRefs().size())); + assertEquals(new Integer(6), new Integer(result.getEjbLocalRefs().size())); + + } + + // @Tets + public void testResourcesServlet() throws Exception { + final String content = "package com.sap;" + + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "@Resources(value = {" + + "@Resource(name = \"withNotDefaults\", mappedName = \"mappedName\", " + + " shareable = false, type = java.lang.Comparable.class, " + + " authenticationType = AuthenticationType.APPLICATION, description = \"description\")," + + "@Resource(name = \"withDefaults\", type = java.lang.Comparable.class), @Resource(name = \"invalidNoType\") })" + + "@WebServlet public class testResourcesServlet {}"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testResourcesServlet.java"); + saveFileAndUpdate(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(result.getResourceRefs().size())); + + deleteFileAndUpdate(file); + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getResourceRefs().size())); + } + + // @Tets + public void testResourcesFilter() throws Exception { + final String content = "package com.sap;" + + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "@Resources(value = {" + + "@Resource(name = \"withNotDefaults\", mappedName = \"mappedName\", " + + " shareable = false, type = java.lang.Comparable.class, " + + " authenticationType = AuthenticationType.APPLICATION, description = \"description\")," + + "@Resource(name = \"withDefaults\", type = java.lang.Comparable.class), @Resource(name = \"invalidNoType\") })" + + "@WebFilter public class testResourcesFilter {}"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testResourcesFilter.java"); + saveFileAndUpdate(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(result.getResourceRefs().size())); + + deleteFileAndUpdate(file); + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getResourceRefs().size())); + } + + // @Tets + public void testResourcesOnListener() throws Exception { + final String content = "package com.sap;" + + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "@Resources(value = {" + + "@Resource(name = \"withNotDefaults\", mappedName = \"mappedName\", " + + " shareable = false, type = java.lang.Comparable.class, " + + " authenticationType = AuthenticationType.APPLICATION, description = \"description\")," + + "@Resource(name = \"withDefaults\", type = java.lang.Comparable.class), @Resource(name = \"invalidNoType\") })" + + "@WebServletContextListener public class testResourcesOnListener {}"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testResourcesOnListener.java"); + saveFileAndUpdate(file, content); + + WebApp result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(result.getResourceRefs().size())); + + deleteFileAndUpdate(file); + result = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(result.getResourceRefs().size())); + } + + // @Tets + public void testDeclareRoles() throws Exception { + final String beanContent = "package com.sap;" + + "@DeclareRoles(value = {\"testDeclareRoles1\", \"testDeclareRoles1\"}) " + + "@WebServlet public class testDeclareRoles extends HttpServlet {}"; + IFile servletFile = facetedProject.getProject().getFile("src/com/sap/testDeclareRoles.java"); + saveFileAndUpdate(servletFile, beanContent); + + WebApp app = (WebApp) fixture.getModelObject(); + Servlet result = TestUtils.findServletByName(app, "testDeclareRoles"); + assertNotNull(result); + SecurityRole role1 = TestUtils.findSecurityRole(app.getSecurityRoles(), "testDeclareRoles1"); + SecurityRole role2 = TestUtils.findSecurityRole(app.getSecurityRoles(), "testDeclareRoles1"); + assertNotNull(role1); + assertNotNull(role2); + SecurityRoleRef role1Ref = TestUtils.findSecurityRoleRef(result.getSecurityRoleRefs(), "testDeclareRoles1"); + assertNotNull(role1Ref); + SecurityRoleRef role2Ref = TestUtils.findSecurityRoleRef(result.getSecurityRoleRefs(), "testDeclareRoles1"); + assertNotNull(role2Ref); + + deleteFileAndUpdate(servletFile); + app = (WebApp) fixture.getModelObject(); + assertNull(TestUtils.findServletByName(app, "testDeclareRoles")); + assertNull(TestUtils.findSecurityRole(app.getSecurityRoles(), "testDeclareRoles1")); + assertNull(TestUtils.findSecurityRole(app.getSecurityRoles(), "testDeclareRoles1")); + } + + // @Tets + public void testDeclareRoleOnManyServlets() throws Exception { + final String servlet1Content = "package com.sap;" + + "@DeclareRoles(value = {\"testDeclareRoleOnManyBeansRole\"}) " + + "@WebServlet public class testDeclareRoleOnManyServlets1 implements SessionBeanLocal {}"; + final String servlet2Content = "package com.sap;" + + "@DeclareRoles(value = {\"testDeclareRoleOnManyBeansRole\"}) " + + "@WebServlet public class testDeclareRoleOnManyServlets2 implements SessionBeanLocal {}"; + IFile bean1File = facetedProject.getProject().getFile("src/com/sap/testDeclareRoleOnManyServlets1.java"); + IFile bean2File = facetedProject.getProject().getFile("src/com/sap/testDeclareRoleOnManyServlets2.java"); + saveFileAndUpdate(bean1File, servlet1Content); + saveFileAndUpdate(bean2File, servlet2Content); + WebApp app = (WebApp) fixture.getModelObject(); + Servlet result = TestUtils.findServletByName(app, "testDeclareRoleOnManyServlets1"); + SecurityRole role1 = TestUtils.findSecurityRole(app.getSecurityRoles(), "testDeclareRoleOnManyBeansRole"); + assertNotNull(role1); + SecurityRoleRef role1Ref = TestUtils.findSecurityRoleRef(result.getSecurityRoleRefs(), + "testDeclareRoleOnManyBeansRole"); + assertNotNull(role1Ref); + + deleteFileAndUpdate(bean1File); + assertNotNull(TestUtils.findSecurityRole(app.getSecurityRoles(), "testDeclareRoleOnManyBeansRole")); + deleteFileAndUpdate(bean2File); + assertNull(TestUtils.findSecurityRole(app.getSecurityRoles(), "testDeclareRoleOnManyBeansRole")); + } + + // @Tets + public void testRunAs() throws Exception { + final String servletContent = "package com.sap;" + + "@DeclareRoles(value = {\"testRunAsRole\"}) @RunAs(value = \"testRunAsRole\") " + + "@WebServlet public class testRunAs{}"; + + IFile servletFile = facetedProject.getProject().getFile("src/com/sap/testRunAs.java"); + saveFileAndUpdate(servletFile, servletContent); + WebApp app = (WebApp) fixture.getModelObject(); + Servlet result = TestUtils.findServletByName(app, "testRunAs"); + SecurityRole role1 = TestUtils.findSecurityRole(app.getSecurityRoles(), "testRunAsRole"); + assertNotNull(role1); + SecurityRoleRef role1Ref = TestUtils.findSecurityRoleRef(result.getSecurityRoleRefs(), "testRunAsRole"); + assertNotNull(role1Ref); + RunAs runAs = (RunAs) result.getRunAs(); + assertNotNull(runAs); + assertEquals("testRunAsRole", runAs.getRoleName()); + + deleteFileAndUpdate(servletFile); + assertNull(TestUtils.findSecurityRole(((WebApp) fixture.getModelObject()).getSecurityRoles(), "testRunAsRole")); + } + + // @Tets + public void testAddEjbRefToServlet() throws Exception { + final String content1 = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "import javax.servlet.http.HttpServlet;" + + "@WebServlet public class testAddEjbRefToServlet extends HttpServlet {" + + "private static final long serialVersionUID = 1L;}"; + final String content2 = "package com.sap;" + "import javax.annotation.Resource;import javax.ejb.EJB;" + + "import javax.servlet.http.HttpServlet;" + + "@WebServlet public class testAddEjbRefToServlet extends HttpServlet {" + + "private static final long serialVersionUID = 1L;" + + "@EJB private Comparable comp; @EJB public void setComparable(Comparable comp){};}"; + IFile file = facetedProject.getProject().getFile("src/com/sap/testAddEjbRefToServlet.java"); + saveFileAndUpdate(file, content1); + WebApp app = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(app.getEjbLocalRefs().size())); + + saveFileAndUpdate(file, content2); + app = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(8), new Integer(app.getEjbLocalRefs().size())); + + deleteFileAndUpdate(file); + app = (WebApp) fixture.getModelObject(); + assertEquals(new Integer(6), new Integer(app.getEjbLocalRefs().size())); + } + + private static void addServlet(WebApp app, String servletName, String servletClass) { + Servlet servlet = WebFactory.eINSTANCE.createServlet(); + servlet.setServletName(servletName); + servlet.setServletClass(servletClass); + app.getServlets().add(servlet); + } + +}