Repository: sqoop
Updated Branches:
  refs/heads/sqoop2 09f71be0a -> 4f0e28625


SQOOP-2680: Sqoop2: Remove the id from public interface for connection

(Colin Ma 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/4f0e2862
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/4f0e2862
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/4f0e2862

Branch: refs/heads/sqoop2
Commit: 4f0e28625acc171d7579590afa62d050f122c536
Parents: 09f71be
Author: Jarek Jarcec Cecho <[email protected]>
Authored: Tue Nov 17 09:08:35 2015 -0800
Committer: Jarek Jarcec Cecho <[email protected]>
Committed: Tue Nov 17 09:08:35 2015 -0800

----------------------------------------------------------------------
 .../sqoop/handler/ConnectorRequestHandler.java  |  8 ++--
 .../org/apache/sqoop/handler/HandlerUtils.java  | 49 +++++++-------------
 .../apache/sqoop/handler/JobRequestHandler.java |  4 +-
 .../sqoop/handler/LinkRequestHandler.java       | 14 ++----
 .../server/InvalidRESTCallsTest.java            |  6 +--
 5 files changed, 31 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/4f0e2862/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
----------------------------------------------------------------------
diff --git 
a/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java 
b/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
index ef898db..52abe72 100644
--- a/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
@@ -68,16 +68,16 @@ public class ConnectorRequestHandler implements 
RequestHandler {
     } else {
       // NOTE: we now support using unique name as well as the connector id
       // NOTE: connectorId is a fallback for older sqoop clients if any, since 
we want to primarily use unique conenctorNames
-      String cName = HandlerUtils.getConnectorNameFromIdentifier(cIdentifier);
+      MConnector mConnector = 
HandlerUtils.getConnectorFromConnectorName(cIdentifier);
 
       configParamBundles = new HashMap<>();
 
-      MConnector connector = 
ConnectorManager.getInstance().getConnectorConfigurable(cName);
+      MConnector connector = 
ConnectorManager.getInstance().getConnectorConfigurable(mConnector.getUniqueName());
       configParamBundles.put(connector.getPersistenceId(),
-          ConnectorManager.getInstance().getResourceBundle(cName, locale));
+          
ConnectorManager.getInstance().getResourceBundle(mConnector.getUniqueName(), 
locale));
 
       AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
-          ctx.getRequest().getRemoteAddr(), "get", "connector", 
String.valueOf(cIdentifier));
+          ctx.getRequest().getRemoteAddr(), "get", "connector", 
mConnector.getUniqueName());
 
       // Authorization check
       AuthorizationEngine.readConnector(ctx.getUserName(), 
connector.getUniqueName());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/4f0e2862/server/src/main/java/org/apache/sqoop/handler/HandlerUtils.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/sqoop/handler/HandlerUtils.java 
b/server/src/main/java/org/apache/sqoop/handler/HandlerUtils.java
index 864b0be..1eee2d2 100644
--- a/server/src/main/java/org/apache/sqoop/handler/HandlerUtils.java
+++ b/server/src/main/java/org/apache/sqoop/handler/HandlerUtils.java
@@ -57,46 +57,31 @@ public class HandlerUtils {
     return link;
   }
 
