You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2011/06/30 00:11:49 UTC
svn commit: r1141281 -
/ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java
Author: doogie
Date: Wed Jun 29 22:11:48 2011
New Revision: 1141281
URL: http://svn.apache.org/viewvc?rev=1141281&view=rev
Log:
OPTIMIZE: Don't do ecaCache merging in addEcaDefinitions, instead do it
once after everything it loaded.
Modified:
ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java
Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java?rev=1141281&r1=1141280&r2=1141281&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java Wed Jun 29 22:11:48 2011
@@ -69,24 +69,35 @@ public class ServiceEcaUtil {
return;
}
+ List<List<ServiceEcaRule>> allHandlerRules = FastList.newInstance();
for (Element serviceEcasElement: UtilXml.childElementList(rootElement, "service-ecas")) {
ResourceHandler handler = new MainResourceHandler(ServiceConfigUtil.SERVICE_ENGINE_XML_FILENAME, serviceEcasElement);
- addEcaDefinitions(handler);
+ allHandlerRules.add(getEcaDefinitions(handler));
}
// get all of the component resource eca stuff, ie specified in each ofbiz-component.xml file
for (ComponentConfig.ServiceResourceInfo componentResourceInfo: ComponentConfig.getAllServiceResourceInfos("eca")) {
- addEcaDefinitions(componentResourceInfo.createResourceHandler());
+ allHandlerRules.add(getEcaDefinitions(componentResourceInfo.createResourceHandler()));
+ }
+
+ for (List<ServiceEcaRule> handlerRules: allHandlerRules) {
+ mergeEcaDefinitions(handlerRules);
}
}
public static void addEcaDefinitions(ResourceHandler handler) {
+ List<ServiceEcaRule> handlerRules = getEcaDefinitions(handler);
+ mergeEcaDefinitions(handlerRules);
+ }
+
+ private static List<ServiceEcaRule> getEcaDefinitions(ResourceHandler handler) {
+ List<ServiceEcaRule> handlerRules = FastList.newInstance();
Element rootElement = null;
try {
rootElement = handler.getDocument().getDocumentElement();
} catch (GenericConfigException e) {
Debug.logError(e, module);
- return;
+ return handlerRules;
}
String resourceLocation = handler.getLocation();
@@ -95,11 +106,19 @@ public class ServiceEcaUtil {
} catch (GenericConfigException e) {
Debug.logError(e, "Could not get resource URL", module);
}
-
- int numDefs = 0;
for (Element e: UtilXml.childElementList(rootElement, "eca")) {
- String serviceName = e.getAttribute("service");
- String eventName = e.getAttribute("event");
+ handlerRules.add(new ServiceEcaRule(e, resourceLocation));
+ }
+ if (Debug.importantOn()) {
+ Debug.logImportant("Loaded [" + StringUtil.leftPad(Integer.toString(handlerRules.size()), 2) + "] Service ECA Rules from " + resourceLocation, module);
+ }
+ return handlerRules;
+ }
+
+ private static void mergeEcaDefinitions(List<ServiceEcaRule> handlerRules) {
+ for (ServiceEcaRule rule: handlerRules) {
+ String serviceName = rule.getServiceName();
+ String eventName = rule.getEventName();
Map<String, List<ServiceEcaRule>> eventMap = ecaCache.get(serviceName);
List<ServiceEcaRule> rules = null;
@@ -115,11 +134,7 @@ public class ServiceEcaUtil {
eventMap.put(eventName, rules);
}
}
- rules.add(new ServiceEcaRule(e, resourceLocation));
- numDefs++;
- }
- if (Debug.importantOn()) {
- Debug.logImportant("Loaded [" + StringUtil.leftPad(Integer.toString(numDefs), 2) + "] Service ECA Rules from " + resourceLocation, module);
+ rules.add(rule);
}
}