summaryrefslogtreecommitdiff
path: root/M4-RCs/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
diff options
context:
space:
mode:
Diffstat (limited to 'M4-RCs/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java')
-rw-r--r--M4-RCs/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java972
1 files changed, 0 insertions, 972 deletions
diff --git a/M4-RCs/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java b/M4-RCs/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
deleted file mode 100644
index d064c27754..0000000000
--- a/M4-RCs/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
+++ /dev/null
@@ -1,972 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.qpid.client.message;
-
-import org.apache.commons.collections.map.ReferenceMap;
-import org.apache.qpid.client.*;
-import org.apache.qpid.framing.ContentHeaderProperties;
-import org.apache.qpid.framing.BasicContentHeaderProperties;
-import org.apache.qpid.framing.AMQShortString;
-import org.apache.qpid.framing.FieldTable;
-import org.apache.qpid.AMQException;
-import org.apache.qpid.AMQPInvalidClassException;
-import org.apache.qpid.jms.Message;
-import org.apache.qpid.url.BindingURL;
-import org.apache.qpid.url.AMQBindingURL;
-import org.apache.mina.common.ByteBuffer;
-import org.apache.qpid.transport.*;
-
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.MessageNotWriteableException;
-import javax.jms.MessageFormatException;
-import javax.jms.DeliveryMode;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import org.apache.qpid.exchange.ExchangeDefaults;
-
-public class AMQMessageDelegate_0_10 implements AMQMessageDelegate
-{
- private static final Map<ReplyTo, Destination> _destinationCache = Collections.synchronizedMap(new ReferenceMap());
-
- public static final String JMS_TYPE = "x-jms-type";
-
-
- private boolean _readableProperties = false;
-
- private Destination _destination;
-
-
- private MessageProperties _messageProps;
- private DeliveryProperties _deliveryProps;
- /** If the acknowledge mode is CLIENT_ACKNOWLEDGE the session is required */
- private AMQSession _session;
- private final long _deliveryTag;
-
- private static Map<AMQShortString,Integer> _exchangeTypeMap = new ConcurrentHashMap<AMQShortString, Integer>();
- private static Map<String,Integer> _exchangeTypeStringMap = new ConcurrentHashMap<String, Integer>();
- private static Map<String, Integer> _exchangeTypeToDestinationType = new ConcurrentHashMap<String, Integer>();;
-
- static
- {
- _exchangeTypeMap.put(ExchangeDefaults.DIRECT_EXCHANGE_NAME, AMQDestination.QUEUE_TYPE);
- _exchangeTypeMap.put(AMQShortString.EMPTY_STRING, AMQDestination.QUEUE_TYPE);
- _exchangeTypeMap.put(ExchangeDefaults.TOPIC_EXCHANGE_NAME, AMQDestination.TOPIC_TYPE);
- _exchangeTypeMap.put(ExchangeDefaults.FANOUT_EXCHANGE_NAME, AMQDestination.TOPIC_TYPE);
-
- _exchangeTypeStringMap.put(ExchangeDefaults.DIRECT_EXCHANGE_NAME.toString(), AMQDestination.QUEUE_TYPE);
- _exchangeTypeStringMap.put("", AMQDestination.QUEUE_TYPE);
- _exchangeTypeStringMap.put(ExchangeDefaults.TOPIC_EXCHANGE_NAME.toString(), AMQDestination.TOPIC_TYPE);
- _exchangeTypeStringMap.put(ExchangeDefaults.FANOUT_EXCHANGE_NAME.toString(), AMQDestination.TOPIC_TYPE);
-
-
- _exchangeTypeToDestinationType.put(ExchangeDefaults.DIRECT_EXCHANGE_CLASS.toString(), AMQDestination.QUEUE_TYPE);
- _exchangeTypeToDestinationType.put(ExchangeDefaults.TOPIC_EXCHANGE_NAME.toString(), AMQDestination.TOPIC_TYPE);
- _exchangeTypeToDestinationType.put(ExchangeDefaults.FANOUT_EXCHANGE_NAME.toString(), AMQDestination.TOPIC_TYPE);
- }
-
- protected AMQMessageDelegate_0_10()
- {
- this(new MessageProperties(), new DeliveryProperties(), -1);
- _readableProperties = false;
- }
-
- protected AMQMessageDelegate_0_10(long deliveryTag, MessageProperties messageProps, DeliveryProperties deliveryProps, AMQShortString exchange,
- AMQShortString routingKey) throws AMQException
- {
- this(messageProps, deliveryProps, deliveryTag);
-
-
- AMQDestination dest;
-
- dest = generateDestination(exchange, routingKey);
- setJMSDestination(dest);
- }
-
- private AMQDestination generateDestination(AMQShortString exchange, AMQShortString routingKey)
- {
- AMQDestination dest;
- switch(getExchangeType(exchange))
- {
- case AMQDestination.QUEUE_TYPE:
- dest = new AMQQueue(exchange, routingKey, routingKey);
- break;
- case AMQDestination.TOPIC_TYPE:
- dest = new AMQTopic(exchange, routingKey, null);
- break;
- default:
- dest = new AMQUndefinedDestination(exchange, routingKey, null);
-
- }
-
- return dest;
- }
-
- private int getExchangeType(AMQShortString exchange)
- {
- Integer type = _exchangeTypeMap.get(exchange == null ? AMQShortString.EMPTY_STRING : exchange);
-
- if(type == null)
- {
- return AMQDestination.UNKNOWN_TYPE;
- }
-
-
- return type;
- }
-
-
- public static void updateExchangeTypeMapping(Header header, org.apache.qpid.transport.Session session)
- {
- DeliveryProperties deliveryProps = header.get(DeliveryProperties.class);
- if(deliveryProps != null)
- {
- String exchange = deliveryProps.getExchange();
-
- if(exchange != null && !_exchangeTypeStringMap.containsKey(exchange))
- {
-
- AMQShortString exchangeShortString = new AMQShortString(exchange);
- Future<ExchangeQueryResult> future =
- session.exchangeQuery(exchange.toString());
- ExchangeQueryResult res = future.get();
-
- Integer type = _exchangeTypeToDestinationType.get(res.getType());
- if(type == null)
- {
- type = AMQDestination.UNKNOWN_TYPE;
- }
- _exchangeTypeStringMap.put(exchange, type);
- _exchangeTypeMap.put(exchangeShortString, type);
-
- }
- }
- }
-
- protected AMQMessageDelegate_0_10(MessageProperties messageProps, DeliveryProperties deliveryProps, long deliveryTag)
- {
- _messageProps = messageProps;
- _deliveryProps = deliveryProps;
- _deliveryTag = deliveryTag;
- _readableProperties = (_messageProps != null);
-
- }
-
-
- public String getJMSMessageID() throws JMSException
- {
- UUID id = _messageProps.getMessageId();
- return id == null ? null : "ID:" + id;
- }
-
- public void setJMSMessageID(String messageId) throws JMSException
- {
- if(messageId == null)
- {
- _messageProps.clearMessageId();
- }
- else
- {
- if(messageId.startsWith("ID:"))
- {
- try
- {
- _messageProps.setMessageId(UUID.fromString(messageId.substring(3)));
- }
- catch(IllegalArgumentException ex)
- {
- throw new JMSException("MessageId '"+messageId+"' is not of the correct format, it must be ID: followed by a UUID");
- }
- }
- else
- {
- throw new JMSException("MessageId '"+messageId+"' is not of the correct format, it must be ID: followed by a UUID");
- }
- }
- }
-
- public void setJMSMessageID(UUID messageId) throws JMSException
- {
- if(messageId == null)
- {
- _messageProps.clearMessageId();
- }
- else
- {
- _messageProps.setMessageId(messageId);
- }
- }
-
-
- public long getJMSTimestamp() throws JMSException
- {
- return _deliveryProps.getTimestamp();
- }
-
- public void setJMSTimestamp(long timestamp) throws JMSException
- {
- _deliveryProps.setTimestamp(timestamp);
- }
-
- public byte[] getJMSCorrelationIDAsBytes() throws JMSException
- {
- return _messageProps.getCorrelationId();
- }
-
- public void setJMSCorrelationIDAsBytes(byte[] bytes) throws JMSException
- {
- _messageProps.setCorrelationId(bytes);
- }
-
- public void setJMSCorrelationID(String correlationId) throws JMSException
- {
-
- setJMSCorrelationIDAsBytes(correlationId == null ? null : correlationId.getBytes());
- }
-
- public String getJMSCorrelationID() throws JMSException
- {
-
- byte[] correlationIDAsBytes = getJMSCorrelationIDAsBytes();
- return correlationIDAsBytes == null ? null : new String(correlationIDAsBytes);
- }
-
- public Destination getJMSReplyTo()
- {
- ReplyTo replyTo = _messageProps.getReplyTo();
-
- if (replyTo == null)
- {
- return null;
- }
- else
- {
- Destination dest = _destinationCache.get(replyTo);
- if (dest == null)
- {
- String exchange = replyTo.getExchange();
- String routingKey = replyTo.getRoutingKey();
-
- dest = generateDestination(exchange == null ? null : new AMQShortString(exchange),
- routingKey == null ? null : new AMQShortString(routingKey));
-
-
-
-
-
- _destinationCache.put(replyTo, dest);
- }
-
- return dest;
- }
- }
-
- public void setJMSReplyTo(Destination destination) throws JMSException
- {
- if (destination == null)
- {
- throw new IllegalArgumentException("Null destination not allowed");
- }
-
- if (!(destination instanceof AMQDestination))
- {
- throw new IllegalArgumentException(
- "ReplyTo destination may only be an AMQDestination - passed argument was type " + destination.getClass());
- }
-
- final AMQDestination amqd = (AMQDestination) destination;
-
- final ReplyTo replyTo = new ReplyTo(amqd.getExchangeName().toString(), amqd.getRoutingKey().toString());
- _destinationCache.put(replyTo, destination);
- _messageProps.setReplyTo(replyTo);
-
- }
-
- public Destination getJMSDestination() throws JMSException
- {
- return _destination;
- }
-
- public void setJMSDestination(Destination destination)
- {
- _destination = destination;
- }
-
- public void setContentType(String contentType)
- {
- _messageProps.setContentType(contentType);
- }
-
- public String getContentType()
- {
- return _messageProps.getContentType();
- }
-
- public void setEncoding(String encoding)
- {
- if(encoding == null || encoding.length() == 0)
- {
- _messageProps.clearContentEncoding();
- }
- else
- {
- _messageProps.setContentEncoding(encoding);
- }
- }
-
- public String getEncoding()
- {
- return _messageProps.getContentEncoding();
- }
-
- public String getReplyToString()
- {
- Destination replyTo = getJMSReplyTo();
- if(replyTo != null)
- {
- return ((AMQDestination)replyTo).toURL();
- }
- else
- {
- return null;
- }
-
- }
-
- public int getJMSDeliveryMode() throws JMSException
- {
-
- MessageDeliveryMode deliveryMode = _deliveryProps.getDeliveryMode();
- if(deliveryMode != null)
- {
- switch(deliveryMode)
- {
- case PERSISTENT :
- return DeliveryMode.PERSISTENT;
- case NON_PERSISTENT:
- return DeliveryMode.NON_PERSISTENT;
- default:
- throw new JMSException("Unknown Message Delivery Mode: " + _deliveryProps.getDeliveryMode());
- }
- }
- else
- {
- return Message.DEFAULT_DELIVERY_MODE;
- }
-
- }
-
- public void setJMSDeliveryMode(int deliveryMode) throws JMSException
- {
- switch(deliveryMode)
- {
- case DeliveryMode.PERSISTENT:
- _deliveryProps.setDeliveryMode(MessageDeliveryMode.PERSISTENT);
- break;
- case DeliveryMode.NON_PERSISTENT:
- _deliveryProps.setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT);
- break;
- default:
- throw new JMSException("Unknown JMS Delivery Mode: " + deliveryMode);
- }
-
- }
-
-
- public String getJMSType() throws JMSException
- {
- if(getApplicationHeaders().containsKey(JMS_TYPE))
- {
- return getStringProperty(JMS_TYPE);
- }
- else
- {
- return null;
- }
- }
-
- private Map<String, Object> getApplicationHeaders()
- {
- Map<String, Object> map = _messageProps.getApplicationHeaders();
- return map == null ? Collections.EMPTY_MAP : map;
- }
-
- public void setJMSType(String type) throws JMSException
- {
- Map<String, Object> headers = _messageProps.getApplicationHeaders();
- if(type == null)
- {
- if(headers != null)
- {
- headers.remove(JMS_TYPE);
- }
- }
- else
- {
- if(headers == null)
- {
- headers = new HashMap<String,Object>();
- _messageProps.setApplicationHeaders(headers);
-
- }
- headers.put(JMS_TYPE, type);
- }
- }
-
- public long getJMSExpiration() throws JMSException
- {
- return _deliveryProps.getExpiration();
- }
-
- public void setJMSExpiration(long l) throws JMSException
- {
- _deliveryProps.setExpiration(l);
- }
-
-
-
- public boolean propertyExists(String propertyName) throws JMSException
- {
- return getApplicationHeaders().containsKey(propertyName);
- }
-
- public boolean getBooleanProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
-
- Object o = getApplicationHeaders().get(propertyName);
-
- if(o instanceof Boolean)
- {
- return ((Boolean)o).booleanValue();
- }
- else if(o instanceof String)
- {
- return Boolean.valueOf((String) o).booleanValue();
- }
- else if(getApplicationHeaders().containsKey(propertyName))
- {
- throw new MessageFormatException("getBooleanProperty(\""+propertyName+"\") failed as value is not boolean: " + o);
- }
- else
- {
- return Boolean.valueOf(null);
- }
- }
-
- public byte getByteProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
-
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- Object o = propertyMap.get(propertyName);
-
- if(o instanceof Byte)
- {
- return ((Byte)o).byteValue();
- }
- else if(o instanceof String)
- {
- return Byte.valueOf((String) o).byteValue();
- }
- else if(getApplicationHeaders().containsKey(propertyName))
- {
- throw new MessageFormatException("getByteProperty(\""+propertyName+"\") failed as value is not a byte: " + o);
- }
- else
- {
- return Byte.valueOf(null);
- }
- }
-
- public short getShortProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
-
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- Object o = propertyMap.get(propertyName);
-
- if(o instanceof Short)
- {
- return ((Short)o).shortValue();
- }
- else
- {
- try
- {
- return Short.valueOf(getByteProperty(propertyName));
- }
- catch(MessageFormatException e)
- {
- throw new MessageFormatException("getShortProperty(\""+propertyName+"\") failed as value is not a short: " + o);
- }
- }
-
-
- }
-
- public int getIntProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
-
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- Object o = propertyMap.get(propertyName);
-
- if(o instanceof Integer)
- {
- return ((Integer)o).intValue();
- }
- else
- {
- try
- {
- return Integer.valueOf(getShortProperty(propertyName));
- }
- catch(MessageFormatException e)
- {
- throw new MessageFormatException("getIntProperty(\""+propertyName+"\") failed as value is not an int: " + o);
- }
-
- }
- }
-
- public long getLongProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
-
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- Object o = propertyMap.get(propertyName);
-
- if(o instanceof Long)
- {
- return ((Long)o).longValue();
- }
- else
- {
- try
- {
- return Long.valueOf(getIntProperty(propertyName));
- }
- catch(MessageFormatException e)
- {
- throw new MessageFormatException("getLongProperty(\""+propertyName+"\") failed as value is not a long: " + o);
- }
-
- }
- }
-
- public float getFloatProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- Object o = propertyMap.get(propertyName);
-
- if(o instanceof Float)
- {
- return ((Float)o).floatValue();
- }
- else if(o instanceof String)
- {
- return Float.valueOf((String) o).floatValue();
- }
- else if(getApplicationHeaders().containsKey(propertyName))
- {
- throw new MessageFormatException("getFloatProperty(\""+propertyName+"\") failed as value is not a float: " + o);
- }
- else
- {
- return Float.valueOf(null);
- }
-
- }
-
- public double getDoubleProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
-
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- Object o = propertyMap.get(propertyName);
-
- if(o instanceof Double)
- {
- return ((Double)o).doubleValue();
- }
- else
- {
- try
- {
- return Double.valueOf(getFloatProperty(propertyName));
- }
- catch(MessageFormatException e)
- {
- throw new MessageFormatException("getDoubleProperty(\""+propertyName+"\") failed as value is not a double: " + o);
- }
-
- }
- }
-
- public String getStringProperty(String propertyName) throws JMSException
- {
- if (propertyName.equals(CustomJMSXProperty.JMSXUserID.toString()))
- {
- return new String(_messageProps.getUserId());
- }
- else
- {
- checkPropertyName(propertyName);
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- Object o = propertyMap.get(propertyName);
-
- if(o instanceof String)
- {
- return (String) o;
- }
- else if(o == null)
- {
- return null;
- }
- else if(o.getClass().isArray())
- {
- throw new MessageFormatException("getString(\""+propertyName+"\") failed as value of type " + o.getClass()+ " is an array.");
- }
- else
- {
- return String.valueOf(o);
- }
-
- }
- }
-
- public Object getObjectProperty(String propertyName) throws JMSException
- {
- checkPropertyName(propertyName);
- Map<String, Object> propertyMap = getApplicationHeaders();
-
- return propertyMap.get(propertyName);
-
- }
-
- public Enumeration getPropertyNames() throws JMSException
- {
- return java.util.Collections.enumeration(getApplicationHeaders().keySet());
- }
-
- public void setBooleanProperty(String propertyName, boolean b) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, b);
- }
-
- public void setByteProperty(String propertyName, byte b) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, b);
- }
-
- public void setShortProperty(String propertyName, short i) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, i);
- }
-
- public void setIntProperty(String propertyName, int i) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, i);
- }
-
- public void setLongProperty(String propertyName, long l) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, l);
- }
-
- public void setFloatProperty(String propertyName, float f) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, f);
- }
-
- public void setDoubleProperty(String propertyName, double v) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, v);
- }
-
- public void setStringProperty(String propertyName, String value) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- setApplicationHeader(propertyName, value);
- }
-
- private static final Set<Class> ALLOWED = new HashSet();
- static
- {
- ALLOWED.add(Boolean.class);
- ALLOWED.add(Byte.class);
- ALLOWED.add(Short.class);
- ALLOWED.add(Integer.class);
- ALLOWED.add(Long.class);
- ALLOWED.add(Float.class);
- ALLOWED.add(Double.class);
- ALLOWED.add(Character.class);
- ALLOWED.add(String.class);
- ALLOWED.add(byte[].class);
- }
-
- public void setObjectProperty(String propertyName, Object object) throws JMSException
- {
- checkPropertyName(propertyName);
- checkWritableProperties();
- if (object != null && !ALLOWED.contains(object.getClass()))
- {
- throw new MessageFormatException
- (String.format
- ("Cannot set a %s, allowed property types are: %s",
- object.getClass(), ALLOWED));
- }
- setApplicationHeader(propertyName, object);
- }
-
- private void setApplicationHeader(String propertyName, Object object)
- {
- Map<String, Object> headers = _messageProps.getApplicationHeaders();
- if(headers == null)
- {
- headers = new HashMap<String,Object>();
- _messageProps.setApplicationHeaders(headers);
- }
- headers.put(propertyName, object);
- }
-
- public void removeProperty(String propertyName) throws JMSException
- {
- Map<String, Object> headers = _messageProps.getApplicationHeaders();
- if(headers != null)
- {
- headers.remove(propertyName);
- }
- }
-
-
-
- protected void checkWritableProperties() throws MessageNotWriteableException
- {
- if (_readableProperties)
- {
- throw new MessageNotWriteableException("You need to call clearProperties() to make the message writable");
- }
- }
-
-
- public int getJMSPriority() throws JMSException
- {
- MessageDeliveryPriority messageDeliveryPriority = _deliveryProps.getPriority();
- return messageDeliveryPriority == null ? Message.DEFAULT_PRIORITY : messageDeliveryPriority.getValue();
- }
-
- public void setJMSPriority(int i) throws JMSException
- {
- _deliveryProps.setPriority(MessageDeliveryPriority.get((short)i));
- }
-
- public void clearProperties() throws JMSException
- {
- if(!getApplicationHeaders().isEmpty())
- {
- getApplicationHeaders().clear();
- }
-
- _readableProperties = false;
- }
-
-
- public void acknowledgeThis() throws JMSException
- {
- // the JMS 1.1 spec says in section 3.6 that calls to acknowledge are ignored when client acknowledge
- // is not specified. In our case, we only set the session field where client acknowledge mode is specified.
- if (_session != null)
- {
- if (_session.getAMQConnection().isClosed())
- {
- throw new javax.jms.IllegalStateException("Connection is already closed");
- }
-
- // we set multiple to true here since acknowledgement implies acknowledge of all previous messages
- // received on the session
- _session.acknowledgeMessage(_deliveryTag, true);
- }
- }
-
- public void acknowledge() throws JMSException
- {
- if (_session != null)
- {
- _session.acknowledge();
- }
- }
-
-
- /**
- * The session is set when CLIENT_ACKNOWLEDGE mode is used so that the CHANNEL ACK can be sent when the user calls
- * acknowledge()
- *
- * @param s the AMQ session that delivered this message
- */
- public void setAMQSession(AMQSession s)
- {
- _session = s;
- }
-
- public AMQSession getAMQSession()
- {
- return _session;
- }
-
- /**
- * Get the AMQ message number assigned to this message
- *
- * @return the message number
- */
- public long getDeliveryTag()
- {
- return _deliveryTag;
- }
-
-
-
-
-
-
- protected void checkPropertyName(CharSequence propertyName)
- {
- if (propertyName == null)
- {
- throw new IllegalArgumentException("Property name must not be null");
- }
- else if (propertyName.length() == 0)
- {
- throw new IllegalArgumentException("Property name must not be the empty string");
- }
-
- checkIdentiferFormat(propertyName);
- }
-
- protected void checkIdentiferFormat(CharSequence propertyName)
- {
-// JMS requirements 3.5.1 Property Names
-// Identifiers:
-// - An identifier is an unlimited-length character sequence that must begin
-// with a Java identifier start character; all following characters must be Java
-// identifier part characters. An identifier start character is any character for
-// which the method Character.isJavaIdentifierStart returns true. This includes
-// '_' and '$'. An identifier part character is any character for which the
-// method Character.isJavaIdentifierPart returns true.
-// - Identifiers cannot be the names NULL, TRUE, or FALSE.
-// Identifiers cannot be NOT, AND, OR, BETWEEN, LIKE, IN, IS, or
-// ESCAPE.
-// Identifiers are either header field references or property references. The
-// type of a property value in a message selector corresponds to the type
-// used to set the property. If a property that does not exist in a message is
-// referenced, its value is NULL. The semantics of evaluating NULL values
-// in a selector are described in Section 3.8.1.2, Null Values.
-// The conversions that apply to the get methods for properties do not
-// apply when a property is used in a message selector expression. For
-// example, suppose you set a property as a string value, as in the
-// following:
-// myMessage.setStringProperty("NumberOfOrders", "2");
-// The following expression in a message selector would evaluate to false,
-// because a string cannot be used in an arithmetic expression:
-// "NumberOfOrders > 1"
-// Identifiers are case sensitive.
-// Message header field references are restricted to JMSDeliveryMode,
-// JMSPriority, JMSMessageID, JMSTimestamp, JMSCorrelationID, and
-// JMSType. JMSMessageID, JMSCorrelationID, and JMSType values may be
-// null and if so are treated as a NULL value.
-
- if (Boolean.getBoolean("strict-jms"))
- {
- // JMS start character
- if (!(Character.isJavaIdentifierStart(propertyName.charAt(0))))
- {
- throw new IllegalArgumentException("Identifier '" + propertyName + "' does not start with a valid JMS identifier start character");
- }
-
- // JMS part character
- int length = propertyName.length();
- for (int c = 1; c < length; c++)
- {
- if (!(Character.isJavaIdentifierPart(propertyName.charAt(c))))
- {
- throw new IllegalArgumentException("Identifier '" + propertyName + "' contains an invalid JMS identifier character");
- }
- }
-
- // JMS invalid names
- if ((propertyName.equals("NULL")
- || propertyName.equals("TRUE")
- || propertyName.equals("FALSE")
- || propertyName.equals("NOT")
- || propertyName.equals("AND")
- || propertyName.equals("OR")
- || propertyName.equals("BETWEEN")
- || propertyName.equals("LIKE")
- || propertyName.equals("IN")
- || propertyName.equals("IS")
- || propertyName.equals("ESCAPE")))
- {
- throw new IllegalArgumentException("Identifier '" + propertyName + "' is not allowed in JMS");
- }
- }
-
- }
-
-
- public MessageProperties getMessageProperties()
- {
- return _messageProps;
- }
-
-
- public DeliveryProperties getDeliveryProperties()
- {
- return _deliveryProps;
- }
-
-}