diff --git a/build-coatjava.sh b/build-coatjava.sh index 003a7bfe4b..a5ad00a718 100755 --- a/build-coatjava.sh +++ b/build-coatjava.sh @@ -207,11 +207,8 @@ else fi if [ $runSpotBugs == "yes" ]; then - # mvn com.github.spotbugs:spotbugs-maven-plugin:spotbugs # spotbugs goal produces a report target/spotbugsXml.xml for each module - $mvn com.github.spotbugs:spotbugs-maven-plugin:check # check goal produces a report and produces build failed if bugs - # the spotbugsXml.xml file is easiest read in a web browser - # see http://spotbugs.readthedocs.io/en/latest/maven.html and https://spotbugs.github.io/spotbugs-maven-plugin/index.html for more info - if [ $? != 0 ] ; then echo "spotbugs failure" >&2 ; exit 1 ; fi + libexec/spotbugs.sh ${mvnArgs[@]:-} || (echo "ERROR: spotbugs failure" >&2 && exit 1) + echo "spotbugs spotted no bugs!" fi # installation diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java index f8acf56675..76ab922b34 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java @@ -55,8 +55,6 @@ public final class SwapManager { private ConstantsManager currConman = null; private SchemaFactory schema = null; - private static SwapManager instance = null; - public Set getDetectors() { return this.detsToBanks.keySet(); } @@ -67,32 +65,7 @@ public List getBanks(String detectorName) { return this.detsToBanks.get(detectorName); } - private SwapManager() {} - - public static SwapManager getInstance() { - if (instance == null) { - instance = new SwapManager(); - } - return instance; - } - - /** - * @param detectorNames - * @param prevTimestamp in CCDB format: MM/DD/YYYY - * @param currTimestamp in CCDB format: MM/DD/YYYY - */ - public SwapManager(List detectorNames, String prevTimestamp,String currTimestamp) { - this.initialize(detectorNames, prevTimestamp, currTimestamp); - } - - /** - * @param detectorNames - * @param previous timestamp/variation used for translation tables during decoding - * @param current timestamp/variation with correct translation tables - */ - public SwapManager(List detectorNames,ConstantsManager previous,ConstantsManager current) { - this.initialize(detectorNames, previous, current); - } + public SwapManager() {} /** * @param detectorNames @@ -265,14 +238,14 @@ private void initDetectors(List detectorNames) { } public static void main(String[] args) { - - SwapManager man1 = new SwapManager(Arrays.asList("DC"),"08/10/2020","10/13/2024"); - System.err.println(man1.banksToTables.get("DC::tot")); - SwapManager noman = getInstance(); - System.out.println(Arrays.toString(noman.get(11014, "/daq/tt/bmt",3,5,320,0))); - - SwapManager man = new SwapManager(Arrays.asList("BMT"),"08/10/2020","10/13/2020"); + SwapManager man = new SwapManager(); + System.out.println(Arrays.toString(man.get(11014, "/daq/tt/bmt",3,5,320,0))); + + man.initialize(Arrays.asList("DC"),"08/10/2020","10/13/2024"); + System.err.println(man.banksToTables.get("DC::tot")); + + man.initialize(Arrays.asList("BMT"),"08/10/2020","10/13/2020"); man.get(11014,man.getTable("BMT"),"sector",3,6,8,0); System.out.println("SwapManager:\n"+man); System.out.println(man.get(11014,man.getTable("BMT"),"sector",99,22,33,44)); diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/detector/geant4/DCGeant4Factory.java b/common-tools/clas-geometry/src/main/java/org/jlab/detector/geant4/DCGeant4Factory.java index 6fc50fbec0..c02017fbc1 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/detector/geant4/DCGeant4Factory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/detector/geant4/DCGeant4Factory.java @@ -1,17 +1,7 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package org.jlab.detector.geant4; -import java.util.ArrayList; -import java.util.List; import java.util.HashMap; import org.jlab.geom.geant.Geant4Basic; -import org.jlab.geom.prim.Line3D; -import org.jlab.geom.prim.Plane3D; -import org.jlab.geom.prim.Point3D; import org.jlab.geom.base.ConstantProvider; import org.jlab.geom.prim.Vector3D; @@ -45,15 +35,11 @@ final class DCdatabase { private int nguardwires; private final String dcdbpath = "/geometry/dc/"; - private static DCdatabase instance = null; + private static DCdatabase instance = new DCdatabase(); - private DCdatabase() { - } + private DCdatabase() {} public static DCdatabase getInstance() { - if (instance == null) { - instance = new DCdatabase(); - } return instance; } @@ -278,7 +264,7 @@ public class DCGeant4Factory { DCdatabase dbref = DCdatabase.getInstance(); private Geant4Basic motherVolume = new Geant4Basic("root", "Box", 0); - private HashMap properties = new HashMap(); + private HashMap properties = new HashMap<>(); private int nsgwires; diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java index 011a9d81d5..4f6034413b 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java @@ -16,8 +16,8 @@ public class Benchmark { private static final Benchmark benchmarkInstance = new Benchmark(); private final Map timerStore = new LinkedHashMap<>(); private Timer updateTimer = null; - - public Benchmark(){} + + private Benchmark() {} public static Benchmark getInstance(){ return benchmarkInstance; diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/system/ClasUtilsFile.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/system/ClasUtilsFile.java index d47d2eb9c3..bae28e4872 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/system/ClasUtilsFile.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/system/ClasUtilsFile.java @@ -132,25 +132,7 @@ public static List getFileList(String env, String rpath){ } return ClasUtilsFile.getFileList(directory); } - /** - * returns a file list that contains files with given extension - * @param env - * @param rpath - * @param ext - * @return - */ - public static List getFileList(String env, String rpath, String ext){ - String directory = ClasUtilsFile.getResourceDir(env, rpath); - if(directory!=null) return new ArrayList<>(); - - List files = ClasUtilsFile.getFileList(directory); - List selected = new ArrayList<>(); - for(String item : files){ - if(item.endsWith(ext)==true) selected.add(item); - } - return selected; - } - + public static void writeFile(String filename, List lines){ System.out.println("writing file ---> " + filename); BufferedWriter writer = null; diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java index 0e21160ee8..070dc817b2 100644 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java +++ b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java @@ -7,10 +7,11 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; -import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.time.ZoneId; +import java.time.Instant; import java.util.ArrayList; import java.util.StringTokenizer; -import java.util.TimeZone; import java.util.logging.Level; import java.util.logging.Logger; @@ -40,14 +41,9 @@ public class MagneticFields { /** * A formatter to get the time in down to seconds (no day info). */ - private static SimpleDateFormat formatterlong; - - static { - TimeZone tz = TimeZone.getDefault(); - - formatterlong = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - formatterlong.setTimeZone(tz); - } + private static final DateTimeFormatter formatterlong = DateTimeFormatter + .ofPattern("yyyy/MM/dd HH:mm:ss") + .withZone(ZoneId.systemDefault()); // version of mag field package private static String VERSION = "1.20"; @@ -1660,7 +1656,7 @@ public String fileBaseNames() { * @return a string representation of the current time, down to seconds. */ public static String dateStringLong(long longtime) { - return formatterlong.format(longtime); + return formatterlong.format(Instant.ofEpochMilli(longtime)); } /** diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/converter/Converter.java b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/converter/Converter.java index 758334b9a2..763e936146 100644 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/converter/Converter.java +++ b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/converter/Converter.java @@ -196,7 +196,7 @@ public void done() { zIndex++; } - if ((gdata[PHI].max > 31) && (gdata[PHI].max > 31)) { + if (gdata[PHI].max > 31) { System.err.println("Correcting PhiMax to 360 from " + gdata[PHI].max); } @@ -850,4 +850,4 @@ public static void memoryToGEMCTorusConverter() { } -} \ No newline at end of file +} diff --git a/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ColorScaleModel.java b/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ColorScaleModel.java index aa280eb6fb..d2d89a4db0 100644 --- a/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ColorScaleModel.java +++ b/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ColorScaleModel.java @@ -41,7 +41,7 @@ public class ColorScaleModel { * @param minVal the minimum value; * @param maxVal the maximum value the array of colors. */ - public ColorScaleModel(double minVal, double maxVal, Color[] colors) { + private ColorScaleModel(double minVal, double maxVal, Color[] colors) { _colors = colors; _minVal = minVal; _maxVal = maxVal; @@ -52,7 +52,7 @@ public ColorScaleModel(double minVal, double maxVal, Color[] colors) { * * @return a standard blue to red color scale */ - public static ColorScaleModel blueToRed() { + public static synchronized ColorScaleModel blueToRed() { if (_blueToRed == null) { Color colors[] = { // new Color(0, 0, 139), @@ -245,4 +245,4 @@ private Color getInterpretedColor(Color c1, Color c2, double fract) { return new Color(r3, g3, b3, a3); } -} \ No newline at end of file +} diff --git a/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/Environment.java b/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/Environment.java index 0780cfcabb..203cbccba4 100644 --- a/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/Environment.java +++ b/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/Environment.java @@ -95,7 +95,7 @@ public Font getCommonFont(int size) { * * @return the singleton object. */ - public static Environment getInstance() { + public static synchronized Environment getInstance() { if (instance == null) { instance = new Environment(); } @@ -287,4 +287,4 @@ public static void memoryReport(String message) { public static void main(String arg[]) { System.out.println(Environment.getInstance()); } -} \ No newline at end of file +} diff --git a/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ImageManager.java b/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ImageManager.java index 01f63c03b8..e9fd486ea2 100644 --- a/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ImageManager.java +++ b/common-tools/cnuphys/splot/src/main/java/cnuphys/splot/plot/ImageManager.java @@ -42,7 +42,7 @@ private ImageManager() { * * @return the image manager singleton. */ - public static ImageManager getInstance() { + public static synchronized ImageManager getInstance() { if (imageManager == null) { try { imageManager = new ImageManager(); diff --git a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundFileSupport.java b/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundFileSupport.java index 6c5c65823d..8d4d21ffa6 100644 --- a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundFileSupport.java +++ b/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundFileSupport.java @@ -10,7 +10,7 @@ public class LundFileSupport { private LundFileSupport() {} - public static LundFileSupport getInstance() { + public static synchronized LundFileSupport getInstance() { if (instance == null) { instance = new LundFileSupport(); } diff --git a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundSupport.java b/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundSupport.java index 53e2d70531..091d3499a9 100644 --- a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundSupport.java +++ b/common-tools/cnuphys/swimmer/src/main/java/cnuphys/lund/LundSupport.java @@ -69,7 +69,7 @@ private LundSupport() { * * @return the singleton object. */ - public static LundSupport getInstance() { + public static synchronized LundSupport getInstance() { if (instance == null) { instance = new LundSupport(); instance.initStyles(); diff --git a/libexec/spotbugs.sh b/libexec/spotbugs.sh new file mode 100755 index 0000000000..fd275e5faf --- /dev/null +++ b/libexec/spotbugs.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# run spotbugs; additional arguments are passed to `mvn` (such as `-T`) +set -euo pipefail +mvn spotbugs:check "$@" +# mvn spotbugs:gui --no-transfer-progress # must be single-threaded diff --git a/pom.xml b/pom.xml index 805c6bb29c..1645a4f29e 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,12 @@ 4.9.8 + + jakarta.annotation + jakarta.annotation-api + 3.0.0 + + junit junit diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java index 70d56dd75c..27811e7f00 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java @@ -318,26 +318,6 @@ private void delA_delt(double tx, double ty, double Bx, double By, double Bz, do private double beta = 1.0; - public void setMass(int hypo, double mass) { - - switch (hypo) { - case 0: - mass = 0.000510998; - break; - case 1: - mass = 0.13957018; - break; - case 2: - mass = 0.493677; - break; - case 3: - mass = 0.105658369; - break; - case 4: - mass = 0.938272029; - break; - } - } /** diff --git a/reconstruction/fmt/src/main/java/org/jlab/rec/fmt/track/fit/StateVecs.java b/reconstruction/fmt/src/main/java/org/jlab/rec/fmt/track/fit/StateVecs.java index 620faf7214..0de0b88494 100644 --- a/reconstruction/fmt/src/main/java/org/jlab/rec/fmt/track/fit/StateVecs.java +++ b/reconstruction/fmt/src/main/java/org/jlab/rec/fmt/track/fit/StateVecs.java @@ -293,26 +293,6 @@ private void delA_delt(double tx, double ty, double Bx, double By, double Bz, do private double beta = 1.0; - public void setMass(int hypo, double mass) { - - switch (hypo) { - case 0: - mass = 0.000510998; - break; - case 1: - mass = 0.13957018; - break; - case 2: - mass = 0.493677; - break; - case 3: - mass = 0.105658369; - break; - case 4: - mass = 0.938272029; - break; - } - } /** diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index d6153bdd7f..7fed6c6cc8 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -19,6 +19,10 @@ javafx-base linux + + jakarta.annotation + jakarta.annotation-api + org.jlab groot diff --git a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java index e7c152bd77..af0556a406 100644 --- a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java +++ b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java @@ -7,6 +7,7 @@ import java.util.LinkedList; import java.util.List; +import jakarta.annotation.Nullable; import org.jlab.detector.banks.RawDataBank; import org.jlab.geom.prim.Vector3D; @@ -85,9 +86,9 @@ public static List loadHits(DataEvent event) { LTCCHit(RawDataBank bank, int index, - IndexedTable spe, - IndexedTable timing_offset, - IndexedTable status_table) { + @Nullable IndexedTable spe, + @Nullable IndexedTable timing_offset, + @Nullable IndexedTable status_table) { this.sector = bank.getByte("sector", index); this.segment = bank.getShort("component", index); this.side = bank.trueOrder(index) + 1; diff --git a/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java b/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java index 3a132431da..609a678c9f 100644 --- a/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java +++ b/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java @@ -80,7 +80,7 @@ public boolean init() { System.out.println("["+this.getName()+"] --> Setting detectors : "+this.getEngineConfigString("detectors")); System.out.println("["+this.getName()+"] --> Modifying ADC/TDC banks!"); - this.swapman = SwapManager.getInstance(); + this.swapman = new SwapManager(); this.swapman.initialize(dets,previousTimestamp,currentTimestamp); System.out.println("["+this.getName()+"] --> swaps are ready...."); diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml index 3134dd3058..931f9b57c1 100644 --- a/spotbugs-exclude.xml +++ b/spotbugs-exclude.xml @@ -1,8 +1,89 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +