[jbosstools-commits] JBoss Tools SVN: r23987 - in trunk: maven/tests/org.jboss.tools.maven.ui.bot.test/src/org/jboss/tools/maven/ui/bot/test and 1 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Sat Aug 7 20:44:06 EDT 2010


Author: snjeza
Date: 2010-08-07 20:44:06 -0400 (Sat, 07 Aug 2010)
New Revision: 23987

Modified:
   trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java
   trunk/maven/tests/org.jboss.tools.maven.ui.bot.test/src/org/jboss/tools/maven/ui/bot/test/CreateMavenizedSeamProjectTest.java
   trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2FacetInstallDelegate.java
   trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2ProjectCreator.java
   trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java
   trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegate.java
   trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamProjectCreator.java
Log:
https://jira.jboss.org/browse/JBIDE-6767 If there is JBoss Maven Integration facet, new Seam Web Project wizard unnecessarily copies seam libraries to ear project

Modified: trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java	2010-08-08 00:20:34 UTC (rev 23986)
+++ trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java	2010-08-08 00:44:06 UTC (rev 23987)
@@ -7,6 +7,7 @@
 
 import org.apache.maven.model.Dependency;
 import org.apache.maven.project.MavenProject;
+import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ProjectScope;
@@ -25,18 +26,23 @@
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jst.j2ee.application.Application;
-import org.eclipse.jst.j2ee.application.EjbModule;
 import org.eclipse.jst.j2ee.application.Module;
-import org.eclipse.jst.j2ee.application.WebModule;
+import org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider;
+import org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationDataModelProvider;
+import org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationOperation;
 import org.eclipse.jst.j2ee.componentcore.util.EARArtifactEdit;
+import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater;
 import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
 import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
+import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
 import org.eclipse.wst.common.project.facet.core.IProjectFacet;
 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
@@ -47,7 +53,6 @@
 import org.jboss.tools.maven.core.internal.project.facet.MavenFacetInstallDataModelProvider;
 import org.jboss.tools.maven.jsf.MavenJSFActivator;
 import org.jboss.tools.maven.seam.MavenSeamActivator;
-import org.jboss.tools.maven.seam.Messages;
 import org.jboss.tools.maven.ui.Activator;
 import org.jboss.tools.seam.core.ISeamProject;
 import org.jboss.tools.seam.core.SeamCorePlugin;
@@ -616,14 +621,101 @@
 						if (uri != null && (uri.startsWith("mvel14") || uri.startsWith("mvel2"))) { //$NON-NLS-1$ //$NON-NLS-2$
 							iterator.remove();
 						}
+						if (uri != null && (uri.equals("jboss-seam.jar"))) { //$NON-NLS-1$ //$NON-NLS-2$
+							iterator.remove();
+						}
 					}
 				}				
-				earArtifactEdit.saveIfNecessary(monitor);
+				
 			}
 		} finally {
 			if(earArtifactEdit!=null) {
+				earArtifactEdit.saveIfNecessary(monitor);
 				earArtifactEdit.dispose();
 			}
 		}
+		try {
+			final IFacetedProject fproj = ProjectFacetsManager.create(project);
+			if (fproj != null && fproj.hasProjectFacet(earFacet)) {
+				IVirtualComponent earComponent = ComponentCore.createComponent(project);
+				IVirtualReference[] refs = earComponent.getReferences();
+				IVirtualReference mvelReference = null;
+				for (IVirtualReference ref:refs) {
+					String archiveName = ref.getArchiveName();
+					if (archiveName != null && archiveName.startsWith("/lib/mvel2")) { //$NON-NLS-1$
+						mvelReference = ref;
+						break;
+					}
+				}
+				if (mvelReference != null) {
+					changeReference(earComponent, mvelReference);
+				}
+			}
+		} catch (CoreException e) {
+			MavenSeamActivator.log(e);
+		}
+		
 	}
