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 2014/08/20 04:17:12 UTC
git commit: SQOOP-1451: Sqoop2: From/To: Add API for supported
directions
Repository: sqoop
Updated Branches:
refs/heads/SQOOP-1367 2b214cdd2 -> 71279480e
SQOOP-1451: Sqoop2: From/To: Add API for supported directions
(Abraham Elmahrek 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/71279480
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/71279480
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/71279480
Branch: refs/heads/SQOOP-1367
Commit: 71279480e8dd45f751572ce4e34e6365a2bdae82
Parents: 2b214cd
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Tue Aug 19 19:16:41 2014 -0700
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Tue Aug 19 19:16:41 2014 -0700
----------------------------------------------------------------------
.../sqoop/connector/ConnectorHandler.java | 24 +++++++++++++++-----
.../apache/sqoop/framework/FrameworkError.java | 2 ++
.../org/apache/sqoop/framework/JobManager.java | 11 +++++++++
.../apache/sqoop/handler/JobRequestHandler.java | 10 ++++++++
.../sqoop/connector/spi/SqoopConnector.java | 12 ++++++++++
5 files changed, 53 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/71279480/core/src/main/java/org/apache/sqoop/connector/ConnectorHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/connector/ConnectorHandler.java b/core/src/main/java/org/apache/sqoop/connector/ConnectorHandler.java
index d17ebef..8782209 100644
--- a/core/src/main/java/org/apache/sqoop/connector/ConnectorHandler.java
+++ b/core/src/main/java/org/apache/sqoop/connector/ConnectorHandler.java
@@ -19,6 +19,7 @@ package org.apache.sqoop.connector;
import java.io.IOException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Properties;
import org.apache.log4j.Logger;
@@ -29,6 +30,7 @@ import org.apache.sqoop.model.MConnectionForms;
import org.apache.sqoop.model.MConnector;
import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.connector.spi.SqoopConnector;
+import org.apache.sqoop.model.MForm;
import org.apache.sqoop.model.MJobForms;
public final class ConnectorHandler {
@@ -91,13 +93,23 @@ public final class ConnectorHandler {
}
// Initialize Metadata
- MJobForms fromJobForms = new MJobForms(FormUtils.toForms(
- connector.getJobConfigurationClass(Direction.FROM)));
+ MJobForms fromJobForms = null;
+ MJobForms toJobForms = null;
+ if (connector.getSupportedDirections().contains(Direction.FROM)) {
+ fromJobForms = new MJobForms(FormUtils.toForms(
+ connector.getJobConfigurationClass(Direction.FROM)));
+ } else {
+ fromJobForms = new MJobForms(new ArrayList<MForm>());
+ }
+
+ if (connector.getSupportedDirections().contains(Direction.TO)) {
+ toJobForms = new MJobForms(FormUtils.toForms(
+ connector.getJobConfigurationClass(Direction.TO)));
+ } else {
+ toJobForms = new MJobForms(new ArrayList<MForm>());
+ }
+
MConnectionForms connectionForms = new MConnectionForms(
- FormUtils.toForms(connector.getConnectionConfigurationClass()));
- MJobForms toJobForms = new MJobForms(FormUtils.toForms(
- connector.getJobConfigurationClass(Direction.TO)));
- MConnectionForms toConnectionForms = new MConnectionForms(
FormUtils.toForms(connector.getConnectionConfigurationClass()));
String connectorVersion = connector.getVersion();
http://git-wip-us.apache.org/repos/asf/sqoop/blob/71279480/core/src/main/java/org/apache/sqoop/framework/FrameworkError.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/framework/FrameworkError.java b/core/src/main/java/org/apache/sqoop/framework/FrameworkError.java
index f7a6b67..8ecb197 100644
--- a/core/src/main/java/org/apache/sqoop/framework/FrameworkError.java
+++ b/core/src/main/java/org/apache/sqoop/framework/FrameworkError.java
@@ -46,6 +46,8 @@ public enum FrameworkError implements ErrorCode {
FRAMEWORK_0010("Connection for this job has been disabled. Cannot submit this job."),
+ FRAMEWORK_0011("Connector does not support direction. Cannot submit this job."),
+
;
private final String message;
http://git-wip-us.apache.org/repos/asf/sqoop/blob/71279480/core/src/main/java/org/apache/sqoop/framework/JobManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/framework/JobManager.java b/core/src/main/java/org/apache/sqoop/framework/JobManager.java
index 48360ea..5571928 100644
--- a/core/src/main/java/org/apache/sqoop/framework/JobManager.java
+++ b/core/src/main/java/org/apache/sqoop/framework/JobManager.java
@@ -298,6 +298,17 @@ public class JobManager implements Reconfigurable {
SqoopConnector toConnector =
ConnectorManager.getInstance().getConnector(job.getConnectorId(Direction.TO));
+ // Make sure that connectors support the directions they will be used from.
+ if (!fromConnector.getSupportedDirections().contains(Direction.FROM)) {
+ throw new SqoopException(FrameworkError.FRAMEWORK_0011,
+ "Connector: " + fromConnector.getClass().getCanonicalName());
+ }
+
+ if (!toConnector.getSupportedDirections().contains(Direction.TO)) {
+ throw new SqoopException(FrameworkError.FRAMEWORK_0011,
+ "Connector: " + toConnector.getClass().getCanonicalName());
+ }
+
// Transform forms to fromConnector specific classes
Object fromConnectorConnection = ClassUtils.instantiate(
fromConnector.getConnectionConfigurationClass());
http://git-wip-us.apache.org/repos/asf/sqoop/blob/71279480/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 6f2df93..fba5b1c 100644
--- a/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
@@ -186,6 +186,16 @@ public class JobRequestHandler implements RequestHandler {
SqoopConnector toConnector =
ConnectorManager.getInstance().getConnector(job.getConnectorId(Direction.TO));
+ if (!fromConnector.getSupportedDirections().contains(Direction.FROM)) {
+ throw new SqoopException(ServerError.SERVER_0004, "Connector " + fromConnector.getClass().getCanonicalName()
+ + " does not support FROM direction.");
+ }
+
+ if (!toConnector.getSupportedDirections().contains(Direction.TO)) {
+ throw new SqoopException(ServerError.SERVER_0004, "Connector " + toConnector.getClass().getCanonicalName()
+ + " does not support TO direction.");
+ }
+
// Get validator objects
Validator fromConnectorValidator = fromConnector.getValidator();
Validator frameworkValidator = FrameworkManager.getInstance().getValidator();
http://git-wip-us.apache.org/repos/asf/sqoop/blob/71279480/spi/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java b/spi/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
index 2112bf7..2774e8b 100644
--- a/spi/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
+++ b/spi/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.connector.spi;
+import java.util.Arrays;
+import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
@@ -46,6 +48,16 @@ public abstract class SqoopConnector {
public abstract ResourceBundle getBundle(Locale locale);
/**
+ * @return The supported directions
+ */
+ public List<Direction> getSupportedDirections() {
+ return Arrays.asList(new Direction[]{
+ Direction.FROM,
+ Direction.TO
+ });
+ }
+
+ /**
* @return Get connection configuration class
*/
public abstract Class getConnectionConfigurationClass();