You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ab...@apache.org on 2015/01/05 23:22:12 UTC
sqoop git commit: SQOOP-1870: Sqoop2: Merge SPI and connector-sdk
packages
Repository: sqoop
Updated Branches:
refs/heads/sqoop2 1cf075fdf -> c7ef89dba
SQOOP-1870: Sqoop2: Merge SPI and connector-sdk packages
(Veena Basavaraj via Abraham Elmahrek)
Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/c7ef89db
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/c7ef89db
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/c7ef89db
Branch: refs/heads/sqoop2
Commit: c7ef89dba067b9cc21383fca129c4eb84a20eacc
Parents: 1cf075f
Author: Abraham Elmahrek <ab...@apache.org>
Authored: Mon Jan 5 10:47:10 2015 -0800
Committer: Abraham Elmahrek <ab...@apache.org>
Committed: Mon Jan 5 10:47:10 2015 -0800
----------------------------------------------------------------------
connector/connector-generic-jdbc/pom.xml | 4 -
connector/connector-hdfs/pom.xml | 5 -
connector/connector-kafka/pom.xml | 4 -
connector/connector-kite/pom.xml | 4 -
.../sqoop/configurable/ConfigurableError.java | 42 +++++++++
.../configurable/ConfigurableUpgradeUtil.java | 62 +++++++++++++
.../spi/ConnectorConfigurableUpgrader.java | 84 +++++++++++++++++
.../sqoop/connector/spi/SqoopConnector.java | 98 ++++++++++++++++++++
.../java/org/apache/sqoop/job/Constants.java | 44 +++++++++
.../org/apache/sqoop/job/etl/Destroyer.java | 39 ++++++++
.../org/apache/sqoop/job/etl/Extractor.java | 52 +++++++++++
.../java/org/apache/sqoop/job/etl/From.java | 58 ++++++++++++
.../org/apache/sqoop/job/etl/Initializer.java | 77 +++++++++++++++
.../java/org/apache/sqoop/job/etl/Loader.java | 48 ++++++++++
.../org/apache/sqoop/job/etl/Partition.java | 46 +++++++++
.../org/apache/sqoop/job/etl/Partitioner.java | 40 ++++++++
.../main/java/org/apache/sqoop/job/etl/To.java | 51 ++++++++++
.../org/apache/sqoop/job/etl/Transferable.java | 51 ++++++++++
core/pom.xml | 10 +-
pom.xml | 6 --
.../sqoop/configurable/ConfigurableError.java | 43 ---------
.../configurable/ConfigurableUpgradeUtil.java | 62 -------------
.../spi/ConnectorConfigurableUpgrader.java | 84 -----------------
.../sqoop/connector/spi/SqoopConnector.java | 98 --------------------
.../java/org/apache/sqoop/job/Constants.java | 44 ---------
.../org/apache/sqoop/job/etl/Destroyer.java | 39 --------
.../org/apache/sqoop/job/etl/Extractor.java | 52 -----------
.../java/org/apache/sqoop/job/etl/From.java | 58 ------------
.../org/apache/sqoop/job/etl/Initializer.java | 77 ---------------
.../java/org/apache/sqoop/job/etl/Loader.java | 48 ----------
.../org/apache/sqoop/job/etl/Partition.java | 46 ---------
.../org/apache/sqoop/job/etl/Partitioner.java | 40 --------
.../main/java/org/apache/sqoop/job/etl/To.java | 51 ----------
.../org/apache/sqoop/job/etl/Transferable.java | 51 ----------
34 files changed, 796 insertions(+), 822 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-generic-jdbc/pom.xml
----------------------------------------------------------------------
diff --git a/connector/connector-generic-jdbc/pom.xml b/connector/connector-generic-jdbc/pom.xml
index fc6cab4..a96b348 100644
--- a/connector/connector-generic-jdbc/pom.xml
+++ b/connector/connector-generic-jdbc/pom.xml
@@ -32,10 +32,6 @@ limitations under the License.
<name>Sqoop Generic JDBC Connector</name>
<dependencies>
- <dependency>
- <groupId>org.apache.sqoop</groupId>
- <artifactId>sqoop-spi</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.sqoop</groupId>
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/connector/connector-hdfs/pom.xml b/connector/connector-hdfs/pom.xml
index 8b1e11f..b06275a 100644
--- a/connector/connector-hdfs/pom.xml
+++ b/connector/connector-hdfs/pom.xml
@@ -39,11 +39,6 @@ limitations under the License.
<dependency>
<groupId>org.apache.sqoop</groupId>
- <artifactId>sqoop-spi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.sqoop</groupId>
<artifactId>connector-sdk</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-kafka/pom.xml
----------------------------------------------------------------------
diff --git a/connector/connector-kafka/pom.xml b/connector/connector-kafka/pom.xml
index e8fea9b..82e43b3 100644
--- a/connector/connector-kafka/pom.xml
+++ b/connector/connector-kafka/pom.xml
@@ -32,10 +32,6 @@ limitations under the License.
<dependencies>
<dependency>
<groupId>org.apache.sqoop</groupId>
- <artifactId>sqoop-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.sqoop</groupId>
<artifactId>connector-sdk</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-kite/pom.xml
----------------------------------------------------------------------
diff --git a/connector/connector-kite/pom.xml b/connector/connector-kite/pom.xml
index 10ed099..17821f9 100644
--- a/connector/connector-kite/pom.xml
+++ b/connector/connector-kite/pom.xml
@@ -35,10 +35,6 @@ limitations under the License.
<!-- Common modules -->
<dependency>
<groupId>org.apache.sqoop</groupId>
- <artifactId>sqoop-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.sqoop</groupId>
<artifactId>connector-sdk</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java
new file mode 100644
index 0000000..ee11846
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.configurable;
+
+import org.apache.sqoop.common.ErrorCode;
+
+public enum ConfigurableError implements ErrorCode {
+
+ /** An unknown error has occurred. */
+ CONFIGURABLE_0001("Link object upgrade called, but no upgrade routine provided for LINK config"),
+ CONFIGURABLE_0002("Job object upgrade called, but no upgrade routine provided for FROM job config"),
+ CONFIGURABLE_0003("Job object upgrade called, but no upgrade routine provided for TO job config"),
+ ;
+ private final String message;
+
+ private ConfigurableError(String message) {
+ this.message = message;
+ }
+
+ public String getCode() {
+ return name();
+ }
+
+ public String getMessage() {
+ return message;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java
new file mode 100644
index 0000000..715a61c
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.configurable;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.sqoop.common.SqoopException;
+import org.apache.sqoop.model.MConfig;
+import org.apache.sqoop.model.MInput;
+
+public class ConfigurableUpgradeUtil {
+
+ private static final Logger LOG = Logger.getLogger(ConfigurableUpgradeUtil.class);
+ /*
+ * For now, there is no real upgrade. So copy all data over,
+ * set the validation messages and error messages to be the same as for the
+ * inputs in the original one.
+ */
+ @SuppressWarnings("unchecked")
+ public static void doUpgrade(List<MConfig> original, List<MConfig> target) {
+ Map<String, MConfig> configMap = new HashMap<String, MConfig>();
+ for (MConfig config : original) {
+ configMap.put(config.getName(), config);
+ }
+ for (MConfig config : target) {
+ List<MInput<?>> inputs = config.getInputs();
+ MConfig originalConfig = configMap.get(config.getName());
+ if (originalConfig == null) {
+ LOG.warn("Config: '" + config.getName() + "' not present in old " +
+ "configurable. So it and its inputs will not be transferred by the upgrader.");
+ continue;
+ }
+ for (MInput input : inputs) {
+ try {
+ MInput originalInput = originalConfig.getInput(input.getName());
+ input.setValue(originalInput.getValue());
+ } catch (SqoopException ex) {
+ LOG.warn("Input: '" + input.getName() + "' not present in old " +
+ "configurable. So it will not be transferred by the upgrader.");
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java
new file mode 100644
index 0000000..b5e0c0d
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sqoop.connector.spi;
+
+import org.apache.sqoop.common.SqoopException;
+import org.apache.sqoop.configurable.ConfigurableError;
+import org.apache.sqoop.model.MFromConfig;
+import org.apache.sqoop.model.MLinkConfig;
+import org.apache.sqoop.model.MToConfig;
+
+/**
+ * Configurable represents an entity that can provide configurations for the
+ * support config types {@linkplain ConfigType}
+ * This api represents the interface that configurable such as the connector/driver
+ * will implement to upgrade both the config and its corresponding data across different
+ * versions
+ *
+ */
+public abstract class ConnectorConfigurableUpgrader {
+
+ /**
+ * Upgrade the original link config for the given config type and fill into the upgradeTarget. Note
+ * that any data already in {@code upgradeTarget} maybe overwritten.
+ * @param original - original config as in the repository
+ * @param upgradeTarget - the instance that will be filled in with the
+ * upgraded config
+ */
+ public void upgradeLinkConfig(MLinkConfig original, MLinkConfig upgradeTarget) {
+ // The reasoning for throwing an exception by default is as follows.
+ // Sqoop calls the upgrade apis for every connector if and only if the
+ // corresponding link object that the config is associated with exists in the sqoop
+ // repository. In unexpected scenarios, if a link object is created in the
+ // sqoop repository without a corresponding upgrade routine for
+ // the link config, then this exception will be thrown to indicate a
+ // unexpected code path. In normal circumstances this
+ // scenario of having a link object for a connector without link config is
+ // very unlikely to happen. A likely scenario is that a connector will not have a link config and hence
+ // no link object will be created and thus this method will not be invoked.
+ throw new SqoopException(ConfigurableError.CONFIGURABLE_0001);
+
+ }
+
+ /**
+ * Upgrade the original FROM job config for the given config type and fill into the upgradeTarget. Note
+ * that any data already in {@code upgradeTarget} maybe overwritten.
+ * @param original - original config as in the repository
+ * @param upgradeTarget - the instance that will be filled in with the
+ * upgraded config
+ */
+
+ public void upgradeFromJobConfig(MFromConfig original, MFromConfig upgradeTarget) {
+ // see above for the reasoning behind the exception
+ throw new SqoopException(ConfigurableError.CONFIGURABLE_0002);
+ }
+ /**
+ * Upgrade the original TO job config for the given config type and fill into the upgradeTarget. Note
+ * that any data already in {@code upgradeTarget} maybe overwritten.
+ * @param original - original config as in the repository
+ * @param upgradeTarget - the instance that will be filled in with the
+ * upgraded config
+ */
+ public void upgradeToJobConfig(MToConfig original, MToConfig upgradeTarget) {
+ // see above for the reasoning behind the exception
+ throw new SqoopException(ConfigurableError.CONFIGURABLE_0003);
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
new file mode 100644
index 0000000..ff6392e
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
@@ -0,0 +1,98 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.connector.spi;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import org.apache.sqoop.common.Direction;
+import org.apache.sqoop.connector.idf.CSVIntermediateDataFormat;
+import org.apache.sqoop.connector.idf.IntermediateDataFormat;
+import org.apache.sqoop.job.etl.From;
+import org.apache.sqoop.job.etl.To;
+
+/**
+ * Service provider interface for Sqoop Connectors.
+ */
+public abstract class SqoopConnector {
+
+ /**
+ * Retrieve connector version.
+ *
+ * @return Version encoded as a string
+ */
+ public abstract String getVersion();
+
+ /**
+ * @param locale
+ * @return the resource bundle associated with the given locale.
+ */
+ 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 link configuration group class
+ */
+ @SuppressWarnings("rawtypes")
+ public abstract Class getLinkConfigurationClass();
+
+ /**
+ * @return Get job configuration group class per direction type or null if not supported
+ */
+ @SuppressWarnings("rawtypes")
+ public abstract Class getJobConfigurationClass(Direction direction);
+
+ /**
+ * @return an <tt>From</tt> that provides classes for performing import.
+ */
+ public abstract From getFrom();
+
+ /**
+ * @return an <tt>To</tt> that provides classes for performing export.n
+ */
+ public abstract To getTo();
+
+ /**
+ * Returns an {@linkplain ConnectorConfigurableUpgrader} object that can upgrade the
+ * configs related to the link and job
+ * @return RespositoryUpgrader object
+ */
+ public abstract ConnectorConfigurableUpgrader getConfigurableUpgrader();
+
+ /**
+ * Returns the {@linkplain IntermediateDataFormat} this connector
+ * can return natively in. This will support retrieving the data as text
+ * and an array of objects. This should never return null.
+ *
+ * @return {@linkplain IntermediateDataFormat} object
+ */
+ public Class<? extends IntermediateDataFormat<?>> getIntermediateDataFormat() {
+ return CSVIntermediateDataFormat.class;
+ }
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/Constants.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/Constants.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/Constants.java
new file mode 100644
index 0000000..90935cf
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/Constants.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job;
+
+public class Constants {
+
+ /**
+ * All job related configuration is prefixed with this:
+ * <tt>org.apache.sqoop.job.</tt>
+ */
+ public static final String PREFIX_CONFIG = "org.apache.sqoop.job.";
+
+ public static final String JOB_ETL_NUMBER_PARTITIONS = PREFIX_CONFIG
+ + "etl.number.partitions";
+
+ public static final String JOB_ETL_FIELD_NAMES = PREFIX_CONFIG
+ + "etl.field.names";
+
+ public static final String JOB_ETL_OUTPUT_DIRECTORY = PREFIX_CONFIG
+ + "etl.output.directory";
+
+ public static final String JOB_ETL_INPUT_DIRECTORY = PREFIX_CONFIG
+ + "etl.input.directory";
+
+ protected Constants() {
+ // Disable explicit object creation
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Destroyer.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Destroyer.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Destroyer.java
new file mode 100644
index 0000000..8486154
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Destroyer.java
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+/**
+ * This allows connector to define work to complete execution, for example,
+ * resource cleaning.
+ */
+public abstract class Destroyer<LinkConfiguration, JobConfiguration> {
+
+ /**
+ * Callback to clean up after job execution
+ *
+ * @param context Destroyer context
+ * @param linkConfiguration link configuration object
+ * @param jobConfiguration job configuration object for the FROM and TO
+ * In case of the FROM destroyer this will represent the FROM job configuration
+ * In case of the TO destroyer this will represent the TO job configuration
+ */
+ public abstract void destroy(DestroyerContext context,
+ LinkConfiguration linkConfiguration,
+ JobConfiguration jobConfiguration);
+
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Extractor.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Extractor.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Extractor.java
new file mode 100644
index 0000000..85e91ef
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Extractor.java
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+/**
+ * This allows connector to extract data from a source system
+ * based on each partition.
+ */
+public abstract class Extractor<LinkConfiguration, FromJobConfiguration, SqoopPartition> {
+
+ /**
+ * Extract data from source and pass them into the Sqoop.
+ *
+ * @param context Extractor context object
+ * @param linkConfiguration link configuration object
+ * @param jobConfiguration FROM job configuration object
+ * @param partition Partition that this extracter should work on
+ */
+ public abstract void extract(ExtractorContext context,
+ LinkConfiguration linkConfiguration,
+ FromJobConfiguration jobConfiguration,
+ SqoopPartition partition);
+
+ /**
+ * Return the number of rows read by the last call to
+ * {@linkplain Extractor#extract(org.apache.sqoop.job.etl.ExtractorContext, java.lang.Object, java.lang.Object, Partition) }
+ * method. This method returns only the number of rows read in the last call,
+ * and not a cumulative total of the number of rows read by this Extractor
+ * since its creation. If no calls were made to the run method, this method's
+ * behavior is undefined.
+ *
+ * @return the number of rows read by the last call to
+ * {@linkplain Extractor#extract(org.apache.sqoop.job.etl.ExtractorContext, java.lang.Object, java.lang.Object, Partition) }
+ */
+ public abstract long getRowsRead();
+
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/From.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/From.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/From.java
new file mode 100644
index 0000000..3dd8fb9
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/From.java
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+/**
+ * This specifies classes that perform connector-defined steps
+ * within import execution:
+ * Initializer
+ * -> Partitioner
+ * -> Extractor
+ * -> (Sqoop-defined steps)
+ * -> Destroyer
+ */
+public class From extends Transferable {
+
+ private Class<? extends Partitioner> partitioner;
+ private Class<? extends Extractor> extractor;
+
+ public From(Class<? extends Initializer> initializer,
+ Class<? extends Partitioner> partitioner,
+ Class<? extends Extractor> extractor,
+ Class<? extends Destroyer> destroyer) {
+ super(initializer, destroyer);
+ this.partitioner = partitioner;
+ this.extractor = extractor;
+ }
+
+ public Class<? extends Partitioner> getPartitioner() {
+ return partitioner;
+ }
+
+ public Class<? extends Extractor> getExtractor() {
+ return extractor;
+ }
+
+ @Override
+ public String toString() {
+ return "From{" + super.toString() +
+ ", partitioner=" + partitioner.getName() +
+ ", extractor=" + extractor.getName() +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Initializer.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Initializer.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Initializer.java
new file mode 100644
index 0000000..7dd156e
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Initializer.java
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.sqoop.schema.NullSchema;
+import org.apache.sqoop.schema.Schema;
+
+/**
+ * This allows connector to define initialization work for execution,
+ * for example, context configuration.
+ */
+public abstract class Initializer<LinkConfiguration, JobConfiguration> {
+
+ /**
+ * Initialize new submission based on given configuration properties. Any
+ * needed temporary values might be saved to context object and they will be
+ * promoted to all other part of the workflow automatically.
+ *
+ * @param context Initializer context object
+ * @param linkConfiguration link configuration object
+ * @param jobConfiguration job configuration object for the FROM and TO
+ * In case of the FROM initializer this will represent the FROM job configuration
+ * In case of the TO initializer this will represent the TO job configuration
+ */
+ public abstract void initialize(InitializerContext context, LinkConfiguration linkConfiguration,
+ JobConfiguration jobConfiguration);
+
+ /**
+ * Return list of all jars that this particular connector needs to operate on
+ * following job. This method will be called after running initialize method.
+ * @param context Initializer context object
+ * @param linkConfiguration link configuration object
+ * @param jobConfiguration job configuration object for the FROM and TO
+ * In case of the FROM initializer this will represent the FROM job configuration
+ * In case of the TO initializer this will represent the TO job configuration
+ * @return
+ */
+ public Set<String> getJars(InitializerContext context, LinkConfiguration linkConfiguration,
+ JobConfiguration jobConfiguration) {
+ return new HashSet<String>();
+ }
+
+ /**
+ * Return schema associated with the connector for FROM and TO
+ * By default we assume a null schema. Override the method if there a custom schema to provide either for FROM or TO
+ * @param context Initializer context object
+ * @param linkConfiguration link configuration object
+ * @param jobConfiguration job configuration object for the FROM and TO
+ * In case of the FROM initializer this will represent the FROM job configuration
+ * In case of the TO initializer this will represent the TO job configuration
+ * @return
+ */
+
+ public Schema getSchema(InitializerContext context, LinkConfiguration linkConfiguration,
+ JobConfiguration jobConfiguration) {
+ return NullSchema.getInstance();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Loader.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Loader.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Loader.java
new file mode 100644
index 0000000..e47b244
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Loader.java
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+/**
+ * This allows connector to load data into a target system.
+ */
+public abstract class Loader<LinkConfiguration, ToJobConfiguration> {
+
+ /**
+ * Load data to target.
+ *
+ * @param context Loader context object
+ * @param linkConfiguration link configuration object
+ * @param jobConfiguration TO job configuration object
+ * @throws Exception
+ */
+ public abstract void load(LoaderContext context, LinkConfiguration linkConfiguration,
+ ToJobConfiguration jobConfiguration) throws Exception;
+
+ /**
+ * Return the number of rows witten by the last call to
+ * {@linkplain Loader#load(org.apache.sqoop.job.etl.LoaderContext, java.lang.Object) }
+ * method. This method returns only the number of rows written in the last call,
+ * and not a cumulative total of the number of rows written by this Loader
+ * since its creation.
+ *
+ * @return the number of rows written by the last call to
+ * {@linkplain Loader#load(org.apache.sqoop.job.etl.LoaderContext, java.lang.Object) }
+ */
+ public abstract long getRowsWritten();
+
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partition.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partition.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partition.java
new file mode 100644
index 0000000..db07844
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partition.java
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+/**
+ * A part of the input data partitioned by the Partitioner.
+ */
+public abstract class Partition {
+
+ /**
+ * Deserialize the fields of this partition from input.
+ */
+ public abstract void readFields(DataInput in) throws IOException;
+
+ /**
+ * Serialize the fields of this partition to output.
+ */
+ public abstract void write(DataOutput out) throws IOException;
+
+ /**
+ * Each partition must be easily serializable to human readable form so that
+ * it can be logged for debugging purpose.
+ *
+ * @return Human readable representation
+ */
+ public abstract String toString();
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partitioner.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partitioner.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partitioner.java
new file mode 100644
index 0000000..3636130
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Partitioner.java
@@ -0,0 +1,40 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+import java.util.List;
+
+/**
+ * This allows connector to define how input data from the FROM source can be partitioned.
+ * The number of data partitions also determines the degree of parallelism.
+ */
+public abstract class Partitioner<LinkConfiguration, FromJobConfiguration> {
+
+ /**
+ * Partition input data into partitions.
+ *
+ * Each partition will be then processed in separate extractor.
+ *
+ * @param context Partitioner context object
+ * @param linkConfiguration link configuration object
+ * @param jobConfiguration job configuration object
+ * @return
+ */
+ public abstract List<Partition> getPartitions(PartitionerContext context,
+ LinkConfiguration linkConfiguration, FromJobConfiguration fromJobConfiguration);
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/To.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/To.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/To.java
new file mode 100644
index 0000000..64ba225
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/To.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+/**
+ * This specifies classes that perform connector-defined steps
+ * within export execution:
+ * Initializer
+ * -> (Sqoop-defined steps)
+ * -> Loader
+ * -> Destroyer
+ */
+public class To extends Transferable {
+
+ private Class<? extends Loader> loader;
+
+ public To(
+ Class<? extends Initializer> initializer,
+ Class<? extends Loader> loader,
+ Class<? extends Destroyer> destroyer
+ ) {
+ super(initializer, destroyer);
+ this.loader = loader;
+ }
+
+ public Class<? extends Loader> getLoader() {
+ return loader;
+ }
+
+ @Override
+ public String toString() {
+ return "To {" + super.toString() +
+ ", loader=" + loader +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Transferable.java
----------------------------------------------------------------------
diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Transferable.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Transferable.java
new file mode 100644
index 0000000..dfe1d5e
--- /dev/null
+++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/job/etl/Transferable.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sqoop.job.etl;
+
+/**
+ * This entity encapsulates the workflow for data transfer via the
+ * {@link SqoopConnector}.It basically acts as an adapter between the data-source
+ * imported from or exported to.
+ */
+public abstract class Transferable {
+
+ private Class<? extends Initializer> initializer;
+ private Class<? extends Destroyer> destroyer;
+
+ public Transferable(
+ Class<? extends Initializer> initializer,
+ Class<? extends Destroyer> destroyer
+ ) {
+ this.initializer = initializer;
+ this.destroyer = destroyer;
+ }
+
+ public Class<? extends Destroyer> getDestroyer() {
+ return destroyer;
+ }
+
+ public Class<? extends Initializer> getInitializer() {
+ return initializer;
+ }
+
+ @Override
+ public String toString() {
+ return "initializer=" + initializer.getName() +
+ ", destroyer=" + destroyer.getName();
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 2b6e436..b6e9557 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -40,11 +40,6 @@ limitations under the License.
<dependency>
<groupId>org.apache.sqoop</groupId>
- <artifactId>sqoop-spi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.sqoop</groupId>
<artifactId>sqoop-common</artifactId>
</dependency>
@@ -58,7 +53,10 @@ limitations under the License.
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
-
+ <dependency>
+ <groupId>org.apache.sqoop</groupId>
+ <artifactId>connector-sdk</artifactId>
+ </dependency>
</dependencies>
<build>
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index fc65b9d..2381566 100644
--- a/pom.xml
+++ b/pom.xml
@@ -319,11 +319,6 @@ limitations under the License.
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.sqoop</groupId>
- <artifactId>sqoop-spi</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.apache.sqoop.repository</groupId>
<artifactId>sqoop-repository-common</artifactId>
<version>${project.version}</version>
@@ -604,7 +599,6 @@ limitations under the License.
<modules>
<module>common</module>
<module>common-test</module>
- <module>spi</module>
<module>core</module>
<module>repository</module>
<module>server</module>
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java b/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java
deleted file mode 100644
index 83ed4a5..0000000
--- a/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableError.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.configurable;
-
-import org.apache.sqoop.common.ErrorCode;
-
-public enum ConfigurableError implements ErrorCode {
-
- /** An unknown error has occurred. */
- CONFIGURABLE_0001("Link object upgrade called, but no upgrade routine provided for LINK config"),
- CONFIGURABLE_0002("Job object upgrade called, but no upgrade routine provided for FROM job config"),
- CONFIGURABLE_0003("Job object upgrade called, but no upgrade routine provided for TO job config"),
- ;
- private final String message;
-
- private ConfigurableError(String message) {
- this.message = message;
- }
-
- public String getCode() {
- return name();
- }
-
- public String getMessage() {
- return message;
- }
-}
-
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java b/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java
deleted file mode 100644
index 715a61c..0000000
--- a/spi/src/main/java/org/apache/sqoop/configurable/ConfigurableUpgradeUtil.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.configurable;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.apache.sqoop.common.SqoopException;
-import org.apache.sqoop.model.MConfig;
-import org.apache.sqoop.model.MInput;
-
-public class ConfigurableUpgradeUtil {
-
- private static final Logger LOG = Logger.getLogger(ConfigurableUpgradeUtil.class);
- /*
- * For now, there is no real upgrade. So copy all data over,
- * set the validation messages and error messages to be the same as for the
- * inputs in the original one.
- */
- @SuppressWarnings("unchecked")
- public static void doUpgrade(List<MConfig> original, List<MConfig> target) {
- Map<String, MConfig> configMap = new HashMap<String, MConfig>();
- for (MConfig config : original) {
- configMap.put(config.getName(), config);
- }
- for (MConfig config : target) {
- List<MInput<?>> inputs = config.getInputs();
- MConfig originalConfig = configMap.get(config.getName());
- if (originalConfig == null) {
- LOG.warn("Config: '" + config.getName() + "' not present in old " +
- "configurable. So it and its inputs will not be transferred by the upgrader.");
- continue;
- }
- for (MInput input : inputs) {
- try {
- MInput originalInput = originalConfig.getInput(input.getName());
- input.setValue(originalInput.getValue());
- } catch (SqoopException ex) {
- LOG.warn("Input: '" + input.getName() + "' not present in old " +
- "configurable. So it will not be transferred by the upgrader.");
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java b/spi/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java
deleted file mode 100644
index b5e0c0d..0000000
--- a/spi/src/main/java/org/apache/sqoop/connector/spi/ConnectorConfigurableUpgrader.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.sqoop.connector.spi;
-
-import org.apache.sqoop.common.SqoopException;
-import org.apache.sqoop.configurable.ConfigurableError;
-import org.apache.sqoop.model.MFromConfig;
-import org.apache.sqoop.model.MLinkConfig;
-import org.apache.sqoop.model.MToConfig;
-
-/**
- * Configurable represents an entity that can provide configurations for the
- * support config types {@linkplain ConfigType}
- * This api represents the interface that configurable such as the connector/driver
- * will implement to upgrade both the config and its corresponding data across different
- * versions
- *
- */
-public abstract class ConnectorConfigurableUpgrader {
-
- /**
- * Upgrade the original link config for the given config type and fill into the upgradeTarget. Note
- * that any data already in {@code upgradeTarget} maybe overwritten.
- * @param original - original config as in the repository
- * @param upgradeTarget - the instance that will be filled in with the
- * upgraded config
- */
- public void upgradeLinkConfig(MLinkConfig original, MLinkConfig upgradeTarget) {
- // The reasoning for throwing an exception by default is as follows.
- // Sqoop calls the upgrade apis for every connector if and only if the
- // corresponding link object that the config is associated with exists in the sqoop
- // repository. In unexpected scenarios, if a link object is created in the
- // sqoop repository without a corresponding upgrade routine for
- // the link config, then this exception will be thrown to indicate a
- // unexpected code path. In normal circumstances this
- // scenario of having a link object for a connector without link config is
- // very unlikely to happen. A likely scenario is that a connector will not have a link config and hence
- // no link object will be created and thus this method will not be invoked.
- throw new SqoopException(ConfigurableError.CONFIGURABLE_0001);
-
- }
-
- /**
- * Upgrade the original FROM job config for the given config type and fill into the upgradeTarget. Note
- * that any data already in {@code upgradeTarget} maybe overwritten.
- * @param original - original config as in the repository
- * @param upgradeTarget - the instance that will be filled in with the
- * upgraded config
- */
-
- public void upgradeFromJobConfig(MFromConfig original, MFromConfig upgradeTarget) {
- // see above for the reasoning behind the exception
- throw new SqoopException(ConfigurableError.CONFIGURABLE_0002);
- }
- /**
- * Upgrade the original TO job config for the given config type and fill into the upgradeTarget. Note
- * that any data already in {@code upgradeTarget} maybe overwritten.
- * @param original - original config as in the repository
- * @param upgradeTarget - the instance that will be filled in with the
- * upgraded config
- */
- public void upgradeToJobConfig(MToConfig original, MToConfig upgradeTarget) {
- // see above for the reasoning behind the exception
- throw new SqoopException(ConfigurableError.CONFIGURABLE_0003);
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/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
deleted file mode 100644
index ff6392e..0000000
--- a/spi/src/main/java/org/apache/sqoop/connector/spi/SqoopConnector.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.connector.spi;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import org.apache.sqoop.common.Direction;
-import org.apache.sqoop.connector.idf.CSVIntermediateDataFormat;
-import org.apache.sqoop.connector.idf.IntermediateDataFormat;
-import org.apache.sqoop.job.etl.From;
-import org.apache.sqoop.job.etl.To;
-
-/**
- * Service provider interface for Sqoop Connectors.
- */
-public abstract class SqoopConnector {
-
- /**
- * Retrieve connector version.
- *
- * @return Version encoded as a string
- */
- public abstract String getVersion();
-
- /**
- * @param locale
- * @return the resource bundle associated with the given locale.
- */
- 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 link configuration group class
- */
- @SuppressWarnings("rawtypes")
- public abstract Class getLinkConfigurationClass();
-
- /**
- * @return Get job configuration group class per direction type or null if not supported
- */
- @SuppressWarnings("rawtypes")
- public abstract Class getJobConfigurationClass(Direction direction);
-
- /**
- * @return an <tt>From</tt> that provides classes for performing import.
- */
- public abstract From getFrom();
-
- /**
- * @return an <tt>To</tt> that provides classes for performing export.n
- */
- public abstract To getTo();
-
- /**
- * Returns an {@linkplain ConnectorConfigurableUpgrader} object that can upgrade the
- * configs related to the link and job
- * @return RespositoryUpgrader object
- */
- public abstract ConnectorConfigurableUpgrader getConfigurableUpgrader();
-
- /**
- * Returns the {@linkplain IntermediateDataFormat} this connector
- * can return natively in. This will support retrieving the data as text
- * and an array of objects. This should never return null.
- *
- * @return {@linkplain IntermediateDataFormat} object
- */
- public Class<? extends IntermediateDataFormat<?>> getIntermediateDataFormat() {
- return CSVIntermediateDataFormat.class;
- }
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/Constants.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/Constants.java b/spi/src/main/java/org/apache/sqoop/job/Constants.java
deleted file mode 100644
index 90935cf..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/Constants.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job;
-
-public class Constants {
-
- /**
- * All job related configuration is prefixed with this:
- * <tt>org.apache.sqoop.job.</tt>
- */
- public static final String PREFIX_CONFIG = "org.apache.sqoop.job.";
-
- public static final String JOB_ETL_NUMBER_PARTITIONS = PREFIX_CONFIG
- + "etl.number.partitions";
-
- public static final String JOB_ETL_FIELD_NAMES = PREFIX_CONFIG
- + "etl.field.names";
-
- public static final String JOB_ETL_OUTPUT_DIRECTORY = PREFIX_CONFIG
- + "etl.output.directory";
-
- public static final String JOB_ETL_INPUT_DIRECTORY = PREFIX_CONFIG
- + "etl.input.directory";
-
- protected Constants() {
- // Disable explicit object creation
- }
-
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/Destroyer.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/Destroyer.java b/spi/src/main/java/org/apache/sqoop/job/etl/Destroyer.java
deleted file mode 100644
index 8486154..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/Destroyer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-/**
- * This allows connector to define work to complete execution, for example,
- * resource cleaning.
- */
-public abstract class Destroyer<LinkConfiguration, JobConfiguration> {
-
- /**
- * Callback to clean up after job execution
- *
- * @param context Destroyer context
- * @param linkConfiguration link configuration object
- * @param jobConfiguration job configuration object for the FROM and TO
- * In case of the FROM destroyer this will represent the FROM job configuration
- * In case of the TO destroyer this will represent the TO job configuration
- */
- public abstract void destroy(DestroyerContext context,
- LinkConfiguration linkConfiguration,
- JobConfiguration jobConfiguration);
-
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/Extractor.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/Extractor.java b/spi/src/main/java/org/apache/sqoop/job/etl/Extractor.java
deleted file mode 100644
index 85e91ef..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/Extractor.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-/**
- * This allows connector to extract data from a source system
- * based on each partition.
- */
-public abstract class Extractor<LinkConfiguration, FromJobConfiguration, SqoopPartition> {
-
- /**
- * Extract data from source and pass them into the Sqoop.
- *
- * @param context Extractor context object
- * @param linkConfiguration link configuration object
- * @param jobConfiguration FROM job configuration object
- * @param partition Partition that this extracter should work on
- */
- public abstract void extract(ExtractorContext context,
- LinkConfiguration linkConfiguration,
- FromJobConfiguration jobConfiguration,
- SqoopPartition partition);
-
- /**
- * Return the number of rows read by the last call to
- * {@linkplain Extractor#extract(org.apache.sqoop.job.etl.ExtractorContext, java.lang.Object, java.lang.Object, Partition) }
- * method. This method returns only the number of rows read in the last call,
- * and not a cumulative total of the number of rows read by this Extractor
- * since its creation. If no calls were made to the run method, this method's
- * behavior is undefined.
- *
- * @return the number of rows read by the last call to
- * {@linkplain Extractor#extract(org.apache.sqoop.job.etl.ExtractorContext, java.lang.Object, java.lang.Object, Partition) }
- */
- public abstract long getRowsRead();
-
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/From.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/From.java b/spi/src/main/java/org/apache/sqoop/job/etl/From.java
deleted file mode 100644
index 3dd8fb9..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/From.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-/**
- * This specifies classes that perform connector-defined steps
- * within import execution:
- * Initializer
- * -> Partitioner
- * -> Extractor
- * -> (Sqoop-defined steps)
- * -> Destroyer
- */
-public class From extends Transferable {
-
- private Class<? extends Partitioner> partitioner;
- private Class<? extends Extractor> extractor;
-
- public From(Class<? extends Initializer> initializer,
- Class<? extends Partitioner> partitioner,
- Class<? extends Extractor> extractor,
- Class<? extends Destroyer> destroyer) {
- super(initializer, destroyer);
- this.partitioner = partitioner;
- this.extractor = extractor;
- }
-
- public Class<? extends Partitioner> getPartitioner() {
- return partitioner;
- }
-
- public Class<? extends Extractor> getExtractor() {
- return extractor;
- }
-
- @Override
- public String toString() {
- return "From{" + super.toString() +
- ", partitioner=" + partitioner.getName() +
- ", extractor=" + extractor.getName() +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/Initializer.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/Initializer.java b/spi/src/main/java/org/apache/sqoop/job/etl/Initializer.java
deleted file mode 100644
index 7dd156e..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/Initializer.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.sqoop.schema.NullSchema;
-import org.apache.sqoop.schema.Schema;
-
-/**
- * This allows connector to define initialization work for execution,
- * for example, context configuration.
- */
-public abstract class Initializer<LinkConfiguration, JobConfiguration> {
-
- /**
- * Initialize new submission based on given configuration properties. Any
- * needed temporary values might be saved to context object and they will be
- * promoted to all other part of the workflow automatically.
- *
- * @param context Initializer context object
- * @param linkConfiguration link configuration object
- * @param jobConfiguration job configuration object for the FROM and TO
- * In case of the FROM initializer this will represent the FROM job configuration
- * In case of the TO initializer this will represent the TO job configuration
- */
- public abstract void initialize(InitializerContext context, LinkConfiguration linkConfiguration,
- JobConfiguration jobConfiguration);
-
- /**
- * Return list of all jars that this particular connector needs to operate on
- * following job. This method will be called after running initialize method.
- * @param context Initializer context object
- * @param linkConfiguration link configuration object
- * @param jobConfiguration job configuration object for the FROM and TO
- * In case of the FROM initializer this will represent the FROM job configuration
- * In case of the TO initializer this will represent the TO job configuration
- * @return
- */
- public Set<String> getJars(InitializerContext context, LinkConfiguration linkConfiguration,
- JobConfiguration jobConfiguration) {
- return new HashSet<String>();
- }
-
- /**
- * Return schema associated with the connector for FROM and TO
- * By default we assume a null schema. Override the method if there a custom schema to provide either for FROM or TO
- * @param context Initializer context object
- * @param linkConfiguration link configuration object
- * @param jobConfiguration job configuration object for the FROM and TO
- * In case of the FROM initializer this will represent the FROM job configuration
- * In case of the TO initializer this will represent the TO job configuration
- * @return
- */
-
- public Schema getSchema(InitializerContext context, LinkConfiguration linkConfiguration,
- JobConfiguration jobConfiguration) {
- return NullSchema.getInstance();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/Loader.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/Loader.java b/spi/src/main/java/org/apache/sqoop/job/etl/Loader.java
deleted file mode 100644
index e47b244..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/Loader.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-/**
- * This allows connector to load data into a target system.
- */
-public abstract class Loader<LinkConfiguration, ToJobConfiguration> {
-
- /**
- * Load data to target.
- *
- * @param context Loader context object
- * @param linkConfiguration link configuration object
- * @param jobConfiguration TO job configuration object
- * @throws Exception
- */
- public abstract void load(LoaderContext context, LinkConfiguration linkConfiguration,
- ToJobConfiguration jobConfiguration) throws Exception;
-
- /**
- * Return the number of rows witten by the last call to
- * {@linkplain Loader#load(org.apache.sqoop.job.etl.LoaderContext, java.lang.Object) }
- * method. This method returns only the number of rows written in the last call,
- * and not a cumulative total of the number of rows written by this Loader
- * since its creation.
- *
- * @return the number of rows written by the last call to
- * {@linkplain Loader#load(org.apache.sqoop.job.etl.LoaderContext, java.lang.Object) }
- */
- public abstract long getRowsWritten();
-
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/Partition.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/Partition.java b/spi/src/main/java/org/apache/sqoop/job/etl/Partition.java
deleted file mode 100644
index db07844..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/Partition.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-/**
- * A part of the input data partitioned by the Partitioner.
- */
-public abstract class Partition {
-
- /**
- * Deserialize the fields of this partition from input.
- */
- public abstract void readFields(DataInput in) throws IOException;
-
- /**
- * Serialize the fields of this partition to output.
- */
- public abstract void write(DataOutput out) throws IOException;
-
- /**
- * Each partition must be easily serializable to human readable form so that
- * it can be logged for debugging purpose.
- *
- * @return Human readable representation
- */
- public abstract String toString();
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/Partitioner.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/Partitioner.java b/spi/src/main/java/org/apache/sqoop/job/etl/Partitioner.java
deleted file mode 100644
index 3636130..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/Partitioner.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-import java.util.List;
-
-/**
- * This allows connector to define how input data from the FROM source can be partitioned.
- * The number of data partitions also determines the degree of parallelism.
- */
-public abstract class Partitioner<LinkConfiguration, FromJobConfiguration> {
-
- /**
- * Partition input data into partitions.
- *
- * Each partition will be then processed in separate extractor.
- *
- * @param context Partitioner context object
- * @param linkConfiguration link configuration object
- * @param jobConfiguration job configuration object
- * @return
- */
- public abstract List<Partition> getPartitions(PartitionerContext context,
- LinkConfiguration linkConfiguration, FromJobConfiguration fromJobConfiguration);
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/To.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/To.java b/spi/src/main/java/org/apache/sqoop/job/etl/To.java
deleted file mode 100644
index 64ba225..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/To.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-/**
- * This specifies classes that perform connector-defined steps
- * within export execution:
- * Initializer
- * -> (Sqoop-defined steps)
- * -> Loader
- * -> Destroyer
- */
-public class To extends Transferable {
-
- private Class<? extends Loader> loader;
-
- public To(
- Class<? extends Initializer> initializer,
- Class<? extends Loader> loader,
- Class<? extends Destroyer> destroyer
- ) {
- super(initializer, destroyer);
- this.loader = loader;
- }
-
- public Class<? extends Loader> getLoader() {
- return loader;
- }
-
- @Override
- public String toString() {
- return "To {" + super.toString() +
- ", loader=" + loader +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/c7ef89db/spi/src/main/java/org/apache/sqoop/job/etl/Transferable.java
----------------------------------------------------------------------
diff --git a/spi/src/main/java/org/apache/sqoop/job/etl/Transferable.java b/spi/src/main/java/org/apache/sqoop/job/etl/Transferable.java
deleted file mode 100644
index dfe1d5e..0000000
--- a/spi/src/main/java/org/apache/sqoop/job/etl/Transferable.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.job.etl;
-
-/**
- * This entity encapsulates the workflow for data transfer via the
- * {@link SqoopConnector}.It basically acts as an adapter between the data-source
- * imported from or exported to.
- */
-public abstract class Transferable {
-
- private Class<? extends Initializer> initializer;
- private Class<? extends Destroyer> destroyer;
-
- public Transferable(
- Class<? extends Initializer> initializer,
- Class<? extends Destroyer> destroyer
- ) {
- this.initializer = initializer;
- this.destroyer = destroyer;
- }
-
- public Class<? extends Destroyer> getDestroyer() {
- return destroyer;
- }
-
- public Class<? extends Initializer> getInitializer() {
- return initializer;
- }
-
- @Override
- public String toString() {
- return "initializer=" + initializer.getName() +
- ", destroyer=" + destroyer.getName();
- }
-}
\ No newline at end of file