Example usage for javax.jms TextMessage getIntProperty

List of usage examples for javax.jms TextMessage getIntProperty

Introduction

In this page you can find the example usage for javax.jms TextMessage getIntProperty.

Prototype


int getIntProperty(String name) throws JMSException;

Source Link

Document

Returns the value of the int property with the specified name.

Usage

From source file:org.apache.qpid.systest.management.jmx.QueueManagementTest.java

private void assertMessageIndicesOn(Destination queue, int... expectedIndices) throws Exception {
    MessageConsumer consumer = _session.createConsumer(queue);

    for (int i : expectedIndices) {
        TextMessage message = (TextMessage) consumer.receive(1000);
        assertNotNull("Expected message with index " + i, message);
        assertEquals("Expected message with index " + i, i, message.getIntProperty(INDEX));
        assertEquals("Expected message content", getContentForMessageNumber(i), message.getText());
    }//from   w  w w. j av a  2 s  .  c  om

    assertNull("Unexpected message encountered", consumer.receive(1000));
}

From source file:org.openanzo.combus.CombusConnection.java

/**
 * Send a request to a destination and wait for a response
 * /*from   w w w .  j  a v  a 2  s.  c o m*/
 * @param context
 *            context for this operational call
 * @param destinationName
 *            destination queue for this request
 * @param request
 *            request message
 * @param timeout
 *            timeout for waiting for a response
 * @param messageHandler
 *            the handler of multiple messages
 * @throws AnzoException
 *             if there was an exception sending request, or a timeout waiting for a response
 */
