Issue #2506 Added subscription notification service to bandwidth manager.

Change-Id: I3aad52887532f9a16dd6ea396458803890916d92

Former-commit-id: 2466ae66d5a3acb6b5c5f5be482db30d3b3653bd
This commit is contained in:
Brad Gonzales 2013-11-08 16:51:25 -06:00
parent d8f2ffbceb
commit ff5edde334
11 changed files with 78 additions and 28 deletions

View file

@ -28,6 +28,7 @@ import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.common.util.JarUtil;
import com.raytheon.uf.edex.datadelivery.bandwidth.BandwidthManager;
@ -54,6 +55,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* May 15, 2013 2000 djohnson Include daos.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Oct 3 2013 1797 dhladky Generics added
* Nov 08, 2013 2506 bgonzale Added subscription notification service to bandwidth manager.
*
* </pre>
*
@ -88,9 +90,11 @@ public class NcfBandwidthManagerCreator<T extends Time, C extends Coverage> impl
IBandwidthDao<T, C> bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil<T, C> bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil,
dataSetMetaDataHandler, subscriptionHandler);
dataSetMetaDataHandler, subscriptionHandler,
subscriptionNotificationService);
}
@Override
@ -125,9 +129,11 @@ public class NcfBandwidthManagerCreator<T extends Time, C extends Coverage> impl
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
return new NcfBandwidthManager(dbInit, bandwidthDao, retrievalManager,
bandwidthDaoUtil, dataSetMetaDataHandler, subscriptionHandler);
bandwidthDaoUtil, dataSetMetaDataHandler, subscriptionHandler,
subscriptionNotificationService);
}
}

View file

@ -30,7 +30,8 @@ Require-Bundle: com.raytheon.uf.common.status;bundle-version="1.12.1174",
com.raytheon.uf.common.plugin.nwsauth;bundle-version="1.12.1174",
com.raytheon.uf.common.util,
com.raytheon.uf.common.datadelivery.request;bundle-version="1.0.0",
com.raytheon.uf.edex.registry.ebxml;bundle-version="1.0.0"
com.raytheon.uf.edex.registry.ebxml;bundle-version="1.0.0",
com.raytheon.uf.common.datadelivery.service;bundle-version="1.0.0"
Export-Package: com.raytheon.uf.edex.datadelivery.bandwidth,
com.raytheon.uf.edex.datadelivery.bandwidth.dao,
com.raytheon.uf.edex.datadelivery.bandwidth.interfaces,

View file

@ -59,6 +59,7 @@
<!-- Registry handlers required for EdexBandwidthManager -->
<constructor-arg ref="DataSetMetaDataHandler" />
<constructor-arg ref="SubscriptionHandler" />
<constructor-arg ref="subscriptionNotificationService" />
</bean>
<bean id="dataSetAvailabilityCalculator"

View file

@ -25,6 +25,7 @@ import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.common.localization.IPathManager;
import com.raytheon.uf.common.localization.LocalizationContext;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel;
@ -52,7 +53,8 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Oct 24, 2012 1286 djohnson Initial creation
* Feb 20, 2013 1543 djohnson Add IEdexBandwidthManagerCreator.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Oct 3, 2013 1797 dhladky Some generics
* Oct 03, 2013 1797 dhladky Some generics
* Nov 07, 2013 2506 bgonzale Added notification handler to bandwidth context.
*
* </pre>
*
@ -82,7 +84,8 @@ public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> imp
IBandwidthDao<T, C> bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil<T, C> bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler);
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService notificationService);
}
private static EdexBandwidthManager instance;
@ -101,6 +104,8 @@ public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> imp
private final ISubscriptionHandler subscriptionHandler;
private final ISubscriptionNotificationService notificationService;
/**
* Intentionally package-private constructor, as it is created from Spring
* which is able to reflectively instantiate.
@ -112,6 +117,7 @@ public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> imp
* @param dbInit
* @param dataSetMetaDataHandler
* @param subscriptionHandler
* @param notificationService
*/
EdexBandwidthContextFactory(IBandwidthDao<T, C> bandwidthDao,
IBandwidthBucketDao bandwidthBucketDao,
@ -119,7 +125,8 @@ public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> imp
IEdexBandwidthManagerCreator<T, C> bandwidthManagerCreator,
IBandwidthDbInit dbInit,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService notificationService) {
this.bandwidthDao = bandwidthDao;
this.bandwidthBucketDao = bandwidthBucketDao;
this.bandwidthInitializer = bandwidthInitializer;
@ -127,6 +134,8 @@ public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> imp
this.dbInit = dbInit;
this.dataSetMetaDataHandler = dataSetMetaDataHandler;
this.subscriptionHandler = subscriptionHandler;
this.notificationService = notificationService;
}
/**
@ -138,7 +147,7 @@ public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> imp
* the {@link BandwidthManager} instance
*/
EdexBandwidthContextFactory(EdexBandwidthManager<T, C> instance) {
this(null, null, null, null, null, null, null);
this(null, null, null, null, null, null, null, null);
EdexBandwidthContextFactory.instance = instance;
}
@ -229,6 +238,8 @@ public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> imp
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil) {
return bandwidthManagerCreator.getBandwidthManager(dbInit,
bandwidthDao, retrievalManager, bandwidthDaoUtil, dataSetMetaDataHandler, subscriptionHandler);
bandwidthDao, retrievalManager, bandwidthDaoUtil,
dataSetMetaDataHandler, subscriptionHandler,
notificationService);
}
}

