You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2013/06/07 17:18:27 UTC

svn commit: r1490678 - in /ofbiz/trunk/framework: entity/src/org/ofbiz/entity/config/ entity/src/org/ofbiz/entity/config/model/ entity/src/org/ofbiz/entity/model/ entity/src/org/ofbiz/entity/util/ entityext/src/org/ofbiz/entityext/eca/

Author: adrianc
Date: Fri Jun  7 15:18:27 2013
New Revision: 1490678

URL: http://svn.apache.org/r1490678
Log:
Second pass at removing cached DOM tree code from EntityConfigUtil.java. I converted some of the code to use the new thread-safe models.

Removed:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityDataReaderInfo.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityEcaReaderInfo.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityGroupReaderInfo.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityModelReaderInfo.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/FieldTypeInfo.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/ResourceLoaderInfo.java
Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityConfigUtil.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/model/EntityConfig.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelGroupReader.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelReader.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataLoader.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityConfigUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityConfigUtil.java?rev=1490678&r1=1490677&r2=1490678&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityConfigUtil.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/EntityConfigUtil.java Fri Jun  7 15:18:27 2013
@@ -26,7 +26,6 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.ofbiz.base.config.GenericConfigException;
-import org.ofbiz.base.config.ResourceLoader;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilURL;
@@ -37,7 +36,13 @@ import org.ofbiz.entity.GenericEntityCon
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.config.model.Datasource;
 import org.ofbiz.entity.config.model.EntityConfig;
+import org.ofbiz.entity.config.model.EntityDataReader;
+import org.ofbiz.entity.config.model.EntityEcaReader;
+import org.ofbiz.entity.config.model.EntityGroupReader;
+import org.ofbiz.entity.config.model.EntityModelReader;
+import org.ofbiz.entity.config.model.FieldType;
 import org.ofbiz.entity.config.model.InlineJdbc;
+import org.ofbiz.entity.config.model.ResourceLoader;
 import org.ofbiz.entity.jdbc.ConnectionFactory;
 import org.ofbiz.entity.transaction.TransactionFactory;
 import org.w3c.dom.Document;
