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 2013/11/17 21:42:47 UTC

svn commit: r1542808 - in /struts/struts2/trunk: core/src/main/java/org/apache/struts2/views/ core/src/main/java/org/apache/struts2/views/freemarker/ core/src/main/java/org/apache/struts2/views/velocity/ core/src/main/resources/ plugins/dojo/src/main/j...

Author: lukaszlenart
Date: Sun Nov 17 20:42:46 2013
New Revision: 1542808

URL: http://svn.apache.org/r1542808
Log:
WW-4243 Splits interface in to two to allow using different implementation

Added:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryDirectiveProvider.java
      - copied, changed from r1535515, struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibrary.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryModelProvider.java
Removed:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibrary.java
Modified:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java
    struts/struts2/trunk/core/src/main/resources/struts-default.xml
    struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/DojoTagLibrary.java
    struts/struts2/trunk/plugins/dojo/src/main/resources/struts-plugin.xml

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java?rev=1542808&r1=1542807&r2=1542808&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java Sun Nov 17 20:42:46 2013
@@ -70,15 +70,15 @@ import com.opensymphony.xwork2.util.Valu
 /**
  * The default Struts tag library
  */
-public class DefaultTagLibrary implements TagLibrary {
+public class DefaultTagLibrary implements TagLibraryDirectiveProvider, TagLibraryModelProvider {
 
-    public Object getFreemarkerModels(ValueStack stack, HttpServletRequest req,
-            HttpServletResponse res) {
+    public Object getModels(ValueStack stack, HttpServletRequest req,
+                            HttpServletResponse res) {
         
         return new StrutsModels(stack, req, res);
     }
 
-    public List<Class> getVelocityDirectiveClasses() {
+    public List<Class> getDirectiveClasses() {
         Class[] directives = new Class[] {
             ActionDirective.class,
             BeanDirective.class,

Copied: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryDirectiveProvider.java (from r1535515, struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibrary.java)
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryDirectiveProvider.java?p2=struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryDirectiveProvider.java&p1=struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibrary.java&r1=1535515&r2=1542808&rev=1542808&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibrary.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryDirectiveProvider.java Sun Nov 17 20:42:46 2013
@@ -29,26 +29,16 @@ import javax.servlet.http.HttpServletRes
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
- * Provides Velocity and Freemarker implementation classes for a tag library
+ * Provides Velocity implementation classes for a tag library
  */
-public interface TagLibrary {
+public interface TagLibraryDirectiveProvider {
 
     /**
-     * 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);
-    
-    /**
      * 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();
+    public List<Class> getDirectiveClasses();
+
 }

Added: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryModelProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryModelProvider.java?rev=1542808&view=auto
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryModelProvider.java (added)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/TagLibraryModelProvider.java Sun Nov 17 20:42:46 2013
@@ -0,0 +1,45 @@
+/*
+ * $Id: TagLibrary.java 651946 2008-04-27 13:41:38Z apetrelli $
+ *
+ * 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.struts2.views;
+
+import com.opensymphony.xwork2.util.ValueStack;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Provides Freemarker implementation classes for a tag library
+ */
+public interface TagLibraryModelProvider {
+
+    /**
+     * 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
+     */
+    Object getModels(ValueStack stack, HttpServletRequest req, HttpServletResponse res);
+
+}

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java?rev=1542808&r1=1542807&r2=1542808&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java Sun Nov 17 20:42:46 2013
@@ -47,7 +47,7 @@ import freemarker.template.TemplateModel
 import freemarker.template.utility.StringUtil;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.views.JspSupportServlet;
-import org.apache.struts2.views.TagLibrary;
+import org.apache.struts2.views.TagLibraryModelProvider;
 import org.apache.struts2.views.util.ContextUtil;
 
 import javax.servlet.GenericServlet;
@@ -176,7 +176,7 @@ public class FreemarkerManager {
     protected boolean cacheBeanWrapper;
     protected int mruMaxStrongSize;
     protected String templateUpdateDelay;
-    protected Map<String,TagLibrary> tagLibraries;
+    protected Map<String,TagLibraryModelProvider> tagLibraries;
 
     private FileManager fileManager;
     private FreemarkerThemeTemplateLoader themeTemplateLoader;
@@ -208,10 +208,10 @@ public class FreemarkerManager {
     
     @Inject
     public void setContainer(Container container) {
-        Map<String,TagLibrary> map = new HashMap<String,TagLibrary>();
-        Set<String> prefixes = container.getInstanceNames(TagLibrary.class);
+        Map<String,TagLibraryModelProvider> map = new HashMap<String,TagLibraryModelProvider>();
+        Set<String> prefixes = container.getInstanceNames(TagLibraryModelProvider.class);
         for (String prefix : prefixes) {
-            map.put(prefix, container.getInstance(TagLibrary.class, prefix));
+            map.put(prefix, container.getInstance(TagLibraryModelProvider.class, prefix));
         }
         this.tagLibraries = Collections.unmodifiableMap(map);
     }
@@ -530,7 +530,7 @@ public class FreemarkerManager {
         populateContext(model, stack, action, request, response);
         if (tagLibraries != null) {
             for (String prefix : tagLibraries.keySet()) {
-                model.put(prefix, tagLibraries.get(prefix).getFreemarkerModels(stack, request, response));
+                model.put(prefix, tagLibraries.get(prefix).getModels(stack, request, response));
             }
         }
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java?rev=1542808&r1=1542807&r2=1542808&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java Sun Nov 17 20:42:46 2013
@@ -32,7 +32,7 @@ import org.apache.struts2.ServletActionC
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.util.VelocityStrutsUtil;
-import org.apache.struts2.views.TagLibrary;
+import org.apache.struts2.views.TagLibraryDirectiveProvider;
 import org.apache.struts2.views.jsp.ui.OgnlTool;
 import org.apache.struts2.views.util.ContextUtil;
 import org.apache.velocity.VelocityContext;
@@ -99,7 +99,7 @@ public class VelocityManager {
 
     private String customConfigFile;
 
-    private List<TagLibrary> tagLibraries;
+    private List<TagLibraryDirectiveProvider> tagLibraries;
 
     @Inject
     public void setObjectFactory(ObjectFactory fac) {
@@ -108,10 +108,10 @@ public class VelocityManager {
 
     @Inject
     public void setContainer(Container container) {
-        List<TagLibrary> list = new ArrayList<TagLibrary>();
-        Set<String> prefixes = container.getInstanceNames(TagLibrary.class);
+        List<TagLibraryDirectiveProvider> list = new ArrayList<TagLibraryDirectiveProvider>();
+        Set<String> prefixes = container.getInstanceNames(TagLibraryDirectiveProvider.class);
         for (String prefix : prefixes) {
-            list.add(container.getInstance(TagLibrary.class, prefix));
+            list.add(container.getInstance(TagLibraryDirectiveProvider.class, prefix));
         }
         this.tagLibraries = Collections.unmodifiableList(list);
     }
@@ -524,8 +524,8 @@ public class VelocityManager {
         // components
         StringBuilder sb = new StringBuilder();
 
-        for (TagLibrary tagLibrary : tagLibraries) {
-            List<Class> directives = tagLibrary.getVelocityDirectiveClasses();
+        for (TagLibraryDirectiveProvider tagLibrary : tagLibraries) {
+            List<Class> directives = tagLibrary.getDirectiveClasses();
             for (Class directive : directives) {
                 addDirective(sb, directive);
             }

Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-default.xml?rev=1542808&r1=1542807&r2=1542808&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original)
+++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Sun Nov 17 20:42:46 2013
@@ -63,7 +63,8 @@
 
     <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="jakarta" class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest" scope="default"/>
 
-    <bean type="org.apache.struts2.views.TagLibrary" name="s" class="org.apache.struts2.views.DefaultTagLibrary" />
+    <bean type="org.apache.struts2.views.TagLibraryDirectiveProvider" name="s" class="org.apache.struts2.views.DefaultTagLibrary" />
+    <bean type="org.apache.struts2.views.TagLibraryModelProvider" name="s" class="org.apache.struts2.views.DefaultTagLibrary" />
 
     <bean class="org.apache.struts2.views.freemarker.FreemarkerThemeTemplateLoader" />
     <bean class="org.apache.struts2.views.freemarker.FreemarkerManager" name="struts" />

Modified: struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/DojoTagLibrary.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/DojoTagLibrary.java?rev=1542808&r1=1542807&r2=1542808&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/DojoTagLibrary.java (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/DojoTagLibrary.java Sun Nov 17 20:42:46 2013
@@ -39,19 +39,19 @@ import org.apache.struts2.dojo.views.vel
 import org.apache.struts2.dojo.views.velocity.components.TextAreaDirective;
 import org.apache.struts2.dojo.views.velocity.components.TreeDirective;
 import org.apache.struts2.dojo.views.velocity.components.TreeNodeDirective;
-import org.apache.struts2.views.TagLibrary;
+import org.apache.struts2.views.TagLibraryDirectiveProvider;
 
 import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.views.TagLibraryModelProvider;
 
-public class DojoTagLibrary implements TagLibrary {
+public class DojoTagLibrary implements TagLibraryDirectiveProvider, TagLibraryModelProvider {
 
-    public Object getFreemarkerModels(ValueStack stack, HttpServletRequest req,
-            HttpServletResponse res) {
+    public Object getModels(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
         
         return new DojoModels(stack, req, res);
     }
 
-    public List<Class> getVelocityDirectiveClasses() {
+    public List<Class> getDirectiveClasses() {
         Class[] directives = new Class[] {
             DateTimePickerDirective.class,
             DivDirective.class,

Modified: struts/struts2/trunk/plugins/dojo/src/main/resources/struts-plugin.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/resources/struts-plugin.xml?rev=1542808&r1=1542807&r2=1542808&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/resources/struts-plugin.xml (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/resources/struts-plugin.xml Sun Nov 17 20:42:46 2013
@@ -26,5 +26,6 @@
 	"http://struts.apache.org/dtds/struts-2.3.dtd">
     
 <struts>
-    <bean type="org.apache.struts2.views.TagLibrary" name="sx" class="org.apache.struts2.dojo.views.DojoTagLibrary" />
+    <bean type="org.apache.struts2.views.TagLibraryDirectiveProvider" name="sx" class="org.apache.struts2.dojo.views.DojoTagLibrary" />
+    <bean type="org.apache.struts2.views.TagLibraryModelProvider" name="sx" class="org.apache.struts2.dojo.views.DojoTagLibrary" />
 </struts>
\ No newline at end of file