[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] What happened to the "receive" method?

Michele Laghi wrote:
Hi Chris,
in fact the method receive is a new method which was not supported
before. It is now available but currently still only in the svn sources.
The API on the homepage is already basing on these sources. If you are
currently using a release please check out the svn.


chris lau wrote:

I was just looking through the Java Client API and tried to use the method "receive" located at:
org.xmlBlaster.Client.I_XmlBlasterAccess ......
... Can I do this with the Get
Yes, this is the code from XmlBlasterAccess.java which does it with the get() call, it works from any programming language using get().
In the comments you see the oid to be used like "__cmd:topic/hello/?historyQueueEntries":

public MsgUnit[] receive(String oid, int maxEntries, long timeout, boolean consumable) throws XmlBlasterException {
if (oid == null || oid.length() == 0)
throw new XmlBlasterException(glob, ErrorCode.INTERNAL_ILLEGALARGUMENT, ME, "Please supply a valid oid to receive()");

ContextNode node = ContextNode.valueOf(oid);
if (node.isOfClass(ContextNode.TOPIC_MARKER_TAG))
oid = "__cmd:"+oid+"/?historyQueueEntries"; // "__cmd:topic/hello/?historyQueueEntries"
else if (node.isOfClass(ContextNode.SUBJECT_MARKER_TAG) && node.getChild(ContextNode.SESSION_MARKER_TAG, null) != null)
oid = "__cmd:"+oid+"/?callbackQueueEntries"; // "__cmd:client/joe/session/1/?callbackQueueEntries";
else if (node.isOfClass(ContextNode.SUBJECT_MARKER_TAG))
oid = "__cmd:"+oid+"/?subjectQueueEntries"; // "__cmd:client/joe/?subjectQueueEntries"
GetKey getKey = new GetKey(glob, oid);
String qos = "<qos>" +
"<querySpec type='QueueQuery'>" +
"</querySpec>" +
GetQos getQos = new GetQos(glob, glob.getQueryQosFactory().readObject(qos));
MsgUnit[] msgs = get(getKey, getQos);
if (log.isLoggable(Level.FINEST)) log.finest("Got " + msgs.length + " reply :\n" + ((msgs.length>0)?msgs[0].toXml():""));
return msgs;