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:46 UTC

[01/17] activemq git commit: Update artifacts version on maintenance branch

Repository: activemq
Updated Branches:
  refs/heads/activemq-5.10.x [created] 3ab3f04f9


Update artifacts version on maintenance branch


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

Branch: refs/heads/activemq-5.10.x
Commit: 2f4d83fc82aa6a74f4a312b20f847f53e865bcbb
Parents: 58dd93e
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Thu Dec 11 18:03:17 2014 -0500
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Thu Dec 11 18:03:17 2014 -0500

----------------------------------------------------------------------
 activemq-all/pom.xml                                   | 2 +-
 activemq-amqp/pom.xml                                  | 2 +-
 activemq-blueprint/pom.xml                             | 2 +-
 activemq-broker/pom.xml                                | 2 +-
 activemq-camel/pom.xml                                 | 2 +-
 activemq-client/pom.xml                                | 2 +-
 activemq-console/pom.xml                               | 2 +-
 activemq-fileserver/pom.xml                            | 2 +-
 activemq-http/pom.xml                                  | 2 +-
 activemq-itests-spring31/pom.xml                       | 2 +-
 activemq-jaas/pom.xml                                  | 2 +-
 activemq-jdbc-store/pom.xml                            | 2 +-
 activemq-jms-pool/pom.xml                              | 2 +-
 activemq-kahadb-store/pom.xml                          | 2 +-
 activemq-karaf-itest/pom.xml                           | 2 +-
 activemq-karaf/pom.xml                                 | 2 +-
 activemq-leveldb-store/pom.xml                         | 2 +-
 activemq-log4j-appender/pom.xml                        | 2 +-
 activemq-mqtt/pom.xml                                  | 2 +-
 activemq-openwire-generator/pom.xml                    | 2 +-
 activemq-openwire-legacy/pom.xml                       | 2 +-
 activemq-osgi/pom.xml                                  | 2 +-
 activemq-partition/pom.xml                             | 2 +-
 activemq-pool/pom.xml                                  | 2 +-
 activemq-ra/pom.xml                                    | 2 +-
 activemq-rar/pom.xml                                   | 2 +-
 activemq-run/pom.xml                                   | 2 +-
 activemq-runtime-config/pom.xml                        | 2 +-
 activemq-shiro/pom.xml                                 | 2 +-
 activemq-spring/pom.xml                                | 2 +-
 activemq-stomp/pom.xml                                 | 2 +-
 activemq-tooling/activemq-maven-plugin/pom.xml         | 2 +-
 activemq-tooling/activemq-memtest-maven-plugin/pom.xml | 2 +-
 activemq-tooling/activemq-perf-maven-plugin/pom.xml    | 2 +-
 activemq-tooling/pom.xml                               | 2 +-
 activemq-unit-tests/pom.xml                            | 2 +-
 activemq-web-console/pom.xml                           | 2 +-
 activemq-web-demo/pom.xml                              | 2 +-
 activemq-web/pom.xml                                   | 2 +-
 assembly/pom.xml                                       | 2 +-
 pom.xml                                                | 4 ++--
 41 files changed, 42 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-all/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-all/pom.xml b/activemq-all/pom.xml
index eba000d..4b7f998 100644
--- a/activemq-all/pom.xml
+++ b/activemq-all/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-all</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-amqp/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-amqp/pom.xml b/activemq-amqp/pom.xml
index 01d76da..26f4d62 100644
--- a/activemq-amqp/pom.xml
+++ b/activemq-amqp/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-amqp</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-blueprint/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-blueprint/pom.xml b/activemq-blueprint/pom.xml
index 2a5340a..2e11630 100644
--- a/activemq-blueprint/pom.xml
+++ b/activemq-blueprint/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-blueprint</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-broker/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-broker/pom.xml b/activemq-broker/pom.xml
index b9b6a78..bf38cb8 100755
--- a/activemq-broker/pom.xml
+++ b/activemq-broker/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-broker</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-camel/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-camel/pom.xml b/activemq-camel/pom.xml
index 7e2f481..1be8c36 100755
--- a/activemq-camel/pom.xml
+++ b/activemq-camel/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-camel</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-client/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-client/pom.xml b/activemq-client/pom.xml
index 887cd24..429ea3a 100755
--- a/activemq-client/pom.xml
+++ b/activemq-client/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-client</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-console/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-console/pom.xml b/activemq-console/pom.xml
index 3f07a80..a53e5fc 100644
--- a/activemq-console/pom.xml
+++ b/activemq-console/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-console</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-fileserver/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-fileserver/pom.xml b/activemq-fileserver/pom.xml
index 4e215d6..a3cbbe5 100755
--- a/activemq-fileserver/pom.xml
+++ b/activemq-fileserver/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-fileserver</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-http/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-http/pom.xml b/activemq-http/pom.xml
index 84e5964..1c2bf2f 100755
--- a/activemq-http/pom.xml
+++ b/activemq-http/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-http</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-itests-spring31/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-itests-spring31/pom.xml b/activemq-itests-spring31/pom.xml
index ea291bf..5c927ef 100755
--- a/activemq-itests-spring31/pom.xml
+++ b/activemq-itests-spring31/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-itests-spring31</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-jaas/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-jaas/pom.xml b/activemq-jaas/pom.xml
index 83bbc65..4424471 100644
--- a/activemq-jaas/pom.xml
+++ b/activemq-jaas/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-jaas</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-jdbc-store/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-jdbc-store/pom.xml b/activemq-jdbc-store/pom.xml
index a7b3a59..f6de2e3 100755
--- a/activemq-jdbc-store/pom.xml
+++ b/activemq-jdbc-store/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-jdbc-store</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-jms-pool/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/pom.xml b/activemq-jms-pool/pom.xml
index 9a52a76..a42e901 100755
--- a/activemq-jms-pool/pom.xml
+++ b/activemq-jms-pool/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-jms-pool</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-kahadb-store/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/pom.xml b/activemq-kahadb-store/pom.xml
index 6dd7e26..b8944f6 100755
--- a/activemq-kahadb-store/pom.xml
+++ b/activemq-kahadb-store/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-kahadb-store</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-karaf-itest/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/pom.xml b/activemq-karaf-itest/pom.xml
index cee82ca..bde45d4 100644
--- a/activemq-karaf-itest/pom.xml
+++ b/activemq-karaf-itest/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-karaf-itest</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-karaf/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-karaf/pom.xml b/activemq-karaf/pom.xml
index 71eb0ef..e63bd96 100644
--- a/activemq-karaf/pom.xml
+++ b/activemq-karaf/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-karaf</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-leveldb-store/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-leveldb-store/pom.xml b/activemq-leveldb-store/pom.xml
index 501d196..cdc24d6 100644
--- a/activemq-leveldb-store/pom.xml
+++ b/activemq-leveldb-store/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-leveldb-store</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-log4j-appender/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-log4j-appender/pom.xml b/activemq-log4j-appender/pom.xml
index 9cf5c55..964fa7b 100755
--- a/activemq-log4j-appender/pom.xml
+++ b/activemq-log4j-appender/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-log4j-appender</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-mqtt/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-mqtt/pom.xml b/activemq-mqtt/pom.xml
index ac72453..45df0db 100755
--- a/activemq-mqtt/pom.xml
+++ b/activemq-mqtt/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-mqtt</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-openwire-generator/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-openwire-generator/pom.xml b/activemq-openwire-generator/pom.xml
index c3a0db7..4e0abc3 100644
--- a/activemq-openwire-generator/pom.xml
+++ b/activemq-openwire-generator/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-openwire-generator</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-openwire-legacy/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-openwire-legacy/pom.xml b/activemq-openwire-legacy/pom.xml
index 3efa053..24f01e6 100755
--- a/activemq-openwire-legacy/pom.xml
+++ b/activemq-openwire-legacy/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-openwire-legacy</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-osgi/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-osgi/pom.xml b/activemq-osgi/pom.xml
index 397d713..b7c6318 100644
--- a/activemq-osgi/pom.xml
+++ b/activemq-osgi/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-osgi</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-partition/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-partition/pom.xml b/activemq-partition/pom.xml
index 4c31057..603a865 100644
--- a/activemq-partition/pom.xml
+++ b/activemq-partition/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-partition</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-pool/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-pool/pom.xml b/activemq-pool/pom.xml
index 75b5e28..388823d 100755
--- a/activemq-pool/pom.xml
+++ b/activemq-pool/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-pool</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-ra/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-ra/pom.xml b/activemq-ra/pom.xml
index f1b3eb4..62bc85e 100755
--- a/activemq-ra/pom.xml
+++ b/activemq-ra/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-ra</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-rar/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-rar/pom.xml b/activemq-rar/pom.xml
index e747b2e..9a28559 100644
--- a/activemq-rar/pom.xml
+++ b/activemq-rar/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-rar</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-run/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-run/pom.xml b/activemq-run/pom.xml
index ada0633..cc477fe 100644
--- a/activemq-run/pom.xml
+++ b/activemq-run/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-run</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-runtime-config/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/pom.xml b/activemq-runtime-config/pom.xml
index ff303bd..3d958d2 100755
--- a/activemq-runtime-config/pom.xml
+++ b/activemq-runtime-config/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-runtime-config</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-shiro/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-shiro/pom.xml b/activemq-shiro/pom.xml
index cc1fbeb..c27f574 100644
--- a/activemq-shiro/pom.xml
+++ b/activemq-shiro/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.activemq</groupId>
         <artifactId>activemq-parent</artifactId>
-        <version>5.10.0</version>
+        <version>5.10.1-SNAPSHOT</version>
     </parent>
 
     <artifactId>activemq-shiro</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-spring/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-spring/pom.xml b/activemq-spring/pom.xml
index 9da824b..8c779b3 100755
--- a/activemq-spring/pom.xml
+++ b/activemq-spring/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-spring</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-stomp/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-stomp/pom.xml b/activemq-stomp/pom.xml
index ffdf15b..3d3a86a 100755
--- a/activemq-stomp/pom.xml
+++ b/activemq-stomp/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-stomp</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-tooling/activemq-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-tooling/activemq-maven-plugin/pom.xml b/activemq-tooling/activemq-maven-plugin/pom.xml
index bfac960..8b43be7 100644
--- a/activemq-tooling/activemq-maven-plugin/pom.xml
+++ b/activemq-tooling/activemq-maven-plugin/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.activemq.tooling</groupId>
     <artifactId>activemq-tooling</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-tooling/activemq-memtest-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-tooling/activemq-memtest-maven-plugin/pom.xml b/activemq-tooling/activemq-memtest-maven-plugin/pom.xml
index a22db61..2bb2e14 100644
--- a/activemq-tooling/activemq-memtest-maven-plugin/pom.xml
+++ b/activemq-tooling/activemq-memtest-maven-plugin/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq.tooling</groupId>
     <artifactId>activemq-tooling</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-memtest-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-tooling/activemq-perf-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-tooling/activemq-perf-maven-plugin/pom.xml b/activemq-tooling/activemq-perf-maven-plugin/pom.xml
index 11887cb..726e1b9 100644
--- a/activemq-tooling/activemq-perf-maven-plugin/pom.xml
+++ b/activemq-tooling/activemq-perf-maven-plugin/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.activemq.tooling</groupId>
     <artifactId>activemq-tooling</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-perf-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-tooling/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-tooling/pom.xml b/activemq-tooling/pom.xml
index 96ed480..00fa137 100644
--- a/activemq-tooling/pom.xml
+++ b/activemq-tooling/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.activemq.tooling</groupId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-unit-tests/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/pom.xml b/activemq-unit-tests/pom.xml
index f725e4e..94fa637 100755
--- a/activemq-unit-tests/pom.xml
+++ b/activemq-unit-tests/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-unit-tests</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-web-console/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-web-console/pom.xml b/activemq-web-console/pom.xml
index bcbd50d..7aa9c80 100755
--- a/activemq-web-console/pom.xml
+++ b/activemq-web-console/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-web-console</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-web-demo/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-web-demo/pom.xml b/activemq-web-demo/pom.xml
index aedf0a5..9c6b6e9 100755
--- a/activemq-web-demo/pom.xml
+++ b/activemq-web-demo/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-web-demo</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/activemq-web/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-web/pom.xml b/activemq-web/pom.xml
index 758070e..b797b82 100755
--- a/activemq-web/pom.xml
+++ b/activemq-web/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activemq-web</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/assembly/pom.xml
----------------------------------------------------------------------
diff --git a/assembly/pom.xml b/assembly/pom.xml
index e04f5b5..6a889d6 100755
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-parent</artifactId>
-    <version>5.10.0</version>
+    <version>5.10.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>apache-activemq</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq/blob/2f4d83fc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1ff14ee..bc7023d 100755
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
 
   <groupId>org.apache.activemq</groupId>
   <artifactId>activemq-parent</artifactId>
