Example usage for javax.jms MessageEOFException MessageEOFException

List of usage examples for javax.jms MessageEOFException MessageEOFException

Introduction

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

Prototype

public MessageEOFException(String reason) 

Source Link

Document

Constructs a MessageEOFException with the specified reason.

Usage

From source file:org.skyscreamer.nevado.jms.message.NevadoStreamMessage.java

/**
 * Reads a <code>double</code> from the stream message.
 *
 * @return a <code>double</code> value from the stream message
 * @throws JMSException/*  www  .j  a v  a 2  s.c  o  m*/
 *             if the JMS provider fails to read the message due to some
 *             internal error.
 * @throws MessageEOFException
 *             if unexpected end of message stream has been reached.
 * @throws MessageFormatException
 *             if this type conversion is invalid.
 * @throws MessageNotReadableException
 *             if the message is in write-only mode.
 */

public double readDouble() throws JMSException {
    initializeReading();
    try {

        this.dataIn.mark(65);
        int type = this.dataIn.read();
        if (type == -1) {
            throw new MessageEOFException("reached end of data");
        }
        if (type == MarshallingSupport.DOUBLE_TYPE) {
            return this.dataIn.readDouble();
        }
        if (type == MarshallingSupport.FLOAT_TYPE) {
            return this.dataIn.readFloat();
        }
        if (type == MarshallingSupport.STRING_TYPE) {
            return Double.valueOf(this.dataIn.readUTF()).doubleValue();
        }
        if (type == MarshallingSupport.NULL) {
            this.dataIn.reset();
            throw new NullPointerException("Cannot convert NULL value to double.");
        } else {
            this.dataIn.reset();
            throw new MessageFormatException(" not a double type");
        }
    } catch (NumberFormatException mfe) {
        try {
            this.dataIn.reset();
        } catch (IOException ioe) {
            JMSException jmsEx = new MessageFormatException(ioe.getMessage());
            jmsEx.setLinkedException(ioe);
            throw jmsEx;
        }
        throw mfe;

    } catch (EOFException e) {
        String exMessage = "Reached premature EOF: " + e.getMessage();
        _log.error(exMessage, e);
        throw new JMSException(exMessage);
    } catch (IOException e) {
        String exMessage = "Could not read boolean: " + e.getMessage();
        _log.error(exMessage, e);
        throw new JMSException(exMessage);
    }
}

From source file:org.skyscreamer.nevado.jms.message.NevadoStreamMessage.java

/**
 * Reads a <CODE>String</CODE> from the stream message.
 *
 * @return a Unicode string from the stream message
 * @throws JMSException/*w  w w.java2s.  co m*/
 *             if the JMS provider fails to read the message due to some
 *             internal error.
 * @throws MessageEOFException
 *             if unexpected end of message stream has been reached.
 * @throws MessageFormatException
 *             if this type conversion is invalid.
 * @throws MessageNotReadableException
 *             if the message is in write-only mode.
 */

public String readString() throws JMSException {
    initializeReading();
    try {

        this.dataIn.mark(65);
        int type = this.dataIn.read();
        if (type == -1) {
            throw new MessageEOFException("reached end of data");
        }
        if (type == MarshallingSupport.NULL) {
            return null;
        }
        if (type == MarshallingSupport.BIG_STRING_TYPE) {
            return MarshallingSupport.readUTF8(dataIn);
        }
        if (type == MarshallingSupport.STRING_TYPE) {
            return this.dataIn.readUTF();
        }
        if (type == MarshallingSupport.LONG_TYPE) {
            return new Long(this.dataIn.readLong()).toString();
        }
        if (type == MarshallingSupport.INTEGER_TYPE) {
            return new Integer(this.dataIn.readInt()).toString();
        }
        if (type == MarshallingSupport.SHORT_TYPE) {
            return new Short(this.dataIn.readShort()).toString();
        }
        if (type == MarshallingSupport.BYTE_TYPE) {
            return new Byte(this.dataIn.readByte()).toString();
        }
        if (type == MarshallingSupport.FLOAT_TYPE) {
            return new Float(this.dataIn.readFloat()).toString();
        }
        if (type == MarshallingSupport.DOUBLE_TYPE) {
            return new Double(this.dataIn.readDouble()).toString();
        }
        if (type == MarshallingSupport.BOOLEAN_TYPE) {
            return (this.dataIn.readBoolean() ? Boolean.TRUE : Boolean.FALSE).toString();
        }
        if (type == MarshallingSupport.CHAR_TYPE) {
            return new Character(this.dataIn.readChar()).toString();
        } else {
            this.dataIn.reset();
            throw new MessageFormatException(" not a String type");
        }
    } catch (NumberFormatException mfe) {
        try {
            this.dataIn.reset();
        } catch (IOException ioe) {
            JMSException jmsEx = new MessageFormatException(ioe.getMessage());
            jmsEx.setLinkedException(ioe);
            throw jmsEx;
        }
        throw mfe;

    } catch (EOFException e) {
        String exMessage = "Reached premature EOF: " + e.getMessage();
        _log.error(exMessage, e);
        throw new JMSException(exMessage);
    } catch (IOException e) {
        String exMessage = "Could not read boolean: " + e.getMessage();
        _log.error(exMessage, e);
        throw new JMSException(exMessage);
    }
}

