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"); }