taylor 2004/07/22 16:38:39
Modified: portal/src/java/org/apache/jetspeed/tools/pamanager
ApplicationServerPAM.java
commons/src/java/org/apache/jetspeed/container
JetspeedContainerServlet.java
components/deploy-tool/src/java/org/apache/jetspeed/tools/deploy
JetspeedDeploy.java
JetspeedWebApplicationRewriter.java
portal/src/webapp/WEB-INF/assembly jetspeed.groovy
Added: jetspeed-api/src/java/org/apache/jetspeed/tools/pamanager
DeploymentRegistration.java
jetspeed-api/src/java/org/apache/jetspeed/util
FileSystemHelper.java
Removed: commons/src/java/org/apache/jetspeed/util
FileSystemHelper.java
Log:
Optional Generic Deployment feature
Using this method, deployment of a Portlet Application can be down at servlet init()
time
This requires infusing the Jetspeed servlet into a Portlet application with a
separate command line tool: see the deploy-tool component.
Then the portlet application can be deployed to any application server, and when the
servlet is initialized,
it attempts to register with Jetspeed 'on the fly'
This current implementation does not yet support re-deployment properly.
Im working on that next ...
CVS: ----------------------------------------------------------------------
CVS: PR:
CVS: If this change addresses a PR in the problem report tracking
CVS: database, then enter the PR number(s) here.
CVS: Obtained from:
CVS: If this change has been taken from another system, such as NCSA,
CVS: then name the system in this line, otherwise delete it.
CVS: Submitted by:
CVS: If this code has been contributed to Apache by someone else; i.e.,
CVS: they sent us a patch or a new module, then include their name/email
CVS: address here. If this is your work then delete this line.
CVS: Reviewed by:
CVS: If we are doing pre-commit code reviews and someone else has
CVS: reviewed your changes, include their name(s) here.
CVS: If you have not had it reviewed then delete this line.
Revision Changes Path
1.4 +76 -2
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/tools/pamanager/ApplicationServerPAM.java
Index: ApplicationServerPAM.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/tools/pamanager/ApplicationServerPAM.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ApplicationServerPAM.java 13 Jul 2004 17:52:33 -0000 1.3
+++ ApplicationServerPAM.java 22 Jul 2004 23:38:39 -0000 1.4
@@ -15,13 +15,20 @@
*/
package org.apache.jetspeed.tools.pamanager;
+import java.io.IOException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.components.persistence.store.PersistenceStore;
import org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent;
import org.apache.jetspeed.components.portletregistry.PortletRegistryComponent;
import org.apache.jetspeed.container.window.PortletWindowAccessor;
+import org.apache.jetspeed.exception.RegistryException;
+import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
+import org.apache.jetspeed.om.common.servlet.MutableWebApplication;
import
org.apache.jetspeed.tools.pamanager.servletcontainer.ApplicationServerManager;
import org.apache.jetspeed.util.ArgUtil;
+import org.apache.jetspeed.util.FileSystemHelper;
import org.apache.jetspeed.util.descriptor.PortletApplicationWar;
import org.picocontainer.Startable;
@@ -35,7 +42,7 @@
* @version $Id$
*/
-public class ApplicationServerPAM extends FileSystemPAM implements Lifecycle,
Startable
+public class ApplicationServerPAM extends FileSystemPAM implements Lifecycle,
Startable, DeploymentRegistration
{
// Implementaion of deplyment interface
public final static String PAM_PROPERTY_SERVER = "server";
@@ -285,4 +292,71 @@
throw new PortletApplicationException(e);
}
}
+
+ public void registerPortletApplication(FileSystemHelper fileSystem,
+ String portletApplicationName)
+ throws RegistryException
+ {
+ MutablePortletApplication pa =
+ registry.getPortletApplication(portletApplicationName);
+ if (pa != null)
+ {
+ // get the deployment date
+ System.out.println("PA " + portletApplicationName + " is already
deployed.");
+ return;
+ }
+
+ PortletApplicationWar paWar = null;
+ try
+ {
+ paWar = new PortletApplicationWar(fileSystem,
+ portletApplicationName,
+ "/" + portletApplicationName);
+ }
+ catch (IOException e)
+ {
+ throw new RegistryException("Failed to create PA WAR", e);
+ }
+
+ MutablePortletApplication app;
+ PersistenceStore store = registry.getPersistenceStore();
+ String paName = paWar.getPortletApplicationName();
+
+ try
+ {
+ app = paWar.createPortletApp();
+
+ if (app == null)
+ {
+ String msg = "Error loading portlet.xml: ";
+ log.error(msg);
+ throw new RegistryException(msg);
+ }
+
+
+ app.setApplicationType(MutablePortletApplication.WEBAPP);
+
+ // load the web.xml
+ log.info("Loading web.xml into memory....");
+ MutableWebApplication webapp = paWar.createWebApp();
+ paWar.validate();
+ app.setWebApplicationDefinition(webapp);
+
+ // save it to the registry
+ log.info("Saving the portlet.xml in the registry...");
+ store.getTransaction().begin();
+ registry.registerPortletApplication(app);
+ log.info("Committing registry changes...");
+ store.getTransaction().commit();
+ }
+ catch (Exception e)
+ {
+ String msg = "Unable to register portlet application, " + paName + ",
through the portlet registry: "
+ + e.toString();
+ log.error(msg, e);
+ store.getTransaction().rollback();
+ throw new RegistryException(msg, e);
+ }
+
+}
}
1.1
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/tools/pamanager/DeploymentRegistration.java
Index: DeploymentRegistration.java
===================================================================
/*
* Copyright 2000-2001,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.tools.pamanager;
import org.apache.jetspeed.exception.RegistryException;
import org.apache.jetspeed.util.FileSystemHelper;
/**
* Jetspeed Deployment Registration
*
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
* @version $Id: DeploymentRegistration.java,v 1.1 2004/07/22 23:38:39 taylor Exp $
*/
public interface DeploymentRegistration
{
void registerPortletApplication(
FileSystemHelper fileSystem,
String portletApplicationName)
throws RegistryException;
}
1.10 +77 -72
jakarta-jetspeed-2/commons/src/java/org/apache/jetspeed/container/JetspeedContainerServlet.java
Index: JetspeedContainerServlet.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/commons/src/java/org/apache/jetspeed/container/JetspeedContainerServlet.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- JetspeedContainerServlet.java 26 May 2004 17:24:18 -0000 1.9
+++ JetspeedContainerServlet.java 22 Jul 2004 23:38:39 -0000 1.10
@@ -15,11 +15,10 @@
*/
package org.apache.jetspeed.container;
+import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.net.URL;
-import java.net.URLClassLoader;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
@@ -38,8 +37,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jetspeed.factory.JetspeedPortletFactory;
+import org.apache.jetspeed.services.JetspeedPortletServices;
+import org.apache.jetspeed.services.PortletServices;
+import org.apache.jetspeed.tools.pamanager.DeploymentRegistration;
+import org.apache.jetspeed.util.DirectoryHelper;
+import org.apache.jetspeed.util.FileSystemHelper;
import org.apache.pluto.om.portlet.PortletDefinition;
-// import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
/**
* Jetspeed Container entry point.
@@ -53,22 +56,10 @@
private final static Log console = LogFactory.getLog(CONSOLE_LOGGER);
/**
- * In certain situations the init() method is called more than once,
- * somtimes even concurrently. This causes bad things to happen,
- * so we use this flag to prevent it.
- */
- private static boolean firstInit = true;
-
- /**
* Whether init succeeded or not.
*/
private static Throwable initFailure = null;
- /**
- * Should initialization activities be performed during doGet()
- * execution?
- */
- private static boolean firstDoGet = true;
private static String webappRoot;
@@ -88,42 +79,29 @@
log.info(INIT_START_MSG + " " +
config.getServletContext().getRealPath("/"));
super.init(config);
- if (!firstInit)
- {
- log.info("Double initialization of Jetspeed was attempted!");
- return;
- }
- // executing init will trigger some static initializers, so we have
- // only one chance.
- firstInit = false;
try
- {
+ {
ServletContext context = config.getServletContext();
- /*
- String propertiesFilename =
- ServletHelper.findInitParameter(context, config,
- JETSPEED_PROPERTIES_KEY,
- JETSPEED_PROPERTIES_DEFAULT);
-
- String applicationRoot =
- ServletHelper.findInitParameter(context, config,
- APPLICATION_ROOT_KEY,
- APPLICATION_ROOT_DEFAULT);
- */
- webappRoot = config.getServletContext().getRealPath("/");
- /*
- if (applicationRoot == null ||
applicationRoot.equals(WEB_CONTEXT))
- {
- applicationRoot = webappRoot;
- }
-
- Configuration properties = (Configuration)
- new
PropertiesConfiguration(ServletHelper.getRealPath(config, propertiesFilename));
+ webappRoot = config.getServletContext().getRealPath("/");
+ String registerAtInit = config.getInitParameter("registerAtInit");
+ if (null != registerAtInit)
+ {
+ System.out.println("*** Registering at INIT: " +
context.getServletContextName());
+ String portletApplication =
config.getInitParameter("portletApplication");
+ if (null == portletApplication)
+ {
+ throw new ServletException("Portlet Application Name not
supplied in Init Parameters.");
+ }
+
+ registerPortletApplication(context, portletApplication);
+
+ }
+ else
+ {
+ System.out.println("*** Not Registering at INIT: " +
context.getServletContextName());
+ }
- properties.setProperty(APPLICATION_ROOT_KEY,
applicationRoot);
- properties.setProperty(WEBAPP_ROOT_KEY, webappRoot);
- */
}
catch (Exception e)
{
@@ -138,28 +116,64 @@
}
}
- /**
- * Initializes the services which need <code>RunData</code> to
- * initialize themselves (post startup).
- *
- * @param data The first <code>GET</code> request.
- */
- public synchronized final void init(HttpServletRequest request,
HttpServletResponse response)
+
+ private void registerPortletApplication(ServletContext context, String
portletApplicationName)
{
- synchronized (JetspeedContainerServlet.class)
+ System.out.println("*** Registering PA: " + portletApplicationName);
+ //InputStream portletStream = null;
+ //InputStream servletStream = null;
+
+ try
{
- if (firstDoGet)
+ //portletStream = context.getResourceAsStream("WEB-INF/portlet.xml");
+ //servletStream = context.getResourceAsStream("WEB-INF/web.xml");
+
+ PortletServices services = JetspeedPortletServices.getSingleton();
+ DeploymentRegistration registrar =
+ (DeploymentRegistration)services.getService("PAM");
+
+ if (registrar != null)
{
- // Mark that we're done.
- firstDoGet = false;
+ System.out.println("registrar found: " + registrar);
+ FileSystemHelper webapp = new DirectoryHelper(new
File(context.getRealPath("/")));
+ registrar.registerPortletApplication(webapp,
portletApplicationName);
+ System.out.println("done registering " + registrar);
}
+ else
+ {
+ System.out.println("registry not yet available...");
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
}
+ finally
+ {
+ //closeStream(portletStream);
+ //closeStream(servletStream);
+ }
+
}
+ /*
+ private void closeStream(InputStream stream)
+ {
+ try
+ {
+ if (stream != null)
+ {
+ stream.close();
+ }
+ }
+ catch (IOException e)
+ {
+ }
+ }
+ */
// -------------------------------------------------------------------
// R E Q U E S T P R O C E S S I N G
// -------------------------------------------------------------------
- static private final String PHONEY_PORTLET_WINDOW =
"<P>----------------------------------</P>";
/**
* The primary method invoked when the Jetspeed servlet is executed.
@@ -171,7 +185,7 @@
*/
public final void doGet(HttpServletRequest request, HttpServletResponse
response) throws IOException, ServletException
{
- String portletName = null;
+ String portletName = null;
try
{
// Check to make sure that we started up properly.
@@ -180,17 +194,11 @@
throw initFailure;
}
- // If this is the first invocation, perform some late initialization.
- if (firstDoGet)
- {
- init(request, response);
- }
-
// infuseClasspath();
PortletDefinition portletDefinition = (PortletDefinition)
request.getAttribute(ContainerConstants.PORTLET_ENTITY);
Portlet portlet =
JetspeedPortletFactory.getPortlet(this.getServletConfig(), portletDefinition);
- portletName = portletDefinition.getName();
+ portletName = portletDefinition.getName();
Integer method = (Integer)
request.getAttribute(ContainerConstants.METHOD_ID);
if (method == ContainerConstants.METHOD_NOOP)
{
@@ -272,9 +280,6 @@
*/
public final void destroy()
{
- // Allow turbine to be started back up again.
- firstInit = true;
-
log.info("Done shutting down!");
}
@@ -314,4 +319,4 @@
}
-}
+}
\ No newline at end of file
1.4 +20 -5
jakarta-jetspeed-2/components/deploy-tool/src/java/org/apache/jetspeed/tools/deploy/JetspeedDeploy.java
Index: JetspeedDeploy.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/components/deploy-tool/src/java/org/apache/jetspeed/tools/deploy/JetspeedDeploy.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JetspeedDeploy.java 22 Jul 2004 05:16:11 -0000 1.3
+++ JetspeedDeploy.java 22 Jul 2004 23:38:39 -0000 1.4
@@ -50,16 +50,17 @@
}
private final byte[] buffer = new byte[4096];
-
+
public JetspeedDeploy(String inputName, String outputName) throws Exception
{
JarInputStream jin = null;
JarOutputStream jout = null;
try
{
+ String portletApplicationName = getPortletApplicationName(outputName);
jin = new JarInputStream(new FileInputStream(inputName));
jout = new JarOutputStream(new FileOutputStream(outputName),
jin.getManifest());
-
+
// copy over all of the files in the input war to the output
// war except for web.xml and portlet.xml, which we parse for
// use later
@@ -94,7 +95,7 @@
throw new IllegalArgumentException("WEB-INF/portlet.xml");
}
- JetspeedWebApplicationRewriter rewriter = new
JetspeedWebApplicationRewriter(webXml, true);
+ JetspeedWebApplicationRewriter rewriter = new
JetspeedWebApplicationRewriter(webXml, portletApplicationName, true);
rewriter.processWebXML();
// mung the web.xml
@@ -164,6 +165,20 @@
}
}
+ private String getPortletApplicationName(String path)
+ {
+ File file = new File(path);
+ String name = file.getName();
+ String portletApplicationName = name;
+
+ int index = name.lastIndexOf(".");
+ if (index > -1)
+ {
+ portletApplicationName = name.substring(0, index);
+ }
+ return portletApplicationName;
+ }
+
private class UncloseableInputStream extends InputStream {
private final InputStream in;
@@ -207,4 +222,4 @@
return in.markSupported();
}
}
-}
+}
\ No newline at end of file
1.4 +143 -133
jakarta-jetspeed-2/components/deploy-tool/src/java/org/apache/jetspeed/tools/deploy/JetspeedWebApplicationRewriter.java
Index: JetspeedWebApplicationRewriter.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/components/deploy-tool/src/java/org/apache/jetspeed/tools/deploy/JetspeedWebApplicationRewriter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JetspeedWebApplicationRewriter.java 21 Jul 2004 22:19:32 -0000 1.3
+++ JetspeedWebApplicationRewriter.java 22 Jul 2004 23:38:39 -0000 1.4
@@ -49,14 +49,16 @@
protected static final String[] ELEMENTS_BEFORE_SERVLET_MAPPING = new
String[]{"icon", "display-name",
"description", "distributable", "context-param", "filter",
"filter-mapping", "listener", "servlet",
"servlet-mapping"};
-
+
private Document document;
+ private String portletApplication;
private boolean changed = false;
private boolean registerAtInit = false;
- public JetspeedWebApplicationRewriter(Document doc, boolean registerAtInit)
+ public JetspeedWebApplicationRewriter(Document doc, String portletApplication,
boolean registerAtInit)
{
- this.document = doc;
+ this.document = doc;
+ this.portletApplication = portletApplication;
this.registerAtInit = registerAtInit;
}
@@ -65,68 +67,68 @@
this.document = doc;
}
- /**
- *
- * <p>
- * processWebXML
- * </p>
- *
- * Infuses this PortletApplicationWar's web.xml file with
- * <code>servlet</code> and a <code>servlet-mapping</code> element for
- * the JetspeedContainer servlet. This is only done if the descriptor does
- * not already contain these items.
- *
- * @throws MetaDataException
- * if there is a problem infusing
- */
- public void processWebXML()
+ /**
+ *
+ * <p>
+ * processWebXML
+ * </p>
+ *
+ * Infuses this PortletApplicationWar's web.xml file with
+ * <code>servlet</code> and a <code>servlet-mapping</code> element for
+ * the JetspeedContainer servlet. This is only done if the descriptor does
+ * not already contain these items.
+ *
+ * @throws MetaDataException
+ * if there is a problem infusing
+ */
+ public void processWebXML()
throws Exception
- {
- SAXBuilder builder = new SAXBuilder();
- Writer webXmlWriter = null;
- InputStream webXmlIn = null;
-
- try
- {
- // Use the local dtd instead of remote dtd. This
- // allows to deploy the application offline
- builder.setEntityResolver(new EntityResolver()
- {
- public InputSource resolveEntity( java.lang.String publicId,
java.lang.String systemId )
- throws SAXException, java.io.IOException
- {
-
- if (systemId.equals("http://java.sun.com/dtd/web-app_2_3.dtd"))
- {
- return new
InputSource(getClass().getResourceAsStream("web-app_2_3.dtd"));
- }
- else return null;
- }
- });
-
-
- Element root = document.getRootElement();
-
- Object jetspeedServlet = XPath.selectSingleNode(document,
JETSPEED_SERVLET_XPATH);
- Object jetspeedServletMapping = XPath.selectSingleNode(document,
JETSPEED_SERVLET_MAPPING_XPATH);
- if (document.getRootElement().getChildren().size() == 0)
- {
- throw new Exception("Source web.xml has no content!!!");
- }
-
- if (jetspeedServlet == null)
- {
- Element jetspeedServletElement = new Element("servlet");
- Element servletName = (Element) new
Element("servlet-name").addContent("JetspeedContainer");
- Element servletDspName = (Element) new
Element("display-name").addContent("Jetspeed Container");
- Element servletDesc = (Element) new Element("description")
- .addContent("MVC Servlet for Jetspeed Portlet
Applications");
- Element servletClass = (Element) new Element("servlet-class")
-
.addContent("org.apache.jetspeed.container.JetspeedContainerServlet");
- jetspeedServletElement.addContent(servletName);
- jetspeedServletElement.addContent(servletDspName);
- jetspeedServletElement.addContent(servletDesc);
- jetspeedServletElement.addContent(servletClass);
+ {
+ SAXBuilder builder = new SAXBuilder();
+ Writer webXmlWriter = null;
+ InputStream webXmlIn = null;
+
+ try
+ {
+ // Use the local dtd instead of remote dtd. This
+ // allows to deploy the application offline
+ builder.setEntityResolver(new EntityResolver()
+ {
+ public InputSource resolveEntity( java.lang.String publicId,
java.lang.String systemId )
+ throws SAXException, java.io.IOException
+ {
+
+ if (systemId.equals("http://java.sun.com/dtd/web-app_2_3.dtd"))
+ {
+ return new
InputSource(getClass().getResourceAsStream("web-app_2_3.dtd"));
+ }
+ else return null;
+ }
+ });
+
+
+ Element root = document.getRootElement();
+
+ Object jetspeedServlet = XPath.selectSingleNode(document,
JETSPEED_SERVLET_XPATH);
+ Object jetspeedServletMapping = XPath.selectSingleNode(document,
JETSPEED_SERVLET_MAPPING_XPATH);
+ if (document.getRootElement().getChildren().size() == 0)
+ {
+ throw new Exception("Source web.xml has no content!!!");
+ }
+
+ if (jetspeedServlet == null)
+ {
+ Element jetspeedServletElement = new Element("servlet");
+ Element servletName = (Element) new
Element("servlet-name").addContent("JetspeedContainer");
+ Element servletDspName = (Element) new
Element("display-name").addContent("Jetspeed Container");
+ Element servletDesc = (Element) new Element("description")
+ .addContent("MVC Servlet for Jetspeed Portlet
Applications");
+ Element servletClass = (Element) new Element("servlet-class")
+
.addContent("org.apache.jetspeed.container.JetspeedContainerServlet");
+ jetspeedServletElement.addContent(servletName);
+ jetspeedServletElement.addContent(servletDspName);
+ jetspeedServletElement.addContent(servletDesc);
+ jetspeedServletElement.addContent(servletClass);
if (this.registerAtInit)
{
Element paramName = (Element) new
Element("param-name").addContent("registerAtInit");
@@ -134,82 +136,90 @@
Element initParam = new Element("init-param");
initParam.addContent(paramName);
initParam.addContent(paramValue);
- jetspeedServletElement.addContent(initParam);
+ jetspeedServletElement.addContent(initParam);
+
+ Element param2Name = (Element) new
Element("param-name").addContent("portletApplication");
+ Element param2Value = (Element) new
Element("param-value").addContent(portletApplication);
+ Element init2Param = new Element("init-param");
+ init2Param.addContent(param2Name);
+ init2Param.addContent(param2Value);
+ jetspeedServletElement.addContent(init2Param);
+
Element loadOnStartup = (Element) new
Element("load-on-startup").addContent("100");
jetspeedServletElement.addContent(loadOnStartup);
}
- insertElementCorrectly(root, jetspeedServletElement,
ELEMENTS_BEFORE_SERVLET);
- changed = true;
- }
-
- if (jetspeedServletMapping == null)
- {
-
- Element jetspeedServletMappingElement = new
Element("servlet-mapping");
-
- Element servletMapName = (Element) new
Element("servlet-name").addContent("JetspeedContainer");
- Element servletUrlPattern = (Element) new
Element("url-pattern").addContent("/container/*");
-
- jetspeedServletMappingElement.addContent(servletMapName);
- jetspeedServletMappingElement.addContent(servletUrlPattern);
-
- insertElementCorrectly(root, jetspeedServletMappingElement,
ELEMENTS_BEFORE_SERVLET_MAPPING);
- changed = true;
- }
- }
- catch (Exception e)
- {
- throw new Exception("Unable to process web.xml for infusion " +
e.toString(), e);
- }
-
- }
-
+ insertElementCorrectly(root, jetspeedServletElement,
ELEMENTS_BEFORE_SERVLET);
+ changed = true;
+ }
+
+ if (jetspeedServletMapping == null)
+ {
+
+ Element jetspeedServletMappingElement = new
Element("servlet-mapping");
+
+ Element servletMapName = (Element) new
Element("servlet-name").addContent("JetspeedContainer");
+ Element servletUrlPattern = (Element) new
Element("url-pattern").addContent("/container/*");
+
+ jetspeedServletMappingElement.addContent(servletMapName);
+ jetspeedServletMappingElement.addContent(servletUrlPattern);
+
+ insertElementCorrectly(root, jetspeedServletMappingElement,
ELEMENTS_BEFORE_SERVLET_MAPPING);
+ changed = true;
+ }
+ }
+ catch (Exception e)
+ {
+ throw new Exception("Unable to process web.xml for infusion " +
e.toString(), e);
+ }
+
+ }
+
public boolean isChanged()
{
return changed;
}
- /**
- *
- * <p>
- * insertElementCorrectly
- * </p>
- *
- * @param root
- * JDom element representing the < web-app >
- * @param toInsert
- * JDom element to insert into the web.xml hierarchy.
- * @param elementsBefore
- * an array of web.xml elements that should be defined before the
- * element we want to insert. This order should be the order
- * defined by the web.xml's DTD type definition.
- */
- protected void insertElementCorrectly( Element root, Element toInsert,
String[] elementsBefore )
+ /**
+ *
+ * <p>
+ * insertElementCorrectly
+ * </p>
+ *
+ * @param root
+ * JDom element representing the < web-app >
+ * @param toInsert
+ * JDom element to insert into the web.xml hierarchy.
+ * @param elementsBefore
+ * an array of web.xml elements that should be defined before the
+ * element we want to insert. This order should be the order
+ * defined by the web.xml's DTD type definition.
+ */
+ protected void insertElementCorrectly( Element root, Element toInsert, String[]
elementsBefore )
throws Exception
- {
- List allChildren = root.getChildren();
- List elementsBeforeList = Arrays.asList(elementsBefore);
- toInsert.detach();
- int insertAfter = 0;
- for (int i = 0; i < allChildren.size(); i++)
- {
- Element element = (Element) allChildren.get(i);
- if (elementsBeforeList.contains(element.getName()))
- {
- // determine the Content index of the element to insert after
- insertAfter = root.indexOf(element);
- }
- }
-
- try
- {
- root.addContent((insertAfter + 1), toInsert);
- }
- catch (ArrayIndexOutOfBoundsException e)
- {
- root.addContent(toInsert);
- }
- }
-
-
+ {
+ List allChildren = root.getChildren();
+ List elementsBeforeList = Arrays.asList(elementsBefore);
+ toInsert.detach();
+ int insertAfter = 0;
+ for (int i = 0; i < allChildren.size(); i++)
+ {
+ Element element = (Element) allChildren.get(i);
+ if (elementsBeforeList.contains(element.getName()))
+ {
+ // determine the Content index of the element to insert after
+ insertAfter = root.indexOf(element);
+ }
+ }
+
+ try
+ {
+ root.addContent((insertAfter + 1), toInsert);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ root.addContent(toInsert);
+ }
+ }
+
+
}
1.1
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/util/FileSystemHelper.java
Index: FileSystemHelper.java
===================================================================
/*
* Copyright 2000-2001,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.util;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a>
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public interface FileSystemHelper
{
/**
*
* <p>
* copyFrom
* </p>
*
* @param directory Directory to copy content from
* @throws [EMAIL PROTECTED] java.io.IlleaglArgumentException} if the
<code>directory.isDirectory</code>
* returns <code>false</code>
*/
void copyFrom(File directory) throws IOException;
/**
*
* <p>
* copyFrom
* </p>
*
* @param directory
* @param fileFilter
* @throws IOException
*/
void copyFrom(File directory, FileFilter fileFilter) throws IOException;
/**
*
* <p>
* remove
* </p>
* Removes the underlying directory structure from the root directory down.
*
* @return <code>true</code> if the removal war successful, otherwise returns
* <code>false</code>.
*/
boolean remove();
/**
*
* <p>
* getRootDirectory
* </p>
*
* @return the root of the directory structure
*/
File getRootDirectory();
/**
*
* <p>
* close
* </p>
*
* Cleans up resources opened up specifically by this FileSystemHelper
*
*/
void close() throws IOException;
/**
*
* <p>
* getSourcePath
* </p>
*
* Returns the true location of this FileSystemHelper backing object on
* the file system. This IS NOT always as the path of the object returned
* from the [EMAIL PROTECTED] getRootDirectory} method.
*
* @return the true location of this FileSystemHelper backing object.
*/
String getSourcePath();
}
1.46 +2 -0
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/assembly/jetspeed.groovy
Index: jetspeed.groovy
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/assembly/jetspeed.groovy,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- jetspeed.groovy 9 Jul 2004 18:30:58 -0000 1.45
+++ jetspeed.groovy 22 Jul 2004 23:38:39 -0000 1.46
@@ -507,6 +507,8 @@
)
)
+services.addPortletService("PAM", container.getComponentInstance("PAM"))
+
portletApplicationListener = new
DeployPortletAppEventListener(webAppDeployDirectory,
container.getComponentInstance("PAM"),
container.getComponentInstance(PortletRegistryComponent));
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]