Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 3C8D6200CCB for ; Thu, 20 Jul 2017 17:23:19 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 3AD7516B84D; Thu, 20 Jul 2017 15:23:19 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 34D7116B84C for ; Thu, 20 Jul 2017 17:23:18 +0200 (CEST) Received: (qmail 89027 invoked by uid 500); 20 Jul 2017 15:23:17 -0000 Mailing-List: contact notifications-help@freemarker.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@freemarker.incubator.apache.org Delivered-To: mailing list notifications@freemarker.incubator.apache.org Received: (qmail 89014 invoked by uid 99); 20 Jul 2017 15:23:17 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Jul 2017 15:23:17 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id D7B7CC02BE for ; Thu, 20 Jul 2017 15:23:16 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.222 X-Spam-Level: X-Spam-Status: No, score=-4.222 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id w9Cp6t2Jqr3R for ; Thu, 20 Jul 2017 15:23:15 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 1DDAA5F6C8 for ; Thu, 20 Jul 2017 15:23:13 +0000 (UTC) Received: (qmail 88995 invoked by uid 99); 20 Jul 2017 15:23:13 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Jul 2017 15:23:13 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 66640E96EA; Thu, 20 Jul 2017 15:23:11 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ddekany@apache.org To: notifications@freemarker.incubator.apache.org Date: Thu, 20 Jul 2017 15:23:11 -0000 Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: [1/3] incubator-freemarker git commit: FM2 to FM3 converter properties cleanup archived-at: Thu, 20 Jul 2017 15:23:19 -0000 Repository: incubator-freemarker Updated Branches: refs/heads/3 23341885a -> 4306b7d73 FM2 to FM3 converter properties cleanup Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/557b5edf Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/557b5edf Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/557b5edf Branch: refs/heads/3 Commit: 557b5edf6643cb2805c652577e0cca9b9bf70cf7 Parents: 2334188 Author: ddekany Authored: Thu Jul 20 14:23:46 2017 +0200 Committer: ddekany Committed: Thu Jul 20 14:23:46 2017 +0200 ---------------------------------------------------------------------- .../freemarker/converter/FM2ToFM3Converter.java | 48 ++++++++++++++++---- .../converter/FM2ToFM3ConverterCLI.java | 15 +++--- .../converter/FM2ToFM3ConverterCLITest.java | 1 - 3 files changed, 45 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/557b5edf/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java ---------------------------------------------------------------------- diff --git a/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java b/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java index ea9d9c2..3ba7a02 100644 --- a/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java +++ b/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java @@ -72,7 +72,7 @@ public class FM2ToFM3Converter extends Converter { public static final Pattern DEFAULT_INCLUDE = Pattern.compile("(?i).*\\.(fm|ftl(x|h)?)"); - public static final Map DEFAULT_FILE_EXTENSION_SUBSTITUTIONS + public static final Map PREDEFINED_FILE_EXTENSION_SUBSTITUTIONS = new ImmutableMap.Builder() .put("ftl", "fm3") .put("ftlh", "fm3h") @@ -80,7 +80,8 @@ public class FM2ToFM3Converter extends Converter { .put("fm", "fm3") .build(); - private Map fileExtensionSubtitutions = DEFAULT_FILE_EXTENSION_SUBSTITUTIONS; + private boolean predefinedFileExtensionSubstitutionsEnabled; + private Map fileExtensionSubstitutions = PREDEFINED_FILE_EXTENSION_SUBSTITUTIONS; private Properties freeMarker2Settings; private Configuration fm2Cfg; private StringTemplateLoader stringTemplateLoader; @@ -138,9 +139,12 @@ public class FM2ToFM3Converter extends Converter { String ext = srcFileName.substring(lastDotIdx + 1); - String replacementExt = getFileExtensionSubtitutions().get(ext); + String replacementExt = getFileExtensionSubstitutions().get(ext); if (replacementExt == null) { - replacementExt = getFileExtensionSubtitutions().get(ext.toLowerCase()); + replacementExt = getFileExtensionSubstitutions().get(ext.toLowerCase()); + } + if (replacementExt == null && getPredefinedFileExtensionSubstitutionsEnabled()) { + replacementExt = PREDEFINED_FILE_EXTENSION_SUBSTITUTIONS.get(ext.toLowerCase()); } if (replacementExt == null) { return srcFileName; @@ -220,13 +224,39 @@ public class FM2ToFM3Converter extends Converter { return encoding != null ? encoding : fm2Cfg.getEncoding(template.getLocale()); } - public Map getFileExtensionSubtitutions() { - return fileExtensionSubtitutions; + /** + * Getter pair of {@link #setPredefinedFileExtensionSubstitutionsEnabled(boolean)} + */ + public boolean getPredefinedFileExtensionSubstitutionsEnabled() { + return predefinedFileExtensionSubstitutionsEnabled; + } + + /** + * Whether to use {@link #PREDEFINED_FILE_EXTENSION_SUBSTITUTIONS} when {@link #getFileExtensionSubstitutions()} + * contains no mapping for the source file extension; defaults to {@code true}. + */ + public void setPredefinedFileExtensionSubstitutionsEnabled(boolean predefinedFileExtensionSubstitutionsEnabled) { + this.predefinedFileExtensionSubstitutionsEnabled = predefinedFileExtensionSubstitutionsEnabled; + } + + /** + * Getter pair of {@link #setFileExtensionSubstitutions(Map)} . + */ + public Map getFileExtensionSubstitutions() { + return fileExtensionSubstitutions; } - public void setFileExtensionSubtitutions(Map fileExtensionSubtitutions) { - _NullArgumentException.check("fileExtensionSubtitutions", fileExtensionSubtitutions); - this.fileExtensionSubtitutions = fileExtensionSubtitutions; + /** + * Defines source file file extensions to destination file extensions mappings, in additionally to the + * {@linkplain #setPredefinedFileExtensionSubstitutionsEnabled(boolean) predefined file extension substitutions}. + * It's recommended to use lower case file extensions as keys, as if there's no hit with case sensitive lookup, + * it will be retried with the source file extension converted to lower case (so it will be a case insensitive + * lookup in effect). Mappings given here has higher priority than those coming from the + * {@linkplain #setPredefinedFileExtensionSubstitutionsEnabled(boolean) predefined file extension substitutions}. + */ + public void setFileExtensionSubstitutions(Map fileExtensionSubstitutions) { + _NullArgumentException.check("fileExtensionSubstitutions", fileExtensionSubstitutions); + this.fileExtensionSubstitutions = fileExtensionSubstitutions; } public Properties getFreeMarker2Settings() { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/557b5edf/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3ConverterCLI.java ---------------------------------------------------------------------- diff --git a/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3ConverterCLI.java b/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3ConverterCLI.java index 3d26ad8..b4b5dbd 100644 --- a/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3ConverterCLI.java +++ b/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3ConverterCLI.java @@ -23,7 +23,6 @@ import java.io.File; import java.io.PrintWriter; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -115,6 +114,7 @@ public class FM2ToFM3ConverterCLI { return new FM2ToFM3ConverterCLI(out).executeInternal(args); } + @SuppressWarnings({ "rawtypes", "unchecked" }) private int executeInternal(String... args) { if (args.length == 0) { printHelp(true); @@ -155,14 +155,11 @@ public class FM2ToFM3ConverterCLI { converter.setExclude(getRegexpOption(cl, EXCLUDE_OPTION)); } - Map fileExtensionSubtitutions = cl.hasOption(NO_PREDEFINED_FILE_EXTENSION_SUBSTITUTIONS) - ? new HashMap() - : new HashMap(FM2ToFM3Converter.DEFAULT_FILE_EXTENSION_SUBSTITUTIONS); - for (Map.Entry entry - : cl.getOptionProperties(FILE_EXTENSION_SUBSTITUTION).entrySet()) { - fileExtensionSubtitutions.put((String) entry.getKey(), (String) entry.getValue()); - } - converter.setFileExtensionSubtitutions(Collections.unmodifiableMap(fileExtensionSubtitutions)); + converter.setPredefinedFileExtensionSubstitutionsEnabled( + !cl.hasOption(NO_PREDEFINED_FILE_EXTENSION_SUBSTITUTIONS)); + + converter.setFileExtensionSubstitutions((Map) Collections.unmodifiableMap( + cl.getOptionProperties(FILE_EXTENSION_SUBSTITUTION))); converter.setFreeMarker2Settings(cl.getOptionProperties(FREEMARKER_2_SETTING_OPTION)); try { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/557b5edf/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterCLITest.java ---------------------------------------------------------------------- diff --git a/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterCLITest.java b/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterCLITest.java index 866c8b6..f9d3319 100644 --- a/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterCLITest.java +++ b/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterCLITest.java @@ -104,7 +104,6 @@ public class FM2ToFM3ConverterCLITest extends ConverterTest { assertCLIResult(SUCCESS_EXIT_STATUS, null, null, srcDir.toString(), "-d", dstDir.toString(), "--include", ".*", - "--no-predef-file-ext-substs", "--file-ext-subst", "txt=txt3", "--no-predef-file-ext-substs" );