Author: jacopoc
Date: Sun May 20 07:49:45 2012
New Revision: 1340631

URL: http://svn.apache.org/viewvc?rev=1340631&view=rev
Log:
Refactored code to use the default BeansWrapper defined by FreemarkerWorker; 
this is important according to comment from one of the Freemarker committers:

"As of creating new BeansWrapper, be sure you create it only once during the 
application life-cycle and then reuse the same instance, or else it will have 
to rebuild the class introspection cache again and again."

Thanks to Adam Heath for the comment.

Modified:
    
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntitySaxReader.java
    
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
    ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/WfsEventHandler.java
    
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewHandler.java
    
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewRenderer.java
    ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/WfsViewHandler.java
    ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java

Modified: 
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
 (original)
+++ 
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java
 Sun May 20 07:49:45 2012
@@ -76,7 +76,8 @@ public class FreeMarkerWorker {
 
     // use soft references for this so that things from Content records don't 
kill all of our memory, or maybe not for performance reasons... hmmm, leave to 
config file...
     public static UtilCache<String, Template> cachedTemplates = 
UtilCache.createUtilCache("template.ftl.general", 0, 0, false);
-    protected static Configuration defaultOfbizConfig = makeConfiguration(new 
BeansWrapper());
+    private static final BeansWrapper defaultOfbizWrapper = new BeansWrapper();
+    private static final Configuration defaultOfbizConfig = 
makeConfiguration(defaultOfbizWrapper);
 
     public static Configuration makeConfiguration(BeansWrapper wrapper) {
         Configuration newConfig = new Configuration();
@@ -117,6 +118,10 @@ public class FreeMarkerWorker {
         return newConfig;
     }
 
+    public static BeansWrapper getDefaultOfbizWrapper() {
+        return defaultOfbizWrapper;
+    }
+
     /**
      * Protected helper method.
      */
@@ -616,10 +621,9 @@ public class FreeMarkerWorker {
     }
 
     public static TemplateModel autoWrap(Object obj, Environment env) {
-       BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
        TemplateModel templateModelObj = null;
        try {
-           templateModelObj = wrapper.wrap(obj);
+           templateModelObj = getDefaultOfbizWrapper().wrap(obj);
        } catch (TemplateModelException e) {
            throw new RuntimeException(e.getMessage());
        }

Modified: 
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntitySaxReader.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntitySaxReader.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntitySaxReader.java 
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntitySaxReader.java 
Sun May 20 07:49:45 2012
@@ -42,6 +42,7 @@ import org.ofbiz.base.util.Base64;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
@@ -345,15 +346,14 @@ public class EntitySaxReader implements 
 
                     StringWriter outWriter = new StringWriter();
                     Configuration config = new Configuration();
-                    config.setObjectWrapper(BeansWrapper.getDefaultInstance());
+                    
config.setObjectWrapper(FreeMarkerWorker.getDefaultOfbizWrapper());
                     config.setSetting("datetime_format", "yyyy-MM-dd 
HH:mm:ss.SSS");
 
                     Template template = new Template("FMImportFilter", 
templateReader, config);
                     NodeModel nodeModel = 
NodeModel.wrap(this.rootNodeForTemplate);
 
                     Map<String, Object> context = FastMap.newInstance();
-                    BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
-                    TemplateHashModel staticModels = wrapper.getStaticModels();
+                    TemplateHashModel staticModels = 
FreeMarkerWorker.getDefaultOfbizWrapper().getStaticModels();
                     context.put("Static", staticModels);
 
                     context.put("doc", nodeModel);

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java 
(original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java 
Sun May 20 07:49:45 2012
@@ -38,6 +38,7 @@ import org.ofbiz.base.util.UtilHttp;
 import org.ofbiz.base.util.UtilJ2eeCompat;
 import org.ofbiz.base.util.UtilTimer;
 import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.DelegatorFactory;
 import org.ofbiz.entity.GenericDelegator;
@@ -197,7 +198,7 @@ public class ControlServlet extends Http
 
         request.setAttribute("_REQUEST_HANDLER_", requestHandler);
         
-        ServletContextHashModel ftlServletContext = new 
ServletContextHashModel(this, BeansWrapper.getDefaultInstance());
+        ServletContextHashModel ftlServletContext = new 
ServletContextHashModel(this, FreeMarkerWorker.getDefaultOfbizWrapper());
         request.setAttribute("ftlServletContext", ftlServletContext);
 
         // setup some things that should always be there

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/WfsEventHandler.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/WfsEventHandler.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/WfsEventHandler.java 
(original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/WfsEventHandler.java 
Sun May 20 07:49:45 2012
@@ -42,6 +42,7 @@ import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.minilang.MiniLangException;
 import org.ofbiz.minilang.SimpleMethod;
@@ -183,7 +184,7 @@ public class WfsEventHandler implements 
 
     public static Configuration makeDefaultOfbizConfig() throws 
TemplateException, IOException {
         Configuration config = new Configuration();
-        config.setObjectWrapper(BeansWrapper.getDefaultInstance());
+        config.setObjectWrapper(FreeMarkerWorker.getDefaultOfbizWrapper());
         config.setSetting("datetime_format", "yyyy-MM-dd HH:mm:ss.SSS");
         Configuration defaultOfbizConfig = config;
         return defaultOfbizConfig;

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewHandler.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewHandler.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewHandler.java
 (original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewHandler.java
 Sun May 20 07:49:45 2012
@@ -85,8 +85,6 @@ public class FreeMarkerViewHandler exten
         ServletContext servletContext = (ServletContext) 
request.getAttribute("servletContext");
         HttpSession session = request.getSession();
 
-        BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
-
         // add in the OFBiz objects
         root.put("delegator", request.getAttribute("delegator"));
         root.put("dispatcher", request.getAttribute("dispatcher"));
@@ -101,19 +99,19 @@ public class FreeMarkerViewHandler exten
         root.put("application", servletContext);
 
         // add the servlet context -- this has been deprecated, and now 
requires servlet, do we really need it?
-        //root.put("applicationAttributes", new 
ServletContextHashModel(servletContext, BeansWrapper.getDefaultInstance()));
+        //root.put("applicationAttributes", new 
ServletContextHashModel(servletContext, FreeMarkerWorker.defaultOfbizWrapper));
 
         // add the session object (for transforms) to the context as a 
BeanModel
         root.put("session", session);
 
         // add the session
-        root.put("sessionAttributes", new HttpSessionHashModel(session, 
wrapper));
+        root.put("sessionAttributes", new HttpSessionHashModel(session, 
FreeMarkerWorker.getDefaultOfbizWrapper()));
 
         // add the request object (for transforms) to the context as a 
BeanModel
         root.put("request", request);
 
         // add the request
-        root.put("requestAttributes", new HttpRequestHashModel(request, 
wrapper));
+        root.put("requestAttributes", new HttpRequestHashModel(request, 
FreeMarkerWorker.getDefaultOfbizWrapper()));
 
         // add the request parameters -- this now uses a Map from UtilHttp
         Map<String, Object> requestParameters = 
UtilHttp.getParameterMap(request);

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewRenderer.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewRenderer.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewRenderer.java
 (original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/ftl/FreeMarkerViewRenderer.java
 Sun May 20 07:49:45 2012
@@ -39,6 +39,7 @@ import org.jpublish.Page;
 import org.jpublish.SiteContext;
 import org.jpublish.page.PageInstance;
 import org.jpublish.view.ViewRenderException;
+import org.ofbiz.base.util.template.FreeMarkerWorker;
 
 /**
  * JPublish View Renderer For Freemarker Template Engine
@@ -59,10 +60,9 @@ public class FreeMarkerViewRenderer exte
         HttpServletRequest request = context.getRequest();
         HttpServletResponse response = context.getResponse();
 
-        BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
-        WrappingTemplateModel.setDefaultObjectWrapper(wrapper);
+        
WrappingTemplateModel.setDefaultObjectWrapper(FreeMarkerWorker.getDefaultOfbizWrapper());
         Map contextMap = new HashMap();
-        SimpleHash root = new SimpleHash(wrapper);
+        SimpleHash root = new 
SimpleHash(FreeMarkerWorker.getDefaultOfbizWrapper());
         try {
             Object[] keys = context.getKeys();
             for (int i = 0; i < keys.length; i++) {
@@ -71,13 +71,13 @@ public class FreeMarkerViewRenderer exte
                 if (value != null) {
                     contextMap.put(key, value);
                     //no longer wrapping; let FM do it if needed, more 
efficient
-                    //root.put(key, wrapper.wrap(value));
+                    //root.put(key, 
FreeMarkerWorker.getDefaultOfbizWrapper().wrap(value));
                     root.put(key, value);
                 }
             }
-            root.put("context", wrapper.wrap(contextMap));
+            root.put("context", 
FreeMarkerWorker.getDefaultOfbizWrapper().wrap(contextMap));
             root.put("cachedInclude", new JpCacheIncludeTransform()); // only 
adding this in for JP!
-            //root.put("jpublishContext", wrapper.wrap(context));
+            //root.put("jpublishContext", 
FreeMarkerWorker.getDefaultOfbizWrapper().wrap(context));
             FreeMarkerViewHandler.prepOfbizRoot(root, request, response);
         } catch (Exception e) {
             throw new ViewRenderException(e);
@@ -91,7 +91,7 @@ public class FreeMarkerViewRenderer exte
             Object viewContext = createViewContext(context, path);
 
             Template template = fmConfig.getTemplate(path, 
UtilHttp.getLocale(context.getRequest()));
-            template.setObjectWrapper(BeansWrapper.getDefaultInstance());
+            
template.setObjectWrapper(FreeMarkerWorker.getDefaultOfbizWrapper());
 
             /* NEVER add content to the beginning of templates; this effects 
XML processing which requires the
                first line remain intact.

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/WfsViewHandler.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/WfsViewHandler.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/WfsViewHandler.java 
(original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/WfsViewHandler.java 
Sun May 20 07:49:45 2012
@@ -39,6 +39,7 @@ import org.ofbiz.base.location.FlexibleL
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.entity.GenericValue;
 
 import freemarker.ext.beans.BeansWrapper;
@@ -110,7 +111,7 @@ public class WfsViewHandler extends Abst
 
     public static Configuration makeDefaultOfbizConfig() throws 
TemplateException, IOException {
         Configuration config = new Configuration();
-        config.setObjectWrapper(BeansWrapper.getDefaultInstance());
+        config.setObjectWrapper(FreeMarkerWorker.getDefaultOfbizWrapper());
         config.setSetting("datetime_format", "yyyy-MM-dd HH:mm:ss.SSS");
         Configuration defaultOfbizConfig = config;
         return defaultOfbizConfig;

Modified: 
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java 
(original)
+++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/WebToolsServices.java 
Sun May 20 07:49:45 2012
@@ -59,6 +59,7 @@ import org.ofbiz.base.util.UtilPropertie
 import org.ofbiz.base.util.UtilURL;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilProperties.UtilResourceBundle;
+import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.DelegatorFactory;
 import org.ofbiz.entity.GenericEntityException;
@@ -171,8 +172,7 @@ public class WebToolsServices {
                     }
                 }
                 fmcontext.put("doc", nodeModel);
-                BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
-                TemplateHashModel staticModels = wrapper.getStaticModels();
+                TemplateHashModel staticModels = 
FreeMarkerWorker.getDefaultOfbizWrapper().getStaticModels();
                 fmcontext.put("Static", staticModels);
 
                 template.process(fmcontext, outWriter);

Modified: 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java?rev=1340631&r1=1340630&r2=1340631&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java 
(original)
+++ 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java 
Sun May 20 07:49:45 2012
@@ -44,6 +44,7 @@ import org.ofbiz.base.util.UtilHttp;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.collections.MapStack;
+import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericEntity;
 import org.ofbiz.entity.GenericValue;
@@ -238,9 +239,8 @@ public class ScreenRenderer {
         context.put("javaScriptEnabled", 
Boolean.valueOf(UtilHttp.isJavaScriptEnabled(request)));
 
         // these ones are FreeMarker specific and will only work in FTL 
templates, mainly here for backward compatibility
-        BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
-        context.put("sessionAttributes", new HttpSessionHashModel(session, 
wrapper));
-        context.put("requestAttributes", new HttpRequestHashModel(request, 
wrapper));
+        context.put("sessionAttributes", new HttpSessionHashModel(session, 
FreeMarkerWorker.getDefaultOfbizWrapper()));
+        context.put("requestAttributes", new HttpRequestHashModel(request, 
FreeMarkerWorker.getDefaultOfbizWrapper()));
         TaglibFactory JspTaglibs = new TaglibFactory(servletContext);
         context.put("JspTaglibs", JspTaglibs);
         context.put("requestParameters",  UtilHttp.getParameterMap(request));


Reply via email to