-  public static long getConnectorIdFromIdentifier(String identifier) {
-    long connectorId;
+  public static MConnector getConnectorFromConnectorName(String connectorName) 
{
     Repository repository = RepositoryManager.getInstance().getRepository();
-    MConnector connector = repository.findConnector(identifier);
-    if (connector != null) {
-      connectorId = connector.getPersistenceId();
-    } else {
+    MConnector connector = repository.findConnector(connectorName);
+    if (connector == null) {
+      // TODO: get the connector by id from public API should be dropped.
       try {
-        connectorId = Long.parseLong(identifier);
-      } catch (NumberFormatException ex) {
-        // this means name nor Id existed and we want to throw a user friendly
-        // message than a number format exception
-        throw new SqoopException(ServerError.SERVER_0005, "Invalid connector: 
" + identifier
-            + " requested");
+        connector = repository.findConnector(Long.parseLong(connectorName));
+      } catch (NumberFormatException nfe) {
+        // do nothing, connector should be null, and will thrown exception in 
the following.
       }
     }
-    return connectorId;
+    if (connector == null) {
+      throw new SqoopException(ServerError.SERVER_0006, "Connector: " + 
connectorName
+              + " doesn't exist");
+    }
+    return connector;
   }
 
-  public static String getConnectorNameFromIdentifier(String identifier) {
+  public static MConnector getConnectorFromConnectorId(Long connectorId) {
     Repository repository = RepositoryManager.getInstance().getRepository();
-    MConnector connector = repository.findConnector(identifier);
+    MConnector connector = repository.findConnector(connectorId);
     if (connector == null) {
-      long connectorId;
-      try {
-        connectorId = Long.parseLong(identifier);
-      } catch (NumberFormatException ex) {
-        // this means name nor Id existed and we want to throw a user friendly
-        // message than a number format exception
-        throw new SqoopException(ServerError.SERVER_0005, "Invalid connector: 
" + identifier
-            + " requested");
-      }
-
-      connector = repository.findConnector(connectorId);
-      if (connector == null) {
-        throw new SqoopException(ServerError.SERVER_0006, "Connector: " + 
identifier
-            + " doesn't exist");
-      }
+      throw new SqoopException(ServerError.SERVER_0006, "Connector id: " + 
connectorId
+              + " doesn't exist");
     }
-
-    return connector.getUniqueName();
+    return connector;
   }
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/4f0e2862/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
----------------------------------------------------------------------
diff --git 
a/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java 
b/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
index 2f6edc1..80f7681 100644
--- a/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
@@ -274,8 +274,8 @@ public class JobRequestHandler implements RequestHandler {
       connectorIdentifier = ctx.getParameterValue(CONNECTOR_NAME_QUERY_PARAM);
       AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
           ctx.getRequest().getRemoteAddr(), "get", "jobsByConnector", 
connectorIdentifier);
-      long connectorId = 
HandlerUtils.getConnectorIdFromIdentifier(connectorIdentifier);
-      List<MJob> jobList = repository.findJobsForConnector(connectorId);
+      MConnector mConnector = 
HandlerUtils.getConnectorFromConnectorName(connectorIdentifier);
+      List<MJob> jobList = 
repository.findJobsForConnector(mConnector.getPersistenceId());
 
       // Authorization check
       jobList = AuthorizationEngine.filterResource(ctx.getUserName(), 
MResource.TYPE.JOB, jobList);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/4f0e2862/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
----------------------------------------------------------------------
diff --git 
a/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java 
b/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
index f72f0eb..9e75258 100644
--- a/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
@@ -33,11 +33,7 @@ import org.apache.sqoop.json.JsonBean;
 import org.apache.sqoop.json.LinkBean;
 import org.apache.sqoop.json.LinksBean;
 import org.apache.sqoop.json.ValidationResultBean;
-import org.apache.sqoop.model.ConfigUtils;
-import org.apache.sqoop.model.MLink;
-import org.apache.sqoop.model.MLinkConfig;
-import org.apache.sqoop.model.MPersistableEntity;
-import org.apache.sqoop.model.MResource;
+import org.apache.sqoop.model.*;
 import org.apache.sqoop.repository.Repository;
 import org.apache.sqoop.repository.RepositoryManager;
 import org.apache.sqoop.security.authorization.AuthorizationEngine;
@@ -134,15 +130,15 @@ public class LinkRequestHandler implements RequestHandler 
{
     }
 
     MLink postedLink = links.get(0);
+    MConnector mConnector = 
HandlerUtils.getConnectorFromConnectorId(postedLink.getConnectorId());
 
     // Authorization check
     if (create) {
       AuthorizationEngine.createLink(ctx.getUserName(),
-          
HandlerUtils.getConnectorNameFromIdentifier(String.valueOf(postedLink.getConnectorId())));
+              mConnector.getUniqueName());
     } else {
-      AuthorizationEngine.updateLink(ctx.getUserName(),
-          
HandlerUtils.getConnectorNameFromIdentifier(String.valueOf(postedLink.getConnectorId())),
-          postedLink.getName());
+      AuthorizationEngine.updateLink(ctx.getUserName(), 
mConnector.getUniqueName(),
+              postedLink.getName());
     }
 
     MLinkConfig linkConfig = ConnectorManager.getInstance()

http://git-wip-us.apache.org/repos/asf/sqoop/blob/4f0e2862/test/src/test/java/org/apache/sqoop/integration/server/InvalidRESTCallsTest.java
----------------------------------------------------------------------
diff --git 
a/test/src/test/java/org/apache/sqoop/integration/server/InvalidRESTCallsTest.java
 
b/test/src/test/java/org/apache/sqoop/integration/server/InvalidRESTCallsTest.java
index d083d37..40d8c88 100644
--- 
a/test/src/test/java/org/apache/sqoop/integration/server/InvalidRESTCallsTest.java
+++ 
b/test/src/test/java/org/apache/sqoop/integration/server/InvalidRESTCallsTest.java
@@ -162,12 +162,12 @@ public class InvalidRESTCallsTest extends SqoopTestCase {
       void validate() throws Exception {
         assertResponseCode(200);
       }}),
-    new TestDescription("Get connector by ID", "v1/connector/1", "GET", null, 
new Validator() {
+    new TestDescription("Get connector by name", 
"v1/connector/generic-jdbc-connector", "GET", null, new Validator() {
       @Override
       void validate() throws Exception {
         assertResponseCode(200);
       }}),
-    new TestDescription("Get connector by name", 
"v1/connector/generic-jdbc-connector", "GET", null, new Validator() {
+    new TestDescription("Get connector by ID", "v1/connector/1", "GET", null, 
new Validator() {
       @Override
       void validate() throws Exception {
         assertResponseCode(200);
@@ -182,7 +182,7 @@ public class InvalidRESTCallsTest extends SqoopTestCase {
       @Override
       void validate() throws Exception {
         assertResponseCode(500);
-        assertServerException("org.apache.sqoop.server.common.ServerError", 
"SERVER_0005");
+        assertServerException("org.apache.sqoop.server.common.ServerError", 
"SERVER_0006");
       }}),
     new TestDescription("Invalid post request", "v1/connector", "POST", 
"Random data", new Validator() {
       @Override

Reply via email to