You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2012/09/07 07:48:49 UTC

svn commit: r1381887 - in /struts/struts2/trunk/plugins: ./ portlet-tiles/ portlet-tiles/src/ portlet-tiles/src/main/ portlet-tiles/src/main/java/ portlet-tiles/src/main/java/org/ portlet-tiles/src/main/java/org/apache/ portlet-tiles/src/main/java/org/...

Author: lukaszlenart
Date: Fri Sep  7 05:48:49 2012
New Revision: 1381887

URL: http://svn.apache.org/viewvc?rev=1381887&view=rev
Log:
WW-2749 adds support for Tiles in Porlets as a dedicated plugin with new PortletTilesResult

Added:
    struts/struts2/trunk/plugins/portlet-tiles/
    struts/struts2/trunk/plugins/portlet-tiles/pom.xml
    struts/struts2/trunk/plugins/portlet-tiles/src/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/java/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java
    struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/
    struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/LICENSE.txt
      - copied unchanged from r1381604, struts/struts2/trunk/plugins/portlet/src/main/resources/LICENSE.txt
    struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/NOTICE.txt
      - copied unchanged from r1381604, struts/struts2/trunk/plugins/portlet/src/main/resources/NOTICE.txt
    struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/struts-plugin.xml
Modified:
    struts/struts2/trunk/plugins/pom.xml
    struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java

Modified: struts/struts2/trunk/plugins/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/pom.xml?rev=1381887&r1=1381886&r2=1381887&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/pom.xml (original)
+++ struts/struts2/trunk/plugins/pom.xml Fri Sep  7 05:48:49 2012
@@ -57,6 +57,7 @@
         <module>dojo</module>
         <module>rest</module>
         <module>portlet</module>
+        <module>portlet-tiles</module>
         <module>junit</module>
         <module>testng</module>
         <module>dwr</module>

Added: struts/struts2/trunk/plugins/portlet-tiles/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet-tiles/pom.xml?rev=1381887&view=auto
==============================================================================
--- struts/struts2/trunk/plugins/portlet-tiles/pom.xml (added)
+++ struts/struts2/trunk/plugins/portlet-tiles/pom.xml Fri Sep  7 05:48:49 2012
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * $Id: pom.xml 1337583 2012-05-12 16:06:55Z lukaszlenart $
+ *
+ * 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.
+ */
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.struts</groupId>
+        <artifactId>struts2-plugins</artifactId>
+        <version>2.3.5-SNAPSHOT</version>
+    </parent>
+    <groupId>org.apache.struts</groupId>
+    <artifactId>struts2-portlet-tiles-plugin</artifactId>
+    <packaging>jar</packaging>
+    <name>Struts 2 Portlet Tiles Plugin</name>
+
+    <scm>
+       <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts2/trunk/plugins/portlet-tiles/</connection>
+       <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts2/trunk/plugins/portlet-tiles/</developerConnection>
+       <url>http://svn.apache.org/viewcvs.cgi/struts/struts2/trunk/plugins/portlet-tiles/</url>
+    </scm>
+
+    <dependencies>
+        <dependency>
+             <groupId>org.apache.struts</groupId>
+             <artifactId>struts2-tiles-plugin</artifactId>
+        </dependency>
+        <dependency>
+             <groupId>org.apache.struts</groupId>
+             <artifactId>struts2-portlet-plugin</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>jsp-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.portlet</groupId>
+            <artifactId>portlet-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tiles</groupId>
+            <artifactId>tiles-jsp</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+    </dependencies>
+</project>