View file

@ -51,6 +51,7 @@ import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.common.event.EventBus;
import com.raytheon.uf.common.registry.event.InsertRegistryEvent;
import com.raytheon.uf.common.registry.event.RemoveRegistryEvent;
@ -98,6 +99,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* Oct 10, 2013 1797 bgonzale Refactored registry Time objects.
* 10/23/2013 2385 bphillip Change schedule method to scheduleAdhoc
* Nov 04, 2013 2506 bgonzale Added removeBandwidthSubscriptions method.
* Added subscriptionNotificationService field.
*
* </pre>
*
@ -116,6 +118,8 @@ public abstract class EdexBandwidthManager<T extends Time, C extends Coverage>
private final ScheduledExecutorService scheduler;
private final ISubscriptionNotificationService subscriptionNotificationService;
@VisibleForTesting
final Runnable watchForConfigFileChanges = new Runnable() {
@ -136,17 +140,20 @@ public abstract class EdexBandwidthManager<T extends Time, C extends Coverage>
* @param bandwidthDao
* @param retrievalManager
* @param bandwidthDaoUtil
* @param subscriptionNotificationService
*/
public EdexBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao<T, C> bandwidthDao,
RetrievalManager retrievalManager,
BandwidthDaoUtil<T, C> bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil);
this.dataSetMetaDataHandler = dataSetMetaDataHandler;
this.subscriptionHandler = subscriptionHandler;
this.subscriptionNotificationService = subscriptionNotificationService;
// schedule maintenance tasks
scheduler = Executors.newScheduledThreadPool(1);
@ -317,6 +324,7 @@ public abstract class EdexBandwidthManager<T extends Time, C extends Coverage>
.info("Received Subscription removal notification for Subscription ["
+ event.getId() + "]");
removeBandwidthSubscriptions(event.getId());
}
}
}
@ -359,7 +367,6 @@ public abstract class EdexBandwidthManager<T extends Time, C extends Coverage>
statusHandler.error("No DataSetMetaData found for id [" + id
+ "]");
}
}
}

View file

@ -29,6 +29,7 @@ import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.common.util.JarUtil;
import com.raytheon.uf.edex.datadelivery.bandwidth.EdexBandwidthContextFactory.IEdexBandwidthManagerCreator;
@ -53,6 +54,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Oct 2, 2013 1797 dhladky Generics
* Oct 28, 2013 2506 bgonzale SBN (Shared) Scheduled at the central registry.
* Added subscription notification service to bandwidth manager.
*
* </pre>
*
@ -85,14 +87,17 @@ public class WfoBandwidthManagerCreator<T extends Time, C extends Coverage> impl
* @param bandwidthDao
* @param retrievalManager
* @param bandwidthDaoUtil
* @param subscriptionNotificationService
*/
public WfoBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil,
dataSetMetaDataHandler, subscriptionHandler);
dataSetMetaDataHandler, subscriptionHandler,
subscriptionNotificationService);
}
@Override
@ -139,9 +144,11 @@ public class WfoBandwidthManagerCreator<T extends Time, C extends Coverage> impl
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
return new WfoBandwidthManager<T, C>(dbInit, bandwidthDao, retrievalManager,
bandwidthDaoUtil, dataSetMetaDataHandler, subscriptionHandler);
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
return new WfoBandwidthManager<T, C>(dbInit, bandwidthDao,
retrievalManager, bandwidthDaoUtil, dataSetMetaDataHandler,
subscriptionHandler, subscriptionNotificationService);
}
}

View file