-  <version>5.10.0</version>
+  <version>5.10.1-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>ActiveMQ</name>
   <inceptionYear>2005</inceptionYear>
@@ -267,7 +267,7 @@
     <connection>scm:git:http://git-wip-us.apache.org/repos/asf/activemq.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/activemq.git</developerConnection>
     <url>https://fisheye6.atlassian.com/browse/~br=master/activemq-git</url>
-    <tag>activemq-5.10.0</tag>
+    <tag>HEAD</tag>
   </scm>
 
   <dependencyManagement>


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

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5231

Only apply timeout to the Message sends, other commands are handled
separately as needed.


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

Branch: refs/heads/activemq-5.10.x
Commit: 70b02fde333959b4c7ad91e15ddbca144061e2d2
Parents: f63bd32
Author: Timothy Bish <ta...@gmail.com>
Authored: Wed Jun 18 12:58:50 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 17:01:30 2014 -0500

----------------------------------------------------------------------
 .../transport/failover/FailoverTransport.java   |  2 +-
 .../transport/failover/FailoverTimeoutTest.java | 47 +++++++++++++++++++-
 2 files changed, 46 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/70b02fde/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
index 2829d41..6df82ed 100755
--- a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
+++ b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
@@ -602,7 +602,7 @@ public class FailoverTransport implements CompositeTransport {
                                 LOG.trace("Waiting for transport to reconnect..: " + command);
                             }
                             long end = System.currentTimeMillis();
