You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:29:43 UTC

[sling-org-apache-sling-distribution-sample] 01/42: SLING-3978 - added 'sample' replication bundle

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.distribution.sample-0.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-sample.git

commit bb3b2c9bea783203dacb96e05cd1fb8efa42eeac
Author: Tommaso Teofili <to...@apache.org>
AuthorDate: Mon Sep 29 13:31:47 2014 +0000

    SLING-3978 - added 'sample' replication bundle
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/replication/sample@1628179 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 221 +++++++++++++++++++++
 ...pleReplicationAgentFactory-publish-reverse.json |  47 +++++
 ...mpactSimpleReplicationAgentFactory-publish.json |  32 +++
 ...ationComponentFactory-trigger-remote-event.json |  15 ++
 ...AuthenticationProviderFactory-publishAdmin.json |   6 +
 ...tSimpleReplicationAgentFactory-cache-flush.json |  25 +++
 ...mpactSimpleReplicationAgentFactory-reverse.json |  34 ++++
 ...onComponentFactory-trigger-content-changed.json |  12 ++
 ...tReplicationPackageExporterFactory-reverse.json |   7 +
 ...lReplicationPackageExporterFactory-default.json |   6 +
 ...moteReplicationPackageImporter-cache-flush.json |  13 ++
 ...lReplicationPackageImporterFactory-default.json |   5 +
 ...eVaultReplicationPackageBuilderFactory-vlt.json |   5 +
 ....ServiceUserMapperImpl.amended-replication.json |   5 +
 ...giPropertiesResourceProviderFactory-agents.json |  13 ++
 ...ropertiesResourceProviderFactory-exporters.json |  12 ++
 ...ropertiesResourceProviderFactory-importers.json |  12 ++
 ...PropertiesResourceProviderFactory-triggers.json |  12 ++
 ...ertiesResourceProviderFactory-simpleAgents.json |  19 ++
 .../replication/service/agent/replicate.html.esp   |  18 ++
 .../libs/sling/replication/service/html.esp        |  21 ++
 .../libs/sling/replication/service/list/html.esp   |  35 ++++
 .../libs/sling/replication/setting/html.esp        |  33 +++
 .../libs/sling/replication/setting/list/html.esp   |  26 +++
 24 files changed, 634 insertions(+)

diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e7c3dff
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <!-- ======================================================================= -->
+    <!-- P A R E N T   P R O J E C T                                             -->
+    <!-- ======================================================================= -->
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling</artifactId>
+        <version>20</version>
+    </parent>
+
+    <!-- ======================================================================= -->
+    <!-- P R O J E C T                                                           -->
+    <!-- ======================================================================= -->
+    <artifactId>org.apache.sling.replication.sample</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <name>Apache Sling Replication Sample</name>
+    <description>
+        The Apache Sling Replication sample bundle provides a set of sample configurations and custom component implementations.
+    </description>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/replication/sample</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/replication/sample</developerConnection>
+        <url>http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample</url>
+    </scm>
+
+    <!-- ======================================================================= -->
+    <!-- B U I L D                                                               -->
+    <!-- ======================================================================= -->
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>maven-sling-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>org.apache.sling.replication.sample</Bundle-SymbolicName>
+                        <Sling-Initial-Content>
+                            SLING-CONTENT/libs/sling/replication;path:=/libs/sling/replication;overwrite:=true
+                        </Sling-Initial-Content>
+                        <Export-Package>
+                            </Export-Package>
+                        <Embed-Dependency>httpasyncclient</Embed-Dependency>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!-- ======================================================================= -->
+    <!-- D E P E N D E N C I E S                                                 -->
+    <!-- ======================================================================= -->
+    <dependencies>
+        <!-- TESTING -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- SLING -->
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.replication.core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+            <version>2.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.osgi</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.scheduler</artifactId>
+            <version>2.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.jcr.api</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.event</artifactId>
+            <version>3.3.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.hc.core</artifactId>
+            <version>1.0.6</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.settings</artifactId>
+            <version>1.3.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <!-- LOGGING -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.6.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>1.6.2</version>
+            <scope>runtime</scope>
+        </dependency>
+        <!-- SPECs -->
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+        <!-- FILEVAULT -->
+        <dependency>
+            <groupId>org.apache.jackrabbit.vault</groupId>
+            <artifactId>org.apache.jackrabbit.vault</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+        <!-- HTTP -->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>fluent-hc</artifactId>
+            <version>4.3.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpasyncclient</artifactId>
+            <version>4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore-osgi</artifactId>
+            <version>4.3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient-osgi</artifactId>
+            <version>4.3.4</version>
+        </dependency>
+        <!-- JACKRABBIT -->
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-jcr-commons</artifactId>
+            <version>2.6.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <!-- COMMONS -->
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+                <version>2.5.3</version>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-publish-reverse.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-publish-reverse.json
new file mode 100644
index 0000000..7fe693f
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-publish-reverse.json
@@ -0,0 +1,47 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "publish-reverse",
+    "type": "simple",
+
+    "packageExporter": [
+        "type=remote",
+        "endpoints[0]=http://localhost:4503/libs/sling/replication/services/exporters/reverse",
+
+        "authenticationProvider/type=service",
+        "authenticationProvider/name=publishAdmin",
+
+        "packageBuilder/type=vlt",
+        "packageBuilder/servicename=replicationService"
+    ],
+
+    "packageImporter": [
+        "type=local",
+        "packageBuilder/type=vlt",
+        "packageBuilder/servicename=replicationService"
+    ],
+
+    "queueProvider": [
+        "type=service",
+        "name=sjh"
+    ],
+
+    "queueDistributionStrategy": [
+        "type=service",
+        "name=error"
+    ],
+
+    "trigger0": [
+        "type=scheduledEvent",
+        "action=poll",
+        "seconds=30"
+    ],
+
+    "trigger1": [
+        "type=remoteEvent",
+        "endpoint=http://localhost:4503/libs/sling/replication/services/triggers/content-changed.event",
+
+        "authenticationProvider/type=service",
+        "authenticationProvider/name=publishAdmin"
+    ]
+
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-publish.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-publish.json
new file mode 100644
index 0000000..e100788
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-publish.json
@@ -0,0 +1,32 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "publish",
+    "type": "simple",
+
+    "packageExporter": [
+        "type=local",
+        "packageBuilder/type=vlt",
+        "packageBuilder/servicename=replicationService"
+    ],
+
+    "packageImporter": [
+        "type=remote",
+        "endpoints[0]=http://localhost:4503/libs/sling/replication/services/importers/default",
+
+        "authenticationProvider/type=service",
+        "authenticationProvider/name=publishAdmin",
+
+        "packageBuilder/type=vlt",
+        "packageBuilder/servicename=replicationService"
+    ],
+
+    "queueProvider": [
+        "type=service",
+        "name=sjh"
+    ],
+
+    "queueDistributionStrategy": [
+        "type=service",
+        "name=error"
+    ]
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.DefaultReplicationComponentFactory-trigger-remote-event.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.DefaultReplicationComponentFactory-trigger-remote-event.json
new file mode 100644
index 0000000..7504064
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.DefaultReplicationComponentFactory-trigger-remote-event.json
@@ -0,0 +1,15 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "remote-event",
+
+    "kind": "trigger",
+
+    "properties": [
+        "type=remoteEvent",
+        "endpoint=http://localhost:4503/libs/sling/replication/services/triggers/content-changed.event",
+
+        "authenticationProvider/type=service",
+        "authenticationProvider/name=publishAdmin"
+    ]
+
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.transport.authentication.impl.UserCredentialsTransportAuthenticationProviderFactory-publishAdmin.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.transport.authentication.impl.UserCredentialsTransportAuthenticationProviderFactory-publishAdmin.json
new file mode 100644
index 0000000..10fbe4d
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.transport.authentication.impl.UserCredentialsTransportAuthenticationProviderFactory-publishAdmin.json
@@ -0,0 +1,6 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "publishAdmin",
+    "username": "admin",
+    "password": "admin"
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-cache-flush.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-cache-flush.json
new file mode 100644
index 0000000..9284f55
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-cache-flush.json
@@ -0,0 +1,25 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "cache-flush",
+    "type": "simple",
+
+    "packageExporter": [
+        "type=service",
+        "name=void"
+    ],
+
+    "packageImporter": [
+        "type=service",
+        "name=cache-flush"
+    ],
+
+    "queueProvider": [
+        "type=service",
+        "name=sjh"
+    ],
+
+    "queueDistributionStrategy": [
+        "type=service",
+        "name=error"
+    ]
+}
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-reverse.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-reverse.json
new file mode 100644
index 0000000..72ad2fe
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory-reverse.json
@@ -0,0 +1,34 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "reverse",
+    "type": "simple",
+
+    "isPassive": true,
+
+    "packageExporter": [
+        "type=local",
+        "packageBuilder/type=vlt",
+        "packageBuilder/servicename=replicationService"
+    ],
+
+    "packageImporter": [
+        "type=local",
+        "packageBuilder/type=vlt",
+        "packageBuilder/servicename=replicationService"
+    ],
+
+    "queueProvider": [
+        "type=service",
+        "name=sjh"
+    ],
+
+    "queueDistributionStrategy": [
+        "type=service",
+        "name=error"
+    ],
+
+    "trigger0": [
+        "type=resourceEvent",
+        "path=/content/usergenerated"
+    ]
+}
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.DefaultReplicationComponentFactory-trigger-content-changed.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.DefaultReplicationComponentFactory-trigger-content-changed.json
new file mode 100644
index 0000000..4e32f7d
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.DefaultReplicationComponentFactory-trigger-content-changed.json
@@ -0,0 +1,12 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "content-changed",
+
+    "kind": "trigger",
+
+    "properties": [
+        "type=resourceEvent",
+        "path=/content/usergenerated"
+    ]
+
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.exporter.AgentReplicationPackageExporterFactory-reverse.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.exporter.AgentReplicationPackageExporterFactory-reverse.json
new file mode 100644
index 0000000..a6b5348
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.exporter.AgentReplicationPackageExporterFactory-reverse.json
@@ -0,0 +1,7 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "reverse",
+
+    "ReplicationPackageBuilder.target": "(name=vlt)",
+    "ReplicationAgent.target": "(name=reverse)"
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.exporter.LocalReplicationPackageExporterFactory-default.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.exporter.LocalReplicationPackageExporterFactory-default.json
new file mode 100644
index 0000000..55fe7ee
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.exporter.LocalReplicationPackageExporterFactory-default.json
@@ -0,0 +1,6 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "default",
+
+    "ReplicationPackageBuilder.target": "(name=vlt)"
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.importer.AdvancedRemoteReplicationPackageImporter-cache-flush.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.importer.AdvancedRemoteReplicationPackageImporter-cache-flush.json
new file mode 100644
index 0000000..f3cd9ca
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.importer.AdvancedRemoteReplicationPackageImporter-cache-flush.json
@@ -0,0 +1,13 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "cache-flush",
+    "useCustomHeaders": true,
+    "customHeaders": [
+        "Path: {path}",
+        "add -> Action : REFRESH",
+        "delete -> Change : REMOVE" ],
+    "useCustomBody": true,
+    "customBody": "",
+    "TransportAuthenticationProviderFactory.target": "(name=nop)",
+    "endpoints": [ "http://localhost:8000/invalidatecache" ]
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.importer.LocalReplicationPackageImporterFactory-default.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.importer.LocalReplicationPackageImporterFactory-default.json
new file mode 100644
index 0000000..9381551
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.packaging.impl.importer.LocalReplicationPackageImporterFactory-default.json
@@ -0,0 +1,5 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "default",
+    "ReplicationPackageBuilder.target": "(name=vlt)"
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install/org.apache.sling.replication.serialization.impl.vlt.FileVaultReplicationPackageBuilderFactory-vlt.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/org.apache.sling.replication.serialization.impl.vlt.FileVaultReplicationPackageBuilderFactory-vlt.json
new file mode 100644
index 0000000..7ed8af7
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/org.apache.sling.replication.serialization.impl.vlt.FileVaultReplicationPackageBuilderFactory-vlt.json
@@ -0,0 +1,5 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "vlt",
+    "servicename": "replicationService"
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-replication.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-replication.json
new file mode 100644
index 0000000..14729c8
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-replication.json
@@ -0,0 +1,5 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "user.default": "",
+    "user.mapping": "org.apache.sling.replication:replicationService=admin"
+}
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-agents.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-agents.json
new file mode 100644
index 0000000..5d166ff
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-agents.json
@@ -0,0 +1,13 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "replicationAgents",
+    "provider.roots": [ "/libs/sling/replication/services/agents" ],
+    "serviceType": "org.apache.sling.replication.agent.ReplicationAgent",
+    "resourceProperties": [
+        "sling:resourceType=sling/replication/service/agent",
+        "sling:resourceSuperType=sling/replication/service",
+        "name={name}",
+
+        "queue/sling:resourceType=sling/replication/service/agent/queue"
+    ]
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-exporters.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-exporters.json
new file mode 100644
index 0000000..58180b6
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-exporters.json
@@ -0,0 +1,12 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "replicationExporters",
+    "provider.roots": [ "/libs/sling/replication/services/exporters" ],
+    "serviceType": "org.apache.sling.replication.packaging.ReplicationPackageExporter",
+    "resourceProperties": [
+        "sling:resourceType=sling/replication/service/exporter",
+        "sling:resourceSuperType=sling/replication/service",
+
+        "name={name}"
+    ]
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-importers.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-importers.json
new file mode 100644
index 0000000..85b4e30
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-importers.json
@@ -0,0 +1,12 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "replicationImporters",
+    "provider.roots": [ "/libs/sling/replication/services/importers" ],
+    "serviceType": "org.apache.sling.replication.packaging.ReplicationPackageImporter",
+    "resourceProperties": [
+        "sling:resourceType=sling/replication/service/importer",
+        "sling:resourceSuperType=sling/replication/service",
+
+        "name={name}"
+    ]
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-triggers.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-triggers.json
new file mode 100644
index 0000000..14c715e
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/services/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-triggers.json
@@ -0,0 +1,12 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "replicationTriggers",
+    "provider.roots": [ "/libs/sling/replication/services/triggers" ],
+    "serviceType": "org.apache.sling.replication.trigger.ReplicationTrigger",
+    "resourceProperties": [
+        "sling:resourceType=sling/replication/service/trigger",
+        "sling:resourceSuperType=sling/replication/service",
+
+        "name={name}"
+    ]
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/settings/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-simpleAgents.json b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/settings/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-simpleAgents.json
new file mode 100644
index 0000000..b52ff51
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/install/resources/settings/org.apache.sling.replication.resources.impl.OsgiPropertiesResourceProviderFactory-simpleAgents.json
@@ -0,0 +1,19 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "simpleAgents",
+    "provider.roots": [ "/libs/sling/replication/settings/agents" ],
+    "serviceType": "org.apache.sling.replication.agent.impl.CompactSimpleReplicationAgentFactory",
+    "providerType": "osgiConfig",
+    "groupPrefix": "agents",
+
+
+    "resourceProperties": [
+        "sling:resourceType=sling/replication/setting/agent",
+        "sling:resourceSuperType=sling/replication/setting",
+        "name={name}",
+        "packageExporter={packageExporter}",
+        "packageImporter={packageImporter}"
+    ]
+
+
+}
\ No newline at end of file
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/service/agent/replicate.html.esp b/src/main/resources/SLING-CONTENT/libs/sling/replication/service/agent/replicate.html.esp
new file mode 100644
index 0000000..b94cfc8
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/service/agent/replicate.html.esp
@@ -0,0 +1,18 @@
+<%
+var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+var pit = valueMap.keySet().iterator();
+%>
+<html>
+  <body>
+    <h1>Replicate: <%= valueMap.get("name") %></h1>
+
+    <form action="<%= request.contextPath + resource.path %>" method="POST">
+        Path: <input type="text" name="path"><br>
+        Action: <input type="radio" name="action" value="ADD">Add
+                <input type="radio" name="action" value="DELETE">Delete<br>
+
+        <input type="submit" value="Submit">
+
+    </form>
+  </body>
+</html>
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/service/html.esp b/src/main/resources/SLING-CONTENT/libs/sling/replication/service/html.esp
new file mode 100644
index 0000000..e2fc96d
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/service/html.esp
@@ -0,0 +1,21 @@
+<%
+var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+var pit = valueMap.keySet().iterator();
+%>
+<html>
+  <body>
+    <h1>Agent: <%= valueMap.get("name") %></h1>
+
+    <ul>
+    <% while(pit.hasNext()) { %>
+
+        <% var pname =  pit.next(); %>
+
+        <li>
+            <%= pname %>: <%= valueMap.get(pname) %>
+        </li>
+
+    <% } %>
+    </ul>
+  </body>
+</html>
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/service/list/html.esp b/src/main/resources/SLING-CONTENT/libs/sling/replication/service/list/html.esp
new file mode 100644
index 0000000..b86c0be
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/service/list/html.esp
@@ -0,0 +1,35 @@
+<%
+var settingsUrl = request.contextPath + "/libs/sling/replication/settings/";
+var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+var childrenNames = valueMap.get("items"); %>
+<html>
+  <body>
+    <h1><%= valueMap.get("sling:resourceType") %></h1>
+
+    <ul>
+
+        <% for(var i=0; i<childrenNames.length; i++) { %>
+
+            <%
+                var childName = childrenNames[i];
+                var serviceName = childName;
+
+                var index = childName.lastIndexOf("/");
+                if (index >= 0) {
+                    serviceName = childName.substring(index+1);
+                }
+
+                var childUrl = request.contextPath + resource.path + "/" + serviceName + ".html";
+                var childSettingsUrl = settingsUrl + childName + ".html";
+
+
+            %>
+            <li>
+                <a href="<%= childUrl %>"><%= childName %></a> <a href="<%= childSettingsUrl %>">(settings)</a>
+            </li>
+
+        <% } %>
+
+    </ul>
+  </body>
+</html>
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/setting/html.esp b/src/main/resources/SLING-CONTENT/libs/sling/replication/setting/html.esp
new file mode 100644
index 0000000..1bb968c
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/setting/html.esp
@@ -0,0 +1,33 @@
+<%
+var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+var pit = valueMap.keySet().iterator();
+var settingsUrl = request.contextPath + "/libs/sling/replication/settings/";
+%>
+<html>
+  <body>
+    <h1>Settings: <%= valueMap.get("name") %></h1>
+
+    <ul>
+    <% while(pit.hasNext()) { %>
+
+        <%
+            var pname =  pit.next();
+            var pvalue = valueMap.get(pname).toString();
+            var purl = "";
+            if (!pname.contains(":") && pvalue.contains("/")) {
+                purl = settingsUrl + pvalue + ".html";
+            }
+        %>
+
+        <li>
+            <%= pname %>:
+            <% if(purl.length > 0) { %>
+                <a href="<%= purl %>"><%= pvalue %></a>
+            <% } else { %>
+                <%= pvalue %>
+            <% } %>
+        </li>
+    <% } %>
+    </ul>
+  </body>
+</html>
diff --git a/src/main/resources/SLING-CONTENT/libs/sling/replication/setting/list/html.esp b/src/main/resources/SLING-CONTENT/libs/sling/replication/setting/list/html.esp
new file mode 100644
index 0000000..b327903
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/replication/setting/list/html.esp
@@ -0,0 +1,26 @@
+<%
+var settingsUrl = request.contextPath + "/libs/sling/replication/settings/"
+var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+var childrenNames = valueMap.get("items");
+%>
+<html>
+  <body>
+    <h1><%= valueMap.get("sling:resourceType") %></h1>
+
+    <ul>
+
+        <% for(var i=0; i<childrenNames.length; i++) { %>
+
+            <%
+                var childName = childrenNames[i];
+                var childUrl = settingsUrl + childName + ".html"
+            %>
+            <li>
+                <a href="<%= childUrl %>"><%= childName %></a>
+            </li>
+
+        <% } %>
+
+    </ul>
+  </body>
+</html>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.