SQOOP-3153: Sqoop export with --as-<spec_file_format> error message could be more verbose
(Ferenc Szabo via Szabolcs Vasas)
diff --git a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
index 6a4dcb0..b4f972c 100644
--- a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
+++ b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
@@ -312,7 +312,7 @@
}
/**
- * Examines a subset of the arrray presented, and determines if it
+ * Examines a subset of the array presented, and determines if it
* contains any non-empty arguments. If so, logs the arguments
* and returns true.
*
diff --git a/src/java/org/apache/sqoop/tool/ExportTool.java b/src/java/org/apache/sqoop/tool/ExportTool.java
index cd6cdf3..4bd2fed 100644
--- a/src/java/org/apache/sqoop/tool/ExportTool.java
+++ b/src/java/org/apache/sqoop/tool/ExportTool.java
@@ -19,6 +19,8 @@
package org.apache.sqoop.tool;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import org.apache.commons.cli.CommandLine;
@@ -41,6 +43,16 @@
public class ExportTool extends com.cloudera.sqoop.tool.BaseSqoopTool {
public static final Log LOG = LogFactory.getLog(ExportTool.class.getName());
+ public static final String NOT_SUPPORTED_FILE_FORMAT_ERROR_MSG = "Please note that the export tool " +
+ "detects the file format automatically and does not support it as an argument: %s";
+
+ private final List<String> unsupportedArguments =
+ Collections.unmodifiableList(
+ Arrays.asList(
+ BaseSqoopTool.FMT_PARQUETFILE_ARG,
+ BaseSqoopTool.FMT_AVRODATAFILE_ARG,
+ BaseSqoopTool.FMT_SEQUENCEFILE_ARG)
+ );
private CodeGenTool codeGenerator;
@@ -383,6 +395,26 @@
vaildateDirectExportOptions(options);
}
+ @Override
+ /** {@inheritDoc} */
+ protected boolean hasUnrecognizedArgs(String [] argv, int offset, int len) {
+ boolean unrecognizedArgs = super.hasUnrecognizedArgs(argv, offset, len);
+ for (String arg : argv) {
+ if (unsupportedArguments.contains(stripLeadingHyphens(arg))) {
+ LOG.error(String.format(NOT_SUPPORTED_FILE_FORMAT_ERROR_MSG, arg));
+ }
+ }
+ return unrecognizedArgs;
+ }
+
+ private String stripLeadingHyphens(String arg) {
+ if (arg != null
+ && arg.startsWith("--")) {
+ return arg.substring(2);
+ }
+ return arg;
+ }
+
void vaildateDirectExportOptions(SqoopOptions options) throws InvalidOptionsException {
if (options.isDirect()) {
validateHasDirectConnectorOption(options);