@Override public void send(ProducerBrokerExchange context, Message message) throws Exception { if (!message.isAdvisory() && !(local && message.getBrokerPath() != null)) { ActiveMQDestination queueConsumers = getQueueConsumersWildcard(message.getDestination()); send(context, message, queueConsumers); } super.send(context, message); }
@Override public void addSubscription(ConnectionContext context, Subscription sub) throws Exception { // authorize subscription final SecurityContext securityContext = broker.checkSecurityContext(context); final AuthorizationMap authorizationMap = broker.getAuthorizationMap(); // use the destination being filtered, instead of the destination from the consumerinfo in the subscription // since that could be a wildcard destination final ActiveMQDestination destination = next.getActiveMQDestination(); Set<?> allowedACLs; if (!destination.isTemporary()) { allowedACLs = authorizationMap.getReadACLs(destination); } else { allowedACLs = authorizationMap.getTempDestinationReadACLs(); } if (!securityContext.isBrokerContext() && allowedACLs != null && !securityContext.isInOneOf(allowedACLs) ) { throw new SecurityException("User " + securityContext.getUserName() + " is not authorized to read from: " + destination); } super.addSubscription(context, sub); }
@Override public synchronized void deleteSubscription(ConnectionContext context, SubscriptionKey key) throws Exception { super.deleteSubscription(context, key); }
private BaseDestination getBaseDestination(Destination virtualDest) { if (virtualDest instanceof BaseDestination) { return (BaseDestination) virtualDest; } else if (virtualDest instanceof DestinationFilter) { return ((DestinationFilter) virtualDest).getAdaptor(BaseDestination.class); } return null; }
@Override public synchronized void removeSubscription(ConnectionContext context, Subscription sub, long lastDeliveredSequenceId) throws Exception { super.removeSubscription(context, sub, lastDeliveredSequenceId); }
Destination target = destination; while (target instanceof DestinationFilter) { target = ((DestinationFilter)target).getNext();
public <T> T getAdaptor(Class <? extends T> clazz) { if (clazz.isInstance(this)) { return clazz.cast(this); } else if (next != null && clazz.isInstance(next)) { return clazz.cast(next); } else if (next instanceof DestinationFilter) { return ((DestinationFilter)next).getAdaptor(clazz); } return null; } }
@Override public synchronized void removeSubscription(ConnectionContext context, Subscription sub, long lastDeliveredSequenceId) throws Exception { super.removeSubscription(context, sub, lastDeliveredSequenceId); }
super.send(context, message);
public void deleteSubscription(ConnectionContext context, SubscriptionKey key) throws Exception { if (next instanceof DestinationFilter) { DestinationFilter filter = (DestinationFilter) next; filter.deleteSubscription(context, key); } else if (next instanceof Topic) { Topic topic = (Topic)next; topic.deleteSubscription(context, key); } }
private BaseDestination getBaseDestination(Destination virtualDest) { if (virtualDest instanceof BaseDestination) { return (BaseDestination) virtualDest; } else if (virtualDest instanceof DestinationFilter) { return ((DestinationFilter) virtualDest).getAdaptor(BaseDestination.class); } return null; }
super.addSubscription(context, sub);
@Override public synchronized void removeSubscription(ConnectionContext context, Subscription sub, long lastDeliveredSequenceId) throws Exception { super.removeSubscription(context, sub, lastDeliveredSequenceId); }
public void send(ProducerBrokerExchange context, Message message) throws Exception { message.setDestination(mirrorDestination.getActiveMQDestination()); mirrorDestination.send(context, message); if (isCopyMessage()) { message = message.copy(); } message.setDestination(destination.getActiveMQDestination()); message.setMemoryUsage(null); // set this to null so that it will use the queue memoryUsage instance instead of the topic. super.send(context, message); } };
} else if (dest instanceof DestinationFilter) { DestinationFilter filter = (DestinationFilter) dest; filter.deleteSubscription(context, key);
private BaseDestination getBaseDestination(Destination virtualDest) { if (virtualDest instanceof BaseDestination) { return (BaseDestination) virtualDest; } else if (virtualDest instanceof DestinationFilter) { return ((DestinationFilter) virtualDest).getAdaptor(BaseDestination.class); } return null; }
@Override public void addSubscription(ConnectionContext context, Subscription sub) throws Exception { // authorize subscription final SecurityContext securityContext = broker.checkSecurityContext(context); final AuthorizationMap authorizationMap = broker.getAuthorizationMap(); // use the destination being filtered, instead of the destination from the consumerinfo in the subscription // since that could be a wildcard destination final ActiveMQDestination destination = next.getActiveMQDestination(); Set<?> allowedACLs; if (!destination.isTemporary()) { allowedACLs = authorizationMap.getReadACLs(destination); } else { allowedACLs = authorizationMap.getTempDestinationReadACLs(); } if (!securityContext.isBrokerContext() && allowedACLs != null && !securityContext.isInOneOf(allowedACLs) ) { throw new SecurityException("User " + securityContext.getUserName() + " is not authorized to read from: " + destination); } super.addSubscription(context, sub); }
@Override public synchronized void removeSubscription(ConnectionContext context, Subscription sub, long lastDeliveredSequenceId) throws Exception { super.removeSubscription(context, sub, lastDeliveredSequenceId); }
public void send(ProducerBrokerExchange context, Message message) throws Exception { if (!message.isAdvisory()) { ActiveMQDestination queueConsumers = getQueueConsumersWildcard(message.getDestination()); send(context, message, queueConsumers); } super.send(context, message); }
@Override public synchronized void deleteSubscription(ConnectionContext context, SubscriptionKey key) throws Exception { super.deleteSubscription(context, key); }