summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Greig <rgreig@apache.org>2007-01-24 20:50:47 +0000
committerRobert Greig <rgreig@apache.org>2007-01-24 20:50:47 +0000
commit9fe1026450626ed29511466b8f3ddebe844ea894 (patch)
tree1a4ff54d1882db55b1066d639f56436775e3e649 /java
parent485c128337350ea77dbc469122fe01141c03d055 (diff)
downloadqpid-python-9fe1026450626ed29511466b8f3ddebe844ea894.tar.gz
QPID-317 : Patch supplied by Rob Godfrey - Remove dependency on JMS from common / broker.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@499563 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/grammar/SelectorParser.jj6
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java4
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java7
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/FilterManagerFactory.java6
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java20
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/MessageFilter.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java32
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java8
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/XPathExpression.java15
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/XQueryExpression.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/XalanXPathEvaluator.java50
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/message/MessageDecorator.java25
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/message/jms/JMSMessage.java307
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java4
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java4
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java125
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/JMSHeaderAdapter.java514
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java2
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java10
-rw-r--r--java/common/pom.xml5
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java473
26 files changed, 655 insertions, 997 deletions
diff --git a/java/broker/src/main/grammar/SelectorParser.jj b/java/broker/src/main/grammar/SelectorParser.jj
index 5553a46e47..ff99898810 100644
--- a/java/broker/src/main/grammar/SelectorParser.jj
+++ b/java/broker/src/main/grammar/SelectorParser.jj
@@ -66,7 +66,7 @@ package org.apache.qpid.server.filter.jms.selector;
import java.io.*;
import java.util.*;
-import javax.jms.InvalidSelectorException;
+import org.apache.qpid.AMQInvalidSelectorException;
import org.apache.qpid.server.filter.*;
@@ -81,14 +81,14 @@ public class SelectorParser {
this(new StringReader(""));
}
- public BooleanExpression parse(String sql) throws InvalidSelectorException {
+ public BooleanExpression parse(String sql) throws AMQInvalidSelectorException {
this.ReInit(new StringReader(sql));
try {
return this.JmsSelector();
}
catch (Throwable e) {
- throw (InvalidSelectorException)new InvalidSelectorException(sql).initCause(e);
+ throw (AMQInvalidSelectorException)new AMQInvalidSelectorException(sql).initCause(e);
}
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java
index c536f77dde..1b3b116fd0 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java
@@ -21,10 +21,8 @@ package org.apache.qpid.server.filter;
//
-import org.apache.qpid.server.queue.AMQMessage;
import org.apache.qpid.AMQException;
-
-import javax.jms.JMSException;
+import org.apache.qpid.server.queue.AMQMessage;
/**
* An expression which performs an operation on two expression values
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java
index de71e95049..122527d4f3 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java
@@ -21,11 +21,10 @@ package org.apache.qpid.server.filter;
//
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.message.jms.JMSMessage;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.queue.AMQMessage;
+
-import javax.jms.JMSException;
/**
@@ -40,7 +39,7 @@ public interface BooleanExpression extends Expression
/**
* @param message
* @return true if the expression evaluates to Boolean.TRUE.
- * @throws JMSException
+ * @throws AMQException
*/
public boolean matches(AMQMessage message) throws AMQException;
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
index 07391098ce..25d588a36f 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
@@ -20,16 +20,13 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.message.jms.JMSMessage;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.queue.AMQMessage;
import java.util.HashSet;
import java.util.List;
import java.util.regex.Pattern;
-import javax.jms.JMSException;
-
/**
* A filter performing a comparison of two objects
*
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java
index 2cd305d4b1..a4aea35079 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java
@@ -20,14 +20,11 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.message.jms.JMSMessage;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.queue.AMQMessage;
import java.math.BigDecimal;
-import javax.jms.JMSException;
-
/**
* Represents a constant expression
*
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java
index 3b5debd3ee..4a2130e767 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java
@@ -21,11 +21,8 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.message.jms.JMSMessage;
import org.apache.qpid.AMQException;
-
-import javax.jms.JMSException;
+import org.apache.qpid.server.queue.AMQMessage;
/**
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/FilterManagerFactory.java b/java/broker/src/main/java/org/apache/qpid/server/filter/FilterManagerFactory.java
index 5c784983cb..311f0680ec 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/FilterManagerFactory.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/FilterManagerFactory.java
@@ -20,13 +20,9 @@
*/
package org.apache.qpid.server.filter;
-import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.AMQException;
import org.apache.qpid.common.AMQPFilterTypes;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
+import org.apache.qpid.framing.FieldTable;
public class FilterManagerFactory
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java b/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
index 5f505fbeba..cba487c31e 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
@@ -20,15 +20,13 @@
*/
package org.apache.qpid.server.filter;
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.filter.jms.selector.SelectorParser;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.AMQInvalidSelectorException;
-import org.apache.log4j.Logger;
+import org.apache.qpid.server.filter.jms.selector.SelectorParser;
+import org.apache.qpid.server.queue.AMQMessage;
-import javax.jms.InvalidSelectorException;
-import javax.jms.JMSException;
public class JMSSelectorFilter implements MessageFilter
{
@@ -43,16 +41,8 @@ public class JMSSelectorFilter implements MessageFilter
_logger.info("Created JMSSelectorFilter with selector:" + _selector);
- try
- {
- _matcher = new SelectorParser().parse(selector);
- }
- catch (InvalidSelectorException e)
- {
- // fixme
- // Is this the correct way of throwing exception
- throw new AMQInvalidSelectorException(e.getMessage());
- }
+ _matcher = new SelectorParser().parse(selector);
+
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java
index e6ad98cb8b..dea6092b8a 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java
@@ -20,11 +20,8 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.message.jms.JMSMessage;
import org.apache.qpid.AMQException;
-
-import javax.jms.JMSException;
+import org.apache.qpid.server.queue.AMQMessage;
/**
* A filter performing a comparison of two objects
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/MessageFilter.java b/java/broker/src/main/java/org/apache/qpid/server/filter/MessageFilter.java
index b8ca75d209..f80b7941b5 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/MessageFilter.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/MessageFilter.java
@@ -21,10 +21,9 @@
package org.apache.qpid.server.filter;
import org.apache.qpid.server.queue.AMQMessage;
-
-import javax.jms.JMSException;
+import org.apache.qpid.AMQException;
public interface MessageFilter
{
- boolean matches(AMQMessage message) throws JMSException;
+ boolean matches(AMQMessage message) throws AMQException;
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
index ba7000f822..2e74b09d0d 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
@@ -20,23 +20,15 @@ package org.apache.qpid.server.filter;
//
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-
-import java.io.IOException;
-import java.util.HashMap;
-
-import javax.jms.DeliveryMode;
-import javax.jms.JMSException;
-import javax.jms.Message;
-//import org.apache.activemq.command.ActiveMQDestination;
-//import org.apache.activemq.command.Message;
-//import org.apache.activemq.command.TransactionId;
-//import org.apache.activemq.util.JMSExceptionSupport;
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.message.jms.JMSMessage;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.BasicContentHeaderProperties;
-import org.apache.log4j.Logger;
+import org.apache.qpid.server.queue.AMQMessage;
+
+
+
+import java.util.HashMap;
/**
* Represents a property expression
@@ -45,8 +37,10 @@ import org.apache.log4j.Logger;
*/
public class PropertyExpression implements Expression
{
-
-
+ // Constants - defined the same as JMS
+ private static final int NON_PERSISTENT = 1;
+ private static final int PERSISTENT = 2;
+ private static final int DEFAULT_PRIORITY = 4;
private final static Logger _logger = org.apache.log4j.Logger.getLogger(PropertyExpression.class);
@@ -111,7 +105,7 @@ public class PropertyExpression implements Expression
{
try
{
- int mode = message.isPersistent() ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT;
+ int mode = message.isPersistent() ? PERSISTENT : NON_PERSISTENT;
if(_logger.isDebugEnabled())
{
_logger.debug("JMSDeliveryMode is :" + mode);
@@ -123,7 +117,7 @@ public class PropertyExpression implements Expression
_logger.warn(e);
}
- return DeliveryMode.NON_PERSISTENT;
+ return NON_PERSISTENT;
}
});
@@ -141,7 +135,7 @@ public class PropertyExpression implements Expression
{
_logger.warn(e);
}
- return Message.DEFAULT_PRIORITY;
+ return DEFAULT_PRIORITY;
}
}
);
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java b/java/broker/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java
index 9065551697..5821a84774 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java
@@ -20,10 +20,10 @@
*/
package org.apache.qpid.server.filter;
-import org.apache.qpid.server.queue.AMQMessage;
import org.apache.log4j.Logger;
+import org.apache.qpid.server.queue.AMQMessage;
+import org.apache.qpid.AMQException;
-import javax.jms.JMSException;
import java.util.concurrent.ConcurrentLinkedQueue;
public class SimpleFilterManager implements FilterManager
@@ -59,10 +59,10 @@ public class SimpleFilterManager implements FilterManager
return false;
}
}
- catch (JMSException e)
+ catch (AMQException e)
{
//fixme
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ e.printStackTrace();
return false;
}
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java
index abc56f04d0..352a48b7ab 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java
@@ -20,9 +20,8 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.server.message.jms.JMSMessage;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.queue.AMQMessage;
import java.math.BigDecimal;
import java.util.Collection;
@@ -30,8 +29,6 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import javax.jms.JMSException;
-
/**
* An expression which performs an operation on two expression values
*
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/XPathExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/XPathExpression.java
index 85402e0781..c51f82ce68 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/XPathExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/XPathExpression.java
@@ -20,18 +20,13 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import javax.jms.JMSException;
-
-//import org.apache.activemq.command.Message;
-//import org.apache.activemq.util.JMSExceptionSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.qpid.server.queue.AMQMessage;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.queue.AMQMessage;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
/**
* Used to evaluate an XPath Expression in a JMS selector.
@@ -121,7 +116,7 @@ public final class XPathExpression implements BooleanExpression {
/**
* @param message
* @return true if the expression evaluates to Boolean.TRUE.
- * @throws JMSException
+ * @throws AMQException
*/
public boolean matches(AMQMessage message) throws AMQException
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/XQueryExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/XQueryExpression.java
index da8a61650a..f5debb607a 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/XQueryExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/XQueryExpression.java
@@ -17,10 +17,9 @@
*/
package org.apache.qpid.server.filter;
-import org.apache.qpid.server.queue.AMQMessage;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.queue.AMQMessage;
-import javax.jms.JMSException;
//
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
@@ -47,7 +46,7 @@ public final class XQueryExpression implements BooleanExpression {
/**
* @param message
* @return true if the expression evaluates to Boolean.TRUE.
- * @throws JMSException
+ * @throws AMQException
*/
public boolean matches(AMQMessage message) throws AMQException
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/XalanXPathEvaluator.java b/java/broker/src/main/java/org/apache/qpid/server/filter/XalanXPathEvaluator.java
index f74e0cedec..94f063aa95 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/XalanXPathEvaluator.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/XalanXPathEvaluator.java
@@ -21,24 +21,18 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import java.io.StringReader;
-import java.io.ByteArrayInputStream;
-
-import javax.jms.BytesMessage;
-import javax.jms.JMSException;
-import javax.jms.TextMessage;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-//import org.apache.activemq.command.Message;
-//import org.apache.activemq.util.ByteArrayInputStream;
-import org.apache.xpath.CachedXPathAPI;
-import org.apache.qpid.server.queue.AMQMessage;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.queue.AMQMessage;
+import org.apache.xpath.CachedXPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.traversal.NodeIterator;
import org.xml.sax.InputSource;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.ByteArrayInputStream;
+import java.io.StringReader;
+
public class XalanXPathEvaluator implements XPathExpression.XPathEvaluator {
private final String xpath;
@@ -49,24 +43,22 @@ public class XalanXPathEvaluator implements XPathExpression.XPathEvaluator {
public boolean evaluate(AMQMessage m) throws AMQException
{
- try
- {
+ // TODO - we would have to check the content type and then evaluate the content
+ // here... is this really a feature we wish to implement? - RobG
+ /*
- if( m instanceof TextMessage ) {
- String text = ((TextMessage)m).getText();
- return evaluate(text);
- } else if ( m instanceof BytesMessage ) {
- BytesMessage bm = (BytesMessage) m;
- byte data[] = new byte[(int) bm.getBodyLength()];
- bm.readBytes(data);
- return evaluate(data);
- }
- return false;
- }
- catch (JMSException e)
- {
- throw new AMQException("Error evaluting message: " + e, e);
+ if( m instanceof TextMessage ) {
+ String text = ((TextMessage)m).getText();
+ return evaluate(text);
+ } else if ( m instanceof BytesMessage ) {
+ BytesMessage bm = (BytesMessage) m;
+ byte data[] = new byte[(int) bm.getBodyLength()];
+ bm.readBytes(data);
+ return evaluate(data);
}
+ */
+ return false;
+
}
private boolean evaluate(byte[] data) {
diff --git a/java/broker/src/main/java/org/apache/qpid/server/message/MessageDecorator.java b/java/broker/src/main/java/org/apache/qpid/server/message/MessageDecorator.java
deleted file mode 100644
index aba3b88a59..0000000000
--- a/java/broker/src/main/java/org/apache/qpid/server/message/MessageDecorator.java
+++ /dev/null
@@ -1,25 +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.server.message;
-
-public interface MessageDecorator
-{
-}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/message/jms/JMSMessage.java b/java/broker/src/main/java/org/apache/qpid/server/message/jms/JMSMessage.java
deleted file mode 100644
index ab201c476e..0000000000
--- a/java/broker/src/main/java/org/apache/qpid/server/message/jms/JMSMessage.java
+++ /dev/null
@@ -1,307 +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.server.message.jms;
-
-import org.apache.qpid.server.message.MessageDecorator;
-import org.apache.qpid.server.queue.AMQMessage;
-import org.apache.qpid.framing.BasicContentHeaderProperties;
-import org.apache.qpid.framing.ContentHeaderBody;
-import org.apache.qpid.AMQException;
-
-import javax.jms.Message;
-import javax.jms.JMSException;
-import javax.jms.Destination;
-import javax.jms.MessageNotWriteableException;
-import java.util.Enumeration;
-
-public class JMSMessage implements MessageDecorator
-{
-
- private AMQMessage _message;
- private BasicContentHeaderProperties _properties;
-
- public JMSMessage(AMQMessage message) throws AMQException
- {
- _message = message;
- ContentHeaderBody contentHeader = message.getContentHeaderBody();
- _properties = (BasicContentHeaderProperties) contentHeader.properties;
- }
-
- protected void checkWriteable() throws MessageNotWriteableException
- {
- //The broker should not modify a message.
-// if (_readableMessage)
- {
- throw new MessageNotWriteableException("The broker should not modify a message.");
- }
- }
-
-
- public String getJMSMessageID()
- {
- return _properties.getMessageId();
- }
-
- public void setJMSMessageID(String string) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setMessageId(string);
- }
-
- public long getJMSTimestamp()
- {
- return _properties.getTimestamp();
- }
-
- public void setJMSTimestamp(long l) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setTimestamp(l);
- }
-
- public byte[] getJMSCorrelationIDAsBytes()
- {
- return _properties.getCorrelationId().getBytes();
- }
-
-// public void setJMSCorrelationIDAsBytes(byte[] bytes)
-// {
-// }
-
- public void setJMSCorrelationID(String string) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setCorrelationId(string);
- }
-
- public String getJMSCorrelationID()
- {
- return _properties.getCorrelationId();
- }
-
- public String getJMSReplyTo()
- {
- return _properties.getReplyTo();
- }
-
- public void setJMSReplyTo(Destination destination) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setReplyTo(destination.toString());
- }
-
- public String getJMSDestination()
- {
- //fixme should be a deestination
- return "";
- }
-
- public void setJMSDestination(Destination destination) throws MessageNotWriteableException
- {
- checkWriteable();
- //_properties.setDestination(destination.toString());
- }
-
- public int getJMSDeliveryMode()
- {
- return _properties.getDeliveryMode();
- }
-
- public void setJMSDeliveryMode(byte i) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setDeliveryMode(i);
- }
-
- public boolean getJMSRedelivered()
- {
- return _message.isRedelivered();
- }
-
- public void setJMSRedelivered(boolean b) throws MessageNotWriteableException
- {
- checkWriteable();
- _message.setRedelivered(b);
- }
-
- public String getJMSType()
- {
- return _properties.getType();
- }
-
- public void setJMSType(String string) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setType(string);
- }
-
- public long getJMSExpiration()
- {
- return _properties.getExpiration();
- }
-
- public void setJMSExpiration(long l) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setExpiration(l);
- }
-
- public int getJMSPriority()
- {
- return _properties.getPriority();
- }
-
- public void setJMSPriority(byte i) throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.setPriority(i);
- }
-
- public void clearProperties() throws MessageNotWriteableException
- {
- checkWriteable();
- _properties.clear();
- }
-
- public boolean propertyExists(String string)
- {
- return _properties.propertyExists(string);
- }
-
- public boolean getBooleanProperty(String string) throws JMSException
- {
- return _properties.getBoolean(string);
- }
-
- public byte getByteProperty(String string) throws JMSException
- {
- return _properties.getByte(string);
- }
-
- public short getShortProperty(String string) throws JMSException
- {
- return _properties.getShort(string);
- }
-
- public int getIntProperty(String string) throws JMSException
- {
- return _properties.getInteger(string);
- }
-
- public long getLongProperty(String string) throws JMSException
- {
- return _properties.getLong(string);
- }
-
- public float getFloatProperty(String string) throws JMSException
- {
- return _properties.getFloat(string);
- }
-
- public double getDoubleProperty(String string) throws JMSException
- {
- return _properties.getDouble(string);
- }
-
- public String getStringProperty(String string) throws JMSException
- {
- return _properties.getString(string);
- }
-
- public Object getObjectProperty(String string) throws JMSException
- {
- return _properties.getObject(string);
- }
-
- public Enumeration getPropertyNames()
- {
- return _properties.getPropertyNames();
- }
-
- public void setBooleanProperty(String string, boolean b) throws JMSException
- {
- checkWriteable();
- _properties.setBoolean(string, b);
- }
-
- public void setByteProperty(String string, byte b) throws JMSException
- {
- checkWriteable();
- _properties.setByte(string, b);
- }
-
- public void setShortProperty(String string, short i) throws JMSException
- {
- checkWriteable();
- _properties.setShort(string, i);
- }
-
- public void setIntProperty(String string, int i) throws JMSException
- {
- checkWriteable();
- _properties.setInteger(string, i);
- }
-
- public void setLongProperty(String string, long l) throws JMSException
- {
- checkWriteable();
- _properties.setLong(string, l);
- }
-
- public void setFloatProperty(String string, float v) throws JMSException
- {
- checkWriteable();
- _properties.setFloat(string, v);
- }
-
- public void setDoubleProperty(String string, double v) throws JMSException
- {
- checkWriteable();
- _properties.setDouble(string, v);
- }
-
- public void setStringProperty(String string, String string1) throws JMSException
- {
- checkWriteable();
- _properties.setString(string, string1);
- }
-
- public void setObjectProperty(String string, Object object) throws JMSException
- {
- checkWriteable();
- _properties.setObject(string, object);
- }
-
- public void acknowledge() throws MessageNotWriteableException
- {
- checkWriteable();
- }
-
- public void clearBody() throws MessageNotWriteableException
- {
- checkWriteable();
- }
-
- public AMQMessage getAMQMessage()
- {
- return _message;
- }
-}
diff --git a/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java b/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java
index d531c9eef2..79647e8dee 100644
--- a/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java
+++ b/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java
@@ -522,7 +522,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j
AbstractJMSMessage message = convertToNativeMessage(origMessage);
- message.getJmsContentHeaderProperties().setBytes(CustomJMSXProperty.JMSX_QPID_JMSDESTINATIONURL.
+ message.getJmsHeaders().setBytes(CustomJMSXProperty.JMSX_QPID_JMSDESTINATIONURL.
getShortStringName(), destination.toByteEncoding());
// AMQP version change: Hardwire the version to 0-8 (major=8, minor=0)
// TODO: Connect this to the session version obtained from ProtocolInitiation for this session.
@@ -539,7 +539,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j
message.prepareForSending();
ByteBuffer payload = message.getData();
- BasicContentHeaderProperties contentHeaderProperties = message.getJmsContentHeaderProperties();
+ BasicContentHeaderProperties contentHeaderProperties = message.getContentHeaderProperties();
if (!_disableTimestamps)
{
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java
index 5fb8de3690..805bdc6186 100644
--- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java
+++ b/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java
@@ -55,7 +55,7 @@ public abstract class AbstractBytesMessage extends AbstractJMSMessage
AbstractBytesMessage(ByteBuffer data)
{
super(data); // this instanties a content header
- getJmsContentHeaderProperties().setContentType(getMimeTypeAsShortString());
+ getContentHeaderProperties().setContentType(getMimeTypeAsShortString());
if (_data == null)
{
@@ -74,7 +74,7 @@ public abstract class AbstractBytesMessage extends AbstractJMSMessage
{
// TODO: this casting is ugly. Need to review whole ContentHeaderBody idea
super(messageNbr, (BasicContentHeaderProperties) contentHeader.properties, data);
- getJmsContentHeaderProperties().setContentType(getMimeTypeAsShortString());
+ getContentHeaderProperties().setContentType(getMimeTypeAsShortString());
}
public void clearBodyImpl() throws JMSException
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java
index 4a0d3283b0..da8d388088 100644
--- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java
+++ b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java
@@ -32,10 +32,7 @@ import org.apache.qpid.framing.BasicContentHeaderProperties;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.framing.AMQShortString;
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.MessageNotReadableException;
-import javax.jms.MessageNotWriteableException;
+import javax.jms.*;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Map;
@@ -43,6 +40,7 @@ import java.util.Map;
public abstract class AbstractJMSMessage extends AMQMessage implements org.apache.qpid.jms.Message
{
private static final Map _destinationCache = Collections.synchronizedMap(new ReferenceMap());
+
protected boolean _redelivered;
@@ -51,6 +49,7 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
protected boolean _readableMessage = false;
protected boolean _changedData;
private Destination _destination;
+ private JMSHeaderAdapter _headerAdapter;
private BasicMessageConsumer _consumer;
protected AbstractJMSMessage(ByteBuffer data)
@@ -64,6 +63,7 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
_readableProperties = false;
_readableMessage = (data != null);
_changedData = (data == null);
+ _headerAdapter = new JMSHeaderAdapter(((BasicContentHeaderProperties)_contentHeaderProperties).getHeaders());
}
protected AbstractJMSMessage(long deliveryTag, BasicContentHeaderProperties contentHeader, ByteBuffer data) throws AMQException
@@ -76,61 +76,63 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
}
_readableMessage = data != null;
+
}
protected AbstractJMSMessage(BasicContentHeaderProperties contentHeader, long deliveryTag)
{
super(contentHeader, deliveryTag);
_readableProperties = (_contentHeaderProperties != null);
+ _headerAdapter = new JMSHeaderAdapter(((BasicContentHeaderProperties)_contentHeaderProperties).getHeaders());
}
public String getJMSMessageID() throws JMSException
{
- if (getJmsContentHeaderProperties().getMessageId() == null)
+ if (getContentHeaderProperties().getMessageId() == null)
{
- getJmsContentHeaderProperties().setMessageId("ID:" + _deliveryTag);
+ getContentHeaderProperties().setMessageId("ID:" + _deliveryTag);
}
- return getJmsContentHeaderProperties().getMessageId();
+ return getContentHeaderProperties().getMessageId();
}
public void setJMSMessageID(String messageId) throws JMSException
{
- getJmsContentHeaderProperties().setMessageId(messageId);
+ getContentHeaderProperties().setMessageId(messageId);
}
public long getJMSTimestamp() throws JMSException
{
- return new Long(getJmsContentHeaderProperties().getTimestamp()).longValue();
+ return getContentHeaderProperties().getTimestamp();
}
public void setJMSTimestamp(long timestamp) throws JMSException
{
- getJmsContentHeaderProperties().setTimestamp(timestamp);
+ getContentHeaderProperties().setTimestamp(timestamp);
}
public byte[] getJMSCorrelationIDAsBytes() throws JMSException
{
- return getJmsContentHeaderProperties().getCorrelationId().getBytes();
+ return getContentHeaderProperties().getCorrelationId().getBytes();
}
public void setJMSCorrelationIDAsBytes(byte[] bytes) throws JMSException
{
- getJmsContentHeaderProperties().setCorrelationId(new String(bytes));
+ getContentHeaderProperties().setCorrelationId(new String(bytes));
}
public void setJMSCorrelationID(String correlationId) throws JMSException
{
- getJmsContentHeaderProperties().setCorrelationId(correlationId);
+ getContentHeaderProperties().setCorrelationId(correlationId);
}
public String getJMSCorrelationID() throws JMSException
{
- return getJmsContentHeaderProperties().getCorrelationId();
+ return getContentHeaderProperties().getCorrelationId();
}
public Destination getJMSReplyTo() throws JMSException
{
- String replyToEncoding = getJmsContentHeaderProperties().getReplyTo();
+ String replyToEncoding = getContentHeaderProperties().getReplyTo();
if (replyToEncoding == null)
{
return null;
@@ -165,13 +167,13 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
if (!(destination instanceof AMQDestination))
{
throw new IllegalArgumentException("ReplyTo destination may only be an AMQDestination - passed argument was type " +
- destination.getClass());
+ destination.getClass());
}
final AMQDestination amqd = (AMQDestination) destination;
final AMQShortString encodedDestination = amqd.getEncodedName();
_destinationCache.put(encodedDestination, destination);
- getJmsContentHeaderProperties().setReplyTo(encodedDestination);
+ getContentHeaderProperties().setReplyTo(encodedDestination);
}
public Destination getJMSDestination() throws JMSException
@@ -186,12 +188,17 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
public int getJMSDeliveryMode() throws JMSException
{
- return getJmsContentHeaderProperties().getDeliveryMode();
+ return getContentHeaderProperties().getDeliveryMode();
}
public void setJMSDeliveryMode(int i) throws JMSException
{
- getJmsContentHeaderProperties().setDeliveryMode((byte) i);
+ getContentHeaderProperties().setDeliveryMode((byte) i);
+ }
+
+ public BasicContentHeaderProperties getContentHeaderProperties()
+ {
+ return (BasicContentHeaderProperties) _contentHeaderProperties;
}
public boolean getJMSRedelivered() throws JMSException
@@ -206,37 +213,37 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
public String getJMSType() throws JMSException
{
- return getJmsContentHeaderProperties().getType();
+ return getContentHeaderProperties().getType();
}
public void setJMSType(String string) throws JMSException
{
- getJmsContentHeaderProperties().setType(string);
+ getContentHeaderProperties().setType(string);
}
public long getJMSExpiration() throws JMSException
{
- return new Long(getJmsContentHeaderProperties().getExpiration()).longValue();
+ return getContentHeaderProperties().getExpiration();
}
public void setJMSExpiration(long l) throws JMSException
{
- getJmsContentHeaderProperties().setExpiration(l);
+ getContentHeaderProperties().setExpiration(l);
}
public int getJMSPriority() throws JMSException
{
- return getJmsContentHeaderProperties().getPriority();
+ return getContentHeaderProperties().getPriority();
}
public void setJMSPriority(int i) throws JMSException
{
- getJmsContentHeaderProperties().setPriority((byte) i);
+ getContentHeaderProperties().setPriority((byte) i);
}
public void clearProperties() throws JMSException
{
- getJmsContentHeaderProperties().clear();
+ getJmsHeaders().clear();
_readableProperties = false;
}
@@ -251,21 +258,21 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
public boolean propertyExists(AMQShortString propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().propertyExists(propertyName);
+ return getJmsHeaders().propertyExists(propertyName);
}
public boolean propertyExists(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().propertyExists(propertyName);
+ return getJmsHeaders().propertyExists(propertyName);
}
public boolean getBooleanProperty(AMQShortString propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getBoolean(propertyName);
+ return getJmsHeaders().getBoolean(propertyName);
}
@@ -273,143 +280,143 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getBoolean(propertyName);
+ return getJmsHeaders().getBoolean(propertyName);
}
public byte getByteProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getByte(propertyName);
+ return getJmsHeaders().getByte(propertyName);
}
public short getShortProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getShort(propertyName);
+ return getJmsHeaders().getShort(propertyName);
}
public int getIntProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getInteger(propertyName);
+ return getJmsHeaders().getInteger(propertyName);
}
public long getLongProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getLong(propertyName);
+ return getJmsHeaders().getLong(propertyName);
}
public float getFloatProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getFloat(propertyName);
+ return getJmsHeaders().getFloat(propertyName);
}
public double getDoubleProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getDouble(propertyName);
+ return getJmsHeaders().getDouble(propertyName);
}
public String getStringProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getString(propertyName);
+ return getJmsHeaders().getString(propertyName);
}
public Object getObjectProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getObject(propertyName);
+ return getJmsHeaders().getObject(propertyName);
}
public Enumeration getPropertyNames() throws JMSException
{
- return getJmsContentHeaderProperties().getPropertyNames();
+ return getJmsHeaders().getPropertyNames();
}
public void setBooleanProperty(AMQShortString propertyName, boolean b) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setBoolean(propertyName, b);
+ getJmsHeaders().setBoolean(propertyName, b);
}
public void setBooleanProperty(String propertyName, boolean b) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setBoolean(propertyName, b);
+ getJmsHeaders().setBoolean(propertyName, b);
}
public void setByteProperty(String propertyName, byte b) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setByte(propertyName, new Byte(b));
+ getJmsHeaders().setByte(propertyName, new Byte(b));
}
public void setShortProperty(String propertyName, short i) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setShort(propertyName, new Short(i));
+ getJmsHeaders().setShort(propertyName, new Short(i));
}
public void setIntProperty(String propertyName, int i) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setInteger(propertyName, new Integer(i));
+ getJmsHeaders().setInteger(propertyName, new Integer(i));
}
public void setLongProperty(String propertyName, long l) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setLong(propertyName, new Long(l));
+ getJmsHeaders().setLong(propertyName, new Long(l));
}
public void setFloatProperty(String propertyName, float f) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setFloat(propertyName, new Float(f));
+ getJmsHeaders().setFloat(propertyName, new Float(f));
}
public void setDoubleProperty(String propertyName, double v) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setDouble(propertyName, new Double(v));
+ getJmsHeaders().setDouble(propertyName, new Double(v));
}
public void setStringProperty(String propertyName, String value) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setString(propertyName, value);
+ getJmsHeaders().setString(propertyName, value);
}
public void setObjectProperty(String propertyName, Object object) throws JMSException
{
checkWritableProperties();
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().setObject(propertyName, object);
+ getJmsHeaders().setObject(propertyName, object);
}
protected void removeProperty(AMQShortString propertyName) throws JMSException
{
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().remove(propertyName);
+ getJmsHeaders().remove(propertyName);
}
protected void removeProperty(String propertyName) throws JMSException
{
checkPropertyName(propertyName);
- getJmsContentHeaderProperties().remove(propertyName);
+ getJmsHeaders().remove(propertyName);
}
public void acknowledgeThis() throws JMSException
@@ -431,7 +438,7 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
public void acknowledge() throws JMSException
{
- if(_session != null)
+ if (_session != null)
{
_session.acknowledge();
}
@@ -471,13 +478,13 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
buf.append("\nJMS reply to: ").append(String.valueOf(getJMSReplyTo()));
buf.append("\nAMQ message number: ").append(_deliveryTag);
buf.append("\nProperties:");
- if (getJmsContentHeaderProperties().isEmpty())
+ if (getJmsHeaders().isEmpty())
{
buf.append("<NONE>");
}
else
{
- buf.append('\n').append(getJmsContentHeaderProperties().getHeaders());
+ buf.append('\n').append(getJmsHeaders().getHeaders());
}
return buf.toString();
}
@@ -490,7 +497,7 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
public void setUnderlyingMessagePropertiesMap(FieldTable messageProperties)
{
- getJmsContentHeaderProperties().setHeaders(messageProperties);
+ getContentHeaderProperties().setHeaders(messageProperties);
}
private void checkPropertyName(CharSequence propertyName)
@@ -499,15 +506,15 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
{
throw new IllegalArgumentException("Property name must not be null");
}
- else if (propertyName.length()==0)
+ else if (propertyName.length() == 0)
{
throw new IllegalArgumentException("Property name must not be the empty string");
}
}
- public BasicContentHeaderProperties getJmsContentHeaderProperties()
+ public JMSHeaderAdapter getJmsHeaders()
{
- return (BasicContentHeaderProperties) _contentHeaderProperties;
+ return _headerAdapter;
}
public ByteBuffer getData()
@@ -576,7 +583,7 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach
public byte[] getBytesProperty(AMQShortString propertyName) throws JMSException
{
checkPropertyName(propertyName);
- return getJmsContentHeaderProperties().getBytes(propertyName);
+ return getJmsHeaders().getBytes(propertyName);
}
}
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSHeaderAdapter.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSHeaderAdapter.java
new file mode 100644
index 0000000000..35f8c54d90
--- /dev/null
+++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSHeaderAdapter.java
@@ -0,0 +1,514 @@
+/*
+ *
+ * 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.qpid.framing.FieldTable;
+import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.AMQPInvalidClassException;
+import org.apache.mina.common.ByteBuffer;
+
+import javax.jms.JMSException;
+import javax.jms.MessageFormatException;
+import java.util.Enumeration;
+
+
+public final class JMSHeaderAdapter
+{
+ FieldTable _headers;
+
+ public JMSHeaderAdapter(FieldTable headers)
+ {
+ _headers = headers;
+ }
+
+
+ public FieldTable getHeaders()
+ {
+ return _headers;
+ }
+
+ public boolean getBoolean(String string) throws JMSException
+ {
+ Boolean b = getHeaders().getBoolean(string);
+
+ if (b == null)
+ {
+ if (getHeaders().containsKey(string))
+ {
+ Object str = getHeaders().getObject(string);
+
+ if (str == null || !(str instanceof String))
+ {
+ throw new MessageFormatException("getBoolean can't use " + string + " item.");
+ }
+ else
+ {
+ return Boolean.valueOf((String) str);
+ }
+ }
+ else
+ {
+ b = Boolean.valueOf(null);
+ }
+ }
+
+ return b;
+ }
+
+ public boolean getBoolean(AMQShortString string) throws JMSException
+ {
+ Boolean b = getHeaders().getBoolean(string);
+
+ if (b == null)
+ {
+ if (getHeaders().containsKey(string))
+ {
+ Object str = getHeaders().getObject(string);
+
+ if (str == null || !(str instanceof String))
+ {
+ throw new MessageFormatException("getBoolean can't use " + string + " item.");
+ }
+ else
+ {
+ return Boolean.valueOf((String) str);
+ }
+ }
+ else
+ {
+ b = Boolean.valueOf(null);
+ }
+ }
+
+ return b;
+ }
+
+ public char getCharacter(String string) throws JMSException
+ {
+ Character c = getHeaders().getCharacter(string);
+
+ if (c == null)
+ {
+ if (getHeaders().isNullStringValue(string))
+ {
+ throw new NullPointerException("Cannot convert null char");
+ }
+ else
+ {
+ throw new MessageFormatException("getChar can't use " + string + " item.");
+ }
+ }
+ else
+ {
+ return (char) c;
+ }
+ }
+
+ public byte[] getBytes(String string) throws JMSException
+ {
+ return getBytes(new AMQShortString(string));
+ }
+
+ public byte[] getBytes(AMQShortString string) throws JMSException
+ {
+ byte[] bs = getHeaders().getBytes(string);
+
+ if (bs == null)
+ {
+ throw new MessageFormatException("getBytes can't use " + string + " item.");
+ }
+ else
+ {
+ return bs;
+ }
+ }
+
+ public byte getByte(String string) throws JMSException
+ {
+ Byte b = getHeaders().getByte(string);
+ if (b == null)
+ {
+ if (getHeaders().containsKey(string))
+ {
+ Object str = getHeaders().getObject(string);
+
+ if (str == null || !(str instanceof String))
+ {
+ throw new MessageFormatException("getByte can't use " + string + " item.");
+ }
+ else
+ {
+ return Byte.valueOf((String) str);
+ }
+ }
+ else
+ {
+ b = Byte.valueOf(null);
+ }
+ }
+
+ return b;
+ }
+
+ public short getShort(String string) throws JMSException
+ {
+ Short s = getHeaders().getShort(string);
+
+ if (s == null)
+ {
+ s = Short.valueOf(getByte(string));
+ }
+
+ return s;
+ }
+
+ public int getInteger(String string) throws JMSException
+ {
+ Integer i = getHeaders().getInteger(string);
+
+ if (i == null)
+ {
+ i = Integer.valueOf(getShort(string));
+ }
+
+ return i;
+ }
+
+ public long getLong(String string) throws JMSException
+ {
+ Long l = getHeaders().getLong(string);
+
+ if (l == null)
+ {
+ l = Long.valueOf(getInteger(string));
+ }
+
+ return l;
+ }
+
+ public float getFloat(String string) throws JMSException
+ {
+ Float f = getHeaders().getFloat(string);
+
+ if (f == null)
+ {
+ if (getHeaders().containsKey(string))
+ {
+ Object str = getHeaders().getObject(string);
+
+ if (str == null || !(str instanceof String))
+ {
+ throw new MessageFormatException("getFloat can't use " + string + " item.");
+ }
+ else
+ {
+ return Float.valueOf((String) str);
+ }
+ }
+ else
+ {
+ f = Float.valueOf(null);
+ }
+
+ }
+
+ return f;
+ }
+
+ public double getDouble(String string) throws JMSException
+ {
+ Double d = getHeaders().getDouble(string);
+
+ if (d == null)
+ {
+ d = Double.valueOf(getFloat(string));
+ }
+
+ return d;
+ }
+
+ public String getString(String string) throws JMSException
+ {
+ String s = getHeaders().getString(string);
+
+ if (s == null)
+ {
+ if (getHeaders().containsKey(string))
+ {
+ Object o = getHeaders().getObject(string);
+ if (o instanceof byte[])
+ {
+ throw new MessageFormatException("getObject couldn't find " + string + " item.");
+ }
+ else
+ {
+ if (o == null)
+ {
+ return null;
+ }
+ else
+ {
+ s = String.valueOf(o);
+ }
+ }
+ }
+ }
+
+ return s;
+ }
+
+ public Object getObject(String string) throws JMSException
+ {
+ return getHeaders().getObject(string);
+ }
+
+ public void setBoolean(AMQShortString string, boolean b) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setBoolean(string, b);
+ }
+
+ public void setBoolean(String string, boolean b) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setBoolean(string, b);
+ }
+
+ public void setChar(String string, char c) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setChar(string, c);
+ }
+
+ public Object setBytes(AMQShortString string, byte[] bytes)
+ {
+ return getHeaders().setBytes(string, bytes);
+ }
+
+ public Object setBytes(String string, byte[] bytes)
+ {
+ return getHeaders().setBytes(string, bytes);
+ }
+
+ public Object setBytes(String string, byte[] bytes, int start, int length)
+ {
+ return getHeaders().setBytes(string, bytes, start, length);
+ }
+
+ public void setByte(String string, byte b) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setByte(string, b);
+ }
+
+ public void setShort(String string, short i) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setShort(string, i);
+ }
+
+ public void setInteger(String string, int i) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setInteger(string, i);
+ }
+
+ public void setLong(String string, long l) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setLong(string, l);
+ }
+
+ public void setFloat(String string, float v) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setFloat(string, v);
+ }
+
+ public void setDouble(String string, double v) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setDouble(string, v);
+ }
+
+ public void setString(String string, String string1) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setString(string, string1);
+ }
+
+ public void setString(AMQShortString string, String string1) throws JMSException
+ {
+ checkPropertyName(string);
+ getHeaders().setString(string, string1);
+ }
+
+ public void setObject(String string, Object object) throws JMSException
+ {
+ checkPropertyName(string);
+ try
+ {
+ getHeaders().setObject(string, object);
+ }
+ catch (AMQPInvalidClassException aice)
+ {
+ throw new MessageFormatException("Only primatives are allowed object is:" + object.getClass());
+ }
+ }
+
+ public boolean itemExists(String string) throws JMSException
+ {
+ return getHeaders().containsKey(string);
+ }
+
+ public Enumeration getPropertyNames()
+ {
+ return getHeaders().getPropertyNames();
+ }
+
+ public void clear()
+ {
+ getHeaders().clear();
+ }
+
+ public boolean propertyExists(AMQShortString propertyName)
+ {
+ return getHeaders().propertyExists(propertyName);
+ }
+
+ public boolean propertyExists(String propertyName)
+ {
+ return getHeaders().propertyExists(propertyName);
+ }
+
+ public Object put(Object key, Object value)
+ {
+ return getHeaders().setObject(key.toString(), value);
+ }
+
+ public Object remove(AMQShortString propertyName)
+ {
+ return getHeaders().remove(propertyName);
+ }
+
+ public Object remove(String propertyName)
+ {
+ return getHeaders().remove(propertyName);
+ }
+
+ public boolean isEmpty()
+ {
+ return getHeaders().isEmpty();
+ }
+
+ public void writeToBuffer(ByteBuffer data)
+ {
+ getHeaders().writeToBuffer(data);
+ }
+
+ public Enumeration getMapNames()
+ {
+ return getPropertyNames();
+ }
+
+ protected static 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 static 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");
+ }
+ }
+
+ }
+}
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java
index ae29cef901..10ed530923 100644
--- a/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java
+++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java
@@ -56,7 +56,7 @@ public class JMSObjectMessage extends AbstractJMSMessage implements ObjectMessag
_data = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
_data.setAutoExpand(true);
}
- getJmsContentHeaderProperties().setContentType(MIME_TYPE_SHORT_STRING);
+ getContentHeaderProperties().setContentType(MIME_TYPE_SHORT_STRING);
}
/**
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java
index f386346dd1..6c2c9a99d0 100644
--- a/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java
+++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java
@@ -52,8 +52,8 @@ public class JMSTextMessage extends AbstractJMSMessage implements javax.jms.Text
JMSTextMessage(ByteBuffer data, String encoding) throws JMSException
{
super(data); // this instantiates a content header
- getJmsContentHeaderProperties().setContentType(MIME_TYPE_SHORT_STRING);
- getJmsContentHeaderProperties().setEncoding(encoding);
+ getContentHeaderProperties().setContentType(MIME_TYPE_SHORT_STRING);
+ getContentHeaderProperties().setEncoding(encoding);
}
JMSTextMessage(long deliveryTag, BasicContentHeaderProperties contentHeader, ByteBuffer data)
@@ -113,7 +113,7 @@ public class JMSTextMessage extends AbstractJMSMessage implements javax.jms.Text
_data.limit(text.length()) ;
//_data.sweep();
_data.setAutoExpand(true);
- final String encoding = getJmsContentHeaderProperties().getEncoding();
+ final String encoding = getContentHeaderProperties().getEncoding();
if (encoding == null)
{
_data.put(text.getBytes());
@@ -152,11 +152,11 @@ public class JMSTextMessage extends AbstractJMSMessage implements javax.jms.Text
{
return null;
}
- if (getJmsContentHeaderProperties().getEncoding() != null)
+ if (getContentHeaderProperties().getEncoding() != null)
{
try
{
- _decodedValue = _data.getString(Charset.forName(getJmsContentHeaderProperties().getEncoding()).newDecoder());
+ _decodedValue = _data.getString(Charset.forName(getContentHeaderProperties().getEncoding()).newDecoder());
}
catch (CharacterCodingException e)
{
diff --git a/java/common/pom.xml b/java/common/pom.xml
index 3a7d971173..7472b5ef7d 100644
--- a/java/common/pom.xml
+++ b/java/common/pom.xml
@@ -97,11 +97,6 @@
</dependency>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jms_1.1_spec</artifactId>
- </dependency>
-
- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
diff --git a/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java b/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java
index ed6ab63ded..1045b02868 100644
--- a/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java
+++ b/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java
@@ -22,11 +22,7 @@ package org.apache.qpid.framing;
import org.apache.log4j.Logger;
import org.apache.mina.common.ByteBuffer;
-import org.apache.qpid.AMQPInvalidClassException;
-import javax.jms.JMSException;
-import javax.jms.MessageFormatException;
-import java.util.Enumeration;
public class BasicContentHeaderProperties implements ContentHeaderProperties
{
@@ -659,474 +655,5 @@ public class BasicContentHeaderProperties implements ContentHeaderProperties
",JMSType = " + _type;
}
- // MapMessage Interface
- public boolean getBoolean(String string) throws JMSException
- {
- Boolean b = getHeaders().getBoolean(string);
-
- if (b == null)
- {
- if (getHeaders().containsKey(string))
- {
- Object str = getHeaders().getObject(string);
-
- if (str == null || !(str instanceof String))
- {
- throw new MessageFormatException("getBoolean can't use " + string + " item.");
- }
- else
- {
- return Boolean.valueOf((String) str);
- }
- }
- else
- {
- b = Boolean.valueOf(null);
- }
- }
-
- return b;
- }
-
- public boolean getBoolean(AMQShortString string) throws JMSException
- {
- Boolean b = getHeaders().getBoolean(string);
-
- if (b == null)
- {
- if (getHeaders().containsKey(string))
- {
- Object str = getHeaders().getObject(string);
-
- if (str == null || !(str instanceof String))
- {
- throw new MessageFormatException("getBoolean can't use " + string + " item.");
- }
- else
- {
- return Boolean.valueOf((String) str);
- }
- }
- else
- {
- b = Boolean.valueOf(null);
- }
- }
-
- return b;
- }
-
- public char getCharacter(String string) throws JMSException
- {
- Character c = getHeaders().getCharacter(string);
-
- if (c == null)
- {
- if (getHeaders().isNullStringValue(string))
- {
- throw new NullPointerException("Cannot convert null char");
- }
- else
- {
- throw new MessageFormatException("getChar can't use " + string + " item.");
- }
- }
- else
- {
- return (char) c;
- }
- }
-
- public byte[] getBytes(String string) throws JMSException
- {
- return getBytes(new AMQShortString(string));
- }
-
- public byte[] getBytes(AMQShortString string) throws JMSException
- {
- byte[] bs = getHeaders().getBytes(string);
-
- if (bs == null)
- {
- throw new MessageFormatException("getBytes can't use " + string + " item.");
- }
- else
- {
- return bs;
- }
- }
-
- public byte getByte(String string) throws JMSException
- {
- Byte b = getHeaders().getByte(string);
- if (b == null)
- {
- if (getHeaders().containsKey(string))
- {
- Object str = getHeaders().getObject(string);
-
- if (str == null || !(str instanceof String))
- {
- throw new MessageFormatException("getByte can't use " + string + " item.");
- }
- else
- {
- return Byte.valueOf((String) str);
- }
- }
- else
- {
- b = Byte.valueOf(null);
- }
- }
-
- return b;
- }
-
- public short getShort(String string) throws JMSException
- {
- Short s = getHeaders().getShort(string);
-
- if (s == null)
- {
- s = Short.valueOf(getByte(string));
- }
-
- return s;
- }
-
- public int getInteger(String string) throws JMSException
- {
- Integer i = getHeaders().getInteger(string);
-
- if (i == null)
- {
- i = Integer.valueOf(getShort(string));
- }
-
- return i;
- }
-
- public long getLong(String string) throws JMSException
- {
- Long l = getHeaders().getLong(string);
-
- if (l == null)
- {
- l = Long.valueOf(getInteger(string));
- }
-
- return l;
- }
-
- public float getFloat(String string) throws JMSException
- {
- Float f = getHeaders().getFloat(string);
-
- if (f == null)
- {
- if (getHeaders().containsKey(string))
- {
- Object str = getHeaders().getObject(string);
-
- if (str == null || !(str instanceof String))
- {
- throw new MessageFormatException("getFloat can't use " + string + " item.");
- }
- else
- {
- return Float.valueOf((String) str);
- }
- }
- else
- {
- f = Float.valueOf(null);
- }
-
- }
-
- return f;
- }
-
- public double getDouble(String string) throws JMSException
- {
- Double d = getHeaders().getDouble(string);
-
- if (d == null)
- {
- d = Double.valueOf(getFloat(string));
- }
-
- return d;
- }
-
- public String getString(String string) throws JMSException
- {
- String s = getHeaders().getString(string);
-
- if (s == null)
- {
- if (getHeaders().containsKey(string))
- {
- Object o = getHeaders().getObject(string);
- if (o instanceof byte[])
- {
- throw new MessageFormatException("getObject couldn't find " + string + " item.");
- }
- else
- {
- if (o == null)
- {
- return null;
- }
- else
- {
- s = String.valueOf(o);
- }
- }
- }
- }
-
- return s;
- }
-
- public Object getObject(String string) throws JMSException
- {
- return getHeaders().getObject(string);
- }
-
- public void setBoolean(AMQShortString string, boolean b) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setBoolean(string, b);
- }
-
- public void setBoolean(String string, boolean b) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setBoolean(string, b);
- }
-
- public void setChar(String string, char c) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setChar(string, c);
- }
-
- public Object setBytes(AMQShortString string, byte[] bytes)
- {
- return getHeaders().setBytes(string, bytes);
- }
-
- public Object setBytes(String string, byte[] bytes)
- {
- return getHeaders().setBytes(string, bytes);
- }
-
- public Object setBytes(String string, byte[] bytes, int start, int length)
- {
- return getHeaders().setBytes(string, bytes, start, length);
- }
-
- public void setByte(String string, byte b) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setByte(string, b);
- }
-
- public void setShort(String string, short i) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setShort(string, i);
- }
-
- public void setInteger(String string, int i) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setInteger(string, i);
- }
-
- public void setLong(String string, long l) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setLong(string, l);
- }
-
- public void setFloat(String string, float v) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setFloat(string, v);
- }
-
- public void setDouble(String string, double v) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setDouble(string, v);
- }
-
- public void setString(String string, String string1) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setString(string, string1);
- }
-
- public void setString(AMQShortString string, String string1) throws JMSException
- {
- checkPropertyName(string);
- getHeaders().setString(string, string1);
- }
-
- public void setObject(String string, Object object) throws JMSException
- {
- checkPropertyName(string);
- try
- {
- getHeaders().setObject(string, object);
- }
- catch (AMQPInvalidClassException aice)
- {
- throw new MessageFormatException("Only primatives are allowed object is:" + object.getClass());
- }
- }
- public boolean itemExists(String string) throws JMSException
- {
- return getHeaders().containsKey(string);
- }
-
- public Enumeration getPropertyNames()
- {
- return getHeaders().getPropertyNames();
- }
-
- public void clear()
- {
- getHeaders().clear();
- }
-
- public boolean propertyExists(AMQShortString propertyName)
- {
- return getHeaders().propertyExists(propertyName);
- }
-
- public boolean propertyExists(String propertyName)
- {
- return getHeaders().propertyExists(propertyName);
- }
-
- public Object put(Object key, Object value)
- {
- return getHeaders().setObject(key.toString(), value);
- }
-
- public Object remove(AMQShortString propertyName)
- {
- return getHeaders().remove(propertyName);
- }
-
- public Object remove(String propertyName)
- {
- return getHeaders().remove(propertyName);
- }
-
- public boolean isEmpty()
- {
- return getHeaders().isEmpty();
- }
-
- public void writeToBuffer(ByteBuffer data)
- {
- getHeaders().writeToBuffer(data);
- }
-
- public Enumeration getMapNames()
- {
- return getPropertyNames();
- }
-
- protected static 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 static 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");
- }
- }
-
- }
}