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()