portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a..@apache.org
Subject svn commit: r548891 - in /portals/jetspeed-2/trunk: applications/demo/src/webapp/META-INF/ components/portal/src/java/org/apache/jetspeed/deployment/impl/ components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/
Date Wed, 20 Jun 2007 02:24:38 GMT
Author: ate
Date: Tue Jun 19 19:24:37 2007
New Revision: 548891

URL: http://svn.apache.org/viewvc?view=rev&rev=548891
Log:
JS2-736: Jetty 6.x support
See: https://issues.apache.org/jira/browse/JS2-736
- portlet application hot deployment for Jetty 

Added:
    portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/
    portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/jetspeed-jetty-context.xml
  (with props)
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
  (with props)
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/configure_6_0.dtd
  (with props)
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/context-template.xml
  (with props)
Modified:
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/DeployPortletAppEventListener.java

Added: portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/jetspeed-jetty-context.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/jetspeed-jetty-context.xml?view=auto&rev=548891
==============================================================================
--- portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/jetspeed-jetty-context.xml
(added)
+++ portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/jetspeed-jetty-context.xml
Tue Jun 19 19:24:37 2007
@@ -0,0 +1,14 @@
+<?xml version="1.0"  encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+  <New class="org.mortbay.jetty.plus.naming.Resource">
+    <Arg>jdbc/demo</Arg>
+    <Arg>
+      <New class="org.apache.derby.jdbc.EmbeddedDataSource">
+        <Set name="DatabaseName">/tmp/derby/productiondb</Set>
+        <Set name="User"></Set>
+        <Set name="Password"></Set>
+      </New>
+    </Arg>
+  </New>
+</Configure>

Propchange: portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/jetspeed-jetty-context.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/trunk/applications/demo/src/webapp/META-INF/jetspeed-jetty-context.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/DeployPortletAppEventListener.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/DeployPortletAppEventListener.java?view=diff&rev=548891&r1=548890&r2=548891
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/DeployPortletAppEventListener.java
(original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/DeployPortletAppEventListener.java
Tue Jun 19 19:24:37 2007
@@ -133,6 +133,11 @@
         }
     }
 
