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 <[email protected]> Authored: Thu Mar 17 15:24:34 2016 +0100 Committer: Christian Schneider <[email protected]> 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("")); } }
