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