svn commit: r1490004 - in /ofbiz/trunk: framework/service/src/org/ofbiz/service/ framework/service/src/org/ofbiz/service/config/ framework/service/src/org/ofbiz/service/engine/ framework/service/src/org/ofbiz/service/job/ specialpurpose/ebaystore/src/o...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1490004 - in /ofbiz/trunk: framework/service/src/org/ofbiz/service/ framework/service/src/org/ofbiz/service/config/ framework/service/src/org/ofbiz/service/engine/ framework/service/src/org/ofbiz/service/job/ specialpurpose/ebaystore/src/o...

adrianc
Author: adrianc
Date: Wed Jun  5 18:59:51 2013
New Revision: 1490004

URL: http://svn.apache.org/r1490004
Log:
More work on ServiceConfigUtil.java - based on a patch from Christoph Neuroth with modifications by me. The static helper methods now use the models instead of parsing the DOM tree. This commit makes a small API change - the helper methods now throw an exception if there is a problem with the serviceengine.xml file. The original code would just hide the errors, so client code didn't know anything was wrong.

https://issues.apache.org/jira/browse/OFBIZ-5204

Modified:
    ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelNotification.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceUtil.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/config/ServiceConfigUtil.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/GenericAsyncEngine.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java
    ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelNotification.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelNotification.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelNotification.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelNotification.java Wed Jun  5 18:59:51 2013
@@ -20,15 +20,19 @@
 package org.ofbiz.service;
 
 import org.ofbiz.service.config.ServiceConfigUtil;
