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

Reply via email to