5
0
mirror of https://github.com/apache/sqoop.git synced 2025-05-05 02:10:01 +08:00

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

(Abraham Elmahrek via Jarek Jarcec Cecho)
This commit is contained in:
Jarek Jarcec Cecho 2015-01-21 07:43:16 -08:00
parent e41bc6e31f
commit 89f737b2ac
165 changed files with 862 additions and 10 deletions

View File

@ -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 {
/**

View File

@ -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
}

View File

@ -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 {};
}

View File

@ -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

View File

@ -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. */

View File

@ -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 {
/**

View File

@ -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 {
/**

View File

@ -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<String, String> options;

View File

@ -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 {
/**

View File

@ -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<Map.Entry<String, String>>, MutableContext {
public MutableMapContext(Map<String, String> options) {

View File

@ -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;

View File

@ -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 {

View File

@ -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";

View File

@ -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"),

View File

@ -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 = '/';

View File

@ -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 {

View File

@ -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;

View File

@ -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 {
/**

View File

@ -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 {
/**

View File

@ -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;

View File

@ -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;

View File

@ -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) {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {
}

View File

@ -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

View File

@ -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

View File

@ -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";

View File

@ -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 {
/**

View File

@ -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";

View File

@ -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";

View File

@ -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

View File

@ -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";

View File

@ -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";

View File

@ -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;

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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")

View File

@ -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";

View File

@ -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 {
/**

View File

@ -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

View File

@ -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."),

View File

@ -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 {
/**

View File

@ -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 {

View File

@ -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 {
/**

View File

@ -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 {
}

View File

@ -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 {

View File

@ -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 {

View File

@ -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;

View File

@ -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) {

View File

@ -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

View File

@ -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<MInput<?>> inputs;

View File

@ -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<MConfig> configObjects;

View File

@ -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 */

View File

@ -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 */

View File

@ -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;

View File

@ -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";

View File

@ -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);

View File

@ -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<String> {
/**

View File

@ -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);

View File

@ -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;

View File

@ -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 */

View File

@ -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) {

View File

@ -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

View File

@ -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

View File

@ -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<MConfig> configs) {

View File

@ -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<Map<String, String>> {
public MMapInput(String name, boolean sensitive) {

View File

@ -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";

View File

@ -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;

View File

@ -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 @@
* 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;

View File

@ -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.schema.Schema;
import org.apache.sqoop.submission.SubmissionStatus;
import org.apache.sqoop.submission.counter.Counters;
@ -29,6 +31,8 @@
* Please note that not all properties are persisted in repository at the
* moment.
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class MSubmission extends MAccountableEntity {
/**

View File

@ -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 TO part of the job
* 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 TO object
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class MToConfig extends MConfigList {
public MToConfig(List<MConfig> configs) {
super(configs, MConfigType.JOB);

View File

@ -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.validation.Message;
import org.apache.sqoop.validation.Status;
@ -26,6 +28,8 @@
/**
* Element that can have associated validation messages (0..N).
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class MValidatedElement extends MNamedElement {
/**

View File

@ -17,11 +17,15 @@
*/
package org.apache.sqoop.model;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ErrorCode;
/**
*
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public enum ModelError implements ErrorCode {
MODEL_001("Attempt to pass two different set of MConfigs for single job type."),

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.model;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
*Represents the job submission error
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class SubmissionError {
/**

View File

@ -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.validation.validators.AbstractValidator;
import java.lang.annotation.Retention;
@ -31,6 +33,8 @@
* To specify string parameter call:
* @Validator(value = ClassName.class, strArg = "Hello World!")
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
@Retention(RetentionPolicy.RUNTIME)
public @interface Validator {
/**

View File

@ -17,12 +17,16 @@
*/
package org.apache.sqoop.schema;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.schema.type.Binary;
/***
* Schema holding a single field of Binary data Used to support connectors to
* schemaless / unstructured systems Such as HDFS or Kafka
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class ByteArraySchema extends Schema {
private static final String BYTE_ARRAY_SCHEMA_NAME = "ByteArraySchema";

View File

@ -17,6 +17,11 @@
*/
package org.apache.sqoop.schema;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class NullSchema extends Schema {
private static final String NULL_SCHEMA_NAME = "NullSchema";

View File

@ -18,6 +18,8 @@
package org.apache.sqoop.schema;
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.schema.type.Column;
@ -33,6 +35,8 @@
* Schema represents the data fields that are transferred between {@link #From}
* and {@link #To}
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class Schema {
/**

View File

@ -17,11 +17,15 @@
*/
package org.apache.sqoop.schema;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
import org.apache.sqoop.common.ErrorCode;
/**
*
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public enum SchemaError implements ErrorCode {
SCHEMA_0000("Unknown error"),

View File

@ -17,6 +17,9 @@
*/
package org.apache.sqoop.schema;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* The order of the matching options here indicates an order of preference
* if it is possible to use both NAME and LOCATION matching options, we will prefer NAME
@ -31,6 +34,8 @@
*
* USER_DEFINED - not implemented yet.
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public enum SchemaMatchOption {
NAME,
LOCATION,

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Complex types that can have nested data as a map or list structure
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class AbstractComplexListType extends AbstractComplexType {
// represents the type of the list elements

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Complex types that can have nested data as a map or list structure
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class AbstractComplexType extends Column {
public AbstractComplexType(String name) {

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Any time or date related data type.
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class AbstractDateTime extends Column {
protected AbstractDateTime(String name) {

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Any type related to number.
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class AbstractNumber extends AbstractPrimitiveType {
protected AbstractNumber(String name) {

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Primitive type for column
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class AbstractPrimitiveType extends Column {
public AbstractPrimitiveType(String name) {

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Any type that is encoding character (or byte) array.
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class AbstractString extends AbstractPrimitiveType {
/**

View File

@ -17,11 +17,16 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Array contains multiple values of the same type.
*
* JDBC Types: array
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class Array extends AbstractComplexListType {
/**

View File

@ -17,11 +17,16 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Binary type can contain any binary value (images, text, ...).
*
* JDBC Types: blob, binary, varbinary
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class Binary extends AbstractString {
public Binary(String name) {

View File

@ -17,11 +17,16 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* True/False value.
*
* JDBC Types: bit, boolean
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class Bit extends Column {
public Bit(String name) {

View File

@ -18,12 +18,16 @@
package org.apache.sqoop.schema.type;
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.schema.SchemaError;
/**
* Base class for all the supported types in the Sqoop {@link #Schema}
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public abstract class Column {
/**

View File

@ -17,9 +17,14 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* All {@link #Column} types supported by Sqoop.
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public enum ColumnType {
ARRAY,
BINARY,

View File

@ -17,11 +17,16 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Date (year, month, day).
*
* JDBC Types: date
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class Date extends AbstractDateTime {
public Date(String name) {

View File

@ -17,11 +17,16 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Date and time information together.
*
* JDBC Types: datetime, timestamp
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class DateTime extends AbstractDateTime {
/**

View File

@ -17,11 +17,16 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
/**
* Fixed point number with configurable precision and scale.
*
* JDBC Types: numeric, decimal
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class Decimal extends AbstractNumber {
/**

View File

@ -17,6 +17,9 @@
*/
package org.apache.sqoop.schema.type;
import org.apache.sqoop.classification.InterfaceAudience;
import org.apache.sqoop.classification.InterfaceStability;
import java.util.Set;
import java.util.HashSet;
@ -25,7 +28,8 @@
*
* JDBC Types: enum
*/
@InterfaceAudience.Public
@InterfaceStability.Unstable
public class Enum extends Column {
// The options set contains the possible values for the Enum

Some files were not shown because too many files have changed in this diff Show More