From 6c016a6bb6270b2e9f990e504d732259240717be Mon Sep 17 00:00:00 2001 From: Nate Jensen Date: Tue, 12 Nov 2013 11:03:51 -0600 Subject: [PATCH] Issue #2361 static lazy initialization of SubscriptionOverlapService's JAXBManager Change-Id: Iccf41435f8dfc9d3b7ad556fce14937fe66785ac Former-commit-id: 2cdc7e5e6363e1b3d31960126bdb8bd992530de6 [formerly f42d92e543ab2ecf516e159a0756de7cb3417b88] Former-commit-id: 1ee5d91af26be998a0c19a9e9f555c6bebffadbe --- .../SubscriptionOverlapService.java | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.service/src/com/raytheon/uf/common/datadelivery/service/subscription/SubscriptionOverlapService.java b/edexOsgi/com.raytheon.uf.common.datadelivery.service/src/com/raytheon/uf/common/datadelivery/service/subscription/SubscriptionOverlapService.java index 84f48fd056..6b41d7ead0 100644 --- a/edexOsgi/com.raytheon.uf.common.datadelivery.service/src/com/raytheon/uf/common/datadelivery/service/subscription/SubscriptionOverlapService.java +++ b/edexOsgi/com.raytheon.uf.common.datadelivery.service/src/com/raytheon/uf/common/datadelivery/service/subscription/SubscriptionOverlapService.java @@ -49,11 +49,12 @@ import com.raytheon.uf.common.util.FileUtil; * * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- - * May 07, 2013 2000 djohnson Initial creation + * May 07, 2013 2000 djohnson Initial creation * Jun 04, 2013 223 mpduff Get base file if site doesn't exist. * Sept 23, 2013 2283 dhladky Updated for multiple configs * Oct 03, 2013 2386 mpduff Moved the subscription overlap rules files into the rules directory. * Oct 25, 2013 2292 mpduff Move overlap checks to edex. + * Nov 12, 2013 2361 njensen Made JAXBManager static and initialized on first use * * * @author djohnson @@ -62,6 +63,7 @@ import com.raytheon.uf.common.util.FileUtil; public class SubscriptionOverlapService implements ISubscriptionOverlapService { + private static final IUFStatusHandler statusHandler = UFStatus .getHandler(SubscriptionOverlapService.class); @@ -73,7 +75,22 @@ public class SubscriptionOverlapService private static final String SUBSCRIPTION_OVERLAP_CONFIG_FILE_PATH = FileUtil .join("datadelivery", "systemManagement", "rules", File.separator); - private final JAXBManager jaxbManager; + private static JAXBManager jaxbManager; + + private static synchronized JAXBManager getJaxbManager() { + if (jaxbManager == null) { + try { + Class[] clazzes = new Class[] { + SubscriptionOverlapConfig.class, + GridSubscriptionOverlapConfig.class, + PointSubscriptionOverlapConfig.class }; + jaxbManager = new JAXBManager(clazzes); + } catch (JAXBException e) { + throw new ExceptionInInitializerError(e); + } + } + return jaxbManager; + } /** * Constructor. @@ -81,15 +98,7 @@ public class SubscriptionOverlapService * @param duplicateChecker */ public SubscriptionOverlapService() { - try { - @SuppressWarnings("rawtypes") - Class[] clazzes = new Class[] { SubscriptionOverlapConfig.class, - GridSubscriptionOverlapConfig.class, - PointSubscriptionOverlapConfig.class }; - jaxbManager = new JAXBManager(clazzes); - } catch (JAXBException e) { - throw new ExceptionInInitializerError(e); - } + } /** @@ -119,7 +128,7 @@ public class SubscriptionOverlapService final LocalizationFile configFile = pathManager.getLocalizationFile( context, fileName); - configFile.jaxbMarshal(config, jaxbManager); + configFile.jaxbMarshal(config, getJaxbManager()); } /** @@ -148,11 +157,11 @@ public class SubscriptionOverlapService if (type == DataType.GRID) { config = localizationFile.jaxbUnmarshal( - GridSubscriptionOverlapConfig.class, jaxbManager); + GridSubscriptionOverlapConfig.class, getJaxbManager()); } else if (type == DataType.POINT) { config = localizationFile.jaxbUnmarshal( - PointSubscriptionOverlapConfig.class, jaxbManager); + PointSubscriptionOverlapConfig.class, getJaxbManager()); }