From eca111507a2760d64941e33b56d7d1da4c53374e Mon Sep 17 00:00:00 2001 From: pesse Date: Tue, 10 Dec 2019 23:32:48 +0100 Subject: [PATCH 1/6] Move Locale-Initialization to Run-Action Also configure Logger not before Run-Action and log it when we change the locale based on LC_ALL environment variable --- src/main/java/org/utplsql/cli/Cli.java | 3 --- src/main/java/org/utplsql/cli/LocaleInitializer.java | 10 +++++++++- src/main/java/org/utplsql/cli/RunAction.java | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/utplsql/cli/Cli.java b/src/main/java/org/utplsql/cli/Cli.java index 2671988..e330818 100644 --- a/src/main/java/org/utplsql/cli/Cli.java +++ b/src/main/java/org/utplsql/cli/Cli.java @@ -17,9 +17,6 @@ public static void main(String[] args) { static int runPicocliWithExitCode(String[] args) { - LoggerConfiguration.configure(LoggerConfiguration.ConfigLevel.NONE); - LocaleInitializer.initLocale(); - CommandLine commandLine = new CommandLine(UtplsqlPicocliCommand.class); commandLine.setTrimQuotes(true); diff --git a/src/main/java/org/utplsql/cli/LocaleInitializer.java b/src/main/java/org/utplsql/cli/LocaleInitializer.java index 44a755a..bcb0fe7 100644 --- a/src/main/java/org/utplsql/cli/LocaleInitializer.java +++ b/src/main/java/org/utplsql/cli/LocaleInitializer.java @@ -1,5 +1,7 @@ package org.utplsql.cli; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.utplsql.api.EnvironmentVariableUtil; import java.util.Locale; @@ -18,6 +20,8 @@ */ class LocaleInitializer { + private static final Logger logger = LoggerFactory.getLogger(RunAction.class); + private static final Pattern REGEX_LOCALE = Pattern.compile("^([a-zA-Z]+)[_-]([a-zA-Z]+)"); // We only need the very first part and are pretty forgiving in parsing /** @@ -27,7 +31,10 @@ static void initLocale() { boolean localeChanged = setDefaultLocale(EnvironmentVariableUtil.getEnvValue("LC_ALL")); if (!localeChanged) { - setDefaultLocale(EnvironmentVariableUtil.getEnvValue("LANG")); + localeChanged = setDefaultLocale(EnvironmentVariableUtil.getEnvValue("LANG")); + } + if ( !localeChanged ) { + logger.debug("Java Locale not changed from LC_ALL or LANG environment variable"); } } @@ -54,6 +61,7 @@ private static boolean setDefaultLocale(String localeString) { Locale l = new Locale.Builder().setLanguageTag(sb.toString()).build(); if (l != null) { Locale.setDefault(l); + logger.debug("Java Locale changed to {}", l); return true; } } diff --git a/src/main/java/org/utplsql/cli/RunAction.java b/src/main/java/org/utplsql/cli/RunAction.java index ba8c934..29d248b 100644 --- a/src/main/java/org/utplsql/cli/RunAction.java +++ b/src/main/java/org/utplsql/cli/RunAction.java @@ -48,6 +48,7 @@ public RunAction(RunCommandConfig config) { void init() { LoggerConfiguration.configure(config.getLogConfigLevel()); + LocaleInitializer.initLocale(); } public RunCommandConfig getConfig() { From dddafb00f681da104b2452c08273b33c55b0c903 Mon Sep 17 00:00:00 2001 From: pesse Date: Tue, 10 Dec 2019 23:33:13 +0100 Subject: [PATCH 2/6] Exclude the correct packages from java-api --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index f05df21..3b38f34 100644 --- a/pom.xml +++ b/pom.xml @@ -27,15 +27,15 @@ compile - com.oracle.jdbc + com.oracle.ojdbc ucp - com.oracle.jdbc + com.oracle.ojdbc ojdbc8 - com.oracle.jdbc + com.oracle.ojdbc orai18n @@ -67,7 +67,7 @@ - + com.oracle.ojdbc orai18n ${oracle.jdbc.version} From ebda7369922a9566f6fdabfd5c6e892089232951 Mon Sep 17 00:00:00 2001 From: pesse Date: Wed, 11 Dec 2019 00:02:41 +0100 Subject: [PATCH 3/6] Make ut_documentation_reporter the default for commandline Fixes #170 --- .../java/org/utplsql/cli/RunPicocliCommand.java | 2 +- .../org/utplsql/cli/PicocliRunCommandTest.java | 14 ++++++++++++++ src/test/java/org/utplsql/cli/RunCommandIT.java | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/utplsql/cli/RunPicocliCommand.java b/src/main/java/org/utplsql/cli/RunPicocliCommand.java index da0d871..f172564 100644 --- a/src/main/java/org/utplsql/cli/RunPicocliCommand.java +++ b/src/main/java/org/utplsql/cli/RunPicocliCommand.java @@ -99,7 +99,7 @@ public class RunPicocliCommand implements IRunCommand { private List reporters = new ArrayList<>(); static class Format { - @Option(names = {"-f", "--format"}, required = true, description = "Enables specified format reporting") + @Option(names = {"-f", "--format"}, required = true, description = "Enables specified format reporting", defaultValue = "ut_documentation_reporter") String format; @Option(names = {"-o"}, description = "Outputs format to file") String outputFile; diff --git a/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java b/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java index c29d3fd..ea22627 100644 --- a/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java +++ b/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java @@ -163,6 +163,20 @@ void multipleReporters() throws Exception { assertTrue(reporterConfig.isForceToScreen()); } + @Test + void outputWithDefaultReporter() throws Exception { + RunCommandConfig config = parseForConfig("run", + TestHelper.getConnectionString(), + "-o=output1.txt"); + + assertNotNull( config.getReporters() ); + + ReporterConfig reporterConfig = config.getReporters()[0]; + assertEquals("ut_documentation_reporter", reporterConfig.getName()); + assertEquals("output1.txt", reporterConfig.getOutput()); + assertFalse(reporterConfig.isForceToScreen()); + } + @Test void sourceFileMapping() throws Exception { RunCommandConfig config = parseForConfig("run", diff --git a/src/test/java/org/utplsql/cli/RunCommandIT.java b/src/test/java/org/utplsql/cli/RunCommandIT.java index 336f2a8..e6ac671 100644 --- a/src/test/java/org/utplsql/cli/RunCommandIT.java +++ b/src/test/java/org/utplsql/cli/RunCommandIT.java @@ -75,4 +75,18 @@ void run_withDbmsOutputEnabled() throws Exception { assertValidReturnCode(result); } + + @Test + void run_withOutputButNoReporterDefined() throws Exception { + + String outputFileName = "output_" + System.currentTimeMillis() + ".xml"; + addTempPath(Paths.get(outputFileName)); + + int result = TestHelper.runApp("run", + TestHelper.getConnectionString(), + "-o=" + outputFileName, + "--failure-exit-code=2"); + + assertValidReturnCode(result); + } } From 1b044c23fc0616bccde804c3fc3e9e1e25d15793 Mon Sep 17 00:00:00 2001 From: pesse Date: Wed, 11 Dec 2019 08:08:23 +0100 Subject: [PATCH 4/6] Moved default value to ReporterConfig instead of Command line interpretation --- src/main/java/org/utplsql/cli/RunPicocliCommand.java | 2 +- src/main/java/org/utplsql/cli/config/ReporterConfig.java | 8 +++++++- src/test/java/org/utplsql/cli/PicocliRunCommandTest.java | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/utplsql/cli/RunPicocliCommand.java b/src/main/java/org/utplsql/cli/RunPicocliCommand.java index f172564..da0d871 100644 --- a/src/main/java/org/utplsql/cli/RunPicocliCommand.java +++ b/src/main/java/org/utplsql/cli/RunPicocliCommand.java @@ -99,7 +99,7 @@ public class RunPicocliCommand implements IRunCommand { private List reporters = new ArrayList<>(); static class Format { - @Option(names = {"-f", "--format"}, required = true, description = "Enables specified format reporting", defaultValue = "ut_documentation_reporter") + @Option(names = {"-f", "--format"}, required = true, description = "Enables specified format reporting") String format; @Option(names = {"-o"}, description = "Outputs format to file") String outputFile; diff --git a/src/main/java/org/utplsql/cli/config/ReporterConfig.java b/src/main/java/org/utplsql/cli/config/ReporterConfig.java index e68d6ab..e3e74ba 100644 --- a/src/main/java/org/utplsql/cli/config/ReporterConfig.java +++ b/src/main/java/org/utplsql/cli/config/ReporterConfig.java @@ -1,5 +1,7 @@ package org.utplsql.cli.config; +import org.utplsql.api.reporter.CoreReporters; + import java.beans.ConstructorProperties; public class ReporterConfig { @@ -10,7 +12,11 @@ public class ReporterConfig { @ConstructorProperties({"name", "output", "forceToScreen"}) public ReporterConfig(String name, String output, Boolean forceToScreen) { - this.name = name; + if ( name != null ) { + this.name = name; + } else { + this.name = CoreReporters.UT_DOCUMENTATION_REPORTER.name(); + } this.output = output; if (forceToScreen != null) this.forceToScreen = forceToScreen; } diff --git a/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java b/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java index ea22627..809912d 100644 --- a/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java +++ b/src/test/java/org/utplsql/cli/PicocliRunCommandTest.java @@ -172,7 +172,7 @@ void outputWithDefaultReporter() throws Exception { assertNotNull( config.getReporters() ); ReporterConfig reporterConfig = config.getReporters()[0]; - assertEquals("ut_documentation_reporter", reporterConfig.getName()); + assertEquals("ut_documentation_reporter", reporterConfig.getName().toLowerCase()); assertEquals("output1.txt", reporterConfig.getOutput()); assertFalse(reporterConfig.isForceToScreen()); } From 2be9ea4e41db329f614cbf2521bbb4516037a2f0 Mon Sep 17 00:00:00 2001 From: pesse Date: Wed, 11 Dec 2019 08:27:32 +0100 Subject: [PATCH 5/6] Add section about charset handling to the documentation --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 1368172..fd518ec 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,22 @@ ALTER SESSION SET NLS_LANGUAGE='AMERICAN'; ALTER SESSION SET NLS_TERRITORY='AMERICA'; ``` +## Charset + +Java will use the default charset of your system for any string output. +You can change this by passing the `-Dfile.encoding` property to the JVM when running a java-application. +To avoid changing the utPLSQL-cli shell- or batchscript, you can define `-Dfile.encoding` in the environment variable `JAVA_TOOL_OPTIONS`. +This environment variable will be picked up and interpreted by the JVM: + +``` +export JAVA_TOOL_OPTIONS='-Dfile.encoding=utf8' +utplsql run user/pw@connecstring + +> Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf8 +``` + +Make sure that the defined charset matches with the codepage your console is using. + ## Usage Currently, utPLSQL-cli supports the following sub-commands: - run From b78ac3826c1701ea7bc4db359e7e03977af687e8 Mon Sep 17 00:00:00 2001 From: pesse Date: Wed, 11 Dec 2019 08:34:23 +0100 Subject: [PATCH 6/6] Set Logging to none in VersionInfo and Reporters-Command --- src/main/java/org/utplsql/cli/ReportersCommand.java | 1 + src/main/java/org/utplsql/cli/VersionInfoCommand.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/org/utplsql/cli/ReportersCommand.java b/src/main/java/org/utplsql/cli/ReportersCommand.java index 257f2ca..f7dcddd 100644 --- a/src/main/java/org/utplsql/cli/ReportersCommand.java +++ b/src/main/java/org/utplsql/cli/ReportersCommand.java @@ -28,6 +28,7 @@ public class ReportersCommand implements ICommand { @Override public int run() { + LoggerConfiguration.configure(LoggerConfiguration.ConfigLevel.NONE); try { DataSource ds = DataSourceProvider.getDataSource(connectionString, 1); diff --git a/src/main/java/org/utplsql/cli/VersionInfoCommand.java b/src/main/java/org/utplsql/cli/VersionInfoCommand.java index d6a40ea..821d0ba 100644 --- a/src/main/java/org/utplsql/cli/VersionInfoCommand.java +++ b/src/main/java/org/utplsql/cli/VersionInfoCommand.java @@ -23,6 +23,7 @@ public class VersionInfoCommand implements ICommand { boolean help; public int run() { + LoggerConfiguration.configure(LoggerConfiguration.ConfigLevel.NONE); System.out.println(CliVersionInfo.getInfo()); System.out.println(JavaApiVersionInfo.getInfo()); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy