aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openecomp/schema/RelationshipSchemaLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openecomp/schema/RelationshipSchemaLoader.java')
-rw-r--r--src/main/java/org/openecomp/schema/RelationshipSchemaLoader.java99
1 files changed, 56 insertions, 43 deletions
diff --git a/src/main/java/org/openecomp/schema/RelationshipSchemaLoader.java b/src/main/java/org/openecomp/schema/RelationshipSchemaLoader.java
index 89a9e58..cc6315c 100644
--- a/src/main/java/org/openecomp/schema/RelationshipSchemaLoader.java
+++ b/src/main/java/org/openecomp/schema/RelationshipSchemaLoader.java
@@ -66,9 +66,8 @@ public class RelationshipSchemaLoader {
final static Pattern propsFilePattern = Pattern.compile(edgePropsFiles + "(.*)" + fileExt);
final static Pattern versionPattern = Pattern.compile(".*(v\\d+)" + fileExt);
-
private static org.openecomp.cl.api.Logger logger = LoggerFactory.getInstance()
- .getLogger(RelationshipSchemaLoader.class.getName());
+ .getLogger(RelationshipSchemaLoader.class.getName());
public synchronized static void loadModels() throws CrudException {
load(rulesFilePattern, propsFilePattern);
@@ -112,7 +111,6 @@ public class RelationshipSchemaLoader {
RelationshipSchemaLoader.versionContextMap = new ConcurrentHashMap<>();
}
-
private static void load(Pattern rulesPattern, Pattern edgePropsPattern) throws CrudException {
ClassLoader cl = RelationshipSchemaLoader.class.getClassLoader();
ResourcePatternResolver rulesResolver = new PathMatchingResourcePatternResolver(cl);
@@ -121,51 +119,66 @@ public class RelationshipSchemaLoader {
try {
// getResources method returns objects of type "Resource"
- // 1. We are getting all the objects from the classpath which has "DbEdgeRules" in the name.
- // 2. We run them through a filter and return only the objects which match the supplied pattern "p"
- // 3. We then collect the objects in a list. At this point we have a list of the kind of files we require.
+ // 1. We are getting all the objects from the classpath which has
+ // "DbEdgeRules" in the name.
+ // 2. We run them through a filter and return only the objects which match
+ // the supplied pattern "p"
+ // 3. We then collect the objects in a list. At this point we have a list
+ // of the kind of files we require.
rulesFiles = Arrays.stream(rulesResolver.getResources("classpath*:/dbedgerules/DbEdgeRules*" + fileExt))
- .filter(r -> !myMatcher(rulesPattern, r.getFilename()).isEmpty())
- .collect(Collectors.toList());
+ .filter(r -> !myMatcher(rulesPattern, r.getFilename()).isEmpty()).collect(Collectors.toList());
- // This gets all the objects of type "File" from external directory (not on the classpath)
- // 1. From an external directory (one not on the classpath) we get all the objects of type "File"
- // 2. We only return the files whose names matched the supplied pattern "p2".
- // 3. We then collect all the objects in a list and add the contents of this list
- // to the previous collection (rulesFiles)
- rulesFiles.addAll(Arrays.stream(new File(rulesDir).listFiles((d, name) ->
- edgePropsPattern.matcher(name).matches())).collect(Collectors.toList()));
+ // This gets all the objects of type "File" from external directory (not
+ // on the classpath)
+ // 1. From an external directory (one not on the classpath) we get all the
+ // objects of type "File"
+ // 2. We only return the files whose names matched the supplied pattern
+ // "p2".
+ // 3. We then collect all the objects in a list and add the contents of
+ // this list
+ // to the previous collection (rulesFiles)
+ rulesFiles
+ .addAll(Arrays.stream(new File(rulesDir).listFiles((d, name) -> edgePropsPattern.matcher(name).matches()))
+ .collect(Collectors.toList()));
if (rulesFiles.isEmpty()) {
logger.error(CrudServiceMsgs.INVALID_OXM_DIR, rulesDir);
throw new FileNotFoundException("DbEdgeRules and edge_properties files were not found.");
}
- // Sort and then group the files with their versions, convert them to the schema, and add them to versionContextMap
- // 1. Sort the files. We need the DbEdgeRules files to be before the edgeProperties files.
- // 2. Group the files with their versions. ie. v11 -> ["DbEdgeRule_v11.json", "edgeProperties_v11.json"].
- // The "group method" returns a HashMap whose key is the version and the value is a list of objects.
- // 3. Go through each version and map the files into one schema using the "jsonFilesLoader" method.
- // Also update the "versionContextMap" with the version and it's schema.
+ // Sort and then group the files with their versions, convert them to the
+ // schema, and add them to versionContextMap
+ // 1. Sort the files. We need the DbEdgeRules files to be before the
+ // edgeProperties files.
+ // 2. Group the files with their versions. ie. v11 ->
+ // ["DbEdgeRule_v11.json", "edgeProperties_v11.json"].
+ // The "group method" returns a HashMap whose key is the version and the
+ // value is a list of objects.
+ // 3. Go through each version and map the files into one schema using the
+ // "jsonFilesLoader" method.
+ // Also update the "versionContextMap" with the version and it's schema.
rulesFiles.stream().sorted(Comparator.comparing(RelationshipSchemaLoader::filename))
- .collect(Collectors.groupingBy(f -> myMatcher(versionPattern, filename(f))))
- .forEach((version, resourceAndFile) -> {
- if (resourceAndFile.size() == 2 ) {
- versionContextMap.put(version, jsonFilesLoader(version, resourceAndFile));
- } else {
- String filenames = resourceAndFile.stream().map(f-> filename(f)).collect(Collectors.toList()).toString();
- String errorMsg = "Expecting a rules and a edge_properties files for " + version + ". Found: " + filenames;
- logger.warn(CrudServiceMsgs.INVALID_OXM_FILE, errorMsg);
- }});
- logger.info(CrudServiceMsgs.LOADED_OXM_FILE, "Relationship Schema and Properties files: " + rulesFiles.stream().map(f -> filename(f)).collect(Collectors.toList()));
+ .collect(Collectors.groupingBy(f -> myMatcher(versionPattern, filename(f))))
+ .forEach((version, resourceAndFile) -> {
+ if (resourceAndFile.size() == 2) {
+ versionContextMap.put(version, jsonFilesLoader(version, resourceAndFile));
+ } else {
+ String filenames = resourceAndFile.stream().map(f -> filename(f)).collect(Collectors.toList()).toString();
+ String errorMsg = "Expecting a rules and a edge_properties files for " + version + ". Found: "
+ + filenames;
+ logger.warn(CrudServiceMsgs.INVALID_OXM_FILE, errorMsg);
+ }
+ });
+ logger.info(CrudServiceMsgs.LOADED_OXM_FILE, "Relationship Schema and Properties files: "
+ + rulesFiles.stream().map(f -> filename(f)).collect(Collectors.toList()));
} catch (IOException e) {
logger.error(CrudServiceMsgs.INVALID_OXM_DIR, rulesDir);
throw new CrudException("DbEdgeRules or edge_properties files were not found.", new FileNotFoundException());
}
}
- private static String filename (Object k) throws ClassCastException {
- if (k instanceof UrlResource){
+ private static String filename(Object k) throws ClassCastException {
+ if (k instanceof UrlResource) {
return ((UrlResource) k).getFilename();
} else if (k instanceof File) {
return ((File) k).getName();
@@ -174,7 +187,7 @@ public class RelationshipSchemaLoader {
}
}
- private static RelationshipSchema jsonFilesLoader (String version, List<Object> files) {
+ private static RelationshipSchema jsonFilesLoader(String version, List<Object> files) {
List<String> fileContents = new ArrayList<>();
RelationshipSchema rsSchema = null;
if (files.size() == 2) {
@@ -188,29 +201,29 @@ public class RelationshipSchemaLoader {
} catch (CrudException | IOException e) {
e.printStackTrace();
logger.error(CrudServiceMsgs.INVALID_OXM_FILE,
- files.stream().map(f -> filename(f)).collect(Collectors.toList()).toString(), e.getMessage());
+ files.stream().map(f -> filename(f)).collect(Collectors.toList()).toString(), e.getMessage());
}
return rsSchema;
}
return rsSchema;
}
- private synchronized static void updateVersionContext(String version, RelationshipSchema rs){
+ private synchronized static void updateVersionContext(String version, RelationshipSchema rs) {
versionContextMap.put(version, rs);
}
- private synchronized static String jsonToRelationSchema (String version, Object file) {
+ private synchronized static String jsonToRelationSchema(String version, Object file) {
InputStream inputStream = null;
String content = null;
try {
- if (file instanceof UrlResource) {
+ if (file instanceof UrlResource) {
inputStream = ((UrlResource) file).getInputStream();
} else {
inputStream = new FileInputStream((File) file);
addtimer(version, file);
}
- content = IOUtils.toString(inputStream, "UTF-8");
+ content = IOUtils.toString(inputStream, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
@@ -219,14 +232,14 @@ public class RelationshipSchemaLoader {
private static void addtimer(String version, Object file) {
TimerTask task = null;
- task = new FileWatcher(
- (File) file) {
+ task = new FileWatcher((File) file) {
protected void onChange(File file) {
// here we implement the onChange
logger.info(CrudServiceMsgs.OXM_FILE_CHANGED, file.getName());
try {
- // Cannot use the file object here because we also have to get the edge properties associated with that version.
+ // Cannot use the file object here because we also have to get the
+ // edge properties associated with that version.
// The properties are stored in a different file.
RelationshipSchemaLoader.loadModels(version);
} catch (Exception e) {
@@ -243,7 +256,7 @@ public class RelationshipSchemaLoader {
}
}
- private static String myMatcher (Pattern p, String s) {
+ private static String myMatcher(Pattern p, String s) {
Matcher m = p.matcher(s);
return m.matches() ? m.group(1) : "";
}