This commit is contained in:
Dejan Bosanac 2014-01-28 16:08:53 +01:00
parent 55da9bc821
commit 713250f5f0
2 changed files with 19 additions and 11 deletions

View File

@ -583,16 +583,23 @@ public abstract class AbstractRegion implements Region {
} }
public void reapplyInterceptor() { public void reapplyInterceptor() {
DestinationInterceptor destinationInterceptor = broker.getDestinationInterceptor(); destinationsLock.writeLock().lock();
Map<ActiveMQDestination, Destination> map = getDestinationMap(); try {
for (ActiveMQDestination key : map.keySet()) { DestinationInterceptor destinationInterceptor = broker.getDestinationInterceptor();
Destination destination = map.get(key); Map<ActiveMQDestination, Destination> map = getDestinationMap();
if (destination instanceof CompositeDestinationFilter) { for (ActiveMQDestination key : map.keySet()) {
destination = ((CompositeDestinationFilter)destination).next; Destination destination = map.get(key);
if (destination instanceof CompositeDestinationFilter) {
destination = ((CompositeDestinationFilter) destination).next;
}
if (destinationInterceptor != null) {
destination = destinationInterceptor.intercept(destination);
}
getDestinationMap().put(key, destination);
destinations.put(key, destination);
} }
destination = destinationInterceptor.intercept(destination); } finally {
getDestinationMap().put(key, destination); destinationsLock.writeLock().unlock();
destinations.put(key, destination);
} }
} }
} }

View File

@ -552,6 +552,7 @@ public class RuntimeConfigurationBroker extends BrokerFilter {
public void run() { public void run() {
boolean updatedExistingInterceptor = false; boolean updatedExistingInterceptor = false;
RegionBroker regionBroker = (RegionBroker) getBrokerService().getRegionBroker();
for (DestinationInterceptor destinationInterceptor : getBrokerService().getDestinationInterceptors()) { for (DestinationInterceptor destinationInterceptor : getBrokerService().getDestinationInterceptors()) {
if (destinationInterceptor instanceof VirtualDestinationInterceptor) { if (destinationInterceptor instanceof VirtualDestinationInterceptor) {
@ -577,11 +578,11 @@ public class RuntimeConfigurationBroker extends BrokerFilter {
DestinationInterceptor[] destinationInterceptors = interceptorsList.toArray(new DestinationInterceptor[]{}); DestinationInterceptor[] destinationInterceptors = interceptorsList.toArray(new DestinationInterceptor[]{});
getBrokerService().setDestinationInterceptors(destinationInterceptors); getBrokerService().setDestinationInterceptors(destinationInterceptors);
RegionBroker regionBroker = (RegionBroker) getBrokerService().getRegionBroker();
((CompositeDestinationInterceptor) regionBroker.getDestinationInterceptor()).setInterceptors(destinationInterceptors); ((CompositeDestinationInterceptor) regionBroker.getDestinationInterceptor()).setInterceptors(destinationInterceptors);
info("applied new: " + interceptorsList); info("applied new: " + interceptorsList);
regionBroker.reapplyInterceptor();
} }
regionBroker.reapplyInterceptor();
} }
}); });
} else if (o instanceof DtoPolicyEntry) { } else if (o instanceof DtoPolicyEntry) {