You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2013/06/06 00:03:47 UTC

git commit: SQOOP-973: Sqoop2: Merge host, port and app to single server URL in Sqoop shell

Updated Branches:
  refs/heads/sqoop2 8122d4ca9 -> 20082c57d


SQOOP-973: Sqoop2: Merge host, port and app to single server URL in Sqoop shell

(Mengwei Ding via Jarek Jarcec Cecho)


Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/20082c57
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/20082c57
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/20082c57

Branch: refs/heads/sqoop2
Commit: 20082c57d2533951c6f315c608c7b3df8616150b
Parents: 8122d4c
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Wed Jun 5 15:02:46 2013 -0700
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Wed Jun 5 15:02:46 2013 -0700

----------------------------------------------------------------------
 .../org/apache/sqoop/client/core/Constants.java    |    6 ++
 .../sqoop/client/shell/SetServerFunction.java      |   31 +++++++---
 .../sqoop/client/shell/ShellEnvironment.java       |   47 ++++++++++++++-
 .../src/main/resources/client-resource.properties  |    2 +
 docs/src/site/sphinx/CommandLineClient.rst         |    8 +++
 5 files changed, 83 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/20082c57/client/src/main/java/org/apache/sqoop/client/core/Constants.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/sqoop/client/core/Constants.java b/client/src/main/java/org/apache/sqoop/client/core/Constants.java