+
+	/**
+	 * @param earComponent
+	 * @param mvelReference
+	 */
+	private void changeReference(IVirtualComponent earComponent,
+			IVirtualReference mvelReference) {
+		List<IVirtualComponent> list = new ArrayList<IVirtualComponent>();
+		list.add(mvelReference.getReferencedComponent());
+		
+		IDataModel model = DataModelFactory.createDataModel(new RemoveComponentFromEnterpriseApplicationDataModelProvider() {
+
+			@Override
+			public IDataModelOperation getDefaultOperation() {
+				return new RemoveComponentFromEnterpriseApplicationOperationEx(model);
+			}
+			
+		});
+		model.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, earComponent);
+		
+		model.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, list);
+        model.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, "/lib");		 //$NON-NLS-1$
+        IDataModelOperation op = model.getDefaultOperation();
+        try {
+			op.execute(null, null);
+			J2EEComponentClasspathUpdater.getInstance().queueUpdateEAR(earComponent.getProject());
+		} catch (ExecutionException e) {
+			MavenSeamActivator.log(e);
+		}	
+		
+		
+		String archiveName = mvelReference.getArchiveName();
+		archiveName = archiveName.substring(4);
+		mvelReference.setArchiveName(archiveName);
+		IDataModel dm = DataModelFactory.createDataModel(new AddComponentToEnterpriseApplicationDataModelProvider());
+		
+		dm.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, earComponent);					
+		dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, list);
+		
+        dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, "/lib"); //$NON-NLS-1$
+
+		try {
+			dm.getDefaultOperation().execute(null, null);
+		} catch (ExecutionException e) {
+			MavenSeamActivator.log(e);
+		}		
+	}
+	
+	private static class RemoveComponentFromEnterpriseApplicationOperationEx extends RemoveComponentFromEnterpriseApplicationOperation {
+
+		public RemoveComponentFromEnterpriseApplicationOperationEx(
+				IDataModel model) {
+			super(model);
+		}
+
+		@Override
+		protected void updateEARDD(IProgressMonitor monitor) {
+			//super.updateEARDD(monitor);
+		}
+
+		
+	}
 }

Modified: trunk/maven/tests/org.jboss.tools.maven.ui.bot.test/src/org/jboss/tools/maven/ui/bot/test/CreateMavenizedSeamProjectTest.java
===================================================================
--- trunk/maven/tests/org.jboss.tools.maven.ui.bot.test/src/org/jboss/tools/maven/ui/bot/test/CreateMavenizedSeamProjectTest.java	2010-08-08 00:20:34 UTC (rev 23986)
+++ trunk/maven/tests/org.jboss.tools.maven.ui.bot.test/src/org/jboss/tools/maven/ui/bot/test/CreateMavenizedSeamProjectTest.java	2010-08-08 00:44:06 UTC (rev 23987)
@@ -15,6 +15,7 @@
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
+import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -569,4 +570,33 @@
 		assertTrue(project.getFolder(webInfPath.append("lib")).exists());
 		
 	}
+	
+	// see https://jira.jboss.org/browse/JBIDE-6767
+	@Test
+	public void testLibraries() throws Exception {
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(EAR_PROJECT_NAME);
+		File rootDirectory = new File(project.getLocation().toOSString(), "EarContent");
+		String[] libs = rootDirectory.list(new FilenameFilter() {
+			
+			public boolean accept(File dir, String name) {
+				if (name.endsWith(".jar")) {
+					return true;
+				}
+				return false;
+			}
+		});
+		assertTrue(libs.length == 0);
+		File libDirectory = new File (rootDirectory,"lib");
+		libs = libDirectory.list(new FilenameFilter() {
+			
+			public boolean accept(File dir, String name) {
+				if (name.endsWith(".jar")) {
+					return true;
+				}
+				return false;
+			}
+		});
+		assertTrue(libs.length == 0);
+	}
+	
 }

Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2FacetInstallDelegate.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2FacetInstallDelegate.java	2010-08-08 00:20:34 UTC (rev 23986)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2FacetInstallDelegate.java	2010-08-08 00:44:06 UTC (rev 23987)
@@ -152,13 +152,15 @@
 	 * @see org.jboss.tools.seam.internal.core.project.facet.SeamFacetAbstractInstallDelegate#fillEarContents()
 	 */
 	@Override
