@Override public JsonObjectBuilder toJson(AddressInfo address) { if (address == null) { return null; } JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("id", toString(address.getId())).add("name", toString(address.getName())).add("routingTypes", toString(address.getRoutingTypes())); try { obj.add("queueCount", toString(server.bindingQuery(address.getName()).getQueueNames().size())); return obj; } catch (Exception e) { obj.add("queueCount", 0); } return obj; }
@Override public Object getField(AddressInfo address, String fieldName) { if (address == null) { return null; } switch (fieldName) { case "id": return address.getId(); case "name": return address.getName(); case "routingTypes": return address.getRoutingTypes(); case "queueCount": try { return server.bindingQuery(address.getName()).getQueueNames().size(); } catch (Exception e) { return 0; } default: throw new IllegalArgumentException("Unsupported field, " + fieldName); } }
@Override public void removeAddressInfo(final SimpleString address, final SecurityAuth auth, boolean force) throws Exception { if (auth != null) { securityStore.check(address, CheckType.DELETE_ADDRESS, auth); } AddressInfo addressInfo = getAddressInfo(address); if (postOffice.removeAddressInfo(address, force) == null) { throw ActiveMQMessageBundle.BUNDLE.addressDoesNotExist(address); } long txID = storageManager.generateID(); storageManager.deleteAddressBinding(txID, addressInfo.getId()); storageManager.commitBindings(txID); pagingManager.deletePageStore(address); }
@Override public boolean test(AddressInfo address) { if (f == null) return true; try { switch (f) { case ID: return matches(address.getId()); case NAME: return matches(address.getName()); case ROUTING_TYPES: return matchAny(address.getRoutingTypes()); case PRODUCER_ID: return matches("TODO"); case QUEUE_COUNT: return matches(server.bindingQuery(address.getName()).getQueueNames().size()); } } catch (Exception e) { return false; } return true; }
storageManager.deleteAddressBinding(txID, info.getId()); storageManager.addAddressBinding(txID, info); storageManager.commitBindings(txID);
@Override public AddressQueryResult addressQuery(SimpleString name) throws Exception { if (name == null) { throw ActiveMQMessageBundle.BUNDLE.queueNameIsNull(); } SimpleString realName = CompositeAddress.extractAddressName(name); AddressSettings addressSettings = getAddressSettingsRepository().getMatch(realName.toString()); boolean autoCreateAddresses = addressSettings.isAutoCreateAddresses(); boolean defaultPurgeOnNoConsumers = addressSettings.isDefaultPurgeOnNoConsumers(); int defaultMaxConsumers = addressSettings.getDefaultMaxConsumers(); AddressInfo addressInfo = postOffice.getAddressInfo(realName); AddressQueryResult response; if (addressInfo != null) { response = new AddressQueryResult(addressInfo.getName(), addressInfo.getRoutingTypes(), addressInfo.getId(), addressInfo.isAutoCreated(), true, autoCreateAddresses, defaultPurgeOnNoConsumers, defaultMaxConsumers); } else { response = new AddressQueryResult(realName, null, -1, false, false, autoCreateAddresses, defaultPurgeOnNoConsumers, defaultMaxConsumers); } return response; }