From source file:org.skyscreamer.nevado.jms.message.NevadoStreamMessage.java

/**
 * Reads a byte array field from the stream message into the specified
 * <CODE>byte[]</CODE> object (the read buffer). <p/>
 * <P>//from   w ww .  j av a2s . c o m
 * To read the field value, <CODE>readBytes</CODE> should be successively
 * called until it returns a value less than the length of the read buffer.
 * The value of the bytes in the buffer following the last byte read is
 * undefined. <p/>
 * <P>
 * If <CODE>readBytes</CODE> returns a value equal to the length of the
 * buffer, a subsequent <CODE>readBytes</CODE> call must be made. If there
 * are no more bytes to be read, this call returns -1. <p/>
 * <P>
 * If the byte array field value is null, <CODE>readBytes</CODE> returns
 * -1. <p/>
 * <P>
 * If the byte array field value is empty, <CODE>readBytes</CODE> returns
 * 0. <p/>
 * <P>
 * Once the first <CODE>readBytes</CODE> call on a <CODE>byte[]</CODE>
 * field value has been made, the full value of the field must be read
 * before it is valid to read the next field. An attempt to read the next
 * field before that has been done will throw a <CODE>MessageFormatException</CODE>.
 * <p/>
 * <P>
 * To read the byte field value into a new <CODE>byte[]</CODE> object, use
 * the <CODE>readObject</CODE> method.
 *
 * @param value
 *            the buffer into which the data is read
 * @return the total number of bytes read into the buffer, or -1 if there is
 *         no more data because the end of the byte field has been reached
 * @throws JMSException
 *             if the JMS provider fails to read the message due to some
 *             internal error.
 * @throws MessageEOFException
 *             if unexpected end of message stream has been reached.
 * @throws MessageFormatException
 *             if this type conversion is invalid.
 * @throws MessageNotReadableException
 *             if the message is in write-only mode.
 * @see #readObject()
 */

public int readBytes(byte[] value) throws JMSException {

    initializeReading();
    try {
        if (value == null) {
            throw new NullPointerException();
        }

        if (remainingBytes == -1) {
            this.dataIn.mark(value.length + 1);
            int type = this.dataIn.read();
            if (type == -1) {
                throw new MessageEOFException("reached end of data");
            }
            if (type != MarshallingSupport.BYTE_ARRAY_TYPE) {
                throw new MessageFormatException("Not a byte array");
            }
            remainingBytes = this.dataIn.readInt();
        } else if (remainingBytes == 0) {
            remainingBytes = -1;
            return -1;
        }

        if (value.length <= remainingBytes) {
            // small buffer
            remainingBytes -= value.length;
            this.dataIn.readFully(value);
            return value.length;
        } else {
            // big buffer
            int rc = this.dataIn.read(value, 0, remainingBytes);
            remainingBytes = 0;
            return rc;
        }

    } catch (EOFException e) {
        JMSException jmsEx = new MessageEOFException(e.getMessage());
        jmsEx.setLinkedException(e);
        throw jmsEx;
    } catch (IOException e) {
        JMSException jmsEx = new MessageFormatException(e.getMessage());
        jmsEx.setLinkedException(e);
        throw jmsEx;
    }
}

From source file:org.skyscreamer.nevado.jms.message.NevadoStreamMessage.java

