You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2017/05/03 03:01:35 UTC

curator git commit: added some doc

Repository: curator
Updated Branches:
  refs/heads/CURATOR-397 0917e314b -> 69f1829d0


added some doc


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

Branch: refs/heads/CURATOR-397
Commit: 69f1829d0f63badb0e16ff0bd4d53f3c4a8df541
Parents: 0917e31
Author: randgalt <ra...@apache.org>
Authored: Tue May 2 22:01:29 2017 -0500
Committer: randgalt <ra...@apache.org>
Committed: Tue May 2 22:01:29 2017 -0500

----------------------------------------------------------------------
 .../src/main/java/pubsub/Publisher.java         | 66 +++++++++++++++-----
 .../src/main/java/pubsub/Subscriber.java        | 30 ++++++++-
 .../src/main/java/pubsub/builders/Clients.java  | 21 +++++--
 .../main/java/pubsub/builders/ModelSpecs.java   | 23 ++++---
 .../src/main/java/pubsub/builders/Paths.java    |  9 +++
 5 files changed, 117 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/69f1829d/curator-examples/src/main/java/pubsub/Publisher.java
----------------------------------------------------------------------
diff --git a/curator-examples/src/main/java/pubsub/Publisher.java b/curator-examples/src/main/java/pubsub/Publisher.java
index 53fad3e..8854b35 100644
--- a/curator-examples/src/main/java/pubsub/Publisher.java
+++ b/curator-examples/src/main/java/pubsub/Publisher.java
@@ -28,23 +28,33 @@ public class Publisher
         this.client = Objects.requireNonNull(client, "client cannot be null");
     }
 
+    /**
+     * Publish the given instance using the Instance client template
+     *
+     * @param instance instance to publish
+     */
     public void publishInstance(Instance instance)
     {
         ModeledFramework<Instance> resolvedClient = instanceClient
-            .resolved(client, instance.getType())
-            .resolved(instance);
+            .resolved(client, instance.getType())   // this resolves to the parent path
+            .resolved(instance);                    // this resolves to a child node - uses the Instance's id because Instance extends NodeName
         resolvedClient.set(instance).exceptionally(e -> {
             log.error("Could not publish instance: " + instance, e);
             return null;
         });
     }
 
+    /**
+     * Publish the given instances using the Instance client template in a transaction
+     *
+     * @param instances instances to publish
+     */
     public void publishInstances(List<Instance> instances)
     {
         List<CuratorOp> operations = instances.stream()
             .map(instance -> instanceClient
-                .resolved(client, instance.getType())
-                .resolved(instance)
+                .resolved(client, instance.getType())   // this resolves to the parent path
+                .resolved(instance)                     // this resolves to a child node - uses the Instance's id because Instance extends NodeName
                 .createOp(instance)
             )
             .collect(Collectors.toList());
@@ -54,27 +64,51 @@ public class Publisher
         });
     }
 
-    public void publishLocationAvailable(Group group, LocationAvailable message)
+    /**
+     * Publish the given LocationAvailable using the LocationAvailable client template
+     *
+     * @param group group
+     * @param locationAvailable message to publish
+     */
+    public void publishLocationAvailable(Group group, LocationAvailable locationAvailable)
     {
-        publishMessage(locationAvailableClient, group, message);
+        publishMessage(locationAvailableClient, group, locationAvailable);
     }
 
-    public void publishUserCreated(Group group, UserCreated message)
+    /**
+     * Publish the given UserCreated using the UserCreated client template
+     *
+     * @param group group
+     * @param userCreated message to publish
+     */
+    public void publishUserCreated(Group group, UserCreated userCreated)
     {
-        publishMessage(userCreatedClient, group, message);
+        publishMessage(userCreatedClient, group, userCreated);
     }
 
-    public void publishLocationsAvailable(Group group, List<LocationAvailable> messages)
+    /**
+     * Publish the given LocationAvailables using the LocationAvailable client template in a transaction
+     *
+     * @param group group
+     * @param locationsAvailable messages to publish
+     */
+    public void publishLocationsAvailable(Group group, List<LocationAvailable> locationsAvailable)
     {
-        publishMessages(locationAvailableClient, group, messages);
+        publishMessages(locationAvailableClient, group, locationsAvailable);
     }
 
-    public void publishUsersCreated(Group group, List<UserCreated> messages)
+    /**
+     * Publish the given UserCreateds using the UserCreated client template in a transaction
+     *
+     * @param group group
+     * @param usersCreated messages to publish
+     */
+    public void publishUsersCreated(Group group, List<UserCreated> usersCreated)
     {
-        publishMessages(userCreatedClient, group, messages);
+        publishMessages(userCreatedClient, group, usersCreated);
     }
 