@ -23,6 +23,7 @@ import java.io.File;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.BandwidthContextFactory;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthBucketDao;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDao;
@ -41,6 +42,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDbInit;
* Feb 20, 2013 1543 djohnson Pass additional super-class constructor arguments.
* Jun 25, 2013 2106 djohnson Add {@link IBandwidthBucketDao}.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Nov 07, 2013 2506 bgonzale Added notification handler to bandwidth context.
*
* </pre>
*
@ -68,11 +70,12 @@ public class IntegrationTestBandwidthContextFactory extends
IEdexBandwidthManagerCreator bandwidthManagerCreator,
IBandwidthDbInit dbInit,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService notificationService) {
super(bandwidthDao, bandwidthBucketsDao,
new IntegrationTestBandwidthInitializer(),
bandwidthManagerCreator, dbInit, dataSetMetaDataHandler,
subscriptionHandler);
subscriptionHandler, notificationService);
}
/**
@ -90,6 +93,6 @@ public class IntegrationTestBandwidthContextFactory extends
*/
public static File getIntegrationTestBandwidthMapConfigFile() {
return new IntegrationTestBandwidthContextFactory(null, null, null,
null, null, null).getBandwidthMapConfigFile();
null, null, null, null).getBandwidthMapConfigFile();
}
}

View file

@ -21,6 +21,7 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.common.util.JarUtil;
import com.raytheon.uf.common.util.SpringFiles;
import com.raytheon.uf.edex.datadelivery.bandwidth.WfoBandwidthManagerCreator.WfoBandwidthManager;
@ -43,6 +44,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Feb 27, 2013 1644 djohnson Extends WFO bandwidth manager.
* May 15, 2013 2000 djohnson Include daos.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Nov 08, 2013 2506 bgonzale Added notification service to bandwidth manager.
*
* </pre>
*
@ -71,9 +73,11 @@ public class IntegrationTestWfoBandwidthManager extends WfoBandwidthManager {
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil,
dataSetMetaDataHandler, subscriptionHandler);
dataSetMetaDataHandler, subscriptionHandler,
subscriptionNotificationService);
}
/**

View file

@ -21,6 +21,7 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.edex.datadelivery.bandwidth.EdexBandwidthContextFactory.IEdexBandwidthManagerCreator;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDao;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDbInit;
@ -38,6 +39,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* ------------ ---------- ----------- --------------------------
* Feb 20, 2013 1543 djohnson Initial creation
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Nov 08, 2013 2506 bgonzale Added notification service to bandwidth manager.
*
* </pre>
*
@ -55,9 +57,10 @@ public class IntegrationTestWfoBandwidthManagerCreator implements
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
return new IntegrationTestWfoBandwidthManager(dbInit, bandwidthDao,
retrievalManager, bandwidthDaoUtil, dataSetMetaDataHandler,
subscriptionHandler);
subscriptionHandler, subscriptionNotificationService);
}
}

View file

@ -21,6 +21,7 @@ package com.raytheon.uf.edex.datadelivery.bandwidth.ncf;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.common.util.JarUtil;
import com.raytheon.uf.common.util.SpringFiles;
import com.raytheon.uf.edex.datadelivery.bandwidth.IBandwidthManager;
@ -43,6 +44,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Feb 18, 2013 1543 djohnson Initial creation
* Feb 27, 2013 1644 djohnson Extend NCF bandwidth manager.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Nov 08, 2013 2506 bgonzale Added notification service to bandwidth manager.
*
* </pre>
*
@ -71,9 +73,11 @@ public class IntegrationTestNcfBandwidthManager extends NcfBandwidthManager {
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil,
dataSetMetaDataHandler, subscriptionHandler);
dataSetMetaDataHandler, subscriptionHandler,
subscriptionNotificationService);
}
/**

View file

@ -21,6 +21,7 @@ package com.raytheon.uf.edex.datadelivery.bandwidth.ncf;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService;
import com.raytheon.uf.edex.datadelivery.bandwidth.EdexBandwidthContextFactory.IEdexBandwidthManagerCreator;
import com.raytheon.uf.edex.datadelivery.bandwidth.IBandwidthManager;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDao;
@ -39,6 +40,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* ------------ ---------- ----------- --------------------------
* Feb 20, 2013 1543 djohnson Initial creation
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Nov 08, 2013 2506 bgonzale Added notification service to bandwidth manager.
*
* </pre>
*
@ -56,9 +58,10 @@ public class IntegrationTestNcfBandwidthManagerCreator implements
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
ISubscriptionHandler subscriptionHandler,
ISubscriptionNotificationService subscriptionNotificationService) {
return new IntegrationTestNcfBandwidthManager(dbInit, bandwidthDao,
retrievalManager, bandwidthDaoUtil, dataSetMetaDataHandler,
subscriptionHandler);
subscriptionHandler, subscriptionNotificationService);
}
}