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
