You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by GitBox <gi...@apache.org> on 2017/12/13 21:46:25 UTC

[GitHub] sijie closed pull request #835: Allow subclasses of AbstractConfiguration to use fluent style

sijie closed pull request #835: Allow subclasses of AbstractConfiguration to use fluent style
URL: https://github.com/apache/bookkeeper/pull/835
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
index 69e113993..d0f8a64fc 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
@@ -314,7 +314,7 @@ public static Builder forConfig(final ClientConfiguration conf) {
      */
     public BookKeeper(String servers) throws IOException, InterruptedException,
         BKException {
-        this((ClientConfiguration) (new ClientConfiguration().setZkServers(servers)));
+        this(new ClientConfiguration().setZkServers(servers));
     }
 
     /**
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
index 09fda4815..0d6321f80 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
@@ -136,7 +136,7 @@
      *             BookKeeper client.
      */
     public BookKeeperAdmin(String zkServers) throws IOException, InterruptedException, BKException {
-        this((ClientConfiguration) (new ClientConfiguration().setZkServers(zkServers)));
+        this(new ClientConfiguration().setZkServers(zkServers));
     }
 
     /**
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
index 9f8c503b6..b197b1ecf 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
@@ -35,7 +35,8 @@
 /**
  * Abstract configuration.
  */
-public abstract class AbstractConfiguration extends CompositeConfiguration {
+public abstract class AbstractConfiguration<T extends AbstractConfiguration>
+    extends CompositeConfiguration {
 
     public static final String READ_SYSTEM_PROPERTIES_PROPERTY = "org.apache.bookkeeper.conf.readsystemproperties";
 
@@ -158,9 +159,9 @@ public String getZkServers() {
      * @param zkServers
      *          ZooKeeper servers to connect
      */
-    public AbstractConfiguration setZkServers(String zkServers) {
+    public T setZkServers(String zkServers) {
         setProperty(ZK_SERVERS, zkServers);
-        return this;
+        return getThis();
     }
 
     /**
@@ -179,9 +180,9 @@ public int getZkTimeout() {
      *          ZooKeeper server timeout
      * @return server configuration
      */
-    public AbstractConfiguration setZkTimeout(int zkTimeout) {
+    public T setZkTimeout(int zkTimeout) {
         setProperty(ZK_TIMEOUT, Integer.toString(zkTimeout));
-        return this;
+        return getThis();
     }
 
     /**
@@ -380,10 +381,10 @@ public Feature getFeature(String configProperty, Feature defaultValue) {
      *          the client authentication provider factory class name
      * @return client configuration
      */
-    public AbstractConfiguration setClientAuthProviderFactoryClass(
+    public T setClientAuthProviderFactoryClass(
             String factoryClass) {
         setProperty(CLIENT_AUTH_PROVIDER_FACTORY_CLASS, factoryClass);
-        return this;
+        return getThis();
     }
 
     /**
@@ -414,9 +415,9 @@ public int getNettyMaxFrameSizeBytes() {
      *          the max size in bytes
      * @return server configuration
      */
-    public AbstractConfiguration setNettyMaxFrameSizeBytes(int maxSize) {
+    public T setNettyMaxFrameSizeBytes(int maxSize) {
         setProperty(NETTY_MAX_FRAME_SIZE, String.valueOf(maxSize));
-        return this;
+        return getThis();
     }
 
     /**
@@ -435,9 +436,9 @@ public String getTLSProviderFactoryClass() {
      *            the client security provider factory class name
      * @return client configuration
      */
-    public AbstractConfiguration setTLSProviderFactoryClass(String factoryClass) {
+    public T setTLSProviderFactoryClass(String factoryClass) {
         setProperty(TLS_PROVIDER_FACTORY_CLASS, factoryClass);
-        return this;
+        return getThis();
     }
 
     /**
@@ -456,9 +457,9 @@ public String getTLSProvider() {
      *            TLS Provider type
      * @return Client Configuration
      */
-    public AbstractConfiguration setTLSProvider(String provider) {
+    public T setTLSProvider(String provider) {
         setProperty(TLS_PROVIDER, provider);
-        return this;
+        return getThis();
     }
 
     /**
@@ -478,9 +479,9 @@ public boolean getTLSClientAuthentication() {
      *            Whether to send a certificate or not
      * @return client configuration
      */
-    public AbstractConfiguration setTLSClientAuthentication(boolean enabled) {
+    public T setTLSClientAuthentication(boolean enabled) {
         setProperty(TLS_CLIENT_AUTHENTICATION, enabled);
-        return this;
+        return getThis();
     }
 
     /**
@@ -491,10 +492,10 @@ public AbstractConfiguration setTLSClientAuthentication(boolean enabled) {
      *            comma separated list of enabled TLS cipher suites
      * @return current configuration
      */
-    public AbstractConfiguration setTLSEnabledCipherSuites(
+    public T setTLSEnabledCipherSuites(
             String list) {
         setProperty(TLS_ENABLED_CIPHER_SUITES, list);
-        return this;
+        return getThis();
     }
 
     /**
@@ -516,10 +517,10 @@ public String getTLSEnabledCipherSuites() {
      *            comma separated list of enabled TLS cipher suites
      * @return current configuration
      */
-    public AbstractConfiguration setTLSEnabledProtocols(
+    public T setTLSEnabledProtocols(
             String list) {
         setProperty(TLS_ENABLED_PROTOCOLS, list);
-        return this;
+        return getThis();
     }
 
     /**
@@ -532,4 +533,10 @@ public AbstractConfiguration setTLSEnabledProtocols(
     public String getTLSEnabledProtocols() {
         return getString(TLS_ENABLED_PROTOCOLS, null);
     }
+
+
+    /**
+     * Trickery to allow inheritance with fluent style.
+     */
+    protected abstract T getThis();
 }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java
index 93adc1fa1..257c36734 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java
@@ -39,7 +39,7 @@
 /**
  * Configuration settings for client side.
  */
-public class ClientConfiguration extends AbstractConfiguration {
+public class ClientConfiguration extends AbstractConfiguration<ClientConfiguration> {
 
     // Throttle value
     protected static final String THROTTLE = "throttle";
@@ -1669,4 +1669,9 @@ public ClientConfiguration setStoreSystemtimeAsLedgerCreationTime(boolean enable
     public boolean getStoreSystemtimeAsLedgerCreationTime() {
         return getBoolean(STORE_SYSTEMTIME_AS_LEDGER_CREATION_TIME, false);
     }
+
+    @Override
+    protected ClientConfiguration getThis() {
+        return this;
+    }
 }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java
index 19d5df10e..38eccbae3 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java
@@ -34,7 +34,7 @@
 /**
  * Configuration manages server-side settings.
  */
-public class ServerConfiguration extends AbstractConfiguration {
+public class ServerConfiguration extends AbstractConfiguration<ServerConfiguration> {
     // Entry Log Parameters
     protected static final String ENTRY_LOG_SIZE_LIMIT = "logSizeLimit";
     protected static final String ENTRY_LOG_FILE_PREALLOCATION_ENABLED = "entryLogFilePreallocationEnabled";
@@ -2497,4 +2497,8 @@ public void setRegistrationManagerClass(
                 DEFAULT_LOADER);
     }
 
+    @Override
+    protected ServerConfiguration getThis() {
+        return this;
+    }
 }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManagerFactory.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManagerFactory.java
index 91d83e79d..651076fdb 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManagerFactory.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManagerFactory.java
@@ -109,7 +109,7 @@ public abstract LedgerUnderreplicationManager newLedgerUnderreplicationManager()
      * @throws IOException
      */
     public static LedgerManagerFactory newLedgerManagerFactory(
-        final AbstractConfiguration conf, final ZooKeeper zk)
+        final AbstractConfiguration<?> conf, final ZooKeeper zk)
             throws IOException, KeeperException, InterruptedException {
         Class<? extends LedgerManagerFactory> factoryClass;
         try {
@@ -252,7 +252,7 @@ private static LedgerManagerFactory createNewLMFactory(
      * @param zk
      *            Zookeeper instance
      */
-    public void format(final AbstractConfiguration conf, final ZooKeeper zk)
+    public void format(final AbstractConfiguration<?> conf, final ZooKeeper zk)
             throws InterruptedException, KeeperException, IOException {
 
         Class<? extends LedgerManagerFactory> factoryClass;


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services