public void requestMultipleResponse(IOperationContext context, String destinationName, Message request,
        long timeout, IMessageHandler messageHandler) throws AnzoException {
    Destination destination = null;
    if (context.getAttribute(OPTIONS.DATASOURCE) != null) {
        URI datasourceUri = (URI) context.getAttribute(OPTIONS.DATASOURCE);
        Queue defaultDestination = (Queue) destinations.get(destinationName);
        if (datasourceUri.toString().equals("http://openanzo.org/datasource/systemDatasource")) {
            destination = defaultDestination;
        } else {
            String queueNamePrefix = UriGenerator.generateEncapsulatedString("", datasourceUri.toString())
                    + "/";
            try {
                String[] parts = StringUtils.split(defaultDestination.getQueueName(), '/');
                String queue = "services/" + queueNamePrefix + parts[1];
                destination = destinations.get(queue);
                if (destination == null) {
                    destination = session.createQueue(queue);
                    destinations.put(queue, destination);
                }
            } catch (JMSException e) {
                throw new AnzoException(ExceptionConstants.COMBUS.NO_SUCH_DESTINATION, destinationName);
            }
        }
    } else {
        destination = destinations.get(destinationName);
        if (destination == null) {
            throw new AnzoException(ExceptionConstants.COMBUS.NO_SUCH_DESTINATION, destinationName);
        }
    }
    String correlationId = context.getOperationId();
    if (correlationId == null) {
        correlationId = UUID.randomUUID().toString();
    }

    try {
        request.setJMSCorrelationID(correlationId);
        request.setJMSReplyTo(tempQueue);
        request.setIntProperty(SerializationConstants.protocolVersion, Constants.VERSION);
        if (context.getOperationPrincipal() != null
                && !context.getOperationPrincipal().getName().equals(this.userName)) {
            request.setStringProperty(SerializationConstants.runAsUser,
                    context.getOperationPrincipal().getName());
        }
        if (context.getAttribute(OPTIONS.PRIORITY) != null) {
            Integer priority = (Integer) context.getAttribute(OPTIONS.PRIORITY);
            request.setJMSPriority(priority);
            messageProducer.setPriority(priority);
        } else {
            messageProducer.setPriority(4);
        }
        if (context.getAttribute(OPTIONS.SKIPCACHE) != null) {
            request.setBooleanProperty(OPTIONS.SKIPCACHE,
                    context.getAttribute(OPTIONS.SKIPCACHE, Boolean.class));
        }
        if (context.getAttribute(OPTIONS.INCLUDEMETADATAGRAPHS) != null) {
            request.setBooleanProperty(OPTIONS.INCLUDEMETADATAGRAPHS,
                    context.getAttribute(OPTIONS.INCLUDEMETADATAGRAPHS, Boolean.class));
        }
        if (log.isTraceEnabled()) {
            log.trace(LogUtils.COMBUS_MARKER,
                    MessageUtils.prettyPrint(request, "Sending Request: (destination=" + destination + ")"));
        }
        messageProducer.send(destination, request);
    } catch (JMSException jmsex) {
        performDisconnect(true);
        throw new AnzoException(ExceptionConstants.COMBUS.COULD_NOT_PUBLISH, jmsex);
    }
    lock.lock();
    try {
        long start = System.currentTimeMillis();
        boolean done = false;
        int seq = 0;
        while (!done) {
            Collection<TextMessage> messageSet = correlationIdToMessage.remove(correlationId);
            while (messageSet == null) {
                if (timeout <= 0) {
                    try {
                        newMessage.await(2, TimeUnit.SECONDS);
                    } catch (InterruptedException ie) {
                        throw new AnzoException(ExceptionConstants.COMBUS.INTERRUPTED, correlationId);
                    }
                    if (closed || closing) {
                        throw new AnzoException(ExceptionConstants.COMBUS.INTERRUPTED, correlationId);
                    }
                    messageSet = correlationIdToMessage.remove(correlationId);
                } else {
                    try {
                        newMessage.await(timeout, TimeUnit.MILLISECONDS);
                    } catch (InterruptedException ie) {
                        throw new AnzoException(ExceptionConstants.COMBUS.INTERRUPTED, correlationId);
                    }
                    if (closed || closing) {
                        throw new AnzoException(ExceptionConstants.COMBUS.INTERRUPTED, correlationId);
                    }
                    messageSet = correlationIdToMessage.remove(correlationId);
                    if (!connected) {
                        log.error(LogUtils.COMBUS_MARKER, Messages.formatString(
                                ExceptionConstants.COMBUS.ERROR_PROCESSING_MESSGE, "connection closed"));
                        throw new AnzoException(ExceptionConstants.COMBUS.JMS_NOT_CONNECTED, correlationId);
                    }
                    if (messageSet == null
                            && ((timeout > -1) && ((System.currentTimeMillis() - start) > timeout))) {
                        throw new AnzoException(ExceptionConstants.COMBUS.NO_SERVER_RESPONSE, correlationId);
                    }
                }

            }
            try {
                for (TextMessage message : messageSet) {
                    if (log.isTraceEnabled()) {
                        log.trace(LogUtils.COMBUS_MARKER,
                                MessageUtils.prettyPrint(message, "Recieved Response:"));
                    }
                    if (message.propertyExists("done")) {
                        done = message.getBooleanProperty("done");
                    } else {
                        done = true;
                    }
                    if (message.propertyExists("sequence")) {
                        int sequence = message.getIntProperty("sequence");
                        if (sequence != seq) {
                            throw new AnzoException(ExceptionConstants.COMBUS.NO_SERVER_RESPONSE,
                                    correlationId);
                        } else {
                            seq++;
                        }
                    }

                    int totalSize = 0;
                    if (message.propertyExists(SerializationConstants.totalSolutions)) {
                        totalSize = message.getIntProperty(SerializationConstants.totalSolutions);
                    }
                    if (message.getBooleanProperty(SerializationConstants.operationFailed)) {
                        long errorCodes = message.propertyExists(SerializationConstants.errorTags)
                                ? message.getLongProperty(SerializationConstants.errorCode)
                                : ExceptionConstants.COMBUS.JMS_SERVICE_EXCEPTION;

                        // if available, use enumerated args, since these can be reconstruct an AnzoException correctly.
                        List<String> args = new ArrayList<String>();
                        for (int i = 0; true; i++) {
                            String errorArg = message
                                    .getStringProperty(SerializationConstants.errorMessageArg + i);
                            if (errorArg == null) {
                                break;
                            }
                            args.add(errorArg);
                        }

                        // NOTE: This doesn't really make any sense, but it was here before and it's better to be too verbose than not verbose enough
                        // when it comes to error messages, so it stays.  For now at least. -jpbetz
                        if (args.isEmpty()) {
                            args.add(message.getText());
                        }
                        throw new AnzoException(errorCodes, args.toArray(new String[0]));
                    } else {
                        messageHandler.handleMessage(message, seq, done, totalSize);
                    }
                }
            } catch (JMSException jmsex) {
                log.debug(LogUtils.COMBUS_MARKER, Messages.formatString(
                        ExceptionConstants.COMBUS.ERROR_PROCESSING_MESSGE, "request multiple response"), jmsex);
            }
        }
    } finally {
        lock.unlock();
    }
}