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 2010/03/22 14:13:36 UTC
svn commit: r926062 -
/struts/struts2/trunk/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java
Author: lukaszlenart
Date: Mon Mar 22 13:13:35 2010
New Revision: 926062
URL: http://svn.apache.org/viewvc?rev=926062&view=rev
Log:
Resolved WW-3409 - OSGi plugin not properly loading freemarker results from bundles
Modified:
struts/struts2/trunk/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java
Modified: struts/struts2/trunk/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java?rev=926062&r1=926061&r2=926062&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java (original)
+++ struts/struts2/trunk/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java Mon Mar 22 13:13:35 2010
@@ -21,47 +21,42 @@
package org.apache.struts2.osgi;
-import java.io.File;
-import java.io.IOException;
-
-import javax.servlet.ServletContext;
-
-import org.apache.struts2.osgi.loaders.FreeMarkerBundleResourceLoader;
-import org.apache.struts2.views.freemarker.FreemarkerManager;
-import org.apache.struts2.views.freemarker.StrutsClassTemplateLoader;
-
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
-
+import freemarker.cache.ClassTemplateLoader;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.cache.WebappTemplateLoader;
+import org.apache.struts2.osgi.loaders.FreeMarkerBundleResourceLoader;
+import org.apache.struts2.views.freemarker.FreemarkerManager;
+import org.apache.struts2.views.freemarker.StrutsClassTemplateLoader;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.IOException;
/**
* This class extends FreemarkerManager in core to add a template loader
* (that finds resources inside bundles) to MultiTemplateLoader
*/
public class BundleFreemarkerManager extends FreemarkerManager {
+
private static final Logger LOG = LoggerFactory.getLogger(BundleFreemarkerManager.class);
- protected TemplateLoader getTemplateLoader(ServletContext servletContext) {
- // construct a FileTemplateLoader for the init-param 'TemplatePath'
- FileTemplateLoader templatePathLoader = null;
-
- String templatePath = servletContext.getInitParameter("TemplatePath");
- if (templatePath == null) {
- templatePath = servletContext.getInitParameter("templatePath");
- }
-
- if (templatePath != null) {
- try {
- templatePathLoader = new FileTemplateLoader(new File(templatePath));
- } catch (IOException e) {
- if (LOG.isErrorEnabled())
- LOG.error("Invalid template path specified: [#0]", e, e.getMessage());
- }
- }
+ protected TemplateLoader createTemplateLoader(ServletContext servletContext, String templatePath) {
+ TemplateLoader templatePathLoader = null;
+
+ try {
+ if (templatePath.startsWith("class://")) {
+ // substring(7) is intentional as we "reuse" the last slash
+ templatePathLoader = new ClassTemplateLoader(getClass(), templatePath.substring(7));
+ } else if (templatePath.startsWith("file://")) {
+ templatePathLoader = new FileTemplateLoader(new File(templatePath));
+ }
+ } catch (IOException e) {
+ LOG.error("Invalid template path specified: " + e.getMessage(), e);
+ }
// presume that most apps will require the class and webapp template loader
// if people wish to