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");