/* * Copyright 2002-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.flex.messaging.jms; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; /** * @author Mark Fisher */ public class StubMessage implements Message { private volatile String messageId; private volatile String correlationId; private volatile int priority = DEFAULT_PRIORITY; private volatile int deliveryMode = DEFAULT_DELIVERY_MODE; private volatile long expiration; private volatile long timestamp; private volatile boolean redelivered; private volatile Destination destination; private volatile Destination replyTo; private volatile String type; private final Map<String, Object> properties = new HashMap<String, Object>(); /** * Subclasses should implement this if needed. */ public void acknowledge() throws JMSException { throw new UnsupportedOperationException(); } /** * Subclasses should implement this if needed. */ public void clearBody() throws JMSException { throw new UnsupportedOperationException(); } public void clearProperties() throws JMSException { this.properties.clear(); } public boolean getBooleanProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && Boolean.class.isAssignableFrom(value.getClass())) { return ((Boolean) value).booleanValue(); } return false; } public byte getByteProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && Byte.class.isAssignableFrom(value.getClass())) { return ((Byte) value).byteValue(); } return 0; } public double getDoubleProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && Double.class.isAssignableFrom(value.getClass())) { return ((Double) value).doubleValue(); } return 0; } public float getFloatProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && Float.class.isAssignableFrom(value.getClass())) { return ((Float) value).floatValue(); } return 0; } public int getIntProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && Integer.class.isAssignableFrom(value.getClass())) { return ((Integer) value).intValue(); } return 0; } public String getJMSCorrelationID() throws JMSException { return this.correlationId; } public byte[] getJMSCorrelationIDAsBytes() throws JMSException { if (this.correlationId != null) { return this.correlationId.getBytes(); } return null; } public int getJMSDeliveryMode() throws JMSException { return this.deliveryMode; } public Destination getJMSDestination() throws JMSException { return this.destination; } public long getJMSExpiration() throws JMSException { return this.expiration; } public String getJMSMessageID() throws JMSException { return this.messageId; } public int getJMSPriority() throws JMSException { return this.priority; } public boolean getJMSRedelivered() throws JMSException { return this.redelivered; } public Destination getJMSReplyTo() throws JMSException { return this.replyTo; } public long getJMSTimestamp() throws JMSException { return this.timestamp; } public String getJMSType() throws JMSException { return this.type; } public long getLongProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && Long.class.isAssignableFrom(value.getClass())) { return ((Long) value).longValue(); } return 0; } public Object getObjectProperty(String name) throws JMSException { return this.properties.get(name); } public Enumeration<?> getPropertyNames() throws JMSException { return Collections.enumeration(this.properties.keySet()); } public short getShortProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && Short.class.isAssignableFrom(value.getClass())) { return ((Short) value).shortValue(); } return 0; } public String getStringProperty(String name) throws JMSException { Object value = this.properties.get(name); if (value != null && String.class.isAssignableFrom(value.getClass())) { return (String) value; } return null; } public boolean propertyExists(String name) throws JMSException { return this.properties.containsKey(name); } public void setBooleanProperty(String name, boolean value) throws JMSException { this.properties.put(name, value); } public void setByteProperty(String name, byte value) throws JMSException { this.properties.put(name, value); } public void setDoubleProperty(String name, double value) throws JMSException { this.properties.put(name, value); } public void setFloatProperty(String name, float value) throws JMSException { this.properties.put(name, value); } public void setIntProperty(String name, int value) throws JMSException { this.properties.put(name, value); } public void setJMSCorrelationID(String correlationID) throws JMSException { this.correlationId = correlationID; } public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException { this.correlationId = new String(correlationID); } public void setJMSDeliveryMode(int deliveryMode) throws JMSException { this.deliveryMode = deliveryMode; } public void setJMSDestination(Destination destination) throws JMSException { this.destination = destination; } public void setJMSExpiration(long expiration) throws JMSException { this.expiration = expiration; } public void setJMSMessageID(String id) throws JMSException { this.messageId = id; } public void setJMSPriority(int priority) throws JMSException { this.priority = priority; } public void setJMSRedelivered(boolean redelivered) throws JMSException { this.redelivered = redelivered; } public void setJMSReplyTo(Destination replyTo) throws JMSException { this.replyTo = replyTo; } public void setJMSTimestamp(long timestamp) throws JMSException { this.timestamp = timestamp; } public void setJMSType(String type) throws JMSException { this.type = type; } public void setLongProperty(String name, long value) throws JMSException { this.properties.put(name, value); } public void setObjectProperty(String name, Object value) throws JMSException { this.properties.put(name, value); } public void setShortProperty(String name, short value) throws JMSException { this.properties.put(name, value); } public void setStringProperty(String name, String value) throws JMSException { this.properties.put(name, value); } }