|
Author: jacopoc
Date: Thu Jul 26 07:03:46 2012 New Revision: 1365895 URL: http://svn.apache.org/viewvc?rev=1365895&view=rev Log: Made locationMap thread safe using static initialization and immutability. Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/AbstractEngine.java Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/AbstractEngine.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/AbstractEngine.java?rev=1365895&r1=1365894&r2=1365895&view=diff ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/AbstractEngine.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/AbstractEngine.java Thu Jul 26 07:03:46 2012 @@ -18,12 +18,12 @@ *******************************************************************************/ package org.ofbiz.service.engine; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.Iterator; -import javolution.util.FastMap; - import org.ofbiz.service.ServiceDispatcher; import org.ofbiz.service.ModelService; import org.ofbiz.service.GenericServiceException; @@ -41,40 +41,38 @@ import org.w3c.dom.Element; public abstract class AbstractEngine implements GenericEngine { public static final String module = AbstractEngine.class.getName(); - protected static Map<String, String> locationMap = null; + protected static final Map<String, String> locationMap = createLocationMap(); protected ServiceDispatcher dispatcher = null; protected AbstractEngine(ServiceDispatcher dispatcher) { this.dispatcher = dispatcher; - initLocations(); } // creates the location alias map - protected synchronized void initLocations() { - if (locationMap == null) { - locationMap = FastMap.newInstance(); - - Element root = null; - try { - root = ServiceConfigUtil.getXmlRootElement(); - } catch (GenericConfigException e) { - Debug.logError(e, module); - } + protected static Map<String, String> createLocationMap() { + Map<String, String> tmpMap = new HashMap<String, String>(); + + Element root = null; + try { + root = ServiceConfigUtil.getXmlRootElement(); + } catch (GenericConfigException e) { + Debug.logError(e, module); + } - if (root != null) { - List<? extends Element> locationElements = UtilXml.childElementList(root, "service-location"); - if (locationElements != null) { - for (Element e: locationElements) { - locationMap.put(e.getAttribute("name"), e.getAttribute("location")); - } + if (root != null) { + List<? extends Element> locationElements = UtilXml.childElementList(root, "service-location"); + if (locationElements != null) { + for (Element e: locationElements) { + tmpMap.put(e.getAttribute("name"), e.getAttribute("location")); } } - Debug.logInfo("Loaded Service Locations : " + locationMap, module); } + Debug.logInfo("Loaded Service Locations: " + tmpMap, module); + return Collections.unmodifiableMap(tmpMap); } - // uses the lookup map to determin if the location has been aliased in serviceconfig.xml + // uses the lookup map to determine if the location has been aliased in serviceconfig.xml protected String getLocation(ModelService model) { if (locationMap.containsKey(model.location)) { return locationMap.get(model.location); |
| Free forum by Nabble | Edit this page |