+import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilValidate;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 import javolution.util.FastMap;
+import org.ofbiz.service.config.model.NotificationGroup;
+import org.ofbiz.service.config.model.Notify;
 
 /**
  * ModelNotification
@@ -100,31 +104,34 @@ public class ModelNotification {
     }
 
     public String buildTo() {
-        ServiceConfigUtil.NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
-        if (group != null) {
-            List<String> addr = group.getAddress("to");
-            if (UtilValidate.isNotEmpty(addr)) {
-                return StringUtil.join(addr, ",");
-            }
-        }
-        return null;
+        return getCommaSeparatedAddressList("to");
     }
 
     public String buildCc() {
-        ServiceConfigUtil.NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
-        if (group != null) {
-            List<String> addr = group.getAddress("cc");
-            if (addr != null) {
-                return StringUtil.join(addr, ",");
-            }
-        }
-        return null;
+        return getCommaSeparatedAddressList("cc");
     }
 
     public String buildBcc() {
-        ServiceConfigUtil.NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
-        if (group != null) {
-            List<String> addr = group.getAddress("bcc");
+        return getCommaSeparatedAddressList("bcc");
+    }
+
+    public String buildFrom() {
+        return getCommaSeparatedAddressList("from");
+    }
+
+    private String getCommaSeparatedAddressList(String notifyType) {
+        try {
+            NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
+            return getCommaSeparatedAddressList(group, notifyType);
+        } catch (GenericConfigException e) {
+            Debug.logWarning(e, "Exception thrown while getting service configuration: ", module);
+            return null;
+        }
+    }
+
+    private String getCommaSeparatedAddressList(NotificationGroup notificationGroup, String notifyType) {
+        if (notificationGroup != null) {
+            List<String> addr = getAddressesByType(notificationGroup, notifyType);
             if (UtilValidate.isNotEmpty(addr)) {
                 return StringUtil.join(addr, ",");
             }
@@ -132,38 +139,49 @@ public class ModelNotification {
         return null;
     }
 
-    public String buildFrom() {
-        ServiceConfigUtil.NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
-        if (group != null) {
-            List<String> addr = group.getAddress("from");
-            if (UtilValidate.isNotEmpty(addr)) {
-                return addr.get(0);
+    private List<String> getAddressesByType(NotificationGroup group, String type) {
+        List<String> l = new ArrayList<String>();
+        for (Notify n : group.getNotifyList()) {
+            if (n.getType().equals(type)) {
+                l.add(n.getContent());
             }
         }
-        return null;
+        return l;
     }
 
     public String getSubject() {
-        ServiceConfigUtil.NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
-        if (group != null) {
-            return group.getSubject();
+        try {
+            NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
+            if (group != null) {
+                return group.getNotification().getSubject();
+            }
+        } catch (GenericConfigException e) {
+            Debug.logWarning(e, "Exception thrown while getting service configuration: ", module);
         }
         return null;
     }
 
     public String getScreen() {
-        ServiceConfigUtil.NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
-        if (group != null) {
-            return group.getScreen();
+        try {
+            NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
+            if (group != null) {
+                return group.getNotification().getScreen();
+            }
+        } catch (GenericConfigException e) {
+            Debug.logWarning(e, "Exception thrown while getting service configuration: ", module);
         }
         return null;
     }
 
     public String getService() {
-        ServiceConfigUtil.NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
-        if (group != null) {
-            // only service supported at this time
-            return "sendMailFromScreen";
+        try {
+            NotificationGroup group = ServiceConfigUtil.getNotificationGroup(notificationGroupName);
+            if (group != null) {
+                // only service supported at this time
+                return "sendMailFromScreen";
+            }
+        } catch (GenericConfigException e) {
+            Debug.logWarning(e, "Exception thrown while getting service configuration: ", module);
         }
         return null;
     }

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java Wed Jun  5 18:59:51 2013
@@ -985,7 +985,11 @@ public class ServiceDispatcher {
                 String delayStr = ss.getAttribute("runtime-delay");
                 String sendToPool = ss.getAttribute("run-in-pool");
                 if (UtilValidate.isEmpty(sendToPool)) {
-                    sendToPool = ServiceConfigUtil.getSendPool();
+                    try {
+                        sendToPool = ServiceConfigUtil.getSendPool();
+                    } catch (GenericConfigException e) {
+                        Debug.logError(e, "Unable to get send pool in service [" + serviceName + "]: ", module);
+                    }
                 }
 
                 long runtimeDelay;

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceUtil.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceUtil.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceUtil.java Wed Jun  5 18:59:51 2013
@@ -32,6 +32,7 @@ import javax.transaction.Transaction;
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
+import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilGenerics;
@@ -372,14 +373,18 @@ public class ServiceUtil {
 
     public static Map<String, Object> purgeOldJobs(DispatchContext dctx, Map<String, ? extends Object> context) {
         Debug.logWarning("WARNING: purgeOldJobs service invoked. This service is obsolete - the Job Scheduler will purge old jobs automatically.", module);
-        String sendPool = ServiceConfigUtil.getSendPool();
-        int daysToKeep = ServiceConfigUtil.getPurgeJobDays();
+        String sendPool = null;
+        Calendar cal = Calendar.getInstance();
+        try {
+            sendPool = ServiceConfigUtil.getSendPool();
+            int daysToKeep = ServiceConfigUtil.getPurgeJobDays();
+            cal.add(Calendar.DAY_OF_YEAR, -daysToKeep);
+        } catch (GenericConfigException e) {
+            Debug.logWarning(e, "Exception thrown while getting service configuration: ", module);
+            return returnError("Exception thrown while getting service configuration: " + e);
+        }
         Delegator delegator = dctx.getDelegator();
 
-        Timestamp now = UtilDateTime.nowTimestamp();
-        Calendar cal = Calendar.getInstance();
-        cal.setTimeInMillis(now.getTime());
-        cal.add(Calendar.DAY_OF_YEAR, daysToKeep * -1);
         Timestamp purgeTime = new Timestamp(cal.getTimeInMillis());
 
         // create the conditions to query

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/config/ServiceConfigUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/config/ServiceConfigUtil.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/config/ServiceConfigUtil.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/config/ServiceConfigUtil.java Wed Jun  5 18:59:51 2013
@@ -18,15 +18,11 @@
  *******************************************************************************/
 package org.ofbiz.service.config;
 
-import java.io.Serializable;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.config.ResourceLoader;
 import org.ofbiz.base.util.Assert;
