Create a JIRA as well. Thanks. On Fri, May 19, 2017 at 2:21 AM Guillaume Nodet <gno...@apache.org> wrote:
> It seems to work well for me. > I'll run a full build and will create a PR. > > 2017-05-19 8:03 GMT+02:00 Guillaume Nodet <gno...@apache.org>: > > > I'm enhancing a layer in OSGi to support Artemis, and I'd like to avoid > > adding package dependencies. > > That's why I'm using the connection's classloader to load the needed > > class, as it's not available from the class which defines this code. > > > > To refine my question further: could the reply be typed as a text message > > rather than not typed ? This would allow retrieving the json body as a > > string. > > Basically, I'm proposing the following patch: > > > > *--- > > > a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java* > > > > *+++ > > > b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java* > > > > @@ -370,6 +370,7 @@ public class ManagementServiceImpl implements > > ManagementService { > > > > message = message.toCore(); > > > > // a reply message is sent with the result stored in the message > > body. > > > > CoreMessage reply = new CoreMessage(storageManager.generateID(), > > 512); > > > > + reply.setType(Message.TEXT_TYPE); > > > > reply.setReplyTo(message.getReplyTo()); > > > > > > > > String resourceName = message.getStringProperty( > > ManagementHelper.HDR_RESOURCE_NAME); > > > > > > 2017-05-19 3:10 GMT+02:00 Clebert Suconic <clebert.suco...@gmail.com>: > > > >> @Tim Bain: yes.. Artemis from what I see on the class Names (I also > >> spoke to him gnodet on the IRC channel earlier today). > >> > >> @gnodet: I am not understanding why you would need to use reflection. > >> You can just simply use JMSManagementHelper directly. they are all > >> static methods... > >> > >> > >> This example here, part of distribution under > >> examples/features/standard/management shows how it was intended to be > >> used: > >> > >> > >> https://github.com/apache/activemq-artemis/blob/master/examp > >> les/features/standard/management/src/main/java/org/apache/ac > >> tivemq/artemis/jms/example/ManagementExample.java > >> > >> > >> > >> Maybe I"m misunderstanding your question? > >> > >> On Thu, May 18, 2017 at 6:23 PM, Guillaume Nodet <gno...@apache.org> > >> wrote: > >> > I'm trying do perform management operation with pure JMS api. > >> > To retrieve the list of queues, I'm currently using the following > code: > >> > > >> > QueueSession session = ((QueueConnection) > >> > connection).createQueueSession(false, Session.AUTO_ACKNOWLEDGE); > >> > Queue managementQueue = session.createQueue("activemq.management"); > >> > QueueRequestor requestor = new QueueRequestor(session, > managementQueue); > >> > connection.start(); > >> > TextMessage m = session.createTextMessage(); > >> > m.setStringProperty("_AMQ_ResourceName", "broker"); > >> > m.setStringProperty("_AMQ_OperationName", "getQueueNames"); > >> > m.setText("[\"" + routing + "\"]"); > >> > Message reply = requestor.request(m); > >> > Class<?> mgmtHelperClass = > >> > connection.getClass().getClassLoader().loadClass("org.apache > >> .activemq.artemis.api.jms.management.JMSManagementHelper"); > >> > Method getResultsMethod = mgmtHelperClass.getMethod("getResults", > >> > Message.class); > >> > Object[] results = (Object[]) getResultsMethod.invoke(null, reply); > >> > List<String> names = new ArrayList<>(); > >> > for (Object o : (Object[]) (results[0])) { > >> > names.add(o.toString()); > >> > } > >> > return names; > >> > > >> > > >> > It works, but I think I should not have to use reflection to access > the > >> > result message, hence the use of reflection to access the > >> > JMSManagementHelper methods. > >> > It seems to me the reply should be of type TextMessage, but it's > >> currently > >> > untyped, so I can't use TextMessage#getText to retrieve the json > result, > >> > and I can't find a way to retrieve it another way. > >> > Do I miss anything ? > >> > > >> > -- > >> > ------------------------ > >> > Guillaume Nodet > >> > >> > >> > >> -- > >> Clebert Suconic > >> > > > > > > > > -- > > ------------------------ > > Guillaume Nodet > > > > > > > -- > ------------------------ > Guillaume Nodet > -- Clebert Suconic