[305306] commit to trunk
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java index db07568..7dada87 100644 --- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java +++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java
@@ -19,22 +19,46 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import junit.framework.Test; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider; import org.eclipse.jst.j2ee.earcreation.IEarFacetInstallDataModelProperties; import org.eclipse.jst.j2ee.internal.project.facet.EARFacetProjectCreationDataModelProvider; import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities; import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetInstallDataModelProperties; +import org.eclipse.wst.common.componentcore.ComponentCore; +import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties; import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetInstallDataModelProperties; import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties; import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties.FacetDataModelMap; +import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent; +import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; +import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; import org.eclipse.wst.common.tests.OperationTestCase; import org.eclipse.wst.common.tests.SimpleTestSuite; +import org.eclipse.wst.server.core.IModule; +import org.eclipse.wst.server.core.ServerUtil; +import org.eclipse.wst.server.core.model.IModuleFile; +import org.eclipse.wst.server.core.model.IModuleFolder; +import org.eclipse.wst.server.core.model.IModuleResource; +import org.eclipse.wst.server.core.model.ModuleDelegate; import org.eclipse.wtp.j2ee.headless.tests.appclient.operations.AppClientProjectCreationOperationTest; import org.eclipse.wtp.j2ee.headless.tests.ejb.operations.EJBProjectCreationOperationTest; import org.eclipse.wtp.j2ee.headless.tests.j2ee.operations.JEEProjectCreationOperationTest; @@ -389,4 +413,58 @@ public static List getJavaDependencyList_6() { return Collections.emptyList(); } + + + public void testEAR50_WithVariableReference() throws Exception{ + IDataModel dm = getEARDataModel("pEAR", "ourContent", null, null, JavaEEFacetConstants.EAR_5, false); + OperationTestCase.runAndVerify(dm); + IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject("pEAR"); + if( p != null && p.exists()) { + try { + IVirtualComponent vc = ComponentCore.createComponent(p); + addArchiveComponent(vc); + // now verify + IModule module = ServerUtil.getModule(p); + assertNotNull(module); + ModuleDelegate md = (ModuleDelegate)module.loadAdapter(ModuleDelegate.class, new NullProgressMonitor()); + IModuleResource[] resources = md.members(); + assertEquals(1, resources.length); + assertEquals(1, ((IModuleFolder)resources[0]).members().length); + assertTrue(((IModuleFolder)resources[0]).members()[0] instanceof IModuleFile); + IModuleFile junitjar = (IModuleFile)((IModuleFolder)resources[0]).members()[0]; + assertEquals("junit.jar", junitjar.getName()); + } catch( CoreException ce ) { + ce.printStackTrace(); + } + } + } + + public void addArchiveComponent(IVirtualComponent component) throws CoreException { + + IPath path = new Path("JUNIT_HOME/junit.jar"); //$NON-NLS-1$ + IPath resolvedPath = JavaCore.getResolvedVariablePath(path); + java.io.File file = new java.io.File(resolvedPath.toOSString()); + if( file.isFile() && file.exists()){ + String type = VirtualArchiveComponent.VARARCHIVETYPE + IPath.SEPARATOR; + IVirtualComponent archive = ComponentCore.createArchiveComponent( component.getProject(), type + + path.toString()); + IDataModelProvider provider = new AddComponentToEnterpriseApplicationDataModelProvider(); + IDataModel dm = DataModelFactory.createDataModel(provider); + dm.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, component); + dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, Arrays.asList(archive)); + Map<IVirtualComponent, String> uriMap = new HashMap<IVirtualComponent, String>(); + uriMap.put(archive, "junit.jar"); + dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_TO_URI_MAP, uriMap); + dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, "/lib"); + IStatus stat = dm.validateProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST); + if (!stat.isOK()) + throw new CoreException(stat); + try { + dm.getDefaultOperation().execute(new NullProgressMonitor(), null); + } catch (ExecutionException e) { + throw new CoreException(new Status(IStatus.ERROR, "test", e.getMessage())); + } + + } + } }