You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2008/10/24 02:24:56 UTC
svn commit: r707513 -
/portals/jetspeed-2/portal/branches/JS2-871-pluto-2.0-upgrade/components/jetspeed-portal/src/main/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
Author: ate
Date: Thu Oct 23 17:24:56 2008
New Revision: 707513
URL: http://svn.apache.org/viewvc?rev=707513&view=rev
Log:
JS2-871 - Upgrade Pluto container to version 2.0
See: http://issues.apache.org/jira/browse/JS2-871
- replacing jdom with standard xml handling
Modified:
portals/jetspeed-2/portal/branches/JS2-871-pluto-2.0-upgrade/components/jetspeed-portal/src/main/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
Modified: portals/jetspeed-2/portal/branches/JS2-871-pluto-2.0-upgrade/components/jetspeed-portal/src/main/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JS2-871-pluto-2.0-upgrade/components/jetspeed-portal/src/main/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java?rev=707513&r1=707512&r2=707513&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JS2-871-pluto-2.0-upgrade/components/jetspeed-portal/src/main/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java (original)
+++ portals/jetspeed-2/portal/branches/JS2-871-pluto-2.0-upgrade/components/jetspeed-portal/src/main/java/org/apache/jetspeed/deployment/impl/JettyDeployPortletAppEventListener.java Thu Oct 23 17:24:56 2008
@@ -23,21 +23,26 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
-import java.util.Iterator;
+import java.util.jar.JarEntry;
import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
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.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -160,7 +165,7 @@
return null;
}
- protected Document getCurrentJettyContext(File contextFile) throws IOException
+ protected Document getCurrentJettyContext(File contextFile) throws Exception
{
InputStream source = null;
try
@@ -184,7 +189,7 @@
}
}
- protected Document getJettyContextTemplate() throws IOException
+ protected Document getJettyContextTemplate() throws Exception
{
InputStream source = null;
try
@@ -208,7 +213,7 @@
}
}
- protected Document getJettyContext(String fileName) throws IOException
+ protected Document getJettyContext(String fileName) throws Exception
{
JarFile jin = null;
InputStream source = null;
@@ -216,11 +221,11 @@
{
jin = new JarFile(fileName);
- ZipEntry src;
- Enumeration zipEntries = jin.entries();
- while (zipEntries.hasMoreElements())
+ JarEntry src;
+ Enumeration<JarEntry> jarEntries = jin.entries();
+ while (jarEntries.hasMoreElements())
{
- src = (ZipEntry) zipEntries.nextElement();
+ src = jarEntries.nextElement();
String target = src.getName();
if ("META-INF/jetspeed-jetty-context.xml".equals(target))
{
@@ -261,28 +266,29 @@
protected void updateJettyContext(String contextName, String warPath, Document context)
{
- Element root = context.getRootElement();
- Iterator iter = root.getChildren("Set").iterator();
+ Element root = context.getDocumentElement();
+ NodeList sets = root.getElementsByTagName("Set");
boolean foundSetWar = false;
boolean foundSetContextPath = false;
boolean foundSetConfigurationClasses = false;
- while (iter.hasNext())
+
+ for (int i = 0, size = sets.getLength(); i < size; i++)
{
- Element set = (Element)iter.next();
- String name = set.getAttribute("name").getPortletName();
+ Element set = (Element)sets.item(i);
+ String name = set.getAttribute("name");
if (name.equals("contextPath"))
{
- set.setText("/"+contextName);
+ set.setTextContent("/"+contextName);
foundSetContextPath = true;
}
else if (name.equals("resourceBase"))
{
- iter.remove();
+ root.removeChild(set);
}
else if (name.equals("war"))
{
- set.setText(warPath);
+ set.setTextContent(warPath);
foundSetWar = true;
}
else if (name.equals("configurationClasses"))
@@ -292,21 +298,49 @@
}
if (!foundSetContextPath)
{
- root.addContent(new Element("Set").setAttribute(new Attribute("name", "contextPath")).setText("/"+contextName));
+ Element set = context.createElement("Set");
+ set.setAttribute("name", "contextPath");
+ set.setTextContent("/"+contextName);
+ root.appendChild(set);
}
if (!foundSetWar)
{
- root.addContent(new Element("Set").setAttribute(new Attribute("name", "war")).setText(warPath));
+ Element set = context.createElement("Set");
+ set.setAttribute("name", "war");
+ set.setTextContent(warPath);
+ root.appendChild(set);
}
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));
+ Element set = context.createElement("Set");
+ set.setAttribute("name", "configurationClasses");
+
+ root.appendChild(set);
+
+ Element array = context.createElement("Array");
+ array.setAttribute("type", "java.lang.String");
+
+ set.appendChild(array);
+
+ Element item = context.createElement("Item");
+ item.setTextContent("org.mortbay.jetty.webapp.WebInfConfiguration");
+ array.appendChild(item);
+
+ item = context.createElement("Item");
+ item.setTextContent("org.mortbay.jetty.plus.webapp.EnvConfiguration");
+ array.appendChild(item);
+
+ item = context.createElement("Item");
+ item.setTextContent("org.mortbay.jetty.plus.webapp.Configuration");
+ array.appendChild(item);
+
+ item = context.createElement("Item");
+ item.setTextContent("org.mortbay.jetty.webapp.JettyWebXmlConfiguration");
+ array.appendChild(item);
+
+ item = context.createElement("Item");
+ item.setTextContent("org.mortbay.jetty.webapp.TagLibConfiguration");
+ array.appendChild(item);
}
}
@@ -321,8 +355,27 @@
try
{
output = new FileOutputStream(contextFile);
- XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
- xmlOutputter.output(context, output);
+ DOMSource domSource = new DOMSource(context);
+ StreamResult streamResult = new StreamResult(output);
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Transformer transformer = tf.newTransformer();
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+ if (context.getDoctype() != null)
+ {
+ transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, context.getDoctype().getPublicId());
+ transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, context.getDoctype().getSystemId());
+ }
+ transformer.setOutputProperty(OutputKeys.MEDIA_TYPE, "text/xml");
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.transform(domSource, streamResult);
+ }
+ catch (TransformerConfigurationException e)
+ {
+ throw new IOException(e.getMessage());
+ }
+ catch (TransformerException e)
+ {
+ throw new IOException(e.getMessage());
}
finally
{
@@ -340,12 +393,12 @@
}
}
- protected Document parseJettyContext(InputStream source) throws IOException
+ protected Document parseJettyContext(InputStream source) throws Exception
{
- // Parse using the local dtds instead of remote dtds. This
- // allows to deploy the application offline
- SAXBuilder saxBuilder = new SAXBuilder();
- saxBuilder.setEntityResolver(new EntityResolver()
+ DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
+ domFactory.setNamespaceAware(true); // never forget this!
+ DocumentBuilder builder = domFactory.newDocumentBuilder();
+ builder.setEntityResolver(new EntityResolver()
{
public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws SAXException,
java.io.IOException
@@ -357,16 +410,7 @@
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;
- }
+ Document document = builder.parse(source);
+ return document;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org