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

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

commit 8456fe07a7cfee0a00bc08c56233ca49a811efb9
Author: Marius Petria <[email protected]>
AuthorDate: Mon Dec 15 08:35:48 2014 +0000

    SLING-4153: adding distributor type and making DistributionRequest and 
interface
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/distribution/api@1645598
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../distribution/agent/DistributionAgent.java      |  4 +-
 .../communication/DistributionParameter.java       | 42 -----------------
 .../communication/DistributionRequest.java         | 50 +++-----------------
 .../distribution/communication/Distributor.java    | 29 ++++++++++++
 ...Request.java => SimpleDistributionRequest.java} | 15 +++---
 .../distribution/queue/DistributionQueue.java      | 10 ++--
 .../queue/DistributionQueueItemSelector.java       | 53 ----------------------
 7 files changed, 49 insertions(+), 154 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/distribution/agent/DistributionAgent.java 
b/src/main/java/org/apache/sling/distribution/agent/DistributionAgent.java
index 8b62cf3..3a7a575 100644
--- a/src/main/java/org/apache/sling/distribution/agent/DistributionAgent.java
+++ b/src/main/java/org/apache/sling/distribution/agent/DistributionAgent.java
@@ -62,12 +62,12 @@ public interface DistributionAgent {
      * The content to be sent will be assembled according to the information 
contained in the request.
      * A {@link 
org.apache.sling.distribution.communication.DistributionResponse} holding the 
{@link org.apache.sling.distribution.communication.DistributionRequestState}
      * of the provided request will be returned.
-     * Synchronous {@link 
org.apache.sling.distribution.agent.DistributionAgent}s will usally block until 
the execution has finished
+     * Synchronous {@link 
org.apache.sling.distribution.agent.DistributionAgent}s will usually block 
until the execution has finished
      * while asynchronous agents will usually return the response as soon as 
the content to be distributed has been assembled
      * and scheduled for distribution.
      *
      * @param distributionRequest the distribution request
-     * @param resourceResolver    the resource resolver used for 
authenticating the request,
+     * @param resourceResolver    the resource resolver used for authorizing 
the request,
      * @return a {@link 
org.apache.sling.distribution.communication.DistributionResponse}
      * @throws DistributionAgentException if any error happens during the 
execution of the request or if the authentication fails
      */
diff --git 
a/src/main/java/org/apache/sling/distribution/communication/DistributionParameter.java
 
b/src/main/java/org/apache/sling/distribution/communication/DistributionParameter.java
deleted file mode 100644
index 38bf2e5..0000000
--- 
a/src/main/java/org/apache/sling/distribution/communication/DistributionParameter.java
+++ /dev/null
@@ -1,42 +0,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.
- */
-package org.apache.sling.distribution.communication;
-
-/**
- * HTTP Parameters for distribution
- */
-public enum DistributionParameter {
-
-    QUEUE("queue"),
-    TYPE("type"),
-    ACTION("action"),
-    PATH("path"),
-    DEEP("deep");
-
-    private final String name;
-
-    DistributionParameter(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public String toString() {
-        return name;
-    }
-}
diff --git 
a/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
 
b/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
index 107139a..331803c 100644
--- 
a/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
+++ 
b/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
@@ -25,69 +25,31 @@ import java.util.Arrays;
  * A {@link org.apache.sling.distribution.communication.DistributionRequest} 
represents the need from the caller to have
  * some content being distributed from a source instance to a target instance.
  */
-public final class DistributionRequest {
+public interface DistributionRequest {
 
 
-    private final DistributionRequestType requestType;
-
-    private final boolean deep;
-    private final String[] paths;
-
-    /**
-     * Creates distribution request with "deep" or "shallow" paths.
-     * @param requestType the request type
-     * @param isDeep is <code>true</code> if all paths are "deep" and is 
<code>false</code> if all paths are "shallow"
-     * @param paths the array of paths to be distributed
-     */
-    public DistributionRequest(@Nonnull DistributionRequestType requestType, 
boolean isDeep, @Nonnull String... paths) {
-        this.requestType = requestType;
-        deep = isDeep;
-        this.paths = paths;
-    }
-
-    /**
-     * Creates a distribution request with "shallow" paths.
-     * @param requestType the request type
-     * @param paths the array of paths to be distributed
-     */
-    public DistributionRequest(@Nonnull DistributionRequestType requestType, 
@Nonnull String... paths) {
-        this(requestType, false, paths);
-    }
-
     /**
      * get the {@link DistributionRequestType} associated with this request
      *
      * @return the type of the request as a {@link DistributionRequestType}
      */
-    public DistributionRequestType getRequestType() {
-        return requestType;
-    }
+    public DistributionRequestType getRequestType();
 
     /**
      * get the paths for this distribution request
      *
      * @return an array of paths
      */
-    public String[] getPaths() {
-        return paths;
-    }
+    public String[] getPaths();
 
 
     /**
      * Returns whether the paths are covering the entire subtree (deep) or 
just the specified nodes (shallow)
+     *
+     * @param path the path to be checked
      * @return <code>true</code> if the paths are deep
      */
-    public boolean isDeep() {
-        return deep;
-    }
-
-    @Override
-    public String toString() {
-        return "DistributionRequest{" +
-                ", requestType=" + requestType +
-                ", paths=" + Arrays.toString(paths) +
-                '}';
-    }
+    public boolean isDeep(String path);
 
 
 }
diff --git 
a/src/main/java/org/apache/sling/distribution/communication/Distributor.java 
b/src/main/java/org/apache/sling/distribution/communication/Distributor.java
new file mode 100644
index 0000000..376b22c
--- /dev/null
+++ b/src/main/java/org/apache/sling/distribution/communication/Distributor.java
@@ -0,0 +1,29 @@
+package org.apache.sling.distribution.communication;
+
+import aQute.bnd.annotation.ProviderType;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.distribution.agent.DistributionAgentException;
+
+import javax.annotation.Nonnull;
+
+@ProviderType
+public interface Distributor {
+    /**
+     * Perform a {@link 
org.apache.sling.distribution.communication.DistributionRequest} to distribute 
content from a source
+     * instance to a target instance.
+     * The content to be sent will be assembled according to the information 
contained in the request.
+     * A {@link 
org.apache.sling.distribution.communication.DistributionResponse} holding the 
{@link org.apache.sling.distribution.communication.DistributionRequestState}
+     * of the provided request will be returned.
+     * Synchronous {@link 
org.apache.sling.distribution.agent.DistributionAgent}s will usually block 
until the execution has finished
+     * while asynchronous agents will usually return the response as soon as 
the content to be distributed has been assembled
+     * and scheduled for distribution.
+     *
+     * @param agentName the name of the agent used to distribute the request
+     * @param distributionRequest the distribution request
+     * @param resourceResolver    the resource resolver used for authorizing 
the request,
+     * @return a {@link 
org.apache.sling.distribution.communication.DistributionResponse}
+     */
+    DistributionResponse distribute(@Nonnull String agentName, @Nonnull 
ResourceResolver resourceResolver, @Nonnull DistributionRequest 
distributionRequest);
+
+
+}
diff --git 
a/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
 
b/src/main/java/org/apache/sling/distribution/communication/SimpleDistributionRequest.java
similarity index 79%
copy from 
src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
copy to 
src/main/java/org/apache/sling/distribution/communication/SimpleDistributionRequest.java
index 107139a..98e092e 100644
--- 
a/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
+++ 
b/src/main/java/org/apache/sling/distribution/communication/SimpleDistributionRequest.java
@@ -22,10 +22,9 @@ import javax.annotation.Nonnull;
 import java.util.Arrays;
 
 /**
- * A {@link org.apache.sling.distribution.communication.DistributionRequest} 
represents the need from the caller to have
- * some content being distributed from a source instance to a target instance.
+ * A {@link SimpleDistributionRequest} is a {@link DistributionRequest} where 
all paths are either "deep" or "shallow".
  */
-public final class DistributionRequest {
+public final class SimpleDistributionRequest implements DistributionRequest {
 
 
     private final DistributionRequestType requestType;
@@ -39,7 +38,7 @@ public final class DistributionRequest {
      * @param isDeep is <code>true</code> if all paths are "deep" and is 
<code>false</code> if all paths are "shallow"
      * @param paths the array of paths to be distributed
      */
-    public DistributionRequest(@Nonnull DistributionRequestType requestType, 
boolean isDeep, @Nonnull String... paths) {
+    public SimpleDistributionRequest(@Nonnull DistributionRequestType 
requestType, boolean isDeep, @Nonnull String... paths) {
         this.requestType = requestType;
         deep = isDeep;
         this.paths = paths;
@@ -50,7 +49,7 @@ public final class DistributionRequest {
      * @param requestType the request type
      * @param paths the array of paths to be distributed
      */
-    public DistributionRequest(@Nonnull DistributionRequestType requestType, 
@Nonnull String... paths) {
+    public SimpleDistributionRequest(@Nonnull DistributionRequestType 
requestType, @Nonnull String... paths) {
         this(requestType, false, paths);
     }
 
@@ -74,10 +73,10 @@ public final class DistributionRequest {
 
 
     /**
-     * Returns whether the paths are covering the entire subtree (deep) or 
just the specified nodes (shallow)
-     * @return <code>true</code> if the paths are deep
+     * Returns whether the a path is covering the entire subtree (deep) or 
just the specified nodes (shallow)
+     * @return <code>true</code> if the path is deep
      */
-    public boolean isDeep() {
+    public boolean isDeep(String path) {
         return deep;
     }
 
diff --git 
a/src/main/java/org/apache/sling/distribution/queue/DistributionQueue.java 
b/src/main/java/org/apache/sling/distribution/queue/DistributionQueue.java
index a77b140..7db554f 100644
--- a/src/main/java/org/apache/sling/distribution/queue/DistributionQueue.java
+++ b/src/main/java/org/apache/sling/distribution/queue/DistributionQueue.java
@@ -84,19 +84,19 @@ public interface DistributionQueue {
     /**
      * get all the items in the queue
      *
-     * @param queueItemSelector represents the criteria to filter queue items.
-     *                          if null is passed then all items are returned.
+     * @param skip the number of items to skip
+     * @param limit the maximum number of items to return. use -1 to return 
all items.
      * @return a {@link java.lang.Iterable} of {@link DistributionQueueItem}s
      */
     @Nonnull
-    Iterable<DistributionQueueItem> getItems(@Nullable 
DistributionQueueItemSelector queueItemSelector);
+    Iterable<DistributionQueueItem> getItems(int skip, int limit);
 
     /**
      * remove an item from the queue by specifying its id
      *
-     * @param id an item's identifier
+     * @param packageId the id of the package represented by the item
      * @return the removed item, or {@code null} if the item with the given id
      * doesn't exist
      */
-    DistributionQueueItem remove(@Nonnull String id);
+    DistributionQueueItem remove(@Nonnull String packageId);
 }
diff --git 
a/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemSelector.java
 
b/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemSelector.java
deleted file mode 100644
index e52c863..0000000
--- 
a/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemSelector.java
+++ /dev/null
@@ -1,53 +0,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.
- */
-
-package org.apache.sling.distribution.queue;
-
-/**
- * Class representing criteria for queue items selection.
- */
-public class DistributionQueueItemSelector {
-    private final int skip;
-    private final int limit;
-
-    /**
-     *
-     * @param skip the number of items to skip
-     * @param limit the maximum number of items to return. use -1 to return 
all items.
-     */
-    public DistributionQueueItemSelector(int skip, int limit) {
-        this.skip = skip;
-        this.limit = limit;
-    }
-
-    /**
-     * @return the number of items to skip from the queue.
-     */
-    public int getSkip() {
-        return skip;
-    }
-
-    /**
-     *
-     * @return return the maximum number of items to be selected.
-     */
-    public int getLimit() {
-        return limit;
-    }
-}

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to