@@ -34,12 +30,13 @@ import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilURL;
 import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.base.util.cache.UtilCache;
+import org.ofbiz.service.config.model.Engine;
+import org.ofbiz.service.config.model.NotificationGroup;
+import org.ofbiz.service.config.model.RunFromPool;
 import org.ofbiz.service.config.model.ServiceConfig;
 import org.ofbiz.service.config.model.ServiceEngine;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * Misc. utility method for dealing with the serviceengine.xml file
@@ -49,13 +46,19 @@ public final class ServiceConfigUtil {
     public static final String module = ServiceConfigUtil.class.getName();
     public static final String engine = "default";
     public static final String SERVICE_ENGINE_XML_FILENAME = "serviceengine.xml";
-    // Remove this cache in the new implementation.
-    private static final UtilCache<String, Map<String, NotificationGroup>> notificationGroupCache = UtilCache.createUtilCache("service.NotificationGroups", 0, 0, false);
     // Keep the ServiceConfig instance in a cache - so the configuration can be reloaded at run-time. There will be only one ServiceConfig instance in the cache.
     private static final UtilCache<String, ServiceConfig> serviceConfigCache = UtilCache.createUtilCache("service.ServiceConfig", 0, 0, false);
     private static final List<ServiceConfigListener> configListeners = new CopyOnWriteArrayList<ServiceConfigListener>();
 
     /**
+     * Returns the service engine configuration (currently always the default one).
+     * @throws GenericConfigException
+     */
+    private static ServiceEngine getServiceEngine() throws GenericConfigException {
+        return getServiceConfig().getServiceEngine(engine);
+    }
+
+    /**
      * Returns the <code>ServiceConfig</code> instance.
      * @throws GenericConfigException
      */
@@ -80,7 +83,7 @@ public final class ServiceConfigUtil {
     private static Document getXmlDocument() throws GenericConfigException {
         URL confUrl = UtilURL.fromResource(SERVICE_ENGINE_XML_FILENAME);
         if (confUrl == null) {
-            throw new GenericConfigException("Could not find the " + SERVICE_ENGINE_XML_FILENAME + " file on the classpath");
+            throw new GenericConfigException("Could not find the " + SERVICE_ENGINE_XML_FILENAME + " file");
         }
         try {
             return UtilXml.readXmlDocument(confUrl, true, true);
@@ -99,219 +102,79 @@ public final class ServiceConfigUtil {
         return getServiceConfig().getServiceEngine(name);
     }
 
-    public static Element getXmlRootElement() throws GenericConfigException {
-        Element root = ResourceLoader.getXmlRootElement(ServiceConfigUtil.SERVICE_ENGINE_XML_FILENAME);
-        return UtilXml.firstChildElement(root, "service-engine"); // only look at the first one for now
-    }
-
     public static void registerServiceConfigListener(ServiceConfigListener listener) {
         Assert.notNull("listener", listener);
         configListeners.add(listener);
     }
 
-    public static Element getElement(String elementName) {
-        Element rootElement = null;
-
-        try {
-            rootElement = ServiceConfigUtil.getXmlRootElement();
-        } catch (GenericConfigException e) {
-            Debug.logError(e, "Error getting Service Engine XML root element", module);
-        }
-        return  UtilXml.firstChildElement(rootElement, elementName);
+    public static String getAuthorizationServiceName() throws GenericConfigException {
+        return getServiceEngine().getAuthorization().getServiceName();
     }
 
-    public static String getElementAttr(String elementName, String attrName) {
-        Element element = getElement(elementName);
-
-        if (element == null) return null;
-        return element.getAttribute(attrName);
+    public static boolean getPollEnabled() throws GenericConfigException {
+        return getServiceEngine().getThreadPool().getPollEnabled();
     }
 
-    public static String getSendPool() {
-        return getElementAttr("thread-pool", "send-to-pool");
+    public static String getSendPool() throws GenericConfigException {
+        return getServiceEngine().getThreadPool().getSendToPool();
     }
 
-    public static List<String> getRunPools() {
-        List<String> readPools = null;
-
-        Element threadPool = getElement("thread-pool");
-        List<? extends Element> readPoolElements = UtilXml.childElementList(threadPool, "run-from-pool");
-        if (readPoolElements != null) {
-            readPools = FastList.newInstance();
-            for (Element e: readPoolElements) {
-                readPools.add(e.getAttribute("name"));
-            }
+    public static List<String> getRunPools() throws GenericConfigException {
+        List<RunFromPool> runFromPools = getServiceEngine().getThreadPool().getRunFromPools();
+        List<String> readPools = new ArrayList<String>(runFromPools.size());
+        for (RunFromPool runFromPool : runFromPools) {
+            readPools.add(runFromPool.getName());
         }
         return readPools;
     }
 
-    public static int getPurgeJobDays() {
-        String days = getElementAttr("thread-pool", "purge-job-days");
-        int purgeDays;
-        try {
-            purgeDays = Integer.parseInt(days);
-        } catch (NumberFormatException e) {
-            Debug.logError(e, "Cannot read the number of days to keep jobs; not purging", module);
-            purgeDays = 0;
-        }
-        return purgeDays;
+    public static int getPurgeJobDays() throws GenericConfigException {
+        return getServiceEngine().getThreadPool().getPurgeJobDays();
     }
 
-    public static int getFailedRetryMin() {
-        String minString = getElementAttr("thread-pool", "failed-retry-min");
-        int retryMin;
-        try {
-            retryMin = Integer.parseInt(minString);
-        } catch (NumberFormatException e) {
-            Debug.logError(e, "Unable to parse retry minutes; using default of 30", module);
-            retryMin = 30;
-        }
-        return retryMin;
+    public static int getFailedRetryMin() throws GenericConfigException {
+        return getServiceEngine().getThreadPool().getFailedRetryMin();
     }
 
-    public static NotificationGroup getNotificationGroup(String group) {
-        Map<String, NotificationGroup> engineNotifyMap = notificationGroupCache.get(engine);
-        if (engineNotifyMap == null) {
-            //
-            Element rootElement = null;
-            try {
-                rootElement = ServiceConfigUtil.getXmlRootElement();
-            } catch (GenericConfigException e) {
-                Debug.logError(e, "Error getting Service Engine XML root element", module);
+    public static NotificationGroup getNotificationGroup(String group) throws GenericConfigException {
+        List<NotificationGroup> notificationGroups;
+        notificationGroups = getServiceEngine().getNotificationGroups();
+        for (NotificationGroup notificationGroup : notificationGroups) {
+            if (notificationGroup.getName().equals(group)) {
+                return notificationGroup;
             }
-            engineNotifyMap = FastMap.newInstance();
-            for (Element e: UtilXml.childElementList(rootElement, "notification-group")) {
-                NotificationGroup ng = new NotificationGroup(e);
-                engineNotifyMap.put(ng.getName(), ng);
-            }
-            engineNotifyMap = notificationGroupCache.putIfAbsentAndGet(engine, engineNotifyMap);
-        }
-        if (engineNotifyMap != null) {
-           return engineNotifyMap.get(group);
         }
-
         return null;
     }
 
-
-    public static String getEngineParameter(String engineName, String name) throws GenericConfigException {
-        Element root = ServiceConfigUtil.getXmlRootElement();
-        Node node = root.getFirstChild();
-
-        if (node != null) {
-            do {
-                if (node.getNodeType() == Node.ELEMENT_NODE && "engine".equals(node.getNodeName())) {
-                    Element engine = (Element) node;
-                    if (engineName.equals(engine.getAttribute("name"))) {
-                        NodeList params  = engine.getElementsByTagName("parameter");
-                        if (params.getLength() > 0) {
-                            for (int index = 0; index < params.getLength(); index++) {
-                                Element param = (Element) params.item(index);
-                                if (param != null && name.equals(param.getAttribute("name"))) {
-                                    return param.getAttribute("value");
-                                }
-                            }
-                        }
-                    }
-                }
-            } while ((node = node.getNextSibling()) != null);
+    public static String getEngineParameter(String engineName, String parameterName) throws GenericConfigException {
+        Engine engine = getServiceEngine().getEngine(engineName);
+        if (engine != null) {
+            return engine.getParameterValue(parameterName);
         }
         return null;
     }
 
-    // Replace these classes with the new implementation
-
-    public static class NotificationGroup implements Serializable {
-        protected Notification notification;
-        protected List<Notify> notify;
-        protected String name;
-
-        protected NotificationGroup(Element e) {
-            name = e.getAttribute("name");
-            notify = FastList.newInstance();
-            notification = new Notification(UtilXml.firstChildElement(e, "notification"));
-
-            for (Element e2: UtilXml.childElementList(e, "notify")) {
-                notify.add(new Notify(e2));
-            }
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public Notification getNotification() {
-            return notification;
-        }
-
-        public List<Notify> getNotify() {
-            return notify;
-        }
-
-        public String getService() {
-            return notification.getService();
-        }
-
-        public String getSubject() {
-            return notification.getSubject();
-        }
-
-        public String getScreen() {
-            return notification.getScreen();
-        }
-
-        public List<String> getAddress(String type) {
-            List<String> l = FastList.newInstance();
-            for (Notify n: notify) {
-                if (n.getType().equals(type)) {
-                    l.add(n.getValue());
-                }
-            }
-
-            return l;
-        }
-
-        class Notification implements Serializable {
-            protected String subject = null;
-            protected String screen = null;
-            protected String service = null;
-
-            public Notification(Element e) {
-                service = e.getAttribute("service");
-                subject = e.getAttribute("subject");
-                screen = e.getAttribute("screen");
-            }
-
-            public String getScreen() {
-                return screen;
-            }
+    public static Element getXmlRootElement() throws GenericConfigException {
+        Element root = ResourceLoader.getXmlRootElement(ServiceConfigUtil.SERVICE_ENGINE_XML_FILENAME);
+        return UtilXml.firstChildElement(root, "service-engine"); // only look at the first one for now
+    }
 
-            public String getSubject() {
-                return subject;
-            }
+    public static Element getElement(String elementName) {
+        Element rootElement = null;
 
-            public String getService() {
-                return service;
-            }
+        try {
+            rootElement = ServiceConfigUtil.getXmlRootElement();
+        } catch (GenericConfigException e) {
+            Debug.logError(e, "Error getting Service Engine XML root element", module);
         }
+        return  UtilXml.firstChildElement(rootElement, elementName);
+    }
 
-        class Notify implements Serializable {
-            protected String type;
-            protected String value;
-
-            public Notify(Element e) {
-                type = e.getAttribute("type");
-                value = UtilXml.elementValue(e);
-            }
+    public static String getElementAttr(String elementName, String attrName) {
+        Element element = getElement(elementName);
 
-            public String getType() {
-                return type;
-            }
-            public String getValue() {
-                return value;
-            }
-        }
+        if (element == null) return null;
+        return element.getAttribute(attrName);
     }
-
-    private ServiceConfigUtil() {}
 }

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/GenericAsyncEngine.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/GenericAsyncEngine.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/GenericAsyncEngine.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/GenericAsyncEngine.java Wed Jun  5 18:59:51 2013
@@ -22,6 +22,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.Map;
 
+import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilMisc;
@@ -125,6 +126,8 @@ public abstract class GenericAsyncEngine
                 throw new GenericServiceException("Problem serializing service attributes", e);
             } catch (IOException e) {
                 throw new GenericServiceException("Problem serializing service attributes", e);
+            } catch (GenericConfigException e) {
+                throw new GenericServiceException("Problem serializing service attributes", e);
             }
 
             // make sure we stored okay

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java Wed Jun  5 18:59:51 2013
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.RejectedExecutionException;
 
+import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.Assert;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
@@ -155,9 +156,15 @@ public final class JobManager {
                 EntityCondition.makeCondition("cancelDateTime", EntityOperator.EQUALS, null),
                 EntityCondition.makeCondition("runByInstanceId", EntityOperator.EQUALS, null));
         // limit to just defined pools
-        List<String> pools = ServiceConfigUtil.getRunPools();
+        List<String> pools = null;
+        try {
+            pools = ServiceConfigUtil.getRunPools();
+        } catch (GenericConfigException e) {
+            Debug.logWarning(e, "Unable to get run pools - not running job: ", module);
+            return poll;
+        }
         List<EntityExpr> poolsExpr = UtilMisc.toList(EntityCondition.makeCondition("poolId", EntityOperator.EQUALS, null));
-        if (pools != null) {
+        if (!pools.isEmpty()) {
             for (String poolName : pools) {
                 poolsExpr.add(EntityCondition.makeCondition("poolId", EntityOperator.EQUALS, poolName));
             }
@@ -213,9 +220,14 @@ public final class JobManager {
         }
         if (poll.isEmpty()) {
             // No jobs to run, see if there are any jobs to purge
-            int daysToKeep = ServiceConfigUtil.getPurgeJobDays();
             Calendar cal = Calendar.getInstance();
-            cal.add(Calendar.DAY_OF_YEAR, -daysToKeep);
+            try {
+                int daysToKeep = ServiceConfigUtil.getPurgeJobDays();
+                cal.add(Calendar.DAY_OF_YEAR, -daysToKeep);
+            } catch (GenericConfigException e) {
+                Debug.logWarning(e, "Unable to get purge job days: ", module);
+                return poll;
+            }
             Timestamp purgeTime = new Timestamp(cal.getTimeInMillis());
             List<EntityExpr> finExp = UtilMisc.toList(EntityCondition.makeCondition("finishDateTime", EntityOperator.NOT_EQUAL, null), EntityCondition.makeCondition("finishDateTime", EntityOperator.LESS_THAN, purgeTime));
             List<EntityExpr> canExp = UtilMisc.toList(EntityCondition.makeCondition("cancelDateTime", EntityOperator.NOT_EQUAL, null), EntityCondition.makeCondition("cancelDateTime", EntityOperator.LESS_THAN, purgeTime));
@@ -523,7 +535,11 @@ public final class JobManager {
         if (UtilValidate.isNotEmpty(poolName)) {
             jFields.put("poolId", poolName);
         } else {
-            jFields.put("poolId", ServiceConfigUtil.getSendPool());
+            try {
+                jFields.put("poolId", ServiceConfigUtil.getSendPool());
+            } catch (GenericConfigException e) {
+                throw new JobManagerException(e.getMessage(), e);
+            }
         }
         // set the loader name
         jFields.put("loaderName", delegator.getDelegatorName());

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java Wed Jun  5 18:59:51 2013
@@ -28,6 +28,7 @@ import javax.xml.parsers.ParserConfigura
 import javolution.util.FastMap;
 
 import org.apache.commons.lang.StringUtils;
+import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilGenerics;
@@ -244,7 +245,11 @@ public class PersistedServiceJob extends
             if (this.canRetry()) {
                 // create a recurrence
                 Calendar cal = Calendar.getInstance();
-                cal.add(Calendar.MINUTE, ServiceConfigUtil.getFailedRetryMin());
+                try {
+                    cal.add(Calendar.MINUTE, ServiceConfigUtil.getFailedRetryMin());
+                } catch (GenericConfigException e) {
+                    Debug.logWarning(e, "Unable to get retry minutes for job [" + getJobId() + "], defaulting to now: ", module);
+                }
                 long next = cal.getTimeInMillis();
                 try {
                     createRecurrence(next, true);

Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java?rev=1490004&r1=1490003&r2=1490004&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java Wed Jun  5 18:59:51 2013
@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletReq
 
 import javolution.util.FastMap;
 
+import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilGenerics;
@@ -341,6 +342,8 @@ public class EbayStoreHelper {
             return ServiceUtil.returnError(e.getMessage());
         }catch (RecurrenceInfoException e) {
             return ServiceUtil.returnError(e.getMessage());
+        } catch (GenericConfigException e) {
+            return ServiceUtil.returnError(e.getMessage());
         }
         return result;
     }