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/03/17 15:24:42 UTC

karaf git commit: [KARAF-4370] Fixes event commands

Repository: karaf
Updated Branches:
  refs/heads/master 73253140d -> fe928b873


[KARAF-4370] Fixes event commands


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

Branch: refs/heads/master
Commit: fe928b873f82e4b3bc78848cdafa104f78888eb4
Parents: 7325314
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Thu Mar 17 15:24:34 2016 +0100
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Thu Mar 17 15:24:34 2016 +0100

----------------------------------------------------------------------
 .../standard/src/main/feature/feature.xml       |  7 +++-
 event/pom.xml                                   |  1 -
 .../karaf/event/command/EventSendCommand.java   | 28 ++++++++------
 .../event/command/EventSendCommandTest.java     | 40 ++++++++++++++++----
 4 files changed, 55 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/fe928b87/assemblies/features/standard/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/standard/src/main/feature/feature.xml b/assemblies/features/standard/src/main/feature/feature.xml
index 8631019..4447b72 100644
--- a/assemblies/features/standard/src/main/feature/feature.xml
+++ b/assemblies/features/standard/src/main/feature/feature.xml
@@ -499,13 +499,16 @@
         </config>
         <bundle start-level="5">mvn:org.apache.felix/org.apache.felix.metatype/${felix.metatype.version}</bundle>
         <bundle start-level="5">mvn:org.apache.karaf.services/org.apache.karaf.services.eventadmin/${project.version}</bundle>
-        <bundle>mvn:org.apache.karaf/org.apache.karaf.event/${project.version}</bundle>
+        <conditional>
+            <condition>shell</condition>
+            <bundle>mvn:org.apache.karaf/org.apache.karaf.event/${project.version}</bundle>
+        </conditional>
         <conditional>
             <condition>webconsole</condition>
             <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.webconsole.plugins.event/${felix.eventadmin.webconsole.plugin.version}</bundle>
         </conditional>
     </feature>
-
+    
     <feature name="jasypt-encryption" description="Advanced encryption support for Karaf security" version="${project.version}">
         <feature>jaas</feature>
         <bundle dependency="true" start-level="30">mvn:commons-codec/commons-codec/${commons-codec.version}</bundle>

http://git-wip-us.apache.org/repos/asf/karaf/blob/fe928b87/event/pom.xml
----------------------------------------------------------------------
diff --git a/event/pom.xml b/event/pom.xml
index 9b9b393..3028c23 100644
--- a/event/pom.xml
+++ b/event/pom.xml
@@ -71,7 +71,6 @@
             <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.core</artifactId>
             <version>4.0.4</version>
-            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>org.apache.karaf</groupId>

http://git-wip-us.apache.org/repos/asf/karaf/blob/fe928b87/event/src/main/java/org/apache/karaf/event/command/EventSendCommand.java
----------------------------------------------------------------------
diff --git a/event/src/main/java/org/apache/karaf/event/command/EventSendCommand.java b/event/src/main/java/org/apache/karaf/event/command/EventSendCommand.java
index 092facb..0f7d5e6 100644
--- a/event/src/main/java/org/apache/karaf/event/command/EventSendCommand.java
+++ b/event/src/main/java/org/apache/karaf/event/command/EventSendCommand.java
@@ -17,6 +17,7 @@
 package org.apache.karaf.event.command;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.karaf.shell.api.action.Action;
