You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by mb...@apache.org on 2026/04/19 11:44:08 UTC

(db-jdo) 03/04: JDO-823. Standard outputs should not be used directly to log anything

This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch JDO-823-3
in repository https://gitbox.apache.org/repos/asf/db-jdo.git

commit 3da1ec548ad8f6100379270a4bb3bb3ad969a5ac
Author: Michael Bouschen <Mi...@spree.de>
AuthorDate: Sun Apr 19 13:43:05 2026 +0200

    JDO-823. Standard outputs should not be used directly to log anything
---
 api/src/main/java/javax/jdo/Enhancer.java          |  1 +
 api/src/test/java/javax/jdo/EnhancerTest.java      |  1 +
 api/src/test/java/javax/jdo/util/XMLTestUtil.java  |  1 +
 .../main/java/org/apache/jdo/exectck/Enhance.java  | 20 +++++------
 .../src/main/java/org/apache/jdo/exectck/Help.java |  2 +-
 .../java/org/apache/jdo/exectck/InstallSchema.java | 30 ++++++++--------
 .../java/org/apache/jdo/exectck/PropertyUtils.java |  2 +-
 .../main/java/org/apache/jdo/exectck/RunTCK.java   | 41 +++++++++++-----------
 .../java/org/apache/jdo/exectck/SQLFileLoader.java |  8 ++---
 .../java/org/apache/jdo/exectck/Utilities.java     | 15 ++++++++
 10 files changed, 69 insertions(+), 52 deletions(-)