-    public <T extends Message> void publishMessage(TypedModeledFramework2<T, Group, Priority> typedClient, Group group, T message)
+    private <T extends Message> void publishMessage(TypedModeledFramework2<T, Group, Priority> typedClient, Group group, T message)
     {
         ModeledFramework<T> resolvedClient = typedClient
             .resolved(client, group, message.getPriority())
@@ -85,12 +119,12 @@ public class Publisher
         });
     }
 
-    public <T extends Message> void publishMessages(TypedModeledFramework2<T, Group, Priority> typedClient, Group group, List<T> messages)
+    private <T extends Message> void publishMessages(TypedModeledFramework2<T, Group, Priority> typedClient, Group group, List<T> messages)
     {
         List<CuratorOp> operations = messages.stream()
             .map(message -> typedClient
-                    .resolved(client, group, message.getPriority())
-                    .resolved(message)
+                    .resolved(client, group, message.getPriority()) // this resolves to the parent path
+                    .resolved(message)                              // this resolves to a child node - uses the Message's id because Message extends NodeName
                     .createOp(message)
                 )
             .collect(Collectors.toList());

http://git-wip-us.apache.org/repos/asf/curator/blob/69f1829d/curator-examples/src/main/java/pubsub/Subscriber.java
----------------------------------------------------------------------
diff --git a/curator-examples/src/main/java/pubsub/Subscriber.java b/curator-examples/src/main/java/pubsub/Subscriber.java
index 29911a2..1acee0b 100644
--- a/curator-examples/src/main/java/pubsub/Subscriber.java
+++ b/curator-examples/src/main/java/pubsub/Subscriber.java
@@ -22,26 +22,50 @@ public class Subscriber
         this.client = client;
     }
 
+    /**
+     * Start a subscriber (a CachedModeledFramework instance) using the LocationAvailable client template
+     *
+     * @param group group to listen for
+     * @param priority priority to listen for
+     * @return CachedModeledFramework instance (already started)
+     */
     public CachedModeledFramework<LocationAvailable> startLocationAvailableSubscriber(Group group, Priority priority)
     {
         return startSubscriber(locationAvailableClient, group, priority);
     }
 
+    /**
+     * Start a subscriber (a CachedModeledFramework instance) using the UserCreated client template
+     *
+     * @param group group to listen for
+     * @param priority priority to listen for
+     * @return CachedModeledFramework instance (already started)
+     */
     public CachedModeledFramework<UserCreated> startUserCreatedSubscriber(Group group, Priority priority)
     {
         return startSubscriber(userCreatedClient, group, priority);
     }
 
+    /**
+     * Start a subscriber (a CachedModeledFramework instance) using the Instance client template
+     *
+     * @param instanceType type to listen for
+     * @return CachedModeledFramework instance (already started)
+     */
     public CachedModeledFramework<Instance> startInstanceSubscriber(InstanceType instanceType)
     {
-        CachedModeledFramework<Instance> resolved = instanceClient.resolved(client, instanceType).cached();
+        CachedModeledFramework<Instance> resolved = instanceClient
+            .resolved(client, instanceType) // resolves to the parent path - models are children of this path
+            .cached();                      // makes a cached modeled instance
         resolved.start();
         return resolved;
     }
 
-    public <T extends Message> CachedModeledFramework<T> startSubscriber(TypedModeledFramework2<T, Group, Priority> typedClient, Group group, Priority priority)
+    private <T extends Message> CachedModeledFramework<T> startSubscriber(TypedModeledFramework2<T, Group, Priority> typedClient, Group group, Priority priority)
     {
-        CachedModeledFramework<T> resolved = typedClient.resolved(client, group, priority).cached();
+        CachedModeledFramework<T> resolved = typedClient
+            .resolved(client, group, priority)  // resolves to the parent path - models are children of this path
+            .cached();                          // makes a cached modeled instance
         resolved.start();
         return resolved;
     }

