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>