Author: snjeza
Date: 2008-06-04 14:15:47 -0400 (Wed, 04 Jun 2008)
New Revision: 8552
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/SeamFacetAbstractInstallDelegate.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegate.java
Log:
JBIDE-2292 Seam facet doesn't use the WTP API
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 2008-06-04
17:00:19 UTC (rev 8551)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/Seam2FacetInstallDelegate.java 2008-06-04
18:15:47 UTC (rev 8552)
@@ -15,8 +15,6 @@
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
import java.util.Properties;
import java.util.Set;
@@ -38,22 +36,7 @@
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.jdt.internal.ui.jarpackagerfat.FatJarAntExporter;
import org.eclipse.jst.common.project.facet.core.ClasspathHelper;
-import org.eclipse.jst.j2ee.model.IModelProvider;
-import org.eclipse.jst.j2ee.model.ModelProviderManager;
-import org.eclipse.jst.javaee.core.DisplayName;
-import org.eclipse.jst.javaee.core.JavaeeFactory;
-import org.eclipse.jst.javaee.core.Listener;
-import org.eclipse.jst.javaee.core.ParamValue;
-import org.eclipse.jst.javaee.core.UrlPatternType;
-import org.eclipse.jst.javaee.web.AuthConstraint;
-import org.eclipse.jst.javaee.web.Filter;
-import org.eclipse.jst.javaee.web.FilterMapping;
-import org.eclipse.jst.javaee.web.SecurityConstraint;
-import org.eclipse.jst.javaee.web.Servlet;
-import org.eclipse.jst.javaee.web.ServletMapping;
import org.eclipse.jst.javaee.web.WebApp;
-import org.eclipse.jst.javaee.web.WebFactory;
-import org.eclipse.jst.javaee.web.WebResourceCollection;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
@@ -73,23 +56,6 @@
// TODO: why not just *one* global filter set to avoid any missing names ? (assert for it
in our unittests!
public class Seam2FacetInstallDelegate extends SeamFacetAbstractInstallDelegate{
- public static String ORG_RICHFACES_SKIN = "org.richfaces.SKIN"; //$NON-NLS-1$
- public static String ORG_RICHFACES_SKIN_VALUE = "@skin@"; //$NON-NLS-1$
- public static String ORG_JBOSS_SEAM_SERVLET_SEAMLISTENER =
"org.jboss.seam.servlet.SeamListener"; //$NON-NLS-1$
- public static String ORG_JBOSS_SEAM_SERVLET_SEAMFILTER =
"org.jboss.seam.servlet.SeamFilter"; //$NON-NLS-1$
- public static String ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME = "Seam Filter";
//$NON-NLS-1$
- //public static String ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_MAPPING = "Seam
Filter"; //$NON-NLS-1$
- public static String ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_MAPPING_VALUE = "/*";
//$NON-NLS-1$
- public static String ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET =
"org.jboss.seam.servlet.SeamResourceServlet"; //$NON-NLS-1$
- public static String ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME = "Seam
Resource Servlet"; //$NON-NLS-1$
- public static String ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_VALUE =
"/seam/resource/*"; //$NON-NLS-1$
- public static String FACELETS_DEVELOPMENT = "facelets.DEVELOPMENT";
//$NON-NLS-1$
- public static String JAVAX_FACES_DEFAULT_SUFFIX =
"javax.faces.DEFAULT_SUFFIX"; //$NON-NLS-1$
- public static String JAVAX_FACES_DEFAULT_SUFFIX_VALUE = ".xhtml";
//$NON-NLS-1$
- public static String RESTRICT_RAW_XHTML = "Restrict raw XHTML Documents";
//$NON-NLS-1$
- public static String XHTML = "XHTML"; //$NON-NLS-1$
- public static String WEB_RESOURCE_COLLECTION_PATTERN = "*.xhtml";
//$NON-NLS-1$
-
public static String DEV_WAR_PROFILE = "dev-war"; //$NON-NLS-1$
public static String DEV_EAR_PROFILE = "dev"; //$NON-NLS-1$
public static String TEST_WAR_PROFILE = "test-war"; //$NON-NLS-1$
@@ -549,252 +515,6 @@
toggleHibernateOnProject(testProjectToBeImported, consoleName);
}
- private void configureWebXml(final IProject project) {
- IModelProvider modelProvider = ModelProviderManager
- .getModelProvider(project);
- Object modelObject = modelProvider.getModelObject();
- if (!(modelObject instanceof WebApp)) {
- // TODO log
- return;
- }
- IPath modelPath = new Path("WEB-INF").append("web.xml");
//$NON-NLS-1$ //$NON-NLS-2$
- boolean exists = project.getProjectRelativePath().append(modelPath)
- .toFile().exists();
- if (!exists) {
- modelPath = IModelProvider.FORCESAVE;
- }
- modelProvider.modify(new Runnable() {
-
- public void run() {
- IModelProvider modelProvider = ModelProviderManager
- .getModelProvider(project);
- Object modelObject = modelProvider.getModelObject();
- if (!(modelObject instanceof WebApp)) {
- // TODO log
- return;
- }
- WebApp webApp = (WebApp) modelObject;
- // Ajax4jsf
- createOrUpdateContextParam(webApp, ORG_RICHFACES_SKIN,
- ORG_RICHFACES_SKIN_VALUE);
- // Seam
- createOrUpdateListener(webApp,
- ORG_JBOSS_SEAM_SERVLET_SEAMLISTENER);
- createOrUpdateFilter(webApp,
- ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME,
- ORG_JBOSS_SEAM_SERVLET_SEAMFILTER);
- createOrUpdateFilterMapping(webApp,
- ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME,
- ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_MAPPING_VALUE);
- createOrUpdateServlet(webApp,
- ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET,
- ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME);
- createOrUpdateServletMapping(webApp,
- ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME,
- ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_VALUE);
- // Facelets development mode (disable in production)
- createOrUpdateContextParam(webApp, FACELETS_DEVELOPMENT, "true");
- // JSF
- createOrUpdateContextParam(webApp, JAVAX_FACES_DEFAULT_SUFFIX,
- JAVAX_FACES_DEFAULT_SUFFIX_VALUE);
- // other JSF artifacts have been configured by the JSF facet
-
- // Security
- addSecurityConstraint(webApp);
- }
-
- }, modelPath);
-
- }
-
- private void addSecurityConstraint(WebApp webApp) {
-
- SecurityConstraint securityConstraint =
WebFactory.eINSTANCE.createSecurityConstraint();
- DisplayName displayName = JavaeeFactory.eINSTANCE.createDisplayName();
- displayName.setValue(RESTRICT_RAW_XHTML);
- securityConstraint.getDisplayNames().add(displayName);
-
- WebResourceCollection webResourceCollection =
WebFactory.eINSTANCE.createWebResourceCollection();
- webResourceCollection.setWebResourceName(XHTML);
- UrlPatternType urlPattern = JavaeeFactory.eINSTANCE.createUrlPatternType();
- urlPattern.setValue(WEB_RESOURCE_COLLECTION_PATTERN);
- webResourceCollection.getUrlPatterns().add(urlPattern);
-
- AuthConstraint authConstraint = WebFactory.eINSTANCE.createAuthConstraint();
- securityConstraint.setAuthConstraint(authConstraint);
-
- securityConstraint.getWebResourceCollections().add(webResourceCollection);
- webApp.getSecurityConstraints().add(securityConstraint);
- }
-
- private void createOrUpdateServletMapping(WebApp webApp, String name, String value) {
- if (name == null || value == null)
- return;
-
- List servletMappings = webApp.getServletMappings();
- boolean added = false;
- for (Iterator iterator = servletMappings.iterator(); iterator.hasNext();) {
- ServletMapping servletMapping = (ServletMapping) iterator.next();
- if (servletMapping != null && name.equals(servletMapping.getServletName())) {
- added = true;
- // FIXME
- }
- }
- if (!added) {
- ServletMapping mapping = WebFactory.eINSTANCE.createServletMapping();
- Servlet servlet = findServletByName(webApp, name);
- if (servlet != null) {
- mapping.setServletName(servlet.getServletName());
- UrlPatternType urlPattern = JavaeeFactory.eINSTANCE.createUrlPatternType();
- urlPattern.setValue(value);
- mapping.getUrlPatterns().add(urlPattern);
- webApp.getServletMappings().add(mapping);
- }
- }
- }
-
- private Servlet findServletByName(WebApp webApp, String name) {
- Iterator it = webApp.getServlets().iterator();
- while (it.hasNext()) {
- Servlet servlet = (Servlet) it.next();
- if (servlet.getServletName() != null
- && servlet.getServletName().trim().equals(name)) {
- return servlet;
- }
- }
- return null;
- }
-
- private void createOrUpdateServlet(WebApp webApp, String servletClass, String
servletName) {
- if (servletClass == null || servletName == null)
- return;
-
- List servlets = webApp.getServlets();
- boolean added = false;
- for (Iterator iterator = servlets.iterator(); iterator.hasNext();) {
- Servlet servlet = (Servlet) iterator.next();
- if (servletName.equals(servlet.getServletName())) {
- servlet.setServletName(servletName);
- added=true;
- break;
- }
- }
- if (!added) {
- Servlet servlet = WebFactory.eINSTANCE.createServlet();
- servlet.setServletName(servletName);
- servlet.setServletClass(servletClass);
- webApp.getServlets().add(servlet);
- }
- }
-
- private void createOrUpdateFilterMapping(WebApp webApp, String mapping, String value) {
- if (mapping == null || value == null)
- return;
- List filterMappings = webApp.getFilterMappings();
- boolean added = false;
- for (Iterator iterator = filterMappings.iterator(); iterator.hasNext();) {
- FilterMapping filterMapping = (FilterMapping) iterator.next();
- String filterName = filterMapping.getFilterName();
- List filters = webApp.getFilters();
- for (Iterator iterator2 = filters.iterator(); iterator2.hasNext();) {
- Filter filter = (Filter) iterator2.next();
- if (filter != null && filterName != null &&
filterName.equals(filter.getFilterName())) {
- // FIXME
- added = true;
- break;
- }
- }
- if (added)
- break;
- }
- if (!added) {
- FilterMapping filterMapping = WebFactory.eINSTANCE.createFilterMapping();
- Filter filter = (Filter) getFilterByName(webApp, mapping);
- if (filter != null) {
- filterMapping.setFilterName(filter.getFilterName());
- UrlPatternType urlPattern = JavaeeFactory.eINSTANCE.createUrlPatternType();
- urlPattern.setValue(value);
- filterMapping.getUrlPatterns().add(urlPattern);
-
- webApp.getFilterMappings().add(filterMapping);
- }
- }
- }
-
- private Object getFilterByName(WebApp webApp, String name) {
- if (webApp == null || name == null)
- return null;
- List filters = webApp.getFilters();
- for (Iterator iterator = filters.iterator(); iterator.hasNext();) {
- Filter filter = (Filter) iterator.next();
- if (filter != null && name.equals(filter.getFilterName()))
- return filter;
- }
-
- return null;
- }
- private void createOrUpdateFilter(WebApp webApp, String name, String clazz) {
- if (name == null || clazz == null)
- return;
- List filters = webApp.getFilters();
- boolean added = false;
- for (Iterator iterator = filters.iterator(); iterator.hasNext();) {
- Filter filter = (Filter) iterator.next();
- if (filter != null && name.endsWith(filter.getFilterName())) {
- filter.setFilterName(name);
- filter.setFilterClass(clazz);
- added = true;
- break;
- }
- }
- if (!added) {
- Filter filter = WebFactory.eINSTANCE.createFilter();
- filter.setFilterName(name);
- filter.setFilterClass(clazz);
- webApp.getFilters().add(filter);
- }
- }
-
- private void createOrUpdateListener(WebApp webApp, String name) {
- if (name == null)
- return;
- List listeners = webApp.getListeners();
- boolean added = false;
- for (Iterator iterator = listeners.iterator(); iterator.hasNext();) {
- Listener listener = (Listener) iterator.next();
- if (listener != null && name.equals(listener.getListenerClass())) {
- listener.setListenerClass(name);
- added = true;
- }
- }
- if (!added) {
- Listener listener = JavaeeFactory.eINSTANCE.createListener();
- listener.setListenerClass(name);
- webApp.getListeners().add(listener);
- }
- }
-
- private void createOrUpdateContextParam(WebApp webApp, String name,String value) {
- if (name == null || value == null)
- return;
- List paramValues = webApp.getContextParams();
- boolean added = false;
- for (Iterator iterator = paramValues.iterator(); iterator.hasNext();) {
- ParamValue paramValue = (ParamValue) iterator.next();
- if (paramValue != null && name.equals(paramValue.getParamName())) {
- paramValue.setParamValue(value);
- added = true;
- break;
- }
- }
- if (!added) {
- ParamValue paramValue = JavaeeFactory.eINSTANCE.createParamValue();
- paramValue.setParamName(name);
- paramValue.setParamValue(value);
- webApp.getContextParams().add(paramValue);
- }
- }
-
public static boolean isWarConfiguration(IDataModel model) {
return
"war".equals(model.getProperty(ISeamFacetDataModelProperties.JBOSS_AS_DEPLOY_AS));
//$NON-NLS-1$
}
@@ -931,6 +651,36 @@
}
}
+ protected void configure(WebApp webApp) {
+ // Ajax4jsf
+ createOrUpdateContextParam(webApp, ORG_RICHFACES_SKIN,
+ ORG_RICHFACES_SKIN_VALUE);
+ // Seam
+ createOrUpdateListener(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMLISTENER);
+ createOrUpdateFilter(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME,
+ ORG_JBOSS_SEAM_SERVLET_SEAMFILTER);
+ createOrUpdateFilterMapping(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME,
+ ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_MAPPING_VALUE);
+ createOrUpdateServlet(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME);
+ createOrUpdateServletMapping(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_VALUE);
+ // Facelets development mode (disable in production)
+ createOrUpdateContextParam(webApp, FACELETS_DEVELOPMENT, "true");
+ // JSF
+ createOrUpdateContextParam(webApp, JAVAX_FACES_DEFAULT_SUFFIX,
+ JAVAX_FACES_DEFAULT_SUFFIX_VALUE);
+ // other JSF artifacts have been configured by the JSF facet
+
+ // Security
+ addSecurityConstraint(webApp);
+ }
+
public static boolean toggleHibernateOnProject(IProject project, String
defaultConsoleName) {
IScopeContext scope = new ProjectScope(project);
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 2008-06-04
17:00:19 UTC (rev 8551)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java 2008-06-04
18:15:47 UTC (rev 8552)
@@ -10,8 +10,10 @@
******************************************************************************/
package org.jboss.tools.seam.internal.core.project.facet;
+import java.util.Iterator;
+import java.util.List;
+
import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.CoreException;
@@ -24,6 +26,22 @@
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jst.j2ee.model.IModelProvider;
+import org.eclipse.jst.j2ee.model.ModelProviderManager;
+import org.eclipse.jst.javaee.core.DisplayName;
+import org.eclipse.jst.javaee.core.JavaeeFactory;
+import org.eclipse.jst.javaee.core.Listener;
+import org.eclipse.jst.javaee.core.ParamValue;
+import org.eclipse.jst.javaee.core.UrlPatternType;
+import org.eclipse.jst.javaee.web.AuthConstraint;
+import org.eclipse.jst.javaee.web.Filter;
+import org.eclipse.jst.javaee.web.FilterMapping;
+import org.eclipse.jst.javaee.web.SecurityConstraint;
+import org.eclipse.jst.javaee.web.Servlet;
+import org.eclipse.jst.javaee.web.ServletMapping;
+import org.eclipse.jst.javaee.web.WebApp;
+import org.eclipse.jst.javaee.web.WebFactory;
+import org.eclipse.jst.javaee.web.WebResourceCollection;
import org.eclipse.swt.widgets.Display;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
@@ -43,6 +61,22 @@
public abstract class SeamFacetAbstractInstallDelegate implements ILogListener,
IDelegate,ISeamFacetDataModelProperties {
+ public static String ORG_RICHFACES_SKIN = "org.richfaces.SKIN";
+ public static String ORG_RICHFACES_SKIN_VALUE = "@skin@";
+ public static String ORG_JBOSS_SEAM_SERVLET_SEAMLISTENER =
"org.jboss.seam.servlet.SeamListener";
+ public static String ORG_JBOSS_SEAM_SERVLET_SEAMFILTER =
"org.jboss.seam.servlet.SeamFilter";
+ public static String ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME = "Seam Filter";
+ public static String ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_MAPPING_VALUE = "/*";
+ public static String ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET =
"org.jboss.seam.servlet.SeamResourceServlet";
+ public static String ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME = "Seam
Resource Servlet";
+ public static String ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_VALUE =
"/seam/resource/*";
+ public static String FACELETS_DEVELOPMENT = "facelets.DEVELOPMENT";
+ public static String JAVAX_FACES_DEFAULT_SUFFIX =
"javax.faces.DEFAULT_SUFFIX";
+ public static String JAVAX_FACES_DEFAULT_SUFFIX_VALUE = ".xhtml";
+ public static String RESTRICT_RAW_XHTML = "Restrict raw XHTML Documents";
+ public static String XHTML = "XHTML";
+ public static String WEB_RESOURCE_COLLECTION_PATTERN = "*.xhtml";
+
/* (non-Javadoc)
* @see
org.eclipse.wst.common.project.facet.core.IDelegate#execute(org.eclipse.core.resources.IProject,
org.eclipse.wst.common.project.facet.core.IProjectFacetVersion, java.lang.Object,
org.eclipse.core.runtime.IProgressMonitor)
*/
@@ -173,4 +207,241 @@
SeamCorePlugin.getPluginLog().logError(e);
}
}
+
+ protected void addSecurityConstraint(WebApp webApp) {
+ SecurityConstraint securityConstraint = WebFactory.eINSTANCE
+ .createSecurityConstraint();
+ DisplayName displayName = JavaeeFactory.eINSTANCE.createDisplayName();
+ displayName.setValue(RESTRICT_RAW_XHTML);
+ securityConstraint.getDisplayNames().add(displayName);
+
+ WebResourceCollection webResourceCollection = WebFactory.eINSTANCE
+ .createWebResourceCollection();
+ webResourceCollection.setWebResourceName(XHTML);
+ UrlPatternType urlPattern = JavaeeFactory.eINSTANCE
+ .createUrlPatternType();
+ urlPattern.setValue(WEB_RESOURCE_COLLECTION_PATTERN);
+ webResourceCollection.getUrlPatterns().add(urlPattern);
+
+ AuthConstraint authConstraint = WebFactory.eINSTANCE
+ .createAuthConstraint();
+ securityConstraint.setAuthConstraint(authConstraint);
+
+ securityConstraint.getWebResourceCollections().add(
+ webResourceCollection);
+ webApp.getSecurityConstraints().add(securityConstraint);
+ }
+
+ protected void createOrUpdateServletMapping(WebApp webApp, String name,
+ String value) {
+ if (name == null || value == null)
+ return;
+
+ List servletMappings = webApp.getServletMappings();
+ boolean added = false;
+ for (Iterator iterator = servletMappings.iterator(); iterator.hasNext();) {
+ ServletMapping servletMapping = (ServletMapping) iterator.next();
+ if (servletMapping != null
+ && name.equals(servletMapping.getServletName())) {
+ added = true;
+ // FIXME
+ }
+ }
+ if (!added) {
+ ServletMapping mapping = WebFactory.eINSTANCE
+ .createServletMapping();
+ Servlet servlet = findServletByName(webApp, name);
+ if (servlet != null) {
+ mapping.setServletName(servlet.getServletName());
+ UrlPatternType urlPattern = JavaeeFactory.eINSTANCE
+ .createUrlPatternType();
+ urlPattern.setValue(value);
+ mapping.getUrlPatterns().add(urlPattern);
+ webApp.getServletMappings().add(mapping);
+ }
+ }
+ }
+
+ private Servlet findServletByName(WebApp webApp, String name) {
+ Iterator it = webApp.getServlets().iterator();
+ while (it.hasNext()) {
+ Servlet servlet = (Servlet) it.next();
+ if (servlet.getServletName() != null
+ && servlet.getServletName().trim().equals(name)) {
+ return servlet;
+ }
+ }
+ return null;
+ }
+
+ protected void createOrUpdateServlet(WebApp webApp, String servletClass,
+ String servletName) {
+ if (servletClass == null || servletName == null)
+ return;
+
+ List servlets = webApp.getServlets();
+ boolean added = false;
+ for (Iterator iterator = servlets.iterator(); iterator.hasNext();) {
+ Servlet servlet = (Servlet) iterator.next();
+ if (servletName.equals(servlet.getServletName())) {
+ servlet.setServletName(servletName);
+ added = true;
+ break;
+ }
+ }
+ if (!added) {
+ Servlet servlet = WebFactory.eINSTANCE.createServlet();
+ servlet.setServletName(servletName);
+ servlet.setServletClass(servletClass);
+ webApp.getServlets().add(servlet);
+ }
+ }
+
+ protected void createOrUpdateFilterMapping(WebApp webApp, String mapping,
+ String value) {
+ if (mapping == null || value == null)
+ return;
+ List filterMappings = webApp.getFilterMappings();
+ boolean added = false;
+ for (Iterator iterator = filterMappings.iterator(); iterator.hasNext();) {
+ FilterMapping filterMapping = (FilterMapping) iterator.next();
+ String filterName = filterMapping.getFilterName();
+ List filters = webApp.getFilters();
+ for (Iterator iterator2 = filters.iterator(); iterator2.hasNext();) {
+ Filter filter = (Filter) iterator2.next();
+ if (filter != null && filterName != null
+ && filterName.equals(filter.getFilterName())) {
+ // FIXME
+ added = true;
+ break;
+ }
+ }
+ if (added)
+ break;
+ }
+ if (!added) {
+ FilterMapping filterMapping = WebFactory.eINSTANCE
+ .createFilterMapping();
+ Filter filter = (Filter) getFilterByName(webApp, mapping);
+ if (filter != null) {
+ filterMapping.setFilterName(filter.getFilterName());
+ UrlPatternType urlPattern = JavaeeFactory.eINSTANCE
+ .createUrlPatternType();
+ urlPattern.setValue(value);
+ filterMapping.getUrlPatterns().add(urlPattern);
+
+ webApp.getFilterMappings().add(filterMapping);
+ }
+ }
+ }
+
+ protected Object getFilterByName(WebApp webApp, String name) {
+ if (webApp == null || name == null)
+ return null;
+ List filters = webApp.getFilters();
+ for (Iterator iterator = filters.iterator(); iterator.hasNext();) {
+ Filter filter = (Filter) iterator.next();
+ if (filter != null && name.equals(filter.getFilterName()))
+ return filter;
+ }
+
+ return null;
+ }
+
+ protected void createOrUpdateFilter(WebApp webApp, String name, String clazz) {
+ if (name == null || clazz == null)
+ return;
+ List filters = webApp.getFilters();
+ boolean added = false;
+ for (Iterator iterator = filters.iterator(); iterator.hasNext();) {
+ Filter filter = (Filter) iterator.next();
+ if (filter != null && name.endsWith(filter.getFilterName())) {
+ filter.setFilterName(name);
+ filter.setFilterClass(clazz);
+ added = true;
+ break;
+ }
+ }
+ if (!added) {
+ Filter filter = WebFactory.eINSTANCE.createFilter();
+ filter.setFilterName(name);
+ filter.setFilterClass(clazz);
+ webApp.getFilters().add(filter);
+ }
+ }
+
+ protected void createOrUpdateListener(WebApp webApp, String name) {
+ if (name == null)
+ return;
+ List listeners = webApp.getListeners();
+ boolean added = false;
+ for (Iterator iterator = listeners.iterator(); iterator.hasNext();) {
+ Listener listener = (Listener) iterator.next();
+ if (listener != null && name.equals(listener.getListenerClass())) {
+ listener.setListenerClass(name);
+ added = true;
+ }
+ }
+ if (!added) {
+ Listener listener = JavaeeFactory.eINSTANCE.createListener();
+ listener.setListenerClass(name);
+ webApp.getListeners().add(listener);
+ }
+ }
+
+ protected void createOrUpdateContextParam(WebApp webApp, String name,
+ String value) {
+ if (name == null || value == null)
+ return;
+ List paramValues = webApp.getContextParams();
+ boolean added = false;
+ for (Iterator iterator = paramValues.iterator(); iterator.hasNext();) {
+ ParamValue paramValue = (ParamValue) iterator.next();
+ if (paramValue != null && name.equals(paramValue.getParamName())) {
+ paramValue.setParamValue(value);
+ added = true;
+ break;
+ }
+ }
+ if (!added) {
+ ParamValue paramValue = JavaeeFactory.eINSTANCE.createParamValue();
+ paramValue.setParamName(name);
+ paramValue.setParamValue(value);
+ webApp.getContextParams().add(paramValue);
+ }
+ }
+
+ protected abstract void configure(WebApp webApp);
+
+ protected void configureWebXml(final IProject project) {
+ IModelProvider modelProvider = ModelProviderManager
+ .getModelProvider(project);
+ Object modelObject = modelProvider.getModelObject();
+ if (!(modelObject instanceof WebApp)) {
+ // TODO log
+ return;
+ }
+ IPath modelPath = new Path("WEB-INF").append("web.xml");
//$NON-NLS-1$ //$NON-NLS-2$
+ boolean exists = project.getProjectRelativePath().append(modelPath)
+ .toFile().exists();
+ if (!exists) {
+ modelPath = IModelProvider.FORCESAVE;
+ }
+ modelProvider.modify(new Runnable() {
+
+ public void run() {
+ IModelProvider modelProvider = ModelProviderManager
+ .getModelProvider(project);
+ Object modelObject = modelProvider.getModelObject();
+ if (!(modelObject instanceof WebApp)) {
+ // TODO log
+ return;
+ }
+ WebApp webApp = (WebApp) modelObject;
+ configure(webApp);
+ }
+
+ }, modelPath);
+
+ }
}
\ No newline at end of file
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 2008-06-04
17:00:19 UTC (rev 8551)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegate.java 2008-06-04
18:15:47 UTC (rev 8552)
@@ -14,6 +14,7 @@
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
+import java.util.List;
import java.util.Properties;
import org.apache.tools.ant.types.FilterSet;
@@ -33,6 +34,11 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.jst.common.project.facet.core.ClasspathHelper;
+import org.eclipse.jst.javaee.core.DisplayName;
+import org.eclipse.jst.javaee.core.JavaeeFactory;
+import org.eclipse.jst.javaee.web.Filter;
+import org.eclipse.jst.javaee.web.WebApp;
+import org.eclipse.jst.javaee.web.WebFactory;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
@@ -56,6 +62,16 @@
*/
public class SeamFacetInstallDelegate extends SeamFacetAbstractInstallDelegate {
+ private static final String JAVAX_FACES_STATE_SAVING_METHOD =
"javax.faces.STATE_SAVING_METHOD";
+
+ private static final String CLIENT = "client";
+
+ private static final String ORG_JBOSS_SEAM_WEB_SEAM_FILTER =
"org.jboss.seam.web.SeamFilter";
+
+ private static final String BLUE_SKY = "blueSky";
+
+ private static final String ORG_AJAX4JSF_SKIN = "org.ajax4jsf.SKIN";
+
/**
*
**/
@@ -105,6 +121,18 @@
// el-ri needed for JBIDE-939
.include("el-ri.*\\.jar"); //$NON-NLS-1$
+ private static final String ORG_AJAX4JSF_FILTER_NAME = "ajax4jsf";
+
+ private static final String ORG_AJAX4JSF_FILTER_CLASS =
"org.ajax4jsf.Filter";
+
+ private static final String ORG_AJAX4JSF_FILTER_DISPLAY_NAME = "Ajax4jsf
Filter";
+
+ private static final String ORG_AJAX4JSF_FILTER_MAPPING = "*.seam";
+
+ private static final String ORG_JBOSS_SEAM_UI_SEAMFACELETVIEWHANDLER =
"org.jboss.seam.ui.facelet.SeamFaceletViewHandler";
+
+ private static final String ORG_AJAX4JSF_VIEW_HANDLERS =
"org.ajax4jsf.VIEW_HANDLERS";
+
/**
*
*/
@@ -195,7 +223,7 @@
*/
public static AntCopyUtils.FileSet JBOOS_WAR_WEBINF_SET = new AntCopyUtils.FileSet()
.include("WEB-INF") //$NON-NLS-1$
- .include("WEB-INF/web\\.xml") //$NON-NLS-1$
+ //.include("WEB-INF/web\\.xml") //$NON-NLS-1$
.include("WEB-INF/pages\\.xml") //$NON-NLS-1$
.include("WEB-INF/jboss-web\\.xml") //$NON-NLS-1$
.include("WEB-INF/faces-config\\.xml") //$NON-NLS-1$
@@ -321,6 +349,8 @@
// *******************************************************************
AntCopyUtils.FileSet webInfSet = new
AntCopyUtils.FileSet(JBOOS_WAR_WEBINF_SET).dir(seamGenResFolder);
+ configureWebXml(project);
+
AntCopyUtils.copyFileToFile(
componentsFile,
new File(webInfFolder, "components.xml"), //$NON-NLS-1$
@@ -726,4 +756,58 @@
return false;
}
}
+
+ @Override
+ protected void configure(WebApp webApp) {
+ // Ajax4jsf (must come first!)
+ // FIXME supposing that the Ajax4jsf filter must come before the Seam filter
+ createOrUpdateFilter(webApp,
+ ORG_AJAX4JSF_FILTER_NAME,
+ ORG_AJAX4JSF_FILTER_CLASS,
+ ORG_AJAX4JSF_FILTER_DISPLAY_NAME);
+ // FIXME not sure if this filter has to have the same mapping as Faces Servlet
+ createOrUpdateFilterMapping(webApp,
+ ORG_AJAX4JSF_FILTER_NAME,
+ ORG_AJAX4JSF_FILTER_MAPPING);
+
+ createOrUpdateContextParam(webApp, ORG_AJAX4JSF_VIEW_HANDLERS,
+ ORG_JBOSS_SEAM_UI_SEAMFACELETVIEWHANDLER);
+ createOrUpdateContextParam(webApp, ORG_AJAX4JSF_SKIN,
+ BLUE_SKY);
+ // Seam
+ createOrUpdateListener(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMLISTENER);
+ createOrUpdateFilter(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME,
+ ORG_JBOSS_SEAM_WEB_SEAM_FILTER);
+ createOrUpdateFilterMapping(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_NAME,
+ ORG_JBOSS_SEAM_SERVLET_SEAMFILTER_MAPPING_VALUE);
+ createOrUpdateServlet(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME);
+ createOrUpdateServletMapping(webApp,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_NAME,
+ ORG_JBOSS_SEAM_SERVLET_SEAMRESOURCESERVLET_VALUE);
+ // Facelets development mode (disable in production)
+ createOrUpdateContextParam(webApp, FACELETS_DEVELOPMENT, "true");
+ // JSF
+ createOrUpdateContextParam(webApp, JAVAX_FACES_STATE_SAVING_METHOD,
+ CLIENT);
+ createOrUpdateContextParam(webApp, JAVAX_FACES_DEFAULT_SUFFIX,
+ JAVAX_FACES_DEFAULT_SUFFIX_VALUE);
+ // other JSF artifacts have been configured by the JSF facet
+
+ // Security
+ addSecurityConstraint(webApp);
+ }
+
+ private void createOrUpdateFilter(WebApp webApp, String name,
+ String className, String displayName) {
+ createOrUpdateFilter(webApp,name,className);
+ Filter filter = (Filter) getFilterByName(webApp,name);
+ DisplayName displayNameObj = JavaeeFactory.eINSTANCE.createDisplayName();
+ displayNameObj.setValue(displayName);
+ filter.getDisplayNames().add(displayNameObj);
+ }
}
\ No newline at end of file