Author: fbricon
Date: 2011-12-20 11:27:10 -0500 (Tue, 20 Dec 2011)
New Revision: 37462
Added:
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/utils/
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeek.java
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/main/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/main/webapp/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/main/webapp/WEB-INF/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/main/webapp/WEB-INF/faces-config.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/main/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/main/webapp/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/main/webapp/WEB-INF/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/main/webapp/WEB-INF/web.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/pom.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/main/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/main/webapp/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/main/webapp/WEB-INF/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/main/webapp/WEB-INF/web.xml
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/jsf/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/jsf/utils/
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeekTest.java
Modified:
trunk/maven/plugins/org.jboss.tools.maven.jsf/META-INF/MANIFEST.MF
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/configurators/JSFProjectConfigurator.java
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/JSFConfiguratorTest.java
Log:
JBIDE-10468 : Enable JSF depending on the presence of a faces-config.xml or the reference
to FacesServlet in web.xml
Modified: trunk/maven/plugins/org.jboss.tools.maven.jsf/META-INF/MANIFEST.MF
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.jsf/META-INF/MANIFEST.MF 2011-12-20 15:03:14
UTC (rev 37461)
+++ trunk/maven/plugins/org.jboss.tools.maven.jsf/META-INF/MANIFEST.MF 2011-12-20 16:27:10
UTC (rev 37462)
@@ -18,4 +18,5 @@
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Export-Package: org.jboss.tools.maven.jsf,
- org.jboss.tools.maven.jsf.configurators
+ org.jboss.tools.maven.jsf.configurators,
+ org.jboss.tools.maven.jsf.utils
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-12-20
15:03:14 UTC (rev 37461)
+++
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/configurators/JSFProjectConfigurator.java 2011-12-20
16:27:10 UTC (rev 37462)
@@ -11,12 +11,14 @@
package org.jboss.tools.maven.jsf.configurators;
import java.io.File;
+import java.io.InputStream;
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
@@ -32,7 +34,18 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jst.j2ee.internal.web.util.WebArtifactEditUtilities;
+import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
+import org.eclipse.jst.j2ee.web.componentcore.util.WebArtifactEdit;
+import org.eclipse.jst.j2ee.webapplication.Servlet;
+import org.eclipse.jst.j2ee.webapplication.ServletType;
+import org.eclipse.jst.j2ee.webapplication.WebApp;
+import org.eclipse.jst.j2ee.webapplication.WebType;
+import org.eclipse.jst.jsf.core.JSFVersion;
import
org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
+import org.eclipse.jst.jsf.core.internal.project.facet.JSFUtilFactory;
+import org.eclipse.jst.jsf.core.internal.project.facet.JSFUtils;
+import org.eclipse.jst.jsf.core.jsfappconfig.JSFAppConfigUtils;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.MavenProjectChangedEvent;
import org.eclipse.m2e.core.project.configurator.AbstractProjectConfigurator;
@@ -51,6 +64,7 @@
import org.jboss.tools.maven.jsf.MavenJSFActivator;
import org.jboss.tools.maven.jsf.MavenJSFConstants;
import org.jboss.tools.maven.jsf.Messages;
+import org.jboss.tools.maven.jsf.utils.FacesConfigQuickPeek;
import org.jboss.tools.maven.ui.Activator;
/**
@@ -67,7 +81,8 @@
private static final String WAR_SOURCE_FOLDER = "/src/main/webapp";
protected static final IProjectFacet dynamicWebFacet;
- protected static final IProjectFacetVersion dynamicWebVersion;
+ protected static IProjectFacetVersion dynamicWebVersion;
+ protected static final IProjectFacetVersion WEB_FACET_3_0;
public static final IProjectFacet JSF_FACET;
public static final IProjectFacetVersion JSF_FACET_VERSION_2_0;
@@ -78,10 +93,11 @@
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";
-
+ private static final String FACES_SERVLET =
"javax.faces.webapp.FacesServlet";
static {
dynamicWebFacet = ProjectFacetsManager.getProjectFacet("jst.web");
//$NON-NLS-1$
dynamicWebVersion = dynamicWebFacet.getVersion("2.5"); //$NON-NLS-1$
+ WEB_FACET_3_0 = dynamicWebFacet.getVersion("3.0"); //$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$
@@ -117,7 +133,7 @@
return;
}
- String jsfVersion = getJSFVersion(mavenProject, project);
+ String jsfVersion = getJSFVersion(mavenProject, fproj);
if (fproj != null && jsfVersion != null) {
installWarFacets(fproj, jsfVersion, mavenProject, monitor);
}
@@ -329,10 +345,15 @@
}
- private String getJSFVersion(MavenProject mavenProject, IProject project) {
+ private String getJSFVersion(MavenProject mavenProject, IFacetedProject fproj) {
String version = null;
- version = Activator.getDefault().getDependencyVersion(mavenProject, JSF_API_GROUP_ID,
JSF_API_ARTIFACT_ID);
+ IProject project = fproj.getProject();
+ version = getVersionFromFacesconfig(project);
+
if (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);
}
@@ -343,9 +364,87 @@
if (version == null) {
version = inferJsfVersionFromDependencies(mavenProject, JSF_API2_GROUP_ID,
JSF_API_ARTIFACT_ID, JSF_VERSION_2_0);
}
+
+ if (version == null && hasFacesServletInWebXml(project)) {
+ //No dependency on JSF, no faces-config, but uses faces-servlet
+ //so we try to best guess the version depending on the installed web facet
+ IProjectFacetVersion webVersion = fproj.getInstalledVersion(dynamicWebFacet);
+ if (webVersion.compareTo(WEB_FACET_3_0) < 0) {
+ version = JSF_VERSION_1_2;
+ } else {
+ version = JSF_VERSION_2_0;
+ }
+ }
+
return version;
}
+ private boolean hasFacesServletInWebXml(IProject project) {
+ //We look for javax.faces.webapp.FacesServlet in web.xml
+ WebArtifactEdit edit = null;
+ try {
+ IVirtualComponent component = ComponentCore.createComponent(project);
+ if (component != null) {
+ edit = WebArtifactEdit.getWebArtifactEditForRead(component);
+ if (edit !=null) {
+ WebApp webapp = edit.getWebApp();
+ if (webapp != null && webapp.getServlets() != null) {
+ for (Object o : webapp.getServlets()) {
+ if (o instanceof Servlet) {
+ WebType webType = ((Servlet) o).getWebType();
+ if (webType != null
+ && webType.isServletType()
+ && FACES_SERVLET.equals(((ServletType)webType).getClassName())){
+ return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ } finally {
+ if (edit != null)
+ edit.dispose();
+ }
+ return false;
+ }
+
+ private String getVersionFromFacesconfig(IProject project) {
+
+ IVirtualComponent component = ComponentCore.createComponent(project);
+ if (component == null) {
+ return null;
+ }
+ IFile facesConfig = null;
+ //TODO get custom faces-config.xml path from web.xml
+ IPath facesConfigPath = new Path("WEB-INF/faces-config.xml");
+ IContainer[] underlyingFolders = component.getRootFolder().getUnderlyingFolders();
+ for (IContainer underlyingFolder : underlyingFolders) {
+ IPath p = underlyingFolder.getProjectRelativePath().append(facesConfigPath);
+ IFile f = project.getFile(p);
+ if (f.exists()) {
+ facesConfig = f;
+ break;
+ }
+ }
+
+ String version = null;
+ if (facesConfig != null) {
+ InputStream in = null;
+ try {
+ in = facesConfig.getContents();
+ FacesConfigQuickPeek peek = new FacesConfigQuickPeek(in);
+ version = peek.getVersion();
+ } catch (CoreException e) {
+ // ignore
+ Activator.log(e);
+ } finally {
+ IOUtil.close(in);
+ }
+ }
+ return version;
+ }
+
/**
* Determines the JSF version by searching for the methods of
javax.faces.application.Application
* in the project's classpath.
Added:
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeek.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeek.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.jsf/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeek.java 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.maven.jsf.utils;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.jst.jee.util.internal.JavaEEQuickPeek;
+import org.eclipse.jst.jee.util.internal.XMLRootHandler;
+import org.xml.sax.InputSource;
+
+@SuppressWarnings("restriction")
+public class FacesConfigQuickPeek {
+
+ private String FACES_CONFIG_PUBLIC_ID_1_0 = "-//Sun Microsystems, Inc.//DTD
JavaServer Faces Config 1.0//EN";
+ private String FACES_CONFIG_SYSTEM_ID_1_0 =
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd";
+ private String FACES_CONFIG_PUBLIC_ID_1_1 = "-//Sun Microsystems, Inc.//DTD
JavaServer Faces Config 1.1//EN";
+ private String FACES_CONFIG_SYSTEM_ID_1_1 =
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd";
+ private String FACES_CONFIG_SCHEMA_ID_1_2 = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd";
+ private String FACES_CONFIG_SCHEMA_ID_2_0 = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd";
+ private String FACES_CONFIG_ID_1_0 = "1.0";
+ private String FACES_CONFIG_ID_1_1 = "1.1";
+ private String FACES_CONFIG_ID_1_2 = "1.2";
+ private String FACES_CONFIG_ID_2_0 = "2.0";
+
+ private XMLRootHandler handler;
+
+ private String storedVersion = null;
+
+ private boolean versionSet = false;
+
+ public FacesConfigQuickPeek(InputStream in) {
+ if (in != null) {
+ try {
+ InputSource inputSource = new InputSource(in);
+ handler = new XMLRootHandler();
+ handler.parseContents(inputSource);
+ } catch (Exception ex) {
+ // ignore
+ } finally {
+ try {
+ in.reset();
+ } catch (IOException ex) {
+ // ignore
+ }
+ }
+ }
+ }
+
+ public String getVersion() {
+ if (!versionSet) {
+ if (handler != null && "faces-config".equals(handler.getRootName()))
{
+ String version = null;
+ if (handler.getRootAttributes() != null) {
+ version = handler.getRootAttributes().getValue("version");
+ }
+ if (version == null || version.trim().length() == 0) {
+ version = getVersionFromDtdSchema();
+ }
+ storedVersion = version;
+ versionSet = true;
+ }
+
+ }
+ return storedVersion;
+ }
+
+ private String getVersionFromDtdSchema() {
+ //Algorithm copied from org.eclipse.jst.jee.util.internal.JavaEEQuickPeek
+ if (handler == null) {
+ return null;
+ }
+ String publicID = handler.getDtdPublicID();
+ String systemID = handler.getDtdSystemID();
+ String schemaName = null;
+ if (publicID == null || systemID == null) {
+ if (handler.getRootAttributes() != null) {
+ schemaName =
JavaEEQuickPeek.normalizeSchemaLocation(handler.getRootAttributes().getValue("xsi:schemaLocation"));
//$NON-NLS-1$
+ }
+ if (schemaName == null) {
+ return null;
+ }
+ }
+ String version = null;
+ if (publicID != null && systemID != null) {
+ if (publicID.equals(FACES_CONFIG_PUBLIC_ID_1_0) &&
(systemID.equals(FACES_CONFIG_SYSTEM_ID_1_0))) {
+ version = FACES_CONFIG_ID_1_0;
+ } else if (publicID.equals(FACES_CONFIG_PUBLIC_ID_1_1) &&
systemID.equals(FACES_CONFIG_SYSTEM_ID_1_1)) {
+ version = FACES_CONFIG_ID_1_1;
+ }
+ } else if (schemaName != null) {
+ if (schemaName.equals(FACES_CONFIG_SCHEMA_ID_1_2)) {
+ version = FACES_CONFIG_ID_1_2;
+ } else if (schemaName.equals(FACES_CONFIG_SCHEMA_ID_2_0)) {
+ version = FACES_CONFIG_ID_2_0;
+ }
+ }
+ return version;
+ }
+}
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/pom.xml 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,19 @@
+<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>foo.bar</groupId>
+ <artifactId>jsf-facesconfig</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/main/webapp/WEB-INF/faces-config.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-facesconfig/src/main/webapp/WEB-INF/faces-config.xml 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<faces-config
+
xmlns="http://java.sun.com/xml/ns/javaee"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+ version="2.0">
+
+</faces-config>
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/pom.xml 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,7 @@
+<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>foo.bar</groupId>
+ <artifactId>jsf-webxml</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>war</packaging>
+</project>
\ No newline at end of file
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/main/webapp/WEB-INF/web.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/main/webapp/WEB-INF/web.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-12/src/main/webapp/WEB-INF/web.xml 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
+ <display-name>foo</display-name>
+
+ <!-- Faces Servlet -->
+ <servlet>
+ <servlet-name>faces</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ </servlet>
+
+ <!-- Faces Servlet Mappings -->
+ <servlet-mapping>
+ <servlet-name>faces</servlet-name>
+ <url-pattern>/faces/*</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ <welcome-file>default.html</welcome-file>
+ <welcome-file>default.htm</welcome-file>
+ <welcome-file>default.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
\ No newline at end of file
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/pom.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/pom.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/pom.xml 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,19 @@
+<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>foo.bar</groupId>
+ <artifactId>jsf-webxml-20</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/main/webapp/WEB-INF/web.xml
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/main/webapp/WEB-INF/web.xml
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/projects/jsf/JBIDE-10468/jsf-webxml-20/src/main/webapp/WEB-INF/web.xml 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
+ <display-name>foo</display-name>
+
+ <!-- Faces Servlet -->
+ <servlet>
+ <servlet-name>faces</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ </servlet>
+
+ <!-- Faces Servlet Mappings -->
+ <servlet-mapping>
+ <servlet-name>faces</servlet-name>
+ <url-pattern>/faces/*</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ <welcome-file>default.html</welcome-file>
+ <welcome-file>default.htm</welcome-file>
+ <welcome-file>default.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
\ No newline at end of file
Modified:
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 2011-12-20
15:03:14 UTC (rev 37461)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/configurators/tests/JSFConfiguratorTest.java 2011-12-20
16:27:10 UTC (rev 37462)
@@ -63,8 +63,31 @@
File originalWebXml = new File(projectLocation, webxmlRelPath);
assertEquals("web.xml content changed ", toString(originalWebXml),
toString(webXml));
}
+
+
+ @Test
+ public void testJBIDE10468_facesServletInWebXml() throws Exception {
+ String projectLocation = "projects/jsf/JBIDE-10468/jsf-webxml-20";
+ IProject jsfProject = importProject(projectLocation+"/pom.xml");
+ waitForJobsToComplete(new NullProgressMonitor());
+ assertIsJSFProject(jsfProject, JSFProjectConfigurator.JSF_FACET_VERSION_2_0);
+
+ projectLocation = "projects/jsf/JBIDE-10468/jsf-webxml-12";
+ jsfProject = importProject(projectLocation+"/pom.xml");
+ waitForJobsToComplete(new NullProgressMonitor());
+ assertIsJSFProject(jsfProject, JSFProjectConfigurator.JSF_FACET_VERSION_1_2);
+ }
@Test
+ public void testJBIDE10468_detectFacesConfig() throws Exception {
+ String projectLocation = "projects/jsf/JBIDE-10468/jsf-facesconfig";
+ IProject jsfProject = importProject(projectLocation+"/pom.xml");
+ waitForJobsToComplete(new NullProgressMonitor());
+ assertIsJSFProject(jsfProject, JSFProjectConfigurator.JSF_FACET_VERSION_2_0);
+ }
+
+
+ @Test
public void testJBIDE9455_errorMarkers() throws Exception {
String projectLocation = "projects/jsf/jsf-error";
IProject jsfProject = importProject(projectLocation+"/pom.xml");
Added:
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeekTest.java
===================================================================
---
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeekTest.java
(rev 0)
+++
trunk/maven/tests/org.jboss.tools.maven.configurators.tests/src/org/jboss/tools/maven/jsf/utils/FacesConfigQuickPeekTest.java 2011-12-20
16:27:10 UTC (rev 37462)
@@ -0,0 +1,45 @@
+package org.jboss.tools.maven.jsf.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import junit.framework.TestCase;
+
+public class FacesConfigQuickPeekTest extends TestCase {
+
+ public void testGetVersion() {
+ assertVersion("2.0", getInputStream("<faces-config
version=\"2.0\"></faces-config>"));
+ assertVersion("1.2", getInputStream("<faces-config
version=\"1.2\"></faces-config>"));
+ assertVersion(null, getInputStream("<faces-config
version=\"\"></faces-config>"));
+ assertVersion(null,
getInputStream("<faces-config></faces-config>"));
+ assertVersion(null, getInputStream("<faces-config
version=\"2.0\""));
+ assertVersion(null, getInputStream(""));
+ assertVersion(null, getInputStream("<dummy
version=\"3.0\">"));
+ }
+
+ public void testGetVersionFromDTD() {
+ assertVersion("1.0", getInputStream("<!DOCTYPE faces-config PUBLIC
\"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"
\"http://java.sun.com/dtd/web-facesconfig_1_0.dtd\"><faces-config></faces-config>"));
+ assertVersion("1.1", getInputStream("<!DOCTYPE faces-config PUBLIC
\"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN\"
\"http://java.sun.com/dtd/web-facesconfig_1_1.dtd\"><faces-config></faces-config>"));
+ assertVersion("1.2", getInputStream("<faces-config
xmlns=\"http://java.sun.com/xml/ns/javaee\""
+ + "
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ + "
xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\" >"));
+ assertVersion("2.0", getInputStream("<faces-config
xmlns=\"http://java.sun.com/xml/ns/javaee\""
+ + "
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ + "
xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\" >"));
+ }
+
+ private InputStream getInputStream(String s) {
+ try {
+ return (s == null)? null :new ByteArrayInputStream(s.getBytes("UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private void assertVersion(String expectedVersion, InputStream in) {
+ FacesConfigQuickPeek qp = new FacesConfigQuickPeek(in);
+ assertEquals(expectedVersion, qp.getVersion());
+ }
+}