diff --git a/api/src/main/java/javax/jdo/Enhancer.java b/api/src/main/java/javax/jdo/Enhancer.java
index a9c2f10d..2589eb1b 100644
--- a/api/src/main/java/javax/jdo/Enhancer.java
+++ b/api/src/main/java/javax/jdo/Enhancer.java
@@ -457,6 +457,7 @@ public class Enhancer {
    *
    * @param exitValue the process exit value
    */
+  @SuppressWarnings("java:S106") // Standard outputs should not be used directly to log anything
   private void exit(int exitValue) {
     System.out.print(verboseBuffer.toString());
     System.err.print(errorBuffer.toString());
diff --git a/api/src/test/java/javax/jdo/EnhancerTest.java b/api/src/test/java/javax/jdo/EnhancerTest.java
index 4e90f416..36a3a34d 100644
--- a/api/src/test/java/javax/jdo/EnhancerTest.java
+++ b/api/src/test/java/javax/jdo/EnhancerTest.java
@@ -436,6 +436,7 @@ class EnhancerTest extends AbstractTest {
             + errorString);
   }
 
+  @SuppressWarnings("java:S106") // Standard outputs should not be used directly to log anything
   private InvocationResult invokeEnhancer(String string) {
     InvocationResult result = new InvocationResult();
     try {
diff --git a/api/src/test/java/javax/jdo/util/XMLTestUtil.java b/api/src/test/java/javax/jdo/util/XMLTestUtil.java
index a1718a7e..ed68fd35 100644
--- a/api/src/test/java/javax/jdo/util/XMLTestUtil.java
+++ b/api/src/test/java/javax/jdo/util/XMLTestUtil.java
@@ -505,6 +505,7 @@ public class XMLTestUtil {
   }
 
   /** Command line tool to test JDO metadata files. Usage: XMLTestUtil [-r] <file or directory>+ */
+  @SuppressWarnings("java:S106") // Standard outputs should not be used directly to log anything
   public static void main(String[] args) {
     String[] fromProp = checkMetadataSystemProperty();
     boolean recursive = Boolean.getBoolean(RECURSIVE_PROP);
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java b/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java
index e5611a6e..12929ac7 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java
@@ -100,7 +100,7 @@ public class Enhance extends AbstractTCKMojo {
   public void execute() throws MojoExecutionException, MojoFailureException {
 
     if (!doEnhance) {
-      System.out.println("Skipping Enhance goal!");
+      Utilities.println("Skipping Enhance goal!");
       return;
     }
 
@@ -162,18 +162,18 @@ public class Enhance extends AbstractTCKMojo {
           Thread.currentThread().setContextClassLoader(loggingPropsCl);
         }
         if (runtckVerbose) {
-          System.out.println("ClassLoader ContextClassLoader:");
+          Utilities.println("ClassLoader ContextClassLoader:");
           Utilities.printClasspath(Thread.currentThread().getContextClassLoader());
         }
-        System.out.println("Get enhancer");
+        Utilities.println("Get enhancer");
         JDOEnhancer enhancer = JDOHelper.getEnhancer(enhancerLoader);
-        System.out.println("enhancer.setVerbose()");
+        Utilities.println("enhancer.setVerbose()");
         enhancer.setVerbose(true);
-        System.out.println("enhancer.setClassLoader()");
+        Utilities.println("enhancer.setClassLoader()");
         enhancer.setClassLoader(enhancerLoader);
         String[] classArr = classes.toArray(new String[0]);
         enhancer.addClasses(classArr);
-        System.out.println("Enhancing classes for identity type " + idtype);
+        Utilities.println("Enhancing classes for identity type " + idtype);
         // enhancer needs  org/apache/jdo/tck/util/DeepEquality
         enhancer.enhance();
         Thread.currentThread().setContextClassLoader(prevCl);
@@ -185,7 +185,7 @@ public class Enhance extends AbstractTCKMojo {
       // Move log to per-test location
       moveLogs(idtype);
     }
-    System.out.println();
+    Utilities.println();
   }
 
   private void copyMetadata(
@@ -280,7 +280,7 @@ public class Enhance extends AbstractTCKMojo {
       enhancerLoader =
           new URLClassLoader(cpList1.toArray(classPathURLs1), getClass().getClassLoader());
       if (runtckVerbose) {
-        System.out.println("ClassLoader enhancerLoader:");
+        Utilities.println("ClassLoader enhancerLoader:");
         Utilities.printClasspath(enhancerLoader);
       }
     } catch (MalformedURLException ex) {
@@ -319,7 +319,7 @@ public class Enhance extends AbstractTCKMojo {
             + "-"
             + impl
             + ".txt";
-    System.out.println("testLogFilename is " + testLogFilename);
+    Utilities.println("testLogFilename is " + testLogFilename);
     try {
       File logFile = new File(implLogFile);
       File testLogFile = new File(testLogFilename);
@@ -328,7 +328,7 @@ public class Enhance extends AbstractTCKMojo {
       FileUtils.write(logFile, "", Charset.defaultCharset());
       FileUtils.forceDeleteOnExit(logFile);
     } catch (Exception e) {
-      System.out.println(">> Error moving implementation log file: " + e.getMessage());
+      Utilities.println(">> Error moving implementation log file: " + e.getMessage());
     }
   }
 }
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/Help.java b/exectck/src/main/java/org/apache/jdo/exectck/Help.java
index 492df883..59367986 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/Help.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/Help.java
@@ -133,6 +133,6 @@ public class Help extends AbstractMojo {
     msg.append("     mvn integration-test -D jdo.tck.impl=\"iut\"\n");
     msg.append("\n END EXECTCK HELP INFORMATION\n");
 
-    System.out.println(msg.toString());
+    Utilities.println(msg.toString());
   }
 }
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/InstallSchema.java b/exectck/src/main/java/org/apache/jdo/exectck/InstallSchema.java
index a0c718e7..3f79337a 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/InstallSchema.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/InstallSchema.java
@@ -45,13 +45,13 @@ public class InstallSchema extends AbstractTCKMojo {
   public void execute() throws MojoExecutionException {
 
     if (!doInstallSchema) {
-      System.out.println("Skipping InstallSchema goal!");
+      Utilities.println("Skipping InstallSchema goal!");
       return;
     }
 
     if (cfgs == null) {
       if (cfgList != null) {
-        System.out.println("cfgList is " + cfgList);
+        Utilities.println("cfgList is " + cfgList);
         cfgs = new HashSet<String>();
         PropertyUtils.string2Collection(cfgList, cfgs);
       } else {
@@ -73,7 +73,7 @@ public class InstallSchema extends AbstractTCKMojo {
     PropertyUtils.string2Collection(dblist, dbs);
     PropertyUtils.string2Collection(identitytypes, idtypes);
     PropertyUtils.mappingsSet(cfgs, confDirectory, mappings);
-    System.out.println(
+    Utilities.println(
         "*>Schemas to be installed for \n  configurations: "
             + cfgs.toString()
             + "\n  databases: "
@@ -121,7 +121,7 @@ public class InstallSchema extends AbstractTCKMojo {
       // Create database
       for (String idtype : idtypes) {
         for (String mapping : mappings) {
-          System.out.print(
+          Utilities.print(
               "*> Installing schema" + mapping + ".sql for " + db + " " + idtype + " ... ");
 
           String outFileName =
@@ -151,21 +151,21 @@ public class InstallSchema extends AbstractTCKMojo {
             loadSQLFileUsingJDBC(db, dbDirName, sqlFileName, outFileName);
           } catch (Exception ex) {
             success = false;
-            System.out.println("FAILED!");
+            Utilities.println("FAILED!");
             ex.printStackTrace();
-            System.out.println("*> Classpath is ");
+            Utilities.println("*> Classpath is ");
             Utilities.printClasspath();
-            System.out.println(
+            Utilities.println(
                 "*> jdo.tck.basedir is \n    " + System.getProperty("jdo.tck.basedir"));
-            System.out.println(
+            Utilities.println(
                 "*> java.security.manager is \n    " + System.getProperty("java.security.manager"));
-            System.out.println(
+            Utilities.println(
                 "*> java.security.policy is \n    " + System.getProperty("java.security.policy"));
-            System.out.println("*> dbDirName is \n    " + dbDirName);
-            System.out.println("*> outFileName is \n    " + outFileName);
+            Utilities.println("*> dbDirName is \n    " + dbDirName);
+            Utilities.println("*> outFileName is \n    " + outFileName);
           } finally {
             if (success) {
-              System.out.println("done");
+              Utilities.println("done");
             }
           }
         }
@@ -173,8 +173,8 @@ public class InstallSchema extends AbstractTCKMojo {
 
       finalizeDB(db, dbDirName);
 
-      System.out.println("*> See diagnostic output in " + dbLogsDir + ".");
-      System.out.println();
+      Utilities.println("*> See diagnostic output in " + dbLogsDir + ".");
+      Utilities.println();
     }
   }
 
@@ -217,7 +217,7 @@ public class InstallSchema extends AbstractTCKMojo {
       System.setProperty("ij.outfile", outFileName);
       org.apache.derby.tools.ij.main(args);
     } catch (IOException ioex) {
-      System.out.println("FAILED!");
+      Utilities.println("FAILED!");
       throw new MojoExecutionException("*> Failed to execute ij: " + ioex.getLocalizedMessage());
     }
   }
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/PropertyUtils.java b/exectck/src/main/java/org/apache/jdo/exectck/PropertyUtils.java
index 53a776a7..535515ec 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/PropertyUtils.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/PropertyUtils.java
@@ -57,7 +57,7 @@ public class PropertyUtils {
       String confName = confDir + File.separator + cfg;
       if (!new File(confName).exists()) {
         // Conf file nor found => continue
-        System.out.println("ERROR: Configuration file " + confName + " not found.");
+        Utilities.println("ERROR: Configuration file " + confName + " not found.");
         continue;
       }
 
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java b/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java
index 6b763e4f..50b7467a 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java
@@ -40,7 +40,6 @@ import org.apache.maven.plugins.annotations.Parameter;
  * test (IUT).
  */
 @Mojo(name = "runtck")
-@SuppressWarnings("java:S106") // Standard outputs should not be used directly to log anything
 public class RunTCK extends AbstractTCKMojo {
 
   private static final String TCK_PARAM_ON_FAILURE_FAIL_FAST = "failFast"; // NOI18N
@@ -188,7 +187,7 @@ public class RunTCK extends AbstractTCKMojo {
   @Override
   public void execute() throws MojoExecutionException {
     if (!doRunTCK) {
-      System.out.println("Skipping RunTCK goal!");
+      Utilities.println("Skipping RunTCK goal!");
       return;
     }
 
@@ -258,7 +257,7 @@ public class RunTCK extends AbstractTCKMojo {
           String confFileName = confDirectory + FS + cfg;
           if (!new File(confFileName).exists()) {
             // Conf file nor found => continue
-            System.out.println("ERROR: Configuration file " + confFileName + " not found.");
+            Utilities.println("ERROR: Configuration file " + confFileName + " not found.");
             continue;
           }
           Properties props = PropertyUtils.getProperties(confDirectory + FS + cfg);
@@ -268,7 +267,7 @@ public class RunTCK extends AbstractTCKMojo {
           }
           List<String> classesList = getTestClasses(props, cfg, excludeFile);
           if (classesList.isEmpty()) {
-            System.out.println("Skipping configuration " + cfg + ": classes excluded");
+            Utilities.println("Skipping configuration " + cfg + ": classes excluded");
             continue;
           }
 
@@ -344,7 +343,7 @@ public class RunTCK extends AbstractTCKMojo {
 
     PropertyUtils.string2Collection(dblist, dbs);
     PropertyUtils.string2Collection(identitytypes, idtypes);
-    System.out.println(
+    Utilities.println(
         "*>TCK to be run for implementation '"
             + impl
             + "' on \n"
@@ -358,7 +357,7 @@ public class RunTCK extends AbstractTCKMojo {
             + identitytypes);
 
     // Properties required for test execution
-    System.out.println("cleanupaftertest is " + cleanupaftertest);
+    Utilities.println("cleanupaftertest is " + cleanupaftertest);
 
     List<String> propsString = new ArrayList<>();
     propsString.add("-Dverbose=" + verbose);
@@ -409,7 +408,7 @@ public class RunTCK extends AbstractTCKMojo {
       URL url1 = enhancedDir.toURI().toURL();
       URL url2 = new File(buildDirectory + FS + CLASSES_DIR_NAME + FS).toURI().toURL();
       if (runtckVerbose) {
-        System.out.println("url2 is " + url2.toString());
+        Utilities.println("url2 is " + url2.toString());
       }
       cpList.add(url1);
       cpList.add(url2);
@@ -427,7 +426,7 @@ public class RunTCK extends AbstractTCKMojo {
     }
     cpString = Utilities.urls2ClasspathString(cpList);
     if (runtckVerbose) {
-      System.out.println("\nClasspath is " + cpString);
+      Utilities.println("\nClasspath is " + cpString);
     }
     return cpString;
   }
@@ -579,11 +578,11 @@ public class RunTCK extends AbstractTCKMojo {
     }
 
     if (debugTCK) {
-      System.out.println("Using debug arguments: \n" + debugDirectives);
+      Utilities.println("Using debug arguments: \n" + debugDirectives);
     }
 
     // invoke class runner
-    System.out.print(
+    Utilities.print(
         "*> Running tests for "
             + cfg
             + " with "
@@ -600,17 +599,17 @@ public class RunTCK extends AbstractTCKMojo {
     try {
       resultValue = Utilities.invokeCommand(command, new File(buildDirectory), junitLogFilename);
       if (resultValue == 0) {
-        System.out.println("success");
+        Utilities.println("success");
       } else {
-        System.out.println("FAIL");
+        Utilities.println("FAIL");
       }
       if (runtckVerbose) {
-        System.out.println("\nCommand line is: \n" + command.toString());
-        System.out.println("Test exit value is " + resultValue);
-        System.out.println("Test result output:\n" + fileToString(junitLogFilename));
+        Utilities.println("\nCommand line is: \n" + command.toString());
+        Utilities.println("Test exit value is " + resultValue);
+        Utilities.println("Test result output:\n" + fileToString(junitLogFilename));
       }
     } catch (java.lang.RuntimeException re) {
-      System.out.println("Exception on command " + command);
+      Utilities.println("Exception on command " + command);
     }
     return resultValue;
   }
@@ -627,14 +626,14 @@ public class RunTCK extends AbstractTCKMojo {
       File logFile = new File(implLogFile);
       FileUtils.moveFile(logFile, new File(testLogFilename));
     } catch (Exception e) {
-      System.out.println(">> Error moving implementation log file: " + e.getMessage());
+      Utilities.println(">> Error moving implementation log file: " + e.getMessage());
     }
     String tckLogFilename = logFilePrefix + TCK_LOG_FILE;
     try {
       File logFile = new File(tckLogFile);
       FileUtils.moveFile(logFile, new File(tckLogFilename));
     } catch (Exception e) {
-      System.out.println(">> Error moving tck log file: " + e.getMessage());
+      Utilities.println(">> Error moving tck log file: " + e.getMessage());
     }
   }
 
@@ -655,12 +654,12 @@ public class RunTCK extends AbstractTCKMojo {
     try {
       FileUtils.forceDeleteOnExit(new File(implLogFile));
     } catch (Exception e) {
-      System.out.println(">> Error deleting log file: " + e.getMessage());
+      Utilities.println(">> Error deleting log file: " + e.getMessage());
     }
     try {
       FileUtils.forceDeleteOnExit(new File(TCK_LOG_FILE));
     } catch (Exception e) {
-      System.out.println(">> Error deleting log file: " + e.getMessage());
+      Utilities.println(">> Error deleting log file: " + e.getMessage());
     }
 
     // Output results
@@ -672,7 +671,7 @@ public class RunTCK extends AbstractTCKMojo {
     command.add("org.apache.jdo.tck.util.ResultSummary");
     command.add(logDir);
     Utilities.invokeCommand(command, new File(buildDirectory), resultSummaryLogFile);
-    System.out.println(fileToString(resultSummaryLogFile));
+    Utilities.println(fileToString(resultSummaryLogFile));
 
     // Create system configuration description file
     command.set(3, "org.apache.jdo.tck.util.SystemCfgSummary");
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/SQLFileLoader.java b/exectck/src/main/java/org/apache/jdo/exectck/SQLFileLoader.java
index bad13349..33dc3827 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/SQLFileLoader.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/SQLFileLoader.java
@@ -348,10 +348,10 @@ public class SQLFileLoader {
       try {
         SQLFileLoader loader = new SQLFileLoader(arg);
         List<String> stmts = loader.getStatements();
-        System.out.println(loader.getConnect());
-        System.out.println(loader.getUser());
-        System.out.println(loader.getPassword());
-        stmts.forEach(System.out::println);
+        Utilities.println(loader.getConnect());
+        Utilities.println(loader.getUser());
+        Utilities.println(loader.getPassword());
+        stmts.forEach(Utilities::println);
       } catch (IOException ex) {
         System.err.println(ex);
       }
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/Utilities.java b/exectck/src/main/java/org/apache/jdo/exectck/Utilities.java
index 1aac2bf4..ee40d2b4 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/Utilities.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/Utilities.java
@@ -132,4 +132,19 @@ public class Utilities {
       return 1;
     }
   }
+
+  @SuppressWarnings("java:S106") // Standard outputs should not be used directly to log anything
+  public static void print(String s) {
+    System.out.print(s);
+  }
+
+  @SuppressWarnings("java:S106") // Standard outputs should not be used directly to log anything
+  public static void println(String s) {
+    System.out.println(s);
+  }
+
+  @SuppressWarnings("java:S106") // Standard outputs should not be used directly to log anything
+  public static void println() {
+    System.out.println();
+  }
 }