http://git-wip-us.apache.org/repos/asf/curator/blob/69f1829d/curator-examples/src/main/java/pubsub/builders/Clients.java
----------------------------------------------------------------------
diff --git a/curator-examples/src/main/java/pubsub/builders/Clients.java b/curator-examples/src/main/java/pubsub/builders/Clients.java
index f8569aa..b742e8c 100644
--- a/curator-examples/src/main/java/pubsub/builders/Clients.java
+++ b/curator-examples/src/main/java/pubsub/builders/Clients.java
@@ -12,19 +12,28 @@ import pubsub.models.Priority;
 
 public class Clients
 {
+    /**
+     * A client template for LocationAvailable instances
+     */
     public static final TypedModeledFramework2<LocationAvailable, Group, Priority> locationAvailableClient = TypedModeledFramework2.from(
-        ModeledFramework.builder(),
-        ModelSpecs.locationAvailableModelSpec
+        ModeledFramework.builder(),             // our client will use only defaults
+        ModelSpecs.locationAvailableModelSpec   // the LocationAvailable model spec
     );
 
+    /**
+     * A client template for UserCreated instances
+     */
     public static final TypedModeledFramework2<UserCreated, Group, Priority> userCreatedClient = TypedModeledFramework2.from(
-        ModeledFramework.builder(),
-        ModelSpecs.userCreatedModelSpec
+        ModeledFramework.builder(),             // our client will use only defaults
+        ModelSpecs.userCreatedModelSpec         // the UserCreated model spec
     );
 
+    /**
+     * A client template for Instance instances
+     */
     public static final TypedModeledFramework<Instance, InstanceType> instanceClient = TypedModeledFramework.from(
-        ModeledFramework.builder(),
-        ModelSpecs.instanceModelSpec
+        ModeledFramework.builder(),             // our client will use only defaults
+        ModelSpecs.instanceModelSpec            // the Instance model spec
     );
 
     private Clients()

http://git-wip-us.apache.org/repos/asf/curator/blob/69f1829d/curator-examples/src/main/java/pubsub/builders/ModelSpecs.java
----------------------------------------------------------------------
diff --git a/curator-examples/src/main/java/pubsub/builders/ModelSpecs.java b/curator-examples/src/main/java/pubsub/builders/ModelSpecs.java
index dff4e21..dcb7a29 100644
--- a/curator-examples/src/main/java/pubsub/builders/ModelSpecs.java
+++ b/curator-examples/src/main/java/pubsub/builders/ModelSpecs.java
@@ -16,25 +16,34 @@ import java.util.concurrent.TimeUnit;
 
 public class ModelSpecs
 {
+    /**
+     * A model spec for LocationAvailable instances
+     */
     public static final TypedModelSpec2<LocationAvailable, Group, Priority> locationAvailableModelSpec = TypedModelSpec2.from(
-        builder(LocationAvailable.class),
-        Paths.locationAvailablePath
+        builder(LocationAvailable.class),   // creates a standard JSON serializer
+        Paths.locationAvailablePath         // use the path for LocationAvailable instances
     );
 
+    /**
+     * A model spec for UserCreated instances
+     */
     public static final TypedModelSpec2<UserCreated, Group, Priority> userCreatedModelSpec = TypedModelSpec2.from(
-        builder(UserCreated.class),
-        Paths.userCreatedPath
+        builder(UserCreated.class),         // creates a standard JSON serializer
+        Paths.userCreatedPath               // use the path for UserCreated instances
     );
 
+    /**
+     * A model spec for Instance instances
+     */
     public static final TypedModelSpec<Instance, InstanceType> instanceModelSpec = TypedModelSpec.from(
-        builder(Instance.class),
-        Paths.instancesPath
+        builder(Instance.class),            // creates a standard JSON serializer
+        Paths.instancesPath                 // use the path for Instance instances
     );
 
     private static <T> ModelSpecBuilder<T> builder(Class<T> clazz)
     {
         return ModelSpec.builder(JacksonModelSerializer.build(clazz))
-            .withTtl(TimeUnit.MINUTES.toMillis(10))
+            .withTtl(TimeUnit.MINUTES.toMillis(10)) // for our pub-sub example, messages are valid for 10 minutes
             .withCreateMode(CreateMode.PERSISTENT_WITH_TTL)
             ;
     }

http://git-wip-us.apache.org/repos/asf/curator/blob/69f1829d/curator-examples/src/main/java/pubsub/builders/Paths.java
----------------------------------------------------------------------
diff --git a/curator-examples/src/main/java/pubsub/builders/Paths.java b/curator-examples/src/main/java/pubsub/builders/Paths.java
index 6b2dd6f..74f45ce 100644
--- a/curator-examples/src/main/java/pubsub/builders/Paths.java
+++ b/curator-examples/src/main/java/pubsub/builders/Paths.java
@@ -10,10 +10,19 @@ public class Paths
 {
     private static final String basePath = "/root/pubsub";
 
+    /**
+     * Represents a path for LocationAvailable models that is parameterized with a Group and a Priority
+     */
     public static final TypedZPath2<Group, Priority> locationAvailablePath = TypedZPath2.from(basePath + "/messages/locations/{id}/{id}");
 
+    /**
+     * Represents a path for UserCreated models that is parameterized with a Group and a Priority
+     */
     public static final TypedZPath2<Group, Priority> userCreatedPath = TypedZPath2.from(basePath + "/messages/users/{id}/{id}");
 
+    /**
+     * Represents a path for Instance models that is parameterized with a InstanceType
+     */
     public static final TypedZPath<InstanceType> instancesPath = TypedZPath.from(basePath + "/instances/{id}");
 
     private Paths()