You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2005/11/25 14:40:26 UTC

svn commit: r348951 - in /cocoon/blocks: portal-sample/trunk/samples/profiles/copletinstancedata/ portal-sample/trunk/samples/profiles/layout/ portal/trunk/java/org/apache/cocoon/portal/pluto/adapter/ portal/trunk/java/org/apache/cocoon/portal/pluto/de...

Author: cziegeler
Date: Fri Nov 25 05:40:18 2005
New Revision: 348951

URL: http://svn.apache.org/viewcvs?rev=348951&view=rev
Log:
Preconfigure jpetstore portlet; add support for struts bridge during deployment

Added:
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/PortletRewriter.java   (with props)
Modified:
    cocoon/blocks/portal-sample/trunk/samples/profiles/copletinstancedata/portal-user-cocoon.xml
    cocoon/blocks/portal-sample/trunk/samples/profiles/layout/portal-user-cocoon.xml
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/adapter/PortletWindowAspect.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/Deployer.java

Modified: cocoon/blocks/portal-sample/trunk/samples/profiles/copletinstancedata/portal-user-cocoon.xml
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/profiles/copletinstancedata/portal-user-cocoon.xml?rev=348951&r1=348950&r2=348951&view=diff
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/profiles/copletinstancedata/portal-user-cocoon.xml (original)
+++ cocoon/blocks/portal-sample/trunk/samples/profiles/copletinstancedata/portal-user-cocoon.xml Fri Nov 25 05:40:18 2005
@@ -54,6 +54,10 @@
       <coplet-data>CocoonPortlet</coplet-data>
    </coplet-instance-data>
 
+   <coplet-instance-data id="Petstore-1">
+      <coplet-data>jpetstore.JPetstorePortlet</coplet-data>
+   </coplet-instance-data>
+
    <coplet-instance-data id="app-test-1">
       <coplet-data>app-test-one</coplet-data>
    </coplet-instance-data>

Modified: cocoon/blocks/portal-sample/trunk/samples/profiles/layout/portal-user-cocoon.xml
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/profiles/layout/portal-user-cocoon.xml?rev=348951&r1=348950&r2=348951&view=diff
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/profiles/layout/portal-user-cocoon.xml (original)
+++ cocoon/blocks/portal-sample/trunk/samples/profiles/layout/portal-user-cocoon.xml Fri Nov 25 05:40:18 2005
@@ -67,6 +67,12 @@
     </composite-layout>
   </named-item>
 
+  <named-item name="Portals Bridges">
+    <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+      <coplet-instance-data>Petstore-1</coplet-instance-data>
+    </coplet-layout>
+  </named-item>
+
   <named-item name="WSRP">
     <composite-layout name="column">
       <item>

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/adapter/PortletWindowAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/adapter/PortletWindowAspect.java?rev=348951&r1=348950&r2=348951&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/adapter/PortletWindowAspect.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/adapter/PortletWindowAspect.java Fri Nov 25 05:40:18 2005
@@ -119,7 +119,11 @@
         final PortletWindow window = (PortletWindow)copletInstanceData.getTemporaryAttribute("window");
         if ( window == null ) {
             // no portlet window, so use a default behaviour
-            XMLUtils.createElement(contenthandler, "title", copletInstanceData.getTitle());
+            if ( copletInstanceData.getTitle() == null ) {
+                XMLUtils.createElement(contenthandler, "title", "No title");
+            } else {
+                XMLUtils.createElement(contenthandler, "title", copletInstanceData.getTitle());
+            }
         } else {
             if ( ((PortletWindowImpl)window).getLayout() == null ) {
                 ((PortletWindowImpl)window).setLayout((CopletLayout)layout);

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/Deployer.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/Deployer.java?rev=348951&r1=348950&r2=348951&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/Deployer.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/Deployer.java Fri Nov 25 05:40:18 2005
@@ -113,6 +113,7 @@
             webRewriter.processWebXML();
             ContextRewriter contextRewriter = new ContextRewriter(contextXml, portletApplicationName);
             contextRewriter.processContextXML();
+            PortletRewriter.process(portletXml);
 
             // write the web.xml, portlet.xml, and context.xml files
             addFile("WEB-INF/web.xml", webXml, jout);

Added: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/PortletRewriter.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/PortletRewriter.java?rev=348951&view=auto
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/PortletRewriter.java (added)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/PortletRewriter.java Fri Nov 25 05:40:18 2005
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2005 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.cocoon.portal.pluto.deployment;
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.cocoon.portal.bridges.ServletContextProviderImpl;
+import org.apache.cocoon.portal.deployment.DeploymentException;
+import org.apache.cocoon.xml.dom.DOMUtil;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Utilities for manipulating the portlet.xml deployment descriptor.
+ *
+ * @version $Id$
+ */
+public class PortletRewriter {
+
+
+    public static boolean process(Document document)
+    throws DeploymentException {
+        boolean changed = false;
+        final Element root = document.getDocumentElement();
+        final NodeList nodes = root.getChildNodes();
+        try {
+            for(int i=0; i<nodes.getLength(); i++) {
+                final Node current = nodes.item(i);
+                if ( current.getNodeType() == Node.ELEMENT_NODE
+                     && ("portlet".equals(current.getLocalName()) || "portlet".equals(current.getNodeName()))) {
+                    final Element e = (Element)current;
+                    final Element classElement = (Element)XPathAPI.selectSingleNode(e, "*[local-name()='portlet-class']");
+                    if ( classElement != null ) {
+                        changed = true;
+                        final String className = DOMUtil.getValueOfNode(classElement);
+                        if ( className.equals("org.apache.portals.bridges.struts.StrutsPortlet") ) {
+                            Element initParamName = (Element)XPathAPI.selectSingleNode(e, "*[local-name()='init-param']/*[local-name()='name' and contains(child::text(), \"ServletContextProvider\")]");
+                            Element initParam;
+                            if ( initParamName == null ) {
+                                initParam = document.createElementNS(e.getNamespaceURI(), "init-param");
+                                Element name = document.createElementNS(e.getNamespaceURI(), "name");
+                                initParam.appendChild(name);
+                                name.appendChild(document.createTextNode("ServletContextProvider"));
+                                e.insertBefore(initParam, e.getFirstChild());
+                            } else {
+                                initParam = (Element)initParamName.getParentNode();
+                            }
+                            Element value = (Element)XPathAPI.selectSingleNode(initParam, "*[local-name()='value']");
+                            if ( value == null ) {
+                                value = document.createElementNS(e.getNamespaceURI(), "value");
+                                initParam.appendChild(value);
+                            } else {
+                                while ( value.hasChildNodes() ) {
+                                    value.removeChild(value.getFirstChild());
+                                }
+                            }
+                            value.appendChild(document.createTextNode(ServletContextProviderImpl.class.getName()));
+                        }
+                    }
+                }
+            }
+        } catch (TransformerException te) {
+            throw new DeploymentException("Unable to process portlet.xml.", te);
+        }
+        return changed;
+    }
+
+}

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/PortletRewriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/pluto/deployment/PortletRewriter.java
------------------------------------------------------------------------------
    svn:keywords = Id