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 fa9cd5cf..6b9a7f9c 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 @@ -90,7 +90,7 @@ public static JSONObject extractSchema(Schema schema) { object.put(NOTE, schema.getNote()); } JSONArray columnArray = new JSONArray(); - for (Column column : schema.getColumns()) { + for (Column column : schema.getColumnsArray()) { columnArray.add(extractColumn(column)); } object.put(COLUMNS, columnArray); diff --git a/common/src/main/java/org/apache/sqoop/schema/Schema.java b/common/src/main/java/org/apache/sqoop/schema/Schema.java index 496f6e31..9eef72b2 100644 --- a/common/src/main/java/org/apache/sqoop/schema/Schema.java +++ b/common/src/main/java/org/apache/sqoop/schema/Schema.java @@ -117,7 +117,11 @@ public Schema setCreationDate(Date creationDate) { return this; } - public List getColumns() { + public Column[] getColumnsArray() { + return columns.toArray(new Column[columns.size()]); + } + + public List getColumnsList() { return columns; } diff --git a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java index ab1c64aa..03a2930c 100644 --- a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java +++ b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java @@ -58,7 +58,7 @@ public void extract(ExtractorContext context, LinkConfiguration linkConfig, ResultSet resultSet = executor.executeQuery(query); Schema schema = context.getSchema(); - Column[] schemaColumns = schema.getColumns().toArray(new Column[schema.getColumns().size()]); + Column[] schemaColumns = schema.getColumnsArray(); try { ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); diff --git a/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java b/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java index 23a715f3..d3a7847a 100644 --- a/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java +++ b/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java @@ -59,7 +59,7 @@ public static Schema createAvroSchema( Schema schema = Schema.createRecord(name, doc, namespace, false); List fields = new ArrayList(); - for (Column column : sqoopSchema.getColumns()) { + for (Column column : sqoopSchema.getColumnsArray()) { Schema.Field field = new Schema.Field(column.getName(), createAvroFieldSchema(column), null, null); field.addProp(SQOOP_TYPE, column.getType().toString()); diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java index 75296768..846aefdf 100644 --- a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java +++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java @@ -100,7 +100,7 @@ public void setSchema(Schema schema) { return; } this.schema = schema; - List columns = schema.getColumns(); + Column[] columns = schema.getColumnsArray(); int i = 0; for (Column col : columns) { if (isColumnStringType(col)) { @@ -192,13 +192,13 @@ public Object[] getObjectData() { return null; } - if (fieldStringArray.length != schema.getColumns().size()) { + if (fieldStringArray.length != schema.getColumnsArray().length) { throw new SqoopException(CSVIntermediateDataFormatError.CSV_INTERMEDIATE_DATA_FORMAT_0005, "The data " + getCSVTextData() + " has the wrong number of fields."); } Object[] objectArray = new Object[fieldStringArray.length]; - Column[] columnArray = schema.getColumns().toArray(new Column[fieldStringArray.length]); + Column[] columnArray = schema.getColumnsArray(); for (int i = 0; i < fieldStringArray.length; i++) { // check for NULL field and bail out immediately if (fieldStringArray[i].equals(NULL_VALUE)) { @@ -266,7 +266,7 @@ private Object toObject(String csvString, Column column) { @Override public void setObjectData(Object[] data) { Set nullValueIndices = new HashSet(); - Column[] columnArray = schema.getColumns().toArray(new Column[data.length]); + Column[] columnArray = schema.getColumnsArray(); // check for null for (int i = 0; i < data.length; i++) { if (data[i] == null) { diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java index 58b709e4..879684c2 100644 --- a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java +++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java @@ -42,7 +42,7 @@ public LocationMatcher(Schema from, Schema to) { @Override public Object[] getMatchingData(Object[] fields) { - Object[] out = new Object[getToSchema().getColumns().size()]; + Object[] out = new Object[getToSchema().getColumnsArray().length]; int i = 0; @@ -52,7 +52,7 @@ public Object[] getMatchingData(Object[] fields) { return fields; } - for (Column col: getToSchema().getColumns()) { + for (Column col: getToSchema().getColumnsArray()) { if (i < fields.length) { if (isNull(fields[i])) { out[i] = null; diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java index 69d5ebd7..9c2f7d55 100644 --- a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java +++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java @@ -35,21 +35,21 @@ public NameMatcher(Schema from, Schema to) { @Override public Object[] getMatchingData(Object[] fields) { - Object[] out = new Object[getToSchema().getColumns().size()]; + Object[] out = new Object[getToSchema().getColumnsArray().length]; HashMap colNames = new HashMap(); - for (Column fromCol: getFromSchema().getColumns()) { + for (Column fromCol: getFromSchema().getColumnsArray()) { colNames.put(fromCol.getName(), fromCol); } int toIndex = 0; - for (Column toCol: getToSchema().getColumns()) { + for (Column toCol: getToSchema().getColumnsArray()) { Column fromCol = colNames.get(toCol.getName()); if (fromCol != null) { - int fromIndex = getFromSchema().getColumns().indexOf(fromCol); + int fromIndex = getFromSchema().getColumnsList().indexOf(fromCol); if (isNull(fields[fromIndex])) { out[toIndex] = null; } else {