You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ha...@apache.org on 2014/12/16 00:21:50 UTC

[05/17] activemq git commit: https://issues.apache.org/jira/browse/AMQ-5211

https://issues.apache.org/jira/browse/AMQ-5211

Throw an exception if the destination name is empty.


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/23cfa4e3
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/23cfa4e3
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/23cfa4e3

Branch: refs/heads/activemq-5.10.x
Commit: 23cfa4e373ca55d03da25db45bc6106bc43afbdd
Parents: 7536983
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Jun 6 12:04:46 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:37:52 2014 -0500

----------------------------------------------------------------------
 .../activemq/command/ActiveMQDestination.java   | 75 +++++++++++---------
 .../command/ActiveMQDestinationTest.java        | 25 +++++--
 2 files changed, 64 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/23cfa4e3/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java b/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
index 0cea4e5..bb80a8e 100755
--- a/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
+++ b/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
@@ -42,7 +42,6 @@ import org.apache.activemq.util.URISupport;
 
 /**
  * @openwire:marshaller
- *
  */
 public abstract class ActiveMQDestination extends JNDIBaseStorable implements DataStructure, Destination, Externalizable, Comparable<Object> {
 
@@ -85,7 +84,6 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
         setCompositeDestinations(composites);
     }
 
-
     // static helper methods for working with destinations
     // -------------------------------------------------------------------------
     public static ActiveMQDestination createDestination(String name, byte defaultType) {
@@ -100,16 +98,16 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
         }
 
         switch (defaultType) {
-        case QUEUE_TYPE:
-            return new ActiveMQQueue(name);
-        case TOPIC_TYPE:
-            return new ActiveMQTopic(name);
-        case TEMP_QUEUE_TYPE:
-            return new ActiveMQTempQueue(name);
-        case TEMP_TOPIC_TYPE:
-            return new ActiveMQTempTopic(name);
-        default:
-            throw new IllegalArgumentException("Invalid default destination type: " + defaultType);
+            case QUEUE_TYPE:
+                return new ActiveMQQueue(name);
+            case TOPIC_TYPE:
+                return new ActiveMQTopic(name);
+            case TEMP_QUEUE_TYPE:
+                return new ActiveMQTempQueue(name);
+            case TEMP_TOPIC_TYPE:
+                return new ActiveMQTempTopic(name);
+            default:
+                throw new IllegalArgumentException("Invalid default destination type: " + defaultType);
         }
     }
 
@@ -118,7 +116,7 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
             return null;
         }
         if (dest instanceof ActiveMQDestination) {
-            return (ActiveMQDestination)dest;
+            return (ActiveMQDestination) dest;
         }
 
         if (dest instanceof Queue && dest instanceof Topic) {
@@ -133,16 +131,16 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
             }
         }
         if (dest instanceof TemporaryQueue) {
-            return new ActiveMQTempQueue(((TemporaryQueue)dest).getQueueName());
+            return new ActiveMQTempQueue(((TemporaryQueue) dest).getQueueName());
         }
         if (dest instanceof TemporaryTopic) {
-            return new ActiveMQTempTopic(((TemporaryTopic)dest).getTopicName());
+            return new ActiveMQTempTopic(((TemporaryTopic) dest).getTopicName());
         }
         if (dest instanceof Queue) {
-            return new ActiveMQQueue(((Queue)dest).getQueueName());
+            return new ActiveMQQueue(((Queue) dest).getQueueName());
         }
         if (dest instanceof Topic) {
-            return new ActiveMQTopic(((Topic)dest).getTopicName());
+            return new ActiveMQTopic(((Topic) dest).getTopicName());
         }
         throw new JMSException("Could not transform the destination into a ActiveMQ destination: " + dest);
     }
