You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Adrian Crum <ad...@sandglass-software.com> on 2014/09/02 10:40:54 UTC
Re: svn commit: r1621942 - in /ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp:
event/EventFactory.java view/ViewFactory.java
Thank you for removing Javolution. :)
Adrian Crum
Sandglass Software
www.sandglass-software.com
On 9/2/2014 8:26 AM, jacopoc@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;
> }
> }
>
>