You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2016/07/19 15:24:41 UTC

[3/3] karaf-decanter git commit: [KARAF-4629] Make sure long properties are transmitted using setLong

[KARAF-4629] Make sure long properties are transmitted using setLong


Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/0b32e380
Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/0b32e380
Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/0b32e380

Branch: refs/heads/master
Commit: 0b32e38006f6b7cd573bfdb62c9975c108d8e93f
Parents: 40a5d6b
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Jul 19 17:23:04 2016 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Jul 19 17:23:04 2016 +0200

----------------------------------------------------------------------
 appender/jms/pom.xml                            |  5 ++
 .../decanter/appender/jms/JmsAppender.java      | 10 ++-
 .../decanter/appender/jms/JmsAppenderTest.java  | 70 ++++++++++++++++++++
 3 files changed, 83 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0b32e380/appender/jms/pom.xml
----------------------------------------------------------------------
diff --git a/appender/jms/pom.xml b/appender/jms/pom.xml
index f97be4a..c14865d 100644
--- a/appender/jms/pom.xml
+++ b/appender/jms/pom.xml
@@ -39,6 +39,11 @@
             <artifactId>geronimo-jms_1.1_spec</artifactId>
             <version>1.1.1</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-broker</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0b32e380/appender/jms/src/main/java/org/apache/karaf/decanter/appender/jms/JmsAppender.java
----------------------------------------------------------------------
diff --git a/appender/jms/src/main/java/org/apache/karaf/decanter/appender/jms/JmsAppender.java b/appender/jms/src/main/java/org/apache/karaf/decanter/appender/jms/JmsAppender.java
index 0169963..0dd2665 100644
--- a/appender/jms/src/main/java/org/apache/karaf/decanter/appender/jms/JmsAppender.java
+++ b/appender/jms/src/main/java/org/apache/karaf/decanter/appender/jms/JmsAppender.java
@@ -48,11 +48,15 @@ public class JmsAppender implements EventHandler {
     @SuppressWarnings("unchecked")
     @Activate
     public void activate(ComponentContext context) {
-        Dictionary<String, Object> config = context.getProperties();
+        activate(context.getProperties());
+    }
+    
+    void activate(Dictionary<String, Object> config) {
         username = getProperty(config, "username", null);
         password = getProperty(config, "password", null);
         destinationName = getProperty(config, "destination.name", "decanter");
         destinationType = getProperty(config, "destination.type", "queue");
+        LOGGER.info("Decanter JMS Appender started sending to {} {}",destinationType, destinationName);
     }
 
     private String getProperty(Dictionary<String, Object> properties, String key, String defaultValue) {
@@ -86,7 +90,7 @@ public class JmsAppender implements EventHandler {
         }
     }
 
-    private void setProperty(MapMessage message, String name, Object value) throws JMSException {
+    void setProperty(MapMessage message, String name, Object value) throws JMSException {
         if (value instanceof String)
             message.setString(name, (String) value);
         else if (value instanceof Boolean)
@@ -95,6 +99,8 @@ public class JmsAppender implements EventHandler {
             message.setDouble(name, (Double) value);
         else if (value instanceof Integer)
             message.setInt(name, (Integer) value);
+        else if (value instanceof Long)
+            message.setLong(name, (Long) value);
         else message.setString(name, value.toString());
         // we can setObject with List, Map, but they have to contain only primitives
     }

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0b32e380/appender/jms/src/test/java/org/apache/karaf/decanter/appender/jms/JmsAppenderTest.java
----------------------------------------------------------------------
diff --git a/appender/jms/src/test/java/org/apache/karaf/decanter/appender/jms/JmsAppenderTest.java b/appender/jms/src/test/java/org/apache/karaf/decanter/appender/jms/JmsAppenderTest.java
new file mode 100644
index 0000000..2df8f51
--- /dev/null
+++ b/appender/jms/src/test/java/org/apache/karaf/decanter/appender/jms/JmsAppenderTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.karaf.decanter.appender.jms;
+
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import javax.jms.Connection;
+import javax.jms.JMSException;
+import javax.jms.MapMessage;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.junit.Assert;
+import org.junit.Test;
+import org.osgi.service.event.Event;
+
+
+public class JmsAppenderTest {
+
+    @Test
+    public void testHandleEvent() throws JMSException {
+        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
+        JmsAppender appender = new JmsAppender();
+        appender.setConnectionFactory(cf);
+        Dictionary<String, Object> config = new Hashtable<>();
+        appender.activate(config);
+        
+        Connection con = cf.createConnection();
+        con.start();
+        Session sess = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        
+        MessageConsumer consumer = sess.createConsumer(sess.createQueue("decanter"));
+
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("timestamp", 1l);
+        props.put("string", "test");
+        props.put("boolean", true);
+        props.put("integer", 1);
+        appender.handleEvent(new Event("decanter/collect", props));
+        
+        MapMessage message = (MapMessage)consumer.receive();
+        consumer.close();
+        sess.close();
+        con.close();
+        
+        Assert.assertEquals(1l, message.getObject("timestamp"));
+        Assert.assertEquals("test", message.getObject("string"));
+        Assert.assertEquals(true, message.getObject("boolean"));
+        Assert.assertEquals(1, message.getObject("integer"));
+    }
+}