You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2015/01/21 16:44:13 UTC

[3/3] sqoop git commit: SQOOP-1926: Sqoop2: Add annotations for visibilty and compatibility guarantees

SQOOP-1926: Sqoop2: Add annotations for visibilty and compatibility guarantees

(Abraham Elmahrek via Jarek Jarcec Cecho)


Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/89f737b2
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/89f737b2
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/89f737b2

Branch: refs/heads/sqoop2
Commit: 89f737b2ac4b3be31016e4fa5b17c88f1e29ed5a
Parents: e41bc6e
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Wed Jan 21 07:43:16 2015 -0800
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Wed Jan 21 07:44:04 2015 -0800

----------------------------------------------------------------------
 .../org/apache/sqoop/client/SqoopClient.java    |  4 ++
 .../sqoop/classification/InterfaceAudience.java | 73 ++++++++++++++++++++
 .../classification/InterfaceStability.java      | 61 ++++++++++++++++
 .../java/org/apache/sqoop/common/Direction.java |  5 ++
 .../org/apache/sqoop/common/DirectionError.java |  5 ++
 .../java/org/apache/sqoop/common/ErrorCode.java |  5 ++
 .../apache/sqoop/common/ImmutableContext.java   |  5 ++
 .../org/apache/sqoop/common/MapContext.java     |  5 ++
 .../org/apache/sqoop/common/MutableContext.java |  5 ++
 .../apache/sqoop/common/MutableMapContext.java  |  5 ++
 .../org/apache/sqoop/common/PrefixContext.java  |  4 ++
 .../org/apache/sqoop/common/SqoopException.java |  5 ++
 .../sqoop/common/SqoopProtocolConstants.java    |  5 ++
 .../apache/sqoop/common/SqoopResponseCode.java  |  5 ++
 .../sqoop/common/SupportedDirections.java       |  5 ++
 .../apache/sqoop/common/VersionAnnotation.java  |  5 ++
 .../org/apache/sqoop/common/VersionInfo.java    |  5 ++
 .../org/apache/sqoop/etl/io/DataReader.java     |  5 ++
 .../org/apache/sqoop/etl/io/DataWriter.java     |  5 ++
 .../apache/sqoop/job/etl/DestroyerContext.java  |  4 ++
 .../apache/sqoop/job/etl/ExtractorContext.java  |  4 ++
 .../sqoop/job/etl/InitializerContext.java       |  4 ++
 .../org/apache/sqoop/job/etl/LoaderContext.java |  4 ++
 .../sqoop/job/etl/PartitionerContext.java       |  4 ++
 .../sqoop/job/etl/TransferableContext.java      |  4 ++
 .../org/apache/sqoop/json/ConfigurableBean.java |  5 ++
 .../org/apache/sqoop/json/ConnectorBean.java    |  4 ++
 .../org/apache/sqoop/json/ConnectorsBean.java   |  4 ++
 .../java/org/apache/sqoop/json/DriverBean.java  |  4 ++
 .../java/org/apache/sqoop/json/JSONUtils.java   |  4 ++
 .../java/org/apache/sqoop/json/JobBean.java     |  4 ++
 .../java/org/apache/sqoop/json/JobsBean.java    |  4 ++
 .../java/org/apache/sqoop/json/JsonBean.java    |  4 ++
 .../java/org/apache/sqoop/json/LinkBean.java    |  4 ++
 .../java/org/apache/sqoop/json/LinksBean.java   |  4 ++
 .../java/org/apache/sqoop/json/SchemaBean.java  |  4 ++
 .../org/apache/sqoop/json/SubmissionBean.java   |  4 ++
 .../org/apache/sqoop/json/SubmissionsBean.java  |  4 ++
 .../org/apache/sqoop/json/ThrowableBean.java    |  4 ++
 .../apache/sqoop/json/ValidationResultBean.java |  4 ++
 .../java/org/apache/sqoop/json/VersionBean.java |  4 ++
 .../json/util/ConfigBundleSerialization.java    |  4 ++
 .../sqoop/json/util/ConfigInputConstants.java   |  5 ++
 .../json/util/ConfigInputSerialization.java     |  4 ++
 .../sqoop/json/util/SchemaSerialization.java    |  4 ++
 .../sqoop/json/util/SerializationError.java     |  4 ++
 .../java/org/apache/sqoop/model/Config.java     |  5 ++
 .../org/apache/sqoop/model/ConfigClass.java     |  5 ++
 .../org/apache/sqoop/model/ConfigUtils.java     |  4 ++
 .../org/apache/sqoop/model/Configurable.java    |  5 ++
 .../apache/sqoop/model/ConfigurationClass.java  |  5 ++
 .../main/java/org/apache/sqoop/model/Input.java |  5 ++
 .../apache/sqoop/model/MAccountableEntity.java  |  5 ++
 .../org/apache/sqoop/model/MBooleanInput.java   |  5 ++
 .../java/org/apache/sqoop/model/MClonable.java  |  5 ++
 .../java/org/apache/sqoop/model/MConfig.java    |  4 ++
 .../org/apache/sqoop/model/MConfigList.java     |  4 ++
 .../org/apache/sqoop/model/MConfigType.java     |  5 ++
 .../apache/sqoop/model/MConfigurableType.java   |  5 ++
 .../java/org/apache/sqoop/model/MConnector.java |  4 ++
 .../java/org/apache/sqoop/model/MDriver.java    |  5 ++
 .../org/apache/sqoop/model/MDriverConfig.java   |  6 +-
 .../java/org/apache/sqoop/model/MEnumInput.java |  4 ++
 .../org/apache/sqoop/model/MFromConfig.java     |  6 +-
 .../java/org/apache/sqoop/model/MInput.java     |  5 ++
 .../java/org/apache/sqoop/model/MInputType.java |  5 ++
 .../org/apache/sqoop/model/MIntegerInput.java   |  5 ++
 .../main/java/org/apache/sqoop/model/MJob.java  |  4 ++
 .../main/java/org/apache/sqoop/model/MLink.java |  5 ++
 .../org/apache/sqoop/model/MLinkConfig.java     |  5 ++
 .../java/org/apache/sqoop/model/MMapInput.java  |  4 ++
 .../org/apache/sqoop/model/MNamedElement.java   |  5 ++
 .../apache/sqoop/model/MPersistableEntity.java  |  5 ++
 .../org/apache/sqoop/model/MStringInput.java    |  4 ++
 .../org/apache/sqoop/model/MSubmission.java     |  4 ++
 .../java/org/apache/sqoop/model/MToConfig.java  |  6 +-
 .../apache/sqoop/model/MValidatedElement.java   |  4 ++
 .../java/org/apache/sqoop/model/ModelError.java |  4 ++
 .../org/apache/sqoop/model/SubmissionError.java |  5 ++
 .../java/org/apache/sqoop/model/Validator.java  |  4 ++
 .../apache/sqoop/schema/ByteArraySchema.java    |  4 ++
 .../org/apache/sqoop/schema/NullSchema.java     |  5 ++
 .../java/org/apache/sqoop/schema/Schema.java    |  4 ++
 .../org/apache/sqoop/schema/SchemaError.java    |  4 ++
 .../apache/sqoop/schema/SchemaMatchOption.java  |  5 ++
 .../schema/type/AbstractComplexListType.java    |  5 ++
 .../sqoop/schema/type/AbstractComplexType.java  |  5 ++
 .../sqoop/schema/type/AbstractDateTime.java     |  5 ++
 .../sqoop/schema/type/AbstractNumber.java       |  5 ++
 .../schema/type/AbstractPrimitiveType.java      |  5 ++
 .../sqoop/schema/type/AbstractString.java       |  5 ++
 .../org/apache/sqoop/schema/type/Array.java     |  5 ++
 .../org/apache/sqoop/schema/type/Binary.java    |  5 ++
 .../java/org/apache/sqoop/schema/type/Bit.java  |  5 ++
 .../org/apache/sqoop/schema/type/Column.java    |  4 ++
 .../apache/sqoop/schema/type/ColumnType.java    |  5 ++
 .../java/org/apache/sqoop/schema/type/Date.java |  5 ++
 .../org/apache/sqoop/schema/type/DateTime.java  |  5 ++
 .../org/apache/sqoop/schema/type/Decimal.java   |  5 ++
 .../java/org/apache/sqoop/schema/type/Enum.java |  6 +-
 .../apache/sqoop/schema/type/FixedPoint.java    |  5 ++
 .../apache/sqoop/schema/type/FloatingPoint.java |  5 ++
 .../java/org/apache/sqoop/schema/type/Map.java  |  5 ++
 .../java/org/apache/sqoop/schema/type/Set.java  |  5 ++
 .../java/org/apache/sqoop/schema/type/Text.java |  5 ++
 .../java/org/apache/sqoop/schema/type/Time.java |  5 ++
 .../org/apache/sqoop/schema/type/Unknown.java   |  5 ++
 .../sqoop/submission/SubmissionStatus.java      |  5 ++
 .../sqoop/submission/counter/Counter.java       |  5 ++
 .../sqoop/submission/counter/CounterGroup.java  |  5 ++
 .../sqoop/submission/counter/Counters.java      |  5 ++
 .../sqoop/submission/counter/SqoopCounters.java |  5 ++
 .../java/org/apache/sqoop/utils/ClassUtils.java |  4 ++
 .../apache/sqoop/utils/MapResourceBundle.java   |  5 ++
 .../org/apache/sqoop/utils/UrlSafeUtils.java    |  5 ++
 .../sqoop/validation/ConfigValidationError.java |  4 ++
 .../validation/ConfigValidationResult.java      |  4 ++
 .../validation/ConfigValidationRunner.java      |  4 ++
 .../org/apache/sqoop/validation/Message.java    |  5 ++
 .../org/apache/sqoop/validation/Status.java     |  5 ++
 .../validators/AbstractValidator.java           |  4 ++
 .../validation/validators/CSVURIValidator.java  |  4 ++
 .../validation/validators/ClassAvailable.java   |  4 ++
 .../sqoop/validation/validators/Contains.java   |  4 ++
 .../validators/DatasetURIValidator.java         |  4 ++
 .../validators/HostAndPortValidator.java        |  4 ++
 .../sqoop/validation/validators/NotEmpty.java   |  4 ++
 .../sqoop/validation/validators/NotNull.java    |  4 ++
 .../validation/validators/NullOrContains.java   |  4 ++
 .../sqoop/validation/validators/StartsWith.java |  4 ++
 connector/connector-sdk/pom.xml                 |  4 +-
 .../sqoop/configurable/ConfigurableError.java   |  4 ++
 .../configurable/ConfigurableUpgradeUtil.java   |  4 ++
 .../connector/common/AvroDataTypeUtil.java      |  4 ++
 .../connector/common/EmptyConfiguration.java    |  4 ++
 .../sqoop/connector/common/FileFormat.java      |  5 ++
 .../apache/sqoop/connector/common/JarUtil.java  |  5 ++
 .../sqoop/connector/common/SqoopAvroUtils.java  |  4 ++
 .../sqoop/connector/common/SqoopIDFUtils.java   |  5 +-
 .../idf/AVROIntermediateDataFormat.java         |  4 ++
 .../idf/AVROIntermediateDataFormatError.java    |  4 ++
 .../idf/CSVIntermediateDataFormat.java          |  4 ++
 .../idf/CSVIntermediateDataFormatError.java     |  4 ++
 .../connector/idf/IntermediateDataFormat.java   |  4 ++
 .../idf/IntermediateDataFormatError.java        |  4 ++
 .../idf/JSONIntermediateDataFormat.java         |  4 ++
 .../idf/JSONIntermediateDataFormatError.java    |  4 ++
 .../connector/matcher/LocationMatcher.java      |  4 ++
 .../apache/sqoop/connector/matcher/Matcher.java |  4 ++
 .../sqoop/connector/matcher/MatcherError.java   |  4 ++
 .../sqoop/connector/matcher/MatcherFactory.java |  4 ++
 .../sqoop/connector/matcher/NameMatcher.java    |  4 ++
 .../spi/ConnectorConfigurableUpgrader.java      |  6 +-
 .../sqoop/connector/spi/SqoopConnector.java     |  4 ++
 .../java/org/apache/sqoop/job/Constants.java    |  5 ++
 .../org/apache/sqoop/job/etl/Destroyer.java     |  5 ++
 .../org/apache/sqoop/job/etl/Extractor.java     |  5 ++
 .../java/org/apache/sqoop/job/etl/From.java     |  5 ++
 .../org/apache/sqoop/job/etl/Initializer.java   |  4 ++
 .../java/org/apache/sqoop/job/etl/Loader.java   |  5 ++
 .../org/apache/sqoop/job/etl/Partition.java     |  5 ++
 .../org/apache/sqoop/job/etl/Partitioner.java   |  5 ++
 .../main/java/org/apache/sqoop/job/etl/To.java  |  5 ++
 .../org/apache/sqoop/job/etl/Transferable.java  |  5 ++
 pom.xml                                         |  1 -
 165 files changed, 862 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/client/src/main/java/org/apache/sqoop/client/SqoopClient.java