-	protected void fillEarContents() {
-		final File droolsLibFolder = new File(seamHomePath, DROOLS_LIB_SEAM_RELATED_PATH);
-		AntCopyUtils.copyFiles(seamHomeFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamHomeFolder)), false);
-		AntCopyUtils.copyFiles(seamLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamLibFolder)), false);
-		AntCopyUtils.copyFiles(seamLibFolder, earLibFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_LIB).dir(seamLibFolder)), false);
-		AntCopyUtils.copyFiles(droolsLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(droolsLibFolder)), false);
-		AntCopyUtils.copyFiles(seamGenResFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamGenResFolder)), false);						
+	protected void fillEarContents(IProject project) {
+		if (!SeamCorePlugin.getDefault().hasM2Facet(project)) {
+			final File droolsLibFolder = new File(seamHomePath, DROOLS_LIB_SEAM_RELATED_PATH);
+			AntCopyUtils.copyFiles(seamHomeFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamHomeFolder)), false);
+			AntCopyUtils.copyFiles(seamLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamLibFolder)), false);
+			AntCopyUtils.copyFiles(seamLibFolder, earLibFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_LIB).dir(seamLibFolder)), false);
+			AntCopyUtils.copyFiles(droolsLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(droolsLibFolder)), false);
+			AntCopyUtils.copyFiles(seamGenResFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamGenResFolder)), false);
+		}
 	}
 
 	/*

Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2ProjectCreator.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2ProjectCreator.java	2010-08-08 00:20:34 UTC (rev 23986)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2ProjectCreator.java	2010-08-08 00:44:06 UTC (rev 23987)
@@ -89,9 +89,11 @@
 	@Override
 	protected void createEarProject() {
 		super.createEarProject();
-		File earContentsFolder = new File(earProjectFolder, "EarContent"); //$NON-NLS-1$
-		File earLibFolder = new File(earContentsFolder, "lib"); //$NON-NLS-1$
-		AntCopyUtils.copyFiles(seamLibFolder, earLibFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(Seam2FacetInstallDelegate.JBOSS_EAR_LIB).dir(seamLibFolder)));
+		if (!SeamCorePlugin.getDefault().hasM2Facet(seamWebProject)) {
+			File earContentsFolder = new File(earProjectFolder, "EarContent"); //$NON-NLS-1$
+			File earLibFolder = new File(earContentsFolder, "lib"); //$NON-NLS-1$
+			AntCopyUtils.copyFiles(seamLibFolder, earLibFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(Seam2FacetInstallDelegate.JBOSS_EAR_LIB).dir(seamLibFolder)));
+		}
 	}
 
 	@Override

Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java	2010-08-08 00:20:34 UTC (rev 23986)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java	2010-08-08 00:44:06 UTC (rev 23987)
@@ -566,7 +566,7 @@
 			SeamCorePlugin.getPluginLog().logError(e);
 		}
 
-		fillEarContents();
+		fillEarContents(project);
 
 		File resources = new File(earProjectFolder, "resources"); //$NON-NLS-1$
 		AntCopyUtils.copyFileToFile(
@@ -610,7 +610,7 @@
 	/**
 	 * Fill ear contents
 	 */
-	abstract protected void fillEarContents();
+	abstract protected void fillEarContents(IProject project);
 
 	protected IResource getSrcFolder(IProject project) throws JavaModelException {
 		IJavaProject javaProject = EclipseResourceUtil.getJavaProject(project);

Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegate.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegate.java	2010-08-08 00:20:34 UTC (rev 23986)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegate.java	2010-08-08 00:44:06 UTC (rev 23987)
@@ -148,7 +148,7 @@
 	 * @see org.jboss.tools.seam.internal.core.project.facet.SeamFacetAbstractInstallDelegate#fillEarContents()
 	 */
 	@Override
-	protected void fillEarContents() {
+	protected void fillEarContents(IProject project) {
 		final File droolsLibFolder = new File(seamHomePath, DROOLS_LIB_SEAM_RELATED_PATH);
 		AntCopyUtils.copyFiles(seamHomeFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamHomeFolder)), false);
 		AntCopyUtils.copyFiles(seamLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(JBOSS_EAR_CONTENT).dir(seamLibFolder)), false);

Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamProjectCreator.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamProjectCreator.java	2010-08-08 00:20:34 UTC (rev 23986)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamProjectCreator.java	2010-08-08 00:44:06 UTC (rev 23987)
@@ -492,8 +492,10 @@
 
 		// Fill ear contents
 		AntCopyUtils.copyFiles(seamHomeFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(getJbossEarContent()).dir(seamHomeFolder)));
-		AntCopyUtils.copyFiles(seamLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(getJbossEarContent()).dir(seamLibFolder)));
-		AntCopyUtils.copyFiles(droolsLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(getJbossEarContent()).dir(droolsLibFolder)));
+		if (!SeamCorePlugin.getDefault().hasM2Facet(seamWebProject)) {
+			AntCopyUtils.copyFiles(seamLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(getJbossEarContent()).dir(seamLibFolder)));
+			AntCopyUtils.copyFiles(droolsLibFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(getJbossEarContent()).dir(droolsLibFolder)));
+		}
 		AntCopyUtils.copyFiles(seamGenResFolder, earContentsFolder, new AntCopyUtils.FileSetFileFilter(new AntCopyUtils.FileSet(getJbossEarContent()).dir(seamGenResFolder)));						
 
 		File resources = new File(earProjectFolder, "resources");



More information about the jbosstools-commits mailing list