@Override public String getFilter() { checkStarted(); clearIO(); try { Filter filter = queue.getFilter(); return filter != null ? filter.getFilterString().toString() : null; } finally { blockOnIO(); } }
private boolean checkBindingExists(DestinationAction command, String filter) { String bindingKey = command.getName(); if (isJms(command)) { if (isTopic(command)) { bindingKey = "jms.topic." + bindingKey; } else { bindingKey = "jms.queue." + bindingKey; } } Map<SimpleString, Binding> bindings = server.getPostOffice().getAllBindings(); System.out.println("bindings: " + bindings); Binding binding = bindings.get(new SimpleString(bindingKey)); System.out.println("got binding: " + binding); if (binding == null) { System.out.println("No bindings for " + bindingKey); return false; } if (filter != null) { Filter bindingFilter = binding.getFilter(); assertNotNull(bindingFilter); assertEquals(filter, bindingFilter.getFilterString().toString()); } return true; }
@Override public void initQueues( Map<Long, QueueBindingInfo> queueBindingInfosMap, List<QueueBindingInfo> queueBindingInfos) throws Exception { int duplicateID = 0; for (QueueBindingInfo queueBindingInfo : queueBindingInfos) { queueBindingInfosMap.put(queueBindingInfo.getId(), queueBindingInfo); Filter filter = FilterImpl.createFilter(queueBindingInfo.getFilterString()); boolean isTopicIdentification = filter != null && filter.getFilterString() != null && filter .getFilterString() .toString() .equals(ActiveMQServerImpl.GENERIC_IGNORED_FILTER); if (postOffice.getBinding(queueBindingInfo.getQueueName()) != null) { if (isTopicIdentification) { long tx = storageManager.generateID(); storageManager.deleteQueueBinding(tx, queueBindingInfo.getId()); storageManager.commitBindings(tx); continue; } else { SimpleString newName = queueBindingInfo.getQueueName().concat("-" + (duplicateID++)); ActiveMQServerLogger.LOGGER.queueDuplicatedRenaming( queueBindingInfo.getQueueName().toString(), newName.toString()); queueBindingInfo.replaceQueueName(newName); } } PageSubscription subscription = null; if (!isTopicIdentification) { subscription = pagingManager .getPageStore(queueBindingInfo.getAddress()) .getCursorProvider() .createSubscription(queueBindingInfo.getId(), filter, true); } Queue queue = queueFactory.createQueue( queueBindingInfo.getId(), queueBindingInfo.getAddress(), queueBindingInfo.getQueueName(), filter, subscription, queueBindingInfo.getUser(), true, false, queueBindingInfo.isAutoCreated()); if (queueBindingInfo.isAutoCreated()) { queue.setConsumersRefCount( new AutoCreatedQueueManagerImpl( ((PostOfficeImpl) postOffice).getServer().getJMSQueueDeleter(), queueBindingInfo.getQueueName())); } Binding binding = new LocalQueueBinding(queueBindingInfo.getAddress(), queue, nodeManager.getNodeId()); queues.put(queueBindingInfo.getId(), queue); postOffice.addBinding(binding); managementService.registerAddress(queueBindingInfo.getAddress()); managementService.registerQueue(queue, queueBindingInfo.getAddress(), storageManager); } }