Author: jonesde
Date: Thu Sep 6 21:51:40 2007 New Revision: 573456 URL: http://svn.apache.org/viewvc?rev=573456&view=rev Log: Applied fix from trunk for revision: 573442 Modified: ofbiz/branches/release4.0/applications/content/src/org/ofbiz/content/email/NotificationServices.java ofbiz/branches/release4.0/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java ofbiz/branches/release4.0/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java Modified: ofbiz/branches/release4.0/applications/content/src/org/ofbiz/content/email/NotificationServices.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/content/src/org/ofbiz/content/email/NotificationServices.java?rev=573456&r1=573455&r2=573456&view=diff ============================================================================== --- ofbiz/branches/release4.0/applications/content/src/org/ofbiz/content/email/NotificationServices.java (original) +++ ofbiz/branches/release4.0/applications/content/src/org/ofbiz/content/email/NotificationServices.java Thu Sep 6 21:51:40 2007 @@ -205,12 +205,10 @@ return ServiceUtil.returnError("Problem finding template; see logs"); } - InputStreamReader templateReader = new InputStreamReader(templateUrl.openStream()); - // process the template with the given data and write // the email body to the String buffer Writer writer = new StringWriter(); - FreeMarkerWorker.renderTemplate(templateName, templateReader, templateData, writer); + FreeMarkerWorker.renderTemplate(templateUrl.toExternalForm(), templateData, writer); // extract the newly created body for the notification email String notificationBody = writer.toString(); Modified: ofbiz/branches/release4.0/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release4.0/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java?rev=573456&r1=573455&r2=573456&view=diff ============================================================================== --- ofbiz/branches/release4.0/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java (original) +++ ofbiz/branches/release4.0/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java Thu Sep 6 21:51:40 2007 @@ -29,6 +29,7 @@ import org.ofbiz.base.container.Container; import org.ofbiz.base.container.ContainerException; import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilURL; import org.ofbiz.base.util.template.FreeMarkerWorker; import org.ofbiz.base.start.Classpath; import org.ofbiz.base.component.ComponentConfig; @@ -141,12 +142,6 @@ private void parseTemplate(File templateFile, Map dataMap) throws ContainerException { Debug.log("Parsing template : " + templateFile.getAbsolutePath(), module); - Reader reader = null; - try { - reader = new InputStreamReader(new FileInputStream(templateFile)); - } catch (FileNotFoundException e) { - throw new ContainerException(e); - } // create the target file/directory String targetDirectoryName = args.length > 1 ? args[1] : null; @@ -174,7 +169,7 @@ throw new ContainerException(e); } try { - FreeMarkerWorker.renderTemplate(templateFile.getAbsolutePath(), reader, dataMap, writer); + FreeMarkerWorker.renderTemplate(UtilURL.fromFilename(templateFile.getAbsolutePath()).toExternalForm(), dataMap, writer); } catch (Exception e) { throw new ContainerException(e); } Modified: ofbiz/branches/release4.0/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release4.0/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java?rev=573456&r1=573455&r2=573456&view=diff ============================================================================== --- ofbiz/branches/release4.0/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java (original) +++ ofbiz/branches/release4.0/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java Thu Sep 6 21:51:40 2007 @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; @@ -134,7 +135,7 @@ * @param outWriter The Writer to render to */ public static void renderTemplateAtLocation(String templateLocation, Map context, Writer outWriter) throws MalformedURLException, TemplateException, IOException { - renderTemplate(templateLocation, getTemplateReader(templateLocation), context, outWriter); + renderTemplate(templateLocation, context, outWriter); } /** @@ -144,9 +145,8 @@ * @param context The context Map * @param outWriter The Writer to render to */ - public static void renderTemplate(String templateId, String templateString, Map context, Writer outWriter) throws TemplateException, IOException { - Reader templateReader = new StringReader(templateString); - renderTemplate(templateId, templateReader, context, outWriter); + public static void renderTemplate(String templateLocation, String templateString, Map context, Writer outWriter) throws TemplateException, IOException { + renderTemplate(templateLocation, context, outWriter); } /** @@ -156,8 +156,8 @@ * @param context The context Map * @param outWriter The Writer to render to */ - public static void renderTemplate(String templateId, Reader templateReader, Map context, Writer outWriter) throws TemplateException, IOException { - Template template = getTemplate(templateId, templateReader); + public static void renderTemplate(String templateLocation, Map context, Writer outWriter) throws TemplateException, IOException { + Template template = getTemplate(templateLocation); renderTemplate(template, context, outWriter); } @@ -227,8 +227,9 @@ } return defaultOfbizConfig; } - - public static Reader getTemplateReader(String templateLocation) throws IOException { + + /** Make sure to close the reader when you're done! That's why this method is private, BTW. */ + private static Reader makeReader(String templateLocation) throws IOException { if (UtilValidate.isEmpty(templateLocation)) { throw new IllegalArgumentException("FreeMarker template location null or empty"); } @@ -236,14 +237,15 @@ URL locationUrl = null; try { locationUrl = FlexibleLocation.resolveLocation(templateLocation); - } - catch (MalformedURLException e) { + } catch (MalformedURLException e) { throw new IllegalArgumentException(e.getMessage()); } if (locationUrl == null) { throw new IllegalArgumentException("FreeMarker file not found at location: " + templateLocation); } - Reader templateReader = new InputStreamReader(locationUrl.openStream()); + + InputStream locationIs = locationUrl.openStream(); + Reader templateReader = new InputStreamReader(locationIs); String locationProtocol = locationUrl.getProtocol(); if ("file".equals(locationProtocol) && Debug.verboseOn()) { @@ -251,35 +253,28 @@ int lastSlash = locationFile.lastIndexOf("/"); String locationDir = locationFile.substring(0, lastSlash); String filename = locationFile.substring(lastSlash + 1); - Debug.logVerbose("FreeMarker render: filename=" + filename + ", locationDir=" + locationDir, module); + if (Debug.verboseOn()) Debug.logVerbose("FreeMarker render: filename=" + filename + ", locationDir=" + locationDir, module); } return templateReader; } - + /** * Gets a Template instance from the template cache. If the Template instance isn't * found in the cache, then one will be created. * @param templateLocation Location of the template - file path or URL */ public static Template getTemplate(String templateLocation) throws TemplateException, IOException { - return getTemplate(templateLocation, getTemplateReader(templateLocation)); - } - - /** - * Gets a Template instance from the template cache. If the Template instance isn't - * found in the cache, then one will be created. - * @param templateId A unique ID for this template - * @param templateReader The Reader that reads the template - */ - public static Template getTemplate(String templateId, Reader templateReader) throws TemplateException, IOException { - Template template = (Template) cachedTemplates.get(templateId); + Template template = (Template) cachedTemplates.get(templateLocation); if (template == null) { synchronized (cachedTemplates) { - template = (Template) cachedTemplates.get(templateId); + template = (Template) cachedTemplates.get(templateLocation); if (template == null) { - template = new Template(templateId, templateReader, getDefaultOfbizConfig()); - cachedTemplates.put(templateId, template); + // only make the reader if we need it, and then close it right after! + Reader templateReader = makeReader(templateLocation); + template = new Template(templateLocation, templateReader, getDefaultOfbizConfig()); + templateReader.close(); + cachedTemplates.put(templateLocation, template); } } } @@ -619,12 +614,12 @@ return new FlexibleTemplateSource(name); } public long getLastModified(Object templateSource) { - FlexibleTemplateSource fts = (FlexibleTemplateSource)templateSource; + FlexibleTemplateSource fts = (FlexibleTemplateSource) templateSource; return fts.getLastModified(); } public Reader getReader(Object templateSource, String encoding) throws IOException { - FlexibleTemplateSource fts = (FlexibleTemplateSource)templateSource; - return getTemplateReader(fts.getTemplateLocation()); + FlexibleTemplateSource fts = (FlexibleTemplateSource) templateSource; + return makeReader(fts.getTemplateLocation()); } public void closeTemplateSource(Object templateSource) throws IOException { // do nothing |
Free forum by Nabble | Edit this page |