You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2014/11/06 11:45:43 UTC
svn commit: r1637071 - in /sling/trunk/contrib/extensions/replication:
core/src/main/java/org/apache/sling/replication/agent/impl/
core/src/main/java/org/apache/sling/replication/component/impl/
core/src/main/java/org/apache/sling/replication/packaging...
Author: mpetria
Date: Thu Nov 6 10:45:43 2014
New Revision: 1637071
URL: http://svn.apache.org/r1637071
Log:
SLING-4060: initial refactoring for property parsing
Added:
sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/SettingsUtilsTest.java
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactoryTest.java
sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json
sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json
sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java Thu Nov 6 10:45:43 2014
@@ -20,12 +20,9 @@ package org.apache.sling.replication.age
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
-import java.util.List;
import java.util.Map;
import org.apache.felix.scr.annotations.Activate;
@@ -41,6 +38,7 @@ import org.apache.sling.replication.comp
import org.apache.sling.replication.component.ReplicationComponent;
import org.apache.sling.replication.component.ReplicationComponentFactory;
import org.apache.sling.replication.component.ReplicationComponentProvider;
+import org.apache.sling.replication.component.impl.SettingsUtils;
import org.apache.sling.replication.event.impl.ReplicationEventFactory;
import org.apache.sling.replication.queue.ReplicationQueueDistributionStrategy;
import org.apache.sling.replication.queue.ReplicationQueueProvider;
@@ -86,12 +84,18 @@ public class CoordinatingReplicationAgen
@Property(label = "Service Name")
public static final String SERVICE_NAME = ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_SERVICE_NAME;
- @Property(label = "Package Exporter", cardinality = 100)
+ @Property(label = "Request Authorization Strategy Properties", cardinality = 100)
+ public static final String REQUEST_AUTHORIZATION_STRATEGY = ReplicationComponentFactory.COMPONENT_REQUEST_AUTHORIZATION_STRATEGY;
+
+ @Property(label = "Package Exporter Properties", cardinality = 100)
public static final String PACKAGE_EXPORTER = ReplicationComponentFactory.COMPONENT_PACKAGE_EXPORTER;
- @Property(label = "Package Importer", cardinality = 100)
+ @Property(label = "Package Importer Properties", cardinality = 100)
public static final String PACKAGE_IMPORTER = ReplicationComponentFactory.COMPONENT_PACKAGE_IMPORTER;
+ @Property(label = "Trigger Properties", cardinality = 100)
+ public static final String TRIGGER = ReplicationComponentFactory.COMPONENT_TRIGGER;
+
@Property(label = "Target TransportAuthenticationProvider", name = TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
@Reference(name = "transportAuthenticationProvider")
private volatile TransportAuthenticationProvider transportAuthenticationProvider;
@@ -130,28 +134,29 @@ public class CoordinatingReplicationAgen
props.put(NAME, agentName);
if (componentReg == null) {
- Map<String, Object> properties = new HashMap<String, Object>();
- properties.putAll(config);
-
- String[] packageImporterProperties = PropertiesUtil.toStringArray(properties.get(PACKAGE_IMPORTER));
- String[] packageExporterProperties = PropertiesUtil.toStringArray(properties.get(PACKAGE_EXPORTER));
+ String[] requestAuthProperties = PropertiesUtil.toStringArray(config.get(REQUEST_AUTHORIZATION_STRATEGY), new String[0]);
+ String[] packageImporterProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_IMPORTER), new String[0]);
+ String[] packageExporterProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_EXPORTER), new String[0]);
+ String[] triggerProperties = PropertiesUtil.toStringArray(config.get(TRIGGER), new String[0]);
if (packageImporterProperties == null || packageExporterProperties == null ||
packageImporterProperties.length == 0 || packageExporterProperties.length == 0) {
throw new IllegalArgumentException("package exporters and importers cannot be null/empty");
}
- List<String> packageImporterPropertiesList = new ArrayList<String>();
- packageImporterPropertiesList.addAll(Arrays.asList(packageImporterProperties));
- packageImporterPropertiesList.add("type=remote");
- packageImporterProperties = packageImporterPropertiesList.toArray(new String[packageImporterPropertiesList.size()]);
- properties.put(PACKAGE_IMPORTER, packageImporterProperties);
-
- List<String> packageExporterPropertiesList = new ArrayList<String>();
- packageExporterPropertiesList.addAll(Arrays.asList(packageExporterProperties));
- packageExporterPropertiesList.add("type=remote");
- packageExporterProperties = packageExporterPropertiesList.toArray(new String[packageExporterPropertiesList.size()]);
- properties.put(PACKAGE_EXPORTER, packageExporterProperties);
+
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.putAll(config);
+
+ properties.put(REQUEST_AUTHORIZATION_STRATEGY, SettingsUtils.parseLines(requestAuthProperties));
+ properties.put(PACKAGE_IMPORTER, SettingsUtils.parseLines(packageImporterProperties));
+ properties.put(PACKAGE_EXPORTER, SettingsUtils.parseLines(packageExporterProperties));
+ properties.put(TRIGGER, SettingsUtils.parseLines(triggerProperties));
+
+ // ensure exporter and importer are remote
+ ((Map) properties.get(PACKAGE_EXPORTER)).put("type", "remote");
+ ((Map) properties.get(PACKAGE_IMPORTER)).put("type", "remote");
+
ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, properties, this);
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java Thu Nov 6 10:45:43 2014
@@ -20,10 +20,7 @@ package org.apache.sling.replication.age
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
@@ -40,6 +37,7 @@ import org.apache.sling.replication.comp
import org.apache.sling.replication.component.ReplicationComponent;
import org.apache.sling.replication.component.ReplicationComponentFactory;
import org.apache.sling.replication.component.ReplicationComponentProvider;
+import org.apache.sling.replication.component.impl.SettingsUtils;
import org.apache.sling.replication.event.impl.ReplicationEventFactory;
import org.apache.sling.replication.queue.ReplicationQueueDistributionStrategy;
import org.apache.sling.replication.queue.ReplicationQueueProvider;
@@ -90,6 +88,10 @@ public class SimpleReplicationAgentFacto
@Property(label = "Package Importer Properties", cardinality = 100)
public static final String PACKAGE_IMPORTER = ReplicationComponentFactory.COMPONENT_PACKAGE_IMPORTER;
+ @Property(label = "Trigger Properties", cardinality = 100)
+ public static final String TRIGGER = ReplicationComponentFactory.COMPONENT_TRIGGER;
+
+
@Property(label = "Service Name")
public static final String SERVICE_NAME = ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_SERVICE_NAME;
@@ -133,7 +135,27 @@ public class SimpleReplicationAgentFacto
props.put(NAME, agentName);
if (componentReg == null && componentFactory != null) {
- ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, config, this);
+
+ String[] requestAuthProperties = PropertiesUtil.toStringArray(config.get(REQUEST_AUTHORIZATION_STRATEGY), new String[0]);
+ String[] packageImporterProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_IMPORTER), new String[0]);
+ String[] packageExporterProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_EXPORTER), new String[0]);
+ String[] triggerProperties = PropertiesUtil.toStringArray(config.get(TRIGGER), new String[0]);
+
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.putAll(config);
+
+ properties.put(REQUEST_AUTHORIZATION_STRATEGY, SettingsUtils.parseLines(requestAuthProperties));
+ properties.put(PACKAGE_IMPORTER, SettingsUtils.parseLines(packageImporterProperties));
+ properties.put(PACKAGE_EXPORTER, SettingsUtils.parseLines(packageExporterProperties));
+ properties.put(TRIGGER, SettingsUtils.parseLines(triggerProperties));
+
+ ReplicationAgent agent = null;
+ try {
+ agent = componentFactory.createComponent(ReplicationAgent.class, properties, this);
+ }
+ catch (IllegalArgumentException e) {
+ log.warn("cannot create agent", e);
+ }
log.debug("activated agent {}", agentName);
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java Thu Nov 6 10:45:43 2014
@@ -126,20 +126,17 @@ public class DefaultReplicationComponent
if (componentProvider == null) {
componentProvider = this;
}
- try {
- if (type.isAssignableFrom(ReplicationAgent.class)) {
- return (ComponentType) createAgent(properties, componentProvider);
- } else if (type.isAssignableFrom(ReplicationTrigger.class)) {
- return (ComponentType) createTrigger(properties, componentProvider);
- } else if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
- return (ComponentType) createTransportAuthenticationProvider(properties, componentProvider);
- } else if (type.isAssignableFrom(ReplicationPackageImporter.class)) {
- return (ComponentType) createImporter(properties, componentProvider);
- } else if (type.isAssignableFrom(ReplicationPackageExporter.class)) {
- return (ComponentType) createExporter(properties, componentProvider);
- }
- } catch (IllegalArgumentException e) {
- log.warn("Cannot create component {}", new Object[]{type, properties}, e);
+
+ if (type.isAssignableFrom(ReplicationAgent.class)) {
+ return (ComponentType) createAgent(properties, componentProvider);
+ } else if (type.isAssignableFrom(ReplicationTrigger.class)) {
+ return (ComponentType) createTrigger(properties, componentProvider);
+ } else if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
+ return (ComponentType) createTransportAuthenticationProvider(properties, componentProvider);
+ } else if (type.isAssignableFrom(ReplicationPackageImporter.class)) {
+ return (ComponentType) createImporter(properties, componentProvider);
+ } else if (type.isAssignableFrom(ReplicationPackageExporter.class)) {
+ return (ComponentType) createExporter(properties, componentProvider);
}
return null;
@@ -388,19 +385,38 @@ public class DefaultReplicationComponent
return triggers;
}
- Map<String, Object> extractMap(String key, Map<String, Object> objectMap) {
- Map<String, Object> map = SettingsUtils.extractMap(key, objectMap);
- return map == null ? new HashMap<String, Object>() : map;
+ Map<String, Object> extractMap(String key, Map<String, Object> sourceMap) {
+ sourceMap = sourceMap == null ? new HashMap<String, Object>() : sourceMap;
+
+ Object resultMapObject = sourceMap.get(key);
+
+ Map<String, Object> resultMap = null;
+ if (resultMapObject instanceof Map) {
+ resultMap = (Map) resultMapObject;
+ }
+
+ return resultMap == null ? new HashMap<String, Object>() : resultMap;
}
- List<Map<String, Object>> extractMapList(String key, Map<String, Object> objectMap) {
+ List<Map<String, Object>> extractMapList(String key, Map<String, Object> sourceMap) {
+
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
- for (String mapKey : objectMap.keySet()) {
- if (mapKey.startsWith(key)) {
- result.add(SettingsUtils.extractMap(mapKey, objectMap));
+
+ sourceMap = sourceMap == null ? new HashMap<String, Object>() : sourceMap;
+
+ Object resultMapObject = sourceMap.get(key);
+
+ if (resultMapObject instanceof Map) {
+ Map<String, Object> resultMap = (Map) resultMapObject;
+ for (Map.Entry<String, Object> entry : resultMap.entrySet()) {
+ if (entry.getValue() instanceof Map) {
+ result.add((Map<String,Object>) entry.getValue());
+ }
}
}
+
return result;
+
}
public <ComponentType extends ReplicationComponent> ComponentType getComponent(@Nonnull Class<ComponentType> type,
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java Thu Nov 6 10:45:43 2014
@@ -110,7 +110,8 @@ public class GenericReplicationComponent
if (componentReg == null) {
- Map<String, Object> configProperties = SettingsUtils.extractMap(PROPERTIES, config);
+ String[] propertyLines = PropertiesUtil.toStringArray(config.get(PROPERTIES));
+ Map<String, Object> configProperties = SettingsUtils.parseLines(propertyLines);
Map<String, Object> properties = new HashMap<String, Object>();
properties.putAll(config);
@@ -119,17 +120,22 @@ public class GenericReplicationComponent
String componentClass = null;
Object componentObject = null;
- if (ReplicationComponentFactory.COMPONENT_AGENT.equals(componentType)) {
- ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, properties, this);
- componentClass = ReplicationAgent.class.getName();
- componentObject = agent;
+ try {
+ if (ReplicationComponentFactory.COMPONENT_AGENT.equals(componentType)) {
+ ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, properties, this);
+ componentClass = ReplicationAgent.class.getName();
+ componentObject = agent;
- } else if (ReplicationComponentFactory.COMPONENT_TRIGGER.equals(componentType)) {
+ } else if (ReplicationComponentFactory.COMPONENT_TRIGGER.equals(componentType)) {
- ReplicationTrigger trigger = componentFactory.createComponent(ReplicationTrigger.class, properties, this);
+ ReplicationTrigger trigger = componentFactory.createComponent(ReplicationTrigger.class, properties, this);
- componentClass = ReplicationTrigger.class.getName();
- componentObject = trigger;
+ componentClass = ReplicationTrigger.class.getName();
+ componentObject = trigger;
+ }
+ }
+ catch (IllegalArgumentException e) {
+ log.warn("cannot create component", e);
}
if (componentObject != null && componentClass != null) {
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java Thu Nov 6 10:45:43 2014
@@ -19,7 +19,6 @@
package org.apache.sling.replication.component.impl;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -28,23 +27,82 @@ import org.apache.sling.commons.osgi.Pro
public class SettingsUtils {
+ private static final String COMPONENT_ROOT = "";
private static final char COMPONENT_DELIM = '/';
private static final char COMPONENT_MAP_BEGIN = '[';
private static final char COMPONENT_MAP_END = ']';
+ private static final char COMPONENT_MAP_DELIM = '=';
- public static Map<String, Object> extractMap(String key, Map<String, Object> objectMap) {
- Object value = objectMap.get(key);
- if (value instanceof String[]) {
- return compactMap(SettingsUtils.toMap((String[]) value));
- } else if (value instanceof String) {
- return compactMap(SettingsUtils.toMap(((String) value).split(",")));
+ /**
+ * packageExporter/propertyKey=propertyValue
+ * packageExporter/endpoint[flag]=propertyValue
+ *
+ * packageExporter/packageBuilder/propertyKey=propertyValue
+ *
+ * propertyKey=propertyValue
+ * trigger[0]/propertyKey=propertyValue
+ * trigger[0]/propertyKey=propertyValue
+ *
+ * @param lines
+ * @return
+ */
+ public static Map<String, Object> parseLines(String[] lines) {
+ Map<String, Object> result = new HashMap<String, Object>();
+
+ Map<String, List<String>> linesMap = toLinesMap(lines);
+
+ for (Map.Entry<String, List<String>> entry : linesMap.entrySet()) {
+ String componentName = entry.getKey();
+ String[] componentLines = entry.getValue().toArray(new String[0]);
+
+ if (COMPONENT_ROOT.equals(componentName)) {
+ Map<String, String> map = PropertiesUtil.toMap(componentLines, new String [0]);
+ result.putAll(map);
+ }
+ else {
+ Map<String, Object> componentMap = parseLines(componentLines);
+ result.put(componentName, componentMap);
+ }
}
- return null;
+
+ result = collapseMap(result);
+ return result;
}
+ public static Map<String, List<String>> toLinesMap(String[] lines) {
+ Map<String, List<String>> result = new HashMap<String, List<String>>();
+
+
+ for (String line : lines) {
+ int firstMapDelim = line.indexOf(COMPONENT_MAP_DELIM);
+ if (firstMapDelim < 0) {
+ continue;
+ }
+
+ int firstDelim = line.substring(0, firstMapDelim).indexOf(COMPONENT_DELIM);
+ String key = COMPONENT_ROOT;
+ String value = line;
+
+ if (firstDelim >= 0) {
+ key = line.substring(0, firstDelim);
+ value = line.substring(firstDelim + 1);
+ }
+
+
+ if (!result.containsKey(key)) {
+ result.put(key, new ArrayList<String>());
+ }
+
+ List<String> exitingLines = result.get(key);
+ exitingLines.add(value);
- public static Map<String, Object> compactMap(Map<String, Object> valueMap) {
+ }
+
+ return result;
+ }
+
+ public static Map<String, Object> collapseMap(Map<String, Object> valueMap) {
Map<String, Object> result = new HashMap<String, Object>();
@@ -54,21 +112,27 @@ public class SettingsUtils {
int beginDelim = key.indexOf(COMPONENT_MAP_BEGIN);
int endDelim = key.indexOf(COMPONENT_MAP_END);
- if (beginDelim >= 0 && endDelim > beginDelim && value instanceof String) {
+ if (beginDelim >= 0 && endDelim > beginDelim) {
String newKey = key.substring(0, beginDelim);
String partialKey = key.substring(beginDelim + 1, endDelim);
- String newValue = (String) value;
- try {
- Integer.parseInt(partialKey);
- // newKey[0] = newValue
- } catch (NumberFormatException e) {
- // newKey[partialKey] = newValue
- newValue = partialKey + "=" + newValue;
+ boolean isNumber = isNumber(partialKey);
+
+ if (!result.containsKey(newKey)) {
+ result.put(newKey, isNumber? new ArrayList<Object>() : new HashMap<String, Object>());
}
- addValueInArray(result, newKey, newValue);
+ Object existingObject = result.get(newKey);
+ if (existingObject instanceof Map) {
+ ((Map) existingObject).put(partialKey, value);
+ }
+ else if (existingObject instanceof List) {
+ ((List) existingObject).add(value);
+ }
+ else {
+ // skip if there is already something else in there
+ }
} else {
result.put(key, value);
}
@@ -78,47 +142,13 @@ public class SettingsUtils {
}
- public static Map<String, Object> toMap(String[] lines) {
- Map<String, Object> result = new HashMap<String, Object>();
-
- Map<String, String> valueMap = PropertiesUtil.toMap(lines, new String[0]);
-
- for (Map.Entry<String, String> entry : valueMap.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
- int firstDelim = key.indexOf(COMPONENT_DELIM);
- if (firstDelim >= 0) {
- String newKey = key.substring(0, firstDelim);
- String newValue = key.substring(firstDelim + 1) + "=" + value;
-
- addValueInArray(result, newKey, newValue);
- } else {
- result.put(key, value);
- }
-
+ private static boolean isNumber(String value) {
+ try {
+ Integer.parseInt(value);
+ return true;
}
-
- return result;
-
- }
-
- public static void addValueInArray(Map<String, Object> map, String key, String value) {
- String[] arayValue;
-
- if (map.containsKey(key) && map.get(key) instanceof String[]) {
- String[] existingArray = (String[]) map.get(key);
-
-
- List<String> newList = new ArrayList<String>();
- Collections.addAll(newList, existingArray);
- newList.add(value);
- arayValue = newList.toArray(new String[newList.size()]);
- } else {
- arayValue = new String[]{value};
+ catch (NumberFormatException e) {
+ return false;
}
-
- map.put(key, arayValue);
-
}
-
}
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java Thu Nov 6 10:45:43 2014
@@ -20,6 +20,7 @@ package org.apache.sling.replication.pac
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -31,11 +32,13 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.replication.agent.ReplicationAgent;
import org.apache.sling.replication.component.ReplicationComponent;
import org.apache.sling.replication.component.ReplicationComponentFactory;
import org.apache.sling.replication.component.ReplicationComponentProvider;
import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.component.impl.SettingsUtils;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.packaging.ReplicationPackageExporter;
import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
@@ -61,6 +64,10 @@ public class AgentReplicationPackageExpo
@Reference(name = "ReplicationAgent", policy = ReferencePolicy.STATIC)
private ReplicationAgent agent;
+
+ @Property(label = "Package Builder Properties", cardinality = 100)
+ public static final String PACKAGE_BUILDER = ReplicationComponentFactory.COMPONENT_PACKAGE_BUILDER;
+
@Reference
ReplicationComponentFactory replicationComponentFactory;
@@ -70,7 +77,12 @@ public class AgentReplicationPackageExpo
@Activate
public void activate(Map<String, Object> config) throws Exception {
- packageExporter = replicationComponentFactory.createComponent(ReplicationPackageExporter.class, config, this);
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.putAll(config);
+ String[] packageBuilderProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_BUILDER));
+ properties.put(PACKAGE_BUILDER, SettingsUtils.parseLines(packageBuilderProperties));
+
+ packageExporter = replicationComponentFactory.createComponent(ReplicationPackageExporter.class, properties, this);
}
@Nonnull
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java Thu Nov 6 10:45:43 2014
@@ -19,6 +19,7 @@
package org.apache.sling.replication.packaging.impl.exporter;
import javax.annotation.Nonnull;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -29,8 +30,10 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.replication.component.ReplicationComponentFactory;
import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.component.impl.SettingsUtils;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.packaging.ReplicationPackageExporter;
import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
@@ -57,6 +60,9 @@ public class LocalReplicationPackageExpo
@Property
private static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
+ @Property(label = "Package Builder Properties", cardinality = 100)
+ public static final String PACKAGE_BUILDER = ReplicationComponentFactory.COMPONENT_PACKAGE_BUILDER;
+
@Reference
ReplicationComponentFactory replicationComponentFactory;
@@ -64,7 +70,12 @@ public class LocalReplicationPackageExpo
@Activate
public void activate(Map<String, Object> config) {
- exporter = replicationComponentFactory.createComponent(ReplicationPackageExporter.class, config, null);
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.putAll(config);
+ String[] packageBuilderProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_BUILDER));
+ properties.put(PACKAGE_BUILDER, SettingsUtils.parseLines(packageBuilderProperties));
+
+ exporter = replicationComponentFactory.createComponent(ReplicationPackageExporter.class, properties, null);
}
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java Thu Nov 6 10:45:43 2014
@@ -20,6 +20,7 @@ package org.apache.sling.replication.pac
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -33,10 +34,12 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.replication.component.ReplicationComponent;
import org.apache.sling.replication.component.ReplicationComponentFactory;
import org.apache.sling.replication.component.ReplicationComponentProvider;
import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.component.impl.SettingsUtils;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.packaging.ReplicationPackageExporter;
import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
@@ -87,6 +90,9 @@ public class RemoteReplicationPackageExp
private static final String ENDPOINT_STRATEGY = ReplicationComponentFactory.PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS_STRATEGY;
+ @Property(label = "Package Builder Properties", cardinality = 100)
+ public static final String PACKAGE_BUILDER = ReplicationComponentFactory.COMPONENT_PACKAGE_BUILDER;
+
@Reference
ReplicationComponentFactory replicationComponentFactory;
@@ -94,7 +100,12 @@ public class RemoteReplicationPackageExp
@Activate
protected void activate(Map<String, Object> config) throws Exception {
- exporter = replicationComponentFactory.createComponent(ReplicationPackageExporter.class, config, this);
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.putAll(config);
+ String[] packageBuilderProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_BUILDER));
+ properties.put(PACKAGE_BUILDER, SettingsUtils.parseLines(packageBuilderProperties));
+
+ exporter = replicationComponentFactory.createComponent(ReplicationPackageExporter.class, properties, this);
}
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java Thu Nov 6 10:45:43 2014
@@ -20,6 +20,7 @@ package org.apache.sling.replication.pac
import javax.annotation.Nonnull;
import java.io.InputStream;
+import java.util.HashMap;
import java.util.Map;
import org.apache.felix.scr.annotations.Activate;
@@ -29,7 +30,9 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.replication.component.ReplicationComponentFactory;
+import org.apache.sling.replication.component.impl.SettingsUtils;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.packaging.ReplicationPackageImportException;
import org.apache.sling.replication.packaging.ReplicationPackageImporter;
@@ -55,6 +58,10 @@ public class LocalReplicationPackageImpo
@Property
private static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
+
+ @Property(label = "Package Builder Properties", cardinality = 100)
+ public static final String PACKAGE_BUILDER = ReplicationComponentFactory.COMPONENT_PACKAGE_BUILDER;
+
@Reference
private ReplicationComponentFactory componentFactory;
@@ -62,7 +69,12 @@ public class LocalReplicationPackageImpo
@Activate
public void activate(Map<String, Object> config) {
- importer = componentFactory.createComponent(ReplicationPackageImporter.class, config, null);
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.putAll(config);
+ String[] packageBuilderProperties = PropertiesUtil.toStringArray(config.get(PACKAGE_BUILDER));
+ properties.put(PACKAGE_BUILDER, SettingsUtils.parseLines(packageBuilderProperties));
+
+ importer = componentFactory.createComponent(ReplicationPackageImporter.class, properties, null);
}
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java Thu Nov 6 10:45:43 2014
@@ -21,6 +21,7 @@ package org.apache.sling.replication.pac
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.InputStream;
+import java.util.HashMap;
import java.util.Map;
import org.apache.felix.scr.annotations.Activate;
@@ -32,9 +33,11 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.replication.component.ReplicationComponent;
import org.apache.sling.replication.component.ReplicationComponentFactory;
import org.apache.sling.replication.component.ReplicationComponentProvider;
+import org.apache.sling.replication.component.impl.SettingsUtils;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.packaging.ReplicationPackageImportException;
import org.apache.sling.replication.packaging.ReplicationPackageImporter;
@@ -90,7 +93,10 @@ public class RemoteReplicationPackageImp
@Activate
protected void activate(BundleContext context, Map<String, Object> config) throws Exception {
- importer = replicationComponentFactory.createComponent(ReplicationPackageImporter.class, config, this);
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.putAll(config);
+
+ importer = replicationComponentFactory.createComponent(ReplicationPackageImporter.class, properties, this);
}
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java Thu Nov 6 10:45:43 2014
@@ -56,6 +56,7 @@ import org.slf4j.LoggerFactory;
* on a certain URL
*/
public class RemoteEventReplicationTrigger implements ReplicationTrigger {
+ private final static String SCHEDULE_NAME = "remoteEventTrigger";
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -89,7 +90,7 @@ public class RemoteEventReplicationTrigg
log.info("applying remote event replication trigger");
ScheduleOptions options = scheduler.NOW();
- options.name(requestHandler.toString());
+ options.name(getJobName(requestHandler));
scheduler.schedule(new EventBasedReplication(requestHandler), options);
} catch (Exception e) {
throw new ReplicationTriggerException("unable to register handler " + requestHandler, e);
@@ -101,6 +102,11 @@ public class RemoteEventReplicationTrigg
if (httpResponseFuture != null) {
httpResponseFuture.cancel(true);
}
+ scheduler.unschedule(getJobName(requestHandler));
+ }
+
+ String getJobName(ReplicationRequestHandler requestHandler) {
+ return SCHEDULE_NAME + requestHandler.toString();
}
private class SSEResponseConsumer extends BasicAsyncResponseConsumer {
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java Thu Nov 6 10:45:43 2014
@@ -35,6 +35,8 @@ import org.slf4j.LoggerFactory;
* {@link org.apache.sling.replication.agent.ReplicationAgent}
*/
public class ScheduledReplicationTrigger implements ReplicationTrigger {
+ private final static String SCHEDULE_NAME = "scheduledEventTrigger";
+
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -55,7 +57,7 @@ public class ScheduledReplicationTrigger
public void register(@Nonnull ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
try {
ScheduleOptions options = scheduler.NOW(-1, secondsInterval);
- options.name(requestHandler.toString());
+ options.name(getJobName(requestHandler));
scheduler.schedule(new ScheduledReplication(requestHandler), options);
} catch (Exception e) {
throw new ReplicationTriggerException("unable to register handler " + requestHandler, e);
@@ -63,7 +65,7 @@ public class ScheduledReplicationTrigger
}
public void unregister(@Nonnull ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
- scheduler.unschedule(requestHandler.toString());
+ scheduler.unschedule(getJobName(requestHandler));
}
private class ScheduledReplication implements Runnable {
@@ -79,4 +81,8 @@ public class ScheduledReplicationTrigger
requestHandler.handle(new ReplicationRequest(System.currentTimeMillis(), replicationAction, path));
}
}
+
+ String getJobName(ReplicationRequestHandler requestHandler) {
+ return SCHEDULE_NAME + requestHandler.toString();
+ }
}
Modified: sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactoryTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactoryTest.java?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactoryTest.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactoryTest.java Thu Nov 6 10:45:43 2014
@@ -33,6 +33,7 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -50,8 +51,15 @@ public class DefaultReplicationComponent
ReplicationComponentProvider provider = mock(ReplicationComponentProvider.class);
ReplicationAgent agent = mock(ReplicationAgent.class);
when(provider.getComponent(ReplicationAgent.class, name)).thenReturn(agent);
- ReplicationAgent component = defaultReplicationComponentFactory.createComponent(ReplicationAgent.class, properties, provider);
- assertNull(component); // agents cannot be referenced by service name using the factory
+ try {
+ ReplicationAgent component = defaultReplicationComponentFactory.createComponent(ReplicationAgent.class, properties, provider);
+
+ fail("agents cannot be referenced by service name using the factory");
+
+ }
+ catch (IllegalArgumentException e) {
+ // expect to fail
+ }
}
@Test
Added: sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/SettingsUtilsTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/SettingsUtilsTest.java?rev=1637071&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/SettingsUtilsTest.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/component/impl/SettingsUtilsTest.java Thu Nov 6 10:45:43 2014
@@ -0,0 +1,63 @@
+package org.apache.sling.replication.component.impl;
+
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class SettingsUtilsTest {
+
+ @Test
+ public void testParseMap() {
+ String[] lines = new String[] {
+ "packageExporter/exporterKey=exporterValue",
+ "packageExporter/exporterMap[key1]=mapvalue1",
+ "packageExporter/exporterBuilder/builderKey=builderValue",
+ "packageExporter/endpointsArray[0]=http://abc.com",
+
+ "mainKey=mainValue",
+ "trigger[0]/propertyKey1=propertyValue1",
+ "trigger[0]/propertyKey2=propertyValue2",
+ "slashKey=http://aaa.com"
+ };
+ Map<String, Object> result = SettingsUtils.parseLines(lines);
+
+ assertEquals("result map size", 4, result.size());
+
+ assertTrue(result.containsKey("packageExporter"));
+ Object packageExporterProperties = result.get("packageExporter");
+ assertTrue(packageExporterProperties instanceof Map);
+ Map<String, Object> packageExporterMap = (Map) packageExporterProperties;
+
+ assertTrue(packageExporterMap.containsKey("exporterKey"));
+ assertEquals("exporterValue", packageExporterMap.get("exporterKey"));
+ assertTrue(packageExporterMap.containsKey("exporterBuilder"));
+ assertTrue(packageExporterMap.get("exporterBuilder") instanceof Map);
+ Map exporterBuilderMap = (Map) packageExporterMap.get("exporterBuilder");
+ assertEquals("builderValue", exporterBuilderMap.get("builderKey"));
+ assertTrue(packageExporterMap.containsKey("exporterMap"));
+ assertTrue(packageExporterMap.get("exporterMap") instanceof Map);
+ Map exporterMap = (Map) packageExporterMap.get("exporterMap");
+ assertEquals("mapvalue1", exporterMap.get("key1"));
+
+ assertTrue(packageExporterMap.containsKey("endpointsArray"));
+ assertTrue(packageExporterMap.get("endpointsArray") instanceof List);
+ assertEquals("http://abc.com", ((List)packageExporterMap.get("endpointsArray")).get(0));
+
+ assertTrue(result.containsKey("mainKey"));
+
+ assertTrue(result.containsKey("trigger"));
+ assertTrue(result.get("trigger") instanceof List);
+
+ List<Map> triggersList = (List<Map>) result.get("trigger");
+ assertTrue(triggersList.get(0) instanceof Map);
+ Map trigger0Map = triggersList.get(0);
+ assertEquals("propertyValue1", trigger0Map.get("propertyKey1"));
+ assertEquals("propertyValue2", trigger0Map.get("propertyKey2"));
+
+ assertTrue(result.containsKey("slashKey"));
+ }
+}
Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json Thu Nov 6 10:45:43 2014
@@ -24,22 +24,16 @@
"packageBuilder/type=vlt"
],
- "trigger0": [
- "type=scheduledEvent",
- "action=poll",
- "seconds=30"
- ],
+ "trigger": [
+ "scheduledTrigger/type=scheduledEvent",
+ "scheduledTrigger/action=poll",
+ "scheduledTrigger/seconds=30",
- "trigger1": [
- "type=remoteEvent",
- "endpoint=http://localhost:4503/libs/sling/replication/services/triggers/content-changed.event"
+ "remoteTrigger/type=remoteEvent",
+ "remoteTrigger/endpoint=http://localhost:4503/libs/sling/replication/services/triggers/content-changed.event"
],
- "queueProvider.target" : "(name=sjh)",
-
- "queueDistributionStrategy.target": "(name=error)",
-
"transportAuthenticationProvider.target" : "(name=publishAdmin)"
}
\ No newline at end of file
Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json Thu Nov 6 10:45:43 2014
@@ -23,9 +23,5 @@
"packageBuilder/type=vlt"
],
- "queueProvider.target" : "(name=sjh)",
-
- "queueDistributionStrategy.target": "(name=error)",
-
"transportAuthenticationProvider.target" : "(name=publishAdmin)"
}
\ No newline at end of file
Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json?rev=1637071&r1=1637070&r2=1637071&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json Thu Nov 6 10:45:43 2014
@@ -25,9 +25,9 @@
"queueDistributionStrategy": "(name=single)",
- "trigger0": [
- "type=jcrEvent",
- "path=/content/usergenerated",
- "servicename=replicationService"
+ "trigger": [
+ "userGeneratedTrigger/type=jcrEvent",
+ "userGeneratedTrigger/path=/content/usergenerated",
+ "userGeneratedTrigger/servicename=replicationService"
]
}