Author: wesw
Date: Thu Aug 13 19:12:07 2009
New Revision: 803993

URL: http://svn.apache.org/viewvc?rev=803993&view=rev
Log:
added freemarker <@sjx.tag support for existing tags.

Added:
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryStrutsModels.java
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryTaglib.java
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/freemarker/
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/freemarker/models/
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/freemarker/models/JQueryFreemarkerModel.java
Modified:
    struts/sandbox/trunk/struts2-jquery-plugin/   (props changed)
    struts/sandbox/trunk/struts2-jquery-plugin/pom.xml
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/struts-plugin.xml

Propchange: struts/sandbox/trunk/struts2-jquery-plugin/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Aug 13 19:12:07 2009
@@ -0,0 +1,5 @@
+.*
+*.iml
+*.ipr
+*.iws
+target

Modified: struts/sandbox/trunk/struts2-jquery-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/pom.xml?rev=803993&r1=803992&r2=803993&view=diff
==============================================================================
--- struts/sandbox/trunk/struts2-jquery-plugin/pom.xml (original)
+++ struts/sandbox/trunk/struts2-jquery-plugin/pom.xml Thu Aug 13 19:12:07 2009
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.7-SNAPSHOT</version>
+        <version>2.1.8-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-jquery-plugin</artifactId>
@@ -48,6 +48,7 @@
     <build>
         <defaultGoal>install</defaultGoal>
         <plugins>
+            <!--
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-idea-plugin</artifactId>
@@ -57,6 +58,7 @@
                     <useFullNames>false</useFullNames>
                 </configuration>
             </plugin>
+            -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-resources-plugin</artifactId>

Added: 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryStrutsModels.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryStrutsModels.java?rev=803993&view=auto
==============================================================================
--- 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryStrutsModels.java
 (added)
+++ 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryStrutsModels.java
 Thu Aug 13 19:12:07 2009
@@ -0,0 +1,84 @@
+package org.apache.struts2.jquery;
+
+import com.opensymphony.xwork2.util.ValueStack;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.struts2.jquery.freemarker.models.JQueryFreemarkerModel;
+import org.apache.struts2.jquery.components.JQueryForm;
+import org.apache.struts2.jquery.components.JQueryHead;
+import org.apache.struts2.jquery.components.JQueryReset;
+import org.apache.struts2.jquery.components.JQuerySubmit;
+import org.apache.struts2.jquery.components.JQueryTextField;
+import org.apache.struts2.jquery.components.JQueryDatepicker;
+
+/**
+ * Describe your class here
+ *
+ * @author $Author$
+ *         <p/>
+ *         $Id$
+ */
+public class JQueryStrutsModels {
+
+    protected ValueStack stack;
+    protected HttpServletRequest req;
+    protected HttpServletResponse res;
+
+    protected JQueryFreemarkerModel form;
+    protected JQueryFreemarkerModel head;
+    protected JQueryFreemarkerModel reset;
+    protected JQueryFreemarkerModel submit;
+    protected JQueryFreemarkerModel textfield;
+    protected JQueryFreemarkerModel datepicker;
+
+    public JQueryStrutsModels(ValueStack stack, HttpServletRequest req, 
HttpServletResponse res) {
+        this.stack = stack;
+        this.req = req;
+        this.res = res;
+    }
+
+    public JQueryFreemarkerModel getForm() {
+        if (form == null ) {
+            form = new JQueryFreemarkerModel(stack, req, res, 
JQueryForm.class);
+        }
+        return form;
+    }
+
+    public JQueryFreemarkerModel getHead() {
+        if (head == null ) {
+            head = new JQueryFreemarkerModel(stack, req, res, 
JQueryHead.class);
+        }
+        return head;
+    }
+
+    public JQueryFreemarkerModel getReset() {
+        if (reset == null ) {
+            reset = new JQueryFreemarkerModel(stack, req, res, 
JQueryReset.class);
+        }
+        return reset;
+    }
+
+    public JQueryFreemarkerModel getSubmit() {
+        if (submit == null ) {
+            submit = new JQueryFreemarkerModel(stack, req, res, 
JQuerySubmit.class);
+        }
+        return submit;
+    }
+
+    public JQueryFreemarkerModel getTextfield() {
+        if (textfield == null ) {
+            textfield = new JQueryFreemarkerModel(stack, req, res, 
JQueryTextField.class);
+        }
+        return textfield;
+    }
+
+    public JQueryFreemarkerModel getDatepicker() {
+        if (datepicker == null ) {
+            datepicker = new JQueryFreemarkerModel(stack, req, res, 
JQueryDatepicker.class);
+        }
+        return datepicker;
+    }
+
+}

