diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionFactory.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionFactory.java index 6070615..0fbd0f9 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionFactory.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionFactory.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; +import java.lang.reflect.Constructor; import java.util.concurrent.ExecutorService; import org.apache.hadoop.hbase.classification.InterfaceAudience; @@ -179,7 +180,29 @@ public class ConnectionFactory { user = provider.getCurrent(); } - return ConnectionManager.createConnection(conf, pool, user); + return createConnection(conf, pool, user); } + static Connection createConnection(final Configuration conf, final boolean managed, + final ExecutorService pool, final User user) + throws IOException { + String className = conf.get(HConnection.HBASE_CLIENT_CONNECTION_IMPL, + ConnectionManager.HConnectionImplementation.class.getName()); + Class clazz = null; + try { + clazz = Class.forName(className); + } catch (ClassNotFoundException e) { + throw new IOException(e); + } + try { + // Default HCM#HCI is not accessible; make it so before invoking. + Constructor constructor = + clazz.getDeclaredConstructor(Configuration.class, + boolean.class, ExecutorService.class, User.class); + constructor.setAccessible(true); + return (Connection) constructor.newInstance(conf, managed, pool, user); + } catch (Exception e) { + throw new IOException(e); + } + } } diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java index 80e22b9..bea9ea3 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java @@ -21,7 +21,6 @@ package org.apache.hadoop.hbase.client; import java.io.Closeable; import java.io.IOException; import java.io.InterruptedIOException; -import java.lang.reflect.Constructor; import java.lang.reflect.UndeclaredThrowableException; import java.util.ArrayList; import java.util.Date; @@ -408,24 +407,7 @@ class ConnectionManager { static ClusterConnection createConnection(final Configuration conf, final boolean managed, final ExecutorService pool, final User user) throws IOException { - String className = conf.get(HConnection.HBASE_CLIENT_CONNECTION_IMPL, - HConnectionImplementation.class.getName()); - Class clazz = null; - try { - clazz = Class.forName(className); - } catch (ClassNotFoundException e) { - throw new IOException(e); - } - try { - // Default HCM#HCI is not accessible; make it so before invoking. - Constructor constructor = - clazz.getDeclaredConstructor(Configuration.class, - boolean.class, ExecutorService.class, User.class); - constructor.setAccessible(true); - return (ClusterConnection) constructor.newInstance(conf, managed, pool, user); - } catch (Exception e) { - throw new IOException(e); - } + return (ClusterConnection) ConnectionFactory.createConnection(conf, managed, pool, user); } /**