-                            if (timeout > 0 && (end - start > timeout)) {
+                            if (command.isMessage() && timeout > 0 && (end - start > timeout)) {
                                 timedout = true;
                                 if (LOG.isInfoEnabled()) {
                                     LOG.info("Failover timed out after " + (end - start) + "ms");

http://git-wip-us.apache.org/repos/asf/activemq/blob/70b02fde/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
index e52b2c7..9ef6e28 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
@@ -16,23 +16,36 @@
  */
 package org.apache.activemq.transport.failover;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import java.net.URI;
+
 import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.jms.TextMessage;
-import junit.framework.TestCase;
+
 import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.activemq.broker.BrokerService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class FailoverTimeoutTest {
 
-public class FailoverTimeoutTest extends TestCase {
+    private static final Logger LOG = LoggerFactory.getLogger(FailoverTimeoutTest.class);
 
     private static final String QUEUE_NAME = "test.failovertimeout";
     BrokerService bs;
     URI tcpUri;
 
+    @Before
     public void setUp() throws Exception {
         bs = new BrokerService();
         bs.setUseJmx(false);
@@ -41,12 +54,41 @@ public class FailoverTimeoutTest extends TestCase {
         tcpUri = bs.getTransportConnectors().get(0).getConnectUri();
     }
 
+    @After
     public void tearDown() throws Exception {
         if (bs != null) {
             bs.stop();
         }
     }
 
+    @Test
+    public void testTimoutDoesNotFailConnectionAttempts() throws Exception {
+        bs.stop();
+        long timeout = 1000;
+
+        long startTime = System.currentTimeMillis();
+
+        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(
+            "failover:(" + tcpUri + ")" +
+            "?timeout=" + timeout + "&useExponentialBackOff=false" +
+            "&maxReconnectAttempts=5" + "&initialReconnectDelay=1000");
+        Connection connection = cf.createConnection();
+        try {
+            connection.start();
+            fail("Should have failed to connect");
+        } catch (JMSException ex) {
+            LOG.info("Caught exception on call to start: {}", ex.getMessage());
+        }
+
+        long endTime = System.currentTimeMillis();
+        long duration = endTime - startTime;
+
+        LOG.info("Time spent waiting to connect: {} ms", duration);
+
+        assertTrue(duration > 3000);
+    }
+
+    @Test
     public void testTimeout() throws Exception {
 
         long timeout = 1000;
@@ -77,6 +119,7 @@ public class FailoverTimeoutTest extends TestCase {
         bs.stop();
     }
 
+    @Test
     public void testUpdateUris() throws Exception {
 
         ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")?useExponentialBackOff=false");


[15/17] activemq git commit: https://issues.apache.org/jira/browse/AMQ-5241 - track window between sending shutdown info and doing local close to avoid race with broker on normal connection.close - needs two jvm to reliably reproduce so no unit test with

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5241 - track window between sending shutdown info and doing local close to avoid race with broker on normal connection.close - needs two jvm to reliably reproduce so no unit test with the fix


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

Branch: refs/heads/activemq-5.10.x
Commit: dc900a3d5c5c8a45bb92c82a09bb075838abdc97
Parents: 70b02fd
Author: gtully <ga...@gmail.com>
Authored: Mon Jun 23 12:12:39 2014 +0100
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 17:03:53 2014 -0500

----------------------------------------------------------------------
 .../activemq/transport/failover/FailoverTransport.java  | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/dc900a3d/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
index 6df82ed..c9ef141 100755
--- a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
+++ b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
@@ -128,6 +128,7 @@ public class FailoverTransport implements CompositeTransport {
     private final ArrayList<URI> priorityList = new ArrayList<URI>();
     private boolean priorityBackupAvailable = false;
     private String nestedExtraQueryOptions;
+    private boolean shuttingDown = false;
 
     public FailoverTransport() throws InterruptedIOException {
         brokerSslContext = SslContext.getCurrentSslContext();
@@ -242,6 +243,12 @@ public class FailoverTransport implements CompositeTransport {
 
     public final void handleTransportFailure(IOException e) throws InterruptedException {
         synchronized (reconnectMutex) {
+            if (shuttingDown) {
+                // shutdown info sent and remote socket closed and we see that before a local close
+                // let the close do the work
+                return;
+            }
+
             if (LOG.isTraceEnabled()) {
                 LOG.trace(this + " handleTransportFailure: " + e, e);
             }
@@ -257,7 +264,7 @@ public class FailoverTransport implements CompositeTransport {
                 if (canReconnect()) {
                     reconnectOk = true;
                 }
-                LOG.warn("Transport (" + transport + ") failed, reason:  "
+                LOG.warn("Transport (" + transport + ") failed"
                         + (reconnectOk ? "," : ", not") + " attempting to automatically reconnect", e);
 
                 initialized = false;
@@ -657,6 +664,9 @@ public class FailoverTransport implements CompositeTransport {
                         try {
                             transport.oneway(command);
                             stateTracker.trackBack(command);
+                            if (command.isShutdownInfo()) {
+                                shuttingDown = true;
+                            }
                         } catch (IOException e) {
 
                             // If the command was not tracked.. we will retry in


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

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5016

Added test and a fix.


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

Branch: refs/heads/activemq-5.10.x
Commit: ee9b3ef72ba8f029183dd8151b4ecbef528fd28b
Parents: 100afb0
Author: Timothy Bish <ta...@gmail.com>
Authored: Wed Jun 11 14:20:00 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:50:52 2014 -0500

----------------------------------------------------------------------
 .../org/apache/activemq/util/BitArrayBin.java   |  28 ++--
 .../apache/activemq/util/BitArrayBinTest.java   | 134 ++++++++++---------
 2 files changed, 88 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/ee9b3ef7/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java b/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
index 592873b..528144e 100755
--- a/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
+++ b/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
@@ -21,21 +21,21 @@ import java.util.LinkedList;
 
 /**
  * Holder for many bitArrays - used for message audit
- * 
- * 
+ *
+ *
  */
 public class BitArrayBin implements Serializable {
 
     private static final long serialVersionUID = 1L;
-    private LinkedList<BitArray> list;
+    private final LinkedList<BitArray> list;
     private int maxNumberOfArrays;
-    private int firstIndex = -1;
+    private long firstIndex = -1;
     private long lastInOrderBit=-1;
 
     /**
      * Create a BitArrayBin to a certain window size (number of messages to
      * keep)
-     * 
+     *
      * @param windowSize
      */
     public BitArrayBin(int windowSize) {
@@ -49,7 +49,7 @@ public class BitArrayBin implements Serializable {
 
     /**
      * Set a bit
-     * 
+     *
      * @param index
      * @param value
      * @return true if set
@@ -65,7 +65,7 @@ public class BitArrayBin implements Serializable {
         }
         return answer;
     }
-    
+
     /**
      * Test if in order
      * @param index
@@ -85,7 +85,7 @@ public class BitArrayBin implements Serializable {
 
     /**
      * Get the boolean value at the index
-     * 
+     *
      * @param index
      * @return true/false
      */
@@ -107,7 +107,7 @@ public class BitArrayBin implements Serializable {
 
     /**
      * Get the BitArray for the index
-     * 
+     *
      * @param index
      * @return BitArray
      */
@@ -123,7 +123,7 @@ public class BitArrayBin implements Serializable {
                     list.add(new BitArray());
                     overShoot--;
                 }
-                
+
                 bin = maxNumberOfArrays - 1;
             }
             answer = list.get(bin);
@@ -137,7 +137,7 @@ public class BitArrayBin implements Serializable {
 
     /**
      * Get the index of the bin from the total index
-     * 
+     *
      * @param index
      * @return the index of the bin
      */
@@ -153,7 +153,7 @@ public class BitArrayBin implements Serializable {
 
     /**
      * Get the offset into a bin from the total index
-     * 
+     *
      * @param index
      * @return the relative offset into a bin
      */
@@ -167,9 +167,9 @@ public class BitArrayBin implements Serializable {
 
     public long getLastSetIndex() {
         long result = -1;
-        
+
         if (firstIndex >=0) {
-            result = firstIndex;   
+            result = firstIndex;
             BitArray last = null;
             for (int lastBitArrayIndex = maxNumberOfArrays -1; lastBitArrayIndex >= 0; lastBitArrayIndex--) {
                 last = list.get(lastBitArrayIndex);

http://git-wip-us.apache.org/repos/asf/activemq/blob/ee9b3ef7/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java b/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
index e1276d8..2b17d8f 100644
--- a/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
+++ b/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
@@ -16,16 +16,21 @@
  */
 package org.apache.activemq.util;
 
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
-public class BitArrayBinTest extends TestCase {
-        
+import org.junit.Test;
+
+public class BitArrayBinTest {
+
+    @Test
     public void testSetAroundWindow() throws Exception {
         doTestSetAroundWindow(500, 2000);
         doTestSetAroundWindow(512, 2000);
         doTestSetAroundWindow(128, 512);
     }
 
+    @Test
     public void testSetHiLo() throws Exception {
         BitArrayBin toTest = new BitArrayBin(50);
         toTest.setBit(0, true);
@@ -34,127 +39,136 @@ public class BitArrayBinTest extends TestCase {
         assertTrue("set", toTest.getBit(0));
 
         toTest.setBit(0, true);
-        assertTrue("set", toTest.getBit(0));        
+        assertTrue("set", toTest.getBit(0));
     }
-    
+
     private void doTestSetAroundWindow(int window, int dataSize) throws Exception {
 
         BitArrayBin toTest = new BitArrayBin(window);
-        
-        for (int i=0; i <= dataSize; i++) {
+
+        for (int i = 0; i <= dataSize; i++) {
             assertTrue("not already set", !toTest.setBit(i, Boolean.TRUE));
             assertEquals("current is max", i, toTest.getLastSetIndex());
         }
 
         assertEquals("last is max", dataSize, toTest.getLastSetIndex());
-        
+
         int windowOfValidData = roundWindow(dataSize, window);
-        int i=dataSize;
-        for (; i >= dataSize -windowOfValidData; i--) {
+        int i = dataSize;
+        for (; i >= dataSize - windowOfValidData; i--) {
             assertTrue("was already set, id=" + i, toTest.setBit(i, Boolean.TRUE));
         }
 
         assertEquals("last is still max", dataSize, toTest.getLastSetIndex());
-        
+
         for (; i >= 0; i--) {
             assertTrue("was not already set, id=" + i, !toTest.setBit(i, Boolean.TRUE));
         }
-        
-        for (int j= dataSize +1; j<=(2*dataSize); j++) {
+
+        for (int j = dataSize + 1; j <= (2 * dataSize); j++) {
             assertTrue("not already set: id=" + j, !toTest.setBit(j, Boolean.TRUE));
         }
-        
-        assertEquals("last still max*2", 2*dataSize, toTest.getLastSetIndex());
 
+        assertEquals("last still max*2", 2 * dataSize, toTest.getLastSetIndex());
     }
-    
+
+    @Test
     public void testSetUnsetAroundWindow() throws Exception {
         doTestSetUnSetAroundWindow(500, 2000);
         doTestSetUnSetAroundWindow(512, 2000);
         doTestSetUnSetAroundWindow(128, 512);
     }
-    
+
     private void doTestSetUnSetAroundWindow(int dataSize, int window) throws Exception {
 
         BitArrayBin toTest = new BitArrayBin(window);
-        
-        for (int i=0; i <=dataSize; i++) {
+
+        for (int i = 0; i <= dataSize; i++) {
             assertTrue("not already set", !toTest.setBit(i, Boolean.TRUE));
         }
-                
+
         int windowOfValidData = roundWindow(dataSize, window);
-        for (int i=dataSize; i >= 0 && i >=dataSize -windowOfValidData; i--) {
+        for (int i = dataSize; i >= 0 && i >= dataSize - windowOfValidData; i--) {
             assertTrue("was already set, id=" + i, toTest.setBit(i, Boolean.FALSE));
         }
 
-        for (int i=0; i <=dataSize; i++) {
+        for (int i = 0; i <= dataSize; i++) {
             assertTrue("not already set, id:" + i, !toTest.setBit(i, Boolean.TRUE));
         }
 
-        for (int j= 2*dataSize; j< 4*dataSize; j++) {
+        for (int j = 2 * dataSize; j < 4 * dataSize; j++) {
             assertTrue("not already set: id=" + j, !toTest.setBit(j, Boolean.TRUE));
         }
     }
-    
+
+    @Test
     public void testSetAroundLongSizeMultiplier() throws Exception {
         int window = 512;
         int dataSize = 1000;
-        for (int muliplier=1; muliplier <8; muliplier++) {
-            for (int value=0; value <dataSize; value++) {
+        for (int muliplier = 1; muliplier < 8; muliplier++) {
+            for (int value = 0; value < dataSize; value++) {
                 BitArrayBin toTest = new BitArrayBin(window);
-                
-                int instance = value +muliplier*BitArray.LONG_SIZE;
+
+                int instance = value + muliplier * BitArray.LONG_SIZE;
                 assertTrue("not already set: id=" + instance, !toTest.setBit(instance, Boolean.TRUE));
                 assertTrue("not already set: id=" + value, !toTest.setBit(value, Boolean.TRUE));
                 assertEquals("max set correct", instance, toTest.getLastSetIndex());
             }
         }
     }
-    
-    public void testLargeGapInData(int window) throws Exception {
+
+    @Test
+    public void testLargeGapInData() throws Exception {
         doTestLargeGapInData(128);
         doTestLargeGapInData(500);
     }
-    
+
     public void doTestLargeGapInData(int window) throws Exception {
         BitArrayBin toTest = new BitArrayBin(window);
-        
+
         int instance = BitArray.LONG_SIZE;
-        assertTrue("not already set: id=" + instance,  !toTest.setBit(instance, Boolean.TRUE));
-        
-        instance = 12 *BitArray.LONG_SIZE;
-        assertTrue("not already set: id=" + instance,  !toTest.setBit(instance, Boolean.TRUE));
-        
-        instance = 9 *BitArray.LONG_SIZE;
-        assertTrue("not already set: id=" + instance,  !toTest.setBit(instance, Boolean.TRUE));
+        assertTrue("not already set: id=" + instance, !toTest.setBit(instance, Boolean.TRUE));
+
+        instance = 12 * BitArray.LONG_SIZE;
+        assertTrue("not already set: id=" + instance, !toTest.setBit(instance, Boolean.TRUE));
+
+        instance = 9 * BitArray.LONG_SIZE;
+        assertTrue("not already set: id=" + instance, !toTest.setBit(instance, Boolean.TRUE));
+    }
+
+    @Test
+    public void testLastSeq() throws Exception {
+        BitArrayBin toTest = new BitArrayBin(512);
+        assertEquals("last not set", -1, toTest.getLastSetIndex());
+
+        toTest.setBit(1, Boolean.TRUE);
+        assertEquals("last correct", 1, toTest.getLastSetIndex());
+
+        toTest.setBit(64, Boolean.TRUE);
+        assertEquals("last correct", 64, toTest.getLastSetIndex());
+
+        toTest.setBit(68, Boolean.TRUE);
+        assertEquals("last correct", 68, toTest.getLastSetIndex());
     }
-    
-    
-   public void testLastSeq() throws Exception {
-       BitArrayBin toTest = new BitArrayBin(512);
-       assertEquals("last not set", -1, toTest.getLastSetIndex());
-       
-       toTest.setBit(1, Boolean.TRUE);
-       assertEquals("last correct", 1, toTest.getLastSetIndex());
-       
-       toTest.setBit(64, Boolean.TRUE);
-       assertEquals("last correct", 64, toTest.getLastSetIndex());
-       
-       toTest.setBit(68, Boolean.TRUE);
-       assertEquals("last correct", 68, toTest.getLastSetIndex());
-       
-   }
-    
+
     // window moves in increments of BitArray.LONG_SIZE.
     // valid data window on low end can be larger than window
     private int roundWindow(int dataSetEnd, int windowSize) {
-        
+
         int validData = dataSetEnd - windowSize;
         int validDataBin = validData / BitArray.LONG_SIZE;
-        validDataBin += (windowSize % BitArray.LONG_SIZE > 0? 1:0);
+        validDataBin += (windowSize % BitArray.LONG_SIZE > 0 ? 1 : 0);
         int startOfValid = validDataBin * BitArray.LONG_SIZE;
-        
-        return dataSetEnd - startOfValid;        
+
+        return dataSetEnd - startOfValid;
     }
 
+    @Test
+    public void testLargeNumber() throws Exception {
+        BitArrayBin toTest = new BitArrayBin(1024);
+        toTest.setBit(1, true);
+        long largeNum = Integer.MAX_VALUE * 2L + 100L;
+        toTest.setBit(largeNum, true);
+        assertTrue("set", toTest.getBit(largeNum));
+    }
 }


[07/17] activemq git commit: test case that shows something is wrong with start logic on pooled connection factory, the vm test variant was getting serialized on the broker vm transport server

Posted by ha...@apache.org.
test case that shows something is wrong with start logic on pooled connection factory, the vm test variant was getting serialized on the broker vm transport server


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

Branch: refs/heads/activemq-5.10.x
Commit: 23f61697c23c8900a02246daf5fce95a99a23667
Parents: 1f399a8
Author: gtully <ga...@gmail.com>
Authored: Mon Jun 9 14:21:24 2014 +0100
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:43:50 2014 -0500

----------------------------------------------------------------------
 .../jms/pool/PooledConnectionFactoryTest.java   | 76 +++++++++++---------
 1 file changed, 43 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/23f61697/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
index 873a354..0ae2e4a 100644
--- a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
+++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
@@ -34,9 +34,11 @@ import junit.framework.TestSuite;
 
 import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.command.ConnectionId;
 import org.apache.activemq.util.Wait;
 import org.apache.log4j.Logger;
+import org.junit.Ignore;
 
 /**
  * Checks the behavior of the PooledConnectionFactory when the maximum amount of
@@ -203,50 +205,58 @@ public class PooledConnectionFactoryTest extends TestCase {
         doTestConcurrentCreateGetsUniqueConnection(false);
     }
 
+    @Ignore("something up - don't know why the start call to createConnection does not cause close - but that does not fix it either!")
     public void testConcurrentCreateGetsUniqueConnectionCreateOnStart() throws Exception {
         doTestConcurrentCreateGetsUniqueConnection(true);
     }
 
     private void doTestConcurrentCreateGetsUniqueConnection(boolean createOnStart) throws Exception {
 
-        final int numConnections = 50;
+        BrokerService brokerService = new BrokerService();
+        brokerService.setPersistent(false);
+        brokerService.addConnector("tcp://localhost:0");
+        brokerService.start();
+
+        try {
+            final int numConnections = 2;
+
+            final ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory(brokerService.getTransportConnectors().get(0).getPublishableConnectString());
+            final PooledConnectionFactory cf = new PooledConnectionFactory();
+            cf.setConnectionFactory(amq);
+            cf.setMaxConnections(numConnections);
+            cf.setCreateConnectionOnStartup(createOnStart);
+            cf.start();
+
+            final ConcurrentHashMap<ConnectionId, Connection> connections =
+                    new ConcurrentHashMap<ConnectionId, Connection>();
+            final ExecutorService executor = Executors.newFixedThreadPool(numConnections);
+
+            for (int i = 0; i < numConnections; ++i) {
+                executor.execute(new Runnable() {
+
+                    @Override
+                    public void run() {
+                        try {
+                            PooledConnection pooled = (PooledConnection) cf.createConnection();
+                            ActiveMQConnection amq = (ActiveMQConnection) pooled.getConnection();
+                            connections.put(amq.getConnectionInfo().getConnectionId(), pooled);
+                        } catch (JMSException e) {
+                        }
+                    }
+                });
+            }
 
-        final ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory("vm://broker1?marshal=false&broker.persistent=false");
-        final PooledConnectionFactory cf = new PooledConnectionFactory();
-        cf.setConnectionFactory(amq);
-        cf.setMaxConnections(numConnections);
-        cf.setCreateConnectionOnStartup(createOnStart);
+            executor.shutdown();
+            assertTrue(executor.awaitTermination(5, TimeUnit.SECONDS));
 
-        final ConcurrentHashMap<ConnectionId, Connection> connections =
-            new ConcurrentHashMap<ConnectionId, Connection>();
-        final ExecutorService executor = Executors.newFixedThreadPool(numConnections / 2);
+            assertEquals("Should have all unique connections", numConnections, connections.size());
 
-        for (int i = 0; i < numConnections; ++i) {
-            executor.execute(new Runnable() {
+            connections.clear();
+            cf.stop();
 
-                @Override
-                public void run() {
-                    try {
-                        PooledConnection pooled = (PooledConnection) cf.createConnection();
-                        ActiveMQConnection amq = (ActiveMQConnection) pooled.getConnection();
-                        connections.put(amq.getConnectionInfo().getConnectionId(), pooled);
-                    } catch (JMSException e) {
-                    }
-                }
-            });
+        } finally {
+            brokerService.stop();
         }
-
-        assertTrue("Should have all unique connections", Wait.waitFor(new Wait.Condition() {
-            @Override
-            public boolean isSatisified() throws Exception {
-                return connections.size() == numConnections;
-            }
-        }));
-
-        executor.shutdown();
-        assertTrue(executor.awaitTermination(5, TimeUnit.SECONDS));
-        connections.clear();
-        cf.stop();
     }
 
     /**


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

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5015

Refactor the way sessions are pooled.  We don't need to keep the
PooledSession instances around since the state is unique to the session
it wraps we only need to keep the Session instances in the SessionPool
and create a new PooledSession on borrow to manage that session.  This
allows the PooledSession to have a real closed state that protects
against multiple close calls placing duplicate PooledSession instances
into the SessionPool.  This also simplifies the code in the
XaConnectionPool since it doesn't need to try and reset state in
PouledSessions before placing them back as it gets a fresh wrapper each
time with the correct state.


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

Branch: refs/heads/activemq-5.10.x
Commit: ac57ce9f68e2b3c5f2d004f507383d64161de3ec
Parents: ee9b3ef
Author: Timothy Bish <ta...@gmail.com>
Authored: Thu Jun 12 19:12:56 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:51:42 2014 -0500

----------------------------------------------------------------------
 .../activemq/jms/pool/ConnectionPool.java       |  48 +++++----
 .../apache/activemq/jms/pool/PooledSession.java |  19 ++--
 .../activemq/jms/pool/XaConnectionPool.java     |  18 ----
 .../jms/pool/XaPooledConnectionFactory.java     |  18 ++--
 .../jms/pool/PooledConnectionTempQueueTest.java | 102 +++++++++++++++++++
 5 files changed, 153 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/ac57ce9f/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
index eced588..26995ea 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
@@ -25,12 +25,12 @@ import javax.jms.Connection;
 import javax.jms.IllegalStateException;
 import javax.jms.JMSException;
 import javax.jms.Session;
+import javax.jms.TemporaryQueue;
+import javax.jms.TemporaryTopic;
 
 import org.apache.commons.pool.KeyedPoolableObjectFactory;
 import org.apache.commons.pool.impl.GenericKeyedObjectPool;
 import org.apache.commons.pool.impl.GenericObjectPool;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Holds a real JMS connection along with the session pools associated with it.
@@ -42,8 +42,6 @@ import org.slf4j.LoggerFactory;
  */
 public class ConnectionPool {
 
-    private static final transient Logger LOG = LoggerFactory.getLogger(ConnectionPool.class);
-
     protected Connection connection;
     private int referenceCount;
     private long lastUsed = System.currentTimeMillis();
@@ -54,7 +52,7 @@ public class ConnectionPool {
     private boolean useAnonymousProducers = true;
 
     private final AtomicBoolean started = new AtomicBoolean(false);
-    private final GenericKeyedObjectPool<SessionKey, PooledSession> sessionPool;
+    private final GenericKeyedObjectPool<SessionKey, Session> sessionPool;
     private final List<PooledSession> loanedSessions = new CopyOnWriteArrayList<PooledSession>();
 
     public ConnectionPool(Connection connection) {
@@ -62,33 +60,29 @@ public class ConnectionPool {
         this.connection = wrap(connection);
 
         // Create our internal Pool of session instances.
-        this.sessionPool = new GenericKeyedObjectPool<SessionKey, PooledSession>(
-            new KeyedPoolableObjectFactory<SessionKey, PooledSession>() {
+        this.sessionPool = new GenericKeyedObjectPool<SessionKey, Session>(
+            new KeyedPoolableObjectFactory<SessionKey, Session>() {
 
                 @Override
-                public void activateObject(SessionKey key, PooledSession session) throws Exception {
-                    ConnectionPool.this.loanedSessions.add(session);
+                public void activateObject(SessionKey key, Session session) throws Exception {
                 }
 
                 @Override
-                public void destroyObject(SessionKey key, PooledSession session) throws Exception {
-                    ConnectionPool.this.loanedSessions.remove(session);
-                    session.getInternalSession().close();
+                public void destroyObject(SessionKey key, Session session) throws Exception {
+                    session.close();
                 }
 
                 @Override
-                public PooledSession makeObject(SessionKey key) throws Exception {
-                    Session session = makeSession(key);
-                    return new PooledSession(key, session, sessionPool, key.isTransacted(), useAnonymousProducers);
+                public Session makeObject(SessionKey key) throws Exception {
+                    return makeSession(key);
                 }
 
                 @Override
-                public void passivateObject(SessionKey key, PooledSession session) throws Exception {
-                    ConnectionPool.this.loanedSessions.remove(session);
+                public void passivateObject(SessionKey key, Session session) throws Exception {
                 }
 
                 @Override
-                public boolean validateObject(SessionKey key, PooledSession session) {
+                public boolean validateObject(SessionKey key, Session session) {
                     return true;
                 }
             }
@@ -130,7 +124,23 @@ public class ConnectionPool {
         SessionKey key = new SessionKey(transacted, ackMode);
         PooledSession session;
         try {
-            session = sessionPool.borrowObject(key);
+            session = new PooledSession(key, sessionPool.borrowObject(key), sessionPool, key.isTransacted(), useAnonymousProducers);
+            session.addSessionEventListener(new PooledSessionEventListener() {
+
+                @Override
+                public void onTemporaryTopicCreate(TemporaryTopic tempTopic) {
+                }
+
+                @Override
+                public void onTemporaryQueueCreate(TemporaryQueue tempQueue) {
+                }
+
+                @Override
+                public void onSessionClosed(PooledSession session) {
+                    ConnectionPool.this.loanedSessions.remove(session);
+                }
+            });
+            this.loanedSessions.add(session);
         } catch (Exception e) {
             IllegalStateException illegalStateException = new IllegalStateException(e.toString());
             illegalStateException.initCause(e);

http://git-wip-us.apache.org/repos/asf/activemq/blob/ac57ce9f/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
index 1d3fc2f..3a2e698 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
@@ -19,6 +19,7 @@ package org.apache.activemq.jms.pool;
 import java.io.Serializable;
 import java.util.Iterator;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.jms.BytesMessage;
 import javax.jms.Destination;
@@ -54,10 +55,11 @@ public class PooledSession implements Session, TopicSession, QueueSession, XASes
     private static final transient Logger LOG = LoggerFactory.getLogger(PooledSession.class);
 
     private final SessionKey key;
-    private final KeyedObjectPool<SessionKey, PooledSession> sessionPool;
+    private final KeyedObjectPool<SessionKey, Session> sessionPool;
     private final CopyOnWriteArrayList<MessageConsumer> consumers = new CopyOnWriteArrayList<MessageConsumer>();
     private final CopyOnWriteArrayList<QueueBrowser> browsers = new CopyOnWriteArrayList<QueueBrowser>();
     private final CopyOnWriteArrayList<PooledSessionEventListener> sessionEventListeners = new CopyOnWriteArrayList<PooledSessionEventListener>();
+    private final AtomicBoolean closed = new AtomicBoolean();
 
     private MessageProducer producer;
     private TopicPublisher publisher;
@@ -69,7 +71,7 @@ public class PooledSession implements Session, TopicSession, QueueSession, XASes
     private boolean isXa;
     private boolean useAnonymousProducers = true;
 
-    public PooledSession(SessionKey key, Session session, KeyedObjectPool<SessionKey, PooledSession> sessionPool, boolean transactional, boolean anonymous) {
+    public PooledSession(SessionKey key, Session session, KeyedObjectPool<SessionKey, Session> sessionPool, boolean transactional, boolean anonymous) {
         this.key = key;
         this.session = session;
         this.sessionPool = sessionPool;
@@ -94,7 +96,11 @@ public class PooledSession implements Session, TopicSession, QueueSession, XASes
 
     @Override
     public void close() throws JMSException {
-        if (!ignoreClose) {
+        if (ignoreClose) {
+            return;
+        }
+
+        if (closed.compareAndSet(false, true)) {
             boolean invalidate = false;
             try {
                 // lets reset the session
@@ -140,22 +146,23 @@ public class PooledSession implements Session, TopicSession, QueueSession, XASes
                     } catch (JMSException e1) {
                         LOG.trace("Ignoring exception on close as discarding session: " + e1, e1);
                     }
-                    session = null;
                 }
                 try {
-                    sessionPool.invalidateObject(key, this);
+                    sessionPool.invalidateObject(key, session);
                 } catch (Exception e) {
                     LOG.trace("Ignoring exception on invalidateObject as discarding session: " + e, e);
                 }
             } else {
                 try {
-                    sessionPool.returnObject(key, this);
+                    sessionPool.returnObject(key, session);
                 } catch (Exception e) {
                     javax.jms.IllegalStateException illegalStateException = new javax.jms.IllegalStateException(e.toString());
                     illegalStateException.initCause(e);
                     throw illegalStateException;
                 }
             }
+
+            session = null;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/ac57ce9f/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaConnectionPool.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaConnectionPool.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaConnectionPool.java
index 4f87153..0f86b55 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaConnectionPool.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaConnectionPool.java
@@ -19,8 +19,6 @@ package org.apache.activemq.jms.pool;
 import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.Session;
-import javax.jms.TemporaryQueue;
-import javax.jms.TemporaryTopic;
 import javax.jms.XAConnection;
 import javax.transaction.RollbackException;
 import javax.transaction.Status;
@@ -65,22 +63,6 @@ public class XaConnectionPool extends ConnectionPool {
             }
             PooledSession session = (PooledSession) super.createSession(transacted, ackMode);
             if (isXa) {
-                session.addSessionEventListener(new PooledSessionEventListener() {
-
-                    @Override
-                    public void onTemporaryQueueCreate(TemporaryQueue tempQueue) {
-                    }
-
-                    @Override
-                    public void onTemporaryTopicCreate(TemporaryTopic tempTopic) {
-                    }
-
-                    @Override
-                    public void onSessionClosed(PooledSession session) {
-                        session.setIgnoreClose(true);
-                        session.setIsXa(false);
-                    }
-                });
                 session.setIgnoreClose(true);
                 session.setIsXa(true);
                 transactionManager.getTransaction().registerSynchronization(new Synchronization(session));

http://git-wip-us.apache.org/repos/asf/activemq/blob/ac57ce9f/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaPooledConnectionFactory.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaPooledConnectionFactory.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaPooledConnectionFactory.java
index 0567509..5e44be2 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaPooledConnectionFactory.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/XaPooledConnectionFactory.java
@@ -18,14 +18,13 @@ package org.apache.activemq.jms.pool;
 
 import java.io.Serializable;
 import java.util.Hashtable;
+
 import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
 import javax.jms.JMSException;
 import javax.jms.QueueConnection;
 import javax.jms.QueueConnectionFactory;
 import javax.jms.TopicConnection;
 import javax.jms.TopicConnectionFactory;
-import javax.jms.XAConnectionFactory;
 import javax.naming.Binding;
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -38,13 +37,14 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * A pooled connection factory that automatically enlists
- * sessions in the current active XA transaction if any.
+ * A pooled connection factory that automatically enlists sessions in the
+ * current active XA transaction if any.
  */
-public class XaPooledConnectionFactory extends PooledConnectionFactory implements ObjectFactory,
-        Serializable, QueueConnectionFactory, TopicConnectionFactory {
+public class XaPooledConnectionFactory extends PooledConnectionFactory implements ObjectFactory, Serializable, QueueConnectionFactory, TopicConnectionFactory {
 
     private static final transient Logger LOG = LoggerFactory.getLogger(XaPooledConnectionFactory.class);
+    private static final long serialVersionUID = -6545688026350913005L;
+
     private TransactionManager transactionManager;
     private boolean tmFromJndi = false;
     private String tmJndiName = "java:/TransactionManager";
@@ -87,10 +87,10 @@ public class XaPooledConnectionFactory extends PooledConnectionFactory implement
             name = name.substring(0, name.lastIndexOf('/')) + "/conf" + name.substring(name.lastIndexOf('/'));
             try {
                 InitialContext ctx = new InitialContext();
-                NamingEnumeration bindings = ctx.listBindings(name);
+                NamingEnumeration<Binding> bindings = ctx.listBindings(name);
 
                 while (bindings.hasMore()) {
-                    Binding bd = (Binding)bindings.next();
+                    Binding bd = bindings.next();
                     IntrospectionSupport.setProperty(this, bd.getName(), bd.getObject());
                 }
 
@@ -116,6 +116,7 @@ public class XaPooledConnectionFactory extends PooledConnectionFactory implement
 
     /**
      * Allow transaction manager resolution from JNDI (ee deployment)
+     *
      * @param tmFromJndi
      */
     public void setTmFromJndi(boolean tmFromJndi) {
@@ -141,5 +142,4 @@ public class XaPooledConnectionFactory extends PooledConnectionFactory implement
     public TopicConnection createTopicConnection(String userName, String password) throws JMSException {
         return (TopicConnection) createConnection(userName, password);
     }
-
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/ac57ce9f/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionTempQueueTest.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionTempQueueTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionTempQueueTest.java
new file mode 100644
index 0000000..fc0fbf4
--- /dev/null
+++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionTempQueueTest.java
@@ -0,0 +1,102 @@
+package org.apache.activemq.jms.pool;
+
+import java.util.concurrent.Executors;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TemporaryQueue;
+import javax.jms.TextMessage;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PooledConnectionTempQueueTest {
+
+    private final Logger LOG = LoggerFactory.getLogger(PooledConnectionTempQueueTest.class);
+
+    protected static final String SERVICE_QUEUE = "queue1";
+
+    @Test
+    public void testTempQueueIssue() throws JMSException, InterruptedException {
+        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
+        final PooledConnectionFactory cf = new PooledConnectionFactory();
+        cf.setConnectionFactory(factory);
+
+        Connection connection = cf.createConnection();
+        connection.start();
+        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        LOG.info("First connection was {}", connection);
+
+        // This order seems to matter to reproduce the issue
+        connection.close();
+        session.close();
+
+        Executors.newSingleThreadExecutor().execute(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    receiveAndRespondWithMessageIdAsCorrelationId(cf, SERVICE_QUEUE);
+                } catch (JMSException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+
+        sendWithReplyToTemp(cf, SERVICE_QUEUE);
+    }
+
+    private void sendWithReplyToTemp(ConnectionFactory cf, String serviceQueue) throws JMSException,
+        InterruptedException {
+        Connection con = cf.createConnection();
+        con.start();
+        Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        TemporaryQueue tempQueue = session.createTemporaryQueue();
+        TextMessage msg = session.createTextMessage("Request");
+        msg.setJMSReplyTo(tempQueue);
+        MessageProducer producer = session.createProducer(session.createQueue(serviceQueue));
+        producer.send(msg);
+
+        // This sleep also seems to matter
+        Thread.sleep(5000);
+
+        MessageConsumer consumer = session.createConsumer(tempQueue);
+        Message replyMsg = consumer.receive();
+        System.out.println(replyMsg.getJMSCorrelationID());
+
+        consumer.close();
+
+        producer.close();
+        session.close();
+        con.close();
+    }
+
+    public void receiveAndRespondWithMessageIdAsCorrelationId(ConnectionFactory connectionFactory,
+                                                              String queueName) throws JMSException {
+        Connection con = connectionFactory.createConnection();
+        Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        MessageConsumer consumer = session.createConsumer(session.createQueue(queueName));
+        final javax.jms.Message inMessage = consumer.receive();
+
+        String requestMessageId = inMessage.getJMSMessageID();
+        System.out.println("Received message " + requestMessageId);
+        final TextMessage replyMessage = session.createTextMessage("Result");
+        replyMessage.setJMSCorrelationID(inMessage.getJMSMessageID());
+        final MessageProducer producer = session.createProducer(inMessage.getJMSReplyTo());
+        System.out.println("Sending reply to " + inMessage.getJMSReplyTo());
+        producer.send(replyMessage);
+
+        producer.close();
+        consumer.close();
+        session.close();
+        con.close();
+    }
+
+}


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

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5226

Ensure that connections are returned when created and then handed out as
FIFO after that.


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

Branch: refs/heads/activemq-5.10.x
Commit: 385ca8184e5fd4fbefe7a2acfab35fee16e6bfd1
Parents: ac57ce9
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Jun 13 10:30:39 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:55:05 2014 -0500

----------------------------------------------------------------------
 .../jms/pool/PooledConnectionFactory.java       | 61 ++++++++++----------
 .../jms/pool/PooledConnectionFactoryTest.java   |  2 -
 2 files changed, 32 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/385ca818/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
index 86f5972..e60c52b 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
@@ -17,6 +17,7 @@
 package org.apache.activemq.jms.pool;
 
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
@@ -73,6 +74,9 @@ public class PooledConnectionFactory implements ConnectionFactory {
     private boolean createConnectionOnStartup = true;
     private boolean useAnonymousProducers = true;
 
+    // Temporary value used to always fetch the result of makeObject.
+    private final AtomicReference<ConnectionPool> mostRecentlyCreated = new AtomicReference<ConnectionPool>(null);
+
     public void initConnectionsPool() {
         if (this.connectionsPool == null) {
             this.connectionsPool = new GenericKeyedObjectPool<ConnectionKey, ConnectionPool>(
@@ -112,6 +116,8 @@ public class PooledConnectionFactory implements ConnectionFactory {
                             LOG.trace("Created new connection: {}", connection);
                         }
 
+                        PooledConnectionFactory.this.mostRecentlyCreated.set(connection);
+
                         return connection;
                     }
 
@@ -135,6 +141,7 @@ public class PooledConnectionFactory implements ConnectionFactory {
 
             // Set max idle (not max active) since our connections always idle in the pool.
             this.connectionsPool.setMaxIdle(1);
+            this.connectionsPool.setLifo(false);
 
             // We always want our validate method to control when idle objects are evicted.
             this.connectionsPool.setTestOnBorrow(true);
@@ -195,45 +202,41 @@ public class PooledConnectionFactory implements ConnectionFactory {
         // will create a new one to meet the demand.
         if (getConnectionsPool().getNumIdle(key) < getMaxConnections()) {
             try {
-                // we want borrowObject to return the one we added.
-                connectionsPool.setLifo(true);
                 connectionsPool.addObject(key);
+                connection = mostRecentlyCreated.getAndSet(null);
+                connection.incrementReferenceCount();
             } catch (Exception e) {
                 throw createJmsException("Error while attempting to add new Connection to the pool", e);
             }
         } else {
-            // now we want the oldest one in the pool.
-            connectionsPool.setLifo(false);
-        }
+            try {
+                // We can race against other threads returning the connection when there is an
+                // expiration or idle timeout.  We keep pulling out ConnectionPool instances until
+                // we win and get a non-closed instance and then increment the reference count
+                // under lock to prevent another thread from triggering an expiration check and
+                // pulling the rug out from under us.
+                while (connection == null) {
+                    connection = connectionsPool.borrowObject(key);
+                    synchronized (connection) {
+                        if (connection.getConnection() != null) {
+                            connection.incrementReferenceCount();
+                            break;
+                        }
 
-        try {
-
-            // We can race against other threads returning the connection when there is an
-            // expiration or idle timeout.  We keep pulling out ConnectionPool instances until
-            // we win and get a non-closed instance and then increment the reference count
-            // under lock to prevent another thread from triggering an expiration check and
-            // pulling the rug out from under us.
-            while (connection == null) {
-                connection = connectionsPool.borrowObject(key);
-                synchronized (connection) {
-                    if (connection.getConnection() != null) {
-                        connection.incrementReferenceCount();
-                        break;
+                        // Return the bad one to the pool and let if get destroyed as normal.
+                        connectionsPool.returnObject(key, connection);
+                        connection = null;
                     }
-
-                    // Return the bad one to the pool and let if get destroyed as normal.
-                    connectionsPool.returnObject(key, connection);
-                    connection = null;
                 }
+            } catch (Exception e) {
+                throw createJmsException("Error while attempting to retrieve a connection from the pool", e);
             }
-        } catch (Exception e) {
-            throw createJmsException("Error while attempting to retrieve a connection from the pool", e);
-        }
 
-        try {
-            connectionsPool.returnObject(key, connection);
-        } catch (Exception e) {
-            throw createJmsException("Error when returning connection to the pool", e);
+            try {
+                connectionsPool.returnObject(key, connection);
+            } catch (Exception e) {
+                throw createJmsException("Error when returning connection to the pool", e);
+            }
         }
 
         return newPooledConnection(connection);

http://git-wip-us.apache.org/repos/asf/activemq/blob/385ca818/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
index 99b0ca8..e20a605 100644
--- a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
+++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
@@ -40,7 +40,6 @@ import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.command.ConnectionId;
 import org.apache.activemq.util.Wait;
 import org.apache.log4j.Logger;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -197,7 +196,6 @@ public class PooledConnectionFactoryTest {
         doTestConcurrentCreateGetsUniqueConnection(false);
     }
 
-    @Ignore("something up - don't know why the start call to createConnection does not cause close - but that does not fix it either!")
     @Test
     public void testConcurrentCreateGetsUniqueConnectionCreateOnStart() throws Exception {
         doTestConcurrentCreateGetsUniqueConnection(true);


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

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5239

Add a getter for the BrokerService map.


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

Branch: refs/heads/activemq-5.10.x
Commit: 3ab3f04f941d4b83d95031f1f5335d0529b6b9cc
Parents: f59e51b
Author: Timothy Bish <ta...@gmail.com>
Authored: Tue Jun 24 11:18:58 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 17:06:57 2014 -0500

----------------------------------------------------------------------
 .../activemq/osgi/ActiveMQServiceFactory.java   | 32 ++++++++++++--------
 1 file changed, 20 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/3ab3f04f/activemq-osgi/src/main/java/org/apache/activemq/osgi/ActiveMQServiceFactory.java
----------------------------------------------------------------------
diff --git a/activemq-osgi/src/main/java/org/apache/activemq/osgi/ActiveMQServiceFactory.java b/activemq-osgi/src/main/java/org/apache/activemq/osgi/ActiveMQServiceFactory.java
index 16da689..430a300 100644
--- a/activemq-osgi/src/main/java/org/apache/activemq/osgi/ActiveMQServiceFactory.java
+++ b/activemq-osgi/src/main/java/org/apache/activemq/osgi/ActiveMQServiceFactory.java
@@ -16,6 +16,13 @@
  */
 package org.apache.activemq.osgi;
 
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.spring.SpringBrokerContext;
 import org.apache.activemq.spring.Utils;
@@ -29,8 +36,6 @@ import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.core.io.Resource;
 
-import java.util.*;
-
 public class ActiveMQServiceFactory implements ManagedServiceFactory {
 
     private static final Logger LOG = LoggerFactory.getLogger(ActiveMQServiceFactory.class);
@@ -43,17 +48,22 @@ public class ActiveMQServiceFactory implements ManagedServiceFactory {
         return "ActiveMQ Server Controller";
     }
 
+    public Map<String, BrokerService> getBrokersMap() {
+        return Collections.unmodifiableMap(brokers);
+    }
+
+    @SuppressWarnings("rawtypes")
     @Override
     synchronized public void updated(String pid, Dictionary properties) throws ConfigurationException {
 
         // First stop currently running broker (if any)
         deleted(pid);
 
-        String config = (String)properties.get("config");
+        String config = (String) properties.get("config");
         if (config == null) {
             throw new ConfigurationException("config", "Property must be set");
         }
-        String name = (String)properties.get("broker-name");
+        String name = (String) properties.get("broker-name");
         if (name == null) {
             throw new ConfigurationException("broker-name", "Property must be set");
         }
@@ -65,18 +75,18 @@ public class ActiveMQServiceFactory implements ManagedServiceFactory {
             Resource resource = Utils.resourceFromString(config);
 
             ResourceXmlApplicationContext ctx = new ResourceXmlApplicationContext(resource, Collections.EMPTY_LIST, null, Collections.EMPTY_LIST, false) {
+                @Override
                 protected void initBeanDefinitionReader(XmlBeanDefinitionReader reader) {
                     reader.setValidating(false);
                 }
             };
 
             // Handle properties in configuration
-            PropertyPlaceholderConfigurer configurator =
-                        new PropertyPlaceholderConfigurer();
+            PropertyPlaceholderConfigurer configurator = new PropertyPlaceholderConfigurer();
 
-            //convert dictionary to properties. Is there a better way?
+            // convert dictionary to properties. Is there a better way?
             Properties props = new Properties();
-            Enumeration elements = properties.keys();
+            Enumeration<?> elements = properties.keys();
             while (elements.hasMoreElements()) {
                 Object key = elements.nextElement();
                 props.put(key, properties.get(key));
@@ -94,7 +104,7 @@ public class ActiveMQServiceFactory implements ManagedServiceFactory {
             if (broker == null) {
                 throw new ConfigurationException(null, "Broker not defined");
             }
-            //TODO deal with multiple brokers
+            // TODO deal with multiple brokers
 
             SpringBrokerContext brokerContext = new SpringBrokerContext();
             brokerContext.setConfigurationUrl(resource.getURL().toExternalForm());
@@ -104,8 +114,6 @@ public class ActiveMQServiceFactory implements ManagedServiceFactory {
             broker.start();
             broker.waitUntilStarted();
             brokers.put(pid, broker);
-
-
         } catch (Exception e) {
             throw new ConfigurationException(null, "Cannot start the broker", e);
         }
@@ -127,7 +135,7 @@ public class ActiveMQServiceFactory implements ManagedServiceFactory {
     }
 
     synchronized public void destroy() {
-        for (String broker: brokers.keySet()) {
+        for (String broker : brokers.keySet()) {
             deleted(broker);
         }
     }


[08/17] activemq git commit: Convert the JUnit 4 test so that the ignore is honoered.

Posted by ha...@apache.org.
Convert the JUnit 4 test so that the ignore is honoered.


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

Branch: refs/heads/activemq-5.10.x
Commit: 13db036fab2f13dbe834c03a2588b74ae910794a
Parents: 23f6169
Author: Timothy Bish <ta...@gmail.com>
Authored: Mon Jun 9 10:24:58 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:44:47 2014 -0500

----------------------------------------------------------------------
 .../jms/pool/PooledConnectionFactoryTest.java   | 56 +++++++++-----------
 1 file changed, 24 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/13db036f/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
index 0ae2e4a..99b0ca8 100644
--- a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
+++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryTest.java
@@ -16,6 +16,12 @@
  */
 package org.apache.activemq.jms.pool;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -28,10 +34,6 @@ import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.Session;
 
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
 import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.activemq.broker.BrokerService;
@@ -39,6 +41,7 @@ import org.apache.activemq.command.ConnectionId;
 import org.apache.activemq.util.Wait;
 import org.apache.log4j.Logger;
 import org.junit.Ignore;
+import org.junit.Test;
 
 /**
  * Checks the behavior of the PooledConnectionFactory when the maximum amount of
@@ -49,27 +52,11 @@ import org.junit.Ignore;
  * don't block. This test succeeds if an exception is returned and fails if the
  * call to getSession() blocks.
  */
-public class PooledConnectionFactoryTest extends TestCase {
+public class PooledConnectionFactoryTest {
 
     public final static Logger LOG = Logger.getLogger(PooledConnectionFactoryTest.class);
 
-    /**
-     * Create the test case
-     *
-     * @param testName
-     *            name of the test case
-     */
-    public PooledConnectionFactoryTest(String testName) {
-        super(testName);
-    }
-
-    /**
-     * @return the suite of tests being tested
-     */
-    public static Test suite() {
-        return new TestSuite(PooledConnectionFactoryTest.class);
-    }
-
+    @Test
     public void testClearAllConnections() throws Exception {
 
         ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory("vm://broker1?marshal=false&broker.persistent=false");
@@ -100,6 +87,7 @@ public class PooledConnectionFactoryTest extends TestCase {
         assertNotSame(conn2.getConnection(), conn3.getConnection());
     }
 
+    @Test
     public void testMaxConnectionsAreCreated() throws Exception {
 
         ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory("vm://broker1?marshal=false&broker.persistent=false");
@@ -118,6 +106,7 @@ public class PooledConnectionFactoryTest extends TestCase {
         assertEquals(3, cf.getNumConnections());
     }
 
+    @Test
     public void testConnectionsAreRotated() throws Exception {
 
         ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory("vm://broker1?marshal=false&broker.persistent=false");
@@ -139,6 +128,7 @@ public class PooledConnectionFactoryTest extends TestCase {
         }
     }
 
+    @Test
     public void testConnectionsArePooled() throws Exception {
 
         ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory("vm://broker1?marshal=false&broker.persistent=false");
@@ -157,6 +147,7 @@ public class PooledConnectionFactoryTest extends TestCase {
         assertEquals(1, cf.getNumConnections());
     }
 
+    @Test
     public void testConnectionsArePooledAsyncCreate() throws Exception {
 
         final ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory("vm://broker1?marshal=false&broker.persistent=false");
@@ -193,7 +184,7 @@ public class PooledConnectionFactoryTest extends TestCase {
         executor.shutdown();
         assertTrue(executor.awaitTermination(5, TimeUnit.SECONDS));
 
-        for(PooledConnection connection : connections) {
+        for (PooledConnection connection : connections) {
             assertSame(primary.getConnection(), connection.getConnection());
         }
 
@@ -201,11 +192,13 @@ public class PooledConnectionFactoryTest extends TestCase {
         cf.stop();
     }
 
+    @Test
     public void testConcurrentCreateGetsUniqueConnectionCreateOnDemand() throws Exception {
         doTestConcurrentCreateGetsUniqueConnection(false);
     }
 
     @Ignore("something up - don't know why the start call to createConnection does not cause close - but that does not fix it either!")
+    @Test
     public void testConcurrentCreateGetsUniqueConnectionCreateOnStart() throws Exception {
         doTestConcurrentCreateGetsUniqueConnection(true);
     }
@@ -216,6 +209,7 @@ public class PooledConnectionFactoryTest extends TestCase {
         brokerService.setPersistent(false);
         brokerService.addConnector("tcp://localhost:0");
         brokerService.start();
+        brokerService.waitUntilStarted();
 
         try {
             final int numConnections = 2;
@@ -227,8 +221,7 @@ public class PooledConnectionFactoryTest extends TestCase {
             cf.setCreateConnectionOnStartup(createOnStart);
             cf.start();
 
-            final ConcurrentHashMap<ConnectionId, Connection> connections =
-                    new ConcurrentHashMap<ConnectionId, Connection>();
+            final ConcurrentHashMap<ConnectionId, Connection> connections = new ConcurrentHashMap<ConnectionId, Connection>();
             final ExecutorService executor = Executors.newFixedThreadPool(numConnections);
 
             for (int i = 0; i < numConnections; ++i) {
@@ -247,7 +240,7 @@ public class PooledConnectionFactoryTest extends TestCase {
             }
 
             executor.shutdown();
-            assertTrue(executor.awaitTermination(5, TimeUnit.SECONDS));
+            assertTrue(executor.awaitTermination(30, TimeUnit.SECONDS));
 
             assertEquals("Should have all unique connections", numConnections, connections.size());
 
@@ -277,9 +270,7 @@ public class PooledConnectionFactoryTest extends TestCase {
         if (!result.isDone() || !result.get().booleanValue()) {
             PooledConnectionFactoryTest.LOG.error("2nd call to createSession() " +
                                                   "is blocking but should have returned an error instead.");
-
             executor.shutdownNow();
-
             fail("SessionPool inside PooledConnectionFactory is blocking if " +
                  "limit is exceeded but should return an exception instead.");
         }
@@ -312,8 +303,7 @@ public class PooledConnectionFactoryTest extends TestCase {
 
                 Session two = null;
                 try {
-                    // this should raise an exception as we called
-                    // setMaximumActive(1)
+                    // this should raise an exception as we called setMaximumActive(1)
                     two = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
                     two.close();
 
@@ -331,10 +321,12 @@ public class PooledConnectionFactoryTest extends TestCase {
                         return new Boolean(false);
                     }
                 } finally {
-                    if (one != null)
+                    if (one != null) {
                         one.close();
-                    if (conn != null)
+                    }
+                    if (conn != null) {
                         conn.close();
+                    }
                 }
             } catch (Exception ex) {
                 LOG.error(ex.getMessage());


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

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5214

Check for security error on responses and log a warning so there is a
record of the event


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

Branch: refs/heads/activemq-5.10.x
Commit: 95a70bb8298ede299280bae854ca8b99c467938a
Parents: 2f4d83f
Author: Timothy Bish <ta...@gmail.com>
Authored: Thu Jun 5 16:16:01 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 13:48:18 2014 -0500

----------------------------------------------------------------------
 .../activemq/broker/TransportConnection.java    | 49 +++++++++++++++++++-
 1 file changed, 47 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/95a70bb8/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
index 557b88c..22a63b8 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
@@ -20,7 +20,13 @@ import java.io.EOFException;
 import java.io.IOException;
 import java.net.SocketException;
 import java.net.URI;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CountDownLatch;
@@ -31,10 +37,44 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import javax.transaction.xa.XAResource;
+
 import org.apache.activemq.advisory.AdvisorySupport;
 import org.apache.activemq.broker.region.ConnectionStatistics;
 import org.apache.activemq.broker.region.RegionBroker;
-import org.apache.activemq.command.*;
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.BrokerInfo;
+import org.apache.activemq.command.Command;
+import org.apache.activemq.command.CommandTypes;
+import org.apache.activemq.command.ConnectionControl;
+import org.apache.activemq.command.ConnectionError;
+import org.apache.activemq.command.ConnectionId;
+import org.apache.activemq.command.ConnectionInfo;
+import org.apache.activemq.command.ConsumerControl;
+import org.apache.activemq.command.ConsumerId;
+import org.apache.activemq.command.ConsumerInfo;
+import org.apache.activemq.command.ControlCommand;
+import org.apache.activemq.command.DataArrayResponse;
+import org.apache.activemq.command.DestinationInfo;
+import org.apache.activemq.command.ExceptionResponse;
+import org.apache.activemq.command.FlushCommand;
+import org.apache.activemq.command.IntegerResponse;
+import org.apache.activemq.command.KeepAliveInfo;
+import org.apache.activemq.command.Message;
+import org.apache.activemq.command.MessageAck;
+import org.apache.activemq.command.MessageDispatch;
+import org.apache.activemq.command.MessageDispatchNotification;
+import org.apache.activemq.command.MessagePull;
+import org.apache.activemq.command.ProducerAck;
+import org.apache.activemq.command.ProducerId;
+import org.apache.activemq.command.ProducerInfo;
+import org.apache.activemq.command.RemoveSubscriptionInfo;
+import org.apache.activemq.command.Response;
+import org.apache.activemq.command.SessionId;
+import org.apache.activemq.command.SessionInfo;
+import org.apache.activemq.command.ShutdownInfo;
+import org.apache.activemq.command.TransactionId;
+import org.apache.activemq.command.TransactionInfo;
+import org.apache.activemq.command.WireFormatInfo;
 import org.apache.activemq.network.DemandForwardingBridge;
 import org.apache.activemq.network.MBeanNetworkListener;
 import org.apache.activemq.network.NetworkBridgeConfiguration;
@@ -307,6 +347,9 @@ public class TransportConnection implements Connection, Task, CommandVisitor {
             }
 
             if (responseRequired) {
+                if (e instanceof SecurityException || e.getCause() instanceof SecurityException) {
+                    SERVICELOG.warn("Security Error occurred: {}", e.getMessage());
+                }
                 response = new ExceptionResponse(e);
             } else {
                 serviceException(e);
@@ -378,6 +421,7 @@ public class TransportConnection implements Connection, Task, CommandVisitor {
         return null;
     }
 
+    @Override
     public int getActiveTransactionCount() {
         int rc = 0;
         for (TransportConnectionState cs : connectionStateRegister.listConnectionStates()) {
@@ -389,6 +433,7 @@ public class TransportConnection implements Connection, Task, CommandVisitor {
         return rc;
     }
 
+    @Override
     public Long getOldestActiveTransactionDuration() {
         TransactionState oldestTX = null;
         for (TransportConnectionState cs : connectionStateRegister.listConnectionStates()) {


[09/17] activemq git commit: remove duplicate slf4j-log4j12 dep b/c it is in activemq-all from https://issues.apache.org/jira/browse/AMQ-3715

Posted by ha...@apache.org.
remove duplicate slf4j-log4j12 dep b/c it is in activemq-all from https://issues.apache.org/jira/browse/AMQ-3715


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

Branch: refs/heads/activemq-5.10.x
Commit: 100afb0daf203ce4cbdeb76db632d31d01e9b3a8
Parents: 13db036
Author: gtully <ga...@gmail.com>
Authored: Tue Jun 10 14:16:09 2014 +0100
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:47:57 2014 -0500

----------------------------------------------------------------------
 activemq-tooling/activemq-maven-plugin/pom.xml | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/100afb0d/activemq-tooling/activemq-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-tooling/activemq-maven-plugin/pom.xml b/activemq-tooling/activemq-maven-plugin/pom.xml
index 8b43be7..444a4ae 100644
--- a/activemq-tooling/activemq-maven-plugin/pom.xml
+++ b/activemq-tooling/activemq-maven-plugin/pom.xml
@@ -67,10 +67,6 @@
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-    </dependency>
   </dependencies>
 
   <build>


[04/17] activemq git commit: Fixed config file paths for Windows AMQ-5216

Posted by ha...@apache.org.
Fixed config file paths for Windows AMQ-5216


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

Branch: refs/heads/activemq-5.10.x
Commit: 7536983c58217d367e07ab47f95145ccb2ada026
Parents: 1e3f4f1
Author: Kevin Earls <ke...@kevinearls.com>
Authored: Fri Jun 6 16:09:52 2014 +0200
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:35:55 2014 -0500

----------------------------------------------------------------------
 .../activemq/config/BrokerXmlConfigStartTest.java     | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/7536983c/assembly/src/test/java/org/apache/activemq/config/BrokerXmlConfigStartTest.java
----------------------------------------------------------------------
diff --git a/assembly/src/test/java/org/apache/activemq/config/BrokerXmlConfigStartTest.java b/assembly/src/test/java/org/apache/activemq/config/BrokerXmlConfigStartTest.java
index 5f83154..ef54c05 100755
--- a/assembly/src/test/java/org/apache/activemq/config/BrokerXmlConfigStartTest.java
+++ b/assembly/src/test/java/org/apache/activemq/config/BrokerXmlConfigStartTest.java
@@ -19,6 +19,7 @@ package org.apache.activemq.config;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -55,19 +56,26 @@ public class BrokerXmlConfigStartTest {
     private String shortName;
 
     @Parameterized.Parameters(name = "{1}")
-    public static Collection<String[]> getTestParameters() {
+    public static Collection<String[]> getTestParameters() throws IOException {
         List<String[]> configUrls = new ArrayList<String[]>();
         configUrls.add(new String[]{"xbean:src/release/conf/activemq.xml", "activemq.xml"});
 
+        String osName=System.getProperty("os.name");
+        LOG.info("os.name {} ", osName);
         File sampleConfDir = new File("target/conf");
+        String sampleConfDirPath = sampleConfDir.getAbsolutePath();
+        if (osName.toLowerCase().contains("windows")) {
+            sampleConfDirPath = sampleConfDirPath.substring(2); // Chop off drive letter and :
+            sampleConfDirPath = sampleConfDirPath.replace("\\", "/");
+        }
+
         for (File xmlFile : sampleConfDir.listFiles(new FileFilter() {
             public boolean accept(File pathname) {
                 return pathname.isFile() &&
                         pathname.getName().startsWith("activemq-") &&
                         pathname.getName().endsWith("xml");
             }})) {
-
-            configUrls.add(new String[]{"xbean:" + sampleConfDir.getAbsolutePath() + "/" + xmlFile.getName(), xmlFile.getName()});
+            configUrls.add(new String[]{"xbean:" + sampleConfDirPath + "/" + xmlFile.getName(), xmlFile.getName()});
         }
 
         return configUrls;


[06/17] activemq git commit: https://issues.apache.org/jira/browse/AMQ-5212 - ensure uncontented access to concurrent destination map avoides deadlock, rerework https://issues.apache.org/jira/browse/AMQ-4952 to differenciate duplicates from send and reco

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5212 - ensure uncontented access to concurrent destination map avoides deadlock, rerework https://issues.apache.org/jira/browse/AMQ-4952 to differenciate duplicates from send and recovered messages from the store. https://issues.apache.org/jira/browse/AMQ-3454 benefits from getDestinationMap(destination) to get direct access to the map to determine existance. Additional test


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

Branch: refs/heads/activemq-5.10.x
Commit: 1f399a8b999ef8b0b9983c9a0e3a19d977923cbe
Parents: 23cfa4e
Author: gtully <ga...@gmail.com>
Authored: Mon Jun 9 12:31:39 2014 +0100
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:42:13 2014 -0500

----------------------------------------------------------------------
 .../java/org/apache/activemq/broker/Broker.java |   8 +
 .../apache/activemq/broker/BrokerFilter.java    |   5 +
 .../org/apache/activemq/broker/EmptyBroker.java |   5 +
 .../org/apache/activemq/broker/ErrorBroker.java |   5 +
 .../activemq/broker/MutableBrokerFilter.java    |   5 +
 .../activemq/broker/region/AbstractRegion.java  |   7 +-
 .../activemq/broker/region/RegionBroker.java    |   9 +
 .../region/cursors/AbstractStoreCursor.java     |  13 +-
 .../activemq/security/AuthorizationBroker.java  |   2 +-
 .../activemq/store/jdbc/JDBCMessageStore.java   |   7 +-
 .../activemq/store/kahadb/KahaDBStore.java      |   5 +-
 .../org/apache/activemq/bugs/AMQ5212Test.java   | 204 +++++++++++++++++++
 12 files changed, 258 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/Broker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/Broker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/Broker.java
index c2fd132..5d052e9 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/Broker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/Broker.java
@@ -17,6 +17,7 @@
 package org.apache.activemq.broker;
 
 import java.net.URI;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ThreadPoolExecutor;
 
@@ -144,6 +145,13 @@ public interface Broker extends Region, Service {
     ActiveMQDestination[] getDestinations() throws Exception;
 
     /**
+     * return a reference destination map of a region based on the destination type
+     * @param destination
+     * @return
+     */
+    public Map<ActiveMQDestination, Destination> getDestinationMap(ActiveMQDestination destination);
+
+    /**
      * Gets a list of all the prepared xa transactions.
      *
      * @param context transaction ids

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
index b1d3c18..132b46d 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
@@ -73,6 +73,11 @@ public class BrokerFilter implements Broker {
     }
 
     @Override
+    public Map<ActiveMQDestination, Destination> getDestinationMap(ActiveMQDestination destination) {
+        return next.getDestinationMap(destination);
+    }
+
+    @Override
     public Set <Destination>getDestinations(ActiveMQDestination destination) {
         return next.getDestinations(destination);
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
index 2d2e6ba..8185554 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
@@ -78,6 +78,11 @@ public class EmptyBroker implements Broker {
     }
 
     @Override
+    public Map<ActiveMQDestination, Destination> getDestinationMap(ActiveMQDestination destination) {
+        return Collections.EMPTY_MAP;
+    }
+
+    @Override
     public Set getDestinations(ActiveMQDestination destination) {
         return Collections.EMPTY_SET;
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
index f692d8a..ae42141 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
@@ -67,6 +67,11 @@ public class ErrorBroker implements Broker {
     }
 
     @Override
+    public Map<ActiveMQDestination, Destination> getDestinationMap(ActiveMQDestination destination) {
+        return Collections.EMPTY_MAP;
+    }
+
+    @Override
     public Set getDestinations(ActiveMQDestination destination) {
         return Collections.EMPTY_SET;
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java b/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
index 112378a..2eea2e8 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
@@ -83,6 +83,11 @@ public class MutableBrokerFilter implements Broker {
     }
 
     @Override
+    public Map<ActiveMQDestination, Destination> getDestinationMap(ActiveMQDestination destination) {
+        return getNext().getDestinationMap(destination);
+    }
+
+    @Override
     public Set getDestinations(ActiveMQDestination destination) {
         return getNext().getDestinations(destination);
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
index e443d53..53e8cdd 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
@@ -249,12 +249,7 @@ public abstract class AbstractRegion implements Region {
     }
 
     public Map<ActiveMQDestination, Destination> getDestinationMap() {
-        destinationsLock.readLock().lock();
-        try{
-            return destinations;
-        } finally {
-            destinationsLock.readLock().unlock();
-        }
+        return destinations;
     }
 
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
index da6e1fa..59b1b92 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
@@ -135,6 +135,15 @@ public class RegionBroker extends EmptyBroker {
     }
 
     @Override
+    public Map<ActiveMQDestination, Destination> getDestinationMap(ActiveMQDestination destination) {
+        try {
+            return getRegion(destination).getDestinationMap();
+        } catch (JMSException jmse) {
+            return Collections.emptyMap();
+        }
+    }
+
+    @Override
     public Set<Destination> getDestinations(ActiveMQDestination destination) {
         try {
             return getRegion(destination).getDestinations(destination);

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/broker/region/cursors/AbstractStoreCursor.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/cursors/AbstractStoreCursor.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/cursors/AbstractStoreCursor.java
index d0b1a39..b6f9b7e 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/cursors/AbstractStoreCursor.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/cursors/AbstractStoreCursor.java
@@ -100,8 +100,15 @@ public abstract class AbstractStoreCursor extends AbstractPendingMessageCursor i
             recovered = true;
             storeHasMessages = true;
         } else {
-            LOG.warn("{} - cursor got duplicate: {}, {}", new Object[]{ this, message.getMessageId(), message.getPriority() });
-            duplicate(message);
+            if (LOG.isDebugEnabled()) {
+                LOG.debug(this + " - cursor got duplicate: " + message.getMessageId() + "," + message.getPriority() + ", cached=" + cached, new Throwable("duplicate message detected"));
+            } else {
+                LOG.warn("{} - cursor got duplicate {}", regionDestination.getActiveMQDestination(), message.getMessageId());
+            }
+            if (!cached ||  message.getMessageId().getEntryLocator() != null) {
+                // came from the store or was added to the jdbc store
+                duplicate(message);
+            }
         }
         return recovered;
     }
@@ -195,8 +202,8 @@ public abstract class AbstractStoreCursor extends AbstractPendingMessageCursor i
                     lastCachedId = node.getMessageId();
                     lastTx = node.getMessage().getTransactionId();
                 } else {
-                    LOG.debug(this + " duplicate add {}", node.getMessage(), new Throwable("duplicated detected"));
                     dealWithDuplicates();
+                    return;
                 }
             }
         } else {

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-broker/src/main/java/org/apache/activemq/security/AuthorizationBroker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/security/AuthorizationBroker.java b/activemq-broker/src/main/java/org/apache/activemq/security/AuthorizationBroker.java
index db482ba..39d3c59 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/security/AuthorizationBroker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/security/AuthorizationBroker.java
@@ -76,7 +76,7 @@ public class AuthorizationBroker extends BrokerFilter implements SecurityAdminMB
     }
 
     protected boolean checkDestinationAdmin(SecurityContext securityContext, ActiveMQDestination destination) {
-        Destination existing = this.getDestinationMap().get(destination);
+        Destination existing = this.getDestinationMap(destination).get(destination);
         if (existing != null) {
             return true;
         }

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCMessageStore.java
----------------------------------------------------------------------
diff --git a/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCMessageStore.java b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCMessageStore.java
index 3c441b0..968b928 100755
--- a/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCMessageStore.java
+++ b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCMessageStore.java
@@ -131,11 +131,8 @@ public class JDBCMessageStore extends AbstractMessageStore {
         } finally {
             c.close();
         }
-        if (context != null && context.getXid() != null) {
-            message.getMessageId().setEntryLocator(sequenceId);
-        } else {
-            onAdd(messageId, sequenceId, message.getPriority());
-        }
+        message.getMessageId().setEntryLocator(sequenceId);
+        onAdd(messageId, sequenceId, message.getPriority());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java
index 74425f1..60c0738 100644
--- a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java
+++ b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java
@@ -281,8 +281,9 @@ public class KahaDBStore extends MessageDatabase implements PersistenceAdapter {
         if (brokerService != null) {
             RegionBroker regionBroker = (RegionBroker) brokerService.getRegionBroker();
             if (regionBroker != null) {
-                Set<Destination> destinationSet = regionBroker.getDestinations(convert(commandDestination));
-                for (Destination destination : destinationSet) {
+                ActiveMQDestination activeMQDestination = convert(commandDestination);
+                Destination destination = regionBroker.getDestinationMap(activeMQDestination).get(activeMQDestination);
+                if (destination != null) {
                     destination.getDestinationStatistics().getMessages().decrement();
                     destination.getDestinationStatistics().getEnqueues().decrement();
                 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/1f399a8b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5212Test.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5212Test.java b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5212Test.java
new file mode 100644
index 0000000..64d57a5
--- /dev/null
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ5212Test.java
@@ -0,0 +1,204 @@
+/**
+ * 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.activemq.bugs;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import org.apache.activemq.ActiveMQConnection;
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.ActiveMQMessageProducer;
+import org.apache.activemq.ActiveMQSession;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.command.ActiveMQQueue;
+import org.apache.activemq.command.ActiveMQTextMessage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class AMQ5212Test {
+
+    BrokerService brokerService;
+
+    @Before
+    public void setUp() throws Exception {
+        start(true);
+    }
+
+    public void start(boolean deleteAllMessages) throws Exception {
+        brokerService = new BrokerService();
+        if (deleteAllMessages) {
+            brokerService.deleteAllMessages();
+        }
+        brokerService.addConnector("tcp://localhost:0");
+        brokerService.setAdvisorySupport(false);
+        brokerService.start();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        brokerService.stop();
+    }
+
+    @Test
+    public void verifyDuplicateSuppressionWithConsumer() throws Exception {
+        doVerifyDuplicateSuppression(100, 100, true);
+    }
+
+    @Test
+    public void verifyDuplicateSuppression() throws Exception {
+        doVerifyDuplicateSuppression(100, 100, false);
+    }
+
+    public void doVerifyDuplicateSuppression(final int numToSend, final int expectedTotalEnqueue, final boolean demand) throws Exception {
+        final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerService.getTransportConnectors().get(0).getPublishableConnectString());
+        connectionFactory.setCopyMessageOnSend(false);
+        connectionFactory.setWatchTopicAdvisories(false);
+
+        final int concurrency = 40;
+        final AtomicInteger workCount = new AtomicInteger(numToSend);
+        ExecutorService executorService = Executors.newFixedThreadPool(concurrency);
+        for (int i = 0; i < concurrency; i++) {
+            executorService.execute(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        int i;
+                        while ((i = workCount.getAndDecrement()) > 0) {
+                            ActiveMQConnection activeMQConnection = (ActiveMQConnection) connectionFactory.createConnection();
+                            activeMQConnection.start();
+                            ActiveMQSession activeMQSession = (ActiveMQSession) activeMQConnection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+
+                            ActiveMQQueue dest = new ActiveMQQueue("queue-" + i + "-"
+                                    + AMQ5212Test.class.getSimpleName());
+                            ActiveMQMessageProducer activeMQMessageProducer = (ActiveMQMessageProducer) activeMQSession.createProducer(dest);
+                            if (demand) {
+                                // create demand so page in will happen
+                                activeMQSession.createConsumer(dest);
+                            }
+                            ActiveMQTextMessage message = new ActiveMQTextMessage();
+                            message.setDestination(dest);
+                            activeMQMessageProducer.send(message, null);
+
+                            // send a duplicate
+                            activeMQConnection.syncSendPacket(message);
+                            activeMQConnection.close();
+
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            });
+        }
+        TimeUnit.SECONDS.sleep(1);
+        executorService.shutdown();
+        executorService.awaitTermination(5, TimeUnit.MINUTES);
+
+        assertEquals("total enqueue as expected", expectedTotalEnqueue, brokerService.getAdminView().getTotalEnqueueCount());
+    }
+
+    @Test
+    public void verifyConsumptionOnDuplicate() throws Exception {
+
+        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerService.getTransportConnectors().get(0).getPublishableConnectString());
+        connectionFactory.setCopyMessageOnSend(false);
+        connectionFactory.setWatchTopicAdvisories(false);
+
+        ActiveMQConnection activeMQConnection = (ActiveMQConnection) connectionFactory.createConnection();
+        activeMQConnection.start();
+        ActiveMQSession activeMQSession = (ActiveMQSession) activeMQConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        ActiveMQQueue dest = new ActiveMQQueue("Q");
+        ActiveMQMessageProducer activeMQMessageProducer = (ActiveMQMessageProducer) activeMQSession.createProducer(dest);
+        ActiveMQTextMessage message = new ActiveMQTextMessage();
+        message.setDestination(dest);
+        activeMQMessageProducer.send(message, null);
+
+        // send a duplicate
+        activeMQConnection.syncSendPacket(message);
+
+        activeMQConnection.close();
+
+        // verify original can be consumed after restart
+        brokerService.stop();
+        brokerService.start(false);
+
+        connectionFactory = new ActiveMQConnectionFactory(brokerService.getTransportConnectors().get(0).getPublishableConnectString());
+        connectionFactory.setCopyMessageOnSend(false);
+        connectionFactory.setWatchTopicAdvisories(false);
+
+        activeMQConnection = (ActiveMQConnection) connectionFactory.createConnection();
+        activeMQConnection.start();
+        activeMQSession = (ActiveMQSession) activeMQConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        MessageConsumer messageConsumer = activeMQSession.createConsumer(dest);
+        Message received = messageConsumer.receive(4000);
+        assertNotNull("Got message", received);
+        assertEquals("match", message.getJMSMessageID(), received.getJMSMessageID());
+
+        activeMQConnection.close();
+    }
+
+    @Test
+    public void verifyClientAckConsumptionOnDuplicate() throws Exception {
+
+        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerService.getTransportConnectors().get(0).getPublishableConnectString());
+        connectionFactory.setCopyMessageOnSend(false);
+        connectionFactory.setWatchTopicAdvisories(false);
+
+        ActiveMQConnection activeMQConnection = (ActiveMQConnection) connectionFactory.createConnection();
+        activeMQConnection.start();
+        ActiveMQSession activeMQSession = (ActiveMQSession) activeMQConnection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+
+        ActiveMQQueue dest = new ActiveMQQueue("Q");
+
+        MessageConsumer messageConsumer = activeMQSession.createConsumer(dest);
+
+        ActiveMQMessageProducer activeMQMessageProducer = (ActiveMQMessageProducer) activeMQSession.createProducer(dest);
+        ActiveMQTextMessage message = new ActiveMQTextMessage();
+        message.setDestination(dest);
+        activeMQMessageProducer.send(message, null);
+
+        // send a duplicate
+        activeMQConnection.syncSendPacket(message);
+
+
+        Message received = messageConsumer.receive(4000);
+        assertNotNull("Got message", received);
+        assertEquals("match", message.getJMSMessageID(), received.getJMSMessageID());
+        messageConsumer.close();
+
+
+        messageConsumer = activeMQSession.createConsumer(dest);
+        received = messageConsumer.receive(4000);
+        assertNotNull("Got message", received);
+        assertEquals("match", message.getJMSMessageID(), received.getJMSMessageID());
+        received.acknowledge();
+
+        activeMQConnection.close();
+    }
+}


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

Posted by ha...@apache.org.
https://issues.apache.org/jira/browse/AMQ-5223

Added the bundle packaging option


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

Branch: refs/heads/activemq-5.10.x
Commit: f63bd322036168de04374dd4726dbaa0951c3263
Parents: 385ca81
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Jun 13 12:35:13 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 16:57:51 2014 -0500

----------------------------------------------------------------------
 activemq-jms-pool/pom.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/f63bd322/activemq-jms-pool/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/pom.xml b/activemq-jms-pool/pom.xml
index a42e901..7551786 100755
--- a/activemq-jms-pool/pom.xml
+++ b/activemq-jms-pool/pom.xml
@@ -28,6 +28,7 @@
   <artifactId>activemq-jms-pool</artifactId>
   <name>ActiveMQ :: Generic JMS Pool</name>
   <description>Generic JMS Pooled ConnectionFactory</description>
+  <packaging>bundle</packaging>
 
   <properties>
     <activemq.osgi.import.pkg>


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

Posted by ha...@apache.org.
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) {
+
+        }
+    }
 }


[16/17] activemq git commit: Change logging from TRACE to WARN to save space on CI nodes

Posted by ha...@apache.org.
Change logging from TRACE to WARN to save space on CI nodes


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

Branch: refs/heads/activemq-5.10.x
Commit: f59e51bb4623aea962aee01398a7bfdca63c882f
Parents: dc900a3
Author: Kevin Earls <ke...@kevinearls.com>
Authored: Tue Jun 24 11:21:34 2014 +0200
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 17:05:47 2014 -0500

----------------------------------------------------------------------
 activemq-leveldb-store/src/test/resources/log4j.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/f59e51bb/activemq-leveldb-store/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/activemq-leveldb-store/src/test/resources/log4j.properties b/activemq-leveldb-store/src/test/resources/log4j.properties
index da0480a..dc1100d 100755
--- a/activemq-leveldb-store/src/test/resources/log4j.properties
+++ b/activemq-leveldb-store/src/test/resources/log4j.properties
@@ -26,7 +26,7 @@ log4j.logger.org.apache.activemq.leveldb=INFO
 log4j.appender.console=org.apache.log4j.ConsoleAppender
 log4j.appender.console.layout=org.apache.log4j.PatternLayout
 log4j.appender.console.layout.ConversionPattern=%-5p | %t | %m%n
-log4j.appender.console.threshold=TRACE
+log4j.appender.console.threshold=WARN
 
 # File appender will contain all info messages
 log4j.appender.file=org.apache.log4j.FileAppender


[03/17] activemq git commit: Convert to JUnit 4 test and add a timeout, also remove the tcp transport connector on a fixed port as its not needed.

Posted by ha...@apache.org.
Convert to JUnit 4 test and add a timeout, also remove the tcp transport
connector on a fixed port as its not needed.


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

Branch: refs/heads/activemq-5.10.x
Commit: 1e3f4f192b6240271112e2d8dc46413925b46364
Parents: 95a70bb
Author: Timothy Bish <ta...@gmail.com>
Authored: Thu Jun 5 17:52:01 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 13:53:38 2014 -0500

----------------------------------------------------------------------
 .../transport/vm/VMTransportWaitForTest.java    | 48 +++++++++++---------
 1 file changed, 26 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/1e3f4f19/activemq-unit-tests/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java
index 505e65c..faa93e4 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java
@@ -16,28 +16,32 @@
  */
 package org.apache.activemq.transport.vm;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import java.net.URI;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import javax.jms.JMSException;
 
-import junit.framework.TestCase;
-
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.activemq.broker.BrokerService;
+import org.junit.Test;
 
-public class VMTransportWaitForTest extends TestCase {
+public class VMTransportWaitForTest {
 
-    private static final String VM_BROKER_URI_NO_WAIT = 
+    private static final String VM_BROKER_URI_NO_WAIT =
         "vm://localhost?broker.persistent=false&create=false";
-    
-    private static final String VM_BROKER_URI_WAIT_FOR_START = 
+
+    private static final String VM_BROKER_URI_WAIT_FOR_START =
         VM_BROKER_URI_NO_WAIT + "&waitForStart=20000";
-    
+
     CountDownLatch started = new CountDownLatch(1);
     CountDownLatch gotConnection = new CountDownLatch(1);
 
+    @Test(timeout=90000)
     public void testWaitFor() throws Exception {
         try {
             ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(new URI(VM_BROKER_URI_NO_WAIT));
@@ -45,32 +49,32 @@ public class VMTransportWaitForTest extends TestCase {
             fail("expect broker not exist exception");
         } catch (JMSException expectedOnNoBrokerAndNoCreate) {
         }
-        
-        // spawn a thread that will wait for an embedded broker to start via vm://..
+
+        // spawn a thread that will wait for an embedded broker to start via
+        // vm://..
         Thread t = new Thread() {
+            @Override
             public void run() {
-                    try {
-                        started.countDown();
-                        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(new URI(VM_BROKER_URI_WAIT_FOR_START));
-                        cf.createConnection();
-                        gotConnection.countDown();
-                   
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        fail("unexpected exception: " + e);
-                    }
+                try {
+                    started.countDown();
+                    ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(new URI(VM_BROKER_URI_WAIT_FOR_START));
+                    cf.createConnection();
+                    gotConnection.countDown();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    fail("unexpected exception: " + e);
+                }
             }
         };
         t.start();
         started.await(20, TimeUnit.SECONDS);
         Thread.yield();
         assertFalse("has not got connection", gotConnection.await(2, TimeUnit.SECONDS));
-        
+
         BrokerService broker = new BrokerService();
         broker.setPersistent(false);
-        broker.addConnector("tcp://localhost:61616");
         broker.start();
         assertTrue("has got connection", gotConnection.await(400, TimeUnit.MILLISECONDS));
-        broker.stop(); 
+        broker.stop();
     }
 }