Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java398
1 files changed, 0 insertions, 398 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
deleted file mode 100644
index b23a0e601..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle Corporation.
- * 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:
- * Gerry Kessler - initial API and implementation
- * Debajit Adhikary - Fixes for bug 255097 ("Request to remove input fields
- * from facet install page")
- * - MyFaces and SunRI-specific configuration
- *******************************************************************************/
-
-package org.eclipse.jst.jsf.core.internal.project.facet;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
-import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
-import org.eclipse.jst.common.project.facet.core.libprov.user.UserLibraryProviderInstallOperationConfig;
-import org.eclipse.jst.j2ee.model.IModelProvider;
-import org.eclipse.jst.j2ee.model.ModelProviderManager;
-import org.eclipse.jst.javaee.web.WebApp;
-import org.eclipse.jst.jsf.common.facet.libraryprovider.jsf.JsfLibraryUtil;
-import org.eclipse.jst.jsf.common.webxml.WebXmlUpdater;
-import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
-import org.eclipse.jst.jsf.core.internal.Messages;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.componentcore.ComponentCore;
-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;
-
-/**
- * JSF Facet Install Delegate for WTP faceted web projects. Deals with 2.3, 2.4 and 2.5 web app models.
- *
- * Uses <code>com.eclispe.jst.jsf.core.internal.project.facet.JSFFacetInstallDataModelProvider<code> for model
- * <li> creates JSF configuration file if not already present. It will not attempt to upgrade or downgrade the version if there is a mismatch.
- * <li> updates web.xml for: servlet, servlet-mapping and context-param
- * <li> adds implementation jars to WEB-INF/lib if user requests
- *
- * @see org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetInstallDataModelProvider
- * @since 1.0
- */
-public final class JSFFacetInstallDelegate implements IDelegate {
-
- private final boolean jsfFacetConfigurationEnabled = JsfFacetConfigurationUtil.isJsfFacetConfigurationEnabled();
-
-
- /* (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); //$NON-NLS-1$
- }
-
- try {
- IDataModel config = null;
-
- if (cfg != null) {
- config = (IDataModel) cfg;
- } else {
- throw new JSFFacetException(
- Messages.JSFFacetInstallDelegate_InternalErr);
- }
-
- final JSFUtils jsfUtil = new JSFUtilFactory().create(fv, ModelProviderManager.getModelProvider(project));
- if (jsfUtil == null)
- {
- throw new JSFFacetException(NLS.bind(
- Messages.Could_Not_GetJSFVersion, fv.toString()));
- }
-
- if (jsfFacetConfigurationEnabled)
- {
- // Before we do any configuration, verify that web.xml is // available for update
- final IModelProvider provider = jsfUtil
- .getModelProvider();
- if (provider == null)
- {
- throw new JSFFacetException(NLS.bind(
- Messages.JSFFacetInstallDelegate_ConfigErr,
- project.getName()));
- }
- else if (!(provider.validateEdit(null, null).isOK()))
- {
- if (!(provider.validateEdit(null, null).isOK()))
- {// checks for web.xml file being read-only and allows
- // user to set writeable
- throw new JSFFacetException(
- NLS.bind(
- Messages.JSFFacetInstallDelegate_NonUpdateableWebXML,
- project.getName()));
- }
- }
- }
-
-// // Create JSF Libs as classpath containers and set WTP dependencies
-// // as required
-// createClasspathEntries(project, fv, config, monitor);
-
- //Configure libraries
- ( (LibraryInstallDelegate) config.getProperty( IJSFFacetInstallDataModelProperties.LIBRARY_PROVIDER_DELEGATE ) ).execute( new NullProgressMonitor() );
-
- final LibraryInstallDelegate libDelegate = (LibraryInstallDelegate) (config.getProperty( IJSFFacetInstallDataModelProperties.LIBRARY_PROVIDER_DELEGATE));
- final LibraryProviderOperationConfig libConfig = libDelegate.getLibraryProviderOperationConfig();
-
- if (jsfFacetConfigurationEnabled)
- {
- // Create config file
- createConfigFile(project, fv, config, monitor, jsfUtil);
-
- // Update web model
- createServletAndModifyWebXML(project, config, monitor, jsfUtil);
- updateWebXmlByJsfVendor(libConfig, project, monitor);
- }
-
- if (monitor != null) {
- monitor.worked(1);
- }
-
- } finally {
- if (monitor != null) {
- monitor.done();
- }
- }
- }
-
-
- /**
- * Configures web.xml for MyFaces or Sun-RI when a user-library is used.
- * Does no special configuration when a third party library provider is used
- * (e.g. WebLogic shared library)
- *
- * @param libConfig
- * Library install delegate
- * @param project
- * IProject to update
- * @param monitor
- * IProgressMonitor
- */
- private void updateWebXmlByJsfVendor (final LibraryProviderOperationConfig libConfig,
- final IProject project,
- final IProgressMonitor monitor)
- {
- final UserLibraryProviderInstallOperationConfig userLibConfig = getUserLibConfig(libConfig);
- if (userLibConfig == null) // Not a user lib provider (e.g. shared lib provider)
- return; // Any special configuration will be done by third party lib provider.
-
-
- switch (JsfLibraryUtil.getJsfLibraryVendorType(userLibConfig))
- {
- case MYFACES:
- updateWebXmlForMyfaces(project, monitor);
- break;
- case SUN_RI:
- updateWebXmlForSunRi(project, monitor);
- break;
- case UNKNOWN:
- break;
- }
- }
-
-
- /**
- * (Refactored into a protected method for JUnit testing)
- *
- * @param libConfig LibraryProviderOperationConfig object
- *
- * @return WtpUserLibraryProviderInstallOperationConfig object if the
- * argument object has the same runtime type. Returns null
- * otherwise e.g. if the libConfig is of the runtime type
- * SharedLibraryProviderInstallOperationConfig.
- */
- public static UserLibraryProviderInstallOperationConfig getUserLibConfig (final LibraryProviderOperationConfig libConfig)
- {
- if (!(libConfig instanceof UserLibraryProviderInstallOperationConfig)) // Third-party shared library providers etc.
- return null;
-
- return (UserLibraryProviderInstallOperationConfig) libConfig;
- }
-
-
- /**
- * Updates web.xml for the given project with MyFaces-specific parameters.
- * (This method is public static so that it may be called by other third
- * party library providers for consistent MyFaces configuration across
- * different JSF library providers)
- *
- * @param project
- * IProject whose web.xml is to be updated.
- *
- * @param monitor
- * IProgressMonitor
- */
- public static void updateWebXmlForMyfaces (final IProject project,
- final IProgressMonitor monitor)
- {
- final WebXmlUpdater updater = new WebXmlUpdater(project, monitor);
-
- updater.addContextParam("javax.servlet.jsp.jstl.fmt.localizationContext", "resources.application", null); //$NON-NLS-1$//$NON-NLS-2$
- updater.addContextParam("javax.faces.STATE_SAVING_METHOD", "client", Messages.JSFFacetInstallDelegate_StateSavingMethod); //$NON-NLS-1$ //$NON-NLS-2$
- updater.addContextParam("org.apache.myfaces.ALLOW_JAVASCRIPT", "true", Messages.JSFFacetInstallDelegate_AllowJavascriptDescription); //$NON-NLS-1$ //$NON-NLS-2$
- updater.addContextParam("org.apache.myfaces.PRETTY_HTML", "true", Messages.JSFFacetInstallDelegate_PrettyHtmlDescription); //$NON-NLS-1$ //$NON-NLS-2$
- updater.addContextParam("org.apache.myfaces.DETECT_JAVASCRIPT", "false", null); //$NON-NLS-1$//$NON-NLS-2$
- updater.addContextParam("org.apache.myfaces.AUTO_SCROLL", "true", Messages.JSFFacetInstallDelegate_AutoScrollDescription); //$NON-NLS-1$ //$NON-NLS-2$
-
- updater.addServlet("faces", "org.apache.myfaces.webapp.MyFacesServlet", "1"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- updater.addServletMapping("faces", "org.apache.myfaces.webapp.MyFacesServlet", "*.jsf"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
- updater.addServletMapping("faces", "org.apache.myfaces.webapp.MyFacesServlet", "*.faces"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-
- updater.addListener("org.apache.myfaces.webapp.StartupServletContextListener"); //$NON-NLS-1$
-
-// // Additional, more complex updates
-// if (updater.isJavaEEWebapp())
-// {
-// updater.getProvider().modify(new UpdateWebXmlForMyfacesJavaEE(project, monitor), WebXmlUtils.WEB_XML_PATH);
-// }
-// else if (updater.isJ2EEWebapp())
-// {
-// updater.getProvider().modify(new UpdateWebXmlForMyfacesJ2EE(project, monitor), WebXmlUtils.WEB_XML_PATH);
-// }
- }
-
-
- /**
- * Updates web.xml for the given project with SunRI-specific parameters.
- * (This method is public static so that it may be called by other third
- * party library providers for consistent Sun-RI configuration across
- * different JSF library providers)
- *
- * @param project
- * IProject whose web.xml is to be updated.
- *
- * @param monitor
- * IProgressMonitor
- */
- public static void updateWebXmlForSunRi (final IProject project,
- final IProgressMonitor monitor)
- {
- final WebXmlUpdater updater = new WebXmlUpdater(project, monitor);
-
- updater.addContextParam("javax.faces.STATE_SAVING_METHOD", "client", Messages.JSFFacetInstallDelegate_StateSavingMethod); //$NON-NLS-1$//$NON-NLS-2$
- updater.addContextParam("javax.servlet.jsp.jstl.fmt.localizationContext", "resources.application", null); //$NON-NLS-1$ //$NON-NLS-2$
- updater.addListener("com.sun.faces.config.ConfigureListener"); //$NON-NLS-1$
-
- updater.addServlet("Faces Servlet", "javax.faces.webapp.FacesServlet", "1"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
- updater.addServletMapping("Faces Servlet", "javax.faces.webapp.FacesServlet", "*.jsf"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
- updater.addServletMapping("Faces Servlet", "javax.faces.webapp.FacesServlet", "*.faces"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
- }
-
-
-// /**
-// * @param path
-// * @param lib
-// * @return creates new IClasspathEntry with WTP dependency attribute set, if required
-// */
-// private IClasspathEntry getNewCPEntry(final IPath path, final JSFLibraryInternalReference lib) {
-//
-// IClasspathEntry entry = null;
-// if (lib.isCheckedToBeDeployed()){
-// IClasspathAttribute depAttrib = JavaCore.newClasspathAttribute(IClasspathDependencyConstants.CLASSPATH_COMPONENT_DEPENDENCY,
-// ClasspathDependencyUtil.getDefaultRuntimePath(true).toString());
-// entry = JavaCore.newContainerEntry(path,null, new IClasspathAttribute[]{depAttrib}, true);
-// }
-// else {
-// entry = JavaCore.newContainerEntry(path);
-// }
-//
-// return entry;
-// }
-
-
- /**
- * @param project
- * @param jsfConfigPath
- * @return absolute IPath to jsfConfig
- */
- private IPath resolveConfigPath(final IProject project, final String jsfConfigPath) {
- return ComponentCore.createComponent(project).getRootFolder()
- .getUnderlyingFolder().getRawLocation().append(
- new Path(jsfConfigPath));
-
- }
-
- /**
- * Create the faces configuration file. If the file already exist, then the file is left alone.
- * @param project
- * @param fv
- * @param config
- * @param monitor
- */
- private void createConfigFile(final IProject project,
- final IProjectFacetVersion fv, final IDataModel config,
- final IProgressMonitor monitor, final JSFUtils jsfUtil) {
-
-
- final IPath configPath = resolveConfigPath(project, config.getStringProperty(IJSFFacetInstallDataModelProperties.CONFIG_PATH));
- try {
- // do not overwrite if the file exists
- if (!configPath.toFile().exists()) {
- final IWorkspaceRunnable op = new IWorkspaceRunnable(){
- public void run(final IProgressMonitor monitor_inner) throws CoreException{
- jsfUtil.createConfigFile(configPath);
- project.refreshLocal(IResource.DEPTH_INFINITE, monitor_inner);
- }
- };
- op.run(monitor);
- }
- } catch (final CoreException e) {
- JSFCorePlugin.log(e, "Exception occured while creating faces-config.xml");//$NON-NLS-1$
- }
-
- }
-
- /**
- * Create servlet and URL mappings and update the webapp
- *
- * @param project
- * @param config
- * @param monitor
- */
- private void createServletAndModifyWebXML(final IProject project,
- final IDataModel config, final IProgressMonitor monitor,
- final JSFUtils jsfUtil)
- {
-
- final IModelProvider provider = jsfUtil.getModelProvider();
- final IPath webXMLPath = new Path("WEB-INF").append("web.xml"); //$NON-NLS-1$ //$NON-NLS-2$
- if (jsfUtil.isJavaEE(provider.getModelObject()))
- {
- provider.modify(new UpdateWebXMLForJavaEE(project, config, jsfUtil),
- doesDDFileExist(project, webXMLPath) ? webXMLPath
- : IModelProvider.FORCESAVE);
- } else
- {// must be 2.3 or 2.4
- provider.modify(new UpdateWebXMLForJ2EE(project, config, jsfUtil),
- webXMLPath);
- }
- // TODO: is the MyFaces check a todo?
- // Check if runtime is MyFaces or Sun-RI
- }
-
- private boolean doesDDFileExist(final IProject project, final IPath webXMLPath) {
- return project.getProjectRelativePath().append(webXMLPath).toFile().exists();
- }
-
- private class UpdateWebXMLForJavaEE implements Runnable {
- private final IProject project;
- private final IDataModel config;
- private final JSFUtils jsfUtil;
-
- UpdateWebXMLForJavaEE(final IProject project, final IDataModel config, final JSFUtils jsfUtil){
- this.project = project;
- this.config = config;
- this.jsfUtil = jsfUtil;
- }
-
- public void run() {
- final WebApp webApp = (WebApp) ModelProviderManager.getModelProvider(project).getModelObject();
- jsfUtil.updateWebApp(webApp, config);
- }
- }
-
- private class UpdateWebXMLForJ2EE implements Runnable {
- private final IProject project;
- private final IDataModel config;
- private final JSFUtils jsfUtil;
-
- UpdateWebXMLForJ2EE(final IProject project, final IDataModel config, final JSFUtils jsfUtil){
- this.project = project ;
- this.config = config;
- this.jsfUtil = jsfUtil;
- }
-
- public void run() {
- final org.eclipse.jst.j2ee.webapplication.WebApp webApp = (org.eclipse.jst.j2ee.webapplication.WebApp)ModelProviderManager.getModelProvider(project).getModelObject();
- jsfUtil.updateWebApp(webApp, config);
- }
-
- }
-
-
-
-}

Back to the top