diff options
Diffstat (limited to 'src/main/java/org/openecomp')
3 files changed, 19 insertions, 172 deletions
diff --git a/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java b/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java index a8c0248..f38fe0f 100644 --- a/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java +++ b/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java @@ -23,6 +23,7 @@ */ package org.openecomp.crud.service; +import org.onap.aaiutils.oxm.OxmModelLoader; import org.openecomp.aai.champcore.ChampGraph; import org.openecomp.crud.dao.GraphDao; import org.openecomp.crud.dao.champ.ChampDao; @@ -30,7 +31,6 @@ import org.openecomp.crud.entity.Edge; import org.openecomp.crud.entity.Vertex; import org.openecomp.crud.exception.CrudException; import org.openecomp.crud.parser.CrudResponseBuilder; -import org.openecomp.schema.OxmModelLoader; import org.openecomp.schema.OxmModelValidator; import org.openecomp.schema.RelationshipSchemaLoader; import org.openecomp.schema.RelationshipSchemaValidator; @@ -47,7 +47,11 @@ public class CrudGraphDataService { this.dao = new ChampDao(graphImpl); //load the schemas - OxmModelLoader.loadModels(); + try { + OxmModelLoader.loadModels(); + } catch (Exception e) { + throw new CrudException(e); + } RelationshipSchemaLoader.loadModels(); } diff --git a/src/main/java/org/openecomp/schema/OxmModelLoader.java b/src/main/java/org/openecomp/schema/OxmModelLoader.java deleted file mode 100644 index 4ef77a2..0000000 --- a/src/main/java/org/openecomp/schema/OxmModelLoader.java +++ /dev/null @@ -1,168 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * Gizmo - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. - * Copyright © 2017 Amdocs - * All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.schema; - -import org.eclipse.persistence.jaxb.JAXBContextProperties; -import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; -import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory; -import org.openecomp.cl.eelf.LoggerFactory; -import org.openecomp.crud.exception.CrudException; -import org.openecomp.crud.logging.CrudServiceMsgs; -import org.openecomp.crud.util.CrudServiceConstants; -import org.openecomp.crud.util.FileWatcher; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.ConcurrentHashMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import javax.ws.rs.core.Response.Status; -import javax.xml.bind.JAXBException; - - -public class OxmModelLoader { - - private static Map<String, DynamicJAXBContext> versionContextMap - = new ConcurrentHashMap<String, DynamicJAXBContext>(); - private static Map<String, Timer> timers = new ConcurrentHashMap<String, Timer>(); - - final static Pattern p = Pattern.compile("aai_oxm_(.*).xml"); - - private static org.openecomp.cl.api.Logger logger = LoggerFactory.getInstance() - .getLogger(OxmModelLoader.class.getName()); - - public synchronized static void loadModels() throws CrudException { - ClassLoader cl = OxmModelLoader.class.getClassLoader(); - ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl); - Resource[] resources; - try { - resources = resolver.getResources("classpath*:/oxm/aai_oxm*.xml"); - } catch (IOException ex) { - logger.error(CrudServiceMsgs.OXM_LOAD_ERROR, ex.getMessage()); - throw new CrudException("", Status.NOT_FOUND); - } - - if (resources.length == 0) { - logger.error(CrudServiceMsgs.OXM_LOAD_ERROR, "No OXM schema files found on classpath"); - throw new CrudException("Failed to load schema", Status.NOT_FOUND); - } - - for (Resource resource : resources) { - Matcher matcher = p.matcher(resource.getFilename()); - - if (matcher.matches()) { - try { - OxmModelLoader.loadModel(matcher.group(1), resource); - } catch (Exception e) { - logger.error(CrudServiceMsgs.OXM_LOAD_ERROR, "Failed to load " + resource.getFilename() - + ": " + e.getMessage()); - throw new CrudException("Failed to load schema", Status.NOT_FOUND); - } - } - } - } - - private static void addtimer(String version, File file) { - TimerTask task = null; - task = new FileWatcher( - file) { - protected void onChange(File file) { - // here we implement the onChange - logger.info(CrudServiceMsgs.OXM_FILE_CHANGED, file.getName()); - - try { - OxmModelLoader.loadModel(version, file); - } catch (Exception e) { - e.printStackTrace(); - } - - } - }; - - if (!timers.containsKey(version)) { - Timer timer = new Timer("oxm-" + version); - timer.schedule(task, new Date(), 10000); - timers.put(version, timer); - - } - } - - private synchronized static void loadModel(String version, File file) - throws JAXBException, IOException { - InputStream inputStream = new FileInputStream(file); - loadModel(version, file.getName(), inputStream); - addtimer(version, file); - } - - private synchronized static void loadModel(String version, Resource resource) - throws JAXBException, IOException { - InputStream inputStream = resource.getInputStream(); - loadModel(version, resource.getFilename(), inputStream); - } - - private synchronized static void loadModel(String version, String resourceName, - InputStream inputStream) - throws JAXBException, IOException { - Map<String, Object> properties = new HashMap<String, Object>(); - properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, inputStream); - final DynamicJAXBContext jaxbContext = DynamicJAXBContextFactory - .createContextFromOXM(Thread.currentThread().getContextClassLoader(), properties); - versionContextMap.put(version, jaxbContext); - logger.info(CrudServiceMsgs.LOADED_OXM_FILE, resourceName); - } - - public static DynamicJAXBContext getContextForVersion(String version) throws CrudException { - if (versionContextMap == null || versionContextMap.isEmpty()) { - loadModels(); - } else if (!versionContextMap.containsKey(version)) { - try { - loadModel(version, new File(CrudServiceConstants.CRD_HOME_MODEL + "aai_oxm_" - + version + ".xml")); - } catch (Exception e) { - throw new CrudException("", Status.NOT_FOUND); - } - } - - return versionContextMap.get(version); - } - - public static Map<String, DynamicJAXBContext> getVersionContextMap() { - return versionContextMap; - } - - public static void setVersionContextMap(Map<String, DynamicJAXBContext> versionContextMap) { - OxmModelLoader.versionContextMap = versionContextMap; - } - -} diff --git a/src/main/java/org/openecomp/schema/OxmModelValidator.java b/src/main/java/org/openecomp/schema/OxmModelValidator.java index 45a2597..0ae3e13 100644 --- a/src/main/java/org/openecomp/schema/OxmModelValidator.java +++ b/src/main/java/org/openecomp/schema/OxmModelValidator.java @@ -32,6 +32,7 @@ import org.eclipse.persistence.internal.helper.DatabaseField; import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; import org.eclipse.persistence.mappings.DatabaseMapping; import org.eclipse.persistence.oxm.XMLField; +import org.onap.aaiutils.oxm.OxmModelLoader; import org.openecomp.crud.entity.Vertex; import org.openecomp.crud.exception.CrudException; import org.openecomp.crud.util.CrudServiceUtil; @@ -74,7 +75,12 @@ public class OxmModelValidator { Map<String, String> filter) throws CrudException { - DynamicJAXBContext jaxbContext = OxmModelLoader.getContextForVersion(version); + DynamicJAXBContext jaxbContext = null; + try { + jaxbContext = OxmModelLoader.getContextForVersion(version); + } catch (Exception e) { + throw new CrudException(e); + } Map<String, Object> result = new HashMap<String, Object>(); if (jaxbContext == null) { @@ -107,7 +113,12 @@ public class OxmModelValidator { public static String resolveCollectionType(String version, String type) throws CrudException { - DynamicJAXBContext jaxbContext = OxmModelLoader.getContextForVersion(version); + DynamicJAXBContext jaxbContext = null; + try { + jaxbContext = OxmModelLoader.getContextForVersion(version); + } catch (Exception e) { + throw new CrudException(e); + } if (jaxbContext == null) { throw new CrudException("", Status.NOT_FOUND); |