@@ -37,27 +38,32 @@ public class EventSendCommand implements Action {
     @Reference
     EventAdmin eventAdmin;
 
-    @Argument
+    @Argument(index=0, required=true)
     String topic;
 
-    @Argument(multiValued=true)
-    String propertiesSt;
+    @Argument(index=1, multiValued=true, description="Event properties in format key=value key2=value2 ...")
+    List<String> properties;
 
     @Override
     public Object execute() throws Exception {
-        eventAdmin.sendEvent(new Event(topic, parse(propertiesSt)));
+        eventAdmin.sendEvent(new Event(topic, parse(properties)));
         return null;
     }
 
-    Map<String, String> parse(String propSt) {
+    static Map<String, String> parse(List<String> propList) {
         Map<String, String> properties = new HashMap<>();
-        for (String keyValue : propSt.split(",")) {
-            String[] splitted = keyValue.split("=");
-            if (splitted.length != 2) {
-                throw new IllegalArgumentException("Invalid entry " + keyValue);
+        if (propList != null) {
+            for (String keyValue : propList) {
+                int splitAt = keyValue.indexOf("=");
+                if (splitAt <= 0) {
+                    throw new IllegalArgumentException("Invalid property " + keyValue);
+                } else {
+                    String key = keyValue.substring(0, splitAt);
+                    String value = keyValue.substring(splitAt + 1, keyValue.length());
+                    properties.put(key, value);
+                }
             }
-            properties.put(splitted[0], splitted[1]);
-        };
+        }
         return properties;
     }
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/fe928b87/event/src/test/java/org/apache/karaf/event/command/EventSendCommandTest.java
----------------------------------------------------------------------
diff --git a/event/src/test/java/org/apache/karaf/event/command/EventSendCommandTest.java b/event/src/test/java/org/apache/karaf/event/command/EventSendCommandTest.java
index ba56179..96f3413 100644
--- a/event/src/test/java/org/apache/karaf/event/command/EventSendCommandTest.java
+++ b/event/src/test/java/org/apache/karaf/event/command/EventSendCommandTest.java
@@ -7,9 +7,12 @@ import static org.easymock.EasyMock.newCapture;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.karaf.event.command.EventSendCommand;
@@ -19,6 +22,7 @@ import org.osgi.service.event.Event;
 import org.osgi.service.event.EventAdmin;
 
 public class EventSendCommandTest {
+
     @Test
     public void testExecute() throws Exception {
         EventSendCommand send = new EventSendCommand();
@@ -29,7 +33,7 @@ public class EventSendCommandTest {
 
         replay(send.eventAdmin);
         send.topic = "myTopic";
-        send.propertiesSt = "a=b";
+        send.properties = Arrays.asList("a=b");
         send.execute();
         verify(send.eventAdmin);
         
@@ -40,17 +44,39 @@ public class EventSendCommandTest {
     
     @Test
     public void testParse() {
-        String propSt = "a=b,b=c";
+        List<String> propList = Arrays.asList("a=b","b=c");
         Map<String, String> expectedMap = new HashMap<>();
         expectedMap.put("a", "b");
         expectedMap.put("b", "c");
-        Map<String, String> props = new EventSendCommand().parse(propSt);
-        assertThat(props.entrySet(), equalTo(expectedMap.entrySet())); 
+        Map<String, String> props = EventSendCommand.parse(propList);
+        assertThat(props.size(), equalTo(2));
+        assertThat(props.get("a"), equalTo("b"));
+        assertThat(props.get("b"), equalTo("c"));
+    }
+    
+    @Test
+    public void testParseNull() {
+        Map<String, String> props = EventSendCommand.parse(null);
+        assertNotNull(props);
+        assertThat(props.size(), equalTo(0));
+    }
+    
+    @Test(expected=IllegalArgumentException.class)
+    public void testParseNoKeyValue() {
+        EventSendCommand.parse(Arrays.asList("="));
     }
     
     @Test(expected=IllegalArgumentException.class)
-    public void testParseError() {
-        String propSt = "a=b,c=";
-        new EventSendCommand().parse(propSt);
+    public void testParseNoKey() {
+        EventSendCommand.parse(Arrays.asList("=b"));
+    }
+    
+    @Test
+    public void testParseStrange() {
+        Map<String, String> props = EventSendCommand.parse(Arrays.asList("a=b","c=d=3", "e="));
+        assertThat(props.size(), equalTo(3));
+        assertThat(props.get("a"), equalTo("b"));
+        assertThat(props.get("c"), equalTo("d=3"));
+        assertThat(props.get("e"), equalTo(""));
     }
 }