@@ -167,7 +165,7 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
     @Override
     public int compareTo(Object that) {
         if (that instanceof ActiveMQDestination) {
-            return compare(this, (ActiveMQDestination)that);
+            return compare(this, (ActiveMQDestination) that);
         }
         if (that == null) {
             return 1;
@@ -222,11 +220,16 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
 
     public void setPhysicalName(String physicalName) {
         physicalName = physicalName.trim();
-        final int len = physicalName.length();
+        final int length = physicalName.length();
+
+        if (physicalName.isEmpty()) {
+            throw new IllegalArgumentException("Invalid destination name: a non-empty name is required");
+        }
+
         // options offset
         int p = -1;
         boolean composite = false;
-        for (int i = 0; i < len; i++) {
+        for (int i = 0; i < length; i++) {
             char c = physicalName.charAt(i);
             if (c == '?') {
                 p = i;
@@ -314,6 +317,7 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
         return false;
     }
 
+    @Override
     public boolean equals(Object o) {
         if (this == o) {
             return true;
@@ -322,10 +326,11 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
             return false;
         }
 
-        ActiveMQDestination d = (ActiveMQDestination)o;
+        ActiveMQDestination d = (ActiveMQDestination) o;
         return physicalName.equals(d.physicalName);
     }
 
+    @Override
     public int hashCode() {
         if (hashValue == 0) {
             hashValue = physicalName.hashCode();
@@ -333,33 +338,36 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
         return hashValue;
     }
 
+    @Override
     public String toString() {
         return getQualifiedName();
     }
 
+    @Override
     public void writeExternal(ObjectOutput out) throws IOException {
         out.writeUTF(this.getPhysicalName());
         out.writeObject(options);
     }
 
+    @Override
     @SuppressWarnings("unchecked")
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
         this.setPhysicalName(in.readUTF());
-        this.options = (Map<String, String>)in.readObject();
+        this.options = (Map<String, String>) in.readObject();
     }
 
     public String getDestinationTypeAsString() {
         switch (getDestinationType()) {
-        case QUEUE_TYPE:
-            return "Queue";
-        case TOPIC_TYPE:
-            return "Topic";
-        case TEMP_QUEUE_TYPE:
-            return "TempQueue";
-        case TEMP_TOPIC_TYPE:
-            return "TempTopic";
-        default:
-            throw new IllegalArgumentException("Invalid destination type: " + getDestinationType());
+            case QUEUE_TYPE:
+                return "Queue";
+            case TOPIC_TYPE:
+                return "Topic";
+            case TEMP_QUEUE_TYPE:
+                return "TempQueue";
+            case TEMP_TOPIC_TYPE:
+                return "TempTopic";
+            default:
+                throw new IllegalArgumentException("Invalid destination type: " + getDestinationType());
         }
     }
 
@@ -367,10 +375,12 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
         return options;
     }
 
+    @Override
     public boolean isMarshallAware() {
         return false;
     }
 
+    @Override
     public void buildFromProperties(Properties properties) {
         if (properties == null) {
             properties = new Properties();
@@ -379,6 +389,7 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da
         IntrospectionSupport.setProperties(this, properties);
     }
 
+    @Override
     public void populateProperties(Properties props) {
         props.setProperty("physicalName", getPhysicalName());
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/23cfa4e3/activemq-unit-tests/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java
index 2ed668f..844be34 100755
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java
@@ -36,7 +36,7 @@ public class ActiveMQDestinationTest extends DataStructureTestSupport {
 
     public ActiveMQDestination destination;
 
-    public void initCombosForTestDesintaionMarshaling() {
+    public void initCombosForTestDestinationMarshaling() {
         addCombinationValues("destination", new Object[] {new ActiveMQQueue("TEST"),
                                                           new ActiveMQTopic("TEST"),
                                                           new ActiveMQTempQueue("TEST:1"),
@@ -49,18 +49,18 @@ public class ActiveMQDestinationTest extends DataStructureTestSupport {
                                                           new ActiveMQTempTopic("TEST:1?option=value")});
     }
 
-    public void testDesintaionMarshaling() throws IOException {
+    public void testDestinationMarshaling() throws IOException {
         assertBeanMarshalls(destination);
     }
 
-    public void initCombosForTestDesintaionOptions() {
+    public void initCombosForTestDestinationOptions() {
         addCombinationValues("destination", new Object[] {new ActiveMQQueue("TEST?k1=v1&k2=v2"),
                                                           new ActiveMQTopic("TEST?k1=v1&k2=v2"),
                                                           new ActiveMQTempQueue("TEST:1?k1=v1&k2=v2"),
                                                           new ActiveMQTempTopic("TEST:1?k1=v1&k2=v2")});
     }
 
-    public void testDesintaionOptions() throws IOException {
+    public void testDestinationOptions() throws IOException {
         Map options = destination.getOptions();
         assertNotNull(options);
         assertEquals("v1", options.get("k1"));
@@ -125,4 +125,21 @@ public class ActiveMQDestinationTest extends DataStructureTestSupport {
         junit.textui.TestRunner.run(suite());
     }
 
+    public void testEmptyQueueName() {
+        try {
+            new ActiveMQQueue("");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
+    public void testEmptyTopicName() {
+        try {
+            new ActiveMQTopic("");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
 }