diff --git a/client/src/main/java/org/apache/sqoop/client/SqoopClient.java b/client/src/main/java/org/apache/sqoop/client/SqoopClient.java
index e1f009cd..6efa0163 100644
--- a/client/src/main/java/org/apache/sqoop/client/SqoopClient.java
+++ b/client/src/main/java/org/apache/sqoop/client/SqoopClient.java
@@ -23,6 +23,8 @@
import java.util.Map;
import java.util.ResourceBundle;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.client.request.SqoopResourceRequests;
import org.apache.sqoop.common.Direction;
import org.apache.sqoop.common.SqoopException;
@@ -49,6 +51,8 @@
* (Resources, Connector structures). Volatile structures (Links, Jobs)
* are not cached.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class SqoopClient {
/**
diff --git a/common/src/main/java/org/apache/sqoop/classification/InterfaceAudience.java b/common/src/main/java/org/apache/sqoop/classification/InterfaceAudience.java
new file mode 100644
index 00000000..3cfb5f48
--- /dev/null
+++ b/common/src/main/java/org/apache/sqoop/classification/InterfaceAudience.java
@@ -0,0 +1,73 @@
+/*
+ * 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.classification;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to inform users of a package, class or method's intended audience.
+ * Currently the audience can be {@link Public}, {@link LimitedPrivate} or
+ * {@link Private}.
+ * All public classes must have InterfaceAudience annotation.
+ *
+ * - Public classes that are not marked with this annotation must be
+ * considered by default as {@link Private}.
+ *
+ * - External applications must only use classes that are marked
+ * {@link Public}. Avoid using non public classes as these classes
+ * could be removed or change in incompatible ways.
+ *
+ * - Sqoop project must only use classes that are marked
+ * {@link LimitedPrivate} or {@link Public}
+ *
+ * - Methods may have a different annotation that it is more restrictive
+ * compared to the audience classification of the class. Example: A class
+ * might be {@link Public}, but a method may be {@link LimitedPrivate}
+ *
+ */
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
+public class InterfaceAudience {
+ /**
+ * Intended for use by any project or application.
+ */
+ @Documented
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Public {};
+
+ /**
+ * Intended only for the project(s) specified in the annotation.
+ * For example, "Common", "HDFS", "MapReduce", "ZooKeeper", "HBase".
+ */
+ @Documented
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface LimitedPrivate {
+ String[] value();
+ };
+
+ /**
+ * Intended for use only within Sqoop itself.
+ */
+ @Documented
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Private {};
+
+ private InterfaceAudience() {} // Audience can't exist on its own
+}
\ No newline at end of file
diff --git a/common/src/main/java/org/apache/sqoop/classification/InterfaceStability.java b/common/src/main/java/org/apache/sqoop/classification/InterfaceStability.java
new file mode 100644
index 00000000..29fba896
--- /dev/null
+++ b/common/src/main/java/org/apache/sqoop/classification/InterfaceStability.java
@@ -0,0 +1,61 @@
+/*
+ * 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.classification;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to inform users of how much to rely on a particular package,
+ * class or method not changing over time. Currently the stability can be
+ * {@link Stable}, {@link Evolving} or {@link Unstable}.
+ *
+ * - All classes that are annotated with {@link Public} or
+ * {@link LimitedPrivate} must have InterfaceStability annotation.
+ * - Classes that are {@link Private} are to be considered unstable unless
+ * a different InterfaceStability annotation states otherwise.
+ * - Incompatible changes must not be made to classes marked as stable.
+ *
+ */
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
+public class InterfaceStability {
+ /**
+ * Can evolve while retaining compatibility for minor release boundaries.;
+ * can break compatibility only at major release (ie. at m.0).
+ */
+ @Documented
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Stable {};
+
+ /**
+ * Evolving, but can break compatibility at minor release (i.e. m.x)
+ */
+ @Documented
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Evolving {};
+
+ /**
+ * No guarantee is provided as to reliability or stability across any
+ * level of release granularity.
+ */
+ @Documented
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Unstable {};
+}
\ No newline at end of file
diff --git a/common/src/main/java/org/apache/sqoop/common/Direction.java b/common/src/main/java/org/apache/sqoop/common/Direction.java
index 1576b966..44c53bc9 100644
--- a/common/src/main/java/org/apache/sqoop/common/Direction.java
+++ b/common/src/main/java/org/apache/sqoop/common/Direction.java
@@ -17,6 +17,9 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Connectors will have configurations for FROM and TO.
* If the connector is being used to extract data FROM,
@@ -24,6 +27,8 @@
* is being used to load data TO, then the connector type
* will be TO.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
public enum Direction {
FROM,
TO
diff --git a/common/src/main/java/org/apache/sqoop/common/DirectionError.java b/common/src/main/java/org/apache/sqoop/common/DirectionError.java
index 288c9544..425d4cbb 100644
--- a/common/src/main/java/org/apache/sqoop/common/DirectionError.java
+++ b/common/src/main/java/org/apache/sqoop/common/DirectionError.java
@@ -17,6 +17,11 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public enum DirectionError implements ErrorCode {
/** An unknown error has occurred. */
diff --git a/common/src/main/java/org/apache/sqoop/common/ErrorCode.java b/common/src/main/java/org/apache/sqoop/common/ErrorCode.java
index 0458a579..d8f9d4b3 100644
--- a/common/src/main/java/org/apache/sqoop/common/ErrorCode.java
+++ b/common/src/main/java/org/apache/sqoop/common/ErrorCode.java
@@ -17,12 +17,17 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Defines an error-code contract. Sqoop exceptions use the error code to
* communicate error information where possible. Each error code is associated
* with default message that identifies the high level information related to
* the underlying error condition.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public interface ErrorCode {
/**
diff --git a/common/src/main/java/org/apache/sqoop/common/ImmutableContext.java b/common/src/main/java/org/apache/sqoop/common/ImmutableContext.java
index 69f3a03f..7eed27f0 100644
--- a/common/src/main/java/org/apache/sqoop/common/ImmutableContext.java
+++ b/common/src/main/java/org/apache/sqoop/common/ImmutableContext.java
@@ -17,11 +17,16 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Immutable context interface for key value pairs.
*
* Useful for configuration objects that are not allowed to change.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public interface ImmutableContext {
/**
diff --git a/common/src/main/java/org/apache/sqoop/common/MapContext.java b/common/src/main/java/org/apache/sqoop/common/MapContext.java
index d1f9420e..d23ff1ac 100644
--- a/common/src/main/java/org/apache/sqoop/common/MapContext.java
+++ b/common/src/main/java/org/apache/sqoop/common/MapContext.java
@@ -17,6 +17,9 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
@@ -25,6 +28,8 @@
/**
* ImmutableContext implementation based on (Hash)Map.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MapContext implements ImmutableContext {
private final Map options;
diff --git a/common/src/main/java/org/apache/sqoop/common/MutableContext.java b/common/src/main/java/org/apache/sqoop/common/MutableContext.java
index ddf8af00..272343f1 100644
--- a/common/src/main/java/org/apache/sqoop/common/MutableContext.java
+++ b/common/src/main/java/org/apache/sqoop/common/MutableContext.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Mutable addition to immutable context.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public interface MutableContext extends ImmutableContext {
/**
diff --git a/common/src/main/java/org/apache/sqoop/common/MutableMapContext.java b/common/src/main/java/org/apache/sqoop/common/MutableMapContext.java
index bb03ec05..61751bf5 100644
--- a/common/src/main/java/org/apache/sqoop/common/MutableMapContext.java
+++ b/common/src/main/java/org/apache/sqoop/common/MutableMapContext.java
@@ -17,6 +17,9 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -24,6 +27,8 @@
/**
* Mutable variant of context class for "special" usage
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MutableMapContext extends MapContext implements Iterable>, MutableContext {
public MutableMapContext(Map options) {
diff --git a/common/src/main/java/org/apache/sqoop/common/PrefixContext.java b/common/src/main/java/org/apache/sqoop/common/PrefixContext.java
index 6434e6d6..8d338614 100644
--- a/common/src/main/java/org/apache/sqoop/common/PrefixContext.java
+++ b/common/src/main/java/org/apache/sqoop/common/PrefixContext.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.hadoop.conf.Configuration;
import org.apache.sqoop.common.ImmutableContext;
@@ -25,6 +27,8 @@
* object. Each context property is prefixed with special prefix and loaded
* directly.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class PrefixContext implements ImmutableContext {
Configuration configuration;
diff --git a/common/src/main/java/org/apache/sqoop/common/SqoopException.java b/common/src/main/java/org/apache/sqoop/common/SqoopException.java
index 6c5dc2a5..06b39e6e 100644
--- a/common/src/main/java/org/apache/sqoop/common/SqoopException.java
+++ b/common/src/main/java/org/apache/sqoop/common/SqoopException.java
@@ -18,12 +18,17 @@
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Base exception for Sqoop driver. This exception requires the specification
* of an error code for reference purposes. Where necessary the appropriate
* constructor can be used to pass in additional message beyond what is
* specified by the error code and/or the causal exception.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
@SuppressWarnings("serial")
public class SqoopException extends RuntimeException {
diff --git a/common/src/main/java/org/apache/sqoop/common/SqoopProtocolConstants.java b/common/src/main/java/org/apache/sqoop/common/SqoopProtocolConstants.java
index 8f4f7091..72b5d877 100644
--- a/common/src/main/java/org/apache/sqoop/common/SqoopProtocolConstants.java
+++ b/common/src/main/java/org/apache/sqoop/common/SqoopProtocolConstants.java
@@ -17,6 +17,11 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public final class SqoopProtocolConstants {
public static final String HEADER_SQOOP_ERROR_CODE = "sqoop-error-code";
diff --git a/common/src/main/java/org/apache/sqoop/common/SqoopResponseCode.java b/common/src/main/java/org/apache/sqoop/common/SqoopResponseCode.java
index 93a43f5d..da500788 100644
--- a/common/src/main/java/org/apache/sqoop/common/SqoopResponseCode.java
+++ b/common/src/main/java/org/apache/sqoop/common/SqoopResponseCode.java
@@ -17,6 +17,11 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public enum SqoopResponseCode {
SQOOP_1000("1000", "OK"),
diff --git a/common/src/main/java/org/apache/sqoop/common/SupportedDirections.java b/common/src/main/java/org/apache/sqoop/common/SupportedDirections.java
index c527117a..2fae427d 100644
--- a/common/src/main/java/org/apache/sqoop/common/SupportedDirections.java
+++ b/common/src/main/java/org/apache/sqoop/common/SupportedDirections.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Represents which Directions are supported.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class SupportedDirections implements Comparable {
private static final char SUPPORTED_DIRECTIONS_SEPARATOR = '/';
diff --git a/common/src/main/java/org/apache/sqoop/common/VersionAnnotation.java b/common/src/main/java/org/apache/sqoop/common/VersionAnnotation.java
index 728a3a73..2fcbbb28 100644
--- a/common/src/main/java/org/apache/sqoop/common/VersionAnnotation.java
+++ b/common/src/main/java/org/apache/sqoop/common/VersionAnnotation.java
@@ -17,12 +17,17 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.lang.annotation.*;
/**
* A package attribute that captures the version that was compiled.
* Copied down from hadoop. All is same except name of interface.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PACKAGE)
public @interface VersionAnnotation {
diff --git a/common/src/main/java/org/apache/sqoop/common/VersionInfo.java b/common/src/main/java/org/apache/sqoop/common/VersionInfo.java
index 1b4873b8..a7f5716b 100644
--- a/common/src/main/java/org/apache/sqoop/common/VersionInfo.java
+++ b/common/src/main/java/org/apache/sqoop/common/VersionInfo.java
@@ -17,6 +17,11 @@
*/
package org.apache.sqoop.common;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public final class VersionInfo {
private static Package myPackage;
diff --git a/common/src/main/java/org/apache/sqoop/etl/io/DataReader.java b/common/src/main/java/org/apache/sqoop/etl/io/DataReader.java
index a5554313..c6cd2b3c 100644
--- a/common/src/main/java/org/apache/sqoop/etl/io/DataReader.java
+++ b/common/src/main/java/org/apache/sqoop/etl/io/DataReader.java
@@ -17,10 +17,15 @@
*/
package org.apache.sqoop.etl.io;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* An intermediate layer for passing data from the execution engine
* to the ETL engine.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public abstract class DataReader {
/**
diff --git a/common/src/main/java/org/apache/sqoop/etl/io/DataWriter.java b/common/src/main/java/org/apache/sqoop/etl/io/DataWriter.java
index 2166b09f..c0fe08c3 100644
--- a/common/src/main/java/org/apache/sqoop/etl/io/DataWriter.java
+++ b/common/src/main/java/org/apache/sqoop/etl/io/DataWriter.java
@@ -17,10 +17,15 @@
*/
package org.apache.sqoop.etl.io;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* An intermediate layer for passing data from the ETL framework
* to the MR framework.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public abstract class DataWriter {
/**
diff --git a/common/src/main/java/org/apache/sqoop/job/etl/DestroyerContext.java b/common/src/main/java/org/apache/sqoop/job/etl/DestroyerContext.java
index 7afb1204..f4f6d1d3 100644
--- a/common/src/main/java/org/apache/sqoop/job/etl/DestroyerContext.java
+++ b/common/src/main/java/org/apache/sqoop/job/etl/DestroyerContext.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.job.etl;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ImmutableContext;
import org.apache.sqoop.schema.Schema;
@@ -25,6 +27,8 @@
*
* This class is wrapping information if the run was successful or not.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class DestroyerContext extends TransferableContext {
private boolean success;
diff --git a/common/src/main/java/org/apache/sqoop/job/etl/ExtractorContext.java b/common/src/main/java/org/apache/sqoop/job/etl/ExtractorContext.java
index 1e0f0ec9..43fcaa22 100644
--- a/common/src/main/java/org/apache/sqoop/job/etl/ExtractorContext.java
+++ b/common/src/main/java/org/apache/sqoop/job/etl/ExtractorContext.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.job.etl;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ImmutableContext;
import org.apache.sqoop.etl.io.DataWriter;
import org.apache.sqoop.schema.Schema;
@@ -26,6 +28,8 @@
*
* This class is wrapping writer object.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class ExtractorContext extends TransferableContext {
private final DataWriter writer;
diff --git a/common/src/main/java/org/apache/sqoop/job/etl/InitializerContext.java b/common/src/main/java/org/apache/sqoop/job/etl/InitializerContext.java
index 4de00a6d..469132b3 100644
--- a/common/src/main/java/org/apache/sqoop/job/etl/InitializerContext.java
+++ b/common/src/main/java/org/apache/sqoop/job/etl/InitializerContext.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.job.etl;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.MutableContext;
/**
@@ -25,6 +27,8 @@
*
* This class is returning mutable context instead of immutable.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class InitializerContext extends TransferableContext {
public InitializerContext(MutableContext context) {
diff --git a/common/src/main/java/org/apache/sqoop/job/etl/LoaderContext.java b/common/src/main/java/org/apache/sqoop/job/etl/LoaderContext.java
index 9d556eb5..f9ea9ad5 100644
--- a/common/src/main/java/org/apache/sqoop/job/etl/LoaderContext.java
+++ b/common/src/main/java/org/apache/sqoop/job/etl/LoaderContext.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.job.etl;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ImmutableContext;
import org.apache.sqoop.etl.io.DataReader;
import org.apache.sqoop.schema.Schema;
@@ -26,6 +28,8 @@
*
* This class is also wrapping reader object.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class LoaderContext extends TransferableContext {
private final DataReader reader;
diff --git a/common/src/main/java/org/apache/sqoop/job/etl/PartitionerContext.java b/common/src/main/java/org/apache/sqoop/job/etl/PartitionerContext.java
index 79901fd9..67fffd6d 100644
--- a/common/src/main/java/org/apache/sqoop/job/etl/PartitionerContext.java
+++ b/common/src/main/java/org/apache/sqoop/job/etl/PartitionerContext.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.job.etl;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ImmutableContext;
import org.apache.sqoop.schema.Schema;
@@ -25,6 +27,8 @@
*
* This class is also wrapping number of maximal allowed partitions.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class PartitionerContext extends TransferableContext {
private long maxPartitions;
diff --git a/common/src/main/java/org/apache/sqoop/job/etl/TransferableContext.java b/common/src/main/java/org/apache/sqoop/job/etl/TransferableContext.java
index e57bf45e..ad18e299 100644
--- a/common/src/main/java/org/apache/sqoop/job/etl/TransferableContext.java
+++ b/common/src/main/java/org/apache/sqoop/job/etl/TransferableContext.java
@@ -17,11 +17,15 @@
*/
package org.apache.sqoop.job.etl;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ImmutableContext;
/**
* Base context class for the {@link Transferable} components
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public abstract class TransferableContext {
ImmutableContext context;
diff --git a/common/src/main/java/org/apache/sqoop/json/ConfigurableBean.java b/common/src/main/java/org/apache/sqoop/json/ConfigurableBean.java
index 49dd057f..0b79666e 100644
--- a/common/src/main/java/org/apache/sqoop/json/ConfigurableBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/ConfigurableBean.java
@@ -17,9 +17,14 @@
* limitations under the License.
*/
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Marker class for the configurables supported in sqoop
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public abstract class ConfigurableBean implements JsonBean {
}
diff --git a/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java b/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
index 6dc14d05..0322032e 100644
--- a/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
@@ -28,6 +28,8 @@
import java.util.Map;
import java.util.ResourceBundle;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.Direction;
import org.apache.sqoop.model.MConfig;
import org.apache.sqoop.model.MConnector;
@@ -41,6 +43,8 @@
* Json representation of the connector object
*
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class ConnectorBean extends ConfigurableBean {
// to represent the config and inputs with values
diff --git a/common/src/main/java/org/apache/sqoop/json/ConnectorsBean.java b/common/src/main/java/org/apache/sqoop/json/ConnectorsBean.java
index b04594eb..88b71f5d 100644
--- a/common/src/main/java/org/apache/sqoop/json/ConnectorsBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/ConnectorsBean.java
@@ -21,6 +21,8 @@
import java.util.Map;
import java.util.ResourceBundle;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.model.MConnector;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@@ -29,6 +31,8 @@
* Json representation of the connectors object
*
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class ConnectorsBean extends ConnectorBean {
// to represent the config and inputs with values
diff --git a/common/src/main/java/org/apache/sqoop/json/DriverBean.java b/common/src/main/java/org/apache/sqoop/json/DriverBean.java
index 593ce2f7..60129170 100644
--- a/common/src/main/java/org/apache/sqoop/json/DriverBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/DriverBean.java
@@ -25,6 +25,8 @@
import java.util.List;
import java.util.ResourceBundle;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.model.MConfig;
import org.apache.sqoop.model.MDriver;
import org.apache.sqoop.model.MDriverConfig;
@@ -33,6 +35,8 @@
/**
* Json representation of the driver
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class DriverBean extends ConfigurableBean {
public static final String CURRENT_DRIVER_VERSION = "1";
diff --git a/common/src/main/java/org/apache/sqoop/json/JSONUtils.java b/common/src/main/java/org/apache/sqoop/json/JSONUtils.java
index e7551d2c..ff8f9eaa 100644
--- a/common/src/main/java/org/apache/sqoop/json/JSONUtils.java
+++ b/common/src/main/java/org/apache/sqoop/json/JSONUtils.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.json;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.json.util.SerializationError;
import org.json.simple.JSONObject;
@@ -28,6 +30,8 @@
/**
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class JSONUtils {
/**
diff --git a/common/src/main/java/org/apache/sqoop/json/JobBean.java b/common/src/main/java/org/apache/sqoop/json/JobBean.java
index 00cba562..0561adeb 100644
--- a/common/src/main/java/org/apache/sqoop/json/JobBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/JobBean.java
@@ -27,6 +27,8 @@
import java.util.Map;
import java.util.ResourceBundle;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.Direction;
import org.apache.sqoop.model.MConfig;
import org.apache.sqoop.model.MDriverConfig;
@@ -39,6 +41,8 @@
/**
* Json representation of the job
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class JobBean implements JsonBean {
static final String FROM_LINK_ID = "from-link-id";
diff --git a/common/src/main/java/org/apache/sqoop/json/JobsBean.java b/common/src/main/java/org/apache/sqoop/json/JobsBean.java
index 3c454ea4..c62ab49d 100644
--- a/common/src/main/java/org/apache/sqoop/json/JobsBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/JobsBean.java
@@ -19,6 +19,8 @@
import java.util.List;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.model.MJob;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@@ -26,6 +28,8 @@
/**
* Json representation of the jobs
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class JobsBean extends JobBean {
private static final String JOBS = "jobs";
diff --git a/common/src/main/java/org/apache/sqoop/json/JsonBean.java b/common/src/main/java/org/apache/sqoop/json/JsonBean.java
index 7cf24bae..1dd275e8 100644
--- a/common/src/main/java/org/apache/sqoop/json/JsonBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/JsonBean.java
@@ -17,8 +17,12 @@
*/
package org.apache.sqoop.json;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.json.simple.JSONObject;
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public interface JsonBean {
// common JSON constants for the rest-api response
diff --git a/common/src/main/java/org/apache/sqoop/json/LinkBean.java b/common/src/main/java/org/apache/sqoop/json/LinkBean.java
index 5ee4e014..2e2406f3 100644
--- a/common/src/main/java/org/apache/sqoop/json/LinkBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/LinkBean.java
@@ -27,6 +27,8 @@
import java.util.Map;
import java.util.ResourceBundle;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.model.MConfig;
import org.apache.sqoop.model.MLink;
import org.apache.sqoop.model.MLinkConfig;
@@ -38,6 +40,8 @@
* server and client. Server might optionally send configs associated with the
* links to spare client of sending another HTTP requests to obtain them.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class LinkBean implements JsonBean {
static final String CONNECTOR_ID = "connector-id";
diff --git a/common/src/main/java/org/apache/sqoop/json/LinksBean.java b/common/src/main/java/org/apache/sqoop/json/LinksBean.java
index 58cacb9c..6e4a9066 100644
--- a/common/src/main/java/org/apache/sqoop/json/LinksBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/LinksBean.java
@@ -19,10 +19,14 @@
import java.util.List;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.model.MLink;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class LinksBean extends LinkBean {
static final String LINKS = "links";
diff --git a/common/src/main/java/org/apache/sqoop/json/SchemaBean.java b/common/src/main/java/org/apache/sqoop/json/SchemaBean.java
index f51fec85..9ba22e5f 100644
--- a/common/src/main/java/org/apache/sqoop/json/SchemaBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/SchemaBean.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.json;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.json.util.SchemaSerialization;
import org.apache.sqoop.schema.Schema;
import org.json.simple.JSONObject;
@@ -24,6 +26,8 @@
/**
*
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class SchemaBean implements JsonBean {
private Schema schema;
diff --git a/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java b/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
index 66db0d40..ad05057f 100644
--- a/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
@@ -26,6 +26,8 @@
import java.util.Map;
import java.util.Set;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.model.MSubmission;
import org.apache.sqoop.submission.SubmissionStatus;
import org.apache.sqoop.submission.counter.Counter;
@@ -37,6 +39,8 @@
/**
*
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class SubmissionBean implements JsonBean {
private static final String SUBMISSION = "submission";
diff --git a/common/src/main/java/org/apache/sqoop/json/SubmissionsBean.java b/common/src/main/java/org/apache/sqoop/json/SubmissionsBean.java
index 74b61797..019abf1b 100644
--- a/common/src/main/java/org/apache/sqoop/json/SubmissionsBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/SubmissionsBean.java
@@ -19,10 +19,14 @@
import java.util.List;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.model.MSubmission;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class SubmissionsBean extends SubmissionBean {
private static final String SUBMISSIONS = "submissions";
diff --git a/common/src/main/java/org/apache/sqoop/json/ThrowableBean.java b/common/src/main/java/org/apache/sqoop/json/ThrowableBean.java
index cd260206..77482475 100644
--- a/common/src/main/java/org/apache/sqoop/json/ThrowableBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/ThrowableBean.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.json;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.utils.ClassUtils;
import org.json.simple.JSONArray;
@@ -28,6 +30,8 @@
/**
* Transfer throwable instance as a throwable bean.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class ThrowableBean implements JsonBean {
public static final String MESSAGE = "message";
diff --git a/common/src/main/java/org/apache/sqoop/json/ValidationResultBean.java b/common/src/main/java/org/apache/sqoop/json/ValidationResultBean.java
index e9b48999..4ac9533d 100644
--- a/common/src/main/java/org/apache/sqoop/json/ValidationResultBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/ValidationResultBean.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.json;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.validation.Message;
import org.apache.sqoop.validation.Status;
import org.apache.sqoop.validation.ConfigValidationResult;
@@ -31,6 +33,8 @@
/**
* Serialize and transfer validation results (0..N).
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class ValidationResultBean implements JsonBean {
private static final String VALIDATION_RESULT = "validation-result";
diff --git a/common/src/main/java/org/apache/sqoop/json/VersionBean.java b/common/src/main/java/org/apache/sqoop/json/VersionBean.java
index 53d19b1d..3746ca4d 100644
--- a/common/src/main/java/org/apache/sqoop/json/VersionBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/VersionBean.java
@@ -17,9 +17,13 @@
*/
package org.apache.sqoop.json;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class VersionBean implements JsonBean {
public static final String BUILD_VERSION = "build-version";
diff --git a/common/src/main/java/org/apache/sqoop/json/util/ConfigBundleSerialization.java b/common/src/main/java/org/apache/sqoop/json/util/ConfigBundleSerialization.java
index 61337984..d91ecebb 100644
--- a/common/src/main/java/org/apache/sqoop/json/util/ConfigBundleSerialization.java
+++ b/common/src/main/java/org/apache/sqoop/json/util/ConfigBundleSerialization.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.json.util;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.utils.MapResourceBundle;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@@ -31,6 +33,8 @@
/**
*
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public final class ConfigBundleSerialization {
@SuppressWarnings("unchecked")
diff --git a/common/src/main/java/org/apache/sqoop/json/util/ConfigInputConstants.java b/common/src/main/java/org/apache/sqoop/json/util/ConfigInputConstants.java
index df8a8700..5d261de6 100644
--- a/common/src/main/java/org/apache/sqoop/json/util/ConfigInputConstants.java
+++ b/common/src/main/java/org/apache/sqoop/json/util/ConfigInputConstants.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.json.util;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Constants related to the configs
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class ConfigInputConstants {
public static final String CONFIG_ID = "id";
diff --git a/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java b/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
index 4667f5c9..8b11ed5c 100644
--- a/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
+++ b/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
@@ -18,6 +18,8 @@
package org.apache.sqoop.json.util;
import org.apache.commons.lang.StringUtils;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.model.MBooleanInput;
import org.apache.sqoop.model.MEnumInput;
@@ -38,6 +40,8 @@
/**
* Convenient static methods for serializing config and input objects.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public final class ConfigInputSerialization {
/**
diff --git a/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java b/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
index bbd58fc0..a6425feb 100644
--- a/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
+++ b/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
@@ -19,6 +19,8 @@
import java.util.HashSet;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.schema.NullSchema;
import org.apache.sqoop.schema.Schema;
import org.apache.sqoop.schema.type.AbstractComplexListType;
@@ -46,6 +48,8 @@
/**
*
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class SchemaSerialization {
// common attributes of all column types
diff --git a/common/src/main/java/org/apache/sqoop/json/util/SerializationError.java b/common/src/main/java/org/apache/sqoop/json/util/SerializationError.java
index 3d440da4..d5cdb31d 100644
--- a/common/src/main/java/org/apache/sqoop/json/util/SerializationError.java
+++ b/common/src/main/java/org/apache/sqoop/json/util/SerializationError.java
@@ -17,8 +17,12 @@
*/
package org.apache.sqoop.json.util;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ErrorCode;
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public enum SerializationError implements ErrorCode {
SERIALIZATION_001("Attempt to pass a non-map object to MAP type."),
diff --git a/common/src/main/java/org/apache/sqoop/model/Config.java b/common/src/main/java/org/apache/sqoop/model/Config.java
index b4d847d2..644cffe8 100644
--- a/common/src/main/java/org/apache/sqoop/model/Config.java
+++ b/common/src/main/java/org/apache/sqoop/model/Config.java
@@ -17,12 +17,17 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Denote config in Configuration class
*/
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
@Retention(RetentionPolicy.RUNTIME)
public @interface Config {
/**
diff --git a/common/src/main/java/org/apache/sqoop/model/ConfigClass.java b/common/src/main/java/org/apache/sqoop/model/ConfigClass.java
index f925759e..8602a108 100644
--- a/common/src/main/java/org/apache/sqoop/model/ConfigClass.java
+++ b/common/src/main/java/org/apache/sqoop/model/ConfigClass.java
@@ -17,6 +17,9 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -25,6 +28,8 @@
/**
* Denote configuration class
*/
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ConfigClass {
diff --git a/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java b/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java
index 3765a6db..279f3a6b 100644
--- a/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java
+++ b/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java
@@ -18,6 +18,8 @@
package org.apache.sqoop.model;
import org.apache.commons.lang.StringUtils;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.json.JSONUtils;
import org.apache.sqoop.utils.ClassUtils;
@@ -41,6 +43,8 @@
*
* TODO: This class should see some overhaul into more reusable code, especially expose and re-use the methods at the end.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public class ConfigUtils {
/**
diff --git a/common/src/main/java/org/apache/sqoop/model/Configurable.java b/common/src/main/java/org/apache/sqoop/model/Configurable.java
index 2033fcb7..ea544e58 100644
--- a/common/src/main/java/org/apache/sqoop/model/Configurable.java
+++ b/common/src/main/java/org/apache/sqoop/model/Configurable.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Marker class that identifies the Configurables in the Sqoop system
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public abstract class Configurable extends MPersistableEntity implements MClonable {
}
\ No newline at end of file
diff --git a/common/src/main/java/org/apache/sqoop/model/ConfigurationClass.java b/common/src/main/java/org/apache/sqoop/model/ConfigurationClass.java
index c65c478f..0fface86 100644
--- a/common/src/main/java/org/apache/sqoop/model/ConfigurationClass.java
+++ b/common/src/main/java/org/apache/sqoop/model/ConfigurationClass.java
@@ -17,6 +17,9 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -27,6 +30,8 @@
* Each class that is used a configuration group object, the connector developer
* is expected to provide the inputs needed for this annotation
*/
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ConfigurationClass {
diff --git a/common/src/main/java/org/apache/sqoop/model/Input.java b/common/src/main/java/org/apache/sqoop/model/Input.java
index db3e0e6f..b6305f26 100644
--- a/common/src/main/java/org/apache/sqoop/model/Input.java
+++ b/common/src/main/java/org/apache/sqoop/model/Input.java
@@ -17,6 +17,9 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -26,6 +29,8 @@
* Field annotation. Each field that user might change in configuration object
* need to have this annotation.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Input {
diff --git a/common/src/main/java/org/apache/sqoop/model/MAccountableEntity.java b/common/src/main/java/org/apache/sqoop/model/MAccountableEntity.java
index 094af395..a2ec5874 100644
--- a/common/src/main/java/org/apache/sqoop/model/MAccountableEntity.java
+++ b/common/src/main/java/org/apache/sqoop/model/MAccountableEntity.java
@@ -17,12 +17,17 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.util.Date;
/**
* Accountable entity provides additional fields that might help with identifying
* what and when has happened.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
abstract public class MAccountableEntity extends MValidatedElement {
private final boolean DEFAULT_ENABLED = true;
diff --git a/common/src/main/java/org/apache/sqoop/model/MBooleanInput.java b/common/src/main/java/org/apache/sqoop/model/MBooleanInput.java
index da380ddb..c7fcf903 100644
--- a/common/src/main/java/org/apache/sqoop/model/MBooleanInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MBooleanInput.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Represents a Boolean input.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MBooleanInput extends MInput {
public MBooleanInput(String name, boolean sensitive) {
diff --git a/common/src/main/java/org/apache/sqoop/model/MClonable.java b/common/src/main/java/org/apache/sqoop/model/MClonable.java
index 6353779d..2284d794 100644
--- a/common/src/main/java/org/apache/sqoop/model/MClonable.java
+++ b/common/src/main/java/org/apache/sqoop/model/MClonable.java
@@ -17,6 +17,11 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public interface MClonable {
/**
* Clone object
diff --git a/common/src/main/java/org/apache/sqoop/model/MConfig.java b/common/src/main/java/org/apache/sqoop/model/MConfig.java
index b5d2afd4..d1284417 100644
--- a/common/src/main/java/org/apache/sqoop/model/MConfig.java
+++ b/common/src/main/java/org/apache/sqoop/model/MConfig.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.SqoopException;
import java.util.ArrayList;
@@ -27,6 +29,8 @@
* input gathering process to be broken down into multiple steps that can be
* then paged through by the user interface.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public final class MConfig extends MValidatedElement implements MClonable {
private final List> inputs;
diff --git a/common/src/main/java/org/apache/sqoop/model/MConfigList.java b/common/src/main/java/org/apache/sqoop/model/MConfigList.java
index 20309e12..add80d8e 100644
--- a/common/src/main/java/org/apache/sqoop/model/MConfigList.java
+++ b/common/src/main/java/org/apache/sqoop/model/MConfigList.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.SqoopException;
import java.util.ArrayList;
@@ -25,6 +27,8 @@
/**
* Arbitrary list of config objects.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MConfigList implements MClonable {
private final List configObjects;
diff --git a/common/src/main/java/org/apache/sqoop/model/MConfigType.java b/common/src/main/java/org/apache/sqoop/model/MConfigType.java
index a9f7dad0..fa29d5a9 100644
--- a/common/src/main/java/org/apache/sqoop/model/MConfigType.java
+++ b/common/src/main/java/org/apache/sqoop/model/MConfigType.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Represents the various config types supported by the system.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public enum MConfigType {
/** Unknown config type */
diff --git a/common/src/main/java/org/apache/sqoop/model/MConfigurableType.java b/common/src/main/java/org/apache/sqoop/model/MConfigurableType.java
index 7ab70329..b147d7d9 100644
--- a/common/src/main/java/org/apache/sqoop/model/MConfigurableType.java
+++ b/common/src/main/java/org/apache/sqoop/model/MConfigurableType.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Represents the sqoop entities that can own configs
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public enum MConfigurableType {
/** Connector as a owner of config keys */
diff --git a/common/src/main/java/org/apache/sqoop/model/MConnector.java b/common/src/main/java/org/apache/sqoop/model/MConnector.java
index 1b9462e2..d49f6206 100644
--- a/common/src/main/java/org/apache/sqoop/model/MConnector.java
+++ b/common/src/main/java/org/apache/sqoop/model/MConnector.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.Direction;
import org.apache.sqoop.common.DirectionError;
import org.apache.sqoop.common.SqoopException;
@@ -27,6 +29,8 @@
* that identifies connector in the repository, unique human readable name,
* corresponding name and all configs to support the from and to data sources
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public final class MConnector extends Configurable {
private final String uniqueName;
diff --git a/common/src/main/java/org/apache/sqoop/model/MDriver.java b/common/src/main/java/org/apache/sqoop/model/MDriver.java
index cc475117..75eaa462 100644
--- a/common/src/main/java/org/apache/sqoop/model/MDriver.java
+++ b/common/src/main/java/org/apache/sqoop/model/MDriver.java
@@ -18,9 +18,14 @@
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Describes the configs associated with the {@link Driver} for executing sqoop jobs.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public final class MDriver extends Configurable {
public static final String DRIVER_NAME = "SqoopDriver";
diff --git a/common/src/main/java/org/apache/sqoop/model/MDriverConfig.java b/common/src/main/java/org/apache/sqoop/model/MDriverConfig.java
index 3faf1d3c..77d947f1 100644
--- a/common/src/main/java/org/apache/sqoop/model/MDriverConfig.java
+++ b/common/src/main/java/org/apache/sqoop/model/MDriverConfig.java
@@ -17,14 +17,18 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.util.List;
/**
* Config describing all required information for the driver
* NOTE: It extends a config list since {@link MToConfig} could consist of a related config groups
* In future this could be simplified to hold a single list of all configs for the driver
-
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MDriverConfig extends MConfigList {
public MDriverConfig(List configs) {
super(configs, MConfigType.JOB);
diff --git a/common/src/main/java/org/apache/sqoop/model/MEnumInput.java b/common/src/main/java/org/apache/sqoop/model/MEnumInput.java
index 28830f40..74838fce 100644
--- a/common/src/main/java/org/apache/sqoop/model/MEnumInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MEnumInput.java
@@ -18,6 +18,8 @@
package org.apache.sqoop.model;
import org.apache.commons.lang.StringUtils;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.SqoopException;
import java.util.Arrays;
@@ -25,6 +27,8 @@
/**
*
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MEnumInput extends MInput {
/**
diff --git a/common/src/main/java/org/apache/sqoop/model/MFromConfig.java b/common/src/main/java/org/apache/sqoop/model/MFromConfig.java
index 1e9e845b..7093a936 100644
--- a/common/src/main/java/org/apache/sqoop/model/MFromConfig.java
+++ b/common/src/main/java/org/apache/sqoop/model/MFromConfig.java
@@ -17,14 +17,18 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.util.List;
/**
* Config describing all required information to build the FROM part of the job
* NOTE: It extends a config list since {@link MFromConfig} could consist of a related config groups
* In future this could be simplified to hold a single list of all configs for the FROM object
-
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MFromConfig extends MConfigList {
public MFromConfig(List configs) {
super(configs, MConfigType.JOB);
diff --git a/common/src/main/java/org/apache/sqoop/model/MInput.java b/common/src/main/java/org/apache/sqoop/model/MInput.java
index 00742677..d1c2ab6b 100644
--- a/common/src/main/java/org/apache/sqoop/model/MInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MInput.java
@@ -17,12 +17,17 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Represents a parameter input used by the connector for creating a link
* or a job object.
* @param the value type associated with this parameter
* @param boolean whether or not the field contains sensitive information
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public abstract class MInput extends MValidatedElement implements MClonable {
private final boolean sensitive;
diff --git a/common/src/main/java/org/apache/sqoop/model/MInputType.java b/common/src/main/java/org/apache/sqoop/model/MInputType.java
index af400544..bdc3424d 100644
--- a/common/src/main/java/org/apache/sqoop/model/MInputType.java
+++ b/common/src/main/java/org/apache/sqoop/model/MInputType.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Represents the various input types supported by the system.
*/
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
public enum MInputType {
/** Unknown input type */
diff --git a/common/src/main/java/org/apache/sqoop/model/MIntegerInput.java b/common/src/main/java/org/apache/sqoop/model/MIntegerInput.java
index a43f440a..de50cd47 100644
--- a/common/src/main/java/org/apache/sqoop/model/MIntegerInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MIntegerInput.java
@@ -17,11 +17,16 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Integer base user input.
*
* This input is able to process empty (NULL) value.
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MIntegerInput extends MInput {
public MIntegerInput(String name, boolean sensitive) {
diff --git a/common/src/main/java/org/apache/sqoop/model/MJob.java b/common/src/main/java/org/apache/sqoop/model/MJob.java
index 935dd181..4b5c896f 100644
--- a/common/src/main/java/org/apache/sqoop/model/MJob.java
+++ b/common/src/main/java/org/apache/sqoop/model/MJob.java
@@ -17,6 +17,8 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.Direction;
import org.apache.sqoop.common.DirectionError;
import org.apache.sqoop.common.SqoopException;
@@ -25,6 +27,8 @@
* Model describing entire job object including the from/to and driver config information
* to execute the job
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MJob extends MAccountableEntity implements MClonable {
/**
* NOTE : Job object do not immediately depend on connector as there is indirect
diff --git a/common/src/main/java/org/apache/sqoop/model/MLink.java b/common/src/main/java/org/apache/sqoop/model/MLink.java
index 8e318613..062a4c5e 100644
--- a/common/src/main/java/org/apache/sqoop/model/MLink.java
+++ b/common/src/main/java/org/apache/sqoop/model/MLink.java
@@ -17,9 +17,14 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
/**
* Model describing the link object and its corresponding configs
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MLink extends MAccountableEntity implements MClonable {
private long connectorId;
// NOTE: we hold this in the model for easy access to the link config object, it might as well be retrieved on the fly using the connectorId
diff --git a/common/src/main/java/org/apache/sqoop/model/MLinkConfig.java b/common/src/main/java/org/apache/sqoop/model/MLinkConfig.java
index 040dca4e..9042ca5f 100644
--- a/common/src/main/java/org/apache/sqoop/model/MLinkConfig.java
+++ b/common/src/main/java/org/apache/sqoop/model/MLinkConfig.java
@@ -17,6 +17,9 @@
*/
package org.apache.sqoop.model;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
import java.util.List;
/**
@@ -24,6 +27,8 @@
* NOTE: It extends a config list since {@link MLink} could consist of a related config groups
* In future this could be simplified to hold a single list of all configs for the link object
*/
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public class MLinkConfig extends MConfigList {
public MLinkConfig(List configs) {
diff --git a/common/src/main/java/org/apache/sqoop/model/MMapInput.java b/common/src/main/java/org/apache/sqoop/model/MMapInput.java
index 37dd265a..cf781b22 100644
--- a/common/src/main/java/org/apache/sqoop/model/MMapInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MMapInput.java
@@ -21,8 +21,12 @@
import java.util.Map;
import java.util.Set;
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.utils.UrlSafeUtils;
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
public final class MMapInput extends MInput