qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ritch...@apache.org
Subject svn commit: r888392 - in /qpid/branches/0.5.x-dev: ./ qpid/java/ qpid/java/client/src/main/java/org/apache/qpid/client/message/ qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/ qpid/java/test-profiles/
Date Tue, 08 Dec 2009 13:19:59 GMT
Author: ritchiem
Date: Tue Dec  8 13:19:59 2009
New Revision: 888392

URL: http://svn.apache.org/viewvc?rev=888392&view=rev
Log:
QPID-2242 : Update to the 0-8/9 code path to use the 0-10 static lookup tables for the Destination
type when JMS_QPID_DESTTYPE has not been set.

merged from trunk r887994

Added:
    qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java
      - copied unchanged from r887994, qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java
Modified:
    qpid/branches/0.5.x-dev/   (props changed)
    qpid/branches/0.5.x-dev/qpid/java/   (props changed)
    qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate.java
    qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
    qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
    qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/JMSDestinationTest.java
    qpid/branches/0.5.x-dev/qpid/java/test-profiles/08Excludes

Propchange: qpid/branches/0.5.x-dev/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec  8 13:19:59 2009
@@ -1 +1 @@
-/qpid/trunk:887948,887950-887951
+/qpid/trunk:887948,887950-887951,887994

Propchange: qpid/branches/0.5.x-dev/qpid/java/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec  8 13:19:59 2009
@@ -1,2 +1,2 @@
 /qpid/branches/java-broker-0-10/qpid/java:829414,829575
-/qpid/trunk/qpid/java:835115,884634-884635,884838,885765,887948,887950-887952,888246,888248,888250,888348
+/qpid/trunk/qpid/java:835115,884634-884635,884838,885765,887948,887950-887952,887994,888246,888248,888250,888348

Modified: qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate.java?rev=888392&r1=888391&r2=888392&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate.java
(original)
+++ qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate.java
Tue Dec  8 13:19:59 2009
@@ -22,7 +22,6 @@
 package org.apache.qpid.client.message;
 
 import org.apache.qpid.client.AMQSession;
-import org.apache.qpid.framing.BasicContentHeaderProperties;
 
 import javax.jms.Destination;
 import javax.jms.JMSException;

Modified: qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java?rev=888392&r1=888391&r2=888392&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
(original)
+++ qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
Tue Dec  8 13:19:59 2009
@@ -41,12 +41,13 @@
 import javax.jms.MessageFormatException;
 import javax.jms.DeliveryMode;
 import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import org.apache.qpid.exchange.ExchangeDefaults;
 
