From d9309395996467fadf6b2159647790d2f5029c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?As=C4=B1m=20Arslan?= Date: Mon, 6 Apr 2015 16:44:38 +0300 Subject: [PATCH] flat namespace directory structure support, backport from ngit's sharper --- src/main/resources/sharpen.properties | 3 ++- src/main/sharpen/core/Configuration.java | 10 ++++++++++ src/main/sharpen/core/SharpenApplication.java | 4 ++++ src/main/sharpen/core/SharpenCommandLine.java | 1 + src/main/sharpen/core/SharpenCommandLineParser.java | 4 +++- src/main/sharpen/core/SharpenConversionBatch.java | 6 ++++-- 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/resources/sharpen.properties b/src/main/resources/sharpen.properties index 67caed1..3191f20 100644 --- a/src/main/resources/sharpen.properties +++ b/src/main/resources/sharpen.properties @@ -27,4 +27,5 @@ 24=-configurationClass: Overwrites default configuration Class with input class name. The default is 'sharpen.core.DefaultConfiguration'. For example: -configurationClass sharpen.core.MyConfiguration 25=-junitConversion: JUnit conversion mode on 26=-sharpenNamespace: Maps a java package name to a .NET namespace. For example:-namespaceMapping java.util.concurrent.locks Sharpen -27=-help: Display Help +27=-flatDirectoryStructure: Flat namespace directory structure mode on. For example: "sharpen.core" package will go into a folder named "sharpen.core" and sub-folders won't be created like "sharpen/core" +28=-help: Display Help diff --git a/src/main/sharpen/core/Configuration.java b/src/main/sharpen/core/Configuration.java index 1db5210..a69e8b7 100644 --- a/src/main/sharpen/core/Configuration.java +++ b/src/main/sharpen/core/Configuration.java @@ -99,6 +99,8 @@ public abstract class Configuration { private boolean _paramCountFileNames; private boolean _junitConvert; + + private boolean _flatNamespaceDirectoryStructure; private String _sharpenNamespace = "Sharpen"; @@ -441,6 +443,14 @@ public abstract class Configuration { return _junitConvert; } + public void enableFlatNamespaceDirectoryStructure() { + this._flatNamespaceDirectoryStructure = true; + } + + public boolean flatNamespaceDirectoryStructure() { + return this._flatNamespaceDirectoryStructure; + } + public void setSharpenNamespace(String sharpenNamespace) { if (null == sharpenNamespace) throw new IllegalArgumentException("sharpenNamespace"); _sharpenNamespace = sharpenNamespace; diff --git a/src/main/sharpen/core/SharpenApplication.java b/src/main/sharpen/core/SharpenApplication.java index 3de5e90..aa617ae 100644 --- a/src/main/sharpen/core/SharpenApplication.java +++ b/src/main/sharpen/core/SharpenApplication.java @@ -205,6 +205,10 @@ public class SharpenApplication { ods("JUnit conversion mode on."); configuration.enableJUnitConversion(); } + if (this._args.flatNamespaceDirectoryStructure) { + ods("Flat namespace directory structure mode on."); + configuration.enableFlatNamespaceDirectoryStructure(); + } if (_args.sharpenNamespace != null) { ods("Sharpen namespace: " + _args.sharpenNamespace); configuration.setSharpenNamespace(_args.sharpenNamespace); diff --git a/src/main/sharpen/core/SharpenCommandLine.java b/src/main/sharpen/core/SharpenCommandLine.java index f84e0d9..645f533 100644 --- a/src/main/sharpen/core/SharpenCommandLine.java +++ b/src/main/sharpen/core/SharpenCommandLine.java @@ -87,6 +87,7 @@ public class SharpenCommandLine { public final Map conditionalCompilation = new HashMap(); public String configurationClass; public boolean junitConversion; + public boolean flatNamespaceDirectoryStructure; public String sharpenNamespace; public boolean help; } diff --git a/src/main/sharpen/core/SharpenCommandLineParser.java b/src/main/sharpen/core/SharpenCommandLineParser.java index 6bd3faa..931b1b4 100644 --- a/src/main/sharpen/core/SharpenCommandLineParser.java +++ b/src/main/sharpen/core/SharpenCommandLineParser.java @@ -145,7 +145,9 @@ class SharpenCommandLineParser extends CommandLineParser { } else if (areEqual(arg, "-configurationClass")) { _cmdLine.configurationClass = consumeNext(); } else if (areEqual(arg, "-junitConversion")) { - _cmdLine.junitConversion = true; + _cmdLine.junitConversion = true; + } else if (this.areEqual(arg, "-flatDirectoryStructure")) { + this._cmdLine.flatNamespaceDirectoryStructure = true; } else if (areEqual(arg, "-sharpenNamespace")) { _cmdLine.sharpenNamespace = consumeNext(); } else if (areEqual(arg, "-help")) { diff --git a/src/main/sharpen/core/SharpenConversionBatch.java b/src/main/sharpen/core/SharpenConversionBatch.java index 0a0e6e8..dc55dc0 100644 --- a/src/main/sharpen/core/SharpenConversionBatch.java +++ b/src/main/sharpen/core/SharpenConversionBatch.java @@ -129,8 +129,10 @@ public class SharpenConversionBatch extends ConversionBatch { } private String getTargetPackageFolder(String targetFolder, String packageName) { - targetFolder = targetFolder +"/" + packageName.replace('.', '/').toLowerCase(); - return targetFolder; + if (!this._configuration.flatNamespaceDirectoryStructure()) { + packageName = packageName.replace('.', '/').toLowerCase(); + } + return targetFolder +"/" + packageName; } private String getNameWithoutExtension(String name) {