Added: 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryTaglib.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryTaglib.java?rev=803993&view=auto
==============================================================================
--- 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryTaglib.java
 (added)
+++ 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/JQueryTaglib.java
 Thu Aug 13 19:12:07 2009
@@ -0,0 +1,41 @@
+package org.apache.struts2.jquery;
+
+import org.apache.struts2.views.TagLibrary;
+import com.opensymphony.xwork2.util.ValueStack;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * Created primarily to provide <@sjx.tag support in Freemarker
+ *
+ * @author $Author$
+ *         <p/>
+ *         $Id$
+ */
+public class JQueryTaglib implements TagLibrary {
+
+    /**
+     * Gets a Java object that contains getters for the tag library's 
Freemarker models.
+     * Called once per Freemarker template processing.
+     *
+     * @param stack The current value stack
+     * @param req   The HTTP request
+     * @param res   The HTTP response
+     * @return The Java object containing the Freemarker model getter methods
+     */
+    public Object getFreemarkerModels(ValueStack stack, HttpServletRequest 
req, HttpServletResponse res) {
+        return new JQueryStrutsModels(stack, req, res);
+    }
+
+    /**
+     * Gets a list of Velocity directive classes for the tag library.  Called 
once on framework
+     * startup when initializing Velocity.
+     *
+     * @return A list of Velocity directive classes
+     */
+    public List<Class> getVelocityDirectiveClasses() {
+        throw new UnsupportedOperationException("no velocity support 
currently, sorry");
+    }
+}

Added: 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/freemarker/models/JQueryFreemarkerModel.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/freemarker/models/JQueryFreemarkerModel.java?rev=803993&view=auto
==============================================================================
--- 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/freemarker/models/JQueryFreemarkerModel.java
 (added)
+++ 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/freemarker/models/JQueryFreemarkerModel.java
 Thu Aug 13 19:12:07 2009
@@ -0,0 +1,66 @@
+package org.apache.struts2.jquery.freemarker.models;
+
+import org.apache.struts2.views.freemarker.tags.TagModel;
+import org.apache.struts2.components.Component;
+import org.apache.commons.logging.LogFactory;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * Describe your class here
+ *
+ * @author $Author$
+ *         <p/>
+ *         $Id$
+ */
+public class JQueryFreemarkerModel extends TagModel {
+
+    private Class clazz;
+    private static final Logger LOG = 
LoggerFactory.getLogger(JQueryFreemarkerModel.class);
+
+    public JQueryFreemarkerModel(ValueStack stack, HttpServletRequest req, 
HttpServletResponse res, Class clazz) {
+        super(stack, req, res);
+        this.clazz = clazz;
+    }
+
+    protected Component getBean() {
+
+        Constructor con;
+        try {
+           con = clazz.getConstructor(ValueStack.class,
+                                      HttpServletRequest.class,
+                                      HttpServletResponse.class);
+        }
+        catch(NoSuchMethodException nsme) {
+            LOG.error("class specified does not appear to have an appropriate 
constructor");
+            return null;
+        }
+
+        Object o = null;
+        try {
+            o = con.newInstance(new Object[]{stack,req,res});
+        }
+        catch (InvocationTargetException e) {
+            LOG.error("InvocationTargetException caught instantiating 
component - " + clazz.getName());
+        }
+        catch (IllegalAccessException e) {
+            LOG.error("IllegalAccessException caught instantiating component - 
" + clazz.getName());
+        }
+        catch (InstantiationException e) {
+            LOG.error("InstantiationException caught instantiating component - 
" + clazz.getName());
+        }
+
+        if (o instanceof Component) {
+            return (Component)o;
+        }
+
+        return null;
+
+    }
+}

Modified: 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/struts-plugin.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/struts-plugin.xml?rev=803993&r1=803992&r2=803993&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/struts-plugin.xml 
(original)
+++ 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/struts-plugin.xml 
Thu Aug 13 19:12:07 2009
@@ -45,6 +45,7 @@
         </result-types>
     </package>    
     -->
+    <bean class="org.apache.struts2.jquery.JQueryTaglib" name="sjx" 
type="org.apache.struts2.views.TagLibrary" />
     <constant name="struts.jquery.default.theme" value="jquery" />
 
 </struts>


Reply via email to