index 866f3b8..056fcc8 100644
--- a/client/src/main/java/org/apache/sqoop/client/core/Constants.java
+++ b/client/src/main/java/org/apache/sqoop/client/core/Constants.java
@@ -45,6 +45,7 @@ public class Constants {
   public static final String OPT_HOST = "host";
   public static final String OPT_PORT = "port";
   public static final String OPT_WEBAPP = "webapp";
+  public static final String OPT_URL = "url";
   public static final String OPT_SERVER = "server";
   public static final String OPT_CLIENT = "client";
   public static final String OPT_PROTOCOL = "protocol";
@@ -61,6 +62,7 @@ public class Constants {
   public static final char OPT_HOST_CHAR = 'h';
   public static final char OPT_PORT_CHAR = 'p';
   public static final char OPT_WEBAPP_CHAR = 'w';
+  public static final char OPT_URL_CHAR = 'u';
   public static final char OPT_SERVER_CHAR = 's';
   public static final char OPT_CLIENT_CHAR = 'c';
   public static final char OPT_PROTOCOL_CHAR = 'p';
@@ -216,10 +218,14 @@ public class Constants {
       "set.port_description";
   public static final String RES_WEBAPP_DESCRIPTION =
       "set.webapp_description";
+  public static final String RES_URL_DESCRIPTION =
+      "set.url_description";
   public static final String RES_SET_SERVER_USAGE =
       "set.server_usage";
   public static final String RES_SET_SERVER_SUCCESSFUL =
       "set.server_successful";
+  public static final String RES_SET_SERVER_IGNORED =
+      "set.server_ignored";
 
   public static final String RES_SHOW_USAGE =
       "show.usage";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/20082c57/client/src/main/java/org/apache/sqoop/client/shell/SetServerFunction.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/sqoop/client/shell/SetServerFunction.java b/client/src/main/java/org/apache/sqoop/client/shell/SetServerFunction.java
index 1c85592..41fc17a 100644
--- a/client/src/main/java/org/apache/sqoop/client/shell/SetServerFunction.java
+++ b/client/src/main/java/org/apache/sqoop/client/shell/SetServerFunction.java
@@ -39,6 +39,10 @@ public class SetServerFunction extends SqoopFunction {
         .withDescription(resourceString(Constants.RES_WEBAPP_DESCRIPTION))
         .withLongOpt(Constants.OPT_WEBAPP)
         .create(Constants.OPT_WEBAPP_CHAR));
+    this.addOption(OptionBuilder.hasArg().withArgName(Constants.OPT_URL)
+        .withDescription(resourceString(Constants.RES_URL_DESCRIPTION))
+        .withLongOpt(Constants.OPT_URL)
+        .create(Constants.OPT_URL_CHAR));
   }
 
   public Object executeFunction(CommandLine line) {
@@ -47,14 +51,25 @@ public class SetServerFunction extends SqoopFunction {
       return null;
     }
 
-    if (line.hasOption(Constants.OPT_HOST)) {
-      setServerHost(line.getOptionValue(Constants.OPT_HOST));
-    }
-    if (line.hasOption(Constants.OPT_PORT)) {
-      setServerPort(line.getOptionValue(Constants.OPT_PORT));
-    }
-    if (line.hasOption(Constants.OPT_WEBAPP)) {
-      setServerWebapp(line.getOptionValue(Constants.OPT_WEBAPP));
+    if (line.hasOption(Constants.OPT_URL)) {
+      setServerUrl(line.getOptionValue(Constants.OPT_URL));
+
+      // ignore --host, --port and --webapp option
+      if (line.hasOption(Constants.OPT_HOST)
+       || line.hasOption(Constants.OPT_PORT)
+       || line.hasOption(Constants.OPT_WEBAPP)) {
+        printlnResource(Constants.RES_SET_SERVER_IGNORED);
+      }
+    } else {
+      if (line.hasOption(Constants.OPT_HOST)) {
+          setServerHost(line.getOptionValue(Constants.OPT_HOST));
+      }
+      if (line.hasOption(Constants.OPT_PORT)) {
+        setServerPort(line.getOptionValue(Constants.OPT_PORT));
+      }
+      if (line.hasOption(Constants.OPT_WEBAPP)) {
+        setServerWebapp(line.getOptionValue(Constants.OPT_WEBAPP));
+      }
     }
 
     printlnResource(Constants.RES_SET_SERVER_SUCCESSFUL);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/20082c57/client/src/main/java/org/apache/sqoop/client/shell/ShellEnvironment.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/sqoop/client/shell/ShellEnvironment.java b/client/src/main/java/org/apache/sqoop/client/shell/ShellEnvironment.java
index 79cd8b2..41a8cd3 100644
--- a/client/src/main/java/org/apache/sqoop/client/shell/ShellEnvironment.java
+++ b/client/src/main/java/org/apache/sqoop/client/shell/ShellEnvironment.java
@@ -18,9 +18,13 @@
 package org.apache.sqoop.client.shell;
 
 import org.apache.sqoop.client.SqoopClient;
+import org.apache.sqoop.client.core.ClientError;
 import org.apache.sqoop.client.core.Constants;
+import org.apache.sqoop.common.SqoopException;
 import org.codehaus.groovy.tools.shell.IO;
 
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.text.MessageFormat;
 import java.util.Locale;
 import java.util.ResourceBundle;
@@ -37,9 +41,13 @@ public final class ShellEnvironment {
 
   private static final long DEFAULT_POLL_TIMEOUT = 10000;
 
-  private static String serverHost = getEnv(Constants.ENV_HOST, "localhost");
-  private static String serverPort = getEnv(Constants.ENV_PORT, "12000");
-  private static String serverWebapp = getEnv(Constants.ENV_WEBAPP, "sqoop");
+  private static String DEFAULT_SERVER_HOST = getEnv(Constants.ENV_HOST, "localhost");
+  private static String DEFAULT_SERVER_PORT = getEnv(Constants.ENV_PORT, "12000");
+  private static String DEFAULT_SERVER_WEBAPP = getEnv(Constants.ENV_WEBAPP, "sqoop");
+
+  private static String serverHost = DEFAULT_SERVER_HOST;
+  private static String serverPort = DEFAULT_SERVER_PORT;
+  private static String serverWebapp = DEFAULT_SERVER_WEBAPP;
 
   private static boolean verbose = false;
   private static boolean interactive = false;
@@ -93,6 +101,38 @@ public final class ShellEnvironment {
     return serverWebapp;
   }
 
+  public static void setServerUrl(String ustr){
+    try {
+      URL url = new URL(ustr);
+
+      String host = url.getHost();
+      if (host.length() > 0) {
+        serverHost = host;
+      }
+
+      int port = url.getPort();
+      if (port != -1) {
+        serverPort = Integer.toString(port);
+      } else {
+        // use default port number
+        serverPort = DEFAULT_SERVER_PORT;
+      }
+
+      String webapp = url.getFile();
+      if (webapp.length() > 1) {
+        // get rid of the first slash
+        serverWebapp = webapp.substring(1);
+      } else {
+        // use default webapp name
+        serverWebapp = DEFAULT_SERVER_WEBAPP;
+      }
+
+      client.setServerUrl(getServerUrl());
+    } catch (MalformedURLException ex) {
+      throw new SqoopException(ClientError.CLIENT_0003, ex);
+    }
+  }
+
   public static String getServerUrl() {
     return "http://" + serverHost + ":" + serverPort + "/" + serverWebapp + "/";
   }
@@ -165,3 +205,4 @@ public final class ShellEnvironment {
     io.out.printf(format, args);
   }
 }
+

http://git-wip-us.apache.org/repos/asf/sqoop/blob/20082c57/client/src/main/resources/client-resource.properties
----------------------------------------------------------------------
diff --git a/client/src/main/resources/client-resource.properties b/client/src/main/resources/client-resource.properties
index bbc8313..b159757 100644
--- a/client/src/main/resources/client-resource.properties
+++ b/client/src/main/resources/client-resource.properties
@@ -112,8 +112,10 @@ set.unknown_opt_ignored = Unknown option {0}. Ignoring...
 set.host_description = Host name to invoke server resources
 set.port_description = Port number to invoke server resources
 set.webapp_description = Web app to invoke server resources
+set.url_description = Url to invoke server resources
 set.server_usage = Usage: set server
 set.server_successful = Server is set successfully
+set.server_ignored = --host, --port or --webapp option is ignored, because --url option is given.
 
 
 show.usage = Usage: show {0}

http://git-wip-us.apache.org/repos/asf/sqoop/blob/20082c57/docs/src/site/sphinx/CommandLineClient.rst
----------------------------------------------------------------------
diff --git a/docs/src/site/sphinx/CommandLineClient.rst b/docs/src/site/sphinx/CommandLineClient.rst
index 721a6c0..073d547 100644
--- a/docs/src/site/sphinx/CommandLineClient.rst
+++ b/docs/src/site/sphinx/CommandLineClient.rst
@@ -94,11 +94,19 @@ Configure connection to Sqoop server - host port and web application name. Avail
 +-----------------------+---------------+--------------------------------------------------+
 | ``-w``, ``--webapp``  | sqoop         | Tomcat's web application name                    |
 +-----------------------+---------------+--------------------------------------------------+
+| ``-u``, ``--url``     |               | Sqoop Server in url format                       |
++-----------------------+---------------+--------------------------------------------------+
 
 Example: ::
 
   set server --host sqoop2.company.net --port 80 --webapp sqoop
 
+or ::
+
+  set server --url http://sqoop2.company.net:80/sqoop
+
+Note: When ``--url`` option is given, ``--host``, ``--port`` or ``--webapp`` option will be ignored.
+
 Set Option Function
 ~~~~~~~~~~~~~~~~~~~