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"));
+ }
+}