----------------------------------------------------------------------
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 e1f009c..6efa016 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.List;
 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 @@ import org.apache.sqoop.validation.Status;
  * (Resources, Connector structures). Volatile structures (Links, Jobs)
  * are not cached.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class SqoopClient {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/classification/InterfaceAudience.java
----------------------------------------------------------------------
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 0000000..3cfb5f4
--- /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}. <br>
+ * All public classes must have InterfaceAudience annotation. <br>
+ * <ul>
+ * <li>Public classes that are not marked with this annotation must be
+ * considered by default as {@link Private}.</li>
+ *
+ * <li>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.</li>
+ *
+ * <li>Sqoop project must only use classes that are marked
+ * {@link LimitedPrivate} or {@link Public}</li>
+ *
+ * <li> 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}
+ * </li></ul>
+ */
+@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

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/classification/InterfaceStability.java
----------------------------------------------------------------------
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 0000000..29fba89
--- /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}. <br>
+ *
+ * <ul><li>All classes that are annotated with {@link Public} or
+ * {@link LimitedPrivate} must have InterfaceStability annotation. </li>
+ * <li>Classes that are {@link Private} are to be considered unstable unless
+ * a different InterfaceStability annotation states otherwise.</li>
+ * <li>Incompatible changes must not be made to classes marked as stable.</li>
+ * </ul>
+ */
+@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

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/Direction.java
----------------------------------------------------------------------
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 1576b96..44c53bc 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 @@ package org.apache.sqoop.common;
  * is being used to load data TO, then the connector type
  * will be TO.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
 public enum Direction {
   FROM,
   TO

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/DirectionError.java
----------------------------------------------------------------------
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 288c954..425d4cb 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. */

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/ErrorCode.java
----------------------------------------------------------------------
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 0458a57..d8f9d4b 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 {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/ImmutableContext.java
----------------------------------------------------------------------
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 69f3a03..7eed27f 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 {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/MapContext.java
----------------------------------------------------------------------
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 d1f9420..d23ff1a 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 @@ import java.util.regex.Pattern;
 /**
  * ImmutableContext implementation based on (Hash)Map.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class MapContext implements ImmutableContext {
 
   private final Map<String, String> options;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/MutableContext.java
----------------------------------------------------------------------
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 ddf8af0..272343f 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 {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/MutableMapContext.java
----------------------------------------------------------------------
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 bb03ec0..61751bf 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 @@ import java.util.Map;
 /**
  * Mutable variant of context class for "special" usage
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class MutableMapContext extends MapContext implements Iterable<Map.Entry<String, String>>, MutableContext {
 
   public MutableMapContext(Map<String, String> options) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/PrefixContext.java
----------------------------------------------------------------------
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 6434e6d..8d33861 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 @@ import org.apache.sqoop.common.ImmutableContext;
  * object. Each context property is prefixed with special prefix and loaded
  * directly.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class PrefixContext implements ImmutableContext {
 
   Configuration configuration;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/SqoopException.java
----------------------------------------------------------------------
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 6c5dc2a..06b39e6 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 {
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/SqoopProtocolConstants.java
----------------------------------------------------------------------
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 8f4f709..72b5d87 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";
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/SqoopResponseCode.java
----------------------------------------------------------------------
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 93a43f5..da50078 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"),

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/SupportedDirections.java
----------------------------------------------------------------------
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 c527117..2fae427 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<SupportedDirections> {
   private static final char SUPPORTED_DIRECTIONS_SEPARATOR = '/';
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/VersionAnnotation.java
----------------------------------------------------------------------
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 728a3a7..2fcbbb2 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 {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/common/VersionInfo.java
----------------------------------------------------------------------
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 1b4873b..a7f5716 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;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/etl/io/DataReader.java
----------------------------------------------------------------------
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 a555431..c6cd2b3 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 {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/etl/io/DataWriter.java
----------------------------------------------------------------------
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 2166b09..c0fe08c 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 {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/job/etl/DestroyerContext.java
----------------------------------------------------------------------
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 7afb120..f4f6d1d 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 @@ import org.apache.sqoop.schema.Schema;
  *
  * This class is wrapping information if the run was successful or not.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class DestroyerContext extends TransferableContext {
 
   private boolean success;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/job/etl/ExtractorContext.java
----------------------------------------------------------------------
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 1e0f0ec..43fcaa2 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 @@ import org.apache.sqoop.schema.Schema;
  *
  * This class is wrapping writer object.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class ExtractorContext extends TransferableContext {
 
   private final DataWriter writer;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/job/etl/InitializerContext.java
----------------------------------------------------------------------
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 4de00a6..469132b 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 @@ import org.apache.sqoop.common.MutableContext;
  *
  * This class is returning mutable context instead of immutable.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class InitializerContext extends TransferableContext {
 
   public InitializerContext(MutableContext context) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/job/etl/LoaderContext.java
----------------------------------------------------------------------
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 9d556eb..f9ea9ad 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 @@ import org.apache.sqoop.schema.Schema;
  *
  * This class is also wrapping reader object.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class LoaderContext extends TransferableContext {
 
   private final DataReader reader;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/job/etl/PartitionerContext.java
----------------------------------------------------------------------
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 79901fd..67fffd6 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 @@ import org.apache.sqoop.schema.Schema;
  *
  * This class is also wrapping number of maximal allowed partitions.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class PartitionerContext extends TransferableContext {
 
   private long maxPartitions;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/job/etl/TransferableContext.java
----------------------------------------------------------------------
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 e57bf45..ad18e29 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;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/ConfigurableBean.java
----------------------------------------------------------------------
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 49dd057..0b79666 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 @@ package org.apache.sqoop.json;
  * 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 {
 
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
----------------------------------------------------------------------
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 6dc14d0..0322032 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.List;
 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 @@ import org.json.simple.JSONObject;
  * Json representation of the connector object
  *
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class ConnectorBean extends ConfigurableBean {
 
   // to represent the config and inputs with values

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/ConnectorsBean.java
----------------------------------------------------------------------
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 b04594e..88b71f5 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.List;
 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 @@ import org.json.simple.JSONObject;
  * Json representation of the connectors object
  *
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class ConnectorsBean extends ConnectorBean {
 
   // to represent the config and inputs with values

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/DriverBean.java
----------------------------------------------------------------------
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 593ce2f..6012917 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 static org.apache.sqoop.json.util.ConfigBundleSerialization.restoreConfig
 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 @@ import org.json.simple.JSONObject;
 /**
  * Json representation of the driver
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class DriverBean extends ConfigurableBean {
 
   public static final String CURRENT_DRIVER_VERSION = "1";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/JSONUtils.java
----------------------------------------------------------------------
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 e7551d2..ff8f9ea 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 @@ import java.io.Reader;
 
 /**
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class JSONUtils {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/JobBean.java
----------------------------------------------------------------------
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 00cba56..0561ade 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.List;
 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 @@ import org.json.simple.JSONObject;
 /**
  * Json representation of the job
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class JobBean implements JsonBean {
 
   static final String FROM_LINK_ID = "from-link-id";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/JobsBean.java
----------------------------------------------------------------------
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 3c454ea..c62ab49 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 @@ package org.apache.sqoop.json;
 
 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 @@ import org.json.simple.JSONObject;
 /**
  * Json representation of the jobs
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class JobsBean extends JobBean {
 
   private static final String JOBS = "jobs";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/JsonBean.java
----------------------------------------------------------------------
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 7cf24ba..1dd275e 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

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/LinkBean.java
----------------------------------------------------------------------
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 5ee4e01..2e2406f 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.List;
 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 @@ import org.json.simple.JSONObject;
  * 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";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/LinksBean.java
----------------------------------------------------------------------
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 58cacb9..6e4a906 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 @@ package org.apache.sqoop.json;
 
 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";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/SchemaBean.java
----------------------------------------------------------------------
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 f51fec8..9ba22e5 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 @@ import org.json.simple.JSONObject;
 /**
  *
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class SchemaBean implements JsonBean {
 
   private Schema schema;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
----------------------------------------------------------------------
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 66db0d4..ad05057 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.List;
 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 @@ import org.json.simple.JSONObject;
 /**
  *
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class SubmissionBean implements JsonBean {
 
   private static final String SUBMISSION = "submission";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/SubmissionsBean.java
----------------------------------------------------------------------
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 74b6179..019abf1 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 @@ package org.apache.sqoop.json;
 
 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";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/ThrowableBean.java
----------------------------------------------------------------------
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 cd26020..7748247 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 @@ import java.util.List;
 /**
  * Transfer throwable instance as a throwable bean.
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class ThrowableBean implements JsonBean {
 
   public static final String MESSAGE = "message";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/ValidationResultBean.java
----------------------------------------------------------------------
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 e9b4899..4ac9533 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 @@ import java.util.Set;
 /**
  * Serialize and transfer validation results (0..N).
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class ValidationResultBean implements JsonBean {
 
   private static final String VALIDATION_RESULT = "validation-result";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/VersionBean.java
----------------------------------------------------------------------
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 53d19b1..3746ca4 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";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/util/ConfigBundleSerialization.java
----------------------------------------------------------------------
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 6133798..d91eceb 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 @@ import java.util.ResourceBundle;
 /**
  *
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public final class ConfigBundleSerialization {
 
   @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/util/ConfigInputConstants.java
----------------------------------------------------------------------
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 df8a870..5d261de 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";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
----------------------------------------------------------------------
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 4667f5c..8b11ed5 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 @@ import java.util.Map;
 /**
  * Convenient static methods for serializing config and input objects.
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public final class ConfigInputSerialization {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
----------------------------------------------------------------------
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 bbd58fc..a6425fe 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 @@ package org.apache.sqoop.json.util;
 
 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 @@ import org.json.simple.JSONObject;
 /**
  *
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public class SchemaSerialization {
 
   // common attributes of all column types

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/json/util/SerializationError.java
----------------------------------------------------------------------
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 3d440da..d5cdb31 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."),

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/Config.java
----------------------------------------------------------------------
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 b4d847d..644cffe 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 {
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/ConfigClass.java
----------------------------------------------------------------------
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 f925759..8602a10 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 @@ import java.lang.annotation.Target;
 /**
  * Denote configuration class
  */
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.TYPE)
 public @interface ConfigClass {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java
----------------------------------------------------------------------
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 3765a6d..279f3a6 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 @@ import java.util.Set;
  *
  * 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 {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/Configurable.java
----------------------------------------------------------------------
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 2033fcb..ea544e5 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

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/ConfigurationClass.java
----------------------------------------------------------------------
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 c65c478..0fface8 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 @@ import java.lang.annotation.Target;
  * 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 {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/Input.java
----------------------------------------------------------------------
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 db3e0e6..b6305f2 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 @@ import java.lang.annotation.Target;
  * 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 {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MAccountableEntity.java
----------------------------------------------------------------------
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 094af39..a2ec587 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;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MBooleanInput.java
----------------------------------------------------------------------
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 da380dd..c7fcf90 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 <tt>Boolean</tt> input.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class MBooleanInput extends MInput<Boolean> {
 
   public MBooleanInput(String name, boolean sensitive) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MClonable.java
----------------------------------------------------------------------
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 6353779..2284d79 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

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MConfig.java
----------------------------------------------------------------------
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 b5d2afd..d128441 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 @@ import java.util.List;
  * 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<MInput<?>> inputs;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MConfigList.java
----------------------------------------------------------------------
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 20309e1..add80d8 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 @@ import java.util.List;
 /**
  * Arbitrary list of config objects.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class MConfigList implements MClonable {
 
   private final List<MConfig> configObjects;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MConfigType.java
----------------------------------------------------------------------
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 a9f7dad..fa29d5a 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 */

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MConfigurableType.java
----------------------------------------------------------------------
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 7ab7032..b147d7d 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 */

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MConnector.java
----------------------------------------------------------------------
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 1b9462e..d49f620 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 @@ import org.apache.sqoop.common.SupportedDirections;
  * 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;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MDriver.java
----------------------------------------------------------------------
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 cc47511..75eaa46 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";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MDriverConfig.java
----------------------------------------------------------------------
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 3faf1d3..77d947f 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<MConfig> configs) {
     super(configs, MConfigType.JOB);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MEnumInput.java
----------------------------------------------------------------------
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 28830f4..74838fc 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 @@ import java.util.Arrays;
 /**
  *
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public class MEnumInput extends MInput<String> {
 
   /**

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MFromConfig.java
----------------------------------------------------------------------
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 1e9e845..7093a93 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<MConfig> configs) {
     super(configs, MConfigType.JOB);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MInput.java
----------------------------------------------------------------------
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 0074267..d1c2ab6 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 <T> 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<T> extends MValidatedElement implements MClonable {
   private final boolean sensitive;
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MInputType.java
----------------------------------------------------------------------
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 af40054..bdc3424 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 */

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MIntegerInput.java
----------------------------------------------------------------------
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 a43f440..de50cd4 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<Integer> {
 
   public MIntegerInput(String name, boolean sensitive) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MJob.java
----------------------------------------------------------------------
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 935dd18..4b5c896 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 @@ import org.apache.sqoop.common.SqoopException;
  * 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

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MLink.java
----------------------------------------------------------------------
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 8e31861..062a4c5 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

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MLinkConfig.java
----------------------------------------------------------------------
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 040dca4..9042ca5 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 @@ import java.util.List;
  * 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<MConfig> configs) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MMapInput.java
----------------------------------------------------------------------
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 37dd265..cf781b2 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.HashMap;
 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<Map<String, String>> {
 
   public MMapInput(String name, boolean sensitive) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MNamedElement.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/model/MNamedElement.java b/common/src/main/java/org/apache/sqoop/model/MNamedElement.java
index ddacfcd..b18eaf1 100644
--- a/common/src/main/java/org/apache/sqoop/model/MNamedElement.java
+++ b/common/src/main/java/org/apache/sqoop/model/MNamedElement.java
@@ -17,9 +17,14 @@
  */
 package org.apache.sqoop.model;
 
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
 /**
  * Represents an element of metadata used by the connector.
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public abstract class MNamedElement extends MPersistableEntity {
   private static final String LABEL_KEY_SUFFIX = ".label";
   private static final String HELP_KEY_SUFFIX = ".help";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MPersistableEntity.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/model/MPersistableEntity.java b/common/src/main/java/org/apache/sqoop/model/MPersistableEntity.java
index 6507aca..721daed 100644
--- a/common/src/main/java/org/apache/sqoop/model/MPersistableEntity.java
+++ b/common/src/main/java/org/apache/sqoop/model/MPersistableEntity.java
@@ -17,9 +17,14 @@
  */
 package org.apache.sqoop.model;
 
+import org.apache.sqoop.classification.InterfaceAudience;
+import org.apache.sqoop.classification.InterfaceStability;
+
 /**
  * Represents a persistable metadata entity.
  */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
 public abstract class MPersistableEntity {
 
   public static final long PERSISTANCE_ID_DEFAULT = -1L;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/89f737b2/common/src/main/java/org/apache/sqoop/model/MStringInput.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/model/MStringInput.java b/common/src/main/java/org/apache/sqoop/model/MStringInput.java
index 289a4ee..4854838 100644
--- a/common/src/main/java/org/apache/sqoop/model/MStringInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MStringInput.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.utils.UrlSafeUtils;
 
 /**
@@ -25,6 +27,8 @@ import org.apache.sqoop.utils.UrlSafeUtils;
  * from user-view. This is helpful for creating input strings that represent
  * sensitive information such as passwords.
  */
+@InterfaceAudience.Public
+@InterfaceStability.Unstable
 public final class MStringInput extends MInput<String> {
 
   private final short maxLength;