Author: fbricon
Date: 2012-02-01 04:48:01 -0500 (Wed, 01 Feb 2012)
New Revision: 38363
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/main/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/main/java/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/main/resources/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/main/resources/META-INF/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/test/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/test/java/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/src/test/resources/
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.configurators.tests/src/org/jboss/tools/maven/configurators/tests/SeamConfiguratorTest.java
Log:
JBIDE-10764 : Use Seam core API to add enable seam on projects
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 2012-02-01
09:45:08 UTC (rev 38362)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java 2012-02-01
09:48:01 UTC (rev 38363)
@@ -12,13 +12,11 @@
import java.io.File;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
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;
@@ -28,7 +26,6 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.emf.common.util.EList;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
@@ -36,13 +33,7 @@
import org.eclipse.jdt.core.JavaCore;
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.Module;
-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.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
@@ -55,25 +46,19 @@
import org.eclipse.m2e.core.project.configurator.ProjectConfigurationRequest;
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;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.jboss.tools.common.model.util.EclipseResourceUtil;
-import org.jboss.tools.jst.web.kb.IKbProject;
import org.jboss.tools.maven.core.IJBossMavenConstants;
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.ui.Activator;
-import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.core.SeamUtil;
import org.jboss.tools.seam.core.project.facet.SeamRuntime;
@@ -179,7 +164,6 @@
IDataModel model = createSeamDataModel(deploying, seamVersion, project);
installWarFacets(fproj, model, seamVersion, monitor);
} else if ("ear".equals(packaging)) { //$NON-NLS-1$
- configureApplicationXml(project, monitor);
installEarFacets(fproj, monitor);
installM2Facet(fproj, monitor);
IProject webProject = getReferencingSeamWebProject(project);
@@ -385,12 +369,7 @@
return;
}
try {
- if (!project.hasNature(ISeamProject.NATURE_ID)) {
- EclipseResourceUtil.addNatureToProject(project, ISeamProject.NATURE_ID);
- }
- if(!project.hasNature(IKbProject.NATURE_ID)) {
- EclipseResourceUtil.addNatureToProject(project, IKbProject.NATURE_ID);
- }
+ SeamUtil.enableSeamSupport(project);
for (int i = 0; i < earProjects.length; i++) {
IEclipsePreferences prefs = SeamCorePlugin
.getSeamPreferences(project);
@@ -636,107 +615,6 @@
return seamRuntime3;
}
- private void configureApplicationXml(IProject project, IProgressMonitor monitor) {
- EARArtifactEdit earArtifactEdit = null;
- try {
- earArtifactEdit = EARArtifactEdit.getEARArtifactEditForWrite(project);
- if(earArtifactEdit!=null) {
- Application application = earArtifactEdit.getApplication();
- if (application == null) {
- return;
- }
- EList modules = application.getModules();
- for (Iterator iterator = modules.iterator(); iterator.hasNext();) {
- Object object = iterator.next();
- if (object instanceof Module) {
- Module module = (Module) object;
- String uri = module.getUri();
- 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();
- }
- }
- }
-
- }
- } 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(
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/seam/JBIDE-10764/pom.xml 2012-02-01
09:48:01 UTC (rev 38363)
@@ -0,0 +1,44 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.tools.tests</groupId>
+ <artifactId>JBIDE-10764</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>ejb</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-ejb-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <ejbVersion>3.0</ejbVersion>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <version>2.2.2.Final</version>
+ <type>ejb</type>
+ </dependency>
+ </dependencies>
+ <repositories>
+ <!-- You should seriously consider using a repository manager or declare
repositories in your settings.xml.
+ See
http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-p...
-->
+ <repository>
+ <!-- The JBoss Release repository mostly contains JBoss projects artifacts.
+ See
http://community.jboss.org/wiki/MavenGettingStarted-Users -->
+ <id>jboss-releases-repository</id>
+
<
url>https://repository.jboss.org/nexus/content/repositories/releases/&...
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+</project>
\ No newline at end of file
Modified:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/SeamConfiguratorTest.java
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/SeamConfiguratorTest.java 2012-02-01
09:45:08 UTC (rev 38362)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/SeamConfiguratorTest.java 2012-02-01
09:48:01 UTC (rev 38363)
@@ -4,7 +4,9 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
+import org.jboss.tools.jst.web.kb.IKbProject;
import org.jboss.tools.maven.jsf.configurators.JSFProjectConfigurator;
+import org.jboss.tools.seam.core.ISeamProject;
import org.junit.Test;
@SuppressWarnings("restriction")
@@ -37,4 +39,12 @@
return seamProject;
}
+ @Test
+ public void testJBIDE10764_builderOrder() throws Exception {
+ IProject ejb = importProject("projects/seam/JBIDE-10764/pom.xml");
+ waitForJobsToComplete();
+ assertNoErrors(ejb);
+ assertTrue("Seam nature is missing", ejb.hasNature(ISeamProject.NATURE_ID));
+ assertTrue("KB nature is missing", ejb.hasNature(IKbProject.NATURE_ID));
+ }
}