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 2014/05/28 19:33:51 UTC
[1/8] git commit: more work on CLI
Repository: curator
Updated Branches:
refs/heads/curator-rpc f261b0cfd -> 598ad996c
more work on CLI
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/e11db6df
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/e11db6df
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/e11db6df
Branch: refs/heads/curator-rpc
Commit: e11db6dfcfd719e0912fbe1c2ab211ceffcb23c4
Parents: f261b0c
Author: randgalt <ra...@apache.org>
Authored: Tue May 27 17:45:47 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Tue May 27 17:45:47 2014 -0500
----------------------------------------------------------------------
.../apache/curator/x/rpc/CuratorProjectionServer.java | 11 +++++++++++
1 file changed, 11 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/e11db6df/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index f5e49f4..d91a52d 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -32,6 +32,8 @@ import io.airlift.units.DataSize;
import io.airlift.units.Duration;
import org.apache.curator.x.rpc.idl.event.EventService;
import org.apache.curator.x.rpc.idl.projection.CuratorProjectionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.util.Map;
@@ -40,9 +42,11 @@ import java.util.concurrent.atomic.AtomicReference;
public class CuratorProjectionServer
{
+ private final Logger log = LoggerFactory.getLogger(getClass());
private final RpcManager rpcManager;
private final ThriftServer server;
private final AtomicReference<State> state = new AtomicReference<State>(State.LATENT);
+ private final Configuration configuration;
private enum State
{
@@ -91,6 +95,7 @@ public class CuratorProjectionServer
public CuratorProjectionServer(Configuration configuration)
{
+ this.configuration = configuration;
rpcManager = new RpcManager(configuration.getProjectionExpiration().toMillis());
EventService eventService = new EventService(rpcManager, configuration.getPingTime().toMillis());
CuratorProjectionService projectionService = new CuratorProjectionService(rpcManager);
@@ -103,14 +108,20 @@ public class CuratorProjectionServer
Preconditions.checkState(state.compareAndSet(State.LATENT, State.STARTED), "Already started");
server.start();
+
+ log.info("Server listening on port: " + configuration.getPort());
}
public void stop()
{
if ( state.compareAndSet(State.STARTED, State.STOPPED) )
{
+ log.info("Stopping...");
+
rpcManager.close();
server.close();
+
+ log.info("Stopped");
}
}
[5/8] git commit: configuration wip
Posted by ra...@apache.org.
configuration wip
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/59b78a98
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/59b78a98
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/59b78a98
Branch: refs/heads/curator-rpc
Commit: 59b78a98b328cc8bb229a9643efadfc07c2beff2
Parents: 1d55040
Author: randgalt <ra...@apache.org>
Authored: Wed May 28 08:51:53 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed May 28 08:51:53 2014 -0500
----------------------------------------------------------------------
curator-x-rpc/pom.xml | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/59b78a98/curator-x-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-rpc/pom.xml b/curator-x-rpc/pom.xml
index f27a383..b0534c8 100644
--- a/curator-x-rpc/pom.xml
+++ b/curator-x-rpc/pom.xml
@@ -41,6 +41,11 @@
</dependency>
<dependency>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-mapper-asl</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-test</artifactId>
<exclusions>
[7/8] git commit: transitioned to Dropwizard config and logging
Posted by ra...@apache.org.
transitioned to Dropwizard config and logging
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/49d02946
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/49d02946
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/49d02946
Branch: refs/heads/curator-rpc
Commit: 49d0294657d242f366db4a0e0654f429100c4b85
Parents: 078d7be
Author: randgalt <ra...@apache.org>
Authored: Wed May 28 12:14:59 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed May 28 12:14:59 2014 -0500
----------------------------------------------------------------------
.../curator/x/rpc/CuratorProjectionServer.java | 94 ++++----------------
.../AuthorizationConfiguration.java | 27 ++++++
...dedExponentialBackoffRetryConfiguration.java | 51 +++++++++++
.../x/rpc/configuration/Configuration.java | 46 ++++++----
.../rpc/configuration/ConfigurationBuilder.java | 20 +++--
.../x/rpc/configuration/ConfigurationX.java | 54 -----------
.../configuration/ConnectionConfiguration.java | 53 ++++++++---
.../ExponentialBackoffRetryConfiguration.java | 32 +++----
.../configuration/RetryNTimesConfiguration.java | 40 +++++++++
.../configuration/RetryPolicyConfiguration.java | 10 +++
.../curator/x/rpc/configuration/RetryType.java | 6 --
.../src/main/resources/curator/help.txt | 13 +++
.../configuration/TestConfigurationBuilder.java | 25 +++++-
.../resources/configuration/connections.json | 27 ++++++
14 files changed, 303 insertions(+), 195 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index 40e543f..2769e98 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -24,21 +24,18 @@ import com.facebook.swift.service.ThriftServer;
import com.facebook.swift.service.ThriftServiceProcessor;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import io.airlift.configuration.ConfigurationFactory;
-import io.airlift.configuration.ConfigurationLoader;
-import io.airlift.configuration.ConfigurationMetadata;
-import io.airlift.units.DataSize;
-import io.airlift.units.Duration;
+import com.google.common.io.Files;
+import com.google.common.io.Resources;
import org.apache.curator.x.rpc.configuration.Configuration;
+import org.apache.curator.x.rpc.configuration.ConfigurationBuilder;
import org.apache.curator.x.rpc.idl.event.EventService;
import org.apache.curator.x.rpc.idl.projection.CuratorProjectionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
+import java.net.URL;
+import java.nio.charset.Charset;
import java.util.concurrent.atomic.AtomicReference;
public class CuratorProjectionServer
@@ -56,29 +53,27 @@ public class CuratorProjectionServer
STOPPED
}
- public static void main(String[] args) throws IOException
+ public static void main(String[] args) throws Exception
{
- if ( (args.length == 0) || args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("-h") || args[0].equalsIgnoreCase("--help") )
+ if ( (args.length != 1) || args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("-h") || args[0].equalsIgnoreCase("--help") )
{
printHelp();
return;
}
- Map<String, String> options;
+ String configurationSource;
File f = new File(args[0]);
if ( f.exists() )
{
- options = new ConfigurationLoader().loadPropertiesFrom(f.getPath());
+ configurationSource = Files.toString(f, Charset.defaultCharset());
}
else
{
- System.out.println("First argument is not a file. Treating the command line as a list of field/values");
- options = buildOptions(args);
+ System.out.println("First argument is not a file. Treating the command line as a json object");
+ configurationSource = args[0];
}
- ConfigurationFactory configurationFactory = new ConfigurationFactory(options);
-
- Configuration configuration = configurationFactory.build(Configuration.class);
+ Configuration configuration = new ConfigurationBuilder(configurationSource).build();
final CuratorProjectionServer server = new CuratorProjectionServer(configuration);
server.start();
@@ -102,7 +97,7 @@ public class CuratorProjectionServer
EventService eventService = new EventService(rpcManager, configuration.getPingTime().toMillis());
CuratorProjectionService projectionService = new CuratorProjectionService(rpcManager);
ThriftServiceProcessor processor = new ThriftServiceProcessor(new ThriftCodecManager(), Lists.<ThriftEventHandler>newArrayList(), projectionService, eventService);
- server = new ThriftServer(processor, configuration);
+ server = new ThriftServer(processor, configuration.getThrift());
}
public void start()
@@ -111,7 +106,7 @@ public class CuratorProjectionServer
server.start();
- log.info("Server listening on port: " + configuration.getPort());
+ log.info("Server listening on port: " + configuration.getThrift().getPort());
}
public void stop()
@@ -127,64 +122,9 @@ public class CuratorProjectionServer
}
}
- private static void printHelp()
+ private static void printHelp() throws IOException
{
- System.out.println("Curator RPC - an RPC server for using Apache Curator APIs and recipes from non JVM languages.");
- System.out.println();
- System.out.println("Arguments:");
- System.out.println("\t<none> show this help");
- System.out.println("\t<path> path to a properties configuration file");
- System.out.println("\t<field value> ... list of properties of the form: \"field1 value1 ... fieldN valueN\"");
- System.out.println();
-
- Map<String, String> valuesMap = Maps.newTreeMap();
-
- buildMetaData(valuesMap, ConfigurationMetadata.getConfigurationMetadata(Configuration.class));
-
- System.out.println("Values:");
- for ( String s : valuesMap.values() )
- {
- System.out.println(s);
- }
-
- System.out.println("Special Types Examples:");
- System.out.println("\t" + Duration.class.getSimpleName());
- System.out.println("\t\t" + new Duration(10, TimeUnit.MINUTES));
- System.out.println("\t\t" + new Duration(5, TimeUnit.MILLISECONDS));
- System.out.println("\t\t" + new Duration(1.5, TimeUnit.HOURS));
- System.out.println("\t" + DataSize.class.getSimpleName());
- System.out.println("\t\t" + new DataSize(1.5, DataSize.Unit.GIGABYTE));
- System.out.println("\t\t" + new DataSize(10, DataSize.Unit.BYTE));
- System.out.println("\t\t" + new DataSize(.4, DataSize.Unit.MEGABYTE));
- System.out.println();
- }
-
- private static void buildMetaData(Map<String, String> valuesMap, ConfigurationMetadata<?> metadata)
- {
- for ( ConfigurationMetadata.AttributeMetadata attributeMetadata : metadata.getAttributes().values() )
- {
- int index = 0;
- ConfigurationMetadata.InjectionPointMetaData injectionPoint = attributeMetadata.getInjectionPoint();
- valuesMap.put(injectionPoint.getProperty() + index++, "\t" + injectionPoint.getProperty() + ": " + attributeMetadata.getGetter().getReturnType().getSimpleName());
- if ( attributeMetadata.getDescription() != null )
- {
- valuesMap.put(injectionPoint.getProperty() + index++, "\t\t" + attributeMetadata.getDescription());
- }
- valuesMap.put(injectionPoint.getProperty() + index, "");
- }
- }
-
- private static Map<String, String> buildOptions(String[] args) throws IOException
- {
- Map<String, String> options = Maps.newHashMap();
- for ( int i = 0; i < args.length; i += 2 )
- {
- if ( (i + 1) >= args.length )
- {
- throw new IOException("Bad command line. Must be list of fields and values of the form: \"field1 value1 ... fieldN valueN\"");
- }
- options.put(args[i], args[i + 1]);
- }
- return options;
+ URL helpUrl = Resources.getResource("curator/help.txt");
+ System.out.println(Resources.toString(helpUrl, Charset.defaultCharset()));
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/AuthorizationConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/AuthorizationConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/AuthorizationConfiguration.java
new file mode 100644
index 0000000..3bbc347
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/AuthorizationConfiguration.java
@@ -0,0 +1,27 @@
+package org.apache.curator.x.rpc.configuration;
+
+public class AuthorizationConfiguration
+{
+ private String scheme;
+ private String auth;
+
+ public String getScheme()
+ {
+ return scheme;
+ }
+
+ public void setScheme(String scheme)
+ {
+ this.scheme = scheme;
+ }
+
+ public String getAuth()
+ {
+ return auth;
+ }
+
+ public void setAuth(String auth)
+ {
+ this.auth = auth;
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/BoundedExponentialBackoffRetryConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/BoundedExponentialBackoffRetryConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/BoundedExponentialBackoffRetryConfiguration.java
new file mode 100644
index 0000000..5c582ef
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/BoundedExponentialBackoffRetryConfiguration.java
@@ -0,0 +1,51 @@
+package org.apache.curator.x.rpc.configuration;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import io.airlift.units.Duration;
+import org.apache.curator.RetryPolicy;
+import org.apache.curator.retry.BoundedExponentialBackoffRetry;
+import java.util.concurrent.TimeUnit;
+
+@JsonTypeName("bounded-exponential-backoff")
+public class BoundedExponentialBackoffRetryConfiguration extends RetryPolicyConfiguration
+{
+ private Duration baseSleepTime = new Duration(100, TimeUnit.MILLISECONDS);
+ private Duration maxSleepTime = new Duration(30, TimeUnit.SECONDS);
+ private int maxRetries = 3;
+
+ @Override
+ public RetryPolicy build()
+ {
+ return new BoundedExponentialBackoffRetry((int)baseSleepTime.toMillis(), (int)maxSleepTime.toMillis(), maxRetries);
+ }
+
+ public Duration getBaseSleepTime()
+ {
+ return baseSleepTime;
+ }
+
+ public void setBaseSleepTime(Duration baseSleepTime)
+ {
+ this.baseSleepTime = baseSleepTime;
+ }
+
+ public int getMaxRetries()
+ {
+ return maxRetries;
+ }
+
+ public void setMaxRetries(int maxRetries)
+ {
+ this.maxRetries = maxRetries;
+ }
+
+ public Duration getMaxSleepTime()
+ {
+ return maxSleepTime;
+ }
+
+ public void setMaxSleepTime(Duration maxSleepTime)
+ {
+ this.maxSleepTime = maxSleepTime;
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java
index 799ab9b..e567cac 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java
@@ -1,28 +1,45 @@
package org.apache.curator.x.rpc.configuration;
import com.facebook.swift.service.ThriftServerConfig;
-import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
-import io.airlift.configuration.Config;
-import io.airlift.configuration.ConfigDescription;
+import com.google.common.collect.Lists;
import io.airlift.units.Duration;
+import io.dropwizard.logging.LoggingFactory;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.TimeUnit;
-public class Configuration extends ThriftServerConfig
+public class Configuration
{
+ private ThriftServerConfig thrift = new ThriftServerConfig();
+ private LoggingFactory logging = new LoggingFactory();
private Duration projectionExpiration = new Duration(3, TimeUnit.MINUTES);
private Duration pingTime = new Duration(5, TimeUnit.SECONDS);
- private List<String> connectionNames = ImmutableList.of();
+ private List<ConnectionConfiguration> connections = Lists.newArrayList();
+
+ public LoggingFactory getLogging()
+ {
+ return logging;
+ }
+
+ public void setLogging(LoggingFactory logging)
+ {
+ this.logging = logging;
+ }
+
+ public ThriftServerConfig getThrift()
+ {
+ return thrift;
+ }
+
+ public void setThrift(ThriftServerConfig thrift)
+ {
+ this.thrift = thrift;
+ }
public Duration getProjectionExpiration()
{
return projectionExpiration;
}
- @Config("curator.projection-expiration")
- @ConfigDescription("Curator projection instances will be expired after this amount of inactivity - default is 3 minutes")
public void setProjectionExpiration(Duration projectionExpiration)
{
this.projectionExpiration = projectionExpiration;
@@ -33,21 +50,18 @@ public class Configuration extends ThriftServerConfig
return pingTime;
}
- @Config("curator.ping-time")
- @ConfigDescription("Calls to getNextEvent() will return PING after this duration - default is 5 seconds")
public void setPingTime(Duration pingTime)
{
this.pingTime = pingTime;
}
- public List<String> getConnectionNames()
+ public List<ConnectionConfiguration> getConnections()
{
- return connectionNames;
+ return connections;
}
- @Config("curator.connection.names")
- public void setConnectionNames(String connectionNames)
+ public void setConnections(List<ConnectionConfiguration> connections)
{
- this.connectionNames = Splitter.on(",").trimResults().splitToList(connectionNames);
+ this.connections = connections;
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
index f8f5760..4d9fd60 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
@@ -3,7 +3,6 @@ package org.apache.curator.x.rpc.configuration;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.SubtypeResolver;
import com.fasterxml.jackson.databind.jsontype.impl.StdSubtypeResolver;
-import io.dropwizard.configuration.ConfigurationException;
import io.dropwizard.configuration.ConfigurationFactory;
import io.dropwizard.configuration.ConfigurationFactoryFactory;
import io.dropwizard.configuration.ConfigurationSourceProvider;
@@ -21,7 +20,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
-class ConfigurationBuilder
+public class ConfigurationBuilder
{
private final String configurationSource;
@@ -30,23 +29,30 @@ class ConfigurationBuilder
LoggingFactory.bootstrap();
}
- ConfigurationBuilder(String configurationSource)
+ public ConfigurationBuilder(String configurationSource)
{
this.configurationSource = configurationSource;
}
- ConfigurationX build() throws IOException, ConfigurationException
+ public Configuration build() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new LogbackModule());
mapper.setPropertyNamingStrategy(new AnnotationSensitivePropertyNamingStrategy());
SubtypeResolver subtypeResolver = new StdSubtypeResolver();
- subtypeResolver.registerSubtypes(ConsoleAppenderFactory.class, FileAppenderFactory.class, SyslogAppenderFactory.class);
+ subtypeResolver.registerSubtypes
+ (
+ ConsoleAppenderFactory.class,
+ FileAppenderFactory.class,
+ SyslogAppenderFactory.class,
+ ExponentialBackoffRetryConfiguration.class,
+ RetryNTimesConfiguration.class
+ );
mapper.setSubtypeResolver(subtypeResolver);
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
- ConfigurationFactoryFactory<ConfigurationX> factoryFactory = new DefaultConfigurationFactoryFactory<ConfigurationX>();
- ConfigurationFactory<ConfigurationX> configurationFactory = factoryFactory.create(ConfigurationX.class, validatorFactory.getValidator(), mapper, "curator");
+ ConfigurationFactoryFactory<Configuration> factoryFactory = new DefaultConfigurationFactoryFactory<Configuration>();
+ ConfigurationFactory<Configuration> configurationFactory = factoryFactory.create(Configuration.class, validatorFactory.getValidator(), mapper, "curator");
ConfigurationSourceProvider provider = new ConfigurationSourceProvider()
{
@Override
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java
deleted file mode 100644
index e9be8e1..0000000
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.apache.curator.x.rpc.configuration;
-
-import com.facebook.swift.service.ThriftServerConfig;
-import io.airlift.units.Duration;
-import io.dropwizard.logging.LoggingFactory;
-import java.util.concurrent.TimeUnit;
-
-public class ConfigurationX
-{
- private ThriftServerConfig thrift = new ThriftServerConfig();
- private LoggingFactory logging = new LoggingFactory();
- private Duration projectionExpiration = new Duration(3, TimeUnit.MINUTES);
- private Duration pingTime = new Duration(5, TimeUnit.SECONDS);
-
- public LoggingFactory getLogging()
- {
- return logging;
- }
-
- public void setLogging(LoggingFactory logging)
- {
- this.logging = logging;
- }
-
- public ThriftServerConfig getThrift()
- {
- return thrift;
- }
-
- public void setThrift(ThriftServerConfig thrift)
- {
- this.thrift = thrift;
- }
-
- public Duration getProjectionExpiration()
- {
- return projectionExpiration;
- }
-
- public void setProjectionExpiration(Duration projectionExpiration)
- {
- this.projectionExpiration = projectionExpiration;
- }
-
- public Duration getPingTime()
- {
- return pingTime;
- }
-
- public void setPingTime(Duration pingTime)
- {
- this.pingTime = pingTime;
- }
-}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java
index 8209c6a..3e2f9a2 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java
@@ -1,24 +1,34 @@
package org.apache.curator.x.rpc.configuration;
-import io.airlift.configuration.Config;
-import io.airlift.configuration.ConfigDescription;
import io.airlift.units.Duration;
+import javax.validation.constraints.NotNull;
import java.util.concurrent.TimeUnit;
public class ConnectionConfiguration
{
+ @NotNull private String name;
private String connectionString = "localhost:2181";
private Duration sessionLength = new Duration(1, TimeUnit.MINUTES);
private Duration connectionTimeout = new Duration(15, TimeUnit.SECONDS);
- private RetryType retryType;
+ private AuthorizationConfiguration authorization = null;
+ private String namespace = null;
+ private RetryPolicyConfiguration retry = new ExponentialBackoffRetryConfiguration();
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
public String getConnectionString()
{
return connectionString;
}
- @Config("curator.connection.$CONNECTION-NAME$.connection-string")
- @ConfigDescription("Default ZooKeeper connection string. E.g. \"foo.com:2181,bar.com:2181\"")
public void setConnectionString(String connectionString)
{
this.connectionString = connectionString;
@@ -29,8 +39,6 @@ public class ConnectionConfiguration
return sessionLength;
}
- @Config("curator.connection.$CONNECTION-NAME$.session-length")
- @ConfigDescription("Session length. Default is 1 minute")
public void setSessionLength(Duration sessionLength)
{
this.sessionLength = sessionLength;
@@ -41,21 +49,38 @@ public class ConnectionConfiguration
return connectionTimeout;
}
- @Config("curator.connection.$CONNECTION-NAME$.connection-timeout")
- @ConfigDescription("Connection timeout. Default is 15 seconds")
public void setConnectionTimeout(Duration connectionTimeout)
{
this.connectionTimeout = connectionTimeout;
}
- public RetryType getRetryType()
+ public AuthorizationConfiguration getAuthorization()
+ {
+ return authorization;
+ }
+
+ public void setAuthorization(AuthorizationConfiguration authorization)
+ {
+ this.authorization = authorization;
+ }
+
+ public String getNamespace()
+ {
+ return namespace;
+ }
+
+ public void setNamespace(String namespace)
+ {
+ this.namespace = namespace;
+ }
+
+ public RetryPolicyConfiguration getRetry()
{
- return retryType;
+ return retry;
}
- @Config("curator.connection.$CONNECTION-NAME$.retry.type")
- public void setRetryType(RetryType retryType)
+ public void setRetry(RetryPolicyConfiguration retry)
{
- this.retryType = retryType;
+ this.retry = retry;
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java
index 41b8db8..7e02592 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java
@@ -1,20 +1,28 @@
package org.apache.curator.x.rpc.configuration;
-import io.airlift.configuration.Config;
+import com.fasterxml.jackson.annotation.JsonTypeName;
import io.airlift.units.Duration;
+import org.apache.curator.RetryPolicy;
+import org.apache.curator.retry.ExponentialBackoffRetry;
+import java.util.concurrent.TimeUnit;
-public class ExponentialBackoffRetryConfiguration
+@JsonTypeName("exponential-backoff")
+public class ExponentialBackoffRetryConfiguration extends RetryPolicyConfiguration
{
- private Duration baseSleepTime;
- private int maxRetries;
- private Duration maxSleep;
+ private Duration baseSleepTime = new Duration(100, TimeUnit.MILLISECONDS);
+ private int maxRetries = 3;
+
+ @Override
+ public RetryPolicy build()
+ {
+ return new ExponentialBackoffRetry((int)baseSleepTime.toMillis(), maxRetries);
+ }
public Duration getBaseSleepTime()
{
return baseSleepTime;
}
- @Config("curator.retry.exponential.base-sleep-time")
public void setBaseSleepTime(Duration baseSleepTime)
{
this.baseSleepTime = baseSleepTime;
@@ -25,20 +33,8 @@ public class ExponentialBackoffRetryConfiguration
return maxRetries;
}
- @Config("curator.retry.exponential.max-retries")
public void setMaxRetries(int maxRetries)
{
this.maxRetries = maxRetries;
}
-
- public Duration getMaxSleep()
- {
- return maxSleep;
- }
-
- @Config("curator.retry.exponential.max-sleep")
- public void setMaxSleep(Duration maxSleep)
- {
- this.maxSleep = maxSleep;
- }
}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryNTimesConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryNTimesConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryNTimesConfiguration.java
new file mode 100644
index 0000000..97b25f2
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryNTimesConfiguration.java
@@ -0,0 +1,40 @@
+package org.apache.curator.x.rpc.configuration;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import io.airlift.units.Duration;
+import org.apache.curator.RetryPolicy;
+import org.apache.curator.retry.RetryNTimes;
+import java.util.concurrent.TimeUnit;
+
+@JsonTypeName("ntimes")
+public class RetryNTimesConfiguration extends RetryPolicyConfiguration
+{
+ private Duration sleepBetweenRetries = new Duration(100, TimeUnit.MILLISECONDS);
+ private int n = 3;
+
+ @Override
+ public RetryPolicy build()
+ {
+ return new RetryNTimes(n, (int)sleepBetweenRetries.toMillis());
+ }
+
+ public Duration getSleepBetweenRetries()
+ {
+ return sleepBetweenRetries;
+ }
+
+ public void setSleepBetweenRetries(Duration sleepBetweenRetries)
+ {
+ this.sleepBetweenRetries = sleepBetweenRetries;
+ }
+
+ public int getN()
+ {
+ return n;
+ }
+
+ public void setN(int n)
+ {
+ this.n = n;
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryPolicyConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryPolicyConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryPolicyConfiguration.java
new file mode 100644
index 0000000..463e148
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryPolicyConfiguration.java
@@ -0,0 +1,10 @@
+package org.apache.curator.x.rpc.configuration;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import org.apache.curator.RetryPolicy;
+
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
+public abstract class RetryPolicyConfiguration
+{
+ public abstract RetryPolicy build();
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java
deleted file mode 100644
index 7e4761a..0000000
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.apache.curator.x.rpc.configuration;
-
-public enum RetryType
-{
- ExponentialBackoffRetry,
-}
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/main/resources/curator/help.txt
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/resources/curator/help.txt b/curator-x-rpc/src/main/resources/curator/help.txt
new file mode 100644
index 0000000..086654e
--- /dev/null
+++ b/curator-x-rpc/src/main/resources/curator/help.txt
@@ -0,0 +1,13 @@
+Curator RPC - an RPC server for using Apache Curator APIs and recipes from non JVM languages.
+
+Arguments:
+ <none> show this help
+ <path> path to a JSON or YAML configuration file
+ <string> JSON or YAML object for configuration
+
+Curator RPC uses Dropwizard for configuration. The format is JSON or YAML (your choice).
+
+Curator also uses Dropwizard's logging module. The configuration for it is described here:
+http://dropwizard.readthedocs.org/en/latest/manual/configuration.html#logging
+
+TODO - more details to follow
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java b/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java
index caf5af3..467af3c 100644
--- a/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java
+++ b/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java
@@ -5,6 +5,8 @@ import com.google.common.collect.Sets;
import com.google.common.io.Resources;
import io.airlift.units.Duration;
import io.dropwizard.logging.AppenderFactory;
+import org.apache.curator.retry.ExponentialBackoffRetry;
+import org.apache.curator.retry.RetryNTimes;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.net.URL;
@@ -17,7 +19,7 @@ public class TestConfigurationBuilder
@Test
public void testSimple() throws Exception
{
- ConfigurationX configuration = loadTestConfiguration("configuration/simple.json");
+ Configuration configuration = loadTestConfiguration("configuration/simple.json");
Assert.assertEquals(configuration.getThrift().getPort(), 1234);
Assert.assertEquals(configuration.getPingTime(), new Duration(10, TimeUnit.SECONDS));
}
@@ -25,7 +27,7 @@ public class TestConfigurationBuilder
@Test
public void testLogging() throws Exception
{
- ConfigurationX configuration = loadTestConfiguration("configuration/logging.json");
+ Configuration configuration = loadTestConfiguration("configuration/logging.json");
Assert.assertEquals(configuration.getLogging().getLevel(), Level.INFO);
Assert.assertEquals(configuration.getLogging().getAppenders().size(), 2);
@@ -37,7 +39,24 @@ public class TestConfigurationBuilder
Assert.assertEquals(types, Sets.newHashSet("FileAppenderFactory", "ConsoleAppenderFactory"));
}
- private ConfigurationX loadTestConfiguration(String name) throws Exception
+ @Test
+ public void testConnections() throws Exception
+ {
+ Configuration configuration = loadTestConfiguration("configuration/connections.json");
+ Assert.assertEquals(configuration.getConnections().size(), 2);
+
+ Assert.assertEquals(configuration.getConnections().get(0).getName(), "test");
+ Assert.assertEquals(configuration.getConnections().get(0).getConnectionString(), "one:1,two:2");
+ Assert.assertEquals(configuration.getConnections().get(0).getConnectionTimeout(), new Duration(20, TimeUnit.SECONDS));
+ Assert.assertEquals(configuration.getConnections().get(0).getRetry().build().getClass(), ExponentialBackoffRetry.class);
+
+ Assert.assertEquals(configuration.getConnections().get(1).getName(), "alt");
+ Assert.assertEquals(configuration.getConnections().get(1).getConnectionString(), "three:3,four:4");
+ Assert.assertEquals(configuration.getConnections().get(1).getConnectionTimeout(), new Duration(30, TimeUnit.SECONDS));
+ Assert.assertEquals(configuration.getConnections().get(1).getRetry().build().getClass(), RetryNTimes.class);
+ }
+
+ private Configuration loadTestConfiguration(String name) throws Exception
{
URL resource = Resources.getResource(name);
String source = Resources.toString(resource, Charset.defaultCharset());
http://git-wip-us.apache.org/repos/asf/curator/blob/49d02946/curator-x-rpc/src/test/resources/configuration/connections.json
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/test/resources/configuration/connections.json b/curator-x-rpc/src/test/resources/configuration/connections.json
new file mode 100644
index 0000000..fb5f84a
--- /dev/null
+++ b/curator-x-rpc/src/test/resources/configuration/connections.json
@@ -0,0 +1,27 @@
+{
+ "connections": [
+ {
+ "name": "test",
+ "connectionString": "one:1,two:2",
+ "sessionLength": "3m",
+ "connectionTimeout": "20s",
+ "retry": {
+ "type": "exponential-backoff",
+ "baseSleepTime": "1s",
+ "maxRetries": 10
+ }
+ },
+
+ {
+ "name": "alt",
+ "connectionString": "three:3,four:4",
+ "sessionLength": "4m",
+ "connectionTimeout": "30s",
+ "retry": {
+ "type": "ntimes",
+ "sleepBetweenRetries": "1m",
+ "n": 10
+ }
+ }
+ ]
+}
\ No newline at end of file
[4/8] git commit: configuration continues
Posted by ra...@apache.org.
configuration continues
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/1d550403
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/1d550403
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/1d550403
Branch: refs/heads/curator-rpc
Commit: 1d550403b759901d782ec98b4e25daf850d2f672
Parents: 8fd1bc8
Author: randgalt <ra...@apache.org>
Authored: Wed May 28 08:34:22 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed May 28 08:34:22 2014 -0500
----------------------------------------------------------------------
.../org/apache/curator/x/rpc/Configuration.java | 37 ------------
.../curator/x/rpc/CuratorProjectionServer.java | 1 +
.../x/rpc/configuration/Configuration.java | 53 +++++++++++++++++
.../configuration/ConnectionConfiguration.java | 61 ++++++++++++++++++++
.../ExponentialBackoffRetryConfiguration.java | 44 ++++++++++++++
.../curator/x/rpc/configuration/RetryType.java | 6 ++
6 files changed, 165 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/1d550403/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/Configuration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/Configuration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/Configuration.java
deleted file mode 100644
index ea361b3..0000000
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/Configuration.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.curator.x.rpc;
-
-import com.facebook.swift.service.ThriftServerConfig;
-import io.airlift.configuration.Config;
-import io.airlift.configuration.ConfigDescription;
-import io.airlift.units.Duration;
-import java.util.concurrent.TimeUnit;
-
-public class Configuration extends ThriftServerConfig
-{
- private Duration projectionExpiration = new Duration(3, TimeUnit.MINUTES);
- private Duration pingTime = new Duration(5, TimeUnit.SECONDS);
-
- public Duration getProjectionExpiration()
- {
- return projectionExpiration;
- }
-
- @Config("curator.projection-expiration")
- @ConfigDescription("Curator projection instances will be expired after this amount of inactivity - default is 3 minutes")
- public void setProjectionExpiration(Duration projectionExpiration)
- {
- this.projectionExpiration = projectionExpiration;
- }
-
- public Duration getPingTime()
- {
- return pingTime;
- }
-
- @Config("curator.ping-time")
- @ConfigDescription("Calls to getNextEvent() will return PING after this duration - default is 5 seconds")
- public void setPingTime(Duration pingTime)
- {
- this.pingTime = pingTime;
- }
-}
http://git-wip-us.apache.org/repos/asf/curator/blob/1d550403/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index 6083339..bf92cde 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -32,6 +32,7 @@ import io.airlift.log.Logging;
import io.airlift.log.LoggingConfiguration;
import io.airlift.units.DataSize;
import io.airlift.units.Duration;
+import org.apache.curator.x.rpc.configuration.Configuration;
import org.apache.curator.x.rpc.idl.event.EventService;
import org.apache.curator.x.rpc.idl.projection.CuratorProjectionService;
import org.slf4j.Logger;
http://git-wip-us.apache.org/repos/asf/curator/blob/1d550403/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java
new file mode 100644
index 0000000..799ab9b
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/Configuration.java
@@ -0,0 +1,53 @@
+package org.apache.curator.x.rpc.configuration;
+
+import com.facebook.swift.service.ThriftServerConfig;
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableList;
+import io.airlift.configuration.Config;
+import io.airlift.configuration.ConfigDescription;
+import io.airlift.units.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+public class Configuration extends ThriftServerConfig
+{
+ private Duration projectionExpiration = new Duration(3, TimeUnit.MINUTES);
+ private Duration pingTime = new Duration(5, TimeUnit.SECONDS);
+ private List<String> connectionNames = ImmutableList.of();
+
+ public Duration getProjectionExpiration()
+ {
+ return projectionExpiration;
+ }
+
+ @Config("curator.projection-expiration")
+ @ConfigDescription("Curator projection instances will be expired after this amount of inactivity - default is 3 minutes")
+ public void setProjectionExpiration(Duration projectionExpiration)
+ {
+ this.projectionExpiration = projectionExpiration;
+ }
+
+ public Duration getPingTime()
+ {
+ return pingTime;
+ }
+
+ @Config("curator.ping-time")
+ @ConfigDescription("Calls to getNextEvent() will return PING after this duration - default is 5 seconds")
+ public void setPingTime(Duration pingTime)
+ {
+ this.pingTime = pingTime;
+ }
+
+ public List<String> getConnectionNames()
+ {
+ return connectionNames;
+ }
+
+ @Config("curator.connection.names")
+ public void setConnectionNames(String connectionNames)
+ {
+ this.connectionNames = Splitter.on(",").trimResults().splitToList(connectionNames);
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/1d550403/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java
new file mode 100644
index 0000000..8209c6a
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConnectionConfiguration.java
@@ -0,0 +1,61 @@
+package org.apache.curator.x.rpc.configuration;
+
+import io.airlift.configuration.Config;
+import io.airlift.configuration.ConfigDescription;
+import io.airlift.units.Duration;
+import java.util.concurrent.TimeUnit;
+
+public class ConnectionConfiguration
+{
+ private String connectionString = "localhost:2181";
+ private Duration sessionLength = new Duration(1, TimeUnit.MINUTES);
+ private Duration connectionTimeout = new Duration(15, TimeUnit.SECONDS);
+ private RetryType retryType;
+
+ public String getConnectionString()
+ {
+ return connectionString;
+ }
+
+ @Config("curator.connection.$CONNECTION-NAME$.connection-string")
+ @ConfigDescription("Default ZooKeeper connection string. E.g. \"foo.com:2181,bar.com:2181\"")
+ public void setConnectionString(String connectionString)
+ {
+ this.connectionString = connectionString;
+ }
+
+ public Duration getSessionLength()
+ {
+ return sessionLength;
+ }
+
+ @Config("curator.connection.$CONNECTION-NAME$.session-length")
+ @ConfigDescription("Session length. Default is 1 minute")
+ public void setSessionLength(Duration sessionLength)
+ {
+ this.sessionLength = sessionLength;
+ }
+
+ public Duration getConnectionTimeout()
+ {
+ return connectionTimeout;
+ }
+
+ @Config("curator.connection.$CONNECTION-NAME$.connection-timeout")
+ @ConfigDescription("Connection timeout. Default is 15 seconds")
+ public void setConnectionTimeout(Duration connectionTimeout)
+ {
+ this.connectionTimeout = connectionTimeout;
+ }
+
+ public RetryType getRetryType()
+ {
+ return retryType;
+ }
+
+ @Config("curator.connection.$CONNECTION-NAME$.retry.type")
+ public void setRetryType(RetryType retryType)
+ {
+ this.retryType = retryType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/1d550403/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java
new file mode 100644
index 0000000..41b8db8
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ExponentialBackoffRetryConfiguration.java
@@ -0,0 +1,44 @@
+package org.apache.curator.x.rpc.configuration;
+
+import io.airlift.configuration.Config;
+import io.airlift.units.Duration;
+
+public class ExponentialBackoffRetryConfiguration
+{
+ private Duration baseSleepTime;
+ private int maxRetries;
+ private Duration maxSleep;
+
+ public Duration getBaseSleepTime()
+ {
+ return baseSleepTime;
+ }
+
+ @Config("curator.retry.exponential.base-sleep-time")
+ public void setBaseSleepTime(Duration baseSleepTime)
+ {
+ this.baseSleepTime = baseSleepTime;
+ }
+
+ public int getMaxRetries()
+ {
+ return maxRetries;
+ }
+
+ @Config("curator.retry.exponential.max-retries")
+ public void setMaxRetries(int maxRetries)
+ {
+ this.maxRetries = maxRetries;
+ }
+
+ public Duration getMaxSleep()
+ {
+ return maxSleep;
+ }
+
+ @Config("curator.retry.exponential.max-sleep")
+ public void setMaxSleep(Duration maxSleep)
+ {
+ this.maxSleep = maxSleep;
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/1d550403/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java
new file mode 100644
index 0000000..7e4761a
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/RetryType.java
@@ -0,0 +1,6 @@
+package org.apache.curator.x.rpc.configuration;
+
+public enum RetryType
+{
+ ExponentialBackoffRetry,
+}
[6/8] git commit: working on moving to Dropwizard's config and logging
Posted by ra...@apache.org.
working on moving to Dropwizard's config and logging
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/078d7bec
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/078d7bec
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/078d7bec
Branch: refs/heads/curator-rpc
Commit: 078d7becd84015f579cf4ac898c3de567e292efa
Parents: 59b78a9
Author: randgalt <ra...@apache.org>
Authored: Wed May 28 10:53:49 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed May 28 10:53:54 2014 -0500
----------------------------------------------------------------------
curator-x-rpc/pom.xml | 14 +++--
.../curator/x/rpc/CuratorProjectionServer.java | 10 ----
.../rpc/configuration/ConfigurationBuilder.java | 60 ++++++++++++++++++++
.../x/rpc/configuration/ConfigurationX.java | 54 ++++++++++++++++++
.../configuration/TestConfigurationBuilder.java | 46 +++++++++++++++
.../test/resources/configuration/logging.json | 19 +++++++
.../test/resources/configuration/simple.json | 7 +++
pom.xml | 14 +++--
8 files changed, 206 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/curator-x-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-rpc/pom.xml b/curator-x-rpc/pom.xml
index b0534c8..6aeaa94 100644
--- a/curator-x-rpc/pom.xml
+++ b/curator-x-rpc/pom.xml
@@ -33,16 +33,22 @@
<dependency>
<groupId>com.facebook.swift</groupId>
<artifactId>swift-service</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>io.airlift</groupId>
- <artifactId>log-manager</artifactId>
+ <groupId>io.dropwizard</groupId>
+ <artifactId>dropwizard-configuration</artifactId>
</dependency>
<dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-mapper-asl</artifactId>
+ <groupId>io.dropwizard</groupId>
+ <artifactId>dropwizard-logging</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index bf92cde..40e543f 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -28,8 +28,6 @@ import com.google.common.collect.Maps;
import io.airlift.configuration.ConfigurationFactory;
import io.airlift.configuration.ConfigurationLoader;
import io.airlift.configuration.ConfigurationMetadata;
-import io.airlift.log.Logging;
-import io.airlift.log.LoggingConfiguration;
import io.airlift.units.DataSize;
import io.airlift.units.Duration;
import org.apache.curator.x.rpc.configuration.Configuration;
@@ -79,7 +77,6 @@ public class CuratorProjectionServer
}
ConfigurationFactory configurationFactory = new ConfigurationFactory(options);
- initLogging(configurationFactory);
Configuration configuration = configurationFactory.build(Configuration.class);
@@ -98,12 +95,6 @@ public class CuratorProjectionServer
Runtime.getRuntime().addShutdownHook(hook);
}
- private static void initLogging(ConfigurationFactory configurationFactory) throws IOException
- {
- LoggingConfiguration loggingConfiguration = configurationFactory.build(LoggingConfiguration.class);
- Logging.initialize().configure(loggingConfiguration);
- }
-
public CuratorProjectionServer(Configuration configuration)
{
this.configuration = configuration;
@@ -149,7 +140,6 @@ public class CuratorProjectionServer
Map<String, String> valuesMap = Maps.newTreeMap();
buildMetaData(valuesMap, ConfigurationMetadata.getConfigurationMetadata(Configuration.class));
- buildMetaData(valuesMap, ConfigurationMetadata.getConfigurationMetadata(LoggingConfiguration.class));
System.out.println("Values:");
for ( String s : valuesMap.values() )
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
new file mode 100644
index 0000000..f8f5760
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
@@ -0,0 +1,60 @@
+package org.apache.curator.x.rpc.configuration;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.jsontype.SubtypeResolver;
+import com.fasterxml.jackson.databind.jsontype.impl.StdSubtypeResolver;
+import io.dropwizard.configuration.ConfigurationException;
+import io.dropwizard.configuration.ConfigurationFactory;
+import io.dropwizard.configuration.ConfigurationFactoryFactory;
+import io.dropwizard.configuration.ConfigurationSourceProvider;
+import io.dropwizard.configuration.DefaultConfigurationFactoryFactory;
+import io.dropwizard.jackson.AnnotationSensitivePropertyNamingStrategy;
+import io.dropwizard.jackson.LogbackModule;
+import io.dropwizard.logging.ConsoleAppenderFactory;
+import io.dropwizard.logging.FileAppenderFactory;
+import io.dropwizard.logging.LoggingFactory;
+import io.dropwizard.logging.SyslogAppenderFactory;
+import javax.validation.Validation;
+import javax.validation.ValidatorFactory;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+
+class ConfigurationBuilder
+{
+ private final String configurationSource;
+
+ static
+ {
+ LoggingFactory.bootstrap();
+ }
+
+ ConfigurationBuilder(String configurationSource)
+ {
+ this.configurationSource = configurationSource;
+ }
+
+ ConfigurationX build() throws IOException, ConfigurationException
+ {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new LogbackModule());
+ mapper.setPropertyNamingStrategy(new AnnotationSensitivePropertyNamingStrategy());
+ SubtypeResolver subtypeResolver = new StdSubtypeResolver();
+ subtypeResolver.registerSubtypes(ConsoleAppenderFactory.class, FileAppenderFactory.class, SyslogAppenderFactory.class);
+ mapper.setSubtypeResolver(subtypeResolver);
+
+ ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
+ ConfigurationFactoryFactory<ConfigurationX> factoryFactory = new DefaultConfigurationFactoryFactory<ConfigurationX>();
+ ConfigurationFactory<ConfigurationX> configurationFactory = factoryFactory.create(ConfigurationX.class, validatorFactory.getValidator(), mapper, "curator");
+ ConfigurationSourceProvider provider = new ConfigurationSourceProvider()
+ {
+ @Override
+ public InputStream open(String path) throws IOException
+ {
+ return new ByteArrayInputStream(configurationSource.getBytes(Charset.defaultCharset()));
+ }
+ };
+ return configurationFactory.build(provider, "");
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java
new file mode 100644
index 0000000..e9be8e1
--- /dev/null
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationX.java
@@ -0,0 +1,54 @@
+package org.apache.curator.x.rpc.configuration;
+
+import com.facebook.swift.service.ThriftServerConfig;
+import io.airlift.units.Duration;
+import io.dropwizard.logging.LoggingFactory;
+import java.util.concurrent.TimeUnit;
+
+public class ConfigurationX
+{
+ private ThriftServerConfig thrift = new ThriftServerConfig();
+ private LoggingFactory logging = new LoggingFactory();
+ private Duration projectionExpiration = new Duration(3, TimeUnit.MINUTES);
+ private Duration pingTime = new Duration(5, TimeUnit.SECONDS);
+
+ public LoggingFactory getLogging()
+ {
+ return logging;
+ }
+
+ public void setLogging(LoggingFactory logging)
+ {
+ this.logging = logging;
+ }
+
+ public ThriftServerConfig getThrift()
+ {
+ return thrift;
+ }
+
+ public void setThrift(ThriftServerConfig thrift)
+ {
+ this.thrift = thrift;
+ }
+
+ public Duration getProjectionExpiration()
+ {
+ return projectionExpiration;
+ }
+
+ public void setProjectionExpiration(Duration projectionExpiration)
+ {
+ this.projectionExpiration = projectionExpiration;
+ }
+
+ public Duration getPingTime()
+ {
+ return pingTime;
+ }
+
+ public void setPingTime(Duration pingTime)
+ {
+ this.pingTime = pingTime;
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java b/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java
new file mode 100644
index 0000000..caf5af3
--- /dev/null
+++ b/curator-x-rpc/src/test/java/org/apache/curator/x/rpc/configuration/TestConfigurationBuilder.java
@@ -0,0 +1,46 @@
+package org.apache.curator.x.rpc.configuration;
+
+import ch.qos.logback.classic.Level;
+import com.google.common.collect.Sets;
+import com.google.common.io.Resources;
+import io.airlift.units.Duration;
+import io.dropwizard.logging.AppenderFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+public class TestConfigurationBuilder
+{
+ @Test
+ public void testSimple() throws Exception
+ {
+ ConfigurationX configuration = loadTestConfiguration("configuration/simple.json");
+ Assert.assertEquals(configuration.getThrift().getPort(), 1234);
+ Assert.assertEquals(configuration.getPingTime(), new Duration(10, TimeUnit.SECONDS));
+ }
+
+ @Test
+ public void testLogging() throws Exception
+ {
+ ConfigurationX configuration = loadTestConfiguration("configuration/logging.json");
+ Assert.assertEquals(configuration.getLogging().getLevel(), Level.INFO);
+ Assert.assertEquals(configuration.getLogging().getAppenders().size(), 2);
+
+ Set<String> types = Sets.newHashSet();
+ for ( AppenderFactory appenderFactory : configuration.getLogging().getAppenders() )
+ {
+ types.add(appenderFactory.getClass().getSimpleName());
+ }
+ Assert.assertEquals(types, Sets.newHashSet("FileAppenderFactory", "ConsoleAppenderFactory"));
+ }
+
+ private ConfigurationX loadTestConfiguration(String name) throws Exception
+ {
+ URL resource = Resources.getResource(name);
+ String source = Resources.toString(resource, Charset.defaultCharset());
+ return new ConfigurationBuilder(source).build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/curator-x-rpc/src/test/resources/configuration/logging.json
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/test/resources/configuration/logging.json b/curator-x-rpc/src/test/resources/configuration/logging.json
new file mode 100644
index 0000000..970ef20
--- /dev/null
+++ b/curator-x-rpc/src/test/resources/configuration/logging.json
@@ -0,0 +1,19 @@
+{
+ "logging": {
+ "level": "INFO",
+
+ "appenders": [
+ {
+ "type": "file",
+ "currentLogFilename": "logs/foo.log",
+ "archivedLogFilenamePattern": "logs/foo-%d.log.gz",
+ "archivedFileCount": 10,
+ "timeZone": "UTC"
+ },
+
+ {
+ "type": "console"
+ }
+ ]
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/curator-x-rpc/src/test/resources/configuration/simple.json
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/test/resources/configuration/simple.json b/curator-x-rpc/src/test/resources/configuration/simple.json
new file mode 100644
index 0000000..ccb2925
--- /dev/null
+++ b/curator-x-rpc/src/test/resources/configuration/simple.json
@@ -0,0 +1,7 @@
+{
+ "thrift": {
+ "port": 1234
+ },
+
+ "pingTime": "10s"
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/curator/blob/078d7bec/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c028839..137155b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
<guava-version>16.0.1</guava-version>
<testng-version>6.8.8</testng-version>
<swift-version>0.12.0</swift-version>
- <airlift-version>0.88</airlift-version>
+ <dropwizard-version>0.7.0</dropwizard-version>
<!-- OSGi Properties -->
<osgi.export.package />
@@ -433,9 +433,15 @@
</dependency>
<dependency>
- <groupId>io.airlift</groupId>
- <artifactId>log-manager</artifactId>
- <version>${airlift-version}</version>
+ <groupId>io.dropwizard</groupId>
+ <artifactId>dropwizard-configuration</artifactId>
+ <version>${dropwizard-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>io.dropwizard</groupId>
+ <artifactId>dropwizard-logging</artifactId>
+ <version>${dropwizard-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
[3/8] git commit: more work on CLI - added airlift logging and
logging config
Posted by ra...@apache.org.
more work on CLI - added airlift logging and logging config
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/8fd1bc86
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/8fd1bc86
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/8fd1bc86
Branch: refs/heads/curator-rpc
Commit: 8fd1bc86fbe3e4bf9f09a496677fd3d57ea53cee
Parents: 1927c33
Author: randgalt <ra...@apache.org>
Authored: Tue May 27 18:13:43 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Tue May 27 18:13:43 2014 -0500
----------------------------------------------------------------------
.../java/org/apache/curator/x/rpc/CuratorProjectionServer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/8fd1bc86/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index e2de3f4..6083339 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -142,7 +142,7 @@ public class CuratorProjectionServer
System.out.println("Arguments:");
System.out.println("\t<none> show this help");
System.out.println("\t<path> path to a properties configuration file");
- System.out.println("\t<field value> ... list of values that would be in the JSON configuration file");
+ System.out.println("\t<field value> ... list of properties of the form: \"field1 value1 ... fieldN valueN\"");
System.out.println();
Map<String, String> valuesMap = Maps.newTreeMap();
[8/8] git commit: wip
Posted by ra...@apache.org.
wip
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/598ad996
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/598ad996
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/598ad996
Branch: refs/heads/curator-rpc
Commit: 598ad996c4ab4aa77862088e3376039762e7e155
Parents: 49d0294
Author: randgalt <ra...@apache.org>
Authored: Wed May 28 12:33:41 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed May 28 12:33:41 2014 -0500
----------------------------------------------------------------------
.../java/org/apache/curator/x/rpc/CuratorProjectionServer.java | 3 +++
.../apache/curator/x/rpc/configuration/ConfigurationBuilder.java | 3 +++
2 files changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/598ad996/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index 2769e98..2dcb99e 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -18,6 +18,7 @@
*/
package org.apache.curator.x.rpc;
+import com.codahale.metrics.MetricRegistry;
import com.facebook.swift.codec.ThriftCodecManager;
import com.facebook.swift.service.ThriftEventHandler;
import com.facebook.swift.service.ThriftServer;
@@ -104,6 +105,7 @@ public class CuratorProjectionServer
{
Preconditions.checkState(state.compareAndSet(State.LATENT, State.STARTED), "Already started");
+ configuration.getLogging().configure(new MetricRegistry(), "curator-rpc");
server.start();
log.info("Server listening on port: " + configuration.getThrift().getPort());
@@ -117,6 +119,7 @@ public class CuratorProjectionServer
rpcManager.close();
server.close();
+ configuration.getLogging().stop();
log.info("Stopped");
}
http://git-wip-us.apache.org/repos/asf/curator/blob/598ad996/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
index 4d9fd60..56b4485 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/configuration/ConfigurationBuilder.java
@@ -13,6 +13,8 @@ import io.dropwizard.logging.ConsoleAppenderFactory;
import io.dropwizard.logging.FileAppenderFactory;
import io.dropwizard.logging.LoggingFactory;
import io.dropwizard.logging.SyslogAppenderFactory;
+import org.jboss.netty.logging.InternalLoggerFactory;
+import org.jboss.netty.logging.Slf4JLoggerFactory;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import java.io.ByteArrayInputStream;
@@ -27,6 +29,7 @@ public class ConfigurationBuilder
static
{
LoggingFactory.bootstrap();
+ InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory());
}
public ConfigurationBuilder(String configurationSource)
[2/8] git commit: more work on CLI - added airlift logging and
logging config
Posted by ra...@apache.org.
more work on CLI - added airlift logging and logging config
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/1927c332
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/1927c332
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/1927c332
Branch: refs/heads/curator-rpc
Commit: 1927c332bb3a137b285edc25e48798ac4fa68c7e
Parents: e11db6d
Author: randgalt <ra...@apache.org>
Authored: Tue May 27 18:11:03 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Tue May 27 18:11:03 2014 -0500
----------------------------------------------------------------------
curator-x-rpc/pom.xml | 33 ++++++++++++++++
.../curator/x/rpc/CuratorProjectionServer.java | 41 +++++++++++++++-----
pom.xml | 11 ++++++
3 files changed, 76 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/1927c332/curator-x-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-rpc/pom.xml b/curator-x-rpc/pom.xml
index cf2442c..f27a383 100644
--- a/curator-x-rpc/pom.xml
+++ b/curator-x-rpc/pom.xml
@@ -14,6 +14,20 @@
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
@@ -22,8 +36,27 @@
</dependency>
<dependency>
+ <groupId>io.airlift</groupId>
+ <artifactId>log-manager</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-test</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
<scope>test</scope>
</dependency>
</dependencies>
http://git-wip-us.apache.org/repos/asf/curator/blob/1927c332/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
index d91a52d..e2de3f4 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/CuratorProjectionServer.java
@@ -28,6 +28,8 @@ import com.google.common.collect.Maps;
import io.airlift.configuration.ConfigurationFactory;
import io.airlift.configuration.ConfigurationLoader;
import io.airlift.configuration.ConfigurationMetadata;
+import io.airlift.log.Logging;
+import io.airlift.log.LoggingConfiguration;
import io.airlift.units.DataSize;
import io.airlift.units.Duration;
import org.apache.curator.x.rpc.idl.event.EventService;
@@ -76,6 +78,8 @@ public class CuratorProjectionServer
}
ConfigurationFactory configurationFactory = new ConfigurationFactory(options);
+ initLogging(configurationFactory);
+
Configuration configuration = configurationFactory.build(Configuration.class);
final CuratorProjectionServer server = new CuratorProjectionServer(configuration);
@@ -93,6 +97,12 @@ public class CuratorProjectionServer
Runtime.getRuntime().addShutdownHook(hook);
}
+ private static void initLogging(ConfigurationFactory configurationFactory) throws IOException
+ {
+ LoggingConfiguration loggingConfiguration = configurationFactory.build(LoggingConfiguration.class);
+ Logging.initialize().configure(loggingConfiguration);
+ }
+
public CuratorProjectionServer(Configuration configuration)
{
this.configuration = configuration;
@@ -135,17 +145,15 @@ public class CuratorProjectionServer
System.out.println("\t<field value> ... list of values that would be in the JSON configuration file");
System.out.println();
+ Map<String, String> valuesMap = Maps.newTreeMap();
+
+ buildMetaData(valuesMap, ConfigurationMetadata.getConfigurationMetadata(Configuration.class));
+ buildMetaData(valuesMap, ConfigurationMetadata.getConfigurationMetadata(LoggingConfiguration.class));
+
System.out.println("Values:");
- ConfigurationMetadata<Configuration> metadata = ConfigurationMetadata.getConfigurationMetadata(Configuration.class);
- for ( ConfigurationMetadata.AttributeMetadata attributeMetadata : metadata.getAttributes().values() )
+ for ( String s : valuesMap.values() )
{
- ConfigurationMetadata.InjectionPointMetaData injectionPoint = attributeMetadata.getInjectionPoint();
- System.out.println("\t" + injectionPoint.getProperty() + ": " + attributeMetadata.getGetter().getReturnType().getSimpleName());
- if ( attributeMetadata.getDescription() != null )
- {
- System.out.println("\t\t" + attributeMetadata.getDescription());
- }
- System.out.println();
+ System.out.println(s);
}
System.out.println("Special Types Examples:");
@@ -160,6 +168,21 @@ public class CuratorProjectionServer
System.out.println();
}
+ private static void buildMetaData(Map<String, String> valuesMap, ConfigurationMetadata<?> metadata)
+ {
+ for ( ConfigurationMetadata.AttributeMetadata attributeMetadata : metadata.getAttributes().values() )
+ {
+ int index = 0;
+ ConfigurationMetadata.InjectionPointMetaData injectionPoint = attributeMetadata.getInjectionPoint();
+ valuesMap.put(injectionPoint.getProperty() + index++, "\t" + injectionPoint.getProperty() + ": " + attributeMetadata.getGetter().getReturnType().getSimpleName());
+ if ( attributeMetadata.getDescription() != null )
+ {
+ valuesMap.put(injectionPoint.getProperty() + index++, "\t\t" + attributeMetadata.getDescription());
+ }
+ valuesMap.put(injectionPoint.getProperty() + index, "");
+ }
+ }
+
private static Map<String, String> buildOptions(String[] args) throws IOException
{
Map<String, String> options = Maps.newHashMap();
http://git-wip-us.apache.org/repos/asf/curator/blob/1927c332/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 51f050a..c028839 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,6 +85,7 @@
<guava-version>16.0.1</guava-version>
<testng-version>6.8.8</testng-version>
<swift-version>0.12.0</swift-version>
+ <airlift-version>0.88</airlift-version>
<!-- OSGi Properties -->
<osgi.export.package />
@@ -400,6 +401,10 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -426,6 +431,12 @@
<artifactId>swift-service</artifactId>
<version>${swift-version}</version>
</dependency>
+
+ <dependency>
+ <groupId>io.airlift</groupId>
+ <artifactId>log-manager</artifactId>
+ <version>${airlift-version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>