You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2015/06/25 19:24:56 UTC

svn commit: r1687589 - /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelGroupReader.java

Author: jleroux
Date: Thu Jun 25 17:24:55 2015
New Revision: 1687589

URL: http://svn.apache.org/r1687589
Log:
OFBIZ-6532 - Adding a new entity-group but no corresponding delegator/group-map is hard to debug

Adds an error message in log just before crash, so it's easy to debug

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelGroupReader.java

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelGroupReader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelGroupReader.java?rev=1687589&r1=1687588&r2=1687589&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelGroupReader.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelGroupReader.java Thu Jun 25 17:24:55 2015
@@ -72,12 +72,12 @@ public class ModelGroupReader implements
         ModelGroupReader reader = readers.get(tempModelName);
 
         if (reader == null) {
-            reader = readers.putIfAbsentAndGet(tempModelName, new ModelGroupReader(tempModelName));
+            reader = readers.putIfAbsentAndGet(tempModelName, new ModelGroupReader(delegatorName, tempModelName));
         }
         return reader;
     }
 
-    public ModelGroupReader(String modelName) throws GenericEntityConfException {
+    public ModelGroupReader(String delegatorName, String modelName) throws GenericEntityConfException {
         this.modelName = modelName;
         EntityGroupReader entityGroupReaderInfo = EntityConfig.getInstance().getEntityGroupReader(modelName);
 
@@ -96,10 +96,10 @@ public class ModelGroupReader implements
         }
 
         // preload caches...
-        getGroupCache();
+        getGroupCache(delegatorName);
     }
 
-    public Map<String, String> getGroupCache() {
+    public Map<String, String> getGroupCache(String delegatorName) {
         if (this.groupCache == null) { // don't want to block here
             synchronized (ModelGroupReader.class) {
                 // must check if null again as one of the blocked threads can still enter
@@ -142,6 +142,13 @@ public class ModelGroupReader implements
                                     String groupName = UtilXml.checkEmpty(curEntity.getAttribute("group")).intern();
 
                                     if (groupName == null || entityName == null) continue;
+                                    try {
+                                        if (null == EntityConfig.getInstance().getDelegator(delegatorName).getGroupDataSource(groupName)) {
+                                            Debug.logError("The declared group name " + groupName + " has no corresponding group-map in entityengine.xml: ", module);
+                                        }
+                                    } catch (GenericEntityConfException e) {
+                                        Debug.logWarning(e, "Exception thrown while getting group name: ", module);
+                                    }
                                     this.groupNames.add(groupName);
                                     this.groupCache.put(entityName, groupName);
                                     // utilTimer.timerString("  After entityEntityName -- " + i + " --");
@@ -164,7 +171,7 @@ public class ModelGroupReader implements
      * @return A group name
      */
     public String getEntityGroupName(String entityName, String delegatorBaseName) {
-        Map<String, String> gc = getGroupCache();
+        Map<String, String> gc = getGroupCache(delegatorBaseName);
 
         if (gc != null) {
             String groupName = gc.get(entityName);
@@ -193,7 +200,7 @@ public class ModelGroupReader implements
         if (delegatorBaseName.indexOf('#') >= 0) {
             delegatorBaseName = delegatorBaseName.substring(0, delegatorBaseName.indexOf('#'));
         }
-        getGroupCache();
+        getGroupCache(delegatorBaseName);
         if (this.groupNames == null) return null;
         Set<String> newSet = new HashSet<String>();
         try {
@@ -209,8 +216,8 @@ public class ModelGroupReader implements
      * @param groupName
      * @return A Set of entityName Strings
      */
-    public Set<String> getEntityNamesByGroup(String groupName) {
-        Map<String, String> gc = getGroupCache();
+    public Set<String> getEntityNamesByGroup(String delegatorBaseName, String groupName) {
+        Map<String, String> gc = getGroupCache(delegatorBaseName);
         Set<String> enames = new HashSet<String>();
 
         if (groupName == null || groupName.length() <= 0) return enames;