Author: mrdon
Date: Mon Jan  1 14:10:12 2007
New Revision: 491656

URL: http://svn.apache.org/viewvc?view=rev&rev=491656
Log:
Added ability to discover new tag libraries and template engines automatically
WW-1590

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.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/test/java/org/apache/struts2/views/TemplateEngineManagerTest.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?view=diff&rev=491656&r1=491655&r2=491656
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
(original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
Mon Jan  1 14:10:12 2007
@@ -141,10 +141,6 @@
 
     public static final String STRUTS_ACTIONPROXYFACTORY = 
"struts.actionProxyFactory";
 
-    public static final String STRUTS_TEMPLATE_ENGINES = 
"struts.templateEngines";
-    
-    public static final String STRUTS_TAG_LIBRARIES = "struts.tagLibraries";
-
     public static final String STRUTS_FREEMARKER_WRAPPER_ALT_MAP = 
"struts.freemarker.wrapper.altMap";
 
     /** The name of the xwork converter implementation */

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java?view=diff&rev=491656&r1=491655&r2=491656
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java
 Mon Jan  1 14:10:12 2007
@@ -20,11 +20,11 @@
  */
 package org.apache.struts2.components.template;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
-import org.apache.struts2.StrutsConstants;
-import org.apache.struts2.dispatcher.Dispatcher;
 import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
@@ -51,17 +51,13 @@
     @Inject
     public void setContainer(Container container) {
         this.container = container;
-    }
-    
-    @Inject(StrutsConstants.STRUTS_TEMPLATE_ENGINES)
-    public void setTemplateEngines(String engines) {
-        if (engines != null) {
-            TemplateEngine eng = null;
-            String[] list = engines.split(",");
-            for (String name : list) {
-                templateEngines.put(name, new LazyEngineFactory(name));
-            }
+        Map<String,EngineFactory> map = new HashMap<String,EngineFactory>();
+        Set<String> prefixes = 
container.getInstanceNames(TemplateEngine.class);
+        for (String prefix : prefixes) {
+            map.put(prefix, new LazyEngineFactory(prefix));
         }
+        this.templateEngines = Collections.unmodifiableMap(map);
+        
     }
     
     /**

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?view=diff&rev=491656&r1=491655&r2=491656
==============================================================================
--- 
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
 Mon Jan  1 14:10:12 2007
@@ -125,9 +125,6 @@
     private String encoding;
     private boolean altMapWrapper;
     private Map<String,TagLibrary> tagLibraries;
-    private String tagLibraryPrefixes;
-    private Container container;
-    
     
     @Inject(StrutsConstants.STRUTS_I18N_ENCODING)
     public void setEncoding(String encoding) {
@@ -139,17 +136,6 @@
         altMapWrapper = "true".equals(val);
     }
     
-    @Inject(StrutsConstants.STRUTS_TAG_LIBRARIES)
-    public void setTagLibraryPrefixes(String libnames) {
-        this.tagLibraryPrefixes = libnames;
-    }
-    
-    @Inject
-    public void setContainer(Container container) {
-        this.container = container;
-    }
-    
-    /*
     @Inject
     public void setContainer(Container container) {
         Map<String,TagLibrary> map = new HashMap<String,TagLibrary>();
@@ -159,7 +145,6 @@
         }
         this.tagLibraries = Collections.unmodifiableMap(map);
     }
-    */
 
     public final synchronized freemarker.template.Configuration 
getConfiguration(ServletContext servletContext) throws TemplateException {
         freemarker.template.Configuration config = 
(freemarker.template.Configuration) 
servletContext.getAttribute(CONFIG_SERVLET_CONTEXT_KEY);
@@ -171,17 +156,6 @@
             servletContext.setAttribute(CONFIG_SERVLET_CONTEXT_KEY, config);
         }
         
-        if (tagLibraries == null && tagLibraryPrefixes != null) {
-            Map<String,TagLibrary> map = new HashMap<String,TagLibrary>();
-            List<TagLibrary> list = new ArrayList<TagLibrary>();
-            TagLibrary lib = null;
-            String[] prefixes = tagLibraryPrefixes.split(",");
-            for (String prefix : prefixes) {
-                map.put(prefix, container.getInstance(TagLibrary.class, 
prefix));
-            }
-            this.tagLibraries = Collections.unmodifiableMap(map);
-        }
-
         config.setWhitespaceStripping(true);
 
         return config;

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?view=diff&rev=491656&r1=491655&r2=491656
==============================================================================
--- 
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
 Mon Jan  1 14:10:12 2007
@@ -98,12 +98,8 @@
 
     private String customConfigFile;
     
-    private String tagLibraryPrefixes;
-    
     private List<TagLibrary> tagLibraries;
     
-    private Container container;
-
     public VelocityManager() {
     }
     
@@ -112,14 +108,14 @@
         this.objectFactory = fac;
     }
     
-    @Inject(StrutsConstants.STRUTS_TAG_LIBRARIES)
-    public void setTagLibraryPrefixes(String libnames) {
-        this.tagLibraryPrefixes = libnames;
-    }
-    
     @Inject
     public void setContainer(Container container) {
-        this.container = container;
+        List<TagLibrary> list = new ArrayList<TagLibrary>();
+        Set<String> prefixes = container.getInstanceNames(TagLibrary.class);
+        for (String prefix : prefixes) {
+            list.add(container.getInstance(TagLibrary.class, prefix));
+        }
+        this.tagLibraries = Collections.unmodifiableList(list);
     }
 
     /**
@@ -245,16 +241,6 @@
     public synchronized void init(ServletContext context) {
         if (velocityEngine == null) {
             velocityEngine = newVelocityEngine(context);
-        }
-        if (tagLibraries == null && tagLibraryPrefixes != null) {
-            List<TagLibrary> list = new ArrayList<TagLibrary>();
-            TagLibrary lib = null;
-            String[] prefixes = tagLibraryPrefixes.split(",");
-            for (String prefix : prefixes) {
-                list.add(container.getInstance(TagLibrary.class, prefix));
-            }
-            this.tagLibraries = Collections.unmodifiableList(list);
-            
         }
         this.initToolbox(context);
     }

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/TemplateEngineManagerTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/TemplateEngineManagerTest.java?view=diff&rev=491656&r1=491655&r2=491656
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/TemplateEngineManagerTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/TemplateEngineManagerTest.java
 Mon Jan  1 14:10:12 2007
@@ -20,6 +20,8 @@
  */
 package org.apache.struts2.views;
 
+import java.util.HashSet;
+
 import junit.framework.TestCase;
 
 import org.apache.struts2.components.template.FreemarkerTemplateEngine;
@@ -49,9 +51,13 @@
         mockContainer.matchAndReturn("getInstance", 
C.args(C.eq(TemplateEngine.class), C.eq("jsp")), new JspTemplateEngine());
         mockContainer.matchAndReturn("getInstance", 
C.args(C.eq(TemplateEngine.class), C.eq("vm")), new VelocityTemplateEngine());
         mockContainer.matchAndReturn("getInstance", 
C.args(C.eq(TemplateEngine.class), C.eq("ftl")), new 
FreemarkerTemplateEngine());
+        mockContainer.matchAndReturn("getInstanceNames", 
C.args(C.eq(TemplateEngine.class)), new HashSet() {{
+            add("jsp");
+            add("vm");
+            add("ftl");
+        }});
         
         mgr.setContainer((Container)mockContainer.proxy());
-        mgr.setTemplateEngines("jsp,vm,ftl");
         mgr.setDefaultTemplateType("jsp");
     }
     


Reply via email to