Author: snjeza
Date: 2008-08-03 20:41:46 -0400 (Sun, 03 Aug 2008)
New Revision: 9480
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletConfigurationPresetFactory10.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDataModelProvider.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDelegate.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetUninstallDelegate.java
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java
Log:
JBIDE-2234 JBoss Seam Portlet
Modified: trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml
===================================================================
--- trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml 2008-08-02 03:11:36 UTC
(rev 9479)
+++ trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml 2008-08-04 00:41:46 UTC
(rev 9480)
@@ -3,11 +3,17 @@
<plugin>
<extension point="org.eclipse.wst.common.project.facet.core.facets">
+ <category id="portlet.category">
+ <label>JBoss Portlets</label>
+ <description>JBoss Portlets</description>
+ </category>
+
<project-facet id="jboss.portlet">
- <label>JBoss Portlet</label>
+ <label>JBoss Core Portlet</label>
<description>
Adds support for the Java Portlet API.
</description>
+ <member category="portlet.category "/>
<default-version version="2.0"/>
</project-facet>
@@ -89,6 +95,7 @@
<description>
Adds support for the JSF Portlet.
</description>
+ <member category="portlet.category "/>
<default-version version="1.0"/>
</project-facet>
@@ -146,6 +153,77 @@
id="org.jboss.tools.portlet.core.internal.jsfportletlibrarycontainer.v10"/>
</extension>
+ <extension point="org.eclipse.wst.common.project.facet.core.facets">
+
+ <project-facet id="jboss.seamportlet">
+ <label>JBoss Seam Portlet</label>
+ <description>
+ Adds support for the Seam Portlet.
+ </description>
+ <member category="portlet.category "/>
+ <default-version version="1.0"/>
+ </project-facet>
+
+ <project-facet-version facet="jboss.seamportlet"
version="1.0">
+ <constraint>
+ <and>
+ <requires facet="jst.java" version="[5.0"/>
+ <requires facet="jst.web" version="[2.3"/>
+ <requires facet="jboss.portlet" version="[1.0"/>
+ <requires facet="jboss.jsfportlet"
version="[1.0"/>
+ <requires facet="jst.jsf" version="[1.2"/>
+ <requires facet="jst.seam" version="[2.0"/>
+ </and>
+ </constraint>
+ </project-facet-version>
+
+ <action id="jboss.seamportlet.install"
facet="jboss.seamportlet" type="INSTALL" version="1.0">
+ <delegate
class="org.jboss.tools.portlet.core.internal.project.facet.SeamPortletFacetInstallDelegate"/>
+ <config-factory
class="org.jboss.tools.portlet.core.internal.project.facet.SeamPortletFacetInstallDataModelProvider"/>
+ </action>
+
+ <action id="jboss.seamportlet.uninstall"
facet="jboss.seamportlet" type="UNINSTALL" version="1.0"
>
+ <delegate
class="org.jboss.tools.portlet.core.internal.project.facet.SeamPortletFacetUninstallDelegate"/>
+ </action>
+
+ </extension>
+
+ <extension
+ point="org.eclipse.wst.common.project.facet.core.presets">
+ <static-preset id="preset.jboss.seamportlet.v20">
+ <label>JBoss Seam Portlet Project v2.0</label>
+ <facet id="jst.java" version="5.0" />
+ <facet id="jst.web" version="2.5"/>
+ <facet id="jst.jsf" version="1.2"/>
+ <facet id="jboss.portlet" version="2.0" />
+ <facet id="jboss.jsfportlet" version="1.0" />
+ <facet id="jboss.seamportlet" version="1.0" />
+ <facet id="jst.seam" version="2.0" />
+ <description>JBoss Seam Portlet Project v2.0</description>
+ </static-preset>
+ </extension>
+
+ <extension
+ point="org.eclipse.wst.common.project.facet.core.presets">
+ <dynamic-preset id="preset.jboss.seamportlet.v10">
+ <factory
class="org.jboss.tools.portlet.core.internal.project.facet.SeamPortletConfigurationPresetFactory10"/>
+ </dynamic-preset>
+ </extension>
+
+ <extension
point="org.eclipse.wst.common.project.facet.core.runtimes">
+ <supported>
+ <runtime-component any="true"/>
+ <facet id="jboss.seamportlet" version="1.0"/>
+ </supported>
+ </extension>
+
+ <!--
+ <extension
point="org.eclipse.jdt.core.classpathContainerInitializer">
+ <classpathContainerInitializer
class="org.jboss.tools.portlet.core.internal.SeamPortlet10LibrariesContainerInitializer"
+
id="org.jboss.tools.portlet.core.internal.seamportletlibrarycontainer.v10"/>
+ </extension>
+ -->
+
<extension point="org.eclipse.wst.xml.core.catalogContributions">
<catalogContribution id="default">
<public
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java 2008-08-02
03:11:36 UTC (rev 9479)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java 2008-08-04
00:41:46 UTC (rev 9480)
@@ -23,6 +23,8 @@
static final String JSFPORTLET_FACET_ID="jboss.jsfportlet";
+ static final String SEAMPORTLET_FACET_ID="jboss.seamportlet";
+
static final String CONFIG_PATH = "WEB-INF/portlet.xml";
static final String PORTLET_FACET_VERSION_10 = "1.0";
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java 2008-08-02
03:11:36 UTC (rev 9479)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java 2008-08-04
00:41:46 UTC (rev 9480)
@@ -265,7 +265,6 @@
util.configureFilterMapping(project, monitor, filterName,
servletName);
- // FIXME add Seam settings
}
}, modelPath);
}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletConfigurationPresetFactory10.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletConfigurationPresetFactory10.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletConfigurationPresetFactory10.java 2008-08-04
00:41:46 UTC (rev 9480)
@@ -0,0 +1,71 @@
+/******************************************************************************
+ * Copyright (c) 2008 BEA Systems, 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:
+ * Konstantin Komissarchik
+ ******************************************************************************/
+
+package org.jboss.tools.portlet.core.internal.project.facet;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jst.common.project.facet.JavaFacetUtils;
+import org.eclipse.jst.j2ee.web.project.facet.WebFacetUtils;
+import org.eclipse.wst.common.project.facet.core.IDynamicPreset;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.eclipse.wst.common.project.facet.core.IPresetFactory;
+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.PresetDefinition;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.jboss.tools.portlet.core.IPortletConstants;
+
+/**
+ * @author <a href="mailto:kosta@bea.com">Konstantin
Komissarchik</a>
+ * @author snjeza
+ */
+
+public final class SeamPortletConfigurationPresetFactory10
+
+implements IPresetFactory {
+ public PresetDefinition createPreset(final String presetId,
+ final Map<String, Object> context)
+
+ throws CoreException {
+ final IFacetedProjectBase fproj = (IFacetedProjectBase) context
+ .get(IDynamicPreset.CONTEXT_KEY_FACETED_PROJECT);
+ final IProjectFacetVersion webFacetVersion = fproj
+ .getProjectFacetVersion(WebFacetUtils.WEB_FACET);
+ final IProjectFacet PORTLET_FACET =
ProjectFacetsManager.getProjectFacet(IPortletConstants.PORTLET_FACET_ID);
+ final IProjectFacetVersion portletFacetVersion =
PORTLET_FACET.getVersion(IPortletConstants.PORTLET_FACET_VERSION_10);
+ final IProjectFacet JSF_FACET =
ProjectFacetsManager.getProjectFacet("jst.jsf");
+ final IProjectFacetVersion jsfFacetVersion = JSF_FACET.getVersion("1.2");
+ final IProjectFacet SEAM_FACET =
ProjectFacetsManager.getProjectFacet("jst.seam");
+ final IProjectFacetVersion seamFacetVersion = SEAM_FACET.getVersion("2.0");
+ if (webFacetVersion != null
+ && webFacetVersion.compareTo(WebFacetUtils.WEB_23) >= 0 &&
+ portletFacetVersion != null) {
+ final Set<IProjectFacetVersion> facets = new
HashSet<IProjectFacetVersion>();
+ final IProjectFacet jsfPortletFacet = ProjectFacetsManager
+ .getProjectFacet(IPortletConstants.JSFPORTLET_FACET_ID);
+ final IProjectFacetVersion jsfPortletVersion = jsfPortletFacet
+ .getVersion(IPortletConstants.JSFPORTLET_FACET_VERSION_10);
+ facets.add(jsfPortletVersion);
+ facets.add(webFacetVersion);
+ facets.add(JavaFacetUtils.JAVA_50);
+ facets.add(portletFacetVersion);
+ facets.add(jsfFacetVersion);
+ facets.add(seamFacetVersion);
+ return new PresetDefinition("JBoss Seam Portlet Project v1.0",
+ "JBoss Seam Portlet Project v1.0", facets);
+ }
+ return null;
+ }
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDataModelProvider.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDataModelProvider.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDataModelProvider.java 2008-08-04
00:41:46 UTC (rev 9480)
@@ -0,0 +1,39 @@
+/*************************************************************************************
+ * Copyright (c) 2008 JBoss, a division of Red Hat 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, a division of Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.portlet.core.internal.project.facet;
+
+import java.util.Set;
+
+import org.eclipse.wst.common.componentcore.datamodel.FacetInstallDataModelProvider;
+import org.jboss.tools.portlet.core.IPortletConstants;
+
+/**
+ * @author snjeza
+ *
+ */
+public class SeamPortletFacetInstallDataModelProvider extends
+ FacetInstallDataModelProvider implements IPortletConstants {
+
+ @Override
+ public Object getDefaultProperty(String propertyName) {
+ if(propertyName.equals(FACET_ID)){
+ return IPortletConstants.SEAMPORTLET_FACET_ID;
+ }
+
+ return super.getDefaultProperty(propertyName);
+ }
+
+ @Override
+ public Set<String> getPropertyNames() {
+ Set<String> propertyNames = super.getPropertyNames();
+ return propertyNames;
+ }
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDelegate.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDelegate.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetInstallDelegate.java 2008-08-04
00:41:46 UTC (rev 9480)
@@ -0,0 +1,154 @@
+/*************************************************************************************
+ * Copyright (c) 2008 JBoss, a division of Red Hat 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, a division of Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.portlet.core.internal.project.facet;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.j2ee.model.IModelProvider;
+import org.eclipse.jst.javaee.web.WebApp;
+import org.eclipse.jst.javaee.web.WebAppVersionType;
+import org.eclipse.jst.jsf.facesconfig.emf.ApplicationType;
+import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigFactory;
+import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigType;
+import org.eclipse.jst.jsf.facesconfig.emf.StateManagerType;
+import org.eclipse.jst.jsf.facesconfig.emf.ViewHandlerType;
+import org.eclipse.jst.jsf.facesconfig.util.FacesConfigArtifactEdit;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.jboss.tools.portlet.core.IJBossWebUtil;
+import org.jboss.tools.portlet.core.IPortletConstants;
+import org.jboss.tools.portlet.core.JBossWebUtil;
+import org.jboss.tools.portlet.core.JBossWebUtil25;
+import org.jboss.tools.portlet.core.PortletCoreActivator;
+
+/**
+ * @author snjeza
+ *
+ */
+public class SeamPortletFacetInstallDelegate implements IDelegate {
+
+ /*
+ * (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)
+ */
+ public void execute(final IProject project, final IProjectFacetVersion fv,
+ final Object cfg, final IProgressMonitor monitor)
+ throws CoreException {
+
+ if (monitor != null) {
+ monitor.beginTask("", 1);
+ }
+ try {
+ IDataModel config = null;
+
+ if (cfg != null) {
+ config = (IDataModel) cfg;
+ } else {
+ throw new CoreException(
+ PortletCoreActivator
+ .getStatus("Internal Error creating JBoss Seam Portlet Facet. Missing
configuration."));
+ }
+
+ // check whether web.xml is available for update
+ final IModelProvider provider = PortletCoreActivator
+ .getModelProvider(project);
+ if (provider == null) {
+ throw new CoreException(
+ PortletCoreActivator
+ .getStatus("Cannot configure web module for JBoss Seam Portlet
Facet"));
+ } else if (!(provider.validateEdit(null, null).isOK())) {
+ if (!(provider.validateEdit(null, null).isOK())) {
+ throw new CoreException(PortletCoreActivator
+ .getStatus("The web.xml file is not updateable"));
+ }
+ }
+
+ configureWebApp(project, monitor, config);
+
+ if (monitor != null) {
+ monitor.worked(1);
+ }
+
+ } finally {
+ if (monitor != null) {
+ monitor.done();
+ }
+ }
+ }
+
+ private void configureWebApp(final IProject project,
+ final IProgressMonitor monitor, IDataModel config) {
+ final IModelProvider provider = PortletCoreActivator
+ .getModelProvider(project);
+ IPath modelPath = new Path("WEB-INF").append("web.xml");
//$NON-NLS-1$ //$NON-NLS-2$
+ boolean exists = project.getProjectRelativePath().append(modelPath)
+ .toFile().exists();
+ if (isWebApp25(provider.getModelObject()) && !exists) {
+ modelPath = IModelProvider.FORCESAVE;
+ }
+ provider.modify(new Runnable() {
+ public void run() {
+ IJBossWebUtil util = null;
+
+ if (isWebApp25(provider.getModelObject())) {
+ util = new JBossWebUtil25();
+ } else {
+ util = new JBossWebUtil();
+ }
+ String name = "org.jboss.portletbridge.ExceptionHandler";
+ String value = "org.jboss.portletbridge.SeamExceptionHandlerImpl";
+ String description = null;
+ util.configureContextParam(project, monitor, name, value,
+ description);
+
+ // FIXME optional for Seam portlets version 2.1.x and up
+ name = "javax.faces.LIFECYCLE_ID";
+ value = "SEAM_PORTLET";
+ util.configureContextParam(project, monitor, name, value,
+ description);
+ }
+ }, modelPath);
+ }
+
+ private boolean isWebApp25(final Object webApp) {
+ if (webApp instanceof WebApp
+ && ((WebApp) webApp).getVersion() == WebAppVersionType._25_LITERAL)
+ return true;
+ return false;
+ }
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetUninstallDelegate.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetUninstallDelegate.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/SeamPortletFacetUninstallDelegate.java 2008-08-04
00:41:46 UTC (rev 9480)
@@ -0,0 +1,34 @@
+/*************************************************************************************
+ * Copyright (c) 2008 JBoss, a division of Red Hat 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, a division of Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.portlet.core.internal.project.facet;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+/**
+ * @author snjeza
+ *
+ */
+public class SeamPortletFacetUninstallDelegate implements IDelegate {
+
+ /* (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)
+ */
+ public void execute(IProject project, IProjectFacetVersion fv,
+ Object config, IProgressMonitor monitor) throws CoreException {
+ // TODO Auto-generated method stub
+
+ }
+
+}