diff options
author | Robert Greig <rgreig@apache.org> | 2007-01-24 20:50:47 +0000 |
---|---|---|
committer | Robert Greig <rgreig@apache.org> | 2007-01-24 20:50:47 +0000 |
commit | 9fe1026450626ed29511466b8f3ddebe844ea894 (patch) | |
tree | 1a4ff54d1882db55b1066d639f56436775e3e649 /java | |
parent | 485c128337350ea77dbc469122fe01141c03d055 (diff) | |
download | qpid-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')
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"); - } - } - - } } |