blob: e3261ead1ac38c232924ca76c2c54a0a560edb83 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2008 Oracle Corporation 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:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.common.webxml;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
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.webxml.internal.AbstractWebXmlUpdater;
import org.eclipse.jst.jsf.common.webxml.internal.WebXmlUpdaterForJ2EE;
import org.eclipse.jst.jsf.common.webxml.internal.WebXmlUpdaterForJavaEE;
/**
* Facade for web.xml updater classes WebXmlUpdaterForJavaEE,
* WebXmlUpdaterForJ2EE, and AbstractWebXmlUpdater. Utility class to make
* editing web.xml easy.
*
* @author Debajit Adhikary
*
*/
public class WebXmlUpdater
{
private final IProject project;
private final IProgressMonitor monitor;
private final AbstractWebXmlUpdater updater;
private final IModelProvider provider;
/**
* @param project
* @param monitor
*/
public WebXmlUpdater (final IProject project,
final IProgressMonitor monitor)
{
this.project = project;
this.monitor = monitor;
this.provider = ModelProviderManager.getModelProvider(project);
this.updater = initUpdater();
}
/**
* @return WebApp object associated with this WebXmlUpdater object
*/
public WebApp getWebAppForJavaEE ()
{
return (WebApp) updater.getWebApp();
}
/**
* @return WebApp object associated with this WebXmlUpdater object
*/
public org.eclipse.jst.j2ee.webapplication.WebApp getWebAppForJ2EE ()
{
return (org.eclipse.jst.j2ee.webapplication.WebApp) updater.getWebApp();
}
/**
* @return Provider object for the webapp this WebXmlUpdater is associated
* with. This may be used by clients to perform additional complex
* updates to web.xml using getProvider.modify(new Runnable(), ...)
*/
public IModelProvider getProvider()
{
return provider;
}
/**
* @return True if this webapp is a Java EE app.
*/
public boolean isJavaEEWebapp ()
{
return updater instanceof WebXmlUpdaterForJavaEE;
}
/**
* @return True if this webapp is a J2EE app
*/
public boolean isJ2EEWebapp ()
{
return updater instanceof WebXmlUpdaterForJ2EE;
}
/**
* @param servletName
* @param servletClass
* @param loadOnStartup
*/
public void addServlet (final String servletName,
final String servletClass,
final String loadOnStartup)
{
updater.addServlet(servletName, servletClass, loadOnStartup);
}
/**
* @param servletClassName
*/
public void removeServlet (final String servletClassName)
{
updater.removeServlet(servletClassName);
}
/**
* @param servletName
* @param servletClass
* @param urlPattern
*/
public void addServletMapping (final String servletName,
final String servletClass,
final String urlPattern)
{
updater.addServletMapping(servletName, servletClass, urlPattern);
}
/**
* @param filterName
* @param filterClass
*/
public void addFilter (final String filterName,
final String filterClass)
{
updater.addFilter(filterName, filterClass);
}
/**
* @param filterName
*/
public void removeFilter (final String filterName)
{
updater.removeFilter(filterName);
}
/**
* @param filterName
* @param filterClass
* @param servletName
*/
public void addFilterMapping (final String filterName,
final String filterClass,
final String servletName)
{
updater.addFilterMapping(filterName, filterClass, servletName);
}
/**
* @param paramName
* Name of context param
* @return Value of given context param.
*/
public String getContextParamValue (final String paramName)
{
return updater.getContextParamValue(paramName);
}
/**
* @param paramName
* Name of context param
* @param valuesDelimiterRegex
* Delimiter string for values
* @return Values of given context param as a list. This is useful when the
* multiple values are demarcated by a delimiter string.
*
*/
public List<String> getContextParamValuesAsList (final String paramName,
final String valuesDelimiterRegex)
{
return updater.getContextParamValuesAsList(paramName, valuesDelimiterRegex);
}
/**
* Sets the value of the given context param name to the given value. If
* paramName is not found, a new context-param is created with the given
* paramName and paramValue.
*
* @param paramName
* @param paramValue
*/
public void setContextParamValue (final String paramName,
final String paramValue)
{
updater.setContextParamValue(paramName, paramValue);
}
/**
* @param paramName
* @param paramValue
* @param description
*/
public void addContextParam (final String paramName,
final String paramValue,
final String description)
{
updater.addContextParam(paramName, paramValue, description);
}
/**
* @param listenerClass
*/
public void addListener (final String listenerClass)
{
updater.addListener(listenerClass);
}
private AbstractWebXmlUpdater initUpdater()
{
final Object webAppObj = ModelProviderManager.getModelProvider(project).getModelObject();
if (webAppObj != null)
{
if (webAppObj instanceof WebApp) // Java EE
return new WebXmlUpdaterForJavaEE(webAppObj, project, getProvider(), monitor);
else if (webAppObj instanceof org.eclipse.jst.j2ee.webapplication.WebApp) // J2EE
return new WebXmlUpdaterForJ2EE(webAppObj, project, getProvider(), monitor);
}
// Control should never come here
throw new IllegalArgumentException("Unable to resolve WebApp object for updating web.xml"); //$NON-NLS-1$
}
}