private void handleReadAttribute(OperationContext context, ModelNode operation) { if (ignoreOperationIfServerNotActive(context, operation)) { return; } final AddressControl addressControl = getAddressControl(context, operation); if (addressControl == null) { PathAddress address = PathAddress.pathAddress(operation.require(OP_ADDR)); throw ControllerLogger.ROOT_LOGGER.managementResourceNotFound(address); } final String name = operation.require(ModelDescriptionConstants.NAME).asString(); try { if (ROLES_ATTR_NAME.equals(name)) { String json = addressControl.getRolesAsJSON(); reportRoles(context, json); } else if (QUEUE_NAMES.equals(name)) { String[] queues = addressControl.getQueueNames(); reportListOfStrings(context, queues); } else if (NUMBER_OF_BYTES_PER_PAGE.equals(name)) { long l = addressControl.getNumberOfBytesPerPage(); context.getResult().set(l); } else if (NUMBER_OF_PAGES.equals(name)) { int i = addressControl.getNumberOfPages(); context.getResult().set(i); } else if (BINDING_NAMES.equals(name)) { String[] bindings = addressControl.getBindingNames(); reportListOfStrings(context, bindings); } else { // Bug throw MessagingLogger.ROOT_LOGGER.unsupportedAttribute(name); } } catch (RuntimeException e) { throw e; } catch (Exception e) { context.getFailureDescription().set(e.getLocalizedMessage()); } context.stepCompleted(); }
@Test public void testGetNumberOfPages() throws Exception { session.close(); server.stop(); server.getConfiguration().setPersistenceEnabled(true); SimpleString address = RandomUtil.randomSimpleString(); AddressSettings addressSettings = new AddressSettings(); addressSettings.setPageSizeBytes(1024); addressSettings.setMaxSizeBytes(10 * 1024); final int NUMBER_MESSAGES_BEFORE_PAGING = 5; server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings); server.start(); ServerLocator locator2 = HornetQClient.createServerLocatorWithoutHA( new TransportConfiguration(UnitTestCase.INVM_CONNECTOR_FACTORY)); addServerLocator(locator2); ClientSessionFactory sf2 = createSessionFactory(locator2); session = sf2.createSession(false, true, false); session.start(); session.createQueue(address, address, true); QueueImpl serverQueue = (QueueImpl) server.locateQueue(address); ClientProducer producer = session.createProducer(address); for (int i = 0; i < NUMBER_MESSAGES_BEFORE_PAGING; i++) { ClientMessage msg = session.createMessage(true); msg.getBodyBuffer().writeBytes(new byte[512]); producer.send(msg); } session.commit(); AddressControl addressControl = createManagementControl(address); Assert.assertEquals(0, addressControl.getNumberOfPages()); ClientMessage msg = session.createMessage(true); msg.getBodyBuffer().writeBytes(new byte[512]); producer.send(msg); session.commit(); Assert.assertEquals(1, addressControl.getNumberOfPages()); msg = session.createMessage(true); msg.getBodyBuffer().writeBytes(new byte[512]); producer.send(msg); session.commit(); Assert.assertEquals(1, addressControl.getNumberOfPages()); msg = session.createMessage(true); msg.getBodyBuffer().writeBytes(new byte[512]); producer.send(msg); session.commit(); Assert.assertEquals("# of pages is 2", 2, addressControl.getNumberOfPages()); System.out.println("Address size=" + addressControl.getAddressSize()); Assert.assertEquals( serverQueue.getPageSubscription().getPagingStore().getAddressSize(), addressControl.getAddressSize()); }