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(); }
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 @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 + "\""); } } }