From 9958d5ad48e2083bbe544329d7cf8e73147a49c9 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 5 Oct 2026 11:13:43 -0400 Subject: [PATCH 1/3] provide a singleton full schema factory --- .../main/java/org/jlab/utils/CLASResources.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java index 86f3e57c78..27c6d37b00 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java +++ b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java @@ -1,12 +1,26 @@ package org.jlab.utils; +import org.jlab.jnp.hipo4.data.SchemaFactory; + /** * * @author gavalian * @author kenjo */ public class CLASResources { - + + public static volatile SchemaFactory FULL_SCHEMA = null; + + public static synchronized SchemaFactory getFullSchema() { + if (FULL_SCHEMA == null) { + FULL_SCHEMA = new SchemaFactory(); + FULL_SCHEMA.initFromDirectory(getResourcePath("etc/bankdefs/hipo4")); + } + SchemaFactory s = new SchemaFactory(); + s.copy(FULL_SCHEMA); + return s; + } + public static String getResourcePath(String resource){ String CLAS12DIR = System.getenv("CLAS12DIR"); String CLAS12DIRPROP = System.getProperty("CLAS12DIR"); @@ -44,4 +58,5 @@ public static String getEnvironmentVariable(String envvarname){ return null; } + } From eae95b876b2cd019a598588579ebfaf7d87adf4c Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 5 Oct 2026 11:14:29 -0400 Subject: [PATCH 2/3] privatize --- .../clas-io/src/main/java/org/jlab/utils/CLASResources.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java index 27c6d37b00..6e06bd2270 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java +++ b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java @@ -9,7 +9,7 @@ */ public class CLASResources { - public static volatile SchemaFactory FULL_SCHEMA = null; + private static volatile SchemaFactory FULL_SCHEMA = null; public static synchronized SchemaFactory getFullSchema() { if (FULL_SCHEMA == null) { From 19b10eb807d6af5491e082af1185f97482273d56 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 5 Oct 2026 12:47:13 -0400 Subject: [PATCH 3/3] lower lock --- .../src/main/java/org/jlab/utils/CLASResources.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java index 6e06bd2270..3268fb7ae4 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java +++ b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java @@ -11,10 +11,12 @@ public class CLASResources { private static volatile SchemaFactory FULL_SCHEMA = null; - public static synchronized SchemaFactory getFullSchema() { - if (FULL_SCHEMA == null) { - FULL_SCHEMA = new SchemaFactory(); - FULL_SCHEMA.initFromDirectory(getResourcePath("etc/bankdefs/hipo4")); + public static SchemaFactory getFullSchema() { + synchronized (FULL_SCHEMA) { + if (FULL_SCHEMA == null) { + FULL_SCHEMA = new SchemaFactory(); + FULL_SCHEMA.initFromDirectory(getResourcePath("etc/bankdefs/hipo4")); + } } SchemaFactory s = new SchemaFactory(); s.copy(FULL_SCHEMA);