You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by dd...@apache.org on 2006/12/13 21:54:00 UTC

svn commit: r486835 - in /struts/sandbox/trunk/tiles: tiles-api/src/main/java/org/apache/tiles/web/ tiles-test/src/main/webapp/ tiles-test/src/main/webapp/WEB-INF/

Author: ddewolf
Date: Wed Dec 13 12:53:57 2006
New Revision: 486835

URL: http://svn.apache.org/viewvc?view=rev&rev=486835
Log:
Adding TilesDispathServlet to allow direct invocation of a tile without a jsp or api invocation.  This can be used to simplify deployment

Added:
    struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDispatchServlet.java   (with props)
Modified:
    struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDecorationFilter.java
    struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/tiles-defs.xml
    struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/web.xml
    struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/index.jsp

Modified: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDecorationFilter.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDecorationFilter.java?view=diff&rev=486835&r1=486834&r2=486835
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDecorationFilter.java (original)
+++ struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDecorationFilter.java Wed Dec 13 12:53:57 2006
@@ -136,7 +136,7 @@
 
     private String getRequestBase(ServletRequest request) {
         // Included Path
-        String include = (String) request.getAttribute("javax.servlet.include.request_uri");
+        String include = (String) request.getAttribute("javax.servlet.include.servlet_path");
         if (include != null) {
             return include;
         }

Added: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDispatchServlet.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDispatchServlet.java?view=auto&rev=486835
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDispatchServlet.java (added)
+++ struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDispatchServlet.java Wed Dec 13 12:53:57 2006
@@ -0,0 +1,77 @@
+/*
+ * $Id$
+ *
+ * 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.tiles.web;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.access.TilesAccess;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Tiles dispatching servlet.  Used to invoke
+ * a definition directly.
+ */
+public class TilesDispatchServlet extends HttpServlet {
+
+    private static final Log LOG =
+        LogFactory.getLog(TilesDispatchServlet.class);
+
+    protected void doGet(HttpServletRequest req, HttpServletResponse res)
+        throws ServletException, IOException {
+
+        TilesContainer container = TilesAccess.getContainer(getServletContext());
+        try {
+            String definition = getDefinitionName(req);
+            if (LOG.isDebugEnabled()) {
+                LOG.info("Dispatching to tile '" + definition + "'");
+            }
+            container.render(req, res, definition);
+        } catch (TilesException e) {
+            throw new ServletException("Error rendering tile.", e);
+        }
+    }
+
+    protected String getDefinitionName(HttpServletRequest request) {
+        String path = (String) request.getAttribute("javax.servlet.include.servlet_path");
+        if (path == null) {
+            path = request.getServletPath();
+        }
+
+        int start = path.startsWith("/") ? 1 : 0;
+        int end = path.endsWith(".tiles") ? path.indexOf(".tiles") : path.length();
+
+        return path.substring(start, end);
+    }
+
+    protected void doPost(HttpServletRequest req, HttpServletResponse res)
+        throws ServletException, IOException {
+        LOG.info("Tiles dispatch request received. Redirecting POST to GET.");
+        doGet(req, res);
+    }
+}

Propchange: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDispatchServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/web/TilesDispatchServlet.java
------------------------------------------------------------------------------
    svn:keywords = Id Author Date Rev

Modified: struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/tiles-defs.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/tiles-defs.xml?view=diff&rev=486835&r1=486834&r2=486835
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/tiles-defs.xml (original)
+++ struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/tiles-defs.xml Wed Dec 13 12:53:57 2006
@@ -83,6 +83,8 @@
       <put name="header" value="/header.jsp"/>
   </definition>
 
+    <definition name="testdispatchservlet" extends="test.definition"/>
+
   <definition name="preparer.definition.configured" extends="preparer.definition" preparer="org.apache.tiles.test.preparer.TestViewPreparer" />
 
 </tiles-definitions>

Modified: struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/web.xml?view=diff&rev=486835&r1=486834&r2=486835
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/web.xml (original)
+++ struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/WEB-INF/web.xml Wed Dec 13 12:53:57 2006
@@ -24,11 +24,12 @@
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-    version="2.4">
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+         version="2.4">
 
-  <display-name>Tiles 2 Test Application</display-name>
+    <display-name>Tiles 2 Test Application</display-name>
+    <distributable/>
 
     <context-param>
         <param-name>org.apache.tiles.CONTEXT_FACTORY</param-name>
@@ -58,35 +59,45 @@
         <url-pattern>/testdecorationfilter.jsp</url-pattern>
         <dispatcher>REQUEST</dispatcher>
     </filter-mapping>
-  
-  <!-- Standard Action Servlet Configuration -->
-  <servlet>
-    <servlet-name>tiles</servlet-name>
-    <servlet-class>org.apache.tiles.servlet.TilesServlet</servlet-class>
-    <init-param>
-      <param-name>definitions-config</param-name>
-      <param-value>/WEB-INF/tiles-defs.xml,/org/apache/tiles/classpath-defs.xml</param-value>
-    </init-param>
-    <load-on-startup>2</load-on-startup>
- </servlet>
-  
-  <!-- Standard Action Servlet Configuration -->
-  <servlet>
-    <servlet-name>layoutServlet</servlet-name>
-    <servlet-class>org.apache.tiles.test.servlet.IncludingServlet</servlet-class>
-    <init-param>
-      <param-name>include</param-name>
-      <param-value>/layout.jsp</param-value>
-    </init-param>
- </servlet>
-
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
-  
-  <servlet-mapping>
-    <servlet-name>layoutServlet</servlet-name>
-    <url-pattern>/servlets/layoutServlet</url-pattern>
-  </servlet-mapping>
+
+    <!-- Standard Action Servlet Configuration -->
+    <servlet>
+        <servlet-name>tiles</servlet-name>
+        <servlet-class>org.apache.tiles.servlet.TilesServlet</servlet-class>
+        <init-param>
+            <param-name>definitions-config</param-name>
+            <param-value>/WEB-INF/tiles-defs.xml,/org/apache/tiles/classpath-defs.xml</param-value>
+        </init-param>
+        <load-on-startup>2</load-on-startup>
+    </servlet>
+
+    <servlet>
+        <servlet-name>Tiles Dispatch Servlet</servlet-name>
+        <servlet-class>org.apache.tiles.web.TilesDispatchServlet</servlet-class>
+    </servlet>
+
+    <!-- Standard Action Servlet Configuration -->
+    <servlet>
+        <servlet-name>layoutServlet</servlet-name>
+        <servlet-class>org.apache.tiles.test.servlet.IncludingServlet</servlet-class>
+        <init-param>
+            <param-name>include</param-name>
+            <param-value>/layout.jsp</param-value>
+        </init-param>
+    </servlet>
+
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+    </welcome-file-list>
+
+    <servlet-mapping>
+        <servlet-name>layoutServlet</servlet-name>
+        <url-pattern>/servlets/layoutServlet</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Tiles Dispatch Servlet</servlet-name>
+        <url-pattern>*.tiles</url-pattern>
+    </servlet-mapping>
 
 </web-app>

Modified: struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/index.jsp?view=diff&rev=486835&r1=486834&r2=486835
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/index.jsp (original)
+++ struts/sandbox/trunk/tiles/tiles-test/src/main/webapp/index.jsp Wed Dec 13 12:53:57 2006
@@ -44,6 +44,8 @@
     <a href="testput_servlet.jsp">Test Put Tag using a servlet mapping as a template</a><br/>
     <a href="testimportattribute.jsp">Test importAttribute Tag</a><br/>
     <a href="testimportattribute_all.jsp">Test importAttribute Tag with no name</a><br/>
+    <a href="testdecorationfilter.jsp">Test Tiles Definition Filter</a><br/>
+    <a href="testdispatchservlet.tiles">Test Tiles Dispatch Servlet</a><br/>
 
     <h3>Mutable Container Tests</h3>
     <a href="testinitcontainer.jsp">Test Initialize Container</a><br/>