99 */
1010public final class AdapterRegistry {
1111 private static final Logger LOGGER = Logger .getLogger (AdapterRegistry .class .getName ());
12- private static final AdapterRegistry instance = new AdapterRegistry () ;
12+ private static AdapterRegistry instance ;
1313 private final Map <String , AdapterFactory > registeredFactories = new HashMap <>();
1414
1515 /**
1616 * Get the singleton instance of the {@link AdapterRegistry}
1717 *
1818 * @return singleton instance
1919 */
20- public static AdapterRegistry getInstance () {
20+ public static final synchronized AdapterRegistry getInstance () {
21+ if (instance == null ) {
22+ LOGGER .finer (() -> "Instanciating Virtual Schema Adapter registry and loading adapter factories." );
23+ instance = new AdapterRegistry ();
24+ instance .loadAdapterFactories ();
25+ }
2126 return instance ;
2227 }
2328
24- /**
25- * Load adapter factories via the {@link ServiceLoader}
26- */
27- public void loadAdapterFactories () {
29+ private void loadAdapterFactories () {
2830 final ServiceLoader <AdapterFactory > serviceLoader = ServiceLoader .load (AdapterFactory .class );
2931 final Iterator <AdapterFactory > factories = serviceLoader .iterator ();
3032 while (factories .hasNext ()) {
@@ -98,18 +100,22 @@ public void clear() {
98100 * @return description
99101 */
100102 public String describe () {
101- final StringBuilder builder = new StringBuilder ("Currently registered Virtual Schema Adapter factories: " );
102- boolean first = true ;
103- for (final String name : this .registeredFactories .keySet ()) {
104- if (first ) {
105- first = false ;
106- } else {
107- builder .append (", " );
103+ if (this .registeredFactories .isEmpty ()) {
104+ return "No Virtual Schema Adapter factories are currently reqistered." ;
105+ } else {
106+ final StringBuilder builder = new StringBuilder ("Currently registered Virtual Schema Adapter factories: " );
107+ boolean first = true ;
108+ for (final String name : this .registeredFactories .keySet ()) {
109+ if (first ) {
110+ first = false ;
111+ } else {
112+ builder .append (", " );
113+ }
114+ builder .append ("\" " );
115+ builder .append (name );
116+ builder .append ("\" " );
108117 }
109- builder .append ("\" " );
110- builder .append (name );
111- builder .append ("\" " );
118+ return builder .toString ();
112119 }
113- return builder .toString ();
114120 }
115121}
0 commit comments