Author: tmjee
Date: Thu Jun  8 08:29:36 2006
New Revision: 412774

URL: http://svn.apache.org/viewvc?rev=412774&view=rev
Log:
- added a simple example into showcase demonstrating the usage of a
  custom freemarker manager instantiated using Spring.
- the custom freemarker manager have a custom util class injected into
  it through Spring's constructor injection
- a simple ftl page just uses freemarker interpolation to display some
  date and time put into freemarker's model by the custom freemarker
manager



Added:
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManager.java
   (with props)
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManagerUtil.java
   (with props)
    
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork-freemarker.xml
   (with props)
Modified:
    
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml
    
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/struts.properties
    struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork.xml
    
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
    struts/action2/trunk/apps/showcase/src/main/webapp/showcase.jsp

Added: 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManager.java
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManager.java?rev=412774&view=auto
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManager.java
 (added)
+++ 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManager.java
 Thu Jun  8 08:29:36 2006
@@ -0,0 +1,54 @@
+/*
+ * $Id: FileUploadAction.java 394498 2006-04-16 15:28:06Z tmjee $
+ *
+ * Copyright 2006 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.struts.action2.showcase.freemarker;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.struts.action2.views.freemarker.FreemarkerManager;
+import org.apache.struts.action2.views.freemarker.ScopesHashModel;
+
+import com.opensymphony.xwork.util.OgnlValueStack;
+
+/**
+ * This is an example of a custom FreemarkerManager, mean to be 
+ * instantiated through Spring. 
+ * <p/>
+ * 
+ * It will add into Freemarker's model
+ * an utility class called [EMAIL PROTECTED] CustomFreemarkerManagerUtil} as a 
simple 
+ * example demonstrating how to extends FreemarkerManager.
+ * <p/>
+ * 
+ * The [EMAIL PROTECTED] CustomFreemarkerManagerUtil} will be created by 
Spring and 
+ * injected through constructor injection.
+ * <p/>
+ */
+public class CustomFreemarkerManager extends FreemarkerManager {
+       
+       private CustomFreemarkerManagerUtil util;
+       
+       public CustomFreemarkerManager(CustomFreemarkerManagerUtil util) {
+               this.util = util;
+       }
+       
+       public void populateContext(ScopesHashModel model, OgnlValueStack 
stack, Object action, HttpServletRequest request, HttpServletResponse response) 
{
+               super.populateContext(model, stack, action, request, response);
+               model.put("customFreemarkerManagerUtil", util);
+       }
+}

Propchange: 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManagerUtil.java
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManagerUtil.java?rev=412774&view=auto
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManagerUtil.java
 (added)
+++ 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManagerUtil.java
 Thu Jun  8 08:29:36 2006
@@ -0,0 +1,39 @@
+/*
+ * $Id: FileUploadAction.java 394498 2006-04-16 15:28:06Z tmjee $
+ *
+ * Copyright 2006 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.struts.action2.showcase.freemarker;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * This class is just a simple util that gets injected into 
+ * [EMAIL PROTECTED] CustomFreemarkerManager} through Spring's constructor
+ * injection, serving as a simple example in SAF2's Showcase. 
+ */
+public class CustomFreemarkerManagerUtil {
+
+       public String getTodayDate() {
+               SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
+               return sdf.format(new Date());
+       }
+       
+       public String getTimeNow() {
+               SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
+               return sdf.format(new Date());
+       }
+}

Propchange: 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/freemarker/CustomFreemarkerManagerUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml?rev=412774&r1=412773&r2=412774&view=diff
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml
 (original)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml
 Thu Jun  8 08:29:36 2006
@@ -11,4 +11,14 @@
 
     <bean id="personManager" 
class="org.apache.struts.action2.showcase.person.PersonManager" 
singleton="true"/>
     
+    <!-- Showcase's CustomFreemarkerManager example -->
+    <bean id="customFreemarkerManager" 
class="org.apache.struts.action2.showcase.freemarker.CustomFreemarkerManager">
+               <constructor-arg index="0">
+                       <ref bean="customFreemarkerManagerUtil" />
+               </constructor-arg>      
+    </bean>
+    <bean id="customFreemarkerManagerUtil" 
class="org.apache.struts.action2.showcase.freemarker.CustomFreemarkerManagerUtil"
 />
+    
+    
 </beans>
+

Modified: 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/struts.properties
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/struts.properties?rev=412774&r1=412773&r2=412774&view=diff
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/struts.properties
 (original)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/struts.properties
 Thu Jun  8 08:29:36 2006
@@ -6,3 +6,4 @@
 struts.custom.i18n.resources=globalMessages
 #struts.action.extension=jspa
 struts.url.http.port = 8080
+struts.freemarker.manager.classname=customFreemarkerManager

Added: 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork-freemarker.xml
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork-freemarker.xml?rev=412774&view=auto
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork-freemarker.xml
 (added)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork-freemarker.xml
 Thu Jun  8 08:29:36 2006
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE xwork PUBLIC 
+       "-//OpenSymphony Group//XWork 1.1.1//EN" 
+       "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd";>
+       
+
+<xwork>
+       <include file="struts-default.xml" />
+
+       <package name="freemarker" namespace="/freemarker" 
extends="struts-default">
+               <action name="customFreemarkerManagerDemo">
+                       <result 
type="freemarker">/freemarker/customFreemarkerManagerUsage.ftl</result>
+               </action>
+       </package>
+</xwork>       

Propchange: 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork-freemarker.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork.xml
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork.xml?rev=412774&r1=412773&r2=412774&view=diff
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork.xml 
(original)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/classes/xwork.xml 
Thu Jun  8 08:29:36 2006
@@ -37,6 +37,8 @@
     <include file="xwork-filedownload.xml" />
     
     <include file="xwork-conversion.xml" />
+    
+    <include file="xwork-freemarker.xml" />
 
     <package name="default" extends="struts-default">
         <interceptors>

Modified: 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp?rev=412774&r1=412773&r2=412774&view=diff
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp 
(original)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp 
Thu Jun  8 08:29:36 2006
@@ -77,6 +77,7 @@
                     <li><a href="<saf:url 
value="/filedownload/index.jsp"/>">File Download</a></li>
                     <li><a href="<saf:url 
value="/conversion/index.jsp"/>"/>Conversion</a></li>
                     <li><a href="<saf:url action="index" 
namespace="/jsf"/>">JSF</a></li>
+                    <li><a href="<saf:url 
value="/freemarker/index.jsp"/>">Freemarker</a>
                     <li class="last"><a href="<saf:url 
value="/help.jsp"/>">Help</a></li>
                 </ul>
             </div>

Modified: struts/action2/trunk/apps/showcase/src/main/webapp/showcase.jsp
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/showcase.jsp?rev=412774&r1=412773&r2=412774&view=diff
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/showcase.jsp (original)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/showcase.jsp Thu Jun  8 
08:29:36 2006
@@ -56,6 +56,9 @@
         
         <!-- model-driven -->
         <li><saf:url id="url" action="modelDriven" namespace="/modelDriven" 
method="input"/><saf:a href="%{url}">Model Driven Example</saf:a>
+        
+        <!--  freemarker -->
+        <li><saf:url id="url" value="/freemarker" /><saf:a 
href="%{#url}">Freemarker Example</saf:a></li>
     </ul>
 </p>
 


Reply via email to