diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/FileSaver.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/FileSaver.groovy index 5c3aa07e76..2a9c730787 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/FileSaver.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/FileSaver.groovy @@ -9,7 +9,9 @@ import java.nio.file.Path import java.nio.file.Paths import java.nio.file.StandardOpenOption +import static io.codearte.accurest.util.NamesUtil.beforeLast import static io.codearte.accurest.util.NamesUtil.capitalize +import static io.codearte.accurest.util.NamesUtil.packageToDirectory @CompileStatic @Slf4j @@ -23,9 +25,10 @@ class FileSaver { this.framework = framework } - void saveClassFile(String fileName, String includedDirectoryRelativePath, byte[] classBytes) { + void saveClassFile(String fileName, String basePackageClass, String includedDirectoryRelativePath, byte[] classBytes) { - Path testBaseDir = Paths.get(targetDirectory.absolutePath, includedDirectoryRelativePath) + Path testBaseDir = Paths.get(targetDirectory.absolutePath, packageToDirectory(basePackageClass), + beforeLast(includedDirectoryRelativePath, File.separator)) Files.createDirectories(testBaseDir) Path classPath = Paths.get(testBaseDir.toString(), capitalize(fileName) + framework.classExtension).toAbsolutePath() log.info("Creating new class file [$classPath]") diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/TestGenerator.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/TestGenerator.groovy index d01f5edb9f..65e96b8d8c 100755 --- a/accurest-core/src/main/groovy/io/codearte/accurest/TestGenerator.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/TestGenerator.groovy @@ -67,7 +67,7 @@ class TestGenerator { def className = afterLast(includedDirectoryRelativePath, File.separator) + configProperties.targetFramework.classNameSuffix def packageName = buildPackage(basePackageNameForClass, includedDirectoryRelativePath) def classBytes = generator.buildClass(filesToClass, className, packageName).getBytes(StandardCharsets.UTF_8) - saver.saveClassFile(className, includedDirectoryRelativePath, classBytes) + saver.saveClassFile(className, basePackageNameForClass, includedDirectoryRelativePath, classBytes) counter.incrementAndGet() } } @@ -75,8 +75,8 @@ class TestGenerator { private static String buildPackage(final String packageNameForClass, final String includedDirectoryRelativePath) { String directory = beforeLast(includedDirectoryRelativePath, File.separator) - return !directory.empty ? "$packageNameForClass.${directoryToPackage(directory)}" : packageNameForClass - } + return !directory.empty ? "$packageNameForClass.${directoryToPackage(directory)}" : packageNameForClass + } private static String normalizePath(String path) { return FilenameUtils.separatorsToUnix(path) diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/util/NamesUtil.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/util/NamesUtil.groovy index 8417beb4c3..713270ce06 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/util/NamesUtil.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/util/NamesUtil.groovy @@ -5,12 +5,12 @@ package io.codearte.accurest.util */ class NamesUtil { - static String beforeLast(String string, String separator) { - if (string?.indexOf(separator) > -1) { - return string.substring(0, string.lastIndexOf(separator)) - } - return '' - } + static String beforeLast(String string, String separator) { + if (string?.indexOf(separator) > -1) { + return string.substring(0, string.lastIndexOf(separator)) + } + return '' + } static String afterLast(String string, String separator) { if (string?.indexOf(separator) > -1) { @@ -46,7 +46,11 @@ class NamesUtil { return string } - static String directoryToPackage(String directory) { - return directory.replace(File.separator, '.').replace('-', '_') - } + static String packageToDirectory(String packageName) { + return packageName.replace('.' as char, File.separatorChar) + } + + static String directoryToPackage(String directory) { + return directory.replace(File.separator, '.') + } }