diff options
Diffstat (limited to 'sparkybe-onap-service/src/main/java/org/onap/aai/sparky/config/oxm/OxmModelLoader.java')
-rw-r--r-- | sparkybe-onap-service/src/main/java/org/onap/aai/sparky/config/oxm/OxmModelLoader.java | 135 |
1 files changed, 29 insertions, 106 deletions
diff --git a/sparkybe-onap-service/src/main/java/org/onap/aai/sparky/config/oxm/OxmModelLoader.java b/sparkybe-onap-service/src/main/java/org/onap/aai/sparky/config/oxm/OxmModelLoader.java index 02ce01a..fad6fdd 100644 --- a/sparkybe-onap-service/src/main/java/org/onap/aai/sparky/config/oxm/OxmModelLoader.java +++ b/sparkybe-onap-service/src/main/java/org/onap/aai/sparky/config/oxm/OxmModelLoader.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 Amdocs + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2018 Amdocs * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,29 +20,19 @@ */ package org.onap.aai.sparky.config.oxm; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.eclipse.persistence.jaxb.JAXBContextProperties; import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; -import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory; import org.onap.aai.cl.api.Logger; import org.onap.aai.cl.eelf.LoggerFactory; +import org.onap.aai.nodes.NodeIngestor; +import org.onap.aai.setup.Version; import org.onap.aai.sparky.logging.AaiUiMsgs; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; public class OxmModelLoader { - + private static final Logger LOG = LoggerFactory.getInstance().getLogger(OxmModelLoader.class); - + /* * The intent of this parameter is to be able to programmatically over-ride the latest AAI schema * version discovered from the aai-schema jar file. This property is optional, but if set on the @@ -52,114 +42,47 @@ public class OxmModelLoader { * specified version, and that stream will be returned if available. */ - protected int oxmApiVersionOverride; + protected Version oxmApiVersion; protected Set<OxmModelProcessor> processors; - private int latestVersionNum = 0; - - private final static Pattern p = Pattern.compile("aai_oxm_(v)(.*).xml"); - - public OxmModelLoader() { - this(-1, new HashSet<OxmModelProcessor>()); + + private NodeIngestor nodeIngestor; + + public OxmModelLoader(Version apiVersionOverride, Set<OxmModelProcessor> oxmModelProcessors, + NodeIngestor nodeIngestor) { + this.oxmApiVersion = apiVersionOverride; + this.processors = oxmModelProcessors; + this.nodeIngestor = nodeIngestor; } - - public OxmModelLoader(int apiVersionOverride,Set<OxmModelProcessor> oxmModelProcessors) { - this.oxmApiVersionOverride = apiVersionOverride; + + public OxmModelLoader(Set<OxmModelProcessor> oxmModelProcessors, NodeIngestor nodeIngestor) { + this.oxmApiVersion = Version.getLatest(); this.processors = oxmModelProcessors; + this.nodeIngestor = nodeIngestor; + } + + public Version getLatestVersionNum() { + return oxmApiVersion; } - - protected synchronized Map<Integer, InputStream> getStreamHandlesForOxmFromResource() { - Map<Integer, InputStream> listOfOxmFiles = new HashMap<Integer, InputStream>(); - ClassLoader oxmClassLoader = OxmModelLoader.class.getClassLoader(); - ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(oxmClassLoader); - Resource[] resources = null; - try { - resources = resolver.getResources("classpath*:/oxm/aai_oxm*.xml"); - } catch (IOException ex) { - LOG.error(AaiUiMsgs.OXM_LOADING_ERROR, ex.getMessage()); - } - if (resources == null) { - LOG.error(AaiUiMsgs.OXM_LOADING_ERROR, "No OXM schema files found on classpath"); - } - for (Resource resource : resources) { - Matcher m = p.matcher(resource.getFilename()); - if (m.matches()) { - try { - listOfOxmFiles.put(new Integer(m.group(2)), resource.getInputStream()); - } catch (Exception e) { - LOG.error(AaiUiMsgs.OXM_LOADING_ERROR, - resource.getFilename(), e.getMessage()); - } - } - } - return listOfOxmFiles; - } - /** * Load an oxm model. + * * @param inputStream file handle for oxm */ - protected void loadModel(InputStream inputStream) { - Map<String, Object> properties = new HashMap<String, Object>(); - properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, inputStream); + public void loadModel() { try { - final DynamicJAXBContext oxmContext = DynamicJAXBContextFactory - .createContextFromOXM(Thread.currentThread().getContextClassLoader(), properties); - + final DynamicJAXBContext oxmContext = nodeIngestor.getContextForVersion(oxmApiVersion); parseOxmContext(oxmContext); // populateSearchableOxmModel(); - LOG.info(AaiUiMsgs.OXM_LOAD_SUCCESS, String.valueOf(latestVersionNum)); + LOG.info(AaiUiMsgs.OXM_LOAD_SUCCESS, String.valueOf(oxmApiVersion)); } catch (Exception exc) { LOG.info(AaiUiMsgs.OXM_PARSE_ERROR_NONVERBOSE); - LOG.error(AaiUiMsgs.OXM_PARSE_ERROR_VERBOSE, "OXM v" + latestVersionNum, exc.getMessage()); - } - } - - /** - * Load the latest oxm model. - */ - public synchronized void loadLatestOxmModel() { - - LOG.info(AaiUiMsgs.INITIALIZE_OXM_MODEL_LOADER); - - // find handles for available oxm models - final Map<Integer, InputStream> listOfOxmStreams = getStreamHandlesForOxmFromResource(); - if (listOfOxmStreams.isEmpty()) { - LOG.error(AaiUiMsgs.OXM_FILE_NOT_FOUND); - return; - } - - InputStream stream = null; - - if (oxmApiVersionOverride > 0) { - latestVersionNum = oxmApiVersionOverride; - LOG.warn(AaiUiMsgs.WARN_GENERIC, "Overriding AAI Schema with version = " + latestVersionNum); - stream = listOfOxmStreams.get(latestVersionNum); - } else { - - for (Integer key : listOfOxmStreams.keySet()) { - if (key.intValue() > latestVersionNum) { - latestVersionNum = key.intValue(); - stream = listOfOxmStreams.get(key); - } - } + LOG.error(AaiUiMsgs.OXM_PARSE_ERROR_VERBOSE, "OXM v" + oxmApiVersion, exc.getMessage()); } - - // load the latest oxm file - loadModel(stream); - - } - - public int getLatestVersionNum() { - return latestVersionNum; } - public void setLatestVersionNum(int latestVersionNum) { - this.latestVersionNum = latestVersionNum; - } - /** * Parses the oxm context. * @@ -187,5 +110,5 @@ public class OxmModelLoader { } } - + } |