+    protected String getWebAppDir()
+    {
+        return webAppDir;
+    }
+    
     public void initialize()
     {
         // start deployed local pa

Added: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java?view=auto&rev=548891
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
(added)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
Tue Jun 19 19:24:37 2007
@@ -0,0 +1,375 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.deployment.impl;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
+
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.deployment.DeploymentEvent;
+import org.apache.jetspeed.deployment.DeploymentException;
+import org.apache.jetspeed.tools.pamanager.PortletApplicationManagement;
+import org.jdom.Attribute;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+/**
+ * @author <a href="mailto:weaver@apache.org">Scott T. Weaver </a>
+ * @version $Id$
+ */
+public class JettyDeployPortletAppEventListener extends DeployPortletAppEventListener
+{
+    private String jettyContextsDir;
+    
+    public JettyDeployPortletAppEventListener(PortletApplicationManagement pam, PortletRegistry
registry, String webAppDir, String localAppDir, boolean stripLoggers, String jettyContextsDir)
throws FileNotFoundException
+    {
+        super(pam, registry, webAppDir, localAppDir, stripLoggers);
+        initJettyContextsDir(jettyContextsDir);
+    }
+
+    public JettyDeployPortletAppEventListener(PortletApplicationManagement pam, PortletRegistry
registry, String webAppDir, String localAppDir, String localAppStagingDir, boolean stripLoggers,
String jettyContextsDir) throws FileNotFoundException
+    {
+        super(pam, registry, webAppDir, localAppDir, localAppStagingDir, stripLoggers);
+        initJettyContextsDir(jettyContextsDir);
+    }
+    
+    private void initJettyContextsDir(String jettyContextsDir) throws FileNotFoundException
+    {
+        File jettyContextsDirFile = new File(jettyContextsDir);
+
+        if (jettyContextsDirFile.exists())
+        {
+            try
+            {
+                this.jettyContextsDir = jettyContextsDirFile.getCanonicalPath();
+            }
+            catch (IOException e) {}
+        }
+        else
+        {
+            throw new FileNotFoundException("The jetty contexts directory \""
+                                            + jettyContextsDirFile.getAbsolutePath() + "\"
does not exist.");
+        }
+    }
+
+    protected void deployPortletApplication(DeploymentEvent event) throws DeploymentException
+    {        
+        try
+        {
+            String fileName = event.getName();
+            String filePath = event.getPath();
+            String appName = fileName.substring(0, fileName.length() - 4);
+            Document context = getJettyContext(filePath);
+            File contextFile = getCurrentJettyContextFile(appName);
+            if (contextFile != null)
+            {
+                if (context == null)
+                {
+                    context = getCurrentJettyContext(contextFile);
+                }
+                contextFile.delete();
+            }
+            if (context == null)
+            {
+                context = getJettyContextTemplate();
+            }
+            updateJettyContext(appName, new File(getWebAppDir(), fileName).getAbsolutePath(),
context);            
+            removeCurrentPA(appName);
+            super.deployPortletApplication(event);
+            writeJettyContext(appName,context);
+        }
+        catch (Exception e)
+        {
+            throw new DeploymentException(e);
+        }
+    }
+    
+    protected void removeCurrentPA(String contextName) throws IOException
+    {
+        File warFile = new File(getWebAppDir(), contextName + ".war");
+        if (warFile.exists())
+        {
+            warFile.delete();
+        }
+        File warDir = new File(getWebAppDir(), contextName);
+        if (warDir.exists() && warDir.isDirectory())
+        {
+            removeDir(warDir);
+        }
+    }
+    
+    protected boolean removeDir(File file)
+    {
+        if (file.isDirectory())
+        {
+            String[] children = file.list();
+            for (int i = 0; i < children.length; i++)
+            {
+                boolean success = removeDir(new File(file, children[i]));
+                if (!success)
+                {
+                    return false;
+                }
+            }
+        }
+
+        // The directory is now empty so delete it OR it is a plain file
+        return file.delete();        
+    }
+    
+    protected File getCurrentJettyContextFile(String contextName) throws IOException
+    {
+        File contextFile = new File(jettyContextsDir, contextName+".xml");
+        if (contextFile.exists())
+        {
+            if (contextFile.isDirectory())
+            {
+                throw new IOException("Cannot deploy application"+contextName+" as there
already exists a directory in "+jettyContextsDir+" with the same name");
+            }
+            return contextFile;
+        }
+        return null;
+    }
+    
+    protected Document getCurrentJettyContext(File contextFile) throws IOException
+    {
+        InputStream source = null;
+        try
+        {
+            source = new FileInputStream(contextFile);
+            return parseJettyContext(source);
+        }
+        finally
+        {
+            if (source != null)
+            {
+                try
+                {
+                    source.close();
+                }
+                catch (IOException e1)
+                {
+                    // ignore
+                }
+            }
+        }
+    }
+    
+    protected Document getJettyContextTemplate() throws IOException
+    {
+        InputStream source = null;
+        try
+        {
+            source = getClass().getResourceAsStream("context-template.xml");
+            return parseJettyContext(source);
+        }
+        finally
+        {
+            if (source != null)
+            {
+                try
+                {
+                    source.close();
+                }
+                catch (IOException e1)
+                {
+                    // ignore
+                }
+            }
+        }
+    }
+    
+    protected Document getJettyContext(String fileName) throws IOException
+    {
+        JarFile jin = null;
+        InputStream source = null;
+        try
+        {
+            jin = new JarFile(fileName);
+            
+            ZipEntry src;
+            Enumeration zipEntries = jin.entries();
+            while (zipEntries.hasMoreElements())
+            {
+                src = (ZipEntry) zipEntries.nextElement();
+                String target = src.getName();
+                if ("META-INF/jetspeed-jetty-context.xml".equals(target))
+                {
+                    System.out.println("Found jetspeed-jetty-context.xml");
+                    source = jin.getInputStream(src);
+                    return parseJettyContext(source);
+                }                
+            }
+            return null;
+        }        
+        finally
+        {
+            if (source != null)
+            {
+                try
+                {
+                    source.close();
+                }
+                catch (IOException e1)
+                {
+                    // ignore
+                }
+            }
+            if (jin != null)
+            {
+                try
+                {
+                    jin.close();
+                    jin = null;
+                }
+                catch (IOException e1)
+                {
+                    // ignore
+                }
+            }
+        }
+    }
+    
+    protected void updateJettyContext(String contextName, String warPath, Document context)
+    {
+        Element root = context.getRootElement();
+        Iterator iter = root.getChildren("Set").iterator();
+        boolean foundSetWar = false;
+        boolean foundSetContextPath = false;
+        boolean foundSetConfigurationClasses = false;
+        
+        while (iter.hasNext())
+        {
+            Element set = (Element)iter.next();
+            String name = set.getAttribute("name").getName();
+            if (name.equals("contextPath"))
+            {
+                set.setText("/"+contextName);
+                foundSetContextPath = true;
+            }
+            else if (name.equals("resourceBase"))
+            {
+                iter.remove();
+            }
+            else if (name.equals("war"))
+            {
+                set.setText(warPath);
+                foundSetWar = true;
+            }
+            else if (name.equals("configurationClasses"))
+            {
+                foundSetConfigurationClasses = true;
+            }
+        }        
+        if (!foundSetContextPath)
+        {
+            root.addContent(new Element("Set").setAttribute(new Attribute("name", "contextPath")).setText("/"+contextName));
+        }
+        if (!foundSetWar)
+        {
+            root.addContent(new Element("Set").setAttribute(new Attribute("name", "war")).setText(warPath));
+        }
+        if (!foundSetConfigurationClasses)
+        {
+            Element array = new Element("Array").setAttribute(new Attribute("type","java.lang.String"));
+            array.addContent(new Element("Item").setText("org.mortbay.jetty.webapp.WebInfConfiguration"));
+            array.addContent(new Element("Item").setText("org.mortbay.jetty.plus.webapp.EnvConfiguration"));
+            array.addContent(new Element("Item").setText("org.mortbay.jetty.plus.webapp.Configuration"));
+            array.addContent(new Element("Item").setText("org.mortbay.jetty.webapp.JettyWebXmlConfiguration"));
+            array.addContent(new Element("Item").setText("org.mortbay.jetty.webapp.TagLibConfiguration"));
+            root.addContent(new Element("Set").setAttribute(new Attribute("name", "configurationClasses")).setContent(array));
+        }
+    }
+    
+    protected void writeJettyContext(String contextName, Document context) throws IOException
+    {
+        File contextFile = new File(jettyContextsDir, contextName+".xml");
+        if (contextFile.exists())
+        {
+            throw new IOException("Jetty context file "+contextFile.getAbsolutePath()+" found.");
+        }
+        FileOutputStream output = null;
+        try
+        {
+            output = new FileOutputStream(contextFile);
+            XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
+            xmlOutputter.output(context, output);
+        }
+        finally
+        {
+            if (output != null)
+            {
+                try
+                {
+                    output.close();
+                }
+                catch (IOException e1)
+                {
+                    // ignore
+                }
+            }
+        }
+    }
+
+    protected Document parseJettyContext(InputStream source) throws IOException 
+    {
+        // Parse using the local dtds instead of remote dtds. This
+        // allows to deploy the application offline
+        SAXBuilder saxBuilder = new SAXBuilder();
+        saxBuilder.setEntityResolver(new EntityResolver()
+        {
+            public InputSource resolveEntity(java.lang.String publicId, java.lang.String
systemId) throws SAXException,
+                            java.io.IOException
+            {
+                if (systemId.equals("http://jetty.mortbay.org/configure.dtd"))
+                {
+                    return new InputSource(getClass().getResourceAsStream("jetty/configure_6_0.dtd"));
+                }
+                return null;
+            }
+        });
+        try
+        {
+            Document document = saxBuilder.build(source);
+            return document;
+        }
+        catch (JDOMException e)
+        {
+            IOException ioException = new IOException("Parse failure: "+e.getMessage());
+            ioException.fillInStackTrace();
+            throw ioException;
+        }
+    }
+}

Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/configure_6_0.dtd
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/configure_6_0.dtd?view=auto&rev=548891
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/configure_6_0.dtd
(added)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/configure_6_0.dtd
Tue Jun 19 19:24:37 2007
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+This is the document type descriptor for the
+org.mortbay.util.XmlConfiguration class.  It allows a java object to be
+configured by with a sequence of Set, Put and Call elements.  These tags are 
+mapped to methods on the object to be configured as follows:
+
+  <Set  name="Test">value</Set>              ==  obj.setTest("value");
+  <Put  name="Test">value</Put>              ==  obj.put("Test","value");
+  <Call name="test"><Arg>value</Arg></Call>  ==  obj.test("value");
+
+Values themselves may be configured objects that are created with the
+<New> tag or returned from a <Call> tag.
+
+Values are matched to arguments on a best effort approach, but types
+my be specified if a match is not achieved.
+
+$Id$
+-->
+
+<!ENTITY % CONFIG "Get|Set|Put|Call|New|Ref|Array|Property">
+<!ENTITY % VALUE "#PCDATA|Call|New|Get|SystemProperty|Array|Ref|Property">
+
+<!ENTITY % TYPEATTR "type CDATA #IMPLIED " > <!-- String|Character|Short|Byte|Integer|Long|Boolean|Float|Double|char|short|byte|int|long|boolean|float|double|URL|InetAddress|InetAddrPort|
#classname -->
+<!ENTITY % IMPLIEDCLASSATTR "class NMTOKEN #IMPLIED" >
+<!ENTITY % CLASSATTR "class NMTOKEN #REQUIRED" >
+<!ENTITY % NAMEATTR "name NMTOKEN #REQUIRED" >
+<!ENTITY % DEFAULTATTR "default CDATA #IMPLIED" >
+<!ENTITY % IDATTR "id NMTOKEN #IMPLIED" >
+<!ENTITY % REQUIREDIDATTR "id NMTOKEN #REQUIRED" >
+<!--
+Configure Element.
+This is the root element that specifies the class of object that
+can be configured:
+
+    <Configure class="com.acme.MyClass"> ... </Configure>
+
+A Configure element can contain Set, Put or Call elements.
+-->
+<!ELEMENT Configure (%CONFIG;)* >
+<!ATTLIST Configure %IMPLIEDCLASSATTR; %IDATTR; >
+
+
+<!--
+Set Element.
+This element maps to a call to a set method on the current object.
+The name and optional type attributes are used to select the set 
+method. If the name given is xxx, then a setXxx method is used, or
+the xxx field is used of setXxx cannot be found. 
+A Set element can contain value text and/or the value elements Call,
+New and SystemProperty. If no value type is specified, then white
+space is trimmed out of the value. If it contains multiple value
+elements they are added as strings before being converted to any
+specified type.
+
+A Set with a class attribute is treated as a static set method invocation.
+-->
+<!ELEMENT Set ( %VALUE; )* >
+<!ATTLIST Set %NAMEATTR; %TYPEATTR; %IMPLIEDCLASSATTR; >
+
+
+<!--
+Get Element.
+This element maps to a call to a get method or field on the current object.
+The name attribute is used to select the get method.
+If the name given is xxx, then a getXxx method is used, or
+the xxx field is used of setXxx cannot be found. 
+A Get element can contain Set, Put and/or Call elements which act on the object
+returned by the get call.
+
+A Get with a class attribute is treated as a static get method or field.
+-->
+<!ELEMENT Get (%CONFIG;)*>
+<!ATTLIST Get %NAMEATTR; %IMPLIEDCLASSATTR; %IDATTR; >
+
+<!--
+Put Element.
+This element maps to a call to a put method on the current object,
+which must implement the Map interface. The name attribute is used 
+as the put key and the optional type attribute can force the type 
+of the value.
+
+A Put element can contain value text and/or the value elements Call,
+New and SystemProperty. If no value type is specified, then white
+space is trimmed out of the value. If it contains multiple value
+elements they are added as strings before being converted to any
+specified type.
+-->
+<!ELEMENT Put ( %VALUE; )* >
+<!ATTLIST Put %NAMEATTR; %TYPEATTR; >
+
+
+<!--
+Call Element.
+This element maps to an arbitrary call to a method on the current object,
+The name attribute and Arg elements are used to select the method.
+
+A Call element can contain a sequence of Arg elements followed by
+a sequence of Set, Put and/or Call elements which act on any object
+returned by the original call:
+
+ <Call name="test"><Arg>value1</Arg><Set name="Test">Value2</Set></Call>
+
+This is equivalent to:
+
+ Object o2 = o1.test("value1");
+ o2.setTest("value2");
+
+A Call with a class attribute is treated as a static call.
+
+-->
+<!ELEMENT Call (Arg*,(%CONFIG;)*)>
+<!ATTLIST Call %NAMEATTR; %IMPLIEDCLASSATTR; %IDATTR;>
+
+
+<!--
+Arg Element.
+This element defines a positional argument for the Call element.
+The optional type attribute can force the type of the value.
+
+An Arg element can contain value text and/or the value elements Call,
+New and SystemProperty. If no value type is specified, then white
+space is trimmed out of the value. If it contains multiple value
+elements they are added as strings before being converted to any
+specified type.
+-->
+<!ELEMENT Arg ( %VALUE; )* >
+<!ATTLIST Arg %TYPEATTR; >
+
+
+
+<!--
+New Element.
+This element allows the creation of a new object as part of a 
+value of a Set, Put or Arg element. The class attribute determines
+the type of the new object and the contained Arg elements 
+are used to select the constructor for the new object.
+
+A New element can contain a sequence of Arg elements followed by
+a sequence of Set, Put and/or Call elements which act on the new object:
+
+ <New class="com.acme.MyClass">
+   <Arg>value1</Arg><Set name="Test">Value2</Set>
+ </New>
+
+This is equivalent to:
+
+ Object o = new com.acme.MyClass("value1");
+ o.setTest("value2");
+
+-->
+<!ELEMENT New (Arg*,(%CONFIG;)*)>
+<!ATTLIST New %CLASSATTR; %IDATTR;>
+
+<!--
+Ref Element.
+This element allows a previously created object to be reference by id.
+
+A Ref element can contain a sequence of Set, Put and/or Call elements 
+which act on the referenced object:
+
+ <Ref id="myobject">
+   <Set name="Test">Value2</Set>
+ </New>
+
+-->
+<!ELEMENT Ref ((%CONFIG;)*)>
+<!ATTLIST Ref %REQUIREDIDATTR;>
+
+<!--
+Array Element.
+This element allows the creation of a new array as part of a 
+value of a Set, Put or Arg element. The type attribute determines
+the type of the new array and the contained Item elements 
+are used for each element of the array
+
+ <Array type="java.lang.String">
+   <Item>value0</Item>
+   <Item><New class="java.lang.String"><Arg>value1</Arg></New></Item>
+ </Array>
+
+This is equivalent to:
+ String[] a = new String[] { "value0", new String("value1") };
+
+-->
+<!ELEMENT Array (Item*)>
+<!ATTLIST Array %TYPEATTR; %IDATTR; >
+
+<!--
+Map Element.
+This element allows the creation of a new array as part of a 
+value of a Set, Put or Arg element. The type attribute determines
+the type of the new array and the contained Item elements 
+are used for each element of the array
+
+ <Map>
+   <Entry>
+     <Item>keyName</Item>
+     <Item><New class="java.lang.String"><Arg>value1</Arg></New></Item>
+   </Entry>
+ </Map>
+
+This is equivalent to:
+ String[] a = new String[] { "value0", new String("value1") };
+
+-->
+<!ELEMENT Map (Entry*)>
+<!ATTLIST Map %IDATTR; >
+<!ELEMENT Entry (Item,Item)>
+
+
+<!--
+Item Element.
+This element defines an entry for the Array or Map Entry elements.
+The optional type attribute can force the type of the value.
+
+An Item element can contain value text and/or the value elements Call,
+New and SystemProperty. If no value type is specified, then white
+space is trimmed out of the value. If it contains multiple value
+elements they are added as strings before being converted to any
+specified type.
+-->
+<!ELEMENT Item ( %VALUE; )* >
+<!ATTLIST Item %TYPEATTR; %IDATTR; >
+
+
+<!--
+System Property Element.
+This element allows JVM System properties to be retrieved as
+part of the value of a Set, Put or Arg element.
+The name attribute specifies the property name and the optional
+default argument provides a default value.
+
+ <SystemProperty name="Test" default="value"/>
+
+This is equivalent to:
+
+ System.getProperty("Test","value");
+
+-->
+<!ELEMENT SystemProperty EMPTY>
+<!ATTLIST SystemProperty %NAMEATTR; %DEFAULTATTR; %IDATTR;>
+
+<!--
+Property Element.
+This element allows arbitrary properties to be retrieved as
+part of the value of a Set, Put or Arg element.
+The name attribute specifies the property name and the optional
+default argument provides a default value.
+
+   <Property name="Test" default="value"/>
+-->
+<!ELEMENT Property EMPTY>
+<!ATTLIST Property %NAMEATTR; %DEFAULTATTR; %IDATTR;>
+
+
+

Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/configure_6_0.dtd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/configure_6_0.dtd
------------------------------------------------------------------------------
    svn:keywords = Id

Added: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/context-template.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/context-template.xml?view=auto&rev=548891
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/context-template.xml
(added)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/context-template.xml
Tue Jun 19 19:24:37 2007
@@ -0,0 +1,15 @@
+<?xml version="1.0"  encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+  <Set name="ConfigurationClasses">
+    <Array type="java.lang.String">
+      <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
+      <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
+      <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
+      <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
+      <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
+    </Array>
+  </Set>
+	<Set name="parentLoaderPriority">false</Set>
+	<Set name="extractWAR">true</Set>
+</Configure>

Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/context-template.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/deployment/impl/jetty/context-template.xml
------------------------------------------------------------------------------
    svn:keywords = Id



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org


Mime
View raw message