Added: struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java?rev=1381887&view=auto
==============================================================================
--- struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java (added)
+++ struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java Fri Sep  7 05:48:49 2012
@@ -0,0 +1,78 @@
+package org.apache.struts2.views.tiles;
+
+import com.opensymphony.xwork2.ActionInvocation;
+import freemarker.template.TemplateException;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.dispatcher.ServletDispatcherResult;
+import org.apache.struts2.portlet.PortletConstants;
+import org.apache.struts2.portlet.context.PortletActionContext;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.access.TilesAccess;
+
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * JIRA WW-2749 (STRUTS).
+ */
+public class PortletTilesResult extends ServletDispatcherResult {
+
+    private static final long serialVersionUID = -3806939435493086244L;
+
+    public PortletTilesResult() {
+        super();
+    }
+
+    public PortletTilesResult(String location) {
+        super(location);
+    }
+
+    // FIXME PATCH du JIRA WW-2749 (STRUTS)
+    public void doExecute(String location, ActionInvocation invocation)
+            throws IOException, TemplateException, PortletException, TilesException {
+
+        if (PortletActionContext.getPhase().isAction() || PortletActionContext.getPhase().isEvent()) {
+            executeActionResult(location, invocation);
+        } else {
+            executeRenderResult(location);
+        }
+    }
+
+    /**
+     * @param location
+     * @throws TilesException
+     */
+    protected void executeRenderResult(String location) throws TilesException {
+        setLocation(location);
+
+        ServletContext servletContext = ServletActionContext.getServletContext();
+        TilesContainer container = TilesAccess.getContainer(servletContext);
+
+        HttpServletRequest request = ServletActionContext.getRequest();
+        HttpServletResponse response = ServletActionContext.getResponse();
+
+        container.render(location, request, response);
+    }
+
+    /**
+     * @param location
+     * @param invocation
+     */
+    protected void executeActionResult(String location, ActionInvocation invocation) {
+        ActionResponse res = PortletActionContext.getActionResponse();
+
+        res.setRenderParameter(PortletConstants.ACTION_PARAM, "tilesDirect");
+
+        Map<String, Object> sessionMap = invocation.getInvocationContext().getSession();
+        sessionMap.put(PortletConstants.RENDER_DIRECT_LOCATION, location);
+
+        res.setRenderParameter(PortletConstants.MODE_PARAM, PortletActionContext.getRequest().getPortletMode().toString());
+    }
+
+}

Added: struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/struts-plugin.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/struts-plugin.xml?rev=1381887&view=auto
==============================================================================
--- struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/struts-plugin.xml (added)
+++ struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/struts-plugin.xml Fri Sep  7 05:48:49 2012
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+/*
+ * $Id: struts-plugin.xml 1221225 2011-12-20 12:22:28Z jogep $
+ *
+ * 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.
+ */
+-->
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+
+    <package name="struts-portlet-tiles-default" extends="struts-portlet-default">
+
+        <result-types>
+            <result-type name="tiles" class="org.apache.struts2.views.tiles.PortletTilesResult"/>
+        </result-types>
+
+        <action name="tilesDirect" class="org.apache.struts2.portlet.dispatcher.DirectRenderFromEventAction">
+            <result type="tiles" name="success">${location}</result>
+        </action>
+
+    </package>
+
+</struts>

Modified: struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java?rev=1381887&r1=1381886&r2=1381887&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java (original)
+++ struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java Fri Sep  7 05:48:49 2012
@@ -21,21 +21,19 @@
 
 package org.apache.struts2.tiles;
 
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts2.ServletActionContext;
-import org.apache.struts2.views.freemarker.FreemarkerResult;
-import org.apache.tiles.context.TilesRequestContext;
-import org.apache.tiles.context.TilesRequestContextWrapper;
-
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.views.freemarker.FreemarkerResult;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.context.TilesRequestContextWrapper;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 /**
  * Default implementation of TilesUtil.
@@ -52,7 +50,6 @@ public class StrutsTilesRequestContext e
 
     private static final Logger LOG = LoggerFactory.getLogger(StrutsTilesRequestContext.class);
 
-
     /**
      * The mask used to detect requests which should be intercepted.
      */
@@ -74,14 +71,13 @@ public class StrutsTilesRequestContext e
      * @param mask
      * @param context
      */
-    public StrutsTilesRequestContext(TilesRequestContext context,
-                                     String mask) {
+    public StrutsTilesRequestContext(TilesRequestContext context, String mask) {
         super(context);
         this.mask = mask;
     }
 
     public void dispatch(String include) throws IOException {
-    	if (include.endsWith(mask)) {
+    	if (include.endsWith(mask) || include.endsWith(".jsp")) {
             // FIXME This way FreeMarker results still don't have a content-type!
     	    include(include);
         } else {