summaryrefslogtreecommitdiffstats
path: root/utils/provider
diff options
context:
space:
mode:
authorDan Timoney <dtimoney@att.com>2020-11-10 12:53:16 -0500
committerDan Timoney <dtimoney@att.com>2020-11-10 16:36:49 -0500
commit59135590f84f59007d0210131c609e8257a75150 (patch)
treea867ed75c4459184d8204c797edc8471b54c0b06 /utils/provider
parentdc2682a99d1ac34ef36730220df1e4e806d48027 (diff)
Handle properties file reference outside OSGi
Update properties file resolves for OSGi to handle ClassNotFoundError exception correctly. Change-Id: I511213e447d07576c9a44654956b207174ed6638 Issue-ID: CCSDK-2976 Signed-off-by: Dan Timoney <dtimoney@att.com>
Diffstat (limited to 'utils/provider')
-rwxr-xr-xutils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/JREFileResolver.java32
-rwxr-xr-xutils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/BundleContextFileResolver.java26
2 files changed, 33 insertions, 25 deletions
diff --git a/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/JREFileResolver.java b/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/JREFileResolver.java
index 9ae094f1..c4a4fca4 100755
--- a/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/JREFileResolver.java
+++ b/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/JREFileResolver.java
@@ -23,11 +23,16 @@ package org.onap.ccsdk.sli.core.utils;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
+import java.nio.file.CopyOption;
import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
import java.util.Optional;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Resolves project properties files relative to the directory identified by the JRE property
@@ -39,6 +44,7 @@ public class JREFileResolver implements PropertiesFileResolver {
* Key for JRE argument representing the configuration directory
*/
+ private static final Logger LOGGER = LoggerFactory.getLogger(JREFileResolver.class);
private final String successMessage;
private final Class<?> clazz;
@@ -55,18 +61,9 @@ public class JREFileResolver implements PropertiesFileResolver {
@Override
public Optional<File> resolveFile(final String filename) {
- final Bundle bundle;
-
try {
- bundle = FrameworkUtil.getBundle(this.clazz);
- } catch (NoClassDefFoundError e) {
- return Optional.empty();
- }
-
- final File dataFile;
-
- try {
+ final Bundle bundle = FrameworkUtil.getBundle(this.clazz);
if (bundle == null) {
return Optional.empty();
}
@@ -77,7 +74,7 @@ public class JREFileResolver implements PropertiesFileResolver {
}
- dataFile = bundle.getDataFile(filename);
+ final File dataFile = bundle.getDataFile(filename);
if(dataFile.exists()) {
dataFile.delete();
}
@@ -89,8 +86,17 @@ public class JREFileResolver implements PropertiesFileResolver {
}
return Optional.of(dataFile);
- } catch (NoClassDefFoundError e) {
- return Optional.empty();
+ } catch (final NoClassDefFoundError e) {
+ LOGGER.info("Getting /{} embedded with {}", filename, clazz.getCanonicalName());
+ try (InputStream input = clazz.getResourceAsStream("/"+filename)) {
+ File propFile = File.createTempFile("tmp", ".properties", null);
+ LOGGER.info("Copying /{} to {}", filename, propFile.getAbsolutePath());
+ Files.copy(input, propFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ return Optional.of(propFile);
+ } catch (Exception e1) {
+ LOGGER.info("Caught exception getting {} embedded in jar", filename, e1);
+ return Optional.empty();
+ }
}
catch(final Exception e) {
return Optional.empty();
diff --git a/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/BundleContextFileResolver.java b/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/BundleContextFileResolver.java
index 9496d90e..356009f3 100755
--- a/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/BundleContextFileResolver.java
+++ b/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/BundleContextFileResolver.java
@@ -56,20 +56,22 @@ public class BundleContextFileResolver implements PropertiesFileResolver {
*/
@Override
public Optional<File> resolveFile(final String filename) {
- if(FrameworkUtil.getBundle(clazz) == null) {
- return Optional.empty();
- } else {
- try {
- final String pathProperty = FrameworkUtil.getBundle(this.clazz).getBundleContext().getProperty(SDNC_CONFIG_DIR_PROP_KEY);
- if(Strings.isNullOrEmpty(pathProperty)) {
- return Optional.empty();
- }
- final Path dblibPath = Paths.get(pathProperty);
- return Optional.of(dblibPath.resolve(filename).toFile());
- } catch(final Exception e) {
- LoggerFactory.getLogger(this.getClass()).error("", e);
+ try {
+ if (FrameworkUtil.getBundle(clazz) == null) {
return Optional.empty();
+ } else {
+ final String pathProperty = FrameworkUtil.getBundle(this.clazz).getBundleContext()
+ .getProperty(SDNC_CONFIG_DIR_PROP_KEY);
+ if (Strings.isNullOrEmpty(pathProperty)) {
+ return Optional.empty();
+ }
+ final Path dblibPath = Paths.get(pathProperty);
+ return Optional.of(dblibPath.resolve(filename).toFile());
+
}
+ } catch (Exception|NoClassDefFoundError e) {
+ LoggerFactory.getLogger(this.getClass()).error("", e);
+ return Optional.empty();
}
}