Repository: incubator-reef
Updated Branches:
  refs/heads/master 8a3213ba6 -> 193657ecb


[REEF-703] Made NameLookupClient injectable and deprecate public constructors

This patch:
  * Adds a Tang-injectable constructor for NameLookupClient
  * Marks the constructor "private" to emphasize that it
    should be called only by Tang
  * Deprecates all non-injectable constructors

JIRA:
  [REEF-703](https://issues.apache.org/jira/browse/REEF-703)

Pull Request:
  This closes #504


Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/193657ec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/193657ec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/193657ec

Branch: refs/heads/master
Commit: 193657ecb9f7259fa0e8053ce0b74124558eb350
Parents: 8a3213b
Author: [email protected] <[email protected]>
Authored: Tue Sep 22 15:18:14 2015 +0200
Committer: Markus Weimer <[email protected]>
Committed: Sun Sep 27 16:00:01 2015 -0700

----------------------------------------------------------------------
 .../reef/io/network/naming/NameClient.java      |  1 +
 .../io/network/naming/NameLookupClient.java     | 69 ++++++++++++++++++++
 2 files changed, 70 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/193657ec/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
 
b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
index 343bb5a..cc9f9f3 100644
--- 
a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
+++ 
b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
@@ -65,6 +65,7 @@ public final class NameClient implements NameResolver {
      * @param tpFactory transport factory
      */
   @Inject
+  @SuppressWarnings("deprecation")
   private NameClient(
       @Parameter(NameResolverNameServerAddr.class) final String serverAddr,
       @Parameter(NameResolverNameServerPort.class) final int serverPort,

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/193657ec/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
 
b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
index eaa37ca..48e7121 100644
--- 
a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
+++ 
b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
@@ -18,12 +18,20 @@
  */
 package org.apache.reef.io.network.naming;
 
+import com.google.inject.Inject;
 import org.apache.reef.io.naming.NameAssignment;
 import org.apache.reef.io.naming.NamingLookup;
 import org.apache.reef.io.network.naming.exception.NamingException;
+import org.apache.reef.io.network.naming.parameters.NameResolverCacheTimeout;
+import 
org.apache.reef.io.network.naming.parameters.NameResolverIdentifierFactory;
+import org.apache.reef.io.network.naming.parameters.NameResolverNameServerAddr;
+import org.apache.reef.io.network.naming.parameters.NameResolverNameServerPort;
+import org.apache.reef.io.network.naming.parameters.NameResolverRetryCount;
+import org.apache.reef.io.network.naming.parameters.NameResolverRetryTimeout;
 import org.apache.reef.io.network.naming.serialization.NamingLookupRequest;
 import org.apache.reef.io.network.naming.serialization.NamingLookupResponse;
 import org.apache.reef.io.network.naming.serialization.NamingMessage;
+import org.apache.reef.tang.annotations.Parameter;
 import org.apache.reef.util.cache.Cache;
 import org.apache.reef.wake.EventHandler;
 import org.apache.reef.wake.Identifier;
@@ -72,7 +80,10 @@ public class NameLookupClient implements Stage, NamingLookup 
{
    * @param serverPort a server port number
    * @param factory    an identifier factory
    * @param cache      an cache
+   *
+   * @deprecated in 0.13. Have an instance injected instead or use the 
NameResolver interface.
    */
+  @Deprecated
   public NameLookupClient(final String serverAddr,
                           final int serverPort,
                           final IdentifierFactory factory,
@@ -91,7 +102,10 @@ public class NameLookupClient implements Stage, 
NamingLookup {
    * @param timeout    request timeout in ms
    * @param factory    an identifier factory
    * @param cache      an cache
+   *
+   * @deprecated in 0.13. Have an instance injected instead or use the 
NameResolver interface.
    */
+  @Deprecated
   public NameLookupClient(final String serverAddr,
                           final int serverPort,
                           final long timeout,
@@ -113,7 +127,10 @@ public class NameLookupClient implements Stage, 
NamingLookup {
    * @param factory    an identifier factory
    * @param cache      an cache
    * @param tpFactory  a transport factory
+   *
+   * @deprecated in 0.13. Have an instance injected instead or use the 
NameResolver interface.
    */
+  @Deprecated
   public NameLookupClient(final String serverAddr,
                           final int serverPort,
                           final long timeout,
@@ -138,6 +155,58 @@ public class NameLookupClient implements Stage, 
NamingLookup {
     this.retryCount = retryCount;
     this.retryTimeout = retryTimeout;
   }
+
+  /**
+    * Constructs a naming lookup client.
+    *
+    * @param serverAddr a server address
+    * @param serverPort a server port number
+    * @param timeout    request timeout in ms
+    * @param factory    an identifier factory
+    * @param tpFactory  a transport factory
+    */
+  @Inject
+  private NameLookupClient(
+            @Parameter(NameResolverNameServerAddr.class) final String 
serverAddr,
+            @Parameter(NameResolverNameServerPort.class) final int serverPort,
+            @Parameter(NameResolverCacheTimeout.class) final long timeout,
+            @Parameter(NameResolverIdentifierFactory.class) final 
IdentifierFactory factory,
+            @Parameter(NameResolverRetryCount.class) final int retryCount,
+            @Parameter(NameResolverRetryTimeout.class) final int retryTimeout,
+            final LocalAddressProvider localAddressProvider,
+            final TransportFactory tpFactory) {
+
+    this.serverSocketAddr = new InetSocketAddress(serverAddr, serverPort);
+    this.timeout = timeout;
+    this.cache = new NameCache(timeout);
+    this.codec = NamingCodecFactory.createLookupCodec(factory);
+    this.replyQueue = new LinkedBlockingQueue<>();
+
+    this.transport = 
tpFactory.newInstance(localAddressProvider.getLocalAddress(), 0,
+            new SyncStage<>(new NamingLookupClientHandler(
+                    new NamingLookupResponseHandler(this.replyQueue), 
this.codec)),
+            null, retryCount, retryTimeout);
+
+    this.retryCount = retryCount;
+    this.retryTimeout = retryTimeout;
+  }
+
+  /**
+   * Constructs a naming lookup client.
+   *
+   * @param serverAddr a server address
+   * @param serverPort a server port number
+   * @param timeout request timeout in ms
+   * @param factory an identifier factory
+   * @param retryCount number of retries
+   * @param retryTimeout a timeout for a retry attempt, msec
+   * @param replyQueue a queue of naming lookup responses
+   * @param transport transport for sending and receiving data
+   * @param cache a name cache
+   *
+   * @deprecated in 0.13. Have an instance injected instead or use the 
NameResolver interface.
+   */
+  @Deprecated
   NameLookupClient(final String serverAddr, final int serverPort, final long 
timeout,
                    final IdentifierFactory factory, final int retryCount, 
final int retryTimeout,
                    final BlockingQueue<NamingLookupResponse> replyQueue, final 
Transport transport,

Reply via email to