Author: fbricon
Date: 2011-08-03 09:39:14 -0400 (Wed, 03 Aug 2011)
New Revision: 33544
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/JavaUtil.java
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.classpath
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.project
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.jdt.core.prefs
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.m2e.core.prefs
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/META-INF/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/META-INF/MANIFEST.MF
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/build.properties
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/plugin_customization.ini
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jboss/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jboss/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi-12/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi-12/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-mojarra/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-mojarra/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-myfaces/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-myfaces/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/requirements.properties
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/AbstractMavenConfiguratorTest.java
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/JSFConfiguratorTest.java
Modified:
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/configurators/JSFProjectConfigurator.java
trunk/maven/tests/pom.xml
Log:
JBIDE-9242 : add JSF facet based on the JSF classes found in the classpath
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/JavaUtil.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/JavaUtil.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/JavaUtil.java 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,53 @@
+package org.jboss.tools.maven.core;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.jboss.tools.common.util.EclipseJavaUtil;
+
+/**
+ *
+ * @author Fred Bricon
+ *
+ */
+public class JavaUtil {
+
+ private JavaUtil() {
+ }
+
+ /**
+ * Checks if a project has a given class in its classpath.<br/>
+ * @param project : the workspace project
+ * @param className : the fully qualified name of the class to search for
+ * @return true if className is found in the project's classpath (provided the
project is a JavaProject and its classpath has been set.)
+ *
+ */
+ public static boolean hasInClassPath(IProject project, String className) {
+ boolean result = false;
+ if (project != null){
+ result = hasInClassPath(JavaCore.create(project), className);
+ }
+ return result;
+ }
+
+ /**
+ * Checks if a java project has a given class in its classpath.<br/>
+ * @param javaProject : the workspace project
+ * @param className : the fully qualified name of the class to search for
+ * @return true if className is found in the project's classpath (provided the
project is a JavaProject and its classpath has been set.)
+ *
+ */
+ public static boolean hasInClassPath(IJavaProject javaProject, String className) {
+ boolean result = false;
+ if (javaProject != null) {
+ try {
+ result = EclipseJavaUtil.findType(javaProject, className) != null;
+ } catch (JavaModelException e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/configurators/JSFProjectConfigurator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/configurators/JSFProjectConfigurator.java 2011-08-03
13:28:47 UTC (rev 33543)
+++
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/configurators/JSFProjectConfigurator.java 2011-08-03
13:39:14 UTC (rev 33544)
@@ -25,6 +25,10 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jface.preference.IPreferenceStore;
import
org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
@@ -33,11 +37,13 @@
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.resources.IVirtualComponent;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
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.util.EclipseJavaUtil;
import org.jboss.tools.maven.core.IJBossMavenConstants;
import
org.jboss.tools.maven.core.internal.project.facet.MavenFacetInstallDataModelProvider;
import org.jboss.tools.maven.jsf.MavenJSFActivator;
@@ -61,21 +67,23 @@
protected static final IProjectFacet dynamicWebFacet;
protected static final IProjectFacetVersion dynamicWebVersion;
- protected static final IProjectFacet jsfFacet;
- protected static final IProjectFacetVersion jsfVersion20;
- protected static final IProjectFacetVersion jsfVersion12;
- protected static final IProjectFacetVersion jsfVersion11;
+ public static final IProjectFacet JSF_FACET;
+ public static final IProjectFacetVersion JSF_FACET_VERSION_2_0;
+ public static final IProjectFacetVersion JSF_FACET_VERSION_1_2;
+ public static final IProjectFacetVersion JSF_FACET_VERSION_1_1;
protected static final IProjectFacet m2Facet;
protected static final IProjectFacetVersion m2Version;
- private static final String JSF_VERSION_2_0 = "2.0";
+ public static final String JSF_VERSION_2_0 = "2.0";
+ public static final String JSF_VERSION_1_2 = "1.2";
+ public static final String JSF_VERSION_1_1 = "1.1";
static {
dynamicWebFacet = ProjectFacetsManager.getProjectFacet("jst.web");
//$NON-NLS-1$
dynamicWebVersion = dynamicWebFacet.getVersion("2.5"); //$NON-NLS-1$
- jsfFacet = ProjectFacetsManager.getProjectFacet("jst.jsf"); //$NON-NLS-1$
- jsfVersion20 = jsfFacet.getVersion(JSF_VERSION_2_0);
- jsfVersion12 = jsfFacet.getVersion("1.2"); //$NON-NLS-1$
- jsfVersion11 = jsfFacet.getVersion("1.1"); //$NON-NLS-1$
+ JSF_FACET = ProjectFacetsManager.getProjectFacet("jst.jsf"); //$NON-NLS-1$
+ JSF_FACET_VERSION_2_0 = JSF_FACET.getVersion(JSF_VERSION_2_0);
+ JSF_FACET_VERSION_1_2 = JSF_FACET.getVersion(JSF_VERSION_1_2); //$NON-NLS-1$
+ JSF_FACET_VERSION_1_1 = JSF_FACET.getVersion(JSF_VERSION_1_1); //$NON-NLS-1$
m2Facet = ProjectFacetsManager.getProjectFacet("jboss.m2"); //$NON-NLS-1$
m2Version = m2Facet.getVersion("1.0"); //$NON-NLS-1$
}
@@ -97,13 +105,13 @@
}
final IFacetedProject fproj = ProjectFacetsManager.create(project);
- if (fproj != null && fproj.hasProjectFacet(jsfFacet) &&
fproj.hasProjectFacet(m2Facet)) {
+ if (fproj != null && fproj.hasProjectFacet(JSF_FACET) &&
fproj.hasProjectFacet(m2Facet)) {
//everything already installed. Since there's no support for version update -yet-
we bail
return;
}
String packaging = mavenProject.getPackaging();
- String jsfVersion = getJSFVersion(mavenProject);
+ String jsfVersion = getJSFVersion(mavenProject, project);
if (fproj != null && jsfVersion != null &&
"war".equals(packaging)) { //$NON-NLS-1$
installWarFacets(fproj, jsfVersion, mavenProject, monitor);
}
@@ -118,6 +126,15 @@
IProject project = facade.getProject();
if(isWTPProject(project)) {
MavenProject mavenProject = facade.getMavenProject(monitor);
+
+ IMavenProjectFacade oldFacade = event.getOldMavenProject();
+ if (oldFacade != null) {
+ MavenProject oldProject = oldFacade.getMavenProject(monitor);
+ if (oldProject != null &&
oldProject.getArtifacts().equals(mavenProject.getArtifacts())) {
+ //Nothing changed since last build, no need to lookup for new JSF facets
+ return;
+ }
+ }
configureInternal(mavenProject, project, monitor);
}
}
@@ -155,7 +172,7 @@
String jsfVersionString, MavenProject mavenProject,
IProgressMonitor monitor)
throws CoreException {
- if (!fproj.hasProjectFacet(jsfFacet)) {
+ if (!fproj.hasProjectFacet(JSF_FACET)) {
String warSourceDir = getWarSourceDirectory(mavenProject,fproj.getProject());
IPath facesConfigPath = new Path("WEB-INF/faces-config.xml");
IFile facesConfig =
fproj.getProject().getFolder(warSourceDir).getFile(facesConfigPath);
@@ -163,21 +180,22 @@
//faces-config.xml will not be created in the source folder and it doesn't exist
yet
// => We'll have to fix it after setting the JSF facet
- boolean shouldFixFacesConfig =
!generatedFacesConfig.getLocation().equals(facesConfig.getLocation())
+ boolean shouldFixFacesConfig = generatedFacesConfig != null
+ &&
!generatedFacesConfig.getLocation().equals(facesConfig.getLocation())
&& !generatedFacesConfig.exists();
- if (jsfVersionString.startsWith("1.1")) { //$NON-NLS-1$
- IDataModel model =
MavenJSFActivator.getDefault().createJSFDataModel(fproj,jsfVersion11);
- fproj.installProjectFacet(jsfVersion11, model, monitor);
+ if (jsfVersionString.startsWith(JSF_VERSION_1_1)) {
+ IDataModel model =
MavenJSFActivator.getDefault().createJSFDataModel(fproj,JSF_FACET_VERSION_1_1);
+ fproj.installProjectFacet(JSF_FACET_VERSION_1_1, model, monitor);
}
- else if (jsfVersionString.startsWith("1.2")) { //$NON-NLS-1$
- IDataModel model =
MavenJSFActivator.getDefault().createJSFDataModel(fproj,jsfVersion12);
- fproj.installProjectFacet(jsfVersion12, model, monitor);
+ else if (jsfVersionString.startsWith(JSF_VERSION_1_2)) {
+ IDataModel model =
MavenJSFActivator.getDefault().createJSFDataModel(fproj,JSF_FACET_VERSION_1_2);
+ fproj.installProjectFacet(JSF_FACET_VERSION_1_2, model, monitor);
}
- else if (jsfVersionString.startsWith("2.0")) { //$NON-NLS-1$
- IDataModel model =
MavenJSFActivator.getDefault().createJSFDataModel(fproj,jsfVersion20);
+ else if (jsfVersionString.startsWith(JSF_VERSION_2_0)) {
+ IDataModel model =
MavenJSFActivator.getDefault().createJSFDataModel(fproj,JSF_FACET_VERSION_2_0);
model.setBooleanProperty(IJSFFacetInstallDataModelProperties.CONFIGURE_SERVLET,configureWebxml());
- fproj.installProjectFacet(jsfVersion20, model, monitor);
+ fproj.installProjectFacet(JSF_FACET_VERSION_2_0, model, monitor);
}
if (shouldFixFacesConfig && generatedFacesConfig.exists()) {
@@ -199,22 +217,14 @@
}
private IFile getFileFromUnderlyingresources(final IProject project, final IPath
filePath) {
- IContainer underlyingFolder =
ComponentCore.createComponent(project).getRootFolder().getUnderlyingFolder();
+ IVirtualComponent component = ComponentCore.createComponent(project);
+ if (component == null) {
+ return null;
+ }
+ IContainer underlyingFolder = component.getRootFolder().getUnderlyingFolder();
return project.getFile(underlyingFolder.getProjectRelativePath().append(filePath));
}
- private IFile getWebXml(IFacetedProject fproj, MavenProject mavenProject) {
- IFile webXml;
- String customWebXml = getCustomWebXml(mavenProject,
- fproj.getProject());
- if (customWebXml == null) {
- webXml =
fproj.getProject().getFolder(getWarSourceDirectory(mavenProject,fproj.getProject())).getFile(WEB_XML);
- } else {
- webXml = fproj.getProject().getFile(customWebXml);
- }
- return webXml;
- }
-
private String getWarSourceDirectory(MavenProject mavenProject,
IProject project) {
Plugin plugin = mavenProject
@@ -290,18 +300,57 @@
}
- private String getJSFVersion(MavenProject mavenProject) {
+ private String getJSFVersion(MavenProject mavenProject, IProject project) {
String version = null;
version = Activator.getDefault().getDependencyVersion(mavenProject, JSF_API_GROUP_ID,
JSF_API_ARTIFACT_ID);
if (version == null) {
+ //Check if there's a JSF 2 dependency
version = Activator.getDefault().getDependencyVersion(mavenProject, JSF_API2_GROUP_ID,
JSF_API_ARTIFACT_ID);
}
if (version == null) {
+ //JBIDE-9242 determine JSF version from classpath
+ version = getJSFVersionFromClasspath(project);
+ }
+ if (version == null) {
version = inferJsfVersionFromDependencies(mavenProject, JSF_API2_GROUP_ID,
JSF_API_ARTIFACT_ID, JSF_VERSION_2_0);
}
return version;
}
+ /**
+ * Determines the JSF version by searching for the methods of
javax.faces.application.Application
+ * in the project's classpath.
+ * @param project : the java project to analyze
+ * @return the JSF version (1.1, 1.2, 2.0) found in the classpath,
+ * or null if the project doesn't depend on JSF
+ */
+ private String getJSFVersionFromClasspath(IProject project) {
+ String version = null;
+ IJavaProject javaProject = JavaCore.create(project);
+ if (javaProject != null) {
+ IType type = null;
+ try {
+ type = EclipseJavaUtil.findType(javaProject,
+ "javax.faces.application.Application");//$NON-NLS-1$
+ } catch (JavaModelException e) {
+ e.printStackTrace();
+ }
+ if (type != null) {
+ String[] emptyParams = new String[0];
+ if (type.getMethod("getResourceHandler", emptyParams).exists() &&
+ type.getMethod("getProjectStage", emptyParams).exists()) {
+ return JSF_VERSION_2_0;
+ }
+ if (type.getMethod("getELResolver", emptyParams).exists() &&
+ type.getMethod("getExpressionFactory", emptyParams).exists()) {
+ return JSF_VERSION_1_2;
+ }
+ version = JSF_VERSION_1_1;
+ }
+ }
+ return version;
+ }
+
private String inferJsfVersionFromDependencies(MavenProject mavenProject, String
groupId, String artifactId, String defaultVersion) {
boolean hasCandidates = false;
String jsfVersion = null;
Added: trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.classpath
===================================================================
--- trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.classpath
(rev 0)
+++ trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.classpath 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con"
path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.project
===================================================================
--- trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.project
(rev 0)
+++ trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.project 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.jboss.tools.maven.configurators.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.jdt.core.prefs
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.jdt.core.prefs
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.jdt.core.prefs 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,8 @@
+#Tue Aug 02 13:44:10 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.m2e.core.prefs
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.m2e.core.prefs
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/.settings/org.eclipse.m2e.core.prefs 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,5 @@
+#Tue Aug 02 13:44:10 CEST 2011
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
Added: trunk/maven/tests/org.jboss.tools.maven.configurators.tests/META-INF/MANIFEST.MF
===================================================================
--- trunk/maven/tests/org.jboss.tools.maven.configurators.tests/META-INF/MANIFEST.MF
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/META-INF/MANIFEST.MF 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: JBoss Maven Configurators Tests
+Bundle-SymbolicName: org.jboss.tools.maven.configurators.tests;singleton:=true
+Bundle-Version: 1.3.0.qualifier
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.apache.log4j,
+ org.junit4,
+ org.jboss.tools.seam.core,
+ org.jboss.tools.maven.core,
+ org.jboss.tools.maven.hibernate,
+ org.jboss.tools.maven.jsf,
+ org.jboss.tools.maven.portlet,
+ org.jboss.tools.maven.seam,
+ org.jboss.tools.maven.ui,
+ org.eclipse.wst.server.core,
+ org.jboss.tools.common,
+ org.jboss.tools.tests,
+ org.hamcrest,
+ org.eclipse.jst.jee,
+ org.eclipse.jst.jee.ejb,
+ org.eclipse.jst.jee.ui,
+ org.eclipse.jst.jee.web,
+ org.eclipse.m2e.lifecyclemapping.defaults;bundle-version="[1.0,1.1)",
+ org.eclipse.m2e.launching;bundle-version="[1.0,1.1)",
+ org.eclipse.m2e.tests.common;bundle-version="[1.0.0,1.1.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Eclipse-RegisterBuddy: org.apache.log4j
+
Added: trunk/maven/tests/org.jboss.tools.maven.configurators.tests/build.properties
===================================================================
--- trunk/maven/tests/org.jboss.tools.maven.configurators.tests/build.properties
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/build.properties 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/plugin_customization.ini
===================================================================
--- trunk/maven/tests/org.jboss.tools.maven.configurators.tests/plugin_customization.ini
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/plugin_customization.ini 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1 @@
+org.eclipse.m2e.core/eclipse.m2.updateIndexes=false
\ No newline at end of file
Added: trunk/maven/tests/org.jboss.tools.maven.configurators.tests/pom.xml
===================================================================
--- trunk/maven/tests/org.jboss.tools.maven.configurators.tests/pom.xml
(rev 0)
+++ trunk/maven/tests/org.jboss.tools.maven.configurators.tests/pom.xml 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <parent>
+ <groupId>org.jboss.tools.maven</groupId>
+ <artifactId>tests</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools.maven.tests</groupId>
+ <artifactId>org.jboss.tools.maven.configurators.tests</artifactId>
+
+ <packaging>eclipse-test-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>maven-osgi-test-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ <configuration>
+ <useUIThread>false</useUIThread>
+ <useUIHarness>true</useUIHarness>
+ <includes>
+ <include>**/*Test.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jboss/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jboss/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jboss/pom.xml 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.maven.tests</groupId>
+ <artifactId>jsf-jboss</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.spec.javax.faces</groupId>
+ <artifactId>jboss-jsf-api_2.0_spec</artifactId>
+ <version>1.0.0.Final</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.1.1</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
+
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi/pom.xml 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.maven.tests</groupId>
+ <artifactId>jsf-jsfapi</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <!-- not in central, hence requires the JBoss repo -->
+ <artifactId>jsf-api</artifactId>
+ <version>2.0</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.1.1</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <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 Public repository is a composite repository of several major
repositories.
+ See
http://community.jboss.org/wiki/MavenGettingStarted-Users -->
+ <id>jboss-public-repository</id>
+ <
url>http://repository.jboss.org/nexus/content/groups/public</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <!-- You can disable snapshot resolution to speed up your builds -->
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+</project>
+
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi-12/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi-12/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-jsfapi-12/pom.xml 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.maven.tests</groupId>
+ <artifactId>jsf-jsfapi-12</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.1.1</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <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 Public repository is a composite repository of several major
repositories.
+ See
http://community.jboss.org/wiki/MavenGettingStarted-Users -->
+ <id>jboss-public-repository</id>
+ <
url>http://repository.jboss.org/nexus/content/groups/public</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <!-- You can disable snapshot resolution to speed up your builds -->
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+</project>
+
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-mojarra/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-mojarra/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-mojarra/pom.xml 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.maven.tests</groupId>
+ <artifactId>jsf-mojarra</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun.faces</groupId>
+ <artifactId>mojarra-jsf-api</artifactId>
+ <version>2.0.0-b04</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.1.1</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <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 Public repository is a composite repository of several major
repositories.
+ See
http://community.jboss.org/wiki/MavenGettingStarted-Users -->
+ <id>jboss-public-repository</id>
+ <
url>http://repository.jboss.org/nexus/content/groups/public</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <!-- You can disable snapshot resolution to speed up your builds -->
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+</project>
+
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-myfaces/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-myfaces/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/jsf-myfaces/pom.xml 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.maven.tests</groupId>
+ <artifactId>jsf-myfaces</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>myfaces</groupId>
+ <artifactId>myfaces-jsf-api</artifactId>
+ <version>1.0.9</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.1.1</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
+
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/requirements.properties
===================================================================
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/AbstractMavenConfiguratorTest.java
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/AbstractMavenConfiguratorTest.java
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/AbstractMavenConfiguratorTest.java 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2011 Red Hat, Inc. and others.
+ * 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:
+ * JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.maven.configurators.tests;
+
+import org.eclipse.m2e.tests.common.AbstractMavenProjectTestCase;
+
+public abstract class AbstractMavenConfiguratorTest extends AbstractMavenProjectTestCase
{
+
+}
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/JSFConfiguratorTest.java
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/JSFConfiguratorTest.java
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/JSFConfiguratorTest.java 2011-08-03
13:39:14 UTC (rev 33544)
@@ -0,0 +1,53 @@
+package org.jboss.tools.maven.configurators.tests;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.common.project.facet.core.JavaFacet;
+import org.eclipse.m2e.core.project.ResolverConfiguration;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.jboss.tools.maven.jsf.configurators.JSFProjectConfigurator;
+import org.junit.Test;
+
+@SuppressWarnings("restriction")
+public class JSFConfiguratorTest extends AbstractMavenConfiguratorTest {
+
+ @Test
+ public void testJBIDE9242_supportMultipleJSFDependencies() throws Exception {
+ IProject[] projects = importProjects("projects/jsf/",
+ new String[]{ "jsf-mojarra/pom.xml",
+ "jsf-jboss/pom.xml",
+ "jsf-jsfapi/pom.xml",
+ "jsf-myfaces/pom.xml",
+ "jsf-jsfapi-12/pom.xml"},
+ new ResolverConfiguration());
+ IProject mojarra = projects[0];
+ assertNoErrors(mojarra);
+ assertIsJSFProject(mojarra, JSFProjectConfigurator.JSF_FACET_VERSION_2_0);
+
+ IProject jboss = projects[1];
+ assertNoErrors(jboss);
+ assertIsJSFProject(jboss, JSFProjectConfigurator.JSF_FACET_VERSION_2_0);
+
+ IProject jsfapi_20 = projects[2];
+ assertNoErrors(jsfapi_20);
+ assertIsJSFProject(jsfapi_20, JSFProjectConfigurator.JSF_FACET_VERSION_2_0);
+
+ IProject myfaces = projects[3];
+ assertNoErrors(myfaces);
+ assertIsJSFProject(myfaces, JSFProjectConfigurator.JSF_FACET_VERSION_1_1);
+
+ IProject jsfapi_12 = projects[4];
+ assertNoErrors(jsfapi_12);
+ assertIsJSFProject(jsfapi_12, JSFProjectConfigurator.JSF_FACET_VERSION_1_2);
+
+
+ }
+
+ private void assertIsJSFProject(IProject project, IProjectFacetVersion
expectedJSFVersion) throws Exception {
+ IFacetedProject facetedProject = ProjectFacetsManager.create(project);
+ assertNotNull(project.getName() + " is not a faceted project",
facetedProject);
+ assertEquals("Unexpected JSF Version", expectedJSFVersion,
facetedProject.getInstalledVersion(JSFProjectConfigurator.JSF_FACET));
+ assertTrue("Java Facet is missing",
facetedProject.hasProjectFacet(JavaFacet.FACET));
+ }
+}
Modified: trunk/maven/tests/pom.xml
===================================================================
--- trunk/maven/tests/pom.xml 2011-08-03 13:28:47 UTC (rev 33543)
+++ trunk/maven/tests/pom.xml 2011-08-03 13:39:14 UTC (rev 33544)
@@ -13,7 +13,7 @@
<name>maven.tests</name>
<packaging>pom</packaging>
<modules>
- <!--module>org.jboss.tools.maven.configurators.tests</module-->
+ <module>org.jboss.tools.maven.configurators.tests</module>
<module>org.jboss.tools.maven.ui.bot.test</module>
</modules>