@Override public boolean isBound(String bindingKey, Map<String,Object> arguments, Queue<?> queue) { if (bindingKey == null) { bindingKey = ""; } for(Binding b : _bindings) { if(bindingKey.equals(b.getBindingKey()) && queue.getName().equals(b.getDestination())) { return (b.getArguments() == null || b.getArguments().isEmpty()) ? (arguments == null || arguments.isEmpty()) : b.getArguments().equals(arguments); } } return false; }
private Collection<LegacyConfiguredObject> getExchangeBindings(final LegacyConfiguredObject nextVersionExchange, final String queueName, final String bindingName) { @SuppressWarnings("unchecked") Object items = nextVersionExchange.getAttribute("bindings"); if (items instanceof Collection) { return ((Collection<?>) items).stream() .map(Binding.class::cast) .filter(b -> (queueName == null || "*".equals(queueName) || queueName.equals(b.getDestination())) && (bindingName == null || "*".equals(bindingName) || bindingName .equals(b.getName()))) .map(b -> createManageableBinding(b, nextVersionExchange)) .collect(Collectors.toList()); } return Collections.emptyList(); }
@Override public boolean isBound(String bindingKey, Map<String, Object> arguments) { if (bindingKey == null) { bindingKey = ""; } for(Binding b : _bindings) { if(b.getBindingKey().equals(bindingKey) && ((b.getArguments() == null || b.getArguments().isEmpty()) ? (arguments == null || arguments.isEmpty()) : b.getArguments().equals(arguments))) { return true; } } return false; }
@Override public boolean isBound(Map<String, Object> arguments, Queue<?> queue) { for(Binding b : _bindings) { if(queue.getName().equals(b.getDestination()) && ((b.getArguments() == null || b.getArguments().isEmpty()) ? (arguments == null || arguments.isEmpty()) : b.getArguments().equals(arguments))) { return true; } } return false; }
@Override public boolean isBound(String bindingKey, Queue<?> queue) { if (bindingKey == null) { bindingKey = ""; } for(Binding b : _bindings) { if(bindingKey.equals(b.getBindingKey()) && queue.getName().equals(b.getDestination())) { return true; } } return false; }
@Override @SuppressWarnings("unchecked") public Collection<LegacyConfiguredObject> getChildren(final String category) { if (BindingController.TYPE.equals(category)) { Collection<Binding> bindings = (Collection<Binding>) getAttribute("bindings"); if (bindings != null) { Map<String, LegacyConfiguredObject> queues = getNextVersionLegacyConfiguredObject().getParent(VirtualHostController.TYPE) .getChildren(QueueController.TYPE) .stream() .collect(Collectors.toMap(q -> (String) q.getAttribute( LegacyConfiguredObject.NAME), q -> q)); return bindings.stream() .map(b -> new BindingController.LegacyBinding(getManagementController(), getNextVersionLegacyConfiguredObject(), queues.get(b.getName()), b.getBindingKey(), b.getArguments())) .collect(Collectors.toList()); } return Collections.emptyList(); } return super.getChildren(category); } }
public void removeBinding(String queueName, String bindingKey) throws IOException, JMException { VirtualHost<?,?,?> virtualHost = _exchange.getParent(VirtualHost.class); Queue<?> queue = virtualHost.getChildByName(Queue.class, queueName); if (queue == null) { throw new OperationsException("No such queue \""+ queueName +"\""); } boolean deleted = false; for(Binding binding : _exchange.getBindings()) { if(queue.equals(binding.getParent(Queue.class)) && bindingKey.equals(binding.getName())) { binding.delete(); deleted = true; } } if (!deleted) { throw new OperationsException("No such binding \"" + bindingKey + "\" on queue \"" + queueName + "\""); } } }
private TabularData getHeadersBindings(Collection<? extends Binding> bindings) throws OpenDataException { TabularType bindinglistDataType = new TabularType("Exchange Bindings", "List of exchange bindings for " + getName(), HEADERS_BINDING_DATA_TYPE, HEADERS_TABULAR_UNIQUE_INDEX_ARRAY); TabularDataSupport bindingList = new TabularDataSupport(bindinglistDataType); int count = 1; for (Binding binding : bindings) { String queueName = binding.getParent(Queue.class).getName(); Map<String,Object> headerMappings = binding.getArguments(); final List<String> mappingList = new ArrayList<String>(); if(headerMappings != null) { for(Map.Entry<String,Object> entry : headerMappings.entrySet()) { mappingList.add(entry.getKey() + "=" + entry.getValue()); } } Object[] bindingItemValues = {count++, queueName, mappingList.toArray(new String[0])}; CompositeData bindingData = new CompositeDataSupport(HEADERS_BINDING_DATA_TYPE, HEADERS_COMPOSITE_ITEM_NAMES_ARRAY, bindingItemValues); bindingList.put(bindingData); } return bindingList; }
@Override public boolean isBound(Map<String, Object> arguments) { for(Binding b : _bindings) { if(((b.getArguments() == null || b.getArguments().isEmpty()) ? (arguments == null || arguments.isEmpty()) : b.getArguments().equals(arguments))) { return true; } } return false; }
@Override public boolean isBound(Queue<?> queue) { for(Binding b : _bindings) { if(queue.getName().equals(b.getDestination())) { return true; } } return false; }
private TabularData getNonHeadersBindings(Collection<? extends Binding> bindings) throws OpenDataException { TabularType bindinglistDataType = new TabularType("Exchange Bindings", "Exchange Bindings for " + getName(), BINDING_DATA_TYPE, TABULAR_UNIQUE_INDEX_ARRAY); TabularDataSupport bindingList = new TabularDataSupport(bindinglistDataType); Map<String, List<String>> bindingMap = new HashMap<String, List<String>>(); for (Binding binding : bindings) { String key = FANOUT_EXCHANGE_TYPE.equals(_exchange.getType()) ? "*" : binding.getName(); List<String> queueList = bindingMap.get(key); if(queueList == null) { queueList = new ArrayList<String>(); bindingMap.put(key, queueList); } queueList.add(binding.getParent(Queue.class).getName()); } for(Map.Entry<String, List<String>> entry : bindingMap.entrySet()) { Object[] bindingItemValues = {entry.getKey(), entry.getValue().toArray(new String[0])}; CompositeData bindingData = new CompositeDataSupport(BINDING_DATA_TYPE, COMPOSITE_ITEM_NAMES_ARRAY, bindingItemValues); bindingList.put(bindingData); } return bindingList; }
@Override public boolean isBound(String bindingKey) { if (bindingKey == null) { bindingKey = ""; } for(Binding b : _bindings) { if(bindingKey.equals(b.getBindingKey())) { return true; } } return false; }
@Override public boolean hasBinding(String bindingKey, final Queue<?> queue) { if (bindingKey == null) { bindingKey = ""; } for (Binding b : _bindings) { if (b.getBindingKey().equals(bindingKey) && b.getDestination().equals(queue.getName())) { return true; } } return false; }
private boolean hasDifferentBindings(final Exchange<?> exchange, final Queue queue, final Map<String, Map<String,Object>> bindings) { for(String binding: bindings.keySet()) { boolean theSameBindingFound = false; for (Binding publishingLink : exchange.getPublishingLinks(queue)) { if (publishingLink.getBindingKey().equals(binding)) { Map<String, Object> expectedArguments = bindings.get(binding); Map<String, Object> actualArguments = publishingLink.getArguments(); if (new HashMap<>(expectedArguments == null ? Collections.emptyMap() : expectedArguments).equals(new HashMap<>(actualArguments == null? Collections.emptyMap() : actualArguments))) { theSameBindingFound = true; } } } if (!theSameBindingFound) { return true; } } return false; }
@Override public Collection<Binding> getPublishingLinks(MessageDestination destination) { List<Binding> bindings = new ArrayList<>(); final String destinationName = destination.getName(); for(Binding b : _bindings) { if(b.getDestination().equals(destinationName)) { bindings.add(b); } } return bindings; }
private LegacyConfiguredObject createManageableBinding(final Binding binding, final LegacyConfiguredObject nextVersionExchange) { final LegacyConfiguredObject nextVersionVirtualHost = nextVersionExchange.getParent(VirtualHostController.TYPE); final LegacyConfiguredObject queue = findNextVersionQueue(binding.getDestination(), nextVersionVirtualHost); return new LegacyBinding(_managementController, nextVersionExchange, queue, binding.getBindingKey(), binding.getArguments()); }
b.getDestination(), b.getBindingKey())))) .forEach(b -> { params.put("bindingKey", b.getBindingKey()); params.put("destination", b.getDestination()); ManagementResponse r = exchange.invoke("unbind", params, true); if (Boolean.TRUE.equals(r.getBody()))
@Override public Collection<Binding> getDurableBindings() { List<Binding> durableBindings; if(isDurable()) { durableBindings = new ArrayList<>(); for (Binding b : _bindings) { MessageDestination destination = getAttainedMessageDestination(b.getDestination()); if(destination != null && destination.isDurable()) { durableBindings.add(b); } } } else { durableBindings = Collections.emptyList(); } return durableBindings; }
exchangeBindings.stream() .map(Binding.class::cast) .filter(i -> i.getDestination().equals(queueName)) .map(i -> new BindingController.LegacyBinding(getManagementController(), exchange, getNextVersionLegacyConfiguredObject(), i.getBindingKey(), i.getArguments())) .forEach(bindingObjects::add);
@Override @DoOnConfigThread public void destinationRemoved(@Param(name="destination") final MessageDestination destination) { Iterator<Binding> bindingIterator = _bindings.iterator(); while(bindingIterator.hasNext()) { Binding b = bindingIterator.next(); if(b.getDestination().equals(destination.getName())) { final Map<String, Object> bindArguments = UNBIND_ARGUMENTS_CREATOR.createMap(b.getBindingKey(), destination); getEventLogger().message(_logSubject, BindingMessages.DELETED(String.valueOf(bindArguments))); onUnbind(new BindingIdentifier(b.getBindingKey(), destination)); _bindings.remove(b); } } if(!autoDeleteIfNecessary()) { if (destination.isDurable() && isDurable()) { final Collection<Binding> durableBindings = getDurableBindings(); attributeSet(DURABLE_BINDINGS, durableBindings, durableBindings); } } }