-public class AMQMessageDelegate_0_10 implements AMQMessageDelegate
+/**
+ * This extends AbstractAMQMessageDelegate which contains common code between
+ * both the 0_8 and 0_10 Message types.
+ *
+ */
+public class AMQMessageDelegate_0_10 extends AbstractAMQMessageDelegate
 {
     private static final Map<ReplyTo, Destination> _destinationCache = Collections.synchronizedMap(new
ReferenceMap());
 
@@ -64,27 +65,6 @@
     private AMQSession _session;
     private final long _deliveryTag;
 
-    private static Map<AMQShortString,Integer> _exchangeTypeMap = new ConcurrentHashMap<AMQShortString,
Integer>();
-    private static Map<String,Integer> _exchangeTypeStringMap = new ConcurrentHashMap<String,
Integer>();
-    private static Map<String, Integer> _exchangeTypeToDestinationType = new ConcurrentHashMap<String,
Integer>();;
-
-    static
-    {
-        _exchangeTypeMap.put(ExchangeDefaults.DIRECT_EXCHANGE_NAME, AMQDestination.QUEUE_TYPE);
-        _exchangeTypeMap.put(AMQShortString.EMPTY_STRING, AMQDestination.QUEUE_TYPE);
-        _exchangeTypeMap.put(ExchangeDefaults.TOPIC_EXCHANGE_NAME, AMQDestination.TOPIC_TYPE);
-        _exchangeTypeMap.put(ExchangeDefaults.FANOUT_EXCHANGE_NAME, AMQDestination.TOPIC_TYPE);
-
-        _exchangeTypeStringMap.put(ExchangeDefaults.DIRECT_EXCHANGE_NAME.toString(), AMQDestination.QUEUE_TYPE);
-        _exchangeTypeStringMap.put("", AMQDestination.QUEUE_TYPE);
-        _exchangeTypeStringMap.put(ExchangeDefaults.TOPIC_EXCHANGE_NAME.toString(), AMQDestination.TOPIC_TYPE);
-        _exchangeTypeStringMap.put(ExchangeDefaults.FANOUT_EXCHANGE_NAME.toString(), AMQDestination.TOPIC_TYPE);
-
-
-        _exchangeTypeToDestinationType.put(ExchangeDefaults.DIRECT_EXCHANGE_CLASS.toString(),
AMQDestination.QUEUE_TYPE);
-        _exchangeTypeToDestinationType.put(ExchangeDefaults.TOPIC_EXCHANGE_NAME.toString(),
AMQDestination.TOPIC_TYPE);
-        _exchangeTypeToDestinationType.put(ExchangeDefaults.FANOUT_EXCHANGE_NAME.toString(),
AMQDestination.TOPIC_TYPE);
-    }
 
     protected AMQMessageDelegate_0_10()
     {
@@ -92,80 +72,49 @@
         _readableProperties = false;
     }
 
-    private AMQDestination generateDestination(AMQShortString exchange, AMQShortString routingKey)
-    {
-        AMQDestination dest;
-        switch(getExchangeType(exchange))
-        {
-            case AMQDestination.QUEUE_TYPE:
-                dest = new AMQQueue(exchange, routingKey, routingKey);
-                break;
-            case  AMQDestination.TOPIC_TYPE:
-                dest = new AMQTopic(exchange, routingKey, null);
-                break;
-            default:
-                dest = new AMQUndefinedDestination(exchange, routingKey, null);
-
-        }
-
-        return dest;
-    }
-
-    private int getExchangeType(AMQShortString exchange)
+    protected AMQMessageDelegate_0_10(MessageProperties messageProps, DeliveryProperties
deliveryProps, long deliveryTag)
     {
-        Integer type = _exchangeTypeMap.get(exchange == null ? AMQShortString.EMPTY_STRING
: exchange);
-
-        if(type == null)
-        {
-            return AMQDestination.UNKNOWN_TYPE;
-        }
+        _messageProps = messageProps;
+        _deliveryProps = deliveryProps;
+        _deliveryTag = deliveryTag;
+        _readableProperties = (_messageProps != null);
 
+        AMQDestination dest;
 
-        return type;
+        dest = generateDestination(new AMQShortString(_deliveryProps.getExchange()),
+                                   new AMQShortString(_deliveryProps.getRoutingKey()));
+        setJMSDestination(dest);        
     }
 
-
+    /**
+     * Use the 0-10 ExchangeQuery call to validate the exchange type.
+     *
+     * This is used primarily to provide the correct JMSDestination value.
+     *
+     * The query is performed synchronously iff the map exchange is not already
+     * present in the exchange Map.
+     *
+     * @param header The message headers, from which the exchange name can be extracted
+     * @param session The 0-10 session to use to call ExchangeQuery
+     */
     public static void updateExchangeTypeMapping(Header header, org.apache.qpid.transport.Session
session)
     {
         DeliveryProperties deliveryProps = header.get(DeliveryProperties.class);
-        if(deliveryProps != null)
+        if (deliveryProps != null)
         {
             String exchange = deliveryProps.getExchange();
 
-            if(exchange != null && !_exchangeTypeStringMap.containsKey(exchange))
+            if (exchange != null && !exchangeMapContains(exchange))
             {
-
-                AMQShortString exchangeShortString = new AMQShortString(exchange);
                 Future<ExchangeQueryResult> future =
-                                session.exchangeQuery(exchange.toString());
+                        session.exchangeQuery(exchange.toString());
                 ExchangeQueryResult res = future.get();
 
-                Integer type = _exchangeTypeToDestinationType.get(res.getType());
-                if(type == null)
-                {
-                    type = AMQDestination.UNKNOWN_TYPE;
-                }
-                _exchangeTypeStringMap.put(exchange, type);
-                _exchangeTypeMap.put(exchangeShortString, type);
-
+                updateExchangeType(exchange, res.getType());
             }
         }
     }
 
-    protected AMQMessageDelegate_0_10(MessageProperties messageProps, DeliveryProperties
deliveryProps, long deliveryTag)
-    {
-        _messageProps = messageProps;
-        _deliveryProps = deliveryProps;
-        _deliveryTag = deliveryTag;
-        _readableProperties = (_messageProps != null);
-
-        AMQDestination dest;
-
-        dest = generateDestination(new AMQShortString(_deliveryProps.getExchange()),
-                                   new AMQShortString(_deliveryProps.getRoutingKey()));
-        setJMSDestination(dest);        
-    }
-
 
     public String getJMSMessageID() throws JMSException
     {

Modified: qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java?rev=888392&r1=888391&r2=888392&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
(original)
+++ qpid/branches/0.5.x-dev/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
Tue Dec  8 13:19:59 2009
@@ -46,7 +46,7 @@
 import java.util.UUID;
 import java.net.URISyntaxException;
 
-public class AMQMessageDelegate_0_8 implements AMQMessageDelegate
+public class AMQMessageDelegate_0_8 extends AbstractAMQMessageDelegate
 {
     private static final Map _destinationCache = Collections.synchronizedMap(new ReferenceMap());
 
@@ -65,6 +65,16 @@
     private AMQSession _session;
     private final long _deliveryTag;
 
+    // The base set of items that needs to be set. 
+    private AMQMessageDelegate_0_8(BasicContentHeaderProperties properties, long deliveryTag)
+    {
+        _contentHeaderProperties = properties;
+        _deliveryTag = deliveryTag;
+        _readableProperties = (_contentHeaderProperties != null);
+        _headerAdapter = new JMSHeaderAdapter(((BasicContentHeaderProperties) _contentHeaderProperties).getHeaders());
+    }
+
+    // Used for the creation of new messages
     protected AMQMessageDelegate_0_8()
     {
         this(new BasicContentHeaderProperties(), -1);
@@ -73,6 +83,7 @@
 
     }
 
+    // Used when generating a received message object
     protected AMQMessageDelegate_0_8(long deliveryTag, BasicContentHeaderProperties contentHeader,
AMQShortString exchange,
                                      AMQShortString routingKey) 
     {
@@ -80,41 +91,33 @@
 
         Integer type = contentHeader.getHeaders().getInteger(CustomJMSXProperty.JMS_QPID_DESTTYPE.getShortStringName());
 
-        if(type == null)
+        AMQDestination dest = null;
+
+        // If we have a type set the attempt to use that.
+        if (type != null)
         {
-            type = AMQDestination.UNKNOWN_TYPE;
+            switch (type.intValue())
+            {
+                case AMQDestination.QUEUE_TYPE:
+                    dest = new AMQQueue(exchange, routingKey, routingKey);
+                    break;
+                case AMQDestination.TOPIC_TYPE:
+                    dest = new AMQTopic(exchange, routingKey, null);
+                    break;
+                default:
+                    // Use the generateDestination method
+                    dest = null;
+            }
         }
 
-        AMQDestination dest;
-
-        switch(type.intValue())
+        if (dest == null)
         {
-            case AMQDestination.QUEUE_TYPE:
-                dest = new AMQQueue(exchange, routingKey, routingKey);
-                break;
-            case  AMQDestination.TOPIC_TYPE:
-                dest = new AMQTopic(exchange, routingKey, null);
-                break;
-            default:
-                dest = new AMQUndefinedDestination(exchange, routingKey, null);
+            dest = generateDestination(exchange, routingKey);
         }
-        
 
-
-        // Destination dest = AMQDestination.createDestination(url);
         setJMSDestination(dest);
-
-
-
     }
 
-    protected AMQMessageDelegate_0_8(BasicContentHeaderProperties properties, long deliveryTag)
-    {
-        _contentHeaderProperties = properties;
-        _deliveryTag = deliveryTag;
-        _readableProperties = (_contentHeaderProperties != null);
-        _headerAdapter = new JMSHeaderAdapter(((BasicContentHeaderProperties) _contentHeaderProperties).getHeaders());
-    }
 
 
     public String getJMSMessageID() throws JMSException

Modified: qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/JMSDestinationTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/JMSDestinationTest.java?rev=888392&r1=888391&r2=888392&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/JMSDestinationTest.java
(original)
+++ qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/JMSDestinationTest.java
Tue Dec  8 13:19:59 2009
@@ -57,6 +57,9 @@
 
     public void setUp() throws Exception
     {
+        //Ensure JMX management is enabled for MovedToQueue test 
+        setConfigurationProperty("management.enabled", "true");
+        
         super.setUp();
 
         _connection = getConnection();

Modified: qpid/branches/0.5.x-dev/qpid/java/test-profiles/08Excludes
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/test-profiles/08Excludes?rev=888392&r1=888391&r2=888392&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/test-profiles/08Excludes (original)
+++ qpid/branches/0.5.x-dev/qpid/java/test-profiles/08Excludes Tue Dec  8 13:19:59 2009
@@ -18,5 +18,3 @@
 org.apache.qpid.management.jmx.ManagementActorLoggingTest#*
 org.apache.qpid.server.queue.ModelTest#*
 
-// QPID-2242 exclude till issue has been resolved
-org.apache.qpid.test.client.message.JMSDestinationTest#*



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org


Mime
View raw message