summaryrefslogtreecommitdiffstats
path: root/feature-state-management
diff options
context:
space:
mode:
Diffstat (limited to 'feature-state-management')
-rw-r--r--feature-state-management/.gitignore1
-rw-r--r--feature-state-management/pom.xml5
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java137
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java64
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/IntegrityMonitorRestManager.java2
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java45
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeature.java7
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java3
-rw-r--r--feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java4
9 files changed, 124 insertions, 144 deletions
diff --git a/feature-state-management/.gitignore b/feature-state-management/.gitignore
new file mode 100644
index 00000000..b83d2226
--- /dev/null
+++ b/feature-state-management/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/feature-state-management/pom.xml b/feature-state-management/pom.xml
index 5265cdbb..033d36d6 100644
--- a/feature-state-management/pom.xml
+++ b/feature-state-management/pom.xml
@@ -133,5 +133,10 @@
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java
index 8de170c7..cde6e4e4 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java
@@ -46,6 +46,9 @@ public class DbAudit extends DroolsPDPIntegrityMonitor.AuditBase
static public boolean isJunit = false;
+ synchronized private static void setCreateTableNeeded(boolean b) {
+ DbAudit.createTableNeeded = b;
+ }
/**
* @return the single 'DbAudit' instance
*/
@@ -103,26 +106,17 @@ public class DbAudit extends DroolsPDPIntegrityMonitor.AuditBase
String user = properties.getProperty(StateManagementProperties.DB_USER);
String password = properties.getProperty(StateManagementProperties.DB_PWD);
- // connection to DB
- Connection connection = null;
-
- // supports SQL operations
- PreparedStatement statement = null;
- ResultSet rs = null;
-
// operation phase currently running -- used to construct an error
// message, if needed
String phase = null;
- try
+ // create connection to DB
+ phase = "creating connection";
+ if(logger.isDebugEnabled()){
+ logger.debug("DbAudit: Creating connection to {}", url);
+ }
+ try (Connection connection = DriverManager.getConnection(url, user, password))
{
- // create connection to DB
- phase = "creating connection";
- if(logger.isDebugEnabled()){
- logger.debug("DbAudit: Creating connection to {}", url);
- }
-
- connection = DriverManager.getConnection(url, user, password);
// create audit table, if needed
if (createTableNeeded)
@@ -131,93 +125,68 @@ public class DbAudit extends DroolsPDPIntegrityMonitor.AuditBase
if(logger.isDebugEnabled()){
logger.info("DbAudit: Creating 'Audit' table, if needed");
}
- statement = connection.prepareStatement
+ try (PreparedStatement statement = connection.prepareStatement
("CREATE TABLE IF NOT EXISTS Audit (\n"
+ " name varchar(64) DEFAULT NULL,\n"
+ " UNIQUE KEY name (name)\n"
- + ") DEFAULT CHARSET=latin1;");
- statement.execute();
- statement.close();
- createTableNeeded = false;
+ + ") DEFAULT CHARSET=latin1;")) {
+ statement.execute();
+ DbAudit.setCreateTableNeeded(false);
+ } catch (Exception e) {
+ throw e;
+ }
}
// insert an entry into the table
phase = "insert entry";
String key = UUID.randomUUID().toString();
- statement = connection.prepareStatement
- ("INSERT INTO Audit (name) VALUES (?)");
- statement.setString(1, key);
- statement.executeUpdate();
- statement.close();
-
+ try (PreparedStatement statement = connection.prepareStatement
+ ("INSERT INTO Audit (name) VALUES (?)")) {
+ statement.setString(1, key);
+ statement.executeUpdate();
+ } catch (Exception e) {
+ throw e;
+ }
+
// fetch the entry from the table
phase = "fetch entry";
- statement = connection.prepareStatement
- ("SELECT name FROM Audit WHERE name = ?");
- statement.setString(1, key);
- rs = statement.executeQuery();
- if (rs.first())
- {
- // found entry
- if(logger.isDebugEnabled()){
- logger.debug("DbAudit: Found key {}", rs.getString(1));
+ try (PreparedStatement statement = connection.prepareStatement
+ ("SELECT name FROM Audit WHERE name = ?")) {
+ statement.setString(1, key);
+ try (ResultSet rs = statement.executeQuery()) {
+ if (rs.first())
+ {
+ // found entry
+ if(logger.isDebugEnabled()){
+ logger.debug("DbAudit: Found key {}", rs.getString(1));
+ }
+ }
+ else
+ {
+ logger.error
+ ("DbAudit: can't find newly-created entry with key {}", key);
+ setResponse("Can't find newly-created entry");
+ }
+ } catch (Exception e) {
+ throw e;
}
- }
- else
- {
- logger.error
- ("DbAudit: can't find newly-created entry with key {}", key);
- setResponse("Can't find newly-created entry");
- }
- statement.close();
-
+ }
// delete entries from table
phase = "delete entry";
- statement = connection.prepareStatement
- ("DELETE FROM Audit WHERE name = ?");
- statement.setString(1, key);
- statement.executeUpdate();
- statement.close();
- statement = null;
- }
+ try (PreparedStatement statement = connection.prepareStatement
+ ("DELETE FROM Audit WHERE name = ?")) {
+ statement.setString(1, key);
+ statement.executeUpdate();
+ } catch (Exception e) {
+ throw e;
+ }
+ }
catch (Exception e)
{
String message = "DbAudit: Exception during audit, phase = " + phase;
logger.error(message, e);
setResponse(message);
}
- finally
- {
- if (rs != null)
- {
- try
- {
- rs.close();
- }
- catch (Exception e)
- {
- }
- }
- if (statement != null)
- {
- try
- {
- statement.close();
- }
- catch (Exception e)
- {
- }
- }
- if (connection != null)
- {
- try
- {
- connection.close();
- }
- catch (Exception e)
- {
- }
- }
- }
}
+
}
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java
index 73f6f738..3b7410fa 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java
@@ -20,20 +20,17 @@
package org.onap.policy.drools.statemanagement;
-import java.io.File;
-import java.io.FileInputStream;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.Properties;
import org.onap.policy.common.im.IntegrityMonitor;
import org.onap.policy.common.im.IntegrityMonitorException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.onap.policy.drools.core.PolicyContainer;
import org.onap.policy.drools.http.server.HttpServletServer;
import org.onap.policy.drools.properties.Startable;
import org.onap.policy.drools.utils.PropertyUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This class extends 'IntegrityMonitor' for use in the 'Drools PDP'
@@ -90,62 +87,62 @@ public class DroolsPDPIntegrityMonitor extends IntegrityMonitor
if (resourceName == null)
{
logger.error("init: Missing IntegrityMonitor property: 'resource.name'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'resource.name'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'resource.name'");
}
if (hostPort == null)
{
logger.error("init: Missing IntegrityMonitor property: 'hostPort'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'hostPort'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'hostPort'");
}
if (fpMonitorInterval == null)
{
logger.error("init: Missing IntegrityMonitor property: 'fp_monitor_interval'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'fp_monitor_interval'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'fp_monitor_interval'");
}
if (failedCounterThreshold == null)
{
logger.error("init: Missing IntegrityMonitor property: 'failed_counter_threshold'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'failed_counter_threshold'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'failed_counter_threshold'");
}
if (testTransInterval == null)
{
logger.error("init: Missing IntegrityMonitor property: 'test_trans_interval'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'test_trans_interval'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'test_trans_interval'");
}
if (writeFpcInterval == null)
{
logger.error("init: Missing IntegrityMonitor property: 'write_fpc_interval'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'write_fpc_interval'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'write_fpc_interval'");
}
if (siteName == null)
{
logger.error("init: Missing IntegrityMonitor property: 'site_name'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'site_name'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'site_name'");
}
if (nodeType == null)
{
logger.error("init: Missing IntegrityMonitor property: 'node_type'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'node_type'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'node_type'");
}
if (dependencyGroups == null)
{
logger.error("init: Missing IntegrityMonitor property: 'dependency_groups'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'dependency_groups'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'dependency_groups'");
}
if (javaxPersistenceJdbcDriver == null)
{
logger.error("init: Missing IntegrityMonitor property: 'javax.persistence.jbdc.driver for xacml DB'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'javax.persistence.jbdc.driver for xacml DB'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'javax.persistence.jbdc.driver for xacml DB'");
}
if (javaxPersistenceJdbcUrl == null)
{
@@ -156,14 +153,14 @@ public class DroolsPDPIntegrityMonitor extends IntegrityMonitor
if (javaxPersistenceJdbcUser == null)
{
logger.error("init: Missing IntegrityMonitor property: 'javax.persistence.jbdc.user for xacml DB'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'javax.persistence.jbdc.user for xacml DB'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'javax.persistence.jbdc.user for xacml DB'");
}
if (javaxPersistenceJdbcPassword == null)
{
logger.error("init: Missing IntegrityMonitor property: 'javax.persistence.jbdc.password for xacml DB'");
- throw(new Exception
- ("Missing IntegrityMonitor property: 'javax.persistence.jbdc.password' for xacml DB'"));
+ throw new Exception
+ ("Missing IntegrityMonitor property: 'javax.persistence.jbdc.password' for xacml DB'");
}
// Now that we've validated the properties, create Drools Integrity Monitor
@@ -303,7 +300,7 @@ public class DroolsPDPIntegrityMonitor extends IntegrityMonitor
*/
public String getName()
{
- return(name);
+ return name;
}
/**
@@ -311,7 +308,7 @@ public class DroolsPDPIntegrityMonitor extends IntegrityMonitor
*/
public String getResponse()
{
- return(response);
+ return response;
}
/**
@@ -351,10 +348,11 @@ public class DroolsPDPIntegrityMonitor extends IntegrityMonitor
try {
server.waitedStart(5);
} catch (Exception e) {
- e.printStackTrace();
+ logger.error("Exception waiting for servers to start: ", e);
}
}
} catch (Exception e) {
+ logger.error("Exception building servers", e);
return false;
}
@@ -366,7 +364,7 @@ public class DroolsPDPIntegrityMonitor extends IntegrityMonitor
try {
server.stop();
} catch (Exception e) {
- e.printStackTrace();
+ logger.error("Exception during stop", e);
}
return true;
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/IntegrityMonitorRestManager.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/IntegrityMonitorRestManager.java
index f5024299..ed522fce 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/IntegrityMonitorRestManager.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/IntegrityMonitorRestManager.java
@@ -77,8 +77,6 @@ public class IntegrityMonitorRestManager {
im = DroolsPDPIntegrityMonitor.getInstance();
} catch (Exception e) {
logger.error("IntegrityMonitorRestManager: test() interface caught an exception", e);
- e.printStackTrace();
-
body.append("\nException: " + e + "\n");
responseValue = 500;
}
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java
index 94464cd4..b36c1657 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java
@@ -53,7 +53,7 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
*/
public static DroolsPDPIntegrityMonitor.AuditBase getInstance()
{
- return(instance);
+ return instance;
}
/**
@@ -123,8 +123,8 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
String repositoryPassword =
StateManagementProperties.getProperty("repository.audit.password");
boolean upload =
- (repositoryId != null && repositoryUrl != null
- && repositoryUsername != null && repositoryPassword != null);
+ repositoryId != null && repositoryUrl != null
+ && repositoryUsername != null && repositoryPassword != null;
// used to incrementally construct response as problems occur
// (empty = no problems)
@@ -335,11 +335,17 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
// place output in 'fileContents' (replacing the Return characters
// with Newline)
byte[] outputData = new byte[(int)output.length()];
- FileInputStream fis = new FileInputStream(output);
- fis.read(outputData);
- String fileContents = new String(outputData).replace('\r','\n');
- fis.close();
-
+ String fileContents;
+ try (FileInputStream fis = new FileInputStream(output)) {
+ //
+ // Ideally this should be in a loop or even better use
+ // Java 8 nio functionality.
+ //
+ int bytesRead = fis.read(outputData);
+ logger.info("fileContents read {} bytes", bytesRead);
+ fileContents = new String(outputData).replace('\r','\n');
+ }
+
// generate log messages from 'Downloading' and 'Downloaded'
// messages within the 'mvn' output
int index = 0;
@@ -404,8 +410,8 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
"curl",
"--request", "DELETE",
"--user", repositoryUsername + ":" + repositoryPassword,
- (repositoryUrl + "/" + groupId.replace('.', '/') + "/" +
- artifactId + "/" + version))
+ repositoryUrl + "/" + groupId.replace('.', '/') + "/" +
+ artifactId + "/" + version)
!= 0)
{
logger.error
@@ -431,13 +437,15 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
(dir,
new SimpleFileVisitor<Path>()
{
+ @Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
{
// logger.info("RepositoryAudit: Delete " + file);
file.toFile().delete();
- return(FileVisitResult.CONTINUE);
+ return FileVisitResult.CONTINUE;
}
+ @Override
public FileVisitResult postVisitDirectory(Path file, IOException e)
throws IOException
{
@@ -445,11 +453,11 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
{
// logger.info("RepositoryAudit: Delete " + file);
file.toFile().delete();
- return(FileVisitResult.CONTINUE);
+ return FileVisitResult.CONTINUE;
}
else
{
- throw(e);
+ throw e;
}
}
});
@@ -486,12 +494,12 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
if (process.waitFor(timeoutInSeconds, TimeUnit.SECONDS))
{
// process terminated before the timeout
- return(process.exitValue());
+ return process.exitValue();
}
// process timed out -- kill it, and return -1
process.destroyForcibly();
- return(-1);
+ return -1;
}
/* ============================================================ */
@@ -532,21 +540,22 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase
String[] segments = artifact.split("/");
if (segments.length != 4 && segments.length != 3)
{
- throw(new IllegalArgumentException("groupId/artifactId/version/type"));
+ throw new IllegalArgumentException("groupId/artifactId/version/type");
}
groupId = segments[0];
artifactId = segments[1];
version = segments[2];
- type = (segments.length == 4 ? segments[3] : "jar");
+ type = segments.length == 4 ? segments[3] : "jar";
}
/**
* @return the artifact id in the form:
* "<groupId>/<artifactId>/<version>/<type>"
*/
+ @Override
public String toString()
{
- return(groupId + "/" + artifactId + "/" + version + "/" + type);
+ return groupId + "/" + artifactId + "/" + version + "/" + type;
}
}
}
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeature.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeature.java
index 6d47039e..0143c58b 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeature.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeature.java
@@ -24,14 +24,13 @@ import java.io.IOException;
import java.util.Observer;
import java.util.Properties;
-import org.onap.policy.drools.statemanagement.StateManagementFeatureAPI;
import org.onap.policy.common.im.StandbyStatusException;
import org.onap.policy.common.im.StateManagement;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.onap.policy.drools.core.PolicySessionFeatureAPI;
import org.onap.policy.drools.features.PolicyEngineFeatureAPI;
import org.onap.policy.drools.utils.PropertyUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* If this feature is supported, there is a single instance of it.
@@ -100,14 +99,12 @@ public class StateManagementFeature implements StateManagementFeatureAPI,
}
}
} catch (Exception e1) {
- String msg = " \n";
if(logger.isDebugEnabled()){
logger.debug("StateManagementFeature.globalInit(): DroolsPDPIntegrityMonitor"
+ " initialization failed with exception:", e1);
}
logger.error("DroolsPDPIntegrityMonitor.init(): StateManagementFeature startup failed "
+ "to get DroolsPDPIntegrityMonitor instance:", e1);
- e1.printStackTrace();
}
}
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java
index c8e17ea9..f90f7482 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java
@@ -38,6 +38,9 @@ public class StateManagementProperties {
public static final String DB_PWD = "javax.persistence.jdbc.password";
private static Properties properties = null;
+
+ private StateManagementProperties(){
+ }
/*
* Initialize the parameter values from the feature-state-management.properties file values
*
diff --git a/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java b/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java
index 8adb9462..ba7ce3ea 100644
--- a/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java
+++ b/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java
@@ -38,8 +38,6 @@ import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.onap.policy.common.im.StateManagement;
import org.onap.policy.drools.core.PolicySessionFeatureAPI;
import org.onap.policy.drools.statemanagement.DbAudit;
@@ -47,6 +45,8 @@ import org.onap.policy.drools.statemanagement.IntegrityMonitorRestManager;
import org.onap.policy.drools.statemanagement.RepositoryAudit;
import org.onap.policy.drools.statemanagement.StateManagementFeatureAPI;
import org.onap.policy.drools.statemanagement.StateManagementProperties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class StateManagementTest {