@@ -112,17 +117,11 @@ public class EntityConfigUtil {
     private static volatile AtomicReference<EntityConfigUtil> configRef = new AtomicReference<EntityConfigUtil>();
 
     // ========== engine info fields ==========
-    private final Map<String, ResourceLoaderInfo> resourceLoaderInfos = new HashMap<String, ResourceLoaderInfo>();
     private final Map<String, DelegatorInfo> delegatorInfos = new HashMap<String, DelegatorInfo>();
-    private final Map<String, EntityModelReaderInfo> entityModelReaderInfos = new HashMap<String, EntityModelReaderInfo>();
-    private final Map<String, EntityGroupReaderInfo> entityGroupReaderInfos = new HashMap<String, EntityGroupReaderInfo>();
-    private final Map<String, EntityEcaReaderInfo> entityEcaReaderInfos = new HashMap<String, EntityEcaReaderInfo>();
-    private final Map<String, EntityDataReaderInfo> entityDataReaderInfos = new HashMap<String, EntityDataReaderInfo>();
-    private final Map<String, FieldTypeInfo> fieldTypeInfos = new HashMap<String, FieldTypeInfo>();
 
     private static Element getXmlRootElement() throws GenericEntityConfException {
         try {
-            return ResourceLoader.getXmlRootElement(ENTITY_ENGINE_XML_FILENAME);
+            return org.ofbiz.base.config.ResourceLoader.getXmlRootElement(ENTITY_ENGINE_XML_FILENAME);
         } catch (GenericConfigException e) {
             throw new GenericEntityConfException("Could not get entity engine XML root element", e);
         }
@@ -138,7 +137,7 @@ public class EntityConfigUtil {
 
     public static void reinitialize() throws GenericEntityException {
         try {
-            ResourceLoader.invalidateDocument(ENTITY_ENGINE_XML_FILENAME);
+            org.ofbiz.base.config.ResourceLoader.invalidateDocument(ENTITY_ENGINE_XML_FILENAME);
             initialize(getXmlRootElement());
         } catch (Exception e) {
             throw new GenericEntityException("Error reloading entity config XML file " + ENTITY_ENGINE_XML_FILENAME, e);
@@ -150,49 +149,11 @@ public class EntityConfigUtil {
     }
 
     private EntityConfigUtil(Element rootElement) throws GenericEntityException {
-        // not load all of the maps...
-
-        // resource-loader - resourceLoaderInfos
-        for (Element curElement: UtilXml.childElementList(rootElement, "resource-loader")) {
-            ResourceLoaderInfo resourceLoaderInfo = new ResourceLoaderInfo(curElement);
-            resourceLoaderInfos.put(resourceLoaderInfo.name, resourceLoaderInfo);
-        }
-
         // delegator - delegatorInfos
         for (Element curElement: UtilXml.childElementList(rootElement, "delegator")) {
             DelegatorInfo delegatorInfo = new DelegatorInfo(curElement);
             delegatorInfos.put(delegatorInfo.name, delegatorInfo);
         }
-
-        // entity-model-reader - entityModelReaderInfos
-        for (Element curElement: UtilXml.childElementList(rootElement, "entity-model-reader")) {
-            EntityModelReaderInfo entityModelReaderInfo = new EntityModelReaderInfo(curElement);
-            entityModelReaderInfos.put(entityModelReaderInfo.name, entityModelReaderInfo);
-        }
-
-        // entity-group-reader - entityGroupReaderInfos
-        for (Element curElement: UtilXml.childElementList(rootElement, "entity-group-reader")) {
-            EntityGroupReaderInfo entityGroupReaderInfo = new EntityGroupReaderInfo(curElement);
-            entityGroupReaderInfos.put(entityGroupReaderInfo.name, entityGroupReaderInfo);
-        }
-
-        // entity-eca-reader - entityEcaReaderInfos
-        for (Element curElement: UtilXml.childElementList(rootElement, "entity-eca-reader")) {
-            EntityEcaReaderInfo entityEcaReaderInfo = new EntityEcaReaderInfo(curElement);
-            entityEcaReaderInfos.put(entityEcaReaderInfo.name, entityEcaReaderInfo);
-        }
-
-        // entity-data-reader - entityDataReaderInfos
-        for (Element curElement: UtilXml.childElementList(rootElement, "entity-data-reader")) {
-            EntityDataReaderInfo entityDataReaderInfo = new EntityDataReaderInfo(curElement);
-            entityDataReaderInfos.put(entityDataReaderInfo.name, entityDataReaderInfo);
-        }
-
-        // field-type - fieldTypeInfos
-        for (Element curElement: UtilXml.childElementList(rootElement, "field-type")) {
-            FieldTypeInfo fieldTypeInfo = new FieldTypeInfo(curElement);
-            fieldTypeInfos.put(fieldTypeInfo.name, fieldTypeInfo);
-        }
     }
 
     public static String getTxFactoryClass() throws GenericEntityConfException {
@@ -227,32 +188,32 @@ public class EntityConfigUtil {
         return getEntityConfig().getConnectionFactory().getClassName();
     }
 
-    public static ResourceLoaderInfo getResourceLoaderInfo(String name) {
-        return configRef.get().resourceLoaderInfos.get(name);
+    public static ResourceLoader getResourceLoader(String name) throws GenericEntityConfException {
+        return getEntityConfig().getResourceLoader(name);
     }
 
     public static DelegatorInfo getDelegatorInfo(String name) {
         return configRef.get().delegatorInfos.get(name);
     }
 
-    public static EntityModelReaderInfo getEntityModelReaderInfo(String name) {
-        return configRef.get().entityModelReaderInfos.get(name);
+    public static EntityModelReader getEntityModelReader(String name) throws GenericEntityConfException {
+        return getEntityConfig().getEntityModelReader(name);
     }
 
-    public static EntityGroupReaderInfo getEntityGroupReaderInfo(String name) {
-        return configRef.get().entityGroupReaderInfos.get(name);
+    public static EntityGroupReader getEntityGroupReader(String name) throws GenericEntityConfException {
+        return getEntityConfig().getEntityGroupReader(name);
     }
 
-    public static EntityEcaReaderInfo getEntityEcaReaderInfo(String name) {
-        return configRef.get().entityEcaReaderInfos.get(name);
+    public static EntityEcaReader getEntityEcaReader(String name) throws GenericEntityConfException {
+        return getEntityConfig().getEntityEcaReader(name);
     }
 
-    public static EntityDataReaderInfo getEntityDataReaderInfo(String name) {
-        return configRef.get().entityDataReaderInfos.get(name);
+    public static EntityDataReader getEntityDataReader(String name) throws GenericEntityConfException {
+        return getEntityConfig().getEntityDataReader(name);
     }
 
-    public static FieldTypeInfo getFieldTypeInfo(String name) {
-        return configRef.get().fieldTypeInfos.get(name);
+    public static FieldType getFieldType(String name) throws GenericEntityConfException {
+        return getEntityConfig().getFieldType(name);
     }
 
     public static Datasource getDatasource(String name) {

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/model/EntityConfig.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/model/EntityConfig.java?rev=1490678&r1=1490677&r2=1490678&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/model/EntityConfig.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/config/model/EntityConfig.java Fri Jun  7 15:18:27 2013
@@ -38,15 +38,21 @@ import org.w3c.dom.Element;
 public final class EntityConfig {
 
     private final List<ResourceLoader> resourceLoaderList; // <resource-loader>
+    private final Map<String, ResourceLoader> resourceLoaderMap; // <resource-loader>
     private final TransactionFactory transactionFactory; // <transaction-factory>
     private final ConnectionFactory connectionFactory; // <connection-factory>
     private final DebugXaResources debugXaResources; // <debug-xa-resources>
     private final List<Delegator> delegatorList; // <delegator>
     private final List<EntityModelReader> entityModelReaderList; // <entity-model-reader>
+    private final Map<String, EntityModelReader> entityModelReaderMap; // <entity-model-reader>
     private final List<EntityGroupReader> entityGroupReaderList; // <entity-group-reader>
+    private final Map<String, EntityGroupReader> entityGroupReaderMap; // <entity-group-reader>
     private final List<EntityEcaReader> entityEcaReaderList; // <entity-eca-reader>
+    private final Map<String, EntityEcaReader> entityEcaReaderMap; // <entity-eca-reader>
     private final List<EntityDataReader> entityDataReaderList; // <entity-data-reader>
+    private final Map<String, EntityDataReader> entityDataReaderMap; // <entity-data-reader>
     private final List<FieldType> fieldTypeList; // <field-type>
+    private final Map<String, FieldType> fieldTypeMap; // <field-type>
     private final List<Datasource> datasourceList; // <datasource>
     private final Map<String, Datasource> datasourceMap;
 
@@ -56,10 +62,14 @@ public final class EntityConfig {
             throw new GenericEntityConfException("<" + element.getNodeName() + "> element child elements <resource-loader> are missing");
         } else {
             List<ResourceLoader> resourceLoaderList = new ArrayList<ResourceLoader>(resourceLoaderElementList.size());
+            Map<String, ResourceLoader> resourceLoaderMap = new HashMap<String, ResourceLoader>();
             for (Element resourceLoaderElement : resourceLoaderElementList) {
-                resourceLoaderList.add(new ResourceLoader(resourceLoaderElement));
+                ResourceLoader resourceLoader = new ResourceLoader(resourceLoaderElement);
+                resourceLoaderList.add(resourceLoader);
+                resourceLoaderMap.put(resourceLoader.getName(), resourceLoader);
             }
             this.resourceLoaderList = Collections.unmodifiableList(resourceLoaderList);
+            this.resourceLoaderMap = Collections.unmodifiableMap(resourceLoaderMap);
         }
         Element transactionFactoryElement = UtilXml.firstChildElement(element, "transaction-factory");
         if (transactionFactoryElement == null) {
@@ -94,50 +104,72 @@ public final class EntityConfig {
             throw new GenericEntityConfException("<" + element.getNodeName() + "> element child elements <entity-model-reader> are missing");
         } else {
             List<EntityModelReader> entityModelReaderList = new ArrayList<EntityModelReader>(entityModelReaderElementList.size());
+            Map<String, EntityModelReader> entityModelReaderMap = new HashMap<String, EntityModelReader>();
             for (Element entityModelReaderElement : entityModelReaderElementList) {
-                entityModelReaderList.add(new EntityModelReader(entityModelReaderElement));
+                EntityModelReader entityModelReader = new EntityModelReader(entityModelReaderElement);
+                entityModelReaderList.add(entityModelReader);
+                entityModelReaderMap.put(entityModelReader.getName(), entityModelReader);
             }
             this.entityModelReaderList = Collections.unmodifiableList(entityModelReaderList);
+            this.entityModelReaderMap = Collections.unmodifiableMap(entityModelReaderMap);
         }
         List<? extends Element> entityGroupReaderElementList = UtilXml.childElementList(element, "entity-group-reader");
         if (entityGroupReaderElementList.isEmpty()) {
             throw new GenericEntityConfException("<" + element.getNodeName() + "> element child elements <entity-group-reader> are missing");
         } else {
             List<EntityGroupReader> entityGroupReaderList = new ArrayList<EntityGroupReader>(entityGroupReaderElementList.size());
+            Map<String, EntityGroupReader> entityGroupReaderMap = new HashMap<String, EntityGroupReader>();
             for (Element entityGroupReaderElement : entityGroupReaderElementList) {
-                entityGroupReaderList.add(new EntityGroupReader(entityGroupReaderElement));
+                EntityGroupReader entityGroupReader = new EntityGroupReader(entityGroupReaderElement);
+                entityGroupReaderList.add(entityGroupReader);
+                entityGroupReaderMap.put(entityGroupReader.getName(), entityGroupReader);
             }
             this.entityGroupReaderList = Collections.unmodifiableList(entityGroupReaderList);
+            this.entityGroupReaderMap = Collections.unmodifiableMap(entityGroupReaderMap);
         }
         List<? extends Element> entityEcaReaderElementList = UtilXml.childElementList(element, "entity-eca-reader");
         if (entityEcaReaderElementList.isEmpty()) {
             this.entityEcaReaderList = Collections.emptyList();
+            this.entityEcaReaderMap = Collections.emptyMap();
         } else {
             List<EntityEcaReader> entityEcaReaderList = new ArrayList<EntityEcaReader>(entityEcaReaderElementList.size());
+            Map<String, EntityEcaReader> entityEcaReaderMap = new HashMap<String, EntityEcaReader>();
             for (Element entityEcaReaderElement : entityEcaReaderElementList) {
+                EntityEcaReader entityEcaReader = new EntityEcaReader(entityEcaReaderElement);
                 entityEcaReaderList.add(new EntityEcaReader(entityEcaReaderElement));
+                entityEcaReaderMap.put(entityEcaReader.getName(), entityEcaReader);
             }
             this.entityEcaReaderList = Collections.unmodifiableList(entityEcaReaderList);
+            this.entityEcaReaderMap = Collections.unmodifiableMap(entityEcaReaderMap);
         }
         List<? extends Element> entityDataReaderElementList = UtilXml.childElementList(element, "entity-data-reader");
         if (entityDataReaderElementList.isEmpty()) {
             this.entityDataReaderList = Collections.emptyList();
+            this.entityDataReaderMap = Collections.emptyMap();
         } else {
             List<EntityDataReader> entityDataReaderList = new ArrayList<EntityDataReader>(entityDataReaderElementList.size());
+            Map<String, EntityDataReader> entityDataReaderMap = new HashMap<String, EntityDataReader>();
             for (Element entityDataReaderElement : entityDataReaderElementList) {
-                entityDataReaderList.add(new EntityDataReader(entityDataReaderElement));
+                EntityDataReader entityDataReader = new EntityDataReader(entityDataReaderElement);
+                entityDataReaderList.add(entityDataReader);
+                entityDataReaderMap.put(entityDataReader.getName(), entityDataReader);
             }
             this.entityDataReaderList = Collections.unmodifiableList(entityDataReaderList);
+            this.entityDataReaderMap = Collections.unmodifiableMap(entityDataReaderMap);
         }
         List<? extends Element> fieldTypeElementList = UtilXml.childElementList(element, "field-type");
         if (fieldTypeElementList.isEmpty()) {
             throw new GenericEntityConfException("<" + element.getNodeName() + "> element child elements <field-type> are missing");
         } else {
             List<FieldType> fieldTypeList = new ArrayList<FieldType>(fieldTypeElementList.size());
+            Map<String, FieldType> fieldTypeMap = new HashMap<String, FieldType>();
             for (Element fieldTypeElement : fieldTypeElementList) {
-                fieldTypeList.add(new FieldType(fieldTypeElement));
+                FieldType fieldType = new FieldType(fieldTypeElement);
+                fieldTypeList.add(fieldType);
+                fieldTypeMap.put(fieldType.getName(), fieldType);
             }
             this.fieldTypeList = Collections.unmodifiableList(fieldTypeList);
+            this.fieldTypeMap = Collections.unmodifiableMap(fieldTypeMap);
         }
         List<? extends Element> datasourceElementList = UtilXml.childElementList(element, "datasource");
         if (datasourceElementList.isEmpty()) {
@@ -155,6 +187,11 @@ public final class EntityConfig {
         }
     }
 
+    /** Returns the specified <code>&lt;resource-loader&gt;</code> child element, or <code>null</code> if no child element was found. */
+    public ResourceLoader getResourceLoader(String name) {
+        return this.resourceLoaderMap.get(name);
+    }
+
     /** Returns the <code>&lt;resource-loader&gt;</code> child elements. */
     public List<ResourceLoader> getResourceLoaderList() {
         return this.resourceLoaderList;
@@ -180,26 +217,51 @@ public final class EntityConfig {
         return this.delegatorList;
     }
 
+    /** Returns the specified <code>&lt;entity-model-reader&gt;</code> child element, or <code>null</code> if no child element was found. */
+    public EntityModelReader getEntityModelReader(String name) {
+        return this.entityModelReaderMap.get(name);
+    }
+
     /** Returns the <code>&lt;entity-model-reader&gt;</code> child elements. */
     public List<EntityModelReader> getEntityModelReaderList() {
         return this.entityModelReaderList;
     }
 
+    /** Returns the specified <code>&lt;entity-group-reader&gt;</code> child element, or <code>null</code> if no child element was found. */
+    public EntityGroupReader getEntityGroupReader(String name) {
+        return this.entityGroupReaderMap.get(name);
+    }
+
     /** Returns the <code>&lt;entity-group-reader&gt;</code> child elements. */
     public List<EntityGroupReader> getEntityGroupReaderList() {
         return this.entityGroupReaderList;
     }
 
+    /** Returns the specified <code>&lt;entity-eca-reader&gt;</code> child element, or <code>null</code> if no child element was found. */
+    public EntityEcaReader getEntityEcaReader(String name) {
+        return this.entityEcaReaderMap.get(name);
+    }
+
     /** Returns the <code>&lt;entity-eca-reader&gt;</code> child elements. */
     public List<EntityEcaReader> getEntityEcaReaderList() {
         return this.entityEcaReaderList;
     }
 
+    /** Returns the specified <code>&lt;entity-data-reader&gt;</code> child element, or <code>null</code> if no child element was found. */
+    public EntityDataReader getEntityDataReader(String name) {
+        return this.entityDataReaderMap.get(name);
+    }
+
     /** Returns the <code>&lt;entity-data-reader&gt;</code> child elements. */
     public List<EntityDataReader> getEntityDataReaderList() {
         return this.entityDataReaderList;
     }
 
+    /** Returns the specified <code>&lt;field-type&gt;</code> child element, or <code>null</code> if no child element was found. */
+    public FieldType getFieldType(String name) {
+        return this.fieldTypeMap.get(name);
+    }
+
     /** Returns the <code>&lt;field-type&gt;</code> child elements. */
     public List<FieldType> getFieldTypeList() {
         return this.fieldTypeList;

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java?rev=1490678&r1=1490677&r2=1490678&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java Fri Jun  7 15:18:27 2013
@@ -32,9 +32,10 @@ import org.ofbiz.base.util.UtilTimer;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.base.util.cache.UtilCache;
-import org.ofbiz.entity.config.model.Datasource;
+import org.ofbiz.entity.GenericEntityConfException;
 import org.ofbiz.entity.config.EntityConfigUtil;
-import org.ofbiz.entity.config.FieldTypeInfo;
+import org.ofbiz.entity.config.model.Datasource;
+import org.ofbiz.entity.config.model.FieldType;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -72,11 +73,16 @@ public class ModelFieldTypeReader implem
         String tempModelName = datasourceInfo.getFieldTypeName();
         ModelFieldTypeReader reader = readers.get(tempModelName);
         while (reader == null) {
-            FieldTypeInfo fieldTypeInfo = EntityConfigUtil.getFieldTypeInfo(tempModelName);
+            FieldType fieldTypeInfo = null;
+            try {
+                fieldTypeInfo = EntityConfigUtil.getFieldType(tempModelName);
+            } catch (GenericEntityConfException e) {
+                Debug.logWarning(e, "Exception thrown while getting field type config: ", module);
+            }
             if (fieldTypeInfo == null) {
                 throw new IllegalArgumentException("Could not find a field-type definition with name \"" + tempModelName + "\"");
             }
-            ResourceHandler fieldTypeResourceHandler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, fieldTypeInfo.resourceElement);
+            ResourceHandler fieldTypeResourceHandler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, fieldTypeInfo.getLoader(), fieldTypeInfo.getLocation());
             UtilTimer utilTimer = new UtilTimer();
             utilTimer.timerString("[ModelFieldTypeReader.getModelFieldTypeReader] Reading field types from " + fieldTypeResourceHandler.getLocation());
             Document document = null;

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=1490678&r1=1490677&r2=1490678&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 Fri Jun  7 15:18:27 2013
@@ -39,7 +39,8 @@ import org.ofbiz.base.util.cache.UtilCac
 import org.ofbiz.entity.GenericEntityConfException;
 import org.ofbiz.entity.config.DelegatorInfo;
 import org.ofbiz.entity.config.EntityConfigUtil;
-import org.ofbiz.entity.config.EntityGroupReaderInfo;
+import org.ofbiz.entity.config.model.EntityGroupReader;
+import org.ofbiz.entity.config.model.Resource;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -78,13 +79,13 @@ public class ModelGroupReader implements
 
     public ModelGroupReader(String modelName) throws GenericEntityConfException {
         this.modelName = modelName;
-        EntityGroupReaderInfo entityGroupReaderInfo = EntityConfigUtil.getEntityGroupReaderInfo(modelName);
+        EntityGroupReader entityGroupReaderInfo = EntityConfigUtil.getEntityGroupReader(modelName);
 
         if (entityGroupReaderInfo == null) {
             throw new GenericEntityConfException("Cound not find an entity-group-reader with the name " + modelName);
         }
-        for (Element resourceElement: entityGroupReaderInfo.resourceElements) {
-            this.entityGroupResourceHandlers.add(new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, resourceElement));
+        for (Resource resourceElement: entityGroupReaderInfo.getResourceList()) {
+            this.entityGroupResourceHandlers.add(new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, resourceElement.getLoader(), resourceElement.getLocation()));
         }
 
         // get all of the component resource group stuff, ie specified in each ofbiz-component.xml file

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelReader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelReader.java?rev=1490678&r1=1490677&r2=1490678&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelReader.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelReader.java Fri Jun  7 15:18:27 2013
@@ -19,13 +19,13 @@
 package org.ofbiz.entity.model;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.ArrayList;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
@@ -44,7 +44,8 @@ import org.ofbiz.entity.GenericEntityExc
 import org.ofbiz.entity.GenericModelException;
 import org.ofbiz.entity.config.DelegatorInfo;
 import org.ofbiz.entity.config.EntityConfigUtil;
-import org.ofbiz.entity.config.EntityModelReaderInfo;
+import org.ofbiz.entity.config.model.EntityModelReader;
+import org.ofbiz.entity.config.model.Resource;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -103,15 +104,15 @@ public class ModelReader implements Seri
         resourceHandlerEntities = new HashMap<ResourceHandler, Collection<String>>();
         entityResourceHandlerMap = new HashMap<String, ResourceHandler>();
 
-        EntityModelReaderInfo entityModelReaderInfo = EntityConfigUtil.getEntityModelReaderInfo(modelName);
+        EntityModelReader entityModelReaderInfo = EntityConfigUtil.getEntityModelReader(modelName);
 
         if (entityModelReaderInfo == null) {
             throw new GenericEntityConfException("Cound not find an entity-model-reader with the name " + modelName);
         }
 
         // get all of the main resource model stuff, ie specified in the entityengine.xml file
-        for (Element resourceElement: entityModelReaderInfo.resourceElements) {
-            ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, resourceElement);
+        for (Resource resourceElement : entityModelReaderInfo.getResourceList()) {
+            ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, resourceElement.getLoader(), resourceElement.getLocation());
             entityResourceHandlers.add(handler);
         }
 

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataLoader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataLoader.java?rev=1490678&r1=1490677&r2=1490678&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataLoader.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataLoader.java Fri Jun  7 15:18:27 2013
@@ -33,11 +33,15 @@ import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericEntityConfException;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.config.EntityConfigUtil;
-import org.ofbiz.entity.config.EntityDataReaderInfo;
-import org.ofbiz.entity.config.model.*;
+import org.ofbiz.entity.config.model.Datasource;
+import org.ofbiz.entity.config.model.EntityDataReader;
+import org.ofbiz.entity.config.model.ReadData;
+import org.ofbiz.entity.config.model.Resource;
+import org.ofbiz.entity.config.model.SqlLoadPath;
 import org.ofbiz.entity.model.ModelEntity;
 import org.ofbiz.entity.model.ModelReader;
 import org.ofbiz.entity.model.ModelUtil;
@@ -107,16 +111,15 @@ public class EntityDataLoader {
                 }
 
                 // get all of the main resource model stuff, ie specified in the entityengine.xml file
-                EntityDataReaderInfo entityDataReaderInfo = EntityConfigUtil.getEntityDataReaderInfo(readerName);
-
-                if (entityDataReaderInfo == null) {
-                    Debug.logInfo("Could not find entity-data-reader named: " + readerName + ". Creating a new reader with this name. ", module);
-                    entityDataReaderInfo = new EntityDataReaderInfo(readerName);
+                EntityDataReader entityDataReaderInfo = null;
+                try {
+                    entityDataReaderInfo = EntityConfigUtil.getEntityDataReader(readerName);
+                } catch (GenericEntityConfException e) {
+                    Debug.logWarning(e, "Exception thrown while getting entity data reader config: ", module);
                 }
-
                 if (entityDataReaderInfo != null) {
-                    for (Element resourceElement: entityDataReaderInfo.resourceElements) {
-                        ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, resourceElement);
+                    for (Resource resourceElement: entityDataReaderInfo.getResourceList()) {
+                        ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, resourceElement.getLoader(), resourceElement.getLocation());
                         try {
                             urlList.add(handler.getURL());
                         } catch (GenericConfigException e) {

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java?rev=1490678&r1=1490677&r2=1490678&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java Fri Jun  7 15:18:27 2013
@@ -37,9 +37,10 @@ import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.base.util.cache.UtilCache;
 import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericEntityConfException;
 import org.ofbiz.entity.config.DelegatorInfo;
 import org.ofbiz.entity.config.EntityConfigUtil;
-import org.ofbiz.entity.config.EntityEcaReaderInfo;
+import org.ofbiz.entity.config.model.*;
 import org.w3c.dom.Element;
 
 /**
@@ -71,15 +72,20 @@ public class EntityEcaUtil {
     }
 
     protected static void readConfig(String entityEcaReaderName, Map<String, Map<String, List<EntityEcaRule>>> ecaCache) {
-        EntityEcaReaderInfo entityEcaReaderInfo = EntityConfigUtil.getEntityEcaReaderInfo(entityEcaReaderName);
+        EntityEcaReader entityEcaReaderInfo = null;
+        try {
+            entityEcaReaderInfo = EntityConfigUtil.getEntityEcaReader(entityEcaReaderName);
+        } catch (GenericEntityConfException e) {
+            Debug.logError(e, "Exception thrown while getting entity-eca-reader config with name: " + entityEcaReaderName, module);
+        }
         if (entityEcaReaderInfo == null) {
             Debug.logError("BAD ERROR: Could not find entity-eca-reader config with name: " + entityEcaReaderName, module);
             return;
         }
 
         List<Future<List<EntityEcaRule>>> futures = FastList.newInstance();
-        for (Element eecaResourceElement: entityEcaReaderInfo.resourceElements) {
-            ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, eecaResourceElement);
+        for (Resource eecaResourceElement : entityEcaReaderInfo.getResourceList()) {
+            ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, eecaResourceElement.getLoader(), eecaResourceElement.getLocation());
             futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createEcaLoaderCallable(handler)));
         }