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

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 586f1e36f2 SonarQube bug fixes
586f1e36f2 is described below

commit 586f1e36f25e076ea01836ba19fd75fde7b40bc1
Author: James Bognar <[email protected]>
AuthorDate: Wed Feb 18 11:55:11 2026 -0500

    SonarQube bug fixes
---
 .../java/org/apache/juneau/svl/vars/ArgsVar.java   | 11 ++++---
 .../apache/juneau/svl/vars/ManifestFileVar.java    |  9 ++++--
 .../apache/juneau/microservice/Microservice.java   | 25 +++++++---------
 .../microservice/jetty/JettyMicroservice.java      | 34 ++++++++++------------
 .../org/apache/juneau/rest/mock/MockLogger.java    | 32 +++++++++++---------
 5 files changed, 59 insertions(+), 52 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
index 0e0512565a..98e75ffbc3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
@@ -18,6 +18,8 @@ package org.apache.juneau.svl.vars;
 
 import static org.apache.juneau.commons.utils.Utils.*;
 
+import java.util.concurrent.atomic.AtomicReference;
+
 import org.apache.juneau.collections.*;
 import org.apache.juneau.svl.*;
 
@@ -62,7 +64,7 @@ public class ArgsVar extends DefaultingVar {
        /** The name of this variable. */
        public static final String NAME = "A";
 
-       private static volatile Args staticArgs;
+       private static final AtomicReference<Args> staticArgs = new 
AtomicReference<>();
 
        /**
         * Initialize the args for this variable.
@@ -70,7 +72,7 @@ public class ArgsVar extends DefaultingVar {
         * @param args The parsed command-line arguments.
         */
        public static void init(Args args) {
-               staticArgs = args;
+               staticArgs.set(args);
        }
 
        private final Args args;
@@ -80,8 +82,9 @@ public class ArgsVar extends DefaultingVar {
         */
        public ArgsVar() {
                super(NAME);
-               if (nn(staticArgs))
-                       this.args = staticArgs;
+               var sa = staticArgs.get();
+               if (nn(sa))
+                       this.args = sa;
                else {
                        var s = System.getProperty("sun.java.command");
                        if (ne(s)) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
index 934a6c9e54..201ebac957 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
@@ -16,6 +16,8 @@
  */
 package org.apache.juneau.svl.vars;
 
+import java.util.concurrent.atomic.AtomicReference;
+
 import org.apache.juneau.svl.*;
 import org.apache.juneau.utils.*;
 
@@ -56,7 +58,7 @@ public class ManifestFileVar extends DefaultingVar {
        /** The name of this variable. */
        public static final String NAME = "MF";
 
-       private static volatile ManifestFile manifestFile;
+       private static final AtomicReference<ManifestFile> manifestFile = new 
AtomicReference<>();
 
        /**
         * Initialize the manifest file for this variable.
@@ -64,7 +66,7 @@ public class ManifestFileVar extends DefaultingVar {
         * @param manifestFile The parsed manifest file.
         */
        public static void init(ManifestFile manifestFile) {
-               ManifestFileVar.manifestFile = manifestFile;
+               ManifestFileVar.manifestFile.set(manifestFile);
        }
 
        /**
@@ -76,6 +78,7 @@ public class ManifestFileVar extends DefaultingVar {
 
        @Override /* Overridden from Var */
        public String resolve(VarResolverSession session, String key) {
-               return manifestFile == null ? "" : manifestFile.getString(key);
+               var mf = manifestFile.get();
+               return mf == null ? "" : mf.getString(key);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java
index 30c3f78c9b..a09316c7e0 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java
@@ -27,6 +27,7 @@ import java.nio.file.*;
 import java.text.*;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.jar.*;
 import java.util.logging.*;
 
@@ -508,7 +509,7 @@ public class Microservice implements ConfigEventListener {
                }
        }
 
-       private static volatile Microservice instance;
+       private static final AtomicReference<Microservice> instance = new 
AtomicReference<>();
 
        /**
         * Creates a new builder for this object.
@@ -529,15 +530,11 @@ public class Microservice implements ConfigEventListener {
         * @return The Microservice instance, or <jk>null</jk> if there isn't 
one.
         */
        public static Microservice getInstance() {
-               synchronized (Microservice.class) {
-                       return instance;
-               }
+               return instance.get();
        }
 
        private static void setInstance(Microservice m) {
-               synchronized (Microservice.class) {
-                       instance = m;
-               }
+               instance.set(m);
        }
 
        final Messages messages = Messages.of(Microservice.class);
@@ -556,7 +553,7 @@ public class Microservice implements ConfigEventListener {
        final File workingDir;
        private final String configName;
 
-       private volatile Logger logger;
+       private final AtomicReference<Logger> logger = new AtomicReference<>();
 
        /**
         * Constructor.
@@ -896,7 +893,7 @@ public class Microservice implements ConfigEventListener {
         *
         * @return The logger for this microservice.
         */
-       public Logger getLogger() { return logger; }
+       public Logger getLogger() { return logger.get(); }
 
        /**
         * Returns the main jar manifest file contents as a simple {@link 
JsonMap}.
@@ -960,11 +957,11 @@ public class Microservice implements ConfigEventListener {
                // 
--------------------------------------------------------------------------------
                // Initialize logging.
                // 
--------------------------------------------------------------------------------
-               this.logger = builder.logger;
+               logger.set(builder.logger);
                var logConfig = nn(builder.logConfig) ? builder.logConfig : new 
LogConfig();
-               if (this.logger == null) {
+               if (logger.get() == null) {
                        LogManager.getLogManager().reset();
-                       this.logger = Logger.getLogger("");
+                       logger.set(Logger.getLogger(""));
                        var logFile = firstNonNull(logConfig.logFile, 
config.get("Logging/logFile").orElse(null));
 
                        if (ne(logFile)) {
@@ -989,12 +986,12 @@ public class Microservice implements ConfigEventListener {
                                }
                                fh.setFormatter(f);
                                fh.setLevel(firstNonNull(logConfig.fileLevel, 
config.get("Logging/fileLevel").as(Level.class).orElse(Level.INFO)));
-                               logger.addHandler(fh);
+                               logger.get().addHandler(fh);
 
                                var ch = new ConsoleHandler();
                                
ch.setLevel(firstNonNull(logConfig.consoleLevel, 
config.get("Logging/consoleLevel").as(Level.class).orElse(Level.WARNING)));
                                ch.setFormatter(f);
-                               logger.addHandler(ch);
+                               logger.get().addHandler(ch);
                        }
                }
 
diff --git 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
index 6025d7cede..228edef61e 100644
--- 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
+++ 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
@@ -28,6 +28,7 @@ import java.io.*;
 import java.net.*;
 import java.nio.file.*;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.*;
 
 import org.apache.juneau.collections.*;
@@ -398,7 +399,7 @@ public class JettyMicroservice extends Microservice {
        private static final String KEY_SERVLET_CONTEXT_HANDLER = 
"ServletContextHandler";
        private static final Random RANDOM = new Random();
 
-       private static volatile JettyMicroservice instance;
+       private static final AtomicReference<JettyMicroservice> instance = new 
AtomicReference<>();
 
        /**
         * Creates a new microservice builder.
@@ -418,9 +419,7 @@ public class JettyMicroservice extends Microservice {
         * @return The Microservice instance, or <jk>null</jk> if there isn't 
one.
         */
        public static JettyMicroservice getInstance() {
-               synchronized (JettyMicroservice.class) {
-                       return instance;
-               }
+               return instance.get();
        }
 
        /**
@@ -456,9 +455,7 @@ public class JettyMicroservice extends Microservice {
        }
 
        private static void setInstance(JettyMicroservice m) {
-               synchronized (JettyMicroservice.class) {
-                       instance = m;
-               }
+               instance.set(m);
        }
 
        final Messages messages2 = Messages.of(JettyMicroservice.class);
@@ -467,7 +464,7 @@ public class JettyMicroservice extends Microservice {
 
        private final JettyServerFactory factory;
 
-       volatile Server server;
+       private final AtomicReference<Server> server = new AtomicReference<>();
 
        /**
         * Constructor.
@@ -578,7 +575,7 @@ public class JettyMicroservice extends Microservice {
                getLogger().info(jettyXml);
 
                try {
-                       server = factory.create(jettyXml);
+                       server.set(factory.create(jettyXml));
                } catch (Exception e2) {
                        throw new ExecutableException(e2);
                }
@@ -620,7 +617,7 @@ public class JettyMicroservice extends Microservice {
                if (System.getProperty("juneau.serverPort") == null)
                        System.setProperty("juneau.serverPort", 
String.valueOf(availablePort));
 
-               return server;
+               return server.get();
        }
 
        /**
@@ -629,9 +626,9 @@ public class JettyMicroservice extends Microservice {
         * @throws Exception Error occurred.
         */
        public void destroyServer() throws Exception {
-               if (nn(server))
-                       server.destroy();
-               server = null;
+               var s = server.getAndSet(null);
+               if (nn(s))
+                       s.destroy();
        }
 
        /**
@@ -699,7 +696,7 @@ public class JettyMicroservice extends Microservice {
         *
         * @return The underlying Jetty server, or <jk>null</jk> if {@link 
#createServer()} has not yet been called.
         */
-       public Server getServer() { return Objects.requireNonNull(server, 
"Server not found.  createServer() must be called first."); }
+       public Server getServer() { return Objects.requireNonNull(server.get(), 
"Server not found.  createServer() must be called first."); }
 
        /**
         * Finds and returns the servlet context handler defined in the Jetty 
container.
@@ -736,7 +733,7 @@ public class JettyMicroservice extends Microservice {
 
        @Override /* Overridden from Microservice */
        public JettyMicroservice join() throws Exception {
-               server.join();
+               server.get().join();
                return this;
        }
 
@@ -762,11 +759,12 @@ public class JettyMicroservice extends Microservice {
                        @Override /* Overridden from Thread */
                        public void run() {
                                try {
-                                       if (server == null || 
server.isStopping() || server.isStopped())
+                                       var s = server.get();
+                                       if (s == null || s.isStopping() || 
s.isStopped())
                                                return;
                                        
listener.onStopServer(JettyMicroservice.this);
                                        out(mb2, "StoppingServer");
-                                       server.stop();
+                                       s.stop();
                                        out(mb2, "ServerStopped");
                                        
listener.onPostStopServer(JettyMicroservice.this);
                                } catch (Exception e) {
@@ -802,7 +800,7 @@ public class JettyMicroservice extends Microservice {
         */
        protected int startServer() throws Exception {
                listener.onStartServer(this);
-               server.start();
+               server.get().start();
                out(messages2, "ServerStarted", getPort());
                listener.onPostStartServer(this);
                return getPort();
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockLogger.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockLogger.java
index 963503c3dd..430601c5c6 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockLogger.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockLogger.java
@@ -22,6 +22,7 @@ import static 
org.apache.juneau.commons.utils.ThrowableUtils.*;
 import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.*;
 import java.util.logging.Formatter;
 
@@ -87,9 +88,9 @@ public class MockLogger extends Logger {
 
        private final List<LogRecord> logRecords = list();
        private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-       private volatile Formatter formatter;
+       private final AtomicReference<Formatter> formatter = new 
AtomicReference<>();
 
-       private volatile String format = "%4$s: %5$s%6$s%n";
+       private final AtomicReference<String> format = new 
AtomicReference<>("%4$s: %5$s%6$s%n");
 
        /**
         * Constructor.
@@ -160,7 +161,7 @@ public class MockLogger extends Logger {
         * @return This object.
         */
        public synchronized MockLogger format(String format) {
-               this.format = format;
+               this.format.set(format);
                return this;
        }
 
@@ -174,7 +175,7 @@ public class MockLogger extends Logger {
         * @return This object.
         */
        public synchronized MockLogger formatter(Formatter formatter) {
-               this.formatter = formatter;
+               this.formatter.set(formatter);
                return this;
        }
 
@@ -219,18 +220,23 @@ public class MockLogger extends Logger {
        }
 
        private Formatter getFormatter() {
-               if (formatter == null) {
+               var f = formatter.get();
+               if (f == null) {
                        synchronized (this) {
-                               String oldFormat = 
System.getProperty(FORMAT_PROPERTY);
-                               System.setProperty(FORMAT_PROPERTY, format);
-                               formatter = new SimpleFormatter();
-                               if (oldFormat == null)
-                                       System.clearProperty(FORMAT_PROPERTY);
-                               else
-                                       System.setProperty(FORMAT_PROPERTY, 
oldFormat);
+                               f = formatter.get();
+                               if (f == null) {
+                                       String oldFormat = 
System.getProperty(FORMAT_PROPERTY);
+                                       System.setProperty(FORMAT_PROPERTY, 
format.get());
+                                       f = new SimpleFormatter();
+                                       formatter.set(f);
+                                       if (oldFormat == null)
+                                               
System.clearProperty(FORMAT_PROPERTY);
+                                       else
+                                               
System.setProperty(FORMAT_PROPERTY, oldFormat);
+                               }
                        }
                }
-               return formatter;
+               return f;
        }
 
        private LogRecord last() {

Reply via email to