Thank you for removing Javolution. :) Adrian Crum Sandglass Software www.sandglass-software.com
On 9/2/2014 8:26 AM, jaco...@apache.org wrote:
Author: jacopoc Date: Tue Sep 2 07:26:03 2014 New Revision: 1621942 URL: http://svn.apache.org/r1621942 Log: Greatly cleaned-up and simplified the EventFactory and ViewFactory classes used by the RequestHandler: they are now (mostly) immutable and thread safe. Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/EventFactory.java ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/ViewFactory.java Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/EventFactory.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/EventFactory.java?rev=1621942&r1=1621941&r2=1621942&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/EventFactory.java (original) +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/EventFactory.java Tue Sep 2 07:26:03 2014 @@ -19,18 +19,16 @@ package org.ofbiz.webapp.event; import java.net.URL; +import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.servlet.ServletContext; -import javolution.util.FastMap; - import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.GeneralRuntimeException; import org.ofbiz.base.util.ObjectType; import org.ofbiz.webapp.control.ConfigXMLReader; -import org.ofbiz.webapp.control.WebAppConfigurationException; /** * EventFactory - Event Handler Factory @@ -39,88 +37,29 @@ public class EventFactory { public static final String module = EventFactory.class.getName(); - private final URL controllerConfigURL; - private final ServletContext context; - protected Map<String, EventHandler> handlers = null; + private final Map<String, EventHandler> handlers = new HashMap<String, EventHandler>(); public EventFactory(ServletContext context, URL controllerConfigURL) { - handlers = FastMap.newInstance(); - this.controllerConfigURL = controllerConfigURL; - this.context = context; - - // pre-load all event handlers + // load all the event handlers try { - this.preLoadAll(); - } catch (EventHandlerException e) { + Set<Map.Entry<String,String>> handlerEntries = ConfigXMLReader.getControllerConfig(controllerConfigURL).getEventHandlerMap().entrySet(); + if (handlerEntries != null) { + for (Map.Entry<String,String> handlerEntry: handlerEntries) { + EventHandler handler = (EventHandler) ObjectType.getInstance(handlerEntry.getValue()); + handler.init(context); + this.handlers.put(handlerEntry.getKey(), handler); + } + } + } catch (Exception e) { Debug.logError(e, module); throw new GeneralRuntimeException(e); } } - private void preLoadAll() throws EventHandlerException { - Set<String> handlers = null; - try { - handlers = ConfigXMLReader.getControllerConfig(this.controllerConfigURL).getEventHandlerMap().keySet(); - } catch (WebAppConfigurationException e) { - Debug.logError(e, "Exception thrown while parsing controller.xml file: ", module); - } - if (handlers != null) { - for (String type: handlers) { - this.handlers.put(type, this.loadEventHandler(type)); - } - } - } - public EventHandler getEventHandler(String type) throws EventHandlerException { - // check if we are new / empty and add the default handler in - if (handlers.size() == 0) { - this.preLoadAll(); - } - - // attempt to get a pre-loaded handler EventHandler handler = handlers.get(type); - if (handler == null) { - synchronized (EventHandler.class) { - handler = handlers.get(type); - if (handler == null) { - handler = this.loadEventHandler(type); - handlers.put(type, handler); - } - } - if (handler == null) - throw new EventHandlerException("No handler found for type: " + type); - } - return handler; - } - - public void clear() { - handlers.clear(); - } - - private EventHandler loadEventHandler(String type) throws EventHandlerException { - EventHandler handler = null; - String handlerClass = null; - try { - handlerClass = ConfigXMLReader.getControllerConfig(this.controllerConfigURL).getEventHandlerMap().get(type); - } catch (WebAppConfigurationException e) { - Debug.logError(e, "Exception thrown while parsing controller.xml file: ", module); - } - if (handlerClass == null) { - throw new EventHandlerException("Unknown handler type: " + type); - } - - try { - handler = (EventHandler) ObjectType.getInstance(handlerClass); - handler.init(context); - } catch (NoClassDefFoundError e) { - throw new EventHandlerException("No class def found for handler [" + handlerClass + "]", e); - } catch (ClassNotFoundException cnf) { - throw new EventHandlerException("Cannot load handler class [" + handlerClass + "]", cnf); - } catch (InstantiationException ie) { - throw new EventHandlerException("Cannot get instance of the handler [" + handlerClass + "]", ie); - } catch (IllegalAccessException iae) { - throw new EventHandlerException(iae.getMessage(), iae); + throw new EventHandlerException("No handler found for type: " + type); } return handler; } Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/ViewFactory.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/ViewFactory.java?rev=1621942&r1=1621941&r2=1621942&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/ViewFactory.java (original) +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/view/ViewFactory.java Tue Sep 2 07:26:03 2014 @@ -19,19 +19,17 @@ package org.ofbiz.webapp.view; import java.net.URL; +import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.servlet.ServletContext; -import javolution.util.FastMap; - import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.GeneralRuntimeException; import org.ofbiz.base.util.ObjectType; import org.ofbiz.base.util.UtilValidate; import org.ofbiz.webapp.control.ConfigXMLReader; -import org.ofbiz.webapp.control.WebAppConfigurationException; /** * ViewFactory - View Handler Factory @@ -40,46 +38,29 @@ public class ViewFactory { public static final String module = ViewFactory.class.getName(); - private final URL controllerConfigURL; - private final ServletContext context; - protected Map<String, ViewHandler> handlers = null; + private final Map<String, ViewHandler> handlers = new HashMap<String, ViewHandler>(); public ViewFactory(ServletContext context, URL controllerConfigURL) { - this.handlers = FastMap.newInstance(); - this.controllerConfigURL = controllerConfigURL; - this.context = context; - - // pre-load all the view handlers + // load all the view handlers try { - this.preLoadAll(); - } catch (ViewHandlerException e) { - Debug.logError(e, module); - throw new GeneralRuntimeException(e); - } - } - - private void preLoadAll() throws ViewHandlerException { - Set<String> handlers = null; - try { - handlers = ConfigXMLReader.getControllerConfig(this.controllerConfigURL).getViewHandlerMap().keySet(); - } catch (WebAppConfigurationException e) { - Debug.logError(e, "Exception thrown while parsing controller.xml file: ", module); - } - if (handlers != null) { - for (String type: handlers) { - this.handlers.put(type, this.loadViewHandler(type)); + Set<Map.Entry<String,String>> handlerEntries = ConfigXMLReader.getControllerConfig(controllerConfigURL).getViewHandlerMap().entrySet(); + if (handlerEntries != null) { + for (Map.Entry<String,String> handlerEntry: handlerEntries) { + ViewHandler handler = (ViewHandler) ObjectType.getInstance(handlerEntry.getValue()); + handler.setName(handlerEntry.getKey()); + handler.init(context); + this.handlers.put(handlerEntry.getKey(), handler); + } } - } - - // load the "default" type - if (!this.handlers.containsKey("default")) { - try { - ViewHandler h = (ViewHandler) ObjectType.getInstance("org.ofbiz.webapp.view.JspViewHandler"); - h.init(context); - this. handlers.put("default", h); - } catch (Exception e) { - throw new ViewHandlerException(e); + // load the "default" type + if (!this.handlers.containsKey("default")) { + ViewHandler defaultHandler = (ViewHandler) ObjectType.getInstance("org.ofbiz.webapp.view.JspViewHandler"); + defaultHandler.init(context); + this. handlers.put("default", defaultHandler); } + } catch (Exception e) { + Debug.logError(e, module); + throw new GeneralRuntimeException(e); } } @@ -87,60 +68,11 @@ public class ViewFactory { if (UtilValidate.isEmpty(type)) { type = "default"; } - - // check if we are new / empty and add the default handler in - if (handlers.size() == 0) { - this.preLoadAll(); - } - // get the view handler by type from the contextHandlers ViewHandler handler = handlers.get(type); - - // if none found lets create it and add it in if (handler == null) { - synchronized (ViewFactory.class) { - handler = handlers.get(type); - if (handler == null) { - handler = this.loadViewHandler(type); - handlers.put(type, handler); - } - } - if (handler == null) { - throw new ViewHandlerException("No handler found for type: " + type); - } - } - return handler; - } - - public void clear() { - handlers.clear(); - } - - private ViewHandler loadViewHandler(String type) throws ViewHandlerException { - ViewHandler handler = null; - String handlerClass = null; - try { - handlerClass = ConfigXMLReader.getControllerConfig(this.controllerConfigURL).getViewHandlerMap().get(type); - } catch (WebAppConfigurationException e) { - Debug.logError(e, "Exception thrown while parsing controller.xml file: ", module); - } - if (handlerClass == null) { - throw new ViewHandlerException("Unknown handler type: " + type); + throw new ViewHandlerException("No handler found for type: " + type); } - - try { - handler = (ViewHandler) ObjectType.getInstance(handlerClass); - handler.setName(type); - handler.init(context); - } catch (ClassNotFoundException cnf) { - //throw new ViewHandlerException("Cannot load handler class", cnf); - Debug.logWarning("Warning: could not load view handler class because it was not found; note that some views may not work: " + cnf.toString(), module); - } catch (InstantiationException ie) { - throw new ViewHandlerException("Cannot get instance of the handler", ie); - } catch (IllegalAccessException iae) { - throw new ViewHandlerException(iae.getMessage(), iae); - } - return handler; } }