Add error handling for OSGi classes not found
Added error handling to correctly handle case where SqlResource is
used outside an OSGi container.
Change-Id: I0b5a526b01c151c4a7924f474bf7d21e783ac260
Issue-ID: CCSDK-2625
Signed-off-by: Dan Timoney <dtimoney@att.com>
diff --git a/.gitignore b/.gitignore
index 34a96c1..cc576b7 100755
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@
maven-eclipse.xml
workspace
.checkstyle
+.vscode
## Compilation Files ##
*.class
diff --git a/sql-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/resource/sql/SqlResource.java b/sql-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/resource/sql/SqlResource.java
index 69965d1..435bc5b 100755
--- a/sql-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/resource/sql/SqlResource.java
+++ b/sql-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/resource/sql/SqlResource.java
@@ -355,28 +355,36 @@
return(dblibSvc);
}
// Try to get dblib as an OSGI service
- BundleContext bctx = null;
- ServiceReference sref = null;
- Bundle bundle = FrameworkUtil.getBundle(SqlResource.class);
-
- if (bundle != null) {
- bctx = bundle.getBundleContext();
- }
-
- if (bctx != null) {
- sref = bctx.getServiceReference(DBLIB_SERVICE);
- }
-
- if (sref == null) {
- LOG.warn("Could not find service reference for DBLIB service (" + DBLIB_SERVICE + ")");
- } else {
- dblibSvc = (DbLibService) bctx.getService(sref);
- if (dblibSvc == null) {
- LOG.warn("Could not find service reference for DBLIB service (" + DBLIB_SERVICE + ")");
+ try {
+ BundleContext bctx = null;
+ ServiceReference sref = null;
+
+
+
+ Bundle bundle = FrameworkUtil.getBundle(SqlResource.class);
+
+ if (bundle != null) {
+ bctx = bundle.getBundleContext();
}
+
+ if (bctx != null) {
+ sref = bctx.getServiceReference(DBLIB_SERVICE);
+ }
+
+ if (sref == null) {
+ LOG.warn("Could not find service reference for DBLIB service (" + DBLIB_SERVICE + ")");
+ } else {
+ dblibSvc = (DbLibService) bctx.getService(sref);
+ if (dblibSvc == null) {
+ LOG.warn("Could not find service reference for DBLIB service (" + DBLIB_SERVICE + ")");
+ }
+ }
+ } catch (NoClassDefFoundError ex) {
+ LOG.info("OSGI classes not found - must be running outside an OSGi container");
}
+
if (dblibSvc == null) {
// Must not be running in an OSGI container. See if you can load it
// as a
@@ -386,7 +394,8 @@
// be the properties passed to DBResourceManager constructor.
// If not, as default just use system properties.
Properties dblibProps = System.getProperties();
- String cfgDir = System.getenv("SDNC_CONFIG_DIR");
+
+ String cfgDir = dblibProps.getProperty("sdnc.config.dir", System.getenv("SDNC_CONFIG_DIR"));
if ((cfgDir == null) || (cfgDir.length() == 0)) {
cfgDir = "/opt/sdnc/data/properties";
@@ -395,10 +404,11 @@
File dblibPropFile = new File(cfgDir + "/dblib.properties");
if (dblibPropFile.exists()) {
try {
+ LOG.debug("Loading dblib properties from {}", dblibPropFile.getAbsolutePath());
dblibProps = new Properties();
dblibProps.load(new FileInputStream(dblibPropFile));
} catch (Exception e) {
- LOG.warn("Could not load properties file " + dblibPropFile.getAbsolutePath(), e);
+ LOG.warn("Could not load properties file {}", dblibPropFile.getAbsolutePath(), e);
dblibProps = System.getProperties();
}