diff --git a/src/main/java/com/yetanalytics/hlaxapi/AppConfig.java b/src/main/java/com/yetanalytics/hlaxapi/AppConfig.java index 42ef24d..634002f 100644 --- a/src/main/java/com/yetanalytics/hlaxapi/AppConfig.java +++ b/src/main/java/com/yetanalytics/hlaxapi/AppConfig.java @@ -42,11 +42,6 @@ public HLADecoderRegistry hlaDecoderRegistry(EncoderFactory encoderFactory) { return new HLADecoderRegistry(encoderFactory); } - @Bean - public FomCatalog fomCatalog(FOMXML fomXml) { - return FomCatalog.fromFomXml(fomXml); - } - @Bean(destroyMethod = "close") public ObjectCache objectCache( XapiConfig xapiConfig, diff --git a/src/main/java/com/yetanalytics/hlaxapi/cache/FomCatalog.java b/src/main/java/com/yetanalytics/hlaxapi/cache/FomCatalog.java index 9e198ec..829c26e 100644 --- a/src/main/java/com/yetanalytics/hlaxapi/cache/FomCatalog.java +++ b/src/main/java/com/yetanalytics/hlaxapi/cache/FomCatalog.java @@ -12,6 +12,8 @@ import java.util.Optional; import java.util.Set; import javax.xml.xpath.XPathExpressionException; + +import org.springframework.stereotype.Component; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -20,14 +22,24 @@ /** * FOM-derived object metadata used by the SQLite cache. */ +@Component public final class FomCatalog { private final Map classesByName; private final Map classesById; private final Map attributesById; - private FomCatalog(Map classesByName) { - this.classesByName = Collections.unmodifiableMap(classesByName); + public FomCatalog(FOMXML fomXml) { + Objects.requireNonNull(fomXml, "fomXml"); + CatalogBuilder builder = new CatalogBuilder(fomXml); + Document document = fomXml.getDoc(); + Element objects = firstElement(document.getDocumentElement(), "objects"); + if (objects != null) { + for (Element objectClass : childElements(objects, "objectClass")) { + builder.parseObjectClass(objectClass, null, new ArrayList<>()); + } + } + this.classesByName = builder.classesByName; Map byId = new LinkedHashMap<>(); Map attrsById = new LinkedHashMap<>(); @@ -41,19 +53,6 @@ private FomCatalog(Map classesByName) { this.attributesById = Collections.unmodifiableMap(attrsById); } - public static FomCatalog fromFomXml(FOMXML fomXml) { - Objects.requireNonNull(fomXml, "fomXml"); - CatalogBuilder builder = new CatalogBuilder(fomXml); - Document document = fomXml.getDoc(); - Element objects = firstElement(document.getDocumentElement(), "objects"); - if (objects != null) { - for (Element objectClass : childElements(objects, "objectClass")) { - builder.parseObjectClass(objectClass, null, new ArrayList<>()); - } - } - return new FomCatalog(builder.classesByName); - } - public Collection objectClasses() { return classesByName.values(); }