/**
 * Reads an object from the stream message. <p/>
 * <P>/*from w  w w. java  2  s  .c  om*/
 * This method can be used to return, in objectified format, an object in
 * the Java programming language ("Java object") that has been written to
 * the stream with the equivalent <CODE>writeObject</CODE> method call, or
 * its equivalent primitive <CODE>write<I>type</I></CODE> method. <p/>
 * <P>
 * Note that byte values are returned as <CODE>byte[]</CODE>, not <CODE>Byte[]</CODE>.
 * <p/>
 * <P>
 * An attempt to call <CODE>readObject</CODE> to read a byte field value
 * into a new <CODE>byte[]</CODE> object before the full value of the byte
 * field has been read will throw a <CODE>MessageFormatException</CODE>.
 *
 * @return a Java object from the stream message, in objectified format (for
 *         example, if the object was written as an <CODE>int</CODE>, an
 *         <CODE>Integer</CODE> is returned)
 * @throws JMSException
 *             if the JMS provider fails to read the message due to some
 *             internal error.
 * @throws MessageEOFException
 *             if unexpected end of message stream has been reached.
 * @throws MessageFormatException
 *             if this type conversion is invalid.
 * @throws MessageNotReadableException
 *             if the message is in write-only mode.
 * @see #readBytes(byte[] value)
 */

public Object readObject() throws JMSException {
    initializeReading();
    try {
        this.dataIn.mark(65);
        int type = this.dataIn.read();
        if (type == -1) {
            throw new MessageEOFException("reached end of data");
        }
        if (type == MarshallingSupport.NULL) {
            return null;
        }
        if (type == MarshallingSupport.BIG_STRING_TYPE) {
            return MarshallingSupport.readUTF8(dataIn);
        }
        if (type == MarshallingSupport.STRING_TYPE) {
            return this.dataIn.readUTF();
        }
        if (type == MarshallingSupport.LONG_TYPE) {
            return new Long(this.dataIn.readLong());
        }
        if (type == MarshallingSupport.INTEGER_TYPE) {
            return new Integer(this.dataIn.readInt());
        }
        if (type == MarshallingSupport.SHORT_TYPE) {
            return new Short(this.dataIn.readShort());
        }
        if (type == MarshallingSupport.BYTE_TYPE) {
            return new Byte(this.dataIn.readByte());
        }
        if (type == MarshallingSupport.FLOAT_TYPE) {
            return new Float(this.dataIn.readFloat());
        }
        if (type == MarshallingSupport.DOUBLE_TYPE) {
            return new Double(this.dataIn.readDouble());
        }
        if (type == MarshallingSupport.BOOLEAN_TYPE) {
            return this.dataIn.readBoolean() ? Boolean.TRUE : Boolean.FALSE;
        }
        if (type == MarshallingSupport.CHAR_TYPE) {
            return new Character(this.dataIn.readChar());
        }
        if (type == MarshallingSupport.BYTE_ARRAY_TYPE) {
            int len = this.dataIn.readInt();
            byte[] value = new byte[len];
            this.dataIn.readFully(value);
            return value;
        } else {
            this.dataIn.reset();
            throw new MessageFormatException("unknown type");
        }
    } catch (NumberFormatException mfe) {
        try {
            this.dataIn.reset();
        } catch (IOException ioe) {
            JMSException jmsEx = new MessageFormatException(ioe.getMessage());
            jmsEx.setLinkedException(ioe);
            throw jmsEx;
        }
        throw mfe;

    } catch (EOFException e) {
        JMSException jmsEx = new MessageEOFException(e.getMessage());
        jmsEx.setLinkedException(e);
        throw jmsEx;
    } catch (IOException e) {
        JMSException jmsEx = new MessageFormatException(e.getMessage());
        jmsEx.setLinkedException(e);
        throw jmsEx;
    }
}

From source file:org.wso2.andes.server.information.management.QueueManagementInformationMBean.java

/**
 * Check that there is at least a certain number of bytes available to read
 *
 * @param length the number of bytes/*from  www .j a  va2  s  .com*/
 * @throws javax.jms.MessageEOFException if there are less than len bytes available to read
 */
private void checkAvailable(int length, ByteBuffer byteBuffer) throws MessageEOFException {
    if (byteBuffer.remaining() < length) {
        throw new MessageEOFException("Unable to read " + length + " bytes");
    }
}