details: https://code.openbravo.com/erp/devel/pi/rev/7c8fe974bb45 changeset: 34300:7c8fe974bb45 user: Asier Lostalé <asier.lostale <at> openbravo.com> date: Fri Jul 20 08:28:38 2018 +0200 summary: related to bug 39005: added log
Added verbose debug log to StaticResourceComponent, to be able to trace issues when generating resources. details: https://code.openbravo.com/erp/devel/pi/rev/abf122047848 changeset: 34301:abf122047848 user: Asier Lostalé <asier.lostale <at> openbravo.com> date: Fri Jul 20 08:30:59 2018 +0200 summary: fixed bug 39005: BaseComponentProvider is not thread safe Static appDependencies has been changed from HashMap to ConcurrentHashMap, this field can potentially be concurrently initialized from several classes being HashMap not thread safe can lead to inconsistent results. diffstat: modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseComponentProvider.java | 7 +- modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/StaticResourceComponent.java | 26 ++++++++- 2 files changed, 26 insertions(+), 7 deletions(-) diffs (138 lines): diff -r dc3d9d26aeb4 -r abf122047848 modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseComponentProvider.java --- a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseComponentProvider.java Fri Jul 13 11:57:27 2018 +0530 +++ b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseComponentProvider.java Fri Jul 20 08:30:59 2018 +0200 @@ -11,7 +11,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2009-2013 Openbravo SLU + * All portions are Copyright (C) 2009-2018 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -21,9 +21,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.openbravo.base.weld.WeldUtils; import org.openbravo.client.kernel.BaseComponentProvider.ComponentResource.ComponentResourceType; @@ -38,7 +38,7 @@ private Module module; - private static Map<String, List<String>> appDependencies = new HashMap<String, List<String>>(); + private static Map<String, List<String>> appDependencies = new ConcurrentHashMap<>(); /** * Return a component of the correct implementation using Weld. @@ -275,6 +275,7 @@ } public void setValidForAppList(List<String> validForAppList) { + this.validForAppList = validForAppList; } diff -r dc3d9d26aeb4 -r abf122047848 modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/StaticResourceComponent.java --- a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/StaticResourceComponent.java Fri Jul 13 11:57:27 2018 +0530 +++ b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/StaticResourceComponent.java Fri Jul 20 08:30:59 2018 +0200 @@ -19,6 +19,7 @@ package org.openbravo.client.kernel; import java.io.File; +import java.util.ArrayList; import java.util.List; import javax.enterprise.inject.Any; @@ -174,6 +175,15 @@ return staticResourceFileName; } + if (log.isDebugEnabled()) { + log.debug("Processing static resources for app " + appName); + List<String> providers = new ArrayList<>(); + for (ComponentProvider provider : componentProviders) { + providers.add(provider.getClass().toString()); + } + log.debug(" Injected providers: " + providers); + } + final List<Module> modules = KernelUtils.getInstance().getModulesOrderedByDependency(); final ServletContext context = (ServletContext) getParameters().get( KernelConstants.SERVLET_CONTEXT); @@ -187,8 +197,8 @@ } int cntDynamicScripts = 0; - for (Module module : modules) { + log.debug(" * " + module); for (ComponentProvider provider : componentProviders) { final List<ComponentResource> resources = provider.getGlobalComponentResources(); if (resources == null || resources.size() == 0) { @@ -202,8 +212,8 @@ continue; } - log.debug("Processing resource: " + resource); String resourcePath = resource.getPath(); + int size = -1; if (resource.getType() == ComponentResourceType.Stylesheet) { // do these differently... } else if (resource.getType() == ComponentResourceType.Static) { @@ -211,7 +221,9 @@ final String[] pathParts = WebServiceUtil.getInstance().getSegments( resourcePath.substring(KernelConstants.KERNEL_JAVA_PACKAGE.length())); final Component component = provider.getComponent(pathParts[1], getParameters()); - sb.append(ComponentGenerator.getInstance().generate(component)).append("\n"); + String c = ComponentGenerator.getInstance().generate(component); + size = c.length(); + sb.append(c).append("\n"); } else { // Skin version handling @@ -232,6 +244,7 @@ continue; } String resourceContents = FileUtils.readFileToString(file, "UTF-8"); + size = resourceContents.length(); sb.append(resourceContents).append("\n"); } catch (Exception e) { log.error("Error reading file: " + resource, e); @@ -250,6 +263,8 @@ } else { log.error("Resource " + resource + " not supported"); } + + log.debug(" resource: " + resource + " - size: " + size); } } } @@ -310,6 +325,7 @@ } else { output = sb.toString(); } + final String md5 = DigestUtils.md5Hex(output); final String getTargetLocation = context.getRealPath(GEN_TARGET_LOCATION); final File dir = new File(getTargetLocation); @@ -320,11 +336,13 @@ if (!outFile.exists()) { try { - log.debug("Writing file: " + outFile.getAbsolutePath()); + log.debug("Writing file: " + " - size " + output.length() + " - size " + output.length()); FileUtils.writeStringToFile(outFile, output, "UTF-8"); } catch (Exception e) { log.error("Error writing file: " + e.getMessage(), e); } + } else { + log.debug("Resource " + outFile + " already existed, keeping it. Size - " + output.length()); } if (!isInDevelopment()) { ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits