You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jo...@apache.org on 2011/11/14 21:24:57 UTC

svn commit: r1201876 - in /struts/struts2/trunk/apps/portlet/src/main: java/org/apache/struts2/portlet/example/eventing/ resources/ webapp/WEB-INF/ webapp/WEB-INF/eventing/

Author: jogep
Date: Mon Nov 14 20:24:57 2011
New Revision: 1201876

URL: http://svn.apache.org/viewvc?rev=1201876&view=rev
Log:
WW-3707: Extend the Portlet Showcase with an Portlet Event Example

Added:
    struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/
    struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/ProcessAction.java
    struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/PublishAction.java
    struts/struts2/trunk/apps/portlet/src/main/resources/struts-eventing.xml
    struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/
    struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/index.jsp
    struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/process.jsp
Modified:
    struts/struts2/trunk/apps/portlet/src/main/resources/struts.xml
    struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/portlet.xml

Added: struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/ProcessAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/ProcessAction.java?rev=1201876&view=auto
==============================================================================
--- struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/ProcessAction.java (added)
+++ struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/ProcessAction.java Mon Nov 14 20:24:57 2011
@@ -0,0 +1,61 @@
+/*
+ * 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.struts2.portlet.example.eventing;
+
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.portlet.interceptor.PortletRequestAware;
+import org.apache.struts2.portlet.interceptor.PortletResponseAware;
+
+import javax.portlet.EventRequest;
+import javax.portlet.EventResponse;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+
+public class ProcessAction extends ActionSupport implements PortletRequestAware, PortletResponseAware {
+
+    private PortletRequest request;
+    private PortletResponse response;
+    private String name;
+
+    public String execute() throws Exception {
+
+        if (request instanceof EventRequest) {
+            EventRequest req = (EventRequest) request;
+            EventResponse res = (EventResponse) response;
+            res.setRenderParameter("eventName", (String) req.getEvent().getValue());
+            return "forward";
+        } else {
+            name = request.getParameter("eventName");
+        }
+
+        return SUCCESS;
+    }
+
+    public void setPortletRequest(PortletRequest request) {
+        this.request = request;
+    }
+
+    public void setPortletResponse(PortletResponse response) {
+        this.response = response;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+}

Added: struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/PublishAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/PublishAction.java?rev=1201876&view=auto
==============================================================================
--- struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/PublishAction.java (added)
+++ struts/struts2/trunk/apps/portlet/src/main/java/org/apache/struts2/portlet/example/eventing/PublishAction.java Mon Nov 14 20:24:57 2011
@@ -0,0 +1,52 @@
+/*
+ * 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.struts2.portlet.example.eventing;
+
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.portlet.interceptor.PortletResponseAware;
+
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletResponse;
+import javax.xml.namespace.QName;
+
+public class PublishAction extends ActionSupport implements PortletResponseAware {
+
+    private PortletResponse response;
+    private String name;
+
+    public String execute() throws Exception {
+
+        if (name != null) {
+            ((ActionResponse) response).setEvent(new QName("http://org.apache.struts2.portlets/events", "name"), name);
+
+            addActionMessage("Publishing Event with Parameter name : " + name);
+        }
+
+        return SUCCESS;
+    }
+
+    public void setPortletResponse(PortletResponse response) {
+        this.response = response;
+
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

Added: struts/struts2/trunk/apps/portlet/src/main/resources/struts-eventing.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/src/main/resources/struts-eventing.xml?rev=1201876&view=auto
==============================================================================
--- struts/struts2/trunk/apps/portlet/src/main/resources/struts-eventing.xml (added)
+++ struts/struts2/trunk/apps/portlet/src/main/resources/struts-eventing.xml Mon Nov 14 20:24:57 2011
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE struts PUBLIC
+        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
+        "http://struts.apache.org/dtds/struts-2.0.dtd">
+
+<struts>
+    <package name="eventing" extends="struts-portlet-default" namespace="/eventing">
+
+        <action name="publish" class="org.apache.struts2.portlet.example.eventing.PublishAction">
+            <result name="success">/WEB-INF/eventing/index.jsp</result>
+        </action>
+
+        <action name="process" class="org.apache.struts2.portlet.example.eventing.ProcessAction">
+            <result name="success">/WEB-INF/eventing/process.jsp</result>
+            <result name="forward" type="redirectAction">
+                <param name="actionName">process</param>
+                <param name="namespace">/eventing</param>
+            </result>
+        </action>
+    </package>
+</struts>

Modified: struts/struts2/trunk/apps/portlet/src/main/resources/struts.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/src/main/resources/struts.xml?rev=1201876&r1=1201875&r2=1201876&view=diff
==============================================================================
--- struts/struts2/trunk/apps/portlet/src/main/resources/struts.xml (original)
+++ struts/struts2/trunk/apps/portlet/src/main/resources/struts.xml Mon Nov 14 20:24:57 2011
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE struts PUBLIC
-    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-    "http://struts.apache.org/dtds/struts-2.0.dtd">
+        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
+        "http://struts.apache.org/dtds/struts-2.0.dtd">
 
 <struts>
-	<include file="struts-view.xml"/>
-	<include file="struts-edit.xml"/>
-	<include file="struts-help.xml"/>
+    <include file="struts-view.xml"/>
+    <include file="struts-edit.xml"/>
+    <include file="struts-help.xml"/>
+    <include file="struts-eventing.xml"/>
 </struts>

Added: struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/index.jsp
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/index.jsp?rev=1201876&view=auto
==============================================================================
--- struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/index.jsp (added)
+++ struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/index.jsp Mon Nov 14 20:24:57 2011
@@ -0,0 +1,11 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<h2>Input your name</h2>
+
+<s:actionmessage/>
+
+<s:form action="publish" method="POST">
+    <s:textfield label="Please enter your name" name="name" value="%{name}"/>
+    <s:submit value="Submit the form"/>
+</s:form>
+

Added: struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/process.jsp
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/process.jsp?rev=1201876&view=auto
==============================================================================
--- struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/process.jsp (added)
+++ struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/eventing/process.jsp Mon Nov 14 20:24:57 2011
@@ -0,0 +1,12 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<s:if test="%{name != null}">
+    <h2>Welcome <s:property value="name"/></h2>
+</s:if>
+<s:else>
+    <h2>Please insert a Name in the Publish Portlet Form</h2>
+</s:else>
+
+<s:actionmessage/>
+
+

Modified: struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/portlet.xml?rev=1201876&r1=1201875&r2=1201876&view=diff
==============================================================================
--- struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/portlet.xml (original)
+++ struts/struts2/trunk/apps/portlet/src/main/webapp/WEB-INF/portlet.xml Mon Nov 14 20:24:57 2011
@@ -1,17 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <portlet-app
-    version="1.0"
-    xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
-    id="struts-portlet">
+        id="struts-portlet"
+        xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        version="2.0"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+        >
 
     <portlet id="StrutsPortlet">
         <description xml:lang="EN">Struts Test Portlet</description>
         <portlet-name>StrutsPortlet</portlet-name>
         <display-name xml:lang="EN">Struts Test Portlet</display-name>
-    
+
         <portlet-class>org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher</portlet-class>
 
         <!-- The view mode namespace. Maps to a namespace in the Struts 2 config file. -->
@@ -49,12 +50,12 @@
             <name>defaultHelpAction</name>
             <value>index</value>
         </init-param>
-    
+
         <expiration-cache>0</expiration-cache>
 
         <supports>
             <mime-type>text/html</mime-type>
-			<portlet-mode>view</portlet-mode>
+            <portlet-mode>view</portlet-mode>
             <portlet-mode>edit</portlet-mode>
             <portlet-mode>help</portlet-mode>
         </supports>
@@ -62,17 +63,17 @@
         <supported-locale>en</supported-locale>
 
         <portlet-info>
-            <title>My StrutsPortlet portlet</title>
-            <short-title>SP</short-title>
+            <title>My Struts2 Portlet</title>
+            <short-title>SP2</short-title>
             <keywords>struts,portlet</keywords>
         </portlet-info>
     </portlet>
-  
+
     <portlet id="StrutsPortlet2">
-        <description xml:lang="EN">Struts Test Portlet2</description>
+        <description xml:lang="EN">Struts Test Portlet with JSR 286 Dispatcher</description>
         <portlet-name>StrutsPortlet2</portlet-name>
-        <display-name xml:lang="EN">Struts Test Portlet2</display-name>
-    
+        <display-name xml:lang="EN">Struts Test Portlet with JSR 286 Dispatcher</display-name>
+
         <portlet-class>org.apache.struts2.portlet.dispatcher.Jsr286Dispatcher</portlet-class>
 
         <!-- The view mode namespace. Maps to a namespace in the Struts 2 config file. -->
@@ -122,10 +123,92 @@
         <supported-locale>en</supported-locale>
 
         <portlet-info>
-            <title>My StrutsPortlet portlet2</title>
-            <short-title>SP2</short-title>
+            <title>My Struts2 Portlet with JSR 286 Dispatcher</title>
+            <short-title>SP2JSR286</short-title>
             <keywords>struts,portlet</keywords>
         </portlet-info>
     </portlet>
 
+
+    <portlet id="Struts2PublishPortlet">
+        <description xml:lang="EN">Struts2 Publish Portlet</description>
+        <portlet-name>Struts2PublishPortlet</portlet-name>
+        <display-name xml:lang="EN">Struts2 Publish Portlet</display-name>
+
+        <portlet-class>org.apache.struts2.portlet.dispatcher.Jsr286Dispatcher</portlet-class>
+
+        <!-- The view mode namespace. Maps to a namespace in the Struts 2 config file. -->
+        <init-param>
+            <name>viewNamespace</name>
+            <value>/eventing</value>
+        </init-param>
+
+        <!-- The default action to invoke in view mode. -->
+        <init-param>
+            <name>defaultViewAction</name>
+            <value>publish</value>
+        </init-param>
+
+        <expiration-cache>0</expiration-cache>
+
+        <supports>
+            <mime-type>text/html</mime-type>
+        </supports>
+
+        <supported-locale>en</supported-locale>
+
+        <portlet-info>
+            <title>Struts2 Publish Portlet</title>
+            <short-title>S2PUB</short-title>
+            <keywords>struts,publish,portlet</keywords>
+        </portlet-info>
+
+        <supported-publishing-event xmlns:x="http://org.apache.struts2.portlets/events">
+            <qname>x:name</qname>
+        </supported-publishing-event>
+    </portlet>
+
+    <portlet id="Struts2ProcessPortlet">
+        <description xml:lang="EN">Struts2 Process Portlet</description>
+        <portlet-name>Struts2ProcessPortlet</portlet-name>
+        <display-name xml:lang="EN">Struts2 Process Portlet</display-name>
+
+        <portlet-class>org.apache.struts2.portlet.dispatcher.Jsr286Dispatcher</portlet-class>
+
+        <!-- The view mode namespace. Maps to a namespace in the Struts 2 config file. -->
+        <init-param>
+            <name>viewNamespace</name>
+            <value>/eventing</value>
+        </init-param>
+
+        <!-- The default action to invoke in view mode. -->
+        <init-param>
+            <name>defaultViewAction</name>
+            <value>process</value>
+        </init-param>
+
+        <expiration-cache>0</expiration-cache>
+
+        <supports>
+            <mime-type>text/html</mime-type>
+        </supports>
+
+        <supported-locale>en</supported-locale>
+
+        <portlet-info>
+            <title>Struts2 Process Portlet</title>
+            <short-title>S2PRO</short-title>
+            <keywords>struts,process,portlet</keywords>
+        </portlet-info>
+
+        <supported-processing-event xmlns:x="http://org.apache.struts2.portlets/events">
+            <qname>x:name</qname>
+        </supported-processing-event>
+    </portlet>
+
+    <event-definition>
+        <qname xmlns:x="http://org.apache.struts2.portlets/events">x:name</qname>
+        <value-type>java.lang.String</value-type>
+    </event-definition>
+
 </portlet-app>