Merge "Fix a Bug in View Mode"
diff --git a/BRMSGateway/pom.xml b/BRMSGateway/pom.xml
index 2f4612a..9be5c30 100644
--- a/BRMSGateway/pom.xml
+++ b/BRMSGateway/pom.xml
@@ -19,134 +19,166 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.policy.engine</groupId>
- <artifactId>PolicyEngineSuite</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
- <artifactId>BRMSGateway</artifactId>
- <description>This application will take in BRMS rules and acts as interface between PR and PDP XACML</description>
- <dependencies>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.engine</groupId>
- <artifactId>PolicyEngineAPI</artifactId>
- <version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.att.nsa</groupId>
- <artifactId>cambriaClient</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-model</artifactId>
- <version>3.5.3</version>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.shared</groupId>
- <artifactId>maven-invoker</artifactId>
- <version>3.0.0</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.common</groupId>
- <artifactId>integrity-monitor</artifactId>
- <version>${project.version}</version>
- </dependency>
- <!--
- CLM security fix - force use of commons-collections 3.2.2.
- Remove this if a new version of nexus-rest-client-java is upgraded
- to not use velocity (and then subsequently commons-collections v3.1
- -->
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>3.2.2</version>
- </dependency>
- <dependency>
- <groupId>org.sonatype.nexus</groupId>
- <artifactId>nexus-rest-client-java</artifactId>
- <version>2.3.1-01</version>
- <exclusions>
- <exclusion>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <version>1.4.10</version>
- </dependency>
- <dependency>
- <groupId>com.att.nsa</groupId>
- <artifactId>cambriaClient</artifactId>
- <version>0.0.1</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId>
- <artifactId>dmaapClient</artifactId>
- <version>${dmaap.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.att.aft</groupId>
- <artifactId>dme2</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>${httpclient.version}</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <!-- Build an executable JAR -->
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2</version>
- <configuration>
- <archive>
- <manifest>
- <addClasspath>true</addClasspath>
- <classpathPrefix>lib/</classpathPrefix>
- <mainClass>org.onap.policy.brmsInterface.BRMSGateway</mainClass>
- </manifest>
- </archive>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.onap.policy.engine</groupId>
+ <artifactId>PolicyEngineSuite</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>BRMSGateway</artifactId>
+ <description>This application will take in BRMS rules and acts as interface between PR and PDP XACML</description>
+ <dependencies>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.engine</groupId>
+ <artifactId>PolicyEngineAPI</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.att.nsa</groupId>
+ <artifactId>cambriaClient</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <version>3.5.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-invoker</artifactId>
+ <version>3.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.common</groupId>
+ <artifactId>integrity-monitor</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- CLM security fix - force use of commons-collections 3.2.2. Remove
+ this if a new version of nexus-rest-client-java is upgraded to not use velocity
+ (and then subsequently commons-collections v3.1 -->
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.sonatype.nexus</groupId>
+ <artifactId>nexus-rest-client-java</artifactId>
+ <version>2.3.1-01</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.4.10</version>
+ </dependency>
+ <dependency>
+ <groupId>com.att.nsa</groupId>
+ <artifactId>cambriaClient</artifactId>
+ <version>0.0.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId>
+ <artifactId>dmaapClient</artifactId>
+ <version>${dmaap.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.att.aft</groupId>
+ <artifactId>dme2</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>${httpclient.version}</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>onap-java-style</id>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ <phase>process-sources</phase>
+ <configuration>
+ <!-- Use Google Java Style Guide: https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml
+ with minor changes -->
+ <configLocation>onap-checkstyle/onap-java-style.xml</configLocation>
+ <!-- <sourceDirectory> is needed so that checkstyle
+ ignores the generated sources directory -->
+ <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
+ <includeResources>true</includeResources>
+ <includeTestSourceDirectory>true</includeTestSourceDirectory>
+ <includeTestResources>true</includeTestResources>
+ <consoleOutput>true</consoleOutput>
+ <failOnViolation>true</failOnViolation>
+ <violationSeverity>warning</violationSeverity>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.oparent</groupId>
+ <artifactId>checkstyle</artifactId>
+ <version>0.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <!-- Build an executable JAR -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <classpathPrefix>lib/</classpathPrefix>
+ <mainClass>org.onap.policy.brmsInterface.BRMSGateway</mainClass>
+ </manifest>
+ </archive>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSGateway.java b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsGateway.java
similarity index 75%
rename from BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSGateway.java
rename to BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsGateway.java
index 98c49ce..d121783 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSGateway.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsGateway.java
@@ -18,7 +18,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.brmsInterface;
+package org.onap.policy.brms.api;
import org.onap.policy.api.NotificationScheme;
import org.onap.policy.api.PolicyEngine;
@@ -28,29 +28,30 @@
import org.onap.policy.xacml.api.XACMLErrorConstants;
/**
- * BRMSGateway: This application acts as the Gateway interface between the PDP XACML and PDP Drools. The listens for
- * BRMS based policies and pushes them to the specified Policy Repository, from where the PDP Drools reads the Rule Jar.
+ * BRMSGateway: This application acts as the Gateway interface between the PDP XACML and PDP Drools.
+ * The listens for BRMS based policies and pushes them to the specified Policy Repository, from
+ * where the PDP Drools reads the Rule Jar.
*
* @version 0.1
*/
-class BRMSGateway {
-
- private static final Logger logger = FlexLogger.getLogger(BRMSGateway.class);
+class BrmsGateway {
+
+ private static final Logger logger = FlexLogger.getLogger(BrmsGateway.class);
private static final String CONFIGFILE = "config.properties";
private static PolicyEngine policyEngine = null;
- private BRMSGateway() {
- // Default private constructor
+ private BrmsGateway() {
+ // Default private constructor
}
-
- public static void main(String[] args) throws Exception {
+
+ public static void main(final String[] args) throws Exception {
// Initialize Handler.
logger.info("Initializing BRMS Handler");
- BRMSHandler bRMSHandler = null;
+ BrmsHandler brmsHandler = null;
try {
- bRMSHandler = new BRMSHandler(CONFIGFILE);
- } catch (PolicyException e) {
+ brmsHandler = new BrmsHandler(CONFIGFILE);
+ } catch (final PolicyException e) {
logger.error("Check your property file: " + e.getMessage(), e);
System.exit(1);
}
@@ -58,24 +59,24 @@
// Set Handler with Auto Notification and initialize policyEngine
try {
logger.info("Initializing policyEngine with Auto Notifications");
- policyEngine = new PolicyEngine(CONFIGFILE, NotificationScheme.AUTO_ALL_NOTIFICATIONS, bRMSHandler);
- } catch (Exception e) {
+ policyEngine = new PolicyEngine(CONFIGFILE, NotificationScheme.AUTO_ALL_NOTIFICATIONS, brmsHandler);
+ } catch (final Exception e) {
logger.error(XACMLErrorConstants.ERROR_UNKNOWN + "Error while Initializing Policy Engine " + e.getMessage(),
e);
}
// Keep Running....
- Runnable runnable = () -> {
+ final Runnable runnable = () -> {
while (true) {
try {
Thread.sleep(30000);
- } catch (InterruptedException e) {
+ } catch (final InterruptedException e) {
logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Thread Exception " + e.getMessage());
Thread.currentThread().interrupt();
}
}
};
- Thread thread = new Thread(runnable);
+ final Thread thread = new Thread(runnable);
thread.start();
}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsHandler.java b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsHandler.java
new file mode 100644
index 0000000..0f686fe
--- /dev/null
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsHandler.java
@@ -0,0 +1,200 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.brms.api;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.onap.policy.api.ConfigRequestParameters;
+import org.onap.policy.api.LoadedPolicy;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.api.PolicyConfig;
+import org.onap.policy.api.PolicyConfigStatus;
+import org.onap.policy.api.PolicyEngine;
+import org.onap.policy.api.PolicyException;
+import org.onap.policy.api.RemovedPolicy;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.utils.BackUpHandler;
+import org.onap.policy.xacml.api.XACMLErrorConstants;
+
+/**
+ * BRMSHandler: Notification Handler which listens for PDP Notifications. Take action only for BRMS
+ * policies.
+ *
+ * @version 0.3
+ */
+public class BrmsHandler implements BackUpHandler {
+
+ private static final Logger logger = FlexLogger.getLogger(BrmsHandler.class.getName());
+
+ private BrmsPush brmsPush = null;
+
+ public BrmsHandler(final String propertiesFile) throws PolicyException {
+ setBrmsPush(new BrmsPush(propertiesFile, this));
+ }
+
+ public void setBrmsPush(final BrmsPush brmsPush) {
+ this.brmsPush = brmsPush;
+ }
+
+ /*
+ * This Method is executed upon notification by the Policy Engine API Notification.
+ * (non-Javadoc)
+ *
+ * @see
+ * org.onap.policy.utils.BackUpHandler#notificationReceived(org.onap.policy.api.PDPNotification)
+ */
+ @Override
+ public void notificationReceived(final PDPNotification notification) {
+ logger.info("Notification Recieved");
+ logger.info(notification.getNotificationType().toString());
+ final Boolean flag = BrmsPush.getBackUpMonitor().getFlag();
+ brmsPush.initiate(flag);
+ if (flag) {
+ logger.info("Master Application performing on Notification ");
+ runOnNotification(notification);
+ } else {
+ logger.info("Slave application Skipping Notification.. ");
+ }
+ }
+
+ /*
+ * Executed when a policy is removed from PDP.
+ */
+ private void removedPolicies(final Collection<RemovedPolicy> removedPolicies) {
+ Boolean removed = false;
+ logger.info("Removed Policies");
+ for (final RemovedPolicy removedPolicy : removedPolicies) {
+ logger.info(removedPolicy.getPolicyName());
+ logger.info(removedPolicy.getVersionNo());
+ if (removedPolicy.getPolicyName().contains("_BRMS_")) {
+ try {
+ logger.info("Policy Removed with this policy Name : " + removedPolicy.getPolicyName());
+ brmsPush.removeRule(removedPolicy.getPolicyName());
+ removed = true;
+ } catch (final Exception e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Rertriving policy failed " + e.getMessage(),
+ e);
+ }
+ }
+ }
+ Boolean failureFlag;
+ int index = 0;
+ do {
+ failureFlag = false;
+ if (removed) {
+ try {
+ brmsPush.pushRules();
+ } catch (final PolicyException e) {
+ // Upon Notification failure
+ failureFlag = true;
+ brmsPush.rotateUrls();
+ logger.error("Failure during Push Operation ", e);
+ }
+ }
+ index++;
+ }
+ while (failureFlag && index < brmsPush.urlListSize());
+ }
+
+ /*
+ * This method is executed if BRMSGW is "MASTER" (non-Javadoc)
+ *
+ * @see
+ * org.onap.policy.utils.BackUpHandler#runOnNotification(org.onap.policy.api.PDPNotification)
+ */
+ @Override
+ public void runOnNotification(final PDPNotification notification) {
+ // reset the BRMSPush data structures
+ brmsPush.resetDs();
+ if (notification.getNotificationType().equals(NotificationType.REMOVE)) {
+ removedPolicies(notification.getRemovedPolicies());
+ } else if (notification.getNotificationType().equals(NotificationType.UPDATE)
+ || notification.getNotificationType().equals(NotificationType.BOTH)) {
+ logger.info("Updated Policies: \n");
+ final ArrayList<PolicyConfig> brmsPolicies = addedPolicies(notification);
+ Boolean successFlag = false;
+ for (int i = 0; !successFlag && i < brmsPush.urlListSize(); i++) {
+ if (i != 0) {
+ for (final PolicyConfig policyConfig : brmsPolicies) {
+ logger.info("Policy Retry with this Name notified: " + policyConfig.getPolicyName());
+ brmsPush.addRule(policyConfig.getPolicyName(), policyConfig.toOther(),
+ policyConfig.getResponseAttributes());
+ }
+ }
+ try {
+ brmsPush.pushRules();
+ successFlag = true;
+ } catch (final PolicyException e) {
+ // Upon Notification failure
+ successFlag = false;
+ brmsPush.rotateUrls();
+ logger.error("Failure during Push Operation ", e);
+ }
+ }
+ }
+ }
+
+ /*
+ * Executed when a policy is added to PDP.
+ */
+ private ArrayList<PolicyConfig> addedPolicies(final PDPNotification notification) {
+ final ArrayList<PolicyConfig> result = new ArrayList<>();
+ for (final LoadedPolicy updatedPolicy : notification.getLoadedPolicies()) {
+ logger.info("policyName : " + updatedPolicy.getPolicyName());
+ logger.info("policyVersion :" + updatedPolicy.getVersionNo());
+ logger.info("Matches: " + updatedPolicy.getMatches());
+ // Checking the Name is correct or not.
+ if (updatedPolicy.getPolicyName().contains("_BRMS_")) {
+ try {
+ final PolicyEngine policyEngine = getPolicyEngine();
+ if (policyEngine != null) {
+ final ConfigRequestParameters configRequestParameters = new ConfigRequestParameters();
+ configRequestParameters.setPolicyName(updatedPolicy.getPolicyName());
+ final Collection<PolicyConfig> policyConfigs = policyEngine.getConfig(configRequestParameters);
+ for (final PolicyConfig policyConfig : policyConfigs) {
+ if (policyConfig.getPolicyConfigStatus().equals(PolicyConfigStatus.CONFIG_RETRIEVED)) {
+ logger.info(
+ "Policy Retrieved with this Name notified: " + policyConfig.getPolicyName());
+ result.add(policyConfig);
+ brmsPush.addRule(policyConfig.getPolicyName(), policyConfig.toOther(),
+ policyConfig.getResponseAttributes());
+ } else {
+ logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR
+ + "Fail to retrieve policy so rule will not be pushed to PolicyRepo !!!!\n\n");
+ }
+ }
+ }
+ } catch (final Exception e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Rertriving policy failed " + e.getMessage(),
+ e);
+ }
+ }
+ }
+ return result;
+ }
+
+ public PolicyEngine getPolicyEngine() {
+ return BrmsGateway.getPolicyEngine();
+ }
+}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsPush.java
similarity index 61%
rename from BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
rename to BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsPush.java
index 86cd066..63b6d2c 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsPush.java
@@ -18,7 +18,12 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.brmsInterface;
+package org.onap.policy.brms.api;
+
+import com.att.nsa.cambria.client.CambriaBatchingPublisher;
+import com.att.nsa.cambria.client.CambriaClientBuilders;
+import com.att.nsa.cambria.client.CambriaClientBuilders.PublisherBuilder;
+import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.File;
import java.io.FileInputStream;
@@ -71,9 +76,9 @@
import org.eclipse.persistence.config.PersistenceUnitProperties;
import org.onap.policy.api.PEDependency;
import org.onap.policy.api.PolicyException;
-import org.onap.policy.brmsInterface.jpa.BRMSGroupInfo;
-import org.onap.policy.brmsInterface.jpa.BRMSPolicyInfo;
-import org.onap.policy.brmsInterface.jpa.DependencyInfo;
+import org.onap.policy.brms.entity.BrmsGroupInfo;
+import org.onap.policy.brms.entity.BrmsPolicyInfo;
+import org.onap.policy.brms.entity.DependencyInfo;
import org.onap.policy.common.im.IntegrityMonitor;
import org.onap.policy.common.logging.eelf.MessageCodes;
import org.onap.policy.common.logging.eelf.PolicyLogger;
@@ -90,32 +95,29 @@
import org.sonatype.nexus.client.rest.NexusRestClient;
import org.sonatype.nexus.rest.model.NexusArtifact;
-import com.att.nsa.cambria.client.CambriaBatchingPublisher;
-import com.att.nsa.cambria.client.CambriaClientBuilders;
-import com.att.nsa.cambria.client.CambriaClientBuilders.PublisherBuilder;
-import com.fasterxml.jackson.core.JsonProcessingException;
-
/**
- * BRMSPush: Application responsible to push policies to the BRMS PDP Policy Repository (PR). Mavenize and push policy
- * to PR
+ * BRMSPush: Application responsible to push policies to the BRMS PDP Policy Repository (PR).
+ * Mavenize and push policy to PR
*
* @version 1.0
*/
@SuppressWarnings("deprecation")
-public class BRMSPush {
+public class BrmsPush {
private static final String GROUP_NAMES = "groupNames";
- private static final String DROOLS_APPS_TEMPLATE_GROUP = "org.onap.policy.drools-applications.controlloop.templates";
- private static final String DROOLS_APPS_MODEL_GROUP = "org.onap.policy.drools-applications.controlloop.common.model-impl";
- private static final String META_INF = "META-INF";
- private static final String KMODULE_XML_FILE = "kmodule.xml";
- private static final String POM_XML_FILE = "pom.xml";
- private static final String VERSION_0_1_0 = "0.1.0";
- private static final String RULES = "rules";
- private static final String RESOURCES = "resources";
- private static final Logger LOGGER = FlexLogger.getLogger(BRMSPush.class.getName());
+ private static final String DROOLS_APPS_TEMPLATE_GROUP =
+ "org.onap.policy.drools-applications.controlloop.templates";
+ private static final String DROOLS_APPS_MODEL_GROUP =
+ "org.onap.policy.drools-applications.controlloop.common.model-impl";
+ private static final String META_INF = "META-INF";
+ private static final String KMODULE_XML_FILE = "kmodule.xml";
+ private static final String POM_XML_FILE = "pom.xml";
+ private static final String VERSION_0_1_0 = "0.1.0";
+ private static final String RULES = "rules";
+ private static final String RESOURCES = "resources";
+ private static final Logger LOGGER = FlexLogger.getLogger(BrmsPush.class.getName());
private static final String PROJECTSLOCATION = "RuleProjects";
- private static final String[] GOALS = { "clean", "deploy" };
+ private static final String[] GOALS = {"clean", "deploy"};
private static final String DEFAULT_VERSION = "1.2.0-SNAPSHOT";
private static final String DEPENDENCY_FILE = "dependency.json";
private static final String BRMSPERSISTENCE = "brmsEclipselink.persistencexml";
@@ -124,12 +126,12 @@
private static IntegrityMonitor im;
private static BackUpMonitor bm;
private String defaultName = null;
- private String repID = null;
+ private String repId = null;
private String repName = null;
- private ArrayList<String> repURLs = null;
+ private List<String> repUrlList = null;
private String repUserName = null;
private String repPassword = null;
- private String policyKeyID = null;
+ private String policyKeyId = null;
private boolean createFlag = false;
private String uebList = null;
private List<String> dmaapList = null;
@@ -139,19 +141,26 @@
private Long uebDelay = Long.parseLong("20");
private Long dmaapDelay = Long.parseLong("5000");
private String notificationType = null;
- private ArrayList<ControllerPOJO> controllers;
- private HashMap<String, ArrayList<Object>> groupMap = new HashMap<>();
- private Map<String, String> policyMap = new HashMap<>();
+ private List<ControllerPojo> controllers;
+ private Map<String, ArrayList<Object>> groupMap = new HashMap<>();
+ private final Map<String, String> policyMap = new HashMap<>();
private String brmsdependencyversion;
private EntityManager em;
private boolean syncFlag = false;
- public BRMSPush(String propertiesFile, BackUpHandler handler) throws PolicyException {
- if(propertiesFile==null || handler==null){
+ /**
+ * Responsible to push policies to the BRMS PDP Policy Repository (PR).
+ *
+ * @param propertiesFile the properties file
+ * @param handler the {@link BackUpHandler}
+ * @throws PolicyException PolicyException related to the operation
+ */
+ public BrmsPush(final String propertiesFile, final BackUpHandler handler) throws PolicyException {
+ if (propertiesFile == null || handler == null) {
throw new PolicyException("Error no propertiesFile or handler");
}
- Properties config = new Properties();
- Path file = Paths.get(propertiesFile);
+ final Properties config = new Properties();
+ final Path file = Paths.get(propertiesFile);
if (Files.notExists(file)) {
LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Config File doesn't Exist in the specified Path "
+ file.toString());
@@ -165,12 +174,13 @@
}
}
- private void setProperty(Path file, Properties config, BackUpHandler handler) throws PolicyException {
+ private void setProperty(final Path file, final Properties config, final BackUpHandler handler)
+ throws PolicyException {
InputStream in;
try {
in = new FileInputStream(file.toFile());
config.load(in);
- } catch (IOException e) {
+ } catch (final IOException e) {
LOGGER.error(
XACMLErrorConstants.ERROR_DATA_ISSUE + "Data/File Read Error while reading from the property file.",
e);
@@ -188,22 +198,23 @@
}
resourceName = resourceName.trim();
setIntegrityMonitor(IntegrityMonitor.getInstance(resourceName, config));
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error("Error starting Integerity Monitor: " + e);
}
LOGGER.info("Trying to set up BackUpMonitor");
try {
setBackupMonitor(BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), resourceName, config,
handler));
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error("Error starting BackUpMonitor: " + e);
}
- if(!config.containsKey(BRMSPERSISTENCE)){
+ if (!config.containsKey(BRMSPERSISTENCE)) {
config.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistenceBRMS.xml");
} else {
- config.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, config.getProperty(BRMSPERSISTENCE,"META-INF/persistenceBRMS.xml"));
+ config.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML,
+ config.getProperty(BRMSPERSISTENCE, "META-INF/persistenceBRMS.xml"));
}
- EntityManagerFactory emf = Persistence.createEntityManagerFactory("BRMSGW", config);
+ final EntityManagerFactory emf = Persistence.createEntityManagerFactory("BRMSGW", config);
em = emf.createEntityManager();
defaultName = config.getProperty("defaultName");
if (defaultName == null) {
@@ -213,14 +224,14 @@
XACMLErrorConstants.ERROR_DATA_ISSUE + "defaultName property is missing from the property file");
}
defaultName = defaultName.trim();
- repID = config.getProperty("repositoryID");
- if (repID == null) {
+ repId = config.getProperty("repositoryID");
+ if (repId == null) {
LOGGER.error(
XACMLErrorConstants.ERROR_DATA_ISSUE + "repositoryID property is missing from the property file ");
throw new PolicyException(
XACMLErrorConstants.ERROR_DATA_ISSUE + "repositoryID property is missing from the property file ");
}
- repID = repID.trim();
+ repId = repId.trim();
repName = config.getProperty("repositoryName");
if (repName == null) {
LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE
@@ -229,18 +240,18 @@
+ "repositoryName property is missing from the property file ");
}
repName = repName.trim();
- String repURL = config.getProperty("repositoryURL");
- if (repURL == null) {
+ final String repUrl = config.getProperty("repositoryURL");
+ if (repUrl == null) {
LOGGER.error(
XACMLErrorConstants.ERROR_DATA_ISSUE + "repositoryURL property is missing from the property file ");
throw new PolicyException(
XACMLErrorConstants.ERROR_DATA_ISSUE + "repositoryURL property is missing from the property file ");
}
- if (repURL.contains(",")) {
- repURLs = new ArrayList<>(Arrays.asList(repURL.trim().split(",")));
+ if (repUrl.contains(",")) {
+ repUrlList = new ArrayList<>(Arrays.asList(repUrl.trim().split(",")));
} else {
- repURLs = new ArrayList<>();
- repURLs.add(repURL);
+ repUrlList = new ArrayList<>();
+ repUrlList.add(repUrl);
}
repUserName = config.getProperty("repositoryUsername");
repPassword = config.getProperty("repositoryPassword");
@@ -252,15 +263,15 @@
}
repUserName = repUserName.trim();
repPassword = repPassword.trim();
- policyKeyID = config.getProperty("policyKeyID");
- if (policyKeyID == null) {
+ policyKeyId = config.getProperty("policyKeyID");
+ if (policyKeyId == null) {
LOGGER.error(
XACMLErrorConstants.ERROR_DATA_ISSUE + "policyKeyID property is missing from the property file ");
throw new PolicyException(
XACMLErrorConstants.ERROR_DATA_ISSUE + "policyKeyID property is missing from the property file ");
}
- policyKeyID = policyKeyID.trim();
- String syncF = config.getProperty("sync", "false").trim();
+ policyKeyId = policyKeyId.trim();
+ final String syncF = config.getProperty("sync", "false").trim();
syncFlag = Boolean.parseBoolean(syncF);
if (syncFlag) {
PolicyLogger.info("SYNC Flag is turned ON. DB will be given Priority.");
@@ -282,8 +293,8 @@
// Setting up the Publisher for DMaaP MR
String dmaapServers = config.getProperty("NOTIFICATION_SERVERS");
pubTopic = config.getProperty("NOTIFICATION_TOPIC");
- String aafLogin = config.getProperty("CLIENT_ID").trim();
- String aafPassword = config.getProperty("CLIENT_KEY").trim();
+ final String aafLogin = config.getProperty("CLIENT_ID").trim();
+ final String aafPassword = config.getProperty("CLIENT_KEY").trim();
if (dmaapServers == null || pubTopic == null) {
LOGGER.error(
@@ -302,15 +313,15 @@
dmaapList.add(dmaapServers);
}
- this.publisher = new BusPublisher.DmaapPublisherWrapper(this.dmaapList, this.pubTopic, aafLogin,
- aafPassword);
+ this.publisher =
+ new BusPublisher.DmaapPublisherWrapper(this.dmaapList, this.pubTopic, aafLogin, aafPassword);
- String dDelay = config.getProperty("NOTIFICATION_DELAY");
- if (dDelay != null && !dDelay.isEmpty()) {
- dDelay = dDelay.trim();
+ String notificationDelay = config.getProperty("NOTIFICATION_DELAY");
+ if (notificationDelay != null && !notificationDelay.isEmpty()) {
+ notificationDelay = notificationDelay.trim();
try {
- dmaapDelay = Long.parseLong(dDelay);
- } catch (NumberFormatException e) {
+ dmaapDelay = Long.parseLong(notificationDelay);
+ } catch (final NumberFormatException e) {
LOGGER.error("DMAAP_DELAY not a long format number" + e);
}
}
@@ -321,8 +332,6 @@
// Setting up the Publisher for UEB
uebList = config.getProperty("NOTIFICATION_SERVERS");
pubTopic = config.getProperty("NOTIFICATION_TOPIC");
- String apiKey = config.getProperty("UEB_API_KEY");
- String apiSecret = config.getProperty("UEB_API_SECRET");
if (uebList == null || pubTopic == null) {
LOGGER.error(
XACMLErrorConstants.ERROR_DATA_ISSUE + "UEB properties are missing from the property file ");
@@ -333,17 +342,19 @@
pubTopic = pubTopic.trim();
pubBuilder = new CambriaClientBuilders.PublisherBuilder();
pubBuilder.usingHosts(uebList).onTopic(pubTopic);
+ String apiKey = config.getProperty("UEB_API_KEY");
+ String apiSecret = config.getProperty("UEB_API_SECRET");
if (apiKey != null && !apiKey.isEmpty() && apiSecret != null && !apiSecret.isEmpty()) {
apiKey = apiKey.trim();
apiSecret = apiSecret.trim();
pubBuilder.authenticatedBy(apiKey, apiSecret);
}
- String uDelay = config.getProperty("NOTIFICATION_DELAY");
- if (uDelay != null && !uDelay.isEmpty()) {
- uDelay = uDelay.trim();
+ String notificationDelay = config.getProperty("NOTIFICATION_DELAY");
+ if (notificationDelay != null && !notificationDelay.isEmpty()) {
+ notificationDelay = notificationDelay.trim();
try {
- uebDelay = Long.parseLong(uDelay);
- } catch (NumberFormatException e) {
+ uebDelay = Long.parseLong(notificationDelay);
+ } catch (final NumberFormatException e) {
LOGGER.error("UEB_DELAY not a long format number" + e);
}
}
@@ -353,31 +364,32 @@
}
- private static void setBackupMonitor(BackUpMonitor instance) {
+ private static void setBackupMonitor(final BackUpMonitor instance) {
bm = instance;
}
- private static void setIntegrityMonitor(IntegrityMonitor instance) {
+ private static void setIntegrityMonitor(final IntegrityMonitor instance) {
im = instance;
}
/**
* Will Initialize the variables required for BRMSPush.
*/
- public void initiate(boolean flag) {
+ public void initiate(final boolean flag) {
resetModifiedGroups();
controllers = new ArrayList<>();
try {
bm.updateNotification();
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error("Error while updating Notification: " + e.getMessage(), e);
}
- if (flag)
+ if (flag) {
syncGroupInfo();
+ }
}
-
- public void resetDS(){
- resetModifiedGroups();
+
+ public void resetDs() {
+ resetModifiedGroups();
controllers = new ArrayList<>();
}
@@ -388,57 +400,56 @@
/**
* Will Add rules to projects. Creates necessary folders if required.
*/
- public void addRule(String name, String rule, Map<String, String> responseAttributes) {
+ public void addRule(final String name, final String rule, final Map<String, String> responseAttributes) {
// 1 check the response Attributes and determine if this belongs to any projects.
// 2 if not create folder
// 3 create pom.
// 4 copy the rule.
// 5 store the groups that have been updated.
- String kSessionName = null;
+ String ksessionName = null;
String selectedName = null;
if (!responseAttributes.isEmpty()) {
// Pick selected Value
String userControllerName = null;
- ArrayList<PEDependency> userDependencies = new ArrayList<>();
- for (Map.Entry<String, String> entry: responseAttributes.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
- if (key.equals(policyKeyID)) {
+ final ArrayList<PEDependency> userDependencies = new ArrayList<>();
+ for (final Map.Entry<String, String> entry : responseAttributes.entrySet()) {
+ final String key = entry.getKey();
+ String value = entry.getValue();
+ if (key.equals(policyKeyId)) {
selectedName = value;
}
// kmodule configurations
else if ("kSessionName".equals(key)) {
- kSessionName = value;
+ ksessionName = value;
}
// Check User Specific values.
if ("$controller:".equals(key)) {
try {
- PEDependency dependency = PolicyUtils.jsonStringToObject(value,
- PEDependency.class);
+ final PEDependency dependency = PolicyUtils.jsonStringToObject(value, PEDependency.class);
userControllerName = key.replaceFirst("$controller:", "");
- LOGGER.info("addRule: userControllerName - " + userControllerName + ", dependency: - " + dependency);
+ LOGGER.info("addRule: userControllerName - " + userControllerName + ", dependency: - "
+ + dependency);
addToGroup(userControllerName, dependency);
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while resolving Controller: " + e);
}
} else if ("$dependency$".equals(key) && value.startsWith("[") && value.endsWith("]")) {
value = value.substring(1, value.length() - 1).trim();
- List<String> dependencyStrings = Arrays.asList(value.split(Pattern.quote("},{")));
- for (String dependencyString : dependencyStrings) {
+ final List<String> dependencyStrings = Arrays.asList(value.split(Pattern.quote("},{")));
+ for (final String dependencyString : dependencyStrings) {
try {
- userDependencies
- .add(PolicyUtils.jsonStringToObject(dependencyString, PEDependency.class));
- } catch (Exception e) {
- LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW
- + "Error while resolving Dependencies: " + e);
+ userDependencies.add(PolicyUtils.jsonStringToObject(dependencyString, PEDependency.class));
+ } catch (final Exception e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while resolving Dependencies: "
+ + e);
}
}
}
}
if (userControllerName != null) {
// Adding custom dependencies here.
- ArrayList<Object> values = groupMap.get(userControllerName);
+ final ArrayList<Object> values = groupMap.get(userControllerName);
values.add(userDependencies);
groupMap.put(userControllerName, values);
selectedName = userControllerName;
@@ -449,45 +460,48 @@
selectedName = defaultName;
}
if (groupMap.containsKey(selectedName)) {
- // If the key is not got as parameters set by the user, setting the default value for kSessionName as
+ // If the key is not got as parameters set by the user, setting the default value for
+ // kSessionName as
// closedLoop
- if (kSessionName == null) {
- LOGGER.info("kSessionName is null, selectedName is : " + selectedName );
+ if (ksessionName == null) {
+ LOGGER.info("kSessionName is null, selectedName is : " + selectedName);
if (selectedName.equalsIgnoreCase(defaultName)) {
- kSessionName = "closedloop";
+ ksessionName = "closedloop";
} else {
- kSessionName = "closedloop-" + selectedName;
+ ksessionName = "closedloop-" + selectedName;
}
}
// create directories if missing.
- manageProject(selectedName, kSessionName, name, rule);
- addModifiedGroup(selectedName, "update"); // Will check for Create Later after generating the Pom.
+ manageProject(selectedName, ksessionName, name, rule);
+
+ // Will check for Create Later after generating the Pom.
+ addModifiedGroup(selectedName, "update");
}
}
private void syncGroupInfo() {
// Sync DB to JMemory.
- EntityTransaction et = em.getTransaction();
+ final EntityTransaction et = em.getTransaction();
et.begin();
- Query query = em.createQuery("select b from BRMSGroupInfo AS b");
- List<?> bList = query.getResultList();
- if (bList.size() != groupMap.size()) {
- for (Object value : bList) {
- BRMSGroupInfo brmsGroupInfo = (BRMSGroupInfo) value;
- PEDependency dependency = new PEDependency();
+ Query query = em.createQuery("select b from BrmsGroupInfo AS b");
+ List<?> result = query.getResultList();
+ if (result.size() != groupMap.size()) {
+ for (final Object value : result) {
+ final BrmsGroupInfo brmsGroupInfo = (BrmsGroupInfo) value;
+ final PEDependency dependency = new PEDependency();
dependency.setArtifactId(brmsGroupInfo.getArtifactId());
dependency.setGroupId(brmsGroupInfo.getGroupId());
dependency.setVersion(brmsGroupInfo.getVersion());
- ArrayList<Object> values = new ArrayList<>();
+ final ArrayList<Object> values = new ArrayList<>();
values.add(dependency);
groupMap.put(brmsGroupInfo.getControllerName(), values);
}
}
- query = em.createQuery("select g from BRMSPolicyInfo AS g");
- bList = query.getResultList();
- if (bList.size() != policyMap.size()) {
- for (Object value : bList) {
- BRMSPolicyInfo brmsPolicyInfo = (BRMSPolicyInfo) value;
+ query = em.createQuery("select g from BrmsPolicyInfo AS g");
+ result = query.getResultList();
+ if (result.size() != policyMap.size()) {
+ for (final Object value : result) {
+ final BrmsPolicyInfo brmsPolicyInfo = (BrmsPolicyInfo) value;
policyMap.put(brmsPolicyInfo.getPolicyName(), brmsPolicyInfo.getControllerName().getControllerName());
}
}
@@ -495,32 +509,33 @@
LOGGER.info("Updated Local Memory values with values from database.");
}
- private void manageProject(String selectedName, String kSessionName, String name, String rule) {
+ private void manageProject(final String selectedName, final String ksessionName, final String name,
+ final String rule) {
// Check if the Project is in Sync. If not get the latest Version.
syncProject(selectedName);
- createProject(PROJECTSLOCATION + File.separator + getArtifactID(selectedName) + File.separator + "src"
- + File.separator + "main" + File.separator + RESOURCES, kSessionName);
- copyDataToFile(PROJECTSLOCATION + File.separator + getArtifactID(selectedName) + File.separator + "src"
- + File.separator + "main" + File.separator + RESOURCES + File.separator + RULES + File.separator
- + name + ".drl", rule);
+ createProject(PROJECTSLOCATION + File.separator + getArtifactId(selectedName) + File.separator + "src"
+ + File.separator + "main" + File.separator + RESOURCES, ksessionName);
+ copyDataToFile(PROJECTSLOCATION + File.separator + getArtifactId(selectedName) + File.separator + "src"
+ + File.separator + "main" + File.separator + RESOURCES + File.separator + RULES + File.separator + name
+ + ".drl", rule);
addToPolicy(name, selectedName);
}
/*
* Add Policy to JMemory and DataBase.
*/
- private void addToPolicy(String policyName, String controllerName) {
+ private void addToPolicy(final String policyName, final String controllerName) {
policyMap.put(policyName, controllerName);
- EntityTransaction et = em.getTransaction();
+ final EntityTransaction et = em.getTransaction();
et.begin();
- Query query = em.createQuery("select b from BRMSPolicyInfo as b where b.policyName = :pn");
+ Query query = em.createQuery("select b from BrmsPolicyInfo as b where b.policyName = :pn");
query.setParameter("pn", policyName);
- List<?> pList = query.getResultList();
+ final List<?> pList = query.getResultList();
boolean create = false;
- BRMSPolicyInfo brmsPolicyInfo = new BRMSPolicyInfo();
+ BrmsPolicyInfo brmsPolicyInfo = new BrmsPolicyInfo();
if (!pList.isEmpty()) {
// Already exists.
- brmsPolicyInfo = (BRMSPolicyInfo) pList.get(0);
+ brmsPolicyInfo = (BrmsPolicyInfo) pList.get(0);
if (!brmsPolicyInfo.getControllerName().getControllerName().equals(controllerName)) {
create = true;
}
@@ -528,12 +543,12 @@
create = true;
}
if (create) {
- query = em.createQuery("select b from BRMSGroupInfo as b where b.controllerName = :cn");
+ query = em.createQuery("select b from BrmsGroupInfo as b where b.controllerName = :cn");
query.setParameter("cn", controllerName);
- List<?> bList = query.getResultList();
- BRMSGroupInfo brmsGroupInfo = new BRMSGroupInfo();
+ final List<?> bList = query.getResultList();
+ BrmsGroupInfo brmsGroupInfo = new BrmsGroupInfo();
if (!bList.isEmpty()) {
- brmsGroupInfo = (BRMSGroupInfo) bList.get(0);
+ brmsGroupInfo = (BrmsGroupInfo) bList.get(0);
}
brmsPolicyInfo.setPolicyName(policyName);
brmsPolicyInfo.setControllerName(brmsGroupInfo);
@@ -543,8 +558,8 @@
et.commit();
}
- private void syncProject(String selectedName) {
- boolean projectExists = checkProject(selectedName);
+ private void syncProject(final String selectedName) {
+ final boolean projectExists = checkProject(selectedName);
if (projectExists) {
String version;
version = getVersion(selectedName);
@@ -553,8 +568,8 @@
+ " going with Default value");
version = VERSION_0_1_0;
}
- String nextVersion = incrementVersion(version);
- boolean outOfSync = checkRemoteSync(selectedName, nextVersion);
+ final String nextVersion = incrementVersion(version);
+ final boolean outOfSync = checkRemoteSync(selectedName, nextVersion);
if (!outOfSync) {
return;
}
@@ -563,80 +578,83 @@
downloadProject(selectedName);
}
- private void downloadProject(String selectedName) {
- NexusArtifact artifact = getLatestArtifactFromNexus(selectedName);
- if (artifact == null)
+ private void downloadProject(final String selectedName) {
+ final NexusArtifact artifact = getLatestArtifactFromNexus(selectedName);
+ if (artifact == null) {
return;
- String dirName = getDirectoryName(selectedName);
+ }
+ final String dirName = getDirectoryName(selectedName);
URL website;
- String fileName = "rule.jar";
+ final String fileName = "rule.jar";
try {
website = new URL(artifact.getResourceURI());
- try( ReadableByteChannel rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(fileName)){
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+ try (ReadableByteChannel rbc = Channels.newChannel(website.openStream());
+ FileOutputStream fos = new FileOutputStream(fileName)) {
+ fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
extractJar(fileName, dirName);
new File(fileName).delete();
- }catch (IOException e) {
- LOGGER.error("Error while downloading the project to File System. " + e.getMessage(), e);
- }
-
- } catch (IOException e1) {
+ } catch (final IOException e) {
+ LOGGER.error("Error while downloading the project to File System. " + e.getMessage(), e);
+ }
+
+ } catch (final IOException e1) {
LOGGER.error("Error while retrieve the artifact. " + e1.getMessage(), e1);
}
}
-private void extractJar(String jarFileName, String artifactId){
- try (JarFile jar = new JarFile(jarFileName)) {
- Enumeration<?> enumEntries = jar.entries();
- while (enumEntries.hasMoreElements()) {
- JarEntry file = (JarEntry) enumEntries.nextElement();
- File f = null;
- String fileName = file.getName().substring(file.getName().lastIndexOf("/") + 1);
- if (file.getName().endsWith(".drl")) {
- String path = PROJECTSLOCATION + File.separator + artifactId + File.separator + "src" + File.separator
- + "main" + File.separator + RESOURCES + File.separator + RULES;
- new File(path).mkdirs();
- if (syncFlag && policyMap.containsKey(fileName.replace(".drl", ""))) {
- f = new File(path + File.separator + fileName);
- } else {
- f = new File(path + File.separator + fileName);
+ private void extractJar(final String jarFileName, final String artifactId) {
+ try (JarFile jar = new JarFile(jarFileName)) {
+ final Enumeration<?> enumEntries = jar.entries();
+ while (enumEntries.hasMoreElements()) {
+ final JarEntry jarEntry = (JarEntry) enumEntries.nextElement();
+ File file = null;
+ final String fileName = jarEntry.getName().substring(jarEntry.getName().lastIndexOf("/") + 1);
+ if (jarEntry.getName().endsWith(".drl")) {
+ final String path = PROJECTSLOCATION + File.separator + artifactId + File.separator + "src"
+ + File.separator + "main" + File.separator + RESOURCES + File.separator + RULES;
+ new File(path).mkdirs();
+ if (syncFlag && policyMap.containsKey(fileName.replace(".drl", ""))) {
+ file = new File(path + File.separator + fileName);
+ } else {
+ file = new File(path + File.separator + fileName);
+ }
+ } else if (jarEntry.getName().endsWith(POM_XML_FILE)) {
+ final String path = PROJECTSLOCATION + File.separator + artifactId;
+ new File(path).mkdirs();
+ file = new File(path + File.separator + fileName);
+ } else if (jarEntry.getName().endsWith(KMODULE_XML_FILE)) {
+ final String path = PROJECTSLOCATION + File.separator + artifactId + File.separator + "src"
+ + File.separator + "main" + File.separator + RESOURCES + File.separator + META_INF;
+ new File(path).mkdirs();
+ file = new File(path + File.separator + fileName);
}
- } else if (file.getName().endsWith(POM_XML_FILE)) {
- String path = PROJECTSLOCATION + File.separator + artifactId;
- new File(path).mkdirs();
- f = new File(path + File.separator + fileName);
- } else if (file.getName().endsWith(KMODULE_XML_FILE)) {
- String path = PROJECTSLOCATION + File.separator + artifactId + File.separator + "src" + File.separator
- + "main" + File.separator + RESOURCES + File.separator + META_INF;
- new File(path).mkdirs();
- f = new File(path + File.separator + fileName);
- }
- if (f != null) {
- try (InputStream is = jar.getInputStream(file); FileOutputStream fos = new FileOutputStream(f)) {
- while (is.available() > 0) {
- fos.write(is.read());
+ if (file != null) {
+ try (InputStream is = jar.getInputStream(jarEntry);
+ FileOutputStream fos = new FileOutputStream(file)) {
+ while (is.available() > 0) {
+ fos.write(is.read());
+ }
+ LOGGER.info(fileName + " Created..");
+ } catch (final IOException e) {
+ LOGGER.info("exception Occured" + e);
+ }
}
- LOGGER.info(fileName + " Created..");
- } catch (IOException e) {
- LOGGER.info("exception Occured" + e);
- }
}
- }
- } catch (IOException e) {
- LOGGER.info("exception Occured" + e);
- }
- }
+ } catch (final IOException e) {
+ LOGGER.info("exception Occured" + e);
+ }
+ }
- private NexusArtifact getLatestArtifactFromNexus(String selectedName) {
- List<NexusArtifact> artifacts = getArtifactFromNexus(selectedName, null);
+ private NexusArtifact getLatestArtifactFromNexus(final String selectedName) {
+ final List<NexusArtifact> artifacts = getArtifactFromNexus(selectedName, null);
int bigNum = 0;
int smallNum = 0;
NexusArtifact result = null;
- for (NexusArtifact artifact : artifacts) {
- int majorVal = Integer.parseInt(artifact.getVersion().substring(0, artifact.getVersion().indexOf(".")));
- int minorVal = Integer.parseInt(artifact.getVersion().substring(artifact.getVersion().indexOf(".") + 1,
- artifact.getVersion().lastIndexOf(".")));
+ for (final NexusArtifact artifact : artifacts) {
+ final int majorVal =
+ Integer.parseInt(artifact.getVersion().substring(0, artifact.getVersion().indexOf(".")));
+ final int minorVal = Integer.parseInt(artifact.getVersion()
+ .substring(artifact.getVersion().indexOf(".") + 1, artifact.getVersion().lastIndexOf(".")));
if (majorVal > bigNum) {
bigNum = majorVal;
smallNum = minorVal;
@@ -652,36 +670,36 @@
}
// Additional Check due to Limitations from Nexus API to check if the artifact is the latest.
- private NexusArtifact additionalNexusLatestCheck(String selectedName, NexusArtifact result) {
- if(result==null){
+ private NexusArtifact additionalNexusLatestCheck(final String selectedName, final NexusArtifact result) {
+ if (result == null) {
return result;
}
- String nextVersion = incrementVersion(result.getVersion());
- List<NexusArtifact> artifact = getArtifactFromNexus(selectedName, nextVersion);
+ final String nextVersion = incrementVersion(result.getVersion());
+ final List<NexusArtifact> artifact = getArtifactFromNexus(selectedName, nextVersion);
return artifact.isEmpty() ? result : additionalNexusLatestCheck(selectedName, artifact.get(0));
}
- private boolean checkRemoteSync(String selectedName, String version) {
- List<NexusArtifact> artifacts = getArtifactFromNexus(selectedName, version);
+ private boolean checkRemoteSync(final String selectedName, final String version) {
+ final List<NexusArtifact> artifacts = getArtifactFromNexus(selectedName, version);
return artifacts.isEmpty() ? false : true;
}
- private List<NexusArtifact> getArtifactFromNexus(String selectedName, String version) {
+ private List<NexusArtifact> getArtifactFromNexus(final String selectedName, final String version) {
final NexusClient client = new NexusRestClient();
- int i = 0;
+ int index = 0;
boolean flag = false;
- while (i < repURLs.size()) {
+ while (index < repUrlList.size()) {
try {
- String repURL = repURLs.get(0);
- client.connect(repURL.substring(0, repURL.indexOf(repURL.split(":[0-9]+\\/nexus")[1])), repUserName,
+ final String repUrl = repUrlList.get(0);
+ client.connect(repUrl.substring(0, repUrl.indexOf(repUrl.split(":[0-9]+\\/nexus")[1])), repUserName,
repPassword);
final NexusArtifact template = new NexusArtifact();
- template.setGroupId(getGroupID(selectedName));
- template.setArtifactId(getArtifactID(selectedName));
+ template.setGroupId(getGroupId(selectedName));
+ template.setArtifactId(getArtifactId(selectedName));
if (version != null) {
template.setVersion(version);
}
- List<NexusArtifact> resultList = client.searchByGAV(template);
+ final List<NexusArtifact> resultList = client.searchByGAV(template);
if (resultList != null) {
flag = true;
return resultList;
@@ -697,29 +715,15 @@
+ e.getMessage(), e);
}
if (!flag) {
- Collections.rotate(repURLs, -1);
- i++;
+ Collections.rotate(repUrlList, -1);
+ index++;
}
}
}
return new ArrayList<>();
}
- private void setVersion(String selectedName) {
- String newVersion = VERSION_0_1_0;
- createFlag = false;
- NexusArtifact artifact = getLatestArtifactFromNexus(selectedName);
- if (artifact != null) {
- newVersion = incrementVersion(artifact.getVersion());
- }
- if (VERSION_0_1_0.equals(newVersion)) {
- createFlag = true;
- }
- setVersion(newVersion, selectedName);
- LOGGER.info("Controller: " + selectedName + "is on version: " + newVersion);
- }
-
- private String incrementVersion(String version) {
+ private String incrementVersion(final String version) {
int majorVal = Integer.parseInt(version.substring(0, version.indexOf(".")));
int minorVal = Integer.parseInt(version.substring(version.indexOf(".") + 1, version.lastIndexOf(".")));
if (minorVal >= 9) {
@@ -731,52 +735,50 @@
return majorVal + "." + minorVal + version.substring(version.lastIndexOf("."));
}
- private boolean checkProject(String selectedName) {
+ private boolean checkProject(final String selectedName) {
return new File(PROJECTSLOCATION + File.separator + getDirectoryName(selectedName)).exists();
}
- private String getDirectoryName(String selectedName) {
- return getArtifactID(selectedName);
+ private String getDirectoryName(final String selectedName) {
+ return getArtifactId(selectedName);
}
/**
* Will Push policies to the PolicyRepo.
*
- * @param notificationType
- * <String> type of notification Type.
- * @throws PolicyException
+ * @throws PolicyException PolicyException related to the operation
*/
public void pushRules() throws PolicyException {
// Check how many groups have been updated.
// Invoke their Maven process.
try {
im.startTransaction();
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error("Error while starting Transaction " + e);
}
if (!modifiedGroups.isEmpty()) {
Boolean flag = false;
- for (Map.Entry<String, String> entry : modifiedGroups.entrySet()) {
+ for (final Map.Entry<String, String> entry : modifiedGroups.entrySet()) {
InvocationResult result = null;
- String group = entry.getKey();
+ final String group = entry.getKey();
try {
- LOGGER.info("PushRules: ModifiedGroups, Key: " + group + ", Value: " + entry.getValue());
- InvocationRequest request = new DefaultInvocationRequest();
+ LOGGER.info("PushRules: ModifiedGroups, Key: " + group + ", Value: " + entry.getValue());
+ final InvocationRequest request = new DefaultInvocationRequest();
setVersion(group);
createPom(group);
request.setPomFile(new File(
- PROJECTSLOCATION + File.separator + getArtifactID(group) + File.separator + POM_XML_FILE));
+ PROJECTSLOCATION + File.separator + getArtifactId(group) + File.separator + POM_XML_FILE));
request.setGoals(Arrays.asList(GOALS));
- Invoker invoker = new DefaultInvoker();
+ final Invoker invoker = new DefaultInvoker();
result = invoker.execute(request);
if (result.getExecutionException() != null) {
LOGGER.error(result.getExecutionException());
} else if (result.getExitCode() != 0) {
LOGGER.error("Maven Invocation failure..!");
}
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Maven Invocation issue for "
- + getArtifactID(group) + e.getMessage(), e);
+ + getArtifactId(group) + e.getMessage(), e);
}
if (result != null && result.getExitCode() == 0) {
LOGGER.info("Build Completed..!");
@@ -802,8 +804,8 @@
/**
* Removes a Rule from Rule Projects.
*/
- public void removeRule(String name) {
- String controllerName = getGroupName(name);
+ public void removeRule(final String name) {
+ final String controllerName = getGroupName(name);
if (controllerName == null) {
LOGGER.info("Error finding the controllerName for the given Policy: " + name);
return;
@@ -812,7 +814,7 @@
getNameAndSetRemove(controllerName, name);
}
- private String getGroupName(String name) {
+ private String getGroupName(final String name) {
if (policyMap.containsKey(name)) {
return policyMap.get(name);
} else {
@@ -821,57 +823,57 @@
}
}
- private void addModifiedGroup(String controllerName, String operation) {
+ private void addModifiedGroup(final String controllerName, final String operation) {
if (controllerName != null) {
modifiedGroups.put(controllerName, operation);
}
}
- private void addNotification(String controllerName, String operation) {
- ControllerPOJO controllerPOJO = new ControllerPOJO();
- controllerPOJO.setName(controllerName);
- controllerPOJO.setOperation(operation);
- HashMap<String, String> drools = new HashMap<>();
- drools.put("groupId", getGroupID(controllerName));
- drools.put("artifactId", getArtifactID(controllerName));
+ private void addNotification(final String controllerName, final String operation) {
+ final ControllerPojo controllerPojo = new ControllerPojo();
+ controllerPojo.setName(controllerName);
+ controllerPojo.setOperation(operation);
+ final HashMap<String, String> drools = new HashMap<>();
+ drools.put("groupId", getGroupId(controllerName));
+ drools.put("artifactId", getArtifactId(controllerName));
drools.put("version", getVersion(controllerName));
- controllerPOJO.setDrools(drools);
- controllers.add(controllerPOJO);
+ controllerPojo.setDrools(drools);
+ controllers.add(controllerPojo);
try {
- LOGGER.debug("Notification added: " + PolicyUtils.objectToJsonString(controllerPOJO));
- } catch (JsonProcessingException e) {
+ LOGGER.debug("Notification added: " + PolicyUtils.objectToJsonString(controllerPojo));
+ } catch (final JsonProcessingException e) {
LOGGER.error(MessageCodes.ERROR_SCHEMA_INVALID + "Json Processing Error " + e);
}
}
- private void removedRuleModifiedGroup(String controllerName) {
+ private void removedRuleModifiedGroup(final String controllerName) {
// This will be sending Notification to PDPD directly to Lock
- ControllerPOJO controllerPOJO = new ControllerPOJO();
- controllerPOJO.setName(controllerName);
- controllerPOJO.setOperation("lock");
- List<ControllerPOJO> controllerPojos = new ArrayList<>();
- controllerPojos.add(controllerPOJO);
+ final ControllerPojo controllerPojo = new ControllerPojo();
+ controllerPojo.setName(controllerName);
+ controllerPojo.setOperation("lock");
+ final List<ControllerPojo> controllerPojos = new ArrayList<>();
+ controllerPojos.add(controllerPojo);
sendNotification(controllerPojos);
}
- private void sendNotification(List<ControllerPOJO> controllers) {
- NotificationPOJO notification = new NotificationPOJO();
- String requestId = UUID.randomUUID().toString();
+ private void sendNotification(final List<ControllerPojo> controllers) {
+ final NotificationPojo notification = new NotificationPojo();
+ final String requestId = UUID.randomUUID().toString();
LOGGER.info("Generating notification RequestID : " + requestId);
- notification.setRequestID(requestId);
+ notification.setRequestId(requestId);
notification.setEntity("controller");
notification.setControllers(controllers);
try {
- String notificationJson = PolicyUtils.objectToJsonString(notification);
+ final String notificationJson = PolicyUtils.objectToJsonString(notification);
LOGGER.info("Sending Notification :\n" + notificationJson);
sendMessage(notificationJson);
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while sending notification to PDP-D "
+ e.getMessage(), e);
}
}
- private void sendMessage(String message) throws IOException, GeneralSecurityException, InterruptedException {
+ private void sendMessage(final String message) throws IOException, GeneralSecurityException, InterruptedException {
if ("dmaap".equalsIgnoreCase(notificationType)) {
// Sending Message through DMaaP Message Router
@@ -887,7 +889,7 @@
// Sending Message through UEB interface.
LOGGER.debug("UEB Publishing Message");
- CambriaBatchingPublisher pub = pubBuilder.build();
+ final CambriaBatchingPublisher pub = pubBuilder.build();
pub.send("MyPartitionKey", message);
final List<?> stuck = pub.close(uebDelay, TimeUnit.SECONDS);
@@ -900,26 +902,26 @@
}
- private void createPom(String name) {
- Model model = new Model();
+ private void createPom(final String name) {
+ final Model model = new Model();
model.setModelVersion("4.0.0");
- model.setGroupId(getGroupID(name));
- model.setArtifactId(getArtifactID(name));
+ model.setGroupId(getGroupId(name));
+ model.setArtifactId(getArtifactId(name));
model.setVersion(getVersion(name));
model.setName(name);
- DistributionManagement distributionManagement = new DistributionManagement();
- DeploymentRepository repository = new DeploymentRepository();
- repository.setId(repID);
+ final DistributionManagement distributionManagement = new DistributionManagement();
+ final DeploymentRepository repository = new DeploymentRepository();
+ repository.setId(repId);
repository.setName(repName);
- repository.setUrl(repURLs.get(0));
+ repository.setUrl(repUrlList.get(0));
distributionManagement.setRepository(repository);
model.setDistributionManagement(distributionManagement);
// Dependency Management goes here.
List<Dependency> dependencyList = new ArrayList<>();
if (groupMap.get(name).size() > 1) {
@SuppressWarnings("unchecked")
- ArrayList<PEDependency> dependencies = (ArrayList<PEDependency>) groupMap.get(name).get(1);
- for (PEDependency dependency : dependencies) {
+ final ArrayList<PEDependency> dependencies = (ArrayList<PEDependency>) groupMap.get(name).get(1);
+ for (final PEDependency dependency : dependencies) {
dependencyList.add(dependency.getDependency());
}
} else {
@@ -930,30 +932,31 @@
Writer writer = null;
try {
writer = WriterFactory.newXmlWriter(
- new File(PROJECTSLOCATION + File.separator + getArtifactID(name) + File.separator + POM_XML_FILE));
- MavenXpp3Writer pomWriter = new MavenXpp3Writer();
+ new File(PROJECTSLOCATION + File.separator + getArtifactId(name) + File.separator + POM_XML_FILE));
+ final MavenXpp3Writer pomWriter = new MavenXpp3Writer();
pomWriter.write(writer, model);
- } catch (Exception e) {
- LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while creating POM for " + getArtifactID(name)
+ } catch (final Exception e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while creating POM for " + getArtifactId(name)
+ e.getMessage(), e);
} finally {
IOUtil.close(writer);
}
}
- private List<Dependency> getDependencies(String controllerName) {
+ private List<Dependency> getDependencies(final String controllerName) {
// Read the Dependency Information from property file.
- Path file = Paths.get(DEPENDENCY_FILE);
+ final Path file = Paths.get(DEPENDENCY_FILE);
if (!Files.notExists(file)) {
try {
- String dependencyJSON = new String(Files.readAllBytes(file), StandardCharsets.UTF_8);
- DependencyInfo dependencyInfo = PolicyUtils.jsonStringToObject(dependencyJSON, DependencyInfo.class);
+ final String dependencyJson = new String(Files.readAllBytes(file), StandardCharsets.UTF_8);
+ final DependencyInfo dependencyInfo =
+ PolicyUtils.jsonStringToObject(dependencyJson, DependencyInfo.class);
String controller = "default";
if (dependencyInfo.getDependencies().containsKey(controllerName)) {
controller = controllerName;
}
- List<Dependency> dependencyList = new ArrayList<>();
- for (PEDependency dependency : dependencyInfo.getDependencies().get(controller)) {
+ final List<Dependency> dependencyList = new ArrayList<>();
+ for (final PEDependency dependency : dependencyInfo.getDependencies().get(controller)) {
dependencyList.add(dependency.getDependency());
}
return dependencyList;
@@ -966,49 +969,54 @@
return defaultDependencies(controllerName);
}
- // Default Dependency Section. Can be changed as required.
- public List<Dependency> defaultDependencies(String controllerName) {
+ /**
+ * Default Dependency Section. Can be changed as required.
+ *
+ * @param controllerName the controller name
+ * @return changed dependency list
+ */
+ public List<Dependency> defaultDependencies(final String controllerName) {
- List<Dependency> dependencyList = new ArrayList<>();
- String version = StringEscapeUtils.escapeJava(brmsdependencyversion);
+ final List<Dependency> dependencyList = new ArrayList<>();
+ final String version = StringEscapeUtils.escapeJava(brmsdependencyversion);
- Dependency demoDependency = new Dependency();
+ final Dependency demoDependency = new Dependency();
demoDependency.setGroupId(DROOLS_APPS_TEMPLATE_GROUP);
demoDependency.setArtifactId("template.demo");
demoDependency.setVersion(version);
dependencyList.add(demoDependency);
- Dependency controlloopDependency = new Dependency();
+ final Dependency controlloopDependency = new Dependency();
controlloopDependency.setGroupId(DROOLS_APPS_MODEL_GROUP);
controlloopDependency.setArtifactId("events");
controlloopDependency.setVersion(version);
dependencyList.add(controlloopDependency);
- Dependency restDependency = new Dependency();
+ final Dependency restDependency = new Dependency();
restDependency.setGroupId(DROOLS_APPS_MODEL_GROUP);
restDependency.setArtifactId("controlloop.common.model-impl.rest");
restDependency.setVersion(version);
dependencyList.add(restDependency);
- Dependency appcDependency = new Dependency();
+ final Dependency appcDependency = new Dependency();
appcDependency.setGroupId(DROOLS_APPS_MODEL_GROUP);
appcDependency.setArtifactId("controlloop.common.model-impl.appc");
appcDependency.setVersion(version);
dependencyList.add(appcDependency);
- Dependency aaiDependency = new Dependency();
+ final Dependency aaiDependency = new Dependency();
aaiDependency.setGroupId(DROOLS_APPS_MODEL_GROUP);
aaiDependency.setArtifactId("controlloop.common.model-impl.aai");
aaiDependency.setVersion(version);
dependencyList.add(aaiDependency);
- Dependency msoDependency = new Dependency();
+ final Dependency msoDependency = new Dependency();
msoDependency.setGroupId(DROOLS_APPS_MODEL_GROUP);
msoDependency.setArtifactId("controlloop.common.model-impl.so");
msoDependency.setVersion(version);
dependencyList.add(msoDependency);
- Dependency trafficgeneratorDependency = new Dependency();
+ final Dependency trafficgeneratorDependency = new Dependency();
trafficgeneratorDependency.setGroupId(DROOLS_APPS_MODEL_GROUP);
trafficgeneratorDependency.setArtifactId("controlloop.common.model-impl.trafficgenerator");
trafficgeneratorDependency.setVersion(version);
@@ -1016,12 +1024,12 @@
return dependencyList;
}
- private void createProject(String path, String ksessionName) {
+ private void createProject(final String path, final String ksessionName) {
new File(path + File.separator + RULES).mkdirs();
new File(path + File.separator + META_INF).mkdirs();
if (!Files.exists(Paths.get(path + File.separator + META_INF + File.separator + KMODULE_XML_FILE))) {
// Hard coding XML for PDP Drools to accept our Rules.
- String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "\n"
+ final String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "\n"
+ "<kmodule xmlns=\"http://jboss.org/kie/6.0.0/kmodule\">" + "\n"
+ "<kbase name=\"rules\" packages=\"rules\">" + "\n" + "<ksession name=\"" + ksessionName + "\"/>"
+ "\n" + "</kbase></kmodule>";
@@ -1029,75 +1037,72 @@
}
}
- private void copyDataToFile(String file, String rule) {
+ private void copyDataToFile(final String file, final String rule) {
try {
FileUtils.writeStringToFile(new File(file), rule);
- } catch (Exception e) {
+ } catch (final Exception e) {
LOGGER.error(
XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while creating Rule for " + file + e.getMessage(),
e);
}
}
- private void readGroups(Properties config) throws PolicyException {
+ private void readGroups(final Properties config) throws PolicyException {
String[] groupNames;
- String groupNamesError = "groupNames property is missing or empty from the property file ";
- if (!config.containsKey(GROUP_NAMES) || config.getProperty(GROUP_NAMES)==null){
- throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE
- + groupNamesError);
+ final String groupNamesError = "groupNames property is missing or empty from the property file ";
+ if (!config.containsKey(GROUP_NAMES) || config.getProperty(GROUP_NAMES) == null) {
+ throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE + groupNamesError);
}
if (config.getProperty(GROUP_NAMES).contains(",")) {
groupNames = config.getProperty(GROUP_NAMES).replaceAll(" ", "").split(",");
} else {
- groupNames = new String[] { config.getProperty(GROUP_NAMES).replaceAll(" ", "") };
+ groupNames = new String[] {config.getProperty(GROUP_NAMES).replaceAll(" ", "")};
}
if (groupNames == null || groupNames.length == 0) {
- LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE
- + groupNamesError);
- throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE
- + groupNamesError);
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + groupNamesError);
+ throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE + groupNamesError);
}
groupMap = new HashMap<>();
for (int counter = 0; counter < groupNames.length; counter++) {
- String name = groupNames[counter];
- String groupID = config.getProperty(name + ".groupID");
- if (groupID == null) {
+ final String name = groupNames[counter];
+ final String groupId = config.getProperty(name + ".groupID");
+ if (groupId == null) {
LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + name
+ ".groupID property is missing from the property file ");
throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE + name
+ ".groupID property is missing from the property file ");
}
- String artifactID = config.getProperty(name + ".artifactID");
- if (artifactID == null) {
+ final String artifactId = config.getProperty(name + ".artifactID");
+ if (artifactId == null) {
LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + name
+ ".artifactID property is missing from the property file ");
throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE + name
+ ".artifactID property is missing from the property file ");
}
- PEDependency dependency = new PEDependency();
- dependency.setArtifactId(artifactID);
- dependency.setGroupId(groupID);
+ final PEDependency dependency = new PEDependency();
+ dependency.setArtifactId(artifactId);
+ dependency.setGroupId(groupId);
// Add to list if we got all
addToGroup(name, dependency);
}
}
- private void addToGroup(String name, PEDependency dependency) {
- ArrayList<Object> values = new ArrayList<>();
+ private void addToGroup(final String name, final PEDependency dependency) {
+ final ArrayList<Object> values = new ArrayList<>();
values.add(dependency);
groupMap.put(name, values);
- EntityTransaction et = em.getTransaction();
+ final EntityTransaction et = em.getTransaction();
et.begin();
- Query query = em.createQuery("select b from BRMSGroupInfo as b where b.controllerName = :cn");
+ final Query query = em.createQuery("select b from BrmsGroupInfo as b where b.controllerName = :cn");
query.setParameter("cn", name);
- List<?> groupList = query.getResultList();
- BRMSGroupInfo brmsGroupInfo = null;
+ final List<?> groupList = query.getResultList();
+ BrmsGroupInfo brmsGroupInfo = null;
if (!groupList.isEmpty()) {
LOGGER.info("Controller name already Existing in DB. Will be updating the DB Values" + name);
- brmsGroupInfo = (BRMSGroupInfo) groupList.get(0);
+ brmsGroupInfo = (BrmsGroupInfo) groupList.get(0);
}
if (brmsGroupInfo == null) {
- brmsGroupInfo = new BRMSGroupInfo();
+ brmsGroupInfo = new BrmsGroupInfo();
}
brmsGroupInfo.setControllerName(name);
brmsGroupInfo.setGroupId(dependency.getGroupId());
@@ -1108,23 +1113,23 @@
et.commit();
}
- private String getArtifactID(String name) {
+ private String getArtifactId(final String name) {
return ((PEDependency) groupMap.get(name).get(0)).getArtifactId();
}
- private String getGroupID(String name) {
+ private String getGroupId(final String name) {
return ((PEDependency) groupMap.get(name).get(0)).getGroupId();
}
- private String getVersion(String name) {
+ private String getVersion(final String name) {
return ((PEDependency) groupMap.get(name).get(0)).getVersion();
}
- private void getNameAndSetRemove(String controllerName, String policyName) {
- String artifactName = getArtifactID(controllerName);
- String ruleFolder = PROJECTSLOCATION + File.separator + artifactName + File.separator + "src" + File.separator
- + "main" + File.separator + RESOURCES + File.separator + RULES;
- File file = new File(ruleFolder + File.separator + policyName + ".drl");
+ private void getNameAndSetRemove(final String controllerName, final String policyName) {
+ final String artifactName = getArtifactId(controllerName);
+ final String ruleFolder = PROJECTSLOCATION + File.separator + artifactName + File.separator + "src"
+ + File.separator + "main" + File.separator + RESOURCES + File.separator + RULES;
+ final File file = new File(ruleFolder + File.separator + policyName + ".drl");
if (file.delete()) {
LOGGER.info("Deleted File.. " + file.getAbsolutePath());
removePolicyFromGroup(policyName, controllerName);
@@ -1138,17 +1143,17 @@
}
// Removes Policy from Memory and Database.
- private void removePolicyFromGroup(String policyName, String controllerName) {
+ private void removePolicyFromGroup(final String policyName, final String controllerName) {
policyMap.remove(policyName);
- EntityTransaction et = em.getTransaction();
+ final EntityTransaction et = em.getTransaction();
et.begin();
- Query query = em.createQuery("select b from BRMSPolicyInfo as b where b.policyName = :pn");
+ final Query query = em.createQuery("select b from BrmsPolicyInfo as b where b.policyName = :pn");
query.setParameter("pn", policyName);
- List<?> pList = query.getResultList();
- BRMSPolicyInfo brmsPolicyInfo;
+ final List<?> pList = query.getResultList();
+ BrmsPolicyInfo brmsPolicyInfo;
if (!pList.isEmpty()) {
// Already exists.
- brmsPolicyInfo = (BRMSPolicyInfo) pList.get(0);
+ brmsPolicyInfo = (BrmsPolicyInfo) pList.get(0);
if (brmsPolicyInfo.getControllerName().getControllerName().equals(controllerName)) {
em.remove(brmsPolicyInfo);
em.flush();
@@ -1157,8 +1162,22 @@
et.commit();
}
- private void setVersion(String newVersion, String controllerName) {
- PEDependency userController = (PEDependency) groupMap.get(controllerName).get(0);
+ private void setVersion(final String selectedName) {
+ String newVersion = VERSION_0_1_0;
+ createFlag = false;
+ final NexusArtifact artifact = getLatestArtifactFromNexus(selectedName);
+ if (artifact != null) {
+ newVersion = incrementVersion(artifact.getVersion());
+ }
+ if (VERSION_0_1_0.equals(newVersion)) {
+ createFlag = true;
+ }
+ setVersion(newVersion, selectedName);
+ LOGGER.info("Controller: " + selectedName + "is on version: " + newVersion);
+ }
+
+ private void setVersion(final String newVersion, final String controllerName) {
+ final PEDependency userController = (PEDependency) groupMap.get(controllerName).get(0);
userController.setVersion(newVersion);
groupMap.get(controllerName).set(0, userController);
}
@@ -1168,16 +1187,21 @@
return bm;
}
- public void rotateURLs() {
- if (repURLs != null) {
- Collections.rotate(repURLs, -1);
+ /**
+ * Rotate URLs list.
+ */
+ public void rotateUrls() {
+ if (repUrlList != null) {
+ Collections.rotate(repUrlList, -1);
}
}
+ /**
+ * Get URL List Size.
+ *
+ * @return URL list size
+ */
public int urlListSize() {
- if (repURLs != null) {
- return repURLs.size();
- } else
- return 0;
+ return repUrlList != null ? repUrlList.size() : 0;
}
}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/ControllerPOJO.java b/BRMSGateway/src/main/java/org/onap/policy/brms/api/ControllerPojo.java
similarity index 60%
rename from BRMSGateway/src/main/java/org/onap/policy/brmsInterface/ControllerPOJO.java
rename to BRMSGateway/src/main/java/org/onap/policy/brms/api/ControllerPojo.java
index 5a0679c..e04a079 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/ControllerPOJO.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/api/ControllerPojo.java
@@ -18,35 +18,40 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.brmsInterface;
+package org.onap.policy.brms.api;
import java.util.Map;
/**
- * POJO for controller information.
+ * POJO for controller information.
*
*/
-public class ControllerPOJO {
- private String name;
- private Map<String,String> drools;
- private String operation;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Map<String,String> getDrools() {
- return drools;
- }
- public void setDrools(Map<String,String> drools) {
- this.drools = drools;
- }
- public String getOperation() {
- return operation;
- }
- public void setOperation(String operation) {
- this.operation = operation;
- }
-}
+public class ControllerPojo {
+ private String name;
+ private Map<String, String> drools;
+ private String operation;
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ public Map<String, String> getDrools() {
+ return drools;
+ }
+
+ public void setDrools(final Map<String, String> drools) {
+ this.drools = drools;
+ }
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(final String operation) {
+ this.operation = operation;
+ }
+}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/NotificationPOJO.java b/BRMSGateway/src/main/java/org/onap/policy/brms/api/NotificationPojo.java
similarity index 60%
rename from BRMSGateway/src/main/java/org/onap/policy/brmsInterface/NotificationPOJO.java
rename to BRMSGateway/src/main/java/org/onap/policy/brms/api/NotificationPojo.java
index 75bbe8a..788cbf7 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/NotificationPOJO.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/api/NotificationPojo.java
@@ -18,35 +18,41 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.brmsInterface;
+package org.onap.policy.brms.api;
import java.util.List;
/**
- * This POJO will be transformed to JSON for Notification Purposes.
+ * This POJO will be transformed to JSON for Notification Purposes.
*
*/
-public class NotificationPOJO {
- private String requestID;
- private String entity;
- private List<ControllerPOJO> controllers;
- public String getRequestID() {
- return requestID;
- }
- public void setRequestID(String requestID) {
- this.requestID = requestID;
- }
- public String getEntity() {
- return entity;
- }
- public void setEntity(String entity) {
- this.entity = entity;
- }
- public List<ControllerPOJO> getControllers() {
- return controllers;
- }
- public void setControllers(List<ControllerPOJO> controllers) {
- this.controllers = controllers;
- }
-
+public class NotificationPojo {
+ private String requestId;
+ private String entity;
+ private List<ControllerPojo> controllers;
+
+ public String getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(final String requestId) {
+ this.requestId = requestId;
+ }
+
+ public String getEntity() {
+ return entity;
+ }
+
+ public void setEntity(final String entity) {
+ this.entity = entity;
+ }
+
+ public List<ControllerPojo> getControllers() {
+ return controllers;
+ }
+
+ public void setControllers(final List<ControllerPojo> controllers) {
+ this.controllers = controllers;
+ }
+
}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brms/entity/BrmsGroupInfo.java b/BRMSGateway/src/main/java/org/onap/policy/brms/entity/BrmsGroupInfo.java
new file mode 100644
index 0000000..f710b41
--- /dev/null
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/entity/BrmsGroupInfo.java
@@ -0,0 +1,76 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.brms.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "brmsgroup_info")
+public class BrmsGroupInfo {
+
+ @Id
+ @Column(name = "controllerName", nullable = false, length = 255)
+ private String controllerName;
+
+ @Column(name = "groupId", nullable = false, length = 255)
+ private String groupId;
+
+ @Column(name = "artifactId", nullable = false, length = 255)
+ private String artifactId;
+
+ @Column(name = "version", length = 255)
+ private String version;
+
+ public String getControllerName() {
+ return controllerName;
+ }
+
+ public void setControllerName(final String controllerName) {
+ this.controllerName = controllerName;
+ }
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(final String groupId) {
+ this.groupId = groupId;
+ }
+
+ public String getArtifactId() {
+ return artifactId;
+ }
+
+ public void setArtifactId(final String artifactId) {
+ this.artifactId = artifactId;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(final String version) {
+ this.version = version;
+ }
+}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/BRMSPolicyInfo.java b/BRMSGateway/src/main/java/org/onap/policy/brms/entity/BrmsPolicyInfo.java
similarity index 64%
rename from BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/BRMSPolicyInfo.java
rename to BRMSGateway/src/main/java/org/onap/policy/brms/entity/BrmsPolicyInfo.java
index c269e29..4d7287f 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/BRMSPolicyInfo.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/entity/BrmsPolicyInfo.java
@@ -17,7 +17,8 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.brmsInterface.jpa;
+
+package org.onap.policy.brms.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -27,30 +28,30 @@
import javax.persistence.Table;
@Entity
-@Table(name="brmsgroup_policy")
-public class BRMSPolicyInfo {
-
- @Id
- @Column(name="policyName")
- private String policyName;
-
- @ManyToOne
- @JoinColumn(name="controllerName")
- private BRMSGroupInfo controllerName;
-
- public String getPolicyName() {
- return policyName;
- }
+@Table(name = "brmsgroup_policy")
+public class BrmsPolicyInfo {
- public void setPolicyName(String policyName) {
- this.policyName = policyName;
- }
+ @Id
+ @Column(name = "policyName")
+ private String policyName;
- public BRMSGroupInfo getControllerName() {
- return controllerName;
- }
+ @ManyToOne
+ @JoinColumn(name = "controllerName")
+ private BrmsGroupInfo controllerName;
- public void setControllerName(BRMSGroupInfo controllerName) {
- this.controllerName = controllerName;
- }
+ public String getPolicyName() {
+ return policyName;
+ }
+
+ public void setPolicyName(final String policyName) {
+ this.policyName = policyName;
+ }
+
+ public BrmsGroupInfo getControllerName() {
+ return controllerName;
+ }
+
+ public void setControllerName(final BrmsGroupInfo controllerName) {
+ this.controllerName = controllerName;
+ }
}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/DependencyInfo.java b/BRMSGateway/src/main/java/org/onap/policy/brms/entity/DependencyInfo.java
similarity index 76%
rename from BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/DependencyInfo.java
rename to BRMSGateway/src/main/java/org/onap/policy/brms/entity/DependencyInfo.java
index 753de52..04a3730 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/DependencyInfo.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/entity/DependencyInfo.java
@@ -17,7 +17,8 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.brmsInterface.jpa;
+
+package org.onap.policy.brms.entity;
import java.util.List;
import java.util.Map;
@@ -25,14 +26,15 @@
import org.onap.policy.api.PEDependency;
public class DependencyInfo {
- private Map<String, List<PEDependency>> dependencies;
+
+ private Map<String, List<PEDependency>> dependencies;
- public Map<String, List<PEDependency>> getDependencies() {
- return dependencies;
- }
+ public Map<String, List<PEDependency>> getDependencies() {
+ return dependencies;
+ }
- public void setDependencies(Map<String, List<PEDependency>> dependencies) {
- this.dependencies = dependencies;
- }
-
+ public void setDependencies(final Map<String, List<PEDependency>> dependencies) {
+ this.dependencies = dependencies;
+ }
+
}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java b/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java
deleted file mode 100644
index b460fb8..0000000
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. 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=========================================================
- */
-
-package org.onap.policy.brmsInterface;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.onap.policy.api.ConfigRequestParameters;
-import org.onap.policy.api.LoadedPolicy;
-import org.onap.policy.api.NotificationType;
-import org.onap.policy.api.PDPNotification;
-import org.onap.policy.api.PolicyConfig;
-import org.onap.policy.api.PolicyConfigStatus;
-import org.onap.policy.api.PolicyEngine;
-import org.onap.policy.api.PolicyException;
-import org.onap.policy.api.RemovedPolicy;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
-import org.onap.policy.utils.BackUpHandler;
-import org.onap.policy.xacml.api.XACMLErrorConstants;
-
-/**
- * BRMSHandler: Notification Handler which listens for PDP Notifications.
- * Take action only for BRMS policies.
- *
- * @version 0.3
- */
-public class BRMSHandler implements BackUpHandler{
-
- private static final Logger logger = FlexLogger.getLogger(BRMSHandler.class.getName());
-
- private BRMSPush bRMSPush = null;
-
- public BRMSHandler(String propertiesFile) throws PolicyException{
- setBRMSPush(new BRMSPush(propertiesFile, this));
- }
-
- public void setBRMSPush(BRMSPush brmsPush) {
- this.bRMSPush = brmsPush;
- }
-
- /*
- * This Method is executed upon notification by the Policy Engine API Notification.
- * (non-Javadoc)
- * @see org.onap.policy.utils.BackUpHandler#notificationReceived(org.onap.policy.api.PDPNotification)
- */
- @Override
- public void notificationReceived(PDPNotification notification) {
- logger.info("Notification Recieved");
- logger.info(notification.getNotificationType().toString());
- Boolean flag = BRMSPush.getBackUpMonitor().getFlag();
- bRMSPush.initiate(flag);
- if(flag){
- logger.info("Master Application performing on Notification ");
- runOnNotification(notification);
- }else{
- logger.info("Slave application Skipping Notification.. ");
- }
- }
-
- /*
- * Executed when a policy is removed from PDP.
- */
- private void removedPolicies(Collection<RemovedPolicy> removedPolicies){
- Boolean removed = false;
- logger.info("Removed Policies");
- for(RemovedPolicy removedPolicy: removedPolicies){
- logger.info(removedPolicy.getPolicyName());
- logger.info(removedPolicy.getVersionNo());
- if(removedPolicy.getPolicyName().contains("_BRMS_")){
- try{
- logger.info("Policy Removed with this policy Name : " + removedPolicy.getPolicyName());
- bRMSPush.removeRule(removedPolicy.getPolicyName());
- removed = true;
- }catch(Exception e){
- logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Rertriving policy failed " + e.getMessage(), e);
- }
- }
- }
- Boolean failureFlag;
- int i = 0;
- do{
- failureFlag = false;
- if(removed){
- try{
- bRMSPush.pushRules();
- }catch(PolicyException e){
- //Upon Notification failure
- failureFlag = true;
- bRMSPush.rotateURLs();
- logger.error("Failure during Push Operation " , e);
- }
- }
- i++;
- }while(failureFlag && i< bRMSPush.urlListSize());
- }
-
- /*
- * This method is executed if BRMSGW is "MASTER"
- * (non-Javadoc)
- * @see org.onap.policy.utils.BackUpHandler#runOnNotification(org.onap.policy.api.PDPNotification)
- */
- @Override
- public void runOnNotification(PDPNotification notification){
- // reset the BRMSPush data structures
- bRMSPush.resetDS();
- if(notification.getNotificationType().equals(NotificationType.REMOVE)){
- removedPolicies(notification.getRemovedPolicies());
- }else if(notification.getNotificationType().equals(NotificationType.UPDATE)|| notification.getNotificationType().equals(NotificationType.BOTH)){
- logger.info("Updated Policies: \n");
- ArrayList<PolicyConfig> brmsPolicies = addedPolicies(notification);
- Boolean successFlag = false;
- for(int i=0; !successFlag && i< bRMSPush.urlListSize(); i++){
- if(i!=0){
- for(PolicyConfig policyConfig: brmsPolicies){
- logger.info("Policy Retry with this Name notified: " + policyConfig.getPolicyName());
- bRMSPush.addRule(policyConfig.getPolicyName(),policyConfig.toOther(),policyConfig.getResponseAttributes());
- }
- }
- try{
- bRMSPush.pushRules();
- successFlag = true;
- }catch(PolicyException e){
- //Upon Notification failure
- successFlag = false;
- bRMSPush.rotateURLs();
- logger.error("Failure during Push Operation " , e);
- }
- }
- }
- }
-
- /*
- * Executed when a policy is added to PDP.
- */
- private ArrayList<PolicyConfig> addedPolicies(PDPNotification notification) {
- ArrayList<PolicyConfig> result = new ArrayList<>();
- for(LoadedPolicy updatedPolicy: notification.getLoadedPolicies()){
- logger.info("policyName : " + updatedPolicy.getPolicyName());
- logger.info("policyVersion :" + updatedPolicy.getVersionNo());
- logger.info("Matches: " + updatedPolicy.getMatches());
- // Checking the Name is correct or not.
- if(updatedPolicy.getPolicyName().contains("_BRMS_")){
- try{
- PolicyEngine policyEngine = getPolicyEngine();
- if(policyEngine!=null){
- ConfigRequestParameters configRequestParameters = new ConfigRequestParameters();
- configRequestParameters.setPolicyName(updatedPolicy.getPolicyName());
- Collection<PolicyConfig> policyConfigs = policyEngine.getConfig(configRequestParameters);
- for(PolicyConfig policyConfig: policyConfigs){
- if(policyConfig.getPolicyConfigStatus().equals(PolicyConfigStatus.CONFIG_RETRIEVED)){
- logger.info("Policy Retrieved with this Name notified: " + policyConfig.getPolicyName());
- result.add(policyConfig);
- bRMSPush.addRule(policyConfig.getPolicyName(),policyConfig.toOther(),policyConfig.getResponseAttributes());
- }else{
- logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Fail to retrieve policy so rule will not be pushed to PolicyRepo !!!!\n\n");
- }
- }
- }
- }catch(Exception e){
- logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Rertriving policy failed " + e.getMessage(), e);
- }
- }
- }
- return result;
- }
-
- public PolicyEngine getPolicyEngine() {
- return BRMSGateway.getPolicyEngine();
- }
-}
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/BRMSGroupInfo.java b/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/BRMSGroupInfo.java
deleted file mode 100644
index 6b4a2bf..0000000
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/jpa/BRMSGroupInfo.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
- */
-package org.onap.policy.brmsInterface.jpa;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name="brmsgroup_info")
-public class BRMSGroupInfo{
-
- @Id
- @Column(name = "controllerName", nullable=false, length=255)
- private String controllerName;
-
- @Column(name = "groupId", nullable=false, length=255)
- private String groupId;
-
- @Column(name = "artifactId", nullable=false, length=255)
- private String artifactId;
-
- @Column(name = "version", length=255)
- private String version;
-
- public String getControllerName() {
- return controllerName;
- }
-
- public void setControllerName(String controllerName) {
- this.controllerName = controllerName;
- }
-
- public String getGroupId() {
- return groupId;
- }
-
- public void setGroupId(String groupId) {
- this.groupId = groupId;
- }
-
- public String getArtifactId() {
- return artifactId;
- }
-
- public void setArtifactId(String artifactId) {
- this.artifactId = artifactId;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-}
diff --git a/BRMSGateway/src/main/resources/META-INF/persistenceBRMS.xml b/BRMSGateway/src/main/resources/META-INF/persistenceBRMS.xml
index 99e6b92..f490218 100644
--- a/BRMSGateway/src/main/resources/META-INF/persistenceBRMS.xml
+++ b/BRMSGateway/src/main/resources/META-INF/persistenceBRMS.xml
@@ -3,7 +3,7 @@
============LICENSE_START=======================================================
PolicyEngineUtils
================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ Copyright (C) 2017-2018 AT&T Intellectual Property. 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.
@@ -20,11 +20,11 @@
-->
<persistence version="2.1"
- xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
- <persistence-unit name="BRMSGW" transaction-type="RESOURCE_LOCAL">
- <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
- <class>org.onap.policy.brmsInterface.jpa.BRMSGroupInfo</class>
- <class>org.onap.policy.brmsInterface.jpa.BRMSPolicyInfo</class>
- </persistence-unit>
+ xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
+ <persistence-unit name="BRMSGW" transaction-type="RESOURCE_LOCAL">
+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+ <class>org.onap.policy.brms.entity.BrmsGroupInfo</class>
+ <class>org.onap.policy.brms.entity.BrmsPolicyInfo</class>
+ </persistence-unit>
</persistence>
\ No newline at end of file
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BRMSJpaTest.java b/BRMSGateway/src/test/java/org/onap/brmsgw/test/BRMSJpaTest.java
deleted file mode 100644
index ffcc2e3..0000000
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BRMSJpaTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
- */
-
-package org.onap.brmsgw.test;
-
-import static org.junit.Assert.assertEquals;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.junit.Test;
-import org.onap.policy.api.PEDependency;
-import org.onap.policy.brmsInterface.jpa.BRMSGroupInfo;
-import org.onap.policy.brmsInterface.jpa.BRMSPolicyInfo;
-import org.onap.policy.brmsInterface.jpa.DependencyInfo;
-
-public class BRMSJpaTest {
- @Test
- public void testJpa() {
- String testVal = "testVal";
- BRMSGroupInfo groupInfo = new BRMSGroupInfo();
-
- // Test group info
- groupInfo.setControllerName(testVal);
- assertEquals(groupInfo.getControllerName(), testVal);
- groupInfo.setGroupId(testVal);
- assertEquals(groupInfo.getGroupId(), testVal);
- groupInfo.setArtifactId(testVal);
- assertEquals(groupInfo.getArtifactId(), testVal);
- groupInfo.setVersion(testVal);
- assertEquals(groupInfo.getVersion(), testVal);
-
- // Test policy info
- BRMSPolicyInfo policyInfo = new BRMSPolicyInfo();
- policyInfo.setPolicyName(testVal);
- assertEquals(policyInfo.getPolicyName(), testVal);
- policyInfo.setControllerName(groupInfo);
- assertEquals(policyInfo.getControllerName(), groupInfo);
- }
-
- @Test
- public void testDependencyInfo() {
- String testKey = "testKey";
- PEDependency dependency = new PEDependency();
- List<PEDependency> list = new ArrayList<PEDependency>();
- list.add(dependency);
- Map<String, List<PEDependency>> map = new HashMap<String, List<PEDependency>>();
- map.put(testKey, list);
- DependencyInfo info = new DependencyInfo();
-
- info.setDependencies(map);
- assertEquals(info.getDependencies(), map);
- }
-}
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BRMSPushTest.java b/BRMSGateway/src/test/java/org/onap/brmsgw/test/BRMSPushTest.java
deleted file mode 100644
index aa25744..0000000
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BRMSPushTest.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
- */
-
-package org.onap.brmsgw.test;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Properties;
-
-import org.junit.Test;
-import org.onap.policy.api.PolicyException;
-import org.onap.policy.brmsInterface.BRMSHandler;
-
-public class BRMSPushTest {
-
- private final String VALIDFILE = "src/test/resources/config.properties";
- private final String INVALIDFILE = "src/test/resources/failure.properties";
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest() throws PolicyException {
- new BRMSHandler(null);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest1() throws PolicyException {
- new BRMSHandler("src/test/resources/filenotexists.txt");
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest2() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "defaultName";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest3() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "repositoryID";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- prop = new PropertyChange();
- prop.key = "RESOURCE_NAME";
- prop.remove = true;
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest4() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "repositoryURL";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest5() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "repositoryName";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest6() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "repositoryURL";
- prop.value = "http://nexus:8081/nexus/content/repositories/releases, http://nexus:8081/nexus/content/repositories/releases";
- prop.remove = false;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- prop = new PropertyChange();
- prop.key = "repositoryUsername";
- prop.remove = true;
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest7() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "repositoryPassword";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest8() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "policyKeyID";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest9() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "sync";
- prop.value = "true";
- prop.remove = false;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- prop = new PropertyChange();
- prop.key = "brms.dependency.version";
- prop.remove = true;
- props.add(prop);
- prop = new PropertyChange();
- prop.key = "groupNames";
- prop.remove = true;
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest10() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "groupNames";
- prop.value = "";
- prop.remove = false;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest11() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "default.groupID";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest12() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "default.artifactID";
- prop.remove = true;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test (expected = PolicyException.class)
- public void bRMSHandlerFailTest13() throws PolicyException {
- PropertyChange prop = new PropertyChange();
- prop.key = "NOTIFICATION_TYPE";
- prop.value = "dmaap";
- prop.remove = false;
- List<PropertyChange> props = new LinkedList<>();
- props.add(prop);
- prop = new PropertyChange();
- prop.key = "NOTIFICATION_SERVERS";
- prop.remove = true;
- props.add(prop);
- setFailureProperties(props);
- new BRMSHandler(INVALIDFILE);
- }
-
- @Test
- public void BRMSHandlerTest() throws PolicyException {
- assertNotNull(new BRMSHandler(VALIDFILE));
- }
-
- private void setFailureProperties(List<PropertyChange> properties) throws PolicyException {
- Properties validProp = new Properties();
- try {
- validProp.load(new FileInputStream(VALIDFILE));
- for (PropertyChange prop: properties) {
- if(prop.remove) {
- validProp.remove(prop.key);
- }else {
- validProp.setProperty(prop.key, prop.value);
- }
- }
- validProp.store(new FileOutputStream(INVALIDFILE), null);
- } catch (IOException e) {
- throw new PolicyException(e);
- }
- }
-
- class PropertyChange {
- public String key = null;
- public String value = null;
- public Boolean remove = false;
- }
-}
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsJpaTest.java b/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsJpaTest.java
new file mode 100644
index 0000000..32ed314
--- /dev/null
+++ b/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsJpaTest.java
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.brmsgw.test;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+import org.onap.policy.api.PEDependency;
+import org.onap.policy.brms.entity.BrmsGroupInfo;
+import org.onap.policy.brms.entity.BrmsPolicyInfo;
+import org.onap.policy.brms.entity.DependencyInfo;
+
+public class BrmsJpaTest {
+ @Test
+ public void testJpa() {
+ final String testVal = "testVal";
+ final BrmsGroupInfo groupInfo = new BrmsGroupInfo();
+
+ // Test group info
+ groupInfo.setControllerName(testVal);
+ assertEquals(groupInfo.getControllerName(), testVal);
+ groupInfo.setGroupId(testVal);
+ assertEquals(groupInfo.getGroupId(), testVal);
+ groupInfo.setArtifactId(testVal);
+ assertEquals(groupInfo.getArtifactId(), testVal);
+ groupInfo.setVersion(testVal);
+ assertEquals(groupInfo.getVersion(), testVal);
+
+ // Test policy info
+ final BrmsPolicyInfo policyInfo = new BrmsPolicyInfo();
+ policyInfo.setPolicyName(testVal);
+ assertEquals(policyInfo.getPolicyName(), testVal);
+ policyInfo.setControllerName(groupInfo);
+ assertEquals(policyInfo.getControllerName(), groupInfo);
+ }
+
+ @Test
+ public void testDependencyInfo() {
+ final String testKey = "testKey";
+ final PEDependency dependency = new PEDependency();
+ final List<PEDependency> list = new ArrayList<PEDependency>();
+ list.add(dependency);
+ final Map<String, List<PEDependency>> map = new HashMap<String, List<PEDependency>>();
+ map.put(testKey, list);
+ final DependencyInfo info = new DependencyInfo();
+
+ info.setDependencies(map);
+ assertEquals(info.getDependencies(), map);
+ }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsPushTest.java b/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsPushTest.java
new file mode 100644
index 0000000..36e6336
--- /dev/null
+++ b/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsPushTest.java
@@ -0,0 +1,235 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.brmsgw.test;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+
+import org.junit.Test;
+import org.onap.policy.api.PolicyException;
+import org.onap.policy.brms.api.BrmsHandler;
+
+public class BrmsPushTest {
+
+ private static final String VALID_FILE = "src/test/resources/config.properties";
+ private static final String INVALID_FILE = "src/test/resources/failure.properties";
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest() throws PolicyException {
+ new BrmsHandler(null);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest1() throws PolicyException {
+ new BrmsHandler("src/test/resources/filenotexists.txt");
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest2() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "defaultName";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest3() throws PolicyException {
+ PropertyChange prop = new PropertyChange();
+ prop.key = "repositoryID";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ prop = new PropertyChange();
+ prop.key = "RESOURCE_NAME";
+ prop.remove = true;
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest4() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "repositoryURL";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest5() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "repositoryName";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest6() throws PolicyException {
+ PropertyChange prop = new PropertyChange();
+ prop.key = "repositoryURL";
+ prop.value =
+ "http://nexus:8081/nexus/content/repositories/releases, http://nexus:8081/nexus/content/repositories/releases";
+ prop.remove = false;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ prop = new PropertyChange();
+ prop.key = "repositoryUsername";
+ prop.remove = true;
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest7() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "repositoryPassword";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest8() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "policyKeyID";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest9() throws PolicyException {
+ PropertyChange prop = new PropertyChange();
+ prop.key = "sync";
+ prop.value = "true";
+ prop.remove = false;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ prop = new PropertyChange();
+ prop.key = "brms.dependency.version";
+ prop.remove = true;
+ props.add(prop);
+ prop = new PropertyChange();
+ prop.key = "groupNames";
+ prop.remove = true;
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest10() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "groupNames";
+ prop.value = "";
+ prop.remove = false;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest11() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "default.groupID";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest12() throws PolicyException {
+ final PropertyChange prop = new PropertyChange();
+ prop.key = "default.artifactID";
+ prop.remove = true;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test(expected = PolicyException.class)
+ public void brmsHandlerFailTest13() throws PolicyException {
+ PropertyChange prop = new PropertyChange();
+ prop.key = "NOTIFICATION_TYPE";
+ prop.value = "dmaap";
+ prop.remove = false;
+ final List<PropertyChange> props = new LinkedList<>();
+ props.add(prop);
+ prop = new PropertyChange();
+ prop.key = "NOTIFICATION_SERVERS";
+ prop.remove = true;
+ props.add(prop);
+ setFailureProperties(props);
+ new BrmsHandler(INVALID_FILE);
+ }
+
+ @Test
+ public void brmsHandlerTest() throws PolicyException {
+ assertNotNull(new BrmsHandler(VALID_FILE));
+ }
+
+ private void setFailureProperties(final List<PropertyChange> properties) throws PolicyException {
+ final Properties validProp = new Properties();
+ try {
+ validProp.load(new FileInputStream(VALID_FILE));
+ for (final PropertyChange prop : properties) {
+ if (prop.remove) {
+ validProp.remove(prop.key);
+ } else {
+ validProp.setProperty(prop.key, prop.value);
+ }
+ }
+ validProp.store(new FileOutputStream(INVALID_FILE), null);
+ } catch (final IOException e) {
+ throw new PolicyException(e);
+ }
+ }
+
+ class PropertyChange {
+ public String key = null;
+ public String value = null;
+ public Boolean remove = false;
+ }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPOJOTest.java b/BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPojoTest.java
similarity index 64%
rename from BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPOJOTest.java
rename to BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPojoTest.java
index 5d736f6..21534dd 100644
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPOJOTest.java
+++ b/BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPojoTest.java
@@ -21,25 +21,27 @@
package org.onap.brmsgw.test;
import static org.junit.Assert.assertEquals;
+
import java.util.HashMap;
import java.util.Map;
-import org.junit.Test;
-import org.onap.policy.brmsInterface.ControllerPOJO;
-public class ControllerPOJOTest {
- @Test
- public void testPojo() {
- String testKey = "testKey";
- String testVal = "testVal";
- Map<String, String> testMap = new HashMap<String, String>();
- testMap.put(testKey, testVal);
- ControllerPOJO pojo = new ControllerPOJO();
-
- pojo.setName(testVal);
- assertEquals(pojo.getName(), testVal);
- pojo.setDrools(testMap);
- assertEquals(pojo.getDrools(), testMap);
- pojo.setOperation(testVal);
- assertEquals(pojo.getOperation(), testVal);
- }
+import org.junit.Test;
+import org.onap.policy.brms.api.ControllerPojo;
+
+public class ControllerPojoTest {
+ @Test
+ public void testPojo() {
+ final String testKey = "testKey";
+ final String testVal = "testVal";
+ final Map<String, String> testMap = new HashMap<String, String>();
+ testMap.put(testKey, testVal);
+ final ControllerPojo pojo = new ControllerPojo();
+
+ pojo.setName(testVal);
+ assertEquals(pojo.getName(), testVal);
+ pojo.setDrools(testMap);
+ assertEquals(pojo.getDrools(), testMap);
+ pojo.setOperation(testVal);
+ assertEquals(pojo.getOperation(), testVal);
+ }
}
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPOJOTest.java b/BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPojoTest.java
similarity index 61%
rename from BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPOJOTest.java
rename to BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPojoTest.java
index ef6585f..f83b749 100644
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPOJOTest.java
+++ b/BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPojoTest.java
@@ -21,26 +21,28 @@
package org.onap.brmsgw.test;
import static org.junit.Assert.assertEquals;
+
import java.util.ArrayList;
import java.util.List;
-import org.junit.Test;
-import org.onap.policy.brmsInterface.ControllerPOJO;
-import org.onap.policy.brmsInterface.NotificationPOJO;
-public class NotificationPOJOTest {
- @Test
- public void testPojo() {
- String testVal = "testVal";
- ControllerPOJO ctrlPojo = new ControllerPOJO();
- List<ControllerPOJO> controllers = new ArrayList<ControllerPOJO>();
- controllers.add(ctrlPojo);
- NotificationPOJO pojo = new NotificationPOJO();
-
- pojo.setRequestID(testVal);
- assertEquals(pojo.getRequestID(), testVal);
- pojo.setEntity(testVal);
- assertEquals(pojo.getEntity(), testVal);
- pojo.setControllers(controllers);
- assertEquals(pojo.getControllers(), controllers);
- }
+import org.junit.Test;
+import org.onap.policy.brms.api.ControllerPojo;
+import org.onap.policy.brms.api.NotificationPojo;
+
+public class NotificationPojoTest {
+ @Test
+ public void testPojo() {
+ final String testVal = "testVal";
+ final ControllerPojo ctrlPojo = new ControllerPojo();
+ final List<ControllerPojo> controllers = new ArrayList<ControllerPojo>();
+ controllers.add(ctrlPojo);
+ final NotificationPojo pojo = new NotificationPojo();
+
+ pojo.setRequestId(testVal);
+ assertEquals(pojo.getRequestId(), testVal);
+ pojo.setEntity(testVal);
+ assertEquals(pojo.getEntity(), testVal);
+ pojo.setControllers(controllers);
+ assertEquals(pojo.getControllers(), controllers);
+ }
}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSGatewayTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayTest.java
similarity index 63%
rename from BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSGatewayTest.java
rename to BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayTest.java
index e0b38b6..b3f836f 100644
--- a/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSGatewayTest.java
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayTest.java
@@ -18,11 +18,12 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.brmsInterface;
+package org.onap.policy.brms.api;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import static org.mockito.Matchers.any;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
@@ -31,31 +32,30 @@
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
-public class BRMSGatewayTest {
- @Test
- public void testGet() {
- assertNull(BRMSGateway.getPolicyEngine());
- }
+public class BrmsGatewayTest {
+ @Test
+ public void testGet() {
+ assertNull(BrmsGateway.getPolicyEngine());
+ }
- @PrepareForTest({Thread.class, BRMSGateway.class})
- @Test
- public void testMain() throws Exception {
- // Mock Thread
- PowerMockito.spy(Thread.class);
- PowerMockito.doNothing().when(Thread.class);
- Thread.sleep(1000);
+ @PrepareForTest({Thread.class, BrmsGateway.class})
+ @Test
+ public void testMain() throws Exception {
+ // Mock Thread
+ PowerMockito.spy(Thread.class);
+ PowerMockito.doNothing().when(Thread.class);
+ Thread.sleep(1000);
- // Mock handler
- BRMSHandler handler = Mockito.mock(BRMSHandler.class);
- PowerMockito.whenNew(BRMSHandler.class).withArguments(any()).thenReturn(handler);
+ // Mock handler
+ final BrmsHandler handler = Mockito.mock(BrmsHandler.class);
+ PowerMockito.whenNew(BrmsHandler.class).withArguments(any()).thenReturn(handler);
- // Run app
- try {
- String[] args = null;
- BRMSGateway.main(args);
- }
- catch (Exception ex) {
- fail("Not expected an exception: " + ex);
- }
- }
+ // Run app
+ try {
+ final String[] args = null;
+ BrmsGateway.main(args);
+ } catch (final Exception ex) {
+ fail("Not expected an exception: " + ex);
+ }
+ }
}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsHandlerTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsHandlerTest.java
new file mode 100644
index 0000000..58bacef
--- /dev/null
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsHandlerTest.java
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.brms.api;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.std.StdPDPNotification;
+import org.onap.policy.utils.BackUpMonitor;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+public class BrmsHandlerTest {
+ @PrepareForTest({Persistence.class, BackUpMonitor.class})
+ @Test
+ public void negativeTestNotifications() throws Exception {
+ // Mock emf, persistence, and query
+ final EntityManagerFactory emf = Mockito.mock(EntityManagerFactory.class);
+ final EntityManager em = Mockito.mock(EntityManager.class);
+ Mockito.when(emf.createEntityManager()).thenReturn(em);
+ PowerMockito.mockStatic(Persistence.class);
+ PowerMockito.when(Persistence.createEntityManagerFactory(any(), any())).thenReturn(emf);
+ final EntityTransaction et = Mockito.mock(EntityTransaction.class);
+ Mockito.when(em.getTransaction()).thenReturn(et);
+ final Query query = Mockito.mock(Query.class);
+ Mockito.when(em.createQuery(Mockito.anyString())).thenReturn(query);
+
+ // Mock backup monitor
+ PowerMockito.mockStatic(BackUpMonitor.class);
+ final BackUpMonitor monitor = Mockito.mock(BackUpMonitor.class);
+ PowerMockito.when(BackUpMonitor.getInstance(any(), any(), any(), any())).thenReturn(monitor);
+
+ // Test constructor
+ final StdPDPNotification notification = new StdPDPNotification();
+ final String propFile = "config.properties";
+ final BrmsHandler handler = new BrmsHandler(propFile);
+ final BrmsPush brmsPush = new BrmsPush(propFile, handler);
+ handler.setBrmsPush(brmsPush);
+ assertNotNull(handler);
+ assertNotNull(brmsPush);
+ assertNull(handler.getPolicyEngine());
+
+ try {
+ // Test update
+ notification.setNotificationType(NotificationType.UPDATE);
+ handler.runOnNotification(notification);
+ handler.notificationReceived(notification);
+
+ // Test remove
+ notification.setNotificationType(NotificationType.REMOVE);
+ handler.runOnNotification(notification);
+ handler.notificationReceived(notification);
+
+ // Test both
+ notification.setNotificationType(NotificationType.BOTH);
+ handler.runOnNotification(notification);
+ handler.notificationReceived(notification);
+ } catch (final Exception ex) {
+ fail("Not expecting an exception: " + ex);
+ }
+ }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsPushTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsPushTest.java
new file mode 100644
index 0000000..2b13640
--- /dev/null
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsPushTest.java
@@ -0,0 +1,125 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.brms.api;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.apache.maven.model.Dependency;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.onap.policy.api.PolicyException;
+import org.onap.policy.utils.BackUpHandler;
+import org.onap.policy.utils.BackUpMonitor;
+import org.onap.policy.utils.BackUpMonitorException;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+public class BrmsPushTest {
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ @PrepareForTest({Persistence.class, BackUpMonitor.class})
+ @Test
+ public void testPush() throws BackUpMonitorException, PolicyException {
+ // Mock emf, persistence, and query
+ final EntityManagerFactory emf = Mockito.mock(EntityManagerFactory.class);
+ final EntityManager em = Mockito.mock(EntityManager.class);
+ Mockito.when(emf.createEntityManager()).thenReturn(em);
+ PowerMockito.mockStatic(Persistence.class);
+ PowerMockito.when(Persistence.createEntityManagerFactory(Mockito.any(), Mockito.any())).thenReturn(emf);
+ final EntityTransaction et = Mockito.mock(EntityTransaction.class);
+ Mockito.when(em.getTransaction()).thenReturn(et);
+ final Query query = Mockito.mock(Query.class);
+ Mockito.when(em.createQuery(Mockito.anyString())).thenReturn(query);
+
+ // Mock backup monitor
+ PowerMockito.mockStatic(BackUpMonitor.class);
+ final BackUpMonitor monitor = Mockito.mock(BackUpMonitor.class);
+ PowerMockito.when(BackUpMonitor.getInstance(any(), any(), any(), any())).thenReturn(monitor);
+
+ // Test constructor
+ final String propFile = "config.properties";
+ final BackUpHandler handler = Mockito.mock(BackUpHandler.class);
+ final BrmsPush push = new BrmsPush(propFile, handler);
+ assertNotNull(push);
+
+ final String name = "testName";
+ try {
+ // Test initiate
+ push.initiate(true);
+
+ // Test reset
+ push.resetDs();
+
+ // Test add
+ final String rule = "testRule";
+ final Map<String, String> responseAttributes = new HashMap<String, String>();
+ responseAttributes.put("$controller:", "{\n\"testKey\": \"testVal\"\n}\n");
+ responseAttributes.put("$dependency$", "[a,b]");
+ push.addRule(name, rule, responseAttributes);
+ } catch (final Exception ex) {
+ fail("Not expecting an exception: " + ex);
+ }
+
+ try {
+ // Test remove
+ push.removeRule(name);
+ } catch (final Exception ex) {
+ fail("Not expecting an exception: " + ex);
+
+ }
+
+ // Test misc methods
+ final String controllerName = "testController";
+ final List<Dependency> deps = push.defaultDependencies(controllerName);
+ assertEquals(deps.size(), 7);
+ assertNotNull(BrmsPush.getBackUpMonitor());
+ assertEquals(push.urlListSize(), 1);
+
+ try {
+ push.rotateUrls();
+ } catch (final Exception ex) {
+ fail("Not expecting an exception: " + ex);
+ }
+
+ // Test push
+ thrown.expect(PolicyException.class);
+ push.pushRules();
+ }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSHandlerTest.java b/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSHandlerTest.java
deleted file mode 100644
index 8e15cdf..0000000
--- a/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSHandlerTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
- */
-
-package org.onap.policy.brmsInterface;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityTransaction;
-import javax.persistence.Persistence;
-import javax.persistence.Query;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.onap.policy.api.NotificationType;
-import org.onap.policy.std.StdPDPNotification;
-import org.onap.policy.utils.BackUpMonitor;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-@RunWith(PowerMockRunner.class)
-public class BRMSHandlerTest {
- @PrepareForTest({Persistence.class, BackUpMonitor.class})
- @Test
- public void negativeTestNotifications() throws Exception {
- // Mock emf, persistence, and query
- EntityManagerFactory emf = Mockito.mock(EntityManagerFactory.class);
- EntityManager em = Mockito.mock(EntityManager.class);
- Mockito.when(emf.createEntityManager()).thenReturn(em);
- PowerMockito.mockStatic(Persistence.class);
- PowerMockito.when(Persistence.createEntityManagerFactory(any(), any())).thenReturn(emf);
- EntityTransaction et = Mockito.mock(EntityTransaction.class);
- Mockito.when(em.getTransaction()).thenReturn(et);
- Query query = Mockito.mock(Query.class);
- Mockito.when(em.createQuery(Mockito.anyString())).thenReturn(query);
-
- // Mock backup monitor
- PowerMockito.mockStatic(BackUpMonitor.class);
- BackUpMonitor monitor = Mockito.mock(BackUpMonitor.class);
- PowerMockito.when(BackUpMonitor.getInstance(any(), any(), any(), any())).thenReturn(monitor);
-
- // Test constructor
- StdPDPNotification notification = new StdPDPNotification();
- String propFile = "config.properties";
- BRMSHandler handler = new BRMSHandler(propFile);
- BRMSPush brmsPush = new BRMSPush(propFile, handler);
- handler.setBRMSPush(brmsPush);
- assertNotNull(handler);
- assertNotNull(brmsPush);
- assertNull(handler.getPolicyEngine());
-
- try {
- // Test update
- notification.setNotificationType(NotificationType.UPDATE);
- handler.runOnNotification(notification);
- handler.notificationReceived(notification);
-
- // Test remove
- notification.setNotificationType(NotificationType.REMOVE);
- handler.runOnNotification(notification);
- handler.notificationReceived(notification);
-
- // Test both
- notification.setNotificationType(NotificationType.BOTH);
- handler.runOnNotification(notification);
- handler.notificationReceived(notification);
- }
- catch (Exception ex) {
- fail("Not expecting an exception: " + ex);
- }
- }
-}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSPushTest.java b/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSPushTest.java
deleted file mode 100644
index 5ca2b30..0000000
--- a/BRMSGateway/src/test/java/org/onap/policy/brmsInterface/BRMSPushTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
- */
-
-package org.onap.policy.brmsInterface;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityTransaction;
-import javax.persistence.Persistence;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.onap.policy.api.PolicyException;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.onap.policy.utils.BackUpHandler;
-import org.onap.policy.utils.BackUpMonitor;
-import org.onap.policy.utils.BackUpMonitorException;
-import org.apache.maven.model.Dependency;
-import javax.persistence.Query;
-
-@RunWith(PowerMockRunner.class)
-public class BRMSPushTest {
- @Rule
- public ExpectedException thrown = ExpectedException.none();
-
- @PrepareForTest({Persistence.class, BackUpMonitor.class})
- @Test
- public void testPush() throws BackUpMonitorException, PolicyException {
- // Mock emf, persistence, and query
- EntityManagerFactory emf = Mockito.mock(EntityManagerFactory.class);
- EntityManager em = Mockito.mock(EntityManager.class);
- Mockito.when(emf.createEntityManager()).thenReturn(em);
- PowerMockito.mockStatic(Persistence.class);
- PowerMockito.when(Persistence.createEntityManagerFactory(Mockito.any(), Mockito.any())).thenReturn(emf);
- EntityTransaction et = Mockito.mock(EntityTransaction.class);
- Mockito.when(em.getTransaction()).thenReturn(et);
- Query query = Mockito.mock(Query.class);
- Mockito.when(em.createQuery(Mockito.anyString())).thenReturn(query);
-
- // Mock backup monitor
- PowerMockito.mockStatic(BackUpMonitor.class);
- BackUpMonitor monitor = Mockito.mock(BackUpMonitor.class);
- PowerMockito.when(BackUpMonitor.getInstance(any(), any(), any(), any())).thenReturn(monitor);
-
- // Test constructor
- String propFile = "config.properties";
- BackUpHandler handler = Mockito.mock(BackUpHandler.class);
- BRMSPush push = new BRMSPush(propFile, handler);
- assertNotNull(push);
-
- String name = "testName";
- try {
- // Test initiate
- push.initiate(true);
-
- // Test reset
- push.resetDS();
-
- // Test add
- String rule = "testRule";
- Map<String, String> responseAttributes = new HashMap<String, String>();
- responseAttributes.put("$controller:", "{\n\"testKey\": \"testVal\"\n}\n");
- responseAttributes.put("$dependency$", "[a,b]");
- push.addRule(name, rule, responseAttributes);
- }
- catch (Exception ex) {
- fail("Not expecting an exception: " + ex);
- }
-
- try {
- // Test remove
- push.removeRule(name);
- }
- catch (Exception ex) {
- fail("Not expecting an exception: " + ex);
-
- }
-
- // Test misc methods
- String controllerName = "testController";
- List<Dependency> deps = push.defaultDependencies(controllerName);
- assertEquals(deps.size(), 7);
- assertNotNull(BRMSPush.getBackUpMonitor());
- assertEquals(push.urlListSize(), 1);
-
- try {
- push.rotateURLs();
- }
- catch (Exception ex) {
- fail("Not expecting an exception: " + ex);
- }
-
- // Test push
- thrown.expect(PolicyException.class);
- push.pushRules();
- }
-}
diff --git a/BRMSGateway/src/test/resources/META-INF/persistenceBRMStest.xml b/BRMSGateway/src/test/resources/META-INF/persistenceBRMStest.xml
index f757aca..62ae4d0 100644
--- a/BRMSGateway/src/test/resources/META-INF/persistenceBRMStest.xml
+++ b/BRMSGateway/src/test/resources/META-INF/persistenceBRMStest.xml
@@ -24,8 +24,8 @@
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="BRMSGW" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
- <class>org.onap.policy.brmsInterface.jpa.BRMSGroupInfo</class>
- <class>org.onap.policy.brmsInterface.jpa.BRMSPolicyInfo</class>
+ <class>org.onap.policy.brms.entity.BrmsGroupInfo</class>
+ <class>org.onap.policy.brms.entity.BrmsPolicyInfo</class>
<property name="javax.persistence.schema-generation.scripts.action"
value="drop-and-create" />
<property name="javax.persistence.schema-generation.scripts.create-target"
diff --git a/ONAP-PDP/pom.xml b/ONAP-PDP/pom.xml
index 27c0ec1..50f717c 100644
--- a/ONAP-PDP/pom.xml
+++ b/ONAP-PDP/pom.xml
@@ -71,22 +71,60 @@
<groupId>com.att.research.xacml</groupId>
<artifactId>xacml-pdp</artifactId>
<version>1.0.1</version>
- <exclusions>
- <!-- The LDAP PIP uses velocity which pulls this insecure jar in. We
- are not using that PIP and can safely exclude this jar to resolve CLM issue.
- -->
- <exclusion>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- </exclusion>
- </exclusions>
+ <exclusions>
+ <!-- The LDAP PIP uses velocity which pulls this insecure jar in. We
+ are not using that PIP and can safely exclude this jar to resolve CLM issue. -->
+ <exclusion>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>org.onap.policy.drools-pdp</groupId>
- <artifactId>policy-endpoints</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
+ <groupId>org.onap.policy.drools-pdp</groupId>
+ <artifactId>policy-endpoints</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
-
-</project>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>onap-java-style</id>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ <phase>process-sources</phase>
+ <configuration>
+ <!-- Use Google Java Style Guide: https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml
+ with minor changes -->
+ <configLocation>onap-checkstyle/onap-java-style.xml</configLocation>
+ <!-- <sourceDirectory> is needed so that checkstyle ignores the generated
+ sources directory -->
+ <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
+ <includeResources>true</includeResources>
+ <includeTestSourceDirectory>true</includeTestSourceDirectory>
+ <includeTestResources>true</includeTestResources>
+ <excludes>
+ </excludes>
+ <consoleOutput>true</consoleOutput>
+ <failOnViolation>true</failOnViolation>
+ <violationSeverity>warning</violationSeverity>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.oparent</groupId>
+ <artifactId>checkstyle</artifactId>
+ <version>0.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/FindAction.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/FindAction.java
index 5fde0ad..c256626 100644
--- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/FindAction.java
+++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/FindAction.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* ONAP-PDP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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.
@@ -17,8 +17,27 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.xacml.action;
+import com.att.research.xacml.api.Advice;
+import com.att.research.xacml.api.Attribute;
+import com.att.research.xacml.api.AttributeAssignment;
+import com.att.research.xacml.api.AttributeValue;
+import com.att.research.xacml.api.Identifier;
+import com.att.research.xacml.api.Obligation;
+import com.att.research.xacml.api.Request;
+import com.att.research.xacml.api.RequestAttributes;
+import com.att.research.xacml.api.Result;
+import com.att.research.xacml.std.IdentifierImpl;
+import com.att.research.xacml.std.StdAdvice;
+import com.att.research.xacml.std.StdAttributeAssignment;
+import com.att.research.xacml.std.StdAttributeValue;
+import com.att.research.xacml.std.StdMutableResponse;
+import com.att.research.xacml.std.StdMutableResult;
+import com.att.research.xacml.std.StdObligation;
+import com.att.research.xacml.util.XACMLProperties;
+
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
@@ -43,329 +62,313 @@
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.rest.XACMLRestProperties;
-import com.att.research.xacml.api.Advice;
-import com.att.research.xacml.api.Attribute;
-import com.att.research.xacml.api.AttributeAssignment;
-import com.att.research.xacml.api.AttributeValue;
-import com.att.research.xacml.api.Identifier;
-import com.att.research.xacml.api.Obligation;
-import com.att.research.xacml.api.Request;
-import com.att.research.xacml.api.RequestAttributes;
-import com.att.research.xacml.api.Result;
-import com.att.research.xacml.std.IdentifierImpl;
-import com.att.research.xacml.std.StdAdvice;
-import com.att.research.xacml.std.StdAttributeAssignment;
-import com.att.research.xacml.std.StdAttributeValue;
-import com.att.research.xacml.std.StdMutableResponse;
-import com.att.research.xacml.std.StdMutableResult;
-import com.att.research.xacml.std.StdObligation;
-import com.att.research.xacml.util.XACMLProperties;
-
@SuppressWarnings("deprecation")
public class FindAction {
- private Logger LOGGER = FlexLogger.getLogger(this.getClass());
- private Boolean changeIt = false;
- private String configURL = null;
- private StdMutableResponse newResponse = new StdMutableResponse();
- private StdMutableResult addResult = new StdMutableResult();
+ private Logger logger = FlexLogger.getLogger(this.getClass());
+ private Boolean changeIt = false;
+ private String configUrl = null;
+ private StdMutableResponse newResponse = new StdMutableResponse();
+ private StdMutableResult addResult = new StdMutableResult();
- public StdMutableResponse run(StdMutableResponse stdResponse, Request pepRequest) {
- int count = 0;
- boolean config = false;
- boolean decide = false;
- Collection<RequestAttributes> requestAttributes = pepRequest.getRequestAttributes();
- for(RequestAttributes requestAttribute : requestAttributes){
- Collection<Attribute> attributes = requestAttribute.getAttributes();
- for(Attribute attribute : attributes){
- if(attribute.getAttributeId().stringValue().equals("urn:oasis:names:tc:xacml:1.0:action:action-id")){
- for(AttributeValue<?> attributeValue : attribute.getValues()){
- if(attributeValue.getValue().toString().equalsIgnoreCase("ACCESS")){
- count++;
- }
- if(attributeValue.getValue().toString().equalsIgnoreCase("DECIDE")){
- decide = true;
- }
- }
- }
- if(attribute.getAttributeId().stringValue().equals("urn:oasis:names:tc:xacml:1.0:resource:resource-id")){
- for(AttributeValue<?> attributeValue : attribute.getValues()){
- if(attributeValue.getValue().toString().equalsIgnoreCase("Config")){
- count++;
- }
- }
- }
- }
- }
- if(count==2){
- config = true;
- }
- if(!config){
- search(stdResponse);
- }
- addResults(stdResponse, config , decide);
- LOGGER.info("Original Result is " + stdResponse.toString());
- LOGGER.info("Generated Result is " + addResult.toString());
- return newResponse;
- }
+ /**
+ * Generate {@link StdMutableResponse} based on input request.
+ *
+ * @param stdResponse the response
+ * @param pepRequest the request
+ * @return {@link StdMutableResponse}
+ */
+ public StdMutableResponse run(final StdMutableResponse stdResponse, final Request pepRequest) {
+ int count = 0;
+ boolean config = false;
+ boolean decide = false;
+ final Collection<RequestAttributes> requestAttributes = pepRequest.getRequestAttributes();
+ for (final RequestAttributes requestAttribute : requestAttributes) {
+ final Collection<Attribute> attributes = requestAttribute.getAttributes();
+ for (final Attribute attribute : attributes) {
+ if (attribute.getAttributeId().stringValue().equals("urn:oasis:names:tc:xacml:1.0:action:action-id")) {
+ for (final AttributeValue<?> attributeValue : attribute.getValues()) {
+ if (attributeValue.getValue().toString().equalsIgnoreCase("ACCESS")) {
+ count++;
+ }
+ if (attributeValue.getValue().toString().equalsIgnoreCase("DECIDE")) {
+ decide = true;
+ }
+ }
+ }
+ if (attribute.getAttributeId().stringValue()
+ .equals("urn:oasis:names:tc:xacml:1.0:resource:resource-id")) {
+ for (final AttributeValue<?> attributeValue : attribute.getValues()) {
+ if (attributeValue.getValue().toString().equalsIgnoreCase("Config")) {
+ count++;
+ }
+ }
+ }
+ }
+ }
+ if (count == 2) {
+ config = true;
+ }
+ if (!config) {
+ search(stdResponse);
+ }
+ addResults(stdResponse, config, decide);
+ logger.info("Original Result is " + stdResponse.toString());
+ logger.info("Generated Result is " + addResult.toString());
+ return newResponse;
+ }
- private Collection<Obligation> obligations = new ArrayList<>();
- private Map<String, String> matchValues = new HashMap<>();
- private Map<String, String> headers = new HashMap<>();
- private boolean header = false;
+ private Collection<Obligation> obligations = new ArrayList<>();
+ private Map<String, String> matchValues = new HashMap<>();
+ private Map<String, String> headers = new HashMap<>();
+ private boolean header = false;
- private void search(StdMutableResponse stdResponse) {
- for (Result result : stdResponse.getResults()) {
- if (!result.getObligations().isEmpty()) {
- System.out.println("Obligation Received");
- // Is there any action that PDP needs to take
- for (Obligation obligation : result.getObligations()) {
- int count = 0, uri = 0, PEP = 0;
- header = false;
- changeIt = false;
- Collection<AttributeAssignment> afterRemoveAssignments = new ArrayList<>();
- Identifier oblId = new IdentifierImpl(obligation.getId().stringValue());
- StdAttributeAssignment attributeURI = null;
- for (AttributeAssignment attribute : obligation.getAttributeAssignments()) {
- matchValues.put(attribute.getAttributeId().stringValue(), attribute.getAttributeValue().getValue().toString());
- if (attribute.getAttributeId().stringValue().equalsIgnoreCase("performer")) {
- if (attribute.getAttributeValue().getValue().toString().equalsIgnoreCase("PEPACTION")) {
- PEP++;
- } else if (attribute.getAttributeValue().getValue().toString().equalsIgnoreCase("PDPACTION")) {
- count++;
- }
- } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("URL")) {
- uri++;
- if (uri == 1) {
- configURL = attribute.getAttributeValue().getValue().toString();
- attributeURI = new StdAttributeAssignment(attribute);
- }
- } else if (attribute.getAttributeId().stringValue().startsWith("headers")) {
- LOGGER.info("Headers are : "+ attribute.getAttributeValue().getValue().toString());
- header = true;
- headers.put(attribute.getAttributeId().stringValue().replaceFirst("(headers).", ""),
- attribute.getAttributeValue().getValue().toString());
- afterRemoveAssignments.add(attribute);
- } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("body")) {
- String papPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
- papPath= papPath.replace("/pap", "");
- matchValues.put("body",attribute.getAttributeValue().getValue().toString().replace("$URL", papPath));
- }else {
- StdAttributeAssignment attributeObligation = new StdAttributeAssignment(attribute);
- afterRemoveAssignments.add(attributeObligation);
- }
- }
- if (count == 1 && uri == 1 && PEP == 0) {
- // Remove Obligation and add Advice
- changeIt = true;
- takeAction(stdResponse, oblId, afterRemoveAssignments);
- } else if (PEP == 1 && count == 0) {
- // Strip the PEPACTION if available
- if (uri == 1) {
- afterRemoveAssignments.add(attributeURI);
- }
- Obligation afterRemoveObligation = new StdObligation(
- oblId, afterRemoveAssignments);
- obligations.add(afterRemoveObligation);
- } else {
- obligations.add(obligation);
- }
- }
- }
- }
- }
+ private void search(final StdMutableResponse stdResponse) {
+ for (final Result result : stdResponse.getResults()) {
+ if (!result.getObligations().isEmpty()) {
+ System.out.println("Obligation Received");
+ // Is there any action that PDP needs to take
+ for (final Obligation obligation : result.getObligations()) {
+ int count = 0;
+ int uri = 0;
+ int pep = 0;
+ header = false;
+ changeIt = false;
+ final Collection<AttributeAssignment> afterRemoveAssignments = new ArrayList<>();
+ final Identifier oblId = new IdentifierImpl(obligation.getId().stringValue());
+ StdAttributeAssignment attributeUri = null;
+ for (final AttributeAssignment attribute : obligation.getAttributeAssignments()) {
+ matchValues.put(attribute.getAttributeId().stringValue(),
+ attribute.getAttributeValue().getValue().toString());
+ if (attribute.getAttributeId().stringValue().equalsIgnoreCase("performer")) {
+ if (attribute.getAttributeValue().getValue().toString().equalsIgnoreCase("PEPACTION")) {
+ pep++;
+ } else if (attribute.getAttributeValue().getValue().toString()
+ .equalsIgnoreCase("PDPACTION")) {
+ count++;
+ }
+ } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("URL")) {
+ uri++;
+ if (uri == 1) {
+ configUrl = attribute.getAttributeValue().getValue().toString();
+ attributeUri = new StdAttributeAssignment(attribute);
+ }
+ } else if (attribute.getAttributeId().stringValue().startsWith("headers")) {
+ logger.info("Headers are : " + attribute.getAttributeValue().getValue().toString());
+ header = true;
+ headers.put(attribute.getAttributeId().stringValue().replaceFirst("(headers).", ""),
+ attribute.getAttributeValue().getValue().toString());
+ afterRemoveAssignments.add(attribute);
+ } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("body")) {
+ String papPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
+ papPath = papPath.replace("/pap", "");
+ matchValues.put("body",
+ attribute.getAttributeValue().getValue().toString().replace("$URL", papPath));
+ } else {
+ final StdAttributeAssignment attributeObligation = new StdAttributeAssignment(attribute);
+ afterRemoveAssignments.add(attributeObligation);
+ }
+ }
+ if (count == 1 && uri == 1 && pep == 0) {
+ // Remove Obligation and add Advice
+ changeIt = true;
+ takeAction(stdResponse, oblId, afterRemoveAssignments);
+ } else if (pep == 1 && count == 0) {
+ // Strip the PEPACTION if available
+ if (uri == 1) {
+ afterRemoveAssignments.add(attributeUri);
+ }
+ final Obligation afterRemoveObligation = new StdObligation(oblId, afterRemoveAssignments);
+ obligations.add(afterRemoveObligation);
+ } else {
+ obligations.add(obligation);
+ }
+ }
+ }
+ }
+ }
- private void takeAction(StdMutableResponse stdResponse, Identifier advId,
- Collection<AttributeAssignment> afterRemoveAssignments) {
- if (changeIt) {
- LOGGER.info("the URL is :" + configURL);
- // Calling Rest URL..
- callRest();
- // Including the Results in an Advice
- Identifier id = new IdentifierImpl(
- "org.onap.policy:pdp:reply");
- Identifier statId = new IdentifierImpl(
- "org:onap:onap:policy:pdp:reply:status");
- Identifier statCategory = new IdentifierImpl(
- "urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject");
- Identifier strId = new IdentifierImpl(
- "http://www.w3.org/2001/XMLSchema#string");
- Identifier resId = new IdentifierImpl(
- "org:onap:onap:policy:pdp:reply:resource");
- Identifier resCategory = new IdentifierImpl(
- "urn:oasis:names:tc:xacml:3.0:attribute-category:resource");
- Identifier urlId = new IdentifierImpl(
- "http://www.w3.org/2001/XMLSchema#anyURI");
- AttributeValue<String> attributeStatusValue = new StdAttributeValue<>(
- strId, status + response);
- AttributeValue<String> attributeResourceValue = new StdAttributeValue<>(
- urlId, configURL);
- StdAttributeAssignment attributeStatus = new StdAttributeAssignment(
- statCategory, statId, "PDP", attributeStatusValue);
- StdAttributeAssignment attributeResouce = new StdAttributeAssignment(
- resCategory, resId, "PDP", attributeResourceValue);
- afterRemoveAssignments.add(attributeStatus);
- afterRemoveAssignments.add(attributeResouce);
- Advice advice = new StdAdvice(id, afterRemoveAssignments);
- addResult.addAdvice(advice);
- }
- }
+ private void takeAction(final StdMutableResponse stdResponse, final Identifier advId,
+ final Collection<AttributeAssignment> afterRemoveAssignments) {
+ if (changeIt) {
+ logger.info("the URL is :" + configUrl);
+ // Calling Rest URL..
+ callRest();
+ // Including the Results in an Advice
+ final Identifier id = new IdentifierImpl("org.onap.policy:pdp:reply");
+ final Identifier statId = new IdentifierImpl("org:onap:onap:policy:pdp:reply:status");
+ final Identifier statCategory =
+ new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject");
+ final Identifier strId = new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string");
+ final Identifier resId = new IdentifierImpl("org:onap:onap:policy:pdp:reply:resource");
+ final Identifier resCategory =
+ new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:resource");
+ final Identifier urlId = new IdentifierImpl("http://www.w3.org/2001/XMLSchema#anyURI");
+ final AttributeValue<String> attributeStatusValue = new StdAttributeValue<>(strId, status + response);
+ final AttributeValue<String> attributeResourceValue = new StdAttributeValue<>(urlId, configUrl);
+ final StdAttributeAssignment attributeStatus =
+ new StdAttributeAssignment(statCategory, statId, "PDP", attributeStatusValue);
+ final StdAttributeAssignment attributeResouce =
+ new StdAttributeAssignment(resCategory, resId, "PDP", attributeResourceValue);
+ afterRemoveAssignments.add(attributeStatus);
+ afterRemoveAssignments.add(attributeResouce);
+ final Advice advice = new StdAdvice(id, afterRemoveAssignments);
+ addResult.addAdvice(advice);
+ }
+ }
- private void addResults(StdMutableResponse stdResponse, boolean config, boolean decide) {
- if(decide){
- newResponse = stdResponse;
- return;
- }
- for (Result result : stdResponse.getResults()) {
- if(config){
- addResult.addAdvice(result.getAssociatedAdvice());
- }
- addResult.addAttributeCategories(result.getAttributes());
- addResult.addPolicyIdentifiers(result.getPolicyIdentifiers());
- addResult.addPolicySetIdentifiers(result.getPolicySetIdentifiers());
- addResult.setStatus(result.getStatus());
- addResult.setDecision(result.getDecision());
- if(!config){
- addResult.addObligations(obligations);
- }
- }
- newResponse.add(addResult);
- }
+ private void addResults(final StdMutableResponse stdResponse, final boolean config, final boolean decide) {
+ if (decide) {
+ newResponse = stdResponse;
+ return;
+ }
+ for (final Result result : stdResponse.getResults()) {
+ if (config) {
+ addResult.addAdvice(result.getAssociatedAdvice());
+ }
+ addResult.addAttributeCategories(result.getAttributes());
+ addResult.addPolicyIdentifiers(result.getPolicyIdentifiers());
+ addResult.addPolicySetIdentifiers(result.getPolicySetIdentifiers());
+ addResult.setStatus(result.getStatus());
+ addResult.setDecision(result.getDecision());
+ if (!config) {
+ addResult.addObligations(obligations);
+ }
+ }
+ newResponse.add(addResult);
+ }
- private int status;
- private String response;
- private DefaultHttpClient httpClient;
+ private int status;
+ private String response;
+ private DefaultHttpClient httpClient;
- private void callRest() {
- // Finding the Macros in the URL..
- Pattern pattern = Pattern.compile("\\$([a-zA-Z0-9.:]*)");
- Matcher match = pattern.matcher(configURL);
- StringBuffer sb = new StringBuffer();
- JsonReader jsonReader = null;
- while (match.find()) {
- LOGGER.info("Found Macro : " + match.group(1));
- String replaceValue = matchValues.get(match.group(1));
- LOGGER.info("Replacing with :" + replaceValue);
- match.appendReplacement(sb, replaceValue);
- }
- match.appendTail(sb);
- LOGGER.info("URL is : " + sb.toString());
- configURL = sb.toString();
- // Calling the Requested service.
- if (matchValues.get("method").equalsIgnoreCase("GET")) {
- httpClient = new DefaultHttpClient();
- try {
- HttpGet getRequest = new HttpGet(configURL);
- // Adding Headers here
- if (header) {
- for (String key : headers.keySet()) {
- getRequest.addHeader(key, headers.get(key));
- }
- }
- HttpResponse result = httpClient.execute(getRequest);
- status = result.getStatusLine().getStatusCode();
- BufferedReader br = new BufferedReader(new InputStreamReader(
- (result.getEntity().getContent())));
- String output = " ";
- String out;
- while ((out = br.readLine()) != null) {
- output = output + out;
- }
- response = output;
- } catch (Exception e) {
- LOGGER.error(e.getMessage()+e);
- response = e.getMessage();
- } finally {
- httpClient.getConnectionManager().shutdown();
- }
- } else if(matchValues.get("method").equalsIgnoreCase("POST")) {
- httpClient = new DefaultHttpClient();
- try {
- HttpPost postRequest = new HttpPost(configURL);
- // Adding Headers here
- if (header) {
- for (String key : headers.keySet()) {
- postRequest.addHeader(key, headers.get(key));
- }
- }
- // Adding the Body.
- URL configURL = new URL(matchValues.get("body"));
- URLConnection connection = null;
- connection = configURL.openConnection();
- // InputStream in = connection.getInputStrem();
- // LOGGER.info("The Body Content is : " + IOUtils.toString(in));
- jsonReader = Json.createReader(connection.getInputStream());
- StringEntity input = new StringEntity(jsonReader.readObject().toString());
- input.setContentType("application/json");
- postRequest.setEntity(input);
- // Executing the Request.
- HttpResponse result = httpClient.execute(postRequest);
- LOGGER.info("Result Headers are : " + result.getAllHeaders());
- status = result.getStatusLine().getStatusCode();
- BufferedReader br = new BufferedReader(new InputStreamReader(
- (result.getEntity().getContent())));
- String output = " ";
- String out;
- while ((out = br.readLine()) != null) {
- output = output + out;
- }
- response = output;
- }catch (Exception e) {
- LOGGER.error(e.getMessage() +e);
- response = e.getMessage();
- } finally {
- if(jsonReader != null) {
- try {
- jsonReader.close();
- } catch (Exception e) {
- LOGGER.error("Exception Occured while closing the JsonReader"+e);
- }
- }
- httpClient.getConnectionManager().shutdown();
- }
- } else if(matchValues.get("method").equalsIgnoreCase("PUT")) {
- httpClient = new DefaultHttpClient();
- try {
- HttpPut putRequest = new HttpPut(configURL);
- // Adding Headers here
- if (header) {
- for (String key : headers.keySet()) {
- putRequest.addHeader(key, headers.get(key));
- }
- }
- // Adding the Body.
- URL configURL = new URL(matchValues.get("body"));
- URLConnection connection = null;
- connection = configURL.openConnection();
- //InputStream in = connection.getInputStream();
- //LOGGER.info("The Body Content is : " + IOUtils.toString(in));
- jsonReader = Json.createReader(connection.getInputStream());
- StringEntity input = new StringEntity(jsonReader.readObject().toString());
- input.setContentType("application/json");
- putRequest.setEntity(input);
- // Executing the Request.
- HttpResponse result = httpClient.execute(putRequest);
- status = result.getStatusLine().getStatusCode();
- BufferedReader br = new BufferedReader(new InputStreamReader(
- (result.getEntity().getContent())));
- String output = " ";
- String out;
- while ((out = br.readLine()) != null) {
- output = output + out;
- }
- response = output;
- } catch (Exception e) {
- LOGGER.error(e.getMessage() +e);
- response = e.getMessage();
- }finally {
- if(jsonReader != null) {
- try {
- jsonReader.close();
- } catch (Exception e) {
- LOGGER.error("Exception Occured while closing the JsonReader"+e);
- }
- }
- httpClient.getConnectionManager().shutdown();
- }
- }
- }
-}
\ No newline at end of file
+ private void callRest() {
+ // Finding the Macros in the URL..
+ final Pattern pattern = Pattern.compile("\\$([a-zA-Z0-9.:]*)");
+ final Matcher match = pattern.matcher(configUrl);
+ final StringBuffer sb = new StringBuffer();
+ JsonReader jsonReader = null;
+ while (match.find()) {
+ logger.info("Found Macro : " + match.group(1));
+ final String replaceValue = matchValues.get(match.group(1));
+ logger.info("Replacing with :" + replaceValue);
+ match.appendReplacement(sb, replaceValue);
+ }
+ match.appendTail(sb);
+ logger.info("URL is : " + sb.toString());
+ configUrl = sb.toString();
+ // Calling the Requested service.
+ if (matchValues.get("method").equalsIgnoreCase("GET")) {
+ httpClient = new DefaultHttpClient();
+ try {
+ final HttpGet getRequest = new HttpGet(configUrl);
+ // Adding Headers here
+ if (header) {
+ for (final String key : headers.keySet()) {
+ getRequest.addHeader(key, headers.get(key));
+ }
+ }
+ final HttpResponse result = httpClient.execute(getRequest);
+ status = result.getStatusLine().getStatusCode();
+ final BufferedReader br = new BufferedReader(new InputStreamReader((result.getEntity().getContent())));
+ String output = " ";
+ String out;
+ while ((out = br.readLine()) != null) {
+ output = output + out;
+ }
+ response = output;
+ } catch (final Exception e) {
+ logger.error(e.getMessage() + e);
+ response = e.getMessage();
+ } finally {
+ httpClient.getConnectionManager().shutdown();
+ }
+ } else if (matchValues.get("method").equalsIgnoreCase("POST")) {
+ httpClient = new DefaultHttpClient();
+ try {
+ final HttpPost postRequest = new HttpPost(configUrl);
+ // Adding Headers here
+ if (header) {
+ for (final String key : headers.keySet()) {
+ postRequest.addHeader(key, headers.get(key));
+ }
+ }
+ // Adding the Body.
+ final URL configUrl = new URL(matchValues.get("body"));
+ URLConnection connection = null;
+ connection = configUrl.openConnection();
+ // InputStream in = connection.getInputStrem();
+ // LOGGER.info("The Body Content is : " + IOUtils.toString(in));
+ jsonReader = Json.createReader(connection.getInputStream());
+ final StringEntity input = new StringEntity(jsonReader.readObject().toString());
+ input.setContentType("application/json");
+ postRequest.setEntity(input);
+ // Executing the Request.
+ final HttpResponse result = httpClient.execute(postRequest);
+ logger.info("Result Headers are : " + result.getAllHeaders());
+ status = result.getStatusLine().getStatusCode();
+ final BufferedReader br = new BufferedReader(new InputStreamReader((result.getEntity().getContent())));
+ String output = " ";
+ String out;
+ while ((out = br.readLine()) != null) {
+ output = output + out;
+ }
+ response = output;
+ } catch (final Exception e) {
+ logger.error(e.getMessage() + e);
+ response = e.getMessage();
+ } finally {
+ if (jsonReader != null) {
+ try {
+ jsonReader.close();
+ } catch (final Exception e) {
+ logger.error("Exception Occured while closing the JsonReader" + e);
+ }
+ }
+ httpClient.getConnectionManager().shutdown();
+ }
+ } else if (matchValues.get("method").equalsIgnoreCase("PUT")) {
+ httpClient = new DefaultHttpClient();
+ try {
+ final HttpPut putRequest = new HttpPut(configUrl);
+ // Adding Headers here
+ if (header) {
+ for (final String key : headers.keySet()) {
+ putRequest.addHeader(key, headers.get(key));
+ }
+ }
+ // Adding the Body.
+ final URL configUrl = new URL(matchValues.get("body"));
+ URLConnection connection = null;
+ connection = configUrl.openConnection();
+ // InputStream in = connection.getInputStream();
+ // LOGGER.info("The Body Content is : " + IOUtils.toString(in));
+ jsonReader = Json.createReader(connection.getInputStream());
+ final StringEntity input = new StringEntity(jsonReader.readObject().toString());
+ input.setContentType("application/json");
+ putRequest.setEntity(input);
+ // Executing the Request.
+ final HttpResponse result = httpClient.execute(putRequest);
+ status = result.getStatusLine().getStatusCode();
+ final BufferedReader br = new BufferedReader(new InputStreamReader((result.getEntity().getContent())));
+ String output = " ";
+ String out;
+ while ((out = br.readLine()) != null) {
+ output = output + out;
+ }
+ response = output;
+ } catch (final Exception e) {
+ logger.error(e.getMessage() + e);
+ response = e.getMessage();
+ } finally {
+ if (jsonReader != null) {
+ try {
+ jsonReader.close();
+ } catch (final Exception e) {
+ logger.error("Exception Occured while closing the JsonReader" + e);
+ }
+ }
+ httpClient.getConnectionManager().shutdown();
+ }
+ }
+ }
+}
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/package-info.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/package-info.java
index 82c6182..b4fd050 100644
--- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/package-info.java
+++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/action/package-info.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* ONAP-PDP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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.
@@ -21,10 +21,9 @@
package org.onap.policy.xacml.action;
/**
- * org.onap.policy.xacml.action contains the implementation of the PDP Actions.
- * Changes:
- * Now PDP supports actions based on PUT, GET, POST methods
- *
- * @version 0.2
- *
+ * org.onap.policy.xacml.action contains the implementation of the PDP Actions. Changes: Now PDP supports actions based
+ * on PUT, GET, POST methods
+ *
+ * @version 0.2
+ *
*/
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java
index ea4e90e..35080d3 100644
--- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java
+++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* ONAP-PDP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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.
@@ -17,8 +17,16 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.xacml.custom;
+import com.att.research.xacml.api.Identifier;
+import com.att.research.xacml.std.IdentifierImpl;
+import com.att.research.xacml.std.datatypes.DataTypes;
+import com.att.research.xacmlatt.pdp.policy.FunctionDefinition;
+import com.att.research.xacmlatt.pdp.policy.FunctionDefinitionFactory;
+import com.att.research.xacmlatt.pdp.std.StdFunctions;
+
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
@@ -28,60 +36,53 @@
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.xacml.pdp.std.functions.FunctionDefinitionCustomRegexpMatch;
-import com.att.research.xacml.api.Identifier;
-import com.att.research.xacml.std.IdentifierImpl;
-import com.att.research.xacml.std.datatypes.DataTypes;
-import com.att.research.xacmlatt.pdp.policy.FunctionDefinition;
-import com.att.research.xacmlatt.pdp.policy.FunctionDefinitionFactory;
-import com.att.research.xacmlatt.pdp.std.StdFunctions;
-
public class OnapFunctionDefinitionFactory extends FunctionDefinitionFactory {
- private static Logger logger = FlexLogger.getLogger(OnapFunctionDefinitionFactory.class);
- private static Map<Identifier,FunctionDefinition> mapFunctionDefinitions = new HashMap<>();
- private static boolean needMapInit = true;
+ private static Logger logger = FlexLogger.getLogger(OnapFunctionDefinitionFactory.class);
+ private static Map<Identifier, FunctionDefinition> mapFunctionDefinitions = new HashMap<>();
+ private static boolean needMapInit = true;
- public static final Identifier ID_FUNCTION_CUSTOM_REGEXP_MATCH = new IdentifierImpl("org.onap.function.regex-match");
-
- private static final FunctionDefinition FD_CUSTOM_REGEXP_MATCH = new FunctionDefinitionCustomRegexpMatch<>(ID_FUNCTION_CUSTOM_REGEXP_MATCH, DataTypes.DT_STRING);
+ public static final Identifier ID_FUNCTION_CUSTOM_REGEXP_MATCH =
+ new IdentifierImpl("org.onap.function.regex-match");
- private static void register(FunctionDefinition functionDefinition) {
- mapFunctionDefinitions.put(functionDefinition.getId(), functionDefinition);
- }
-
- private static void initMap() {
+ private static final FunctionDefinition FD_CUSTOM_REGEXP_MATCH =
+ new FunctionDefinitionCustomRegexpMatch<>(ID_FUNCTION_CUSTOM_REGEXP_MATCH, DataTypes.DT_STRING);
- synchronized(mapFunctionDefinitions) {
- if (needMapInit) {
- needMapInit = false;
- Field[] declaredFields = StdFunctions.class.getDeclaredFields();
- for (Field field : declaredFields) {
- if (Modifier.isStatic(field.getModifiers()) &&
- field.getName().startsWith(StdFunctions.FD_PREFIX) &&
- FunctionDefinition.class.isAssignableFrom(field.getType()) &&
- Modifier.isPublic(field.getModifiers())
- ) {
- try {
- register((FunctionDefinition)(field.get(null)));
- } catch (IllegalAccessException ex) {
- logger.error(ex.getMessage() +ex);
- }
- }
- }
- //
- // Our custom function
- //
- //register(FunctionDefinitionCustomRegexpMatch);
- register(FD_CUSTOM_REGEXP_MATCH);
- }
- }
- }
-
- public OnapFunctionDefinitionFactory() {
- initMap();
- }
+ private static void register(final FunctionDefinition functionDefinition) {
+ mapFunctionDefinitions.put(functionDefinition.getId(), functionDefinition);
+ }
- @Override
- public FunctionDefinition getFunctionDefinition(Identifier functionId) {
- return mapFunctionDefinitions.get(functionId);
- }
+ private static void initMap() {
+
+ synchronized (mapFunctionDefinitions) {
+ if (needMapInit) {
+ needMapInit = false;
+ final Field[] declaredFields = StdFunctions.class.getDeclaredFields();
+ for (final Field field : declaredFields) {
+ if (Modifier.isStatic(field.getModifiers()) && field.getName().startsWith(StdFunctions.FD_PREFIX)
+ && FunctionDefinition.class.isAssignableFrom(field.getType())
+ && Modifier.isPublic(field.getModifiers())) {
+ try {
+ register((FunctionDefinition) (field.get(null)));
+ } catch (final IllegalAccessException ex) {
+ logger.error(ex.getMessage() + ex);
+ }
+ }
+ }
+ //
+ // Our custom function
+ //
+ // register(FunctionDefinitionCustomRegexpMatch);
+ register(FD_CUSTOM_REGEXP_MATCH);
+ }
+ }
+ }
+
+ public OnapFunctionDefinitionFactory() {
+ initMap();
+ }
+
+ @Override
+ public FunctionDefinition getFunctionDefinition(final Identifier functionId) {
+ return mapFunctionDefinitions.get(functionId);
+ }
}
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/ONAPPDPEngine.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/ONAPPDPEngine.java
deleted file mode 100644
index fb90d0a..0000000
--- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/ONAPPDPEngine.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP-PDP
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
- */
-package org.onap.policy.xacml.pdp;
-
-import java.util.Properties;
-
-import org.onap.policy.xacml.action.FindAction;
-
-import com.att.research.xacml.api.Decision;
-import com.att.research.xacml.api.Request;
-import com.att.research.xacml.api.Response;
-import com.att.research.xacml.api.pdp.PDPException;
-import com.att.research.xacml.api.pdp.ScopeResolver;
-import com.att.research.xacml.std.StdMutableResponse;
-import com.att.research.xacmlatt.pdp.ATTPDPEngine;
-import com.att.research.xacmlatt.pdp.eval.EvaluationContextFactory;
-
-public class ONAPPDPEngine extends ATTPDPEngine {
-
- public ONAPPDPEngine(EvaluationContextFactory evaluationContextFactoryIn, Decision defaultDecisionIn,
- ScopeResolver scopeResolverIn, Properties properties) {
- super(evaluationContextFactoryIn, defaultDecisionIn, scopeResolverIn, properties);
- }
-
- public ONAPPDPEngine(EvaluationContextFactory evaluationContextFactoryIn, Decision defaultDecisionIn,
- ScopeResolver scopeResolverIn) {
- super(evaluationContextFactoryIn, defaultDecisionIn, scopeResolverIn);
- }
-
- public ONAPPDPEngine(EvaluationContextFactory evaluationContextFactoryIn, ScopeResolver scopeResolverIn) {
- super(evaluationContextFactoryIn, scopeResolverIn);
- }
-
- @Override
- public Response decide(Request pepRequest) throws PDPException {
- Response response = super.decide(pepRequest);
-
- FindAction findAction = new FindAction();
- return findAction.run((StdMutableResponse) response, pepRequest);
- }
-
-
-}
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/ONAPPDPEngineFactory.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/ONAPPDPEngineFactory.java
deleted file mode 100644
index 2e796bf..0000000
--- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/ONAPPDPEngineFactory.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP-PDP
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
- */
-package org.onap.policy.xacml.pdp;
-
-import java.util.Properties;
-
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
-import com.att.research.xacml.api.pdp.PDPEngine;
-import com.att.research.xacml.api.pdp.PDPEngineFactory;
-import com.att.research.xacml.util.FactoryException;
-import com.att.research.xacmlatt.pdp.eval.EvaluationContextFactory;
-
-public class ONAPPDPEngineFactory extends PDPEngineFactory {
- private Logger logger = FlexLogger.getLogger(this.getClass());
-
- @Override
- public PDPEngine newEngine() throws FactoryException {
- EvaluationContextFactory evaluationContextFactory = EvaluationContextFactory.newInstance();
- if (evaluationContextFactory == null) {
- this.logger.error("Null EvaluationContextFactory");
- throw new FactoryException("Null EvaluationContextFactory");
- }
- return new ONAPPDPEngine(evaluationContextFactory, this.getDefaultBehavior(), this.getScopeResolver());
- }
-
- @Override
- public PDPEngine newEngine(Properties properties) throws FactoryException {
- EvaluationContextFactory evaluationContextFactory = EvaluationContextFactory.newInstance(properties);
- if (evaluationContextFactory == null) {
- this.logger.error("Null EvaluationContextFactory");
- throw new FactoryException("Null EvaluationContextFactory");
- }
- return new ONAPPDPEngine(evaluationContextFactory, this.getDefaultBehavior(), this.getScopeResolver(), properties);
- }
-
-}
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/OnapPdpEngine.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/OnapPdpEngine.java
new file mode 100644
index 0000000..42ab7e4
--- /dev/null
+++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/OnapPdpEngine.java
@@ -0,0 +1,62 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-PDP
+ * ================================================================================
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.xacml.pdp;
+
+import com.att.research.xacml.api.Decision;
+import com.att.research.xacml.api.Request;
+import com.att.research.xacml.api.Response;
+import com.att.research.xacml.api.pdp.PDPException;
+import com.att.research.xacml.api.pdp.ScopeResolver;
+import com.att.research.xacml.std.StdMutableResponse;
+import com.att.research.xacmlatt.pdp.ATTPDPEngine;
+import com.att.research.xacmlatt.pdp.eval.EvaluationContextFactory;
+
+import java.util.Properties;
+
+import org.onap.policy.xacml.action.FindAction;
+
+public class OnapPdpEngine extends ATTPDPEngine {
+
+ public OnapPdpEngine(final EvaluationContextFactory evaluationContextFactoryIn, final Decision defaultDecisionIn,
+ final ScopeResolver scopeResolverIn, final Properties properties) {
+ super(evaluationContextFactoryIn, defaultDecisionIn, scopeResolverIn, properties);
+ }
+
+ public OnapPdpEngine(final EvaluationContextFactory evaluationContextFactoryIn, final Decision defaultDecisionIn,
+ final ScopeResolver scopeResolverIn) {
+ super(evaluationContextFactoryIn, defaultDecisionIn, scopeResolverIn);
+ }
+
+ public OnapPdpEngine(final EvaluationContextFactory evaluationContextFactoryIn,
+ final ScopeResolver scopeResolverIn) {
+ super(evaluationContextFactoryIn, scopeResolverIn);
+ }
+
+ @Override
+ public Response decide(final Request pepRequest) throws PDPException {
+ final Response response = super.decide(pepRequest);
+
+ final FindAction findAction = new FindAction();
+ return findAction.run((StdMutableResponse) response, pepRequest);
+ }
+
+
+}
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/OnapPdpEngineFactory.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/OnapPdpEngineFactory.java
new file mode 100644
index 0000000..c19c401
--- /dev/null
+++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/OnapPdpEngineFactory.java
@@ -0,0 +1,57 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-PDP
+ * ================================================================================
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.xacml.pdp;
+
+import com.att.research.xacml.api.pdp.PDPEngine;
+import com.att.research.xacml.api.pdp.PDPEngineFactory;
+import com.att.research.xacml.util.FactoryException;
+import com.att.research.xacmlatt.pdp.eval.EvaluationContextFactory;
+
+import java.util.Properties;
+
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+
+public class OnapPdpEngineFactory extends PDPEngineFactory {
+ private Logger logger = FlexLogger.getLogger(this.getClass());
+
+ @Override
+ public PDPEngine newEngine() throws FactoryException {
+ final EvaluationContextFactory evaluationContextFactory = EvaluationContextFactory.newInstance();
+ if (evaluationContextFactory == null) {
+ this.logger.error("Null EvaluationContextFactory");
+ throw new FactoryException("Null EvaluationContextFactory");
+ }
+ return new OnapPdpEngine(evaluationContextFactory, this.getDefaultBehavior(), this.getScopeResolver());
+ }
+
+ @Override
+ public PDPEngine newEngine(final Properties properties) throws FactoryException {
+ final EvaluationContextFactory evaluationContextFactory = EvaluationContextFactory.newInstance(properties);
+ if (evaluationContextFactory == null) {
+ this.logger.error("Null EvaluationContextFactory");
+ throw new FactoryException("Null EvaluationContextFactory");
+ }
+ return new OnapPdpEngine(evaluationContextFactory, this.getDefaultBehavior(), this.getScopeResolver(),
+ properties);
+ }
+
+}
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatch.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatch.java
index 590d519..a8b0e9d 100644
--- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatch.java
+++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatch.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* ONAP-PDP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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.
@@ -17,14 +17,9 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.xacml.pdp.std.functions;
-
-import java.util.List;
-
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
-
import com.att.research.xacml.api.DataType;
import com.att.research.xacml.api.DataTypeException;
import com.att.research.xacml.api.Identifier;
@@ -37,94 +32,104 @@
import com.att.research.xacmlatt.pdp.std.functions.ConvertedArgument;
import com.att.research.xacmlatt.pdp.std.functions.FunctionDefinitionBase;
+import java.util.List;
+
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+
/**
* FunctionDefinitionCustomRegexMatch implements {@link com.att.research.xacmlatt.pdp.policy.FunctionDefinition} to
- * implement the custom 'type'-regex-match predicates as functions taking two arguments, the first of <code>String</code>,
- * and the second of the type for that specific predicate as a regular expression,
- * and returning a <code>Boolean</code> for whether the regular expression matches the string representation of the first argument.
- *
- *
+ * implement the custom 'type'-regex-match predicates as functions taking two arguments, the first of
+ * <code>String</code>, and the second of the type for that specific predicate as a regular expression, and returning a
+ * <code>Boolean</code> for whether the regular expression matches the string representation of the first argument.
+ *
+ *
* @version $Revision: 0.2 $
- *
+ *
* @param <I> the java class for the data type of the function Input arguments
*/
public class FunctionDefinitionCustomRegexpMatch<I> extends FunctionDefinitionBase<Boolean, I> {
- private static Logger logger = FlexLogger.getLogger(FunctionDefinitionCustomRegexpMatch.class);
-
- /**
- * Constructor - need dataTypeArgs input because of java Generic type-erasure during compilation.
- *
- * @param idIn
- * @param dataTypeArgsIn
- */
- public FunctionDefinitionCustomRegexpMatch(Identifier idIn, DataType<I> dataTypeArgsIn) {
- super(idIn, DataTypes.DT_BOOLEAN, dataTypeArgsIn, false);
- }
+ private static Logger logger = FlexLogger.getLogger(FunctionDefinitionCustomRegexpMatch.class);
+
+ /**
+ * Constructor - need dataTypeArgs input because of java Generic type-erasure during compilation.
+ *
+ * @param idIn the identifier
+ * @param dataTypeArgsIn the data type
+ */
+ public FunctionDefinitionCustomRegexpMatch(final Identifier idIn, final DataType<I> dataTypeArgsIn) {
+ super(idIn, DataTypes.DT_BOOLEAN, dataTypeArgsIn, false);
+ }
- @Override
- public ExpressionResult evaluate(EvaluationContext evaluationContext, List<FunctionArgument> arguments) {
+ @Override
+ public ExpressionResult evaluate(final EvaluationContext evaluationContext,
+ final List<FunctionArgument> arguments) {
- if (arguments == null || arguments.size() != 2) {
- return ExpressionResult.newError(new StdStatus(StdStatusCode.STATUS_CODE_PROCESSING_ERROR, this.getShortFunctionId() + " Expected 2 arguments, got " +
- ((arguments == null) ? "null" : arguments.size()) ));
- }
-
- // get the regular expression
- FunctionArgument regexpArgument = arguments.get(0);
+ if (arguments == null || arguments.size() != 2) {
+ return ExpressionResult
+ .newError(new StdStatus(StdStatusCode.STATUS_CODE_PROCESSING_ERROR, this.getShortFunctionId()
+ + " Expected 2 arguments, got " + ((arguments == null) ? "null" : arguments.size())));
+ }
- ConvertedArgument<String> convertedArgument = new ConvertedArgument<>(regexpArgument, DataTypes.DT_STRING, false);
- if ( ! convertedArgument.isOk()) {
- return ExpressionResult.newError(getFunctionStatus(convertedArgument.getStatus()));
- }
-
- // String regexpValue = (String)regexpArgument.getValue().getValue();
- String regexpValue = convertedArgument.getValue();
+ // get the regular expression
+ final FunctionArgument regexpArgument = arguments.get(0);
-
- // now get the element to match
- FunctionArgument elementArgument = arguments.get(1);
-
- ConvertedArgument<I> convertedElement = new ConvertedArgument<>(elementArgument, this.getDataTypeArgs(), false);
- if ( ! convertedElement.isOk()) {
- return ExpressionResult.newError(getFunctionStatus(convertedElement.getStatus()));
- }
-
- I elementValueObject = convertedElement.getValue();
+ final ConvertedArgument<String> convertedArgument =
+ new ConvertedArgument<>(regexpArgument, DataTypes.DT_STRING, false);
+ if (!convertedArgument.isOk()) {
+ return ExpressionResult.newError(getFunctionStatus(convertedArgument.getStatus()));
+ }
- String elementValueString;
- try {
- elementValueString = this.getDataTypeArgs().toStringValue(elementValueObject);
- } catch (DataTypeException e) {
- logger.error(e.getMessage() +e);
- String message = e.getMessage();
- if (e.getCause() != null) {
- message = e.getCause().getMessage();
- }
- return ExpressionResult.newError(new StdStatus(StdStatusCode.STATUS_CODE_PROCESSING_ERROR, this.getShortFunctionId() + " " + message));
- }
-
- // ConvertedArgument checks for null value, so do not need to do again here
-
- // Adding this code will Change the Functionality which allows to retrieve Multiple-policy using single request.
- elementValueString = elementValueString + regexpValue ;
- regexpValue = elementValueString.substring(0,(elementValueString.length()- regexpValue.length()));
- elementValueString = elementValueString.substring(regexpValue.length(),(elementValueString.length()));
- //
- // Supporting multiple values in the element and be able to query them.
- if(elementValueString.contains(",")){
- String[] elements = elementValueString.split(",");
- for(int i=0; i<elements.length; i++){
- if(elements[i].trim().matches(regexpValue)) {
- return ER_TRUE;
- }
- }
- }
- if (elementValueString.matches(regexpValue)) {
- return ER_TRUE;
- } else {
- return ER_FALSE;
- }
+ // String regexpValue = (String)regexpArgument.getValue().getValue();
+ String regexpValue = convertedArgument.getValue();
- }
+
+ // now get the element to match
+ final FunctionArgument elementArgument = arguments.get(1);
+
+ final ConvertedArgument<I> convertedElement =
+ new ConvertedArgument<>(elementArgument, this.getDataTypeArgs(), false);
+ if (!convertedElement.isOk()) {
+ return ExpressionResult.newError(getFunctionStatus(convertedElement.getStatus()));
+ }
+
+ final I elementValueObject = convertedElement.getValue();
+
+ String elementValueString;
+ try {
+ elementValueString = this.getDataTypeArgs().toStringValue(elementValueObject);
+ } catch (final DataTypeException e) {
+ logger.error(e.getMessage() + e);
+ String message = e.getMessage();
+ if (e.getCause() != null) {
+ message = e.getCause().getMessage();
+ }
+ return ExpressionResult.newError(new StdStatus(StdStatusCode.STATUS_CODE_PROCESSING_ERROR,
+ this.getShortFunctionId() + " " + message));
+ }
+
+ // ConvertedArgument checks for null value, so do not need to do again here
+
+ // Adding this code will Change the Functionality which allows to retrieve Multiple-policy using single request.
+ elementValueString = elementValueString + regexpValue;
+ regexpValue = elementValueString.substring(0, (elementValueString.length() - regexpValue.length()));
+ elementValueString = elementValueString.substring(regexpValue.length(), (elementValueString.length()));
+ //
+ // Supporting multiple values in the element and be able to query them.
+ if (elementValueString.contains(",")) {
+ final String[] elements = elementValueString.split(",");
+ for (int i = 0; i < elements.length; i++) {
+ if (elements[i].trim().matches(regexpValue)) {
+ return ER_TRUE;
+ }
+ }
+ }
+ if (elementValueString.matches(regexpValue)) {
+ return ER_TRUE;
+ } else {
+ return ER_FALSE;
+ }
+
+ }
}
diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/PolicyList.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/PolicyList.java
index 794276f..13b517d 100644
--- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/PolicyList.java
+++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/pdp/std/functions/PolicyList.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* ONAP-PDP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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.
@@ -17,33 +17,43 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.xacml.pdp.std.functions;
import java.util.ArrayList;
import java.util.List;
+
/**
* Creates a list of policy ids.
- *
+ *
* @version $Revision: 1.3 $
*/
public class PolicyList {
-
- private static List<String> policyList = new ArrayList<>();
-
-
- public static List<String> getpolicyList(){
- return policyList;
- }
- public static void addPolicyID(String policyID){
- if (!policyList.contains(policyID)){
- policyList.add(policyID);
- }
- }
-
- public static void clearPolicyList(){
- if (!policyList.isEmpty()){
- policyList.clear();
- }
- }
+ private static List<String> policyList = new ArrayList<>();
+
+
+ public static List<String> getpolicyList() {
+ return policyList;
+ }
+
+ /**
+ * Add policy id in the policy list.
+ *
+ * @param policyId the policy id
+ */
+ public static void addPolicyId(final String policyId) {
+ if (!policyList.contains(policyId)) {
+ policyList.add(policyId);
+ }
+ }
+
+ /**
+ * Clear policy list.
+ */
+ public static void clearPolicyList() {
+ if (!policyList.isEmpty()) {
+ policyList.clear();
+ }
+ }
}
diff --git a/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/DummyRest.java b/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/DummyRest.java
index 7a7fe54..1a6866c 100644
--- a/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/DummyRest.java
+++ b/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/DummyRest.java
@@ -7,9 +7,9 @@
* 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.
@@ -25,13 +25,13 @@
@Path("/")
public class DummyRest {
-
- @GET
- @Path("/foobar")
- public String subscribe() {
- return "{\"Foo\":\"bar\"}";
- }
-
+ @GET
+ @Path("/foobar")
+ public String subscribe() {
+
+ return "{\"Foo\":\"bar\"}";
+ }
+
}
diff --git a/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/FindActionTest.java b/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/FindActionTest.java
index 2a36fa2..f8a5e4b 100644
--- a/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/FindActionTest.java
+++ b/ONAP-PDP/src/test/java/org/onap/policy/xacml/action/FindActionTest.java
@@ -7,9 +7,9 @@
* 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.
@@ -17,16 +17,12 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.xacml.action;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.xacml.custom.OnapFunctionDefinitionFactory;
import com.att.research.xacml.api.Decision;
import com.att.research.xacml.api.Request;
import com.att.research.xacml.api.XACML3;
@@ -45,229 +41,196 @@
import com.att.research.xacml.std.json.JSONRequest;
import com.att.research.xacml.util.XACMLProperties;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
import org.onap.policy.drools.http.server.HttpServletServer;
import org.onap.policy.drools.utils.NetworkUtil;
+import org.onap.policy.xacml.custom.OnapFunctionDefinitionFactory;
public class FindActionTest {
-
- String xPathExampleFromSpec = "{ " +
- "\"Request\" : { " +
- "\"Resource\" : { " +
- "\"Attribute\": [ " +
- "{ " +
- "\"Id\" : \"urn:oasis:names:tc:xacml:3.0:content-selector\", " +
- "\"DataType\" : \"xpathExpression\", " +
- "\"Value\" : { " +
- "\"XPathCategory\" : \"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\", " +
- "\"Namespaces\" : [{ " +
- "\"Namespace\" : \"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" " +
- "}, " +
- "{ " +
- "\"Prefix\" : \"md\", " +
- "\"Namespace\" : \"urn:example:med:schemas:record\" " +
- "} " +
- "], " +
- "\"XPath\" : \"md:record/md:patient/md:patientDoB\" " +
- "} " +
- "} " +
- "] " +
- "} " +
- "} " +
- "} ";
-
- String jsonResponse;
- Request request;
- private static final int MOCK_SERVER_PORT = 6670;
-
- @BeforeClass
- public static void setUpServer() {
+ String xpathexamplefromspec = "{ " + "\"Request\" : { " + "\"Resource\" : { " + "\"Attribute\": [ " + "{ "
+ + "\"Id\" : \"urn:oasis:names:tc:xacml:3.0:content-selector\", " + "\"DataType\" : \"xpathExpression\", "
+ + "\"Value\" : { " + "\"XPathCategory\" : \"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\", "
+ + "\"Namespaces\" : [{ " + "\"Namespace\" : \"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" " + "}, "
+ + "{ " + "\"Prefix\" : \"md\", " + "\"Namespace\" : \"urn:example:med:schemas:record\" " + "} " + "], "
+ + "\"XPath\" : \"md:record/md:patient/md:patientDoB\" " + "} " + "} " + "] " + "} " + "} " + "} ";
+
+ String jsonResponse;
+ Request request;
+ private static final int MOCK_SERVER_PORT = 6670;
+
+ /**
+ * Setup server before test class.
+ */
+ @BeforeClass
+ public static void setUpServer() {
try {
- final HttpServletServer testServer = HttpServletServer.factory.build("dmaapSim",
- "localhost", MOCK_SERVER_PORT, "/", false, true);
- testServer.addServletClass("/*", DummyRest.class.getName());
- testServer.waitedStart(2000);
- if (!NetworkUtil.isTcpPortOpen("localhost", testServer.getPort(), 5, 10000L))
- throw new IllegalStateException("cannot connect to port " + testServer.getPort());
+ final HttpServletServer testServer =
+ HttpServletServer.factory.build("dmaapSim", "localhost", MOCK_SERVER_PORT, "/", false, true);
+ testServer.addServletClass("/*", DummyRest.class.getName());
+ testServer.waitedStart(2000);
+ if (!NetworkUtil.isTcpPortOpen("localhost", testServer.getPort(), 5, 10000L)) {
+ throw new IllegalStateException("cannot connect to port " + testServer.getPort());
+ }
} catch (final Exception e) {
- fail(e.getMessage());
+ fail(e.getMessage());
}
-
- }
-
+
+ }
+
@AfterClass
public static void tearDownSimulator() {
HttpServletServer.factory.destroy();
}
-
- @Before
- public void setUp() throws Exception {
- new OnapFunctionDefinitionFactory();
- request = JSONRequest.load(xPathExampleFromSpec);
- try {
- XACMLProperties.reloadProperties();
- System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "src/test/resources/xacml.pdp.properties");
- XACMLProperties.getProperties();
-
- assertTrue(true);
- } catch (Exception e) {
- fail();
-
- }
- }
-
+ /**
+ * Setup before test case execution.
+ *
+ * @throws Exception if any error occurs
+ */
+ @Before
+ public void setUp() throws Exception {
+ new OnapFunctionDefinitionFactory();
+ request = JSONRequest.load(xpathexamplefromspec);
- @Test
- public final void testRun() {
- FindAction action = new FindAction();
- // fully-loaded multiple response
- StdMutableResponse response = new StdMutableResponse();
- // create a Status object
- StdMutableStatus status = new StdMutableStatus(StdStatusCode.STATUS_CODE_MISSING_ATTRIBUTE);
- status.setStatusMessage("some status message");
- StdMutableStatusDetail statusDetailIn = new StdMutableStatusDetail();
- StdMutableMissingAttributeDetail mad = new StdMutableMissingAttributeDetail();
- mad.addAttributeValue(new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PEPACTION"));
- mad.addAttributeValue(new StdAttributeValue<String>(DataTypes.DT_INTEGER.getId(), "PDPACTION"));
- mad.setAttributeId(XACML3.ID_ACTION_PURPOSE);
- mad.setCategory(XACML3.ID_ATTRIBUTE_CATEGORY_ACTION);
- mad.setDataTypeId(XACML3.ID_DATATYPE_STRING);
- mad.setIssuer("an Issuer");
- statusDetailIn.addMissingAttributeDetail(mad);
- status.setStatusDetail(statusDetailIn);
- // create a single result object
- StdMutableResult result = new StdMutableResult(status);
- // set the decision
- result.setDecision(Decision.INDETERMINATE);
- // put the Result into the Response
- response.add(result);
- // create a new Result with a different Decision
- status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
- result = new StdMutableResult(status);
- result.setDecision(Decision.DENY);
+ try {
+ XACMLProperties.reloadProperties();
+ System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "src/test/resources/xacml.pdp.properties");
+ XACMLProperties.getProperties();
- StdMutableObligation obligation = new StdMutableObligation();
- obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- XACML3.ID_SUBJECT,
- "obligation-issuer1",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "Test")));
- result.addObligation(obligation);
+ assertTrue(true);
+ } catch (final Exception e) {
+ fail();
- StdMutableAdvice advice = new StdMutableAdvice();
- advice.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
- advice.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- XACML3.ID_SUBJECT,
- "advice-issuer1",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "Test")));
- response.add(result);
-
- // The logic below exercises the callRest and takeAction methods in FindAction
- // GET request
- status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
- result = new StdMutableResult(status);
- result.setDecision(Decision.PERMIT);
-
- obligation = new StdMutableObligation();
- obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("performer"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PDPACTION")));
-
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("URL"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT)));
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("method"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "GET")));
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("headers"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "foobar")));
+ }
+ }
-
- result.addObligation(obligation);
- response.add(result);
-
- // POST request
- status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
- result = new StdMutableResult(status);
- result.setDecision(Decision.PERMIT);
-
- obligation = new StdMutableObligation();
- obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("performer"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PDPACTION")));
-
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("URL"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT)));
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("method"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "POST")));
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("body"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT + "/foobar")));
-
- result.addObligation(obligation);
- response.add(result);
-
- //PUT request
- status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
- result = new StdMutableResult(status);
- result.setDecision(Decision.PERMIT);
-
- obligation = new StdMutableObligation();
- obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("performer"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PDPACTION")));
-
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("URL"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT)));
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("method"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PUT")));
- obligation.addAttributeAssignment(new StdMutableAttributeAssignment(
- XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
- new IdentifierImpl("body"),
- "obligation-issuer",
- new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT + "/foobar")));
-
- result.addObligation(obligation);
- response.add(result);
-
- try {
- assertTrue(action.run(response, request) != null);
- } catch (Exception e) {
- fail("operation failed, e="+e);
- }
- }
+
+ @Test
+ public final void testRun() {
+ final FindAction action = new FindAction();
+ // fully-loaded multiple response
+ final StdMutableResponse response = new StdMutableResponse();
+ // create a Status object
+ StdMutableStatus status = new StdMutableStatus(StdStatusCode.STATUS_CODE_MISSING_ATTRIBUTE);
+ status.setStatusMessage("some status message");
+ final StdMutableStatusDetail statusDetailIn = new StdMutableStatusDetail();
+ final StdMutableMissingAttributeDetail mad = new StdMutableMissingAttributeDetail();
+ mad.addAttributeValue(new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PEPACTION"));
+ mad.addAttributeValue(new StdAttributeValue<String>(DataTypes.DT_INTEGER.getId(), "PDPACTION"));
+ mad.setAttributeId(XACML3.ID_ACTION_PURPOSE);
+ mad.setCategory(XACML3.ID_ATTRIBUTE_CATEGORY_ACTION);
+ mad.setDataTypeId(XACML3.ID_DATATYPE_STRING);
+ mad.setIssuer("an Issuer");
+ statusDetailIn.addMissingAttributeDetail(mad);
+ status.setStatusDetail(statusDetailIn);
+ // create a single result object
+ StdMutableResult result = new StdMutableResult(status);
+ // set the decision
+ result.setDecision(Decision.INDETERMINATE);
+ // put the Result into the Response
+ response.add(result);
+ // create a new Result with a different Decision
+ status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
+ result = new StdMutableResult(status);
+ result.setDecision(Decision.DENY);
+
+ StdMutableObligation obligation = new StdMutableObligation();
+ obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
+ obligation.addAttributeAssignment(
+ new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, XACML3.ID_SUBJECT,
+ "obligation-issuer1", new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "Test")));
+ result.addObligation(obligation);
+
+ final StdMutableAdvice advice = new StdMutableAdvice();
+ advice.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
+ advice.addAttributeAssignment(
+ new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, XACML3.ID_SUBJECT,
+ "advice-issuer1", new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "Test")));
+ response.add(result);
+
+ // The logic below exercises the callRest and takeAction methods in FindAction
+ // GET request
+ status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
+ result = new StdMutableResult(status);
+ result.setDecision(Decision.PERMIT);
+
+ obligation = new StdMutableObligation();
+ obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("performer"), "obligation-issuer",
+ new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PDPACTION")));
+
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("URL"), "obligation-issuer",
+ new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT)));
+ obligation.addAttributeAssignment(
+ new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, new IdentifierImpl("method"),
+ "obligation-issuer", new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "GET")));
+ obligation.addAttributeAssignment(
+ new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, new IdentifierImpl("headers"),
+ "obligation-issuer", new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "foobar")));
+
+
+ result.addObligation(obligation);
+ response.add(result);
+
+ // POST request
+ status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
+ result = new StdMutableResult(status);
+ result.setDecision(Decision.PERMIT);
+
+ obligation = new StdMutableObligation();
+ obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("performer"), "obligation-issuer",
+ new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PDPACTION")));
+
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("URL"), "obligation-issuer",
+ new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT)));
+ obligation.addAttributeAssignment(
+ new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, new IdentifierImpl("method"),
+ "obligation-issuer", new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "POST")));
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("body"), "obligation-issuer", new StdAttributeValue<String>(
+ DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT + "/foobar")));
+
+ result.addObligation(obligation);
+ response.add(result);
+
+ // PUT request
+ status = new StdMutableStatus(StdStatusCode.STATUS_CODE_OK);
+ result = new StdMutableResult(status);
+ result.setDecision(Decision.PERMIT);
+
+ obligation = new StdMutableObligation();
+ obligation.setId(XACML3.ID_ACTION_IMPLIED_ACTION);
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("performer"), "obligation-issuer",
+ new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PDPACTION")));
+
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("URL"), "obligation-issuer",
+ new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT)));
+ obligation.addAttributeAssignment(
+ new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, new IdentifierImpl("method"),
+ "obligation-issuer", new StdAttributeValue<String>(DataTypes.DT_STRING.getId(), "PUT")));
+ obligation.addAttributeAssignment(new StdMutableAttributeAssignment(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+ new IdentifierImpl("body"), "obligation-issuer", new StdAttributeValue<String>(
+ DataTypes.DT_STRING.getId(), "http://localhost:" + MOCK_SERVER_PORT + "/foobar")));
+
+ result.addObligation(obligation);
+ response.add(result);
+
+ try {
+ assertTrue(action.run(response, request) != null);
+ } catch (final Exception e) {
+ fail("operation failed, e=" + e);
+ }
+ }
}
diff --git a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/ONAPPDPEngineFactoryTest.java b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/ONAPPDPEngineFactoryTest.java
deleted file mode 100644
index 1bde7dd..0000000
--- a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/ONAPPDPEngineFactoryTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP-PDP
- * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. 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=========================================================
- */
-package org.onap.policy.xacml.pdp;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import java.util.Properties;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import com.att.research.xacml.util.FactoryException;
-import com.att.research.xacml.util.FactoryFinder;
-import com.att.research.xacmlatt.pdp.eval.EvaluationContextFactory;
-
-@RunWith(PowerMockRunner.class)
-public class ONAPPDPEngineFactoryTest {
- @Test
- public final void testNewEngine() {
- ONAPPDPEngineFactory pdpEngine = new ONAPPDPEngineFactory();
- try {
- assertTrue(pdpEngine.newEngine() != null);
- } catch (Exception e) {
- fail("operation failed, e=" + e);
- }
- }
-
- @Test
- public final void testNewEngineProperties() {
- ONAPPDPEngineFactory pdpEngine = new ONAPPDPEngineFactory();
- Properties properties = new Properties();
- try {
- assertTrue(pdpEngine.newEngine(properties) != null);
- } catch (Exception e) {
- fail("operation failed, e=" + e);
- }
- }
-
- @PrepareForTest({EvaluationContextFactory.class, FactoryFinder.class})
- @Test(expected = FactoryException.class)
- public void negTestEngine() throws FactoryException {
- // Setup test data
- PowerMockito.mockStatic(FactoryFinder.class);
- PowerMockito.when(FactoryFinder.find(Mockito.any(), Mockito.any(), Mockito.any()))
- .thenReturn(null);
-
- // Negative test factory
- ONAPPDPEngineFactory factory = new ONAPPDPEngineFactory();
- factory.newEngine();
- fail("Expecting an exception.");
- }
-
- @PrepareForTest({EvaluationContextFactory.class, FactoryFinder.class})
- @Test(expected = FactoryException.class)
- public void negTestEngine2() throws FactoryException {
- // Setup test data
- PowerMockito.mockStatic(FactoryFinder.class);
- PowerMockito.when(FactoryFinder.find(Mockito.any(), Mockito.any(), Mockito.any()))
- .thenReturn(null);
-
- // Negative test factory
- ONAPPDPEngineFactory factory = new ONAPPDPEngineFactory();
- Properties properties = new Properties();
- factory.newEngine(properties);
- fail("Expecting an exception.");
- }
-}
diff --git a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/OnapPdpEngineFactoryTest.java b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/OnapPdpEngineFactoryTest.java
new file mode 100644
index 0000000..d3ee544
--- /dev/null
+++ b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/OnapPdpEngineFactoryTest.java
@@ -0,0 +1,88 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-PDP
+ * ================================================================================
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.xacml.pdp;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.att.research.xacml.util.FactoryException;
+import com.att.research.xacml.util.FactoryFinder;
+import com.att.research.xacmlatt.pdp.eval.EvaluationContextFactory;
+
+import java.util.Properties;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+public class OnapPdpEngineFactoryTest {
+ @Test
+ public final void testNewEngine() {
+ final OnapPdpEngineFactory pdpEngine = new OnapPdpEngineFactory();
+ try {
+ assertTrue(pdpEngine.newEngine() != null);
+ } catch (final Exception e) {
+ fail("operation failed, e=" + e);
+ }
+ }
+
+ @Test
+ public final void testNewEngineProperties() {
+ final OnapPdpEngineFactory pdpEngine = new OnapPdpEngineFactory();
+ final Properties properties = new Properties();
+ try {
+ assertTrue(pdpEngine.newEngine(properties) != null);
+ } catch (final Exception e) {
+ fail("operation failed, e=" + e);
+ }
+ }
+
+ @PrepareForTest({ EvaluationContextFactory.class, FactoryFinder.class })
+ @Test(expected = FactoryException.class)
+ public void negTestEngine() throws FactoryException {
+ // Setup test data
+ PowerMockito.mockStatic(FactoryFinder.class);
+ PowerMockito.when(FactoryFinder.find(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(null);
+
+ // Negative test factory
+ final OnapPdpEngineFactory factory = new OnapPdpEngineFactory();
+ factory.newEngine();
+ fail("Expecting an exception.");
+ }
+
+ @PrepareForTest({ EvaluationContextFactory.class, FactoryFinder.class })
+ @Test(expected = FactoryException.class)
+ public void negTestEngine2() throws FactoryException {
+ // Setup test data
+ PowerMockito.mockStatic(FactoryFinder.class);
+ PowerMockito.when(FactoryFinder.find(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(null);
+
+ // Negative test factory
+ final OnapPdpEngineFactory factory = new OnapPdpEngineFactory();
+ final Properties properties = new Properties();
+ factory.newEngine(properties);
+ fail("Expecting an exception.");
+ }
+}
diff --git a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/ONAPPDPEngineTest.java b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/OnapPdpEngineTest.java
similarity index 71%
rename from ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/ONAPPDPEngineTest.java
rename to ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/OnapPdpEngineTest.java
index 6eb6e4c..08a8447 100644
--- a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/ONAPPDPEngineTest.java
+++ b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/OnapPdpEngineTest.java
@@ -7,9 +7,9 @@
* 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.
@@ -22,24 +22,26 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import org.junit.Test;
-import org.mockito.Mockito;
+
import com.att.research.xacml.api.Request;
import com.att.research.xacml.api.Response;
import com.att.research.xacml.api.pdp.PDPException;
import com.att.research.xacml.api.pdp.ScopeResolver;
import com.att.research.xacmlatt.pdp.eval.EvaluationContextFactory;
-public class ONAPPDPEngineTest {
- @Test
- public void testEngine() throws PDPException {
- EvaluationContextFactory factory = Mockito.mock(EvaluationContextFactory.class);
- ScopeResolver resolver = Mockito.mock(ScopeResolver.class);
- ONAPPDPEngine engine = new ONAPPDPEngine(factory, resolver);
- assertNotNull(engine);
+import org.junit.Test;
+import org.mockito.Mockito;
- Request pepRequest = Mockito.mock(Request.class);
- Response response = engine.decide(pepRequest);
- assertEquals(1, response.getResults().size());
- }
+public class OnapPdpEngineTest {
+ @Test
+ public void testEngine() throws PDPException {
+ final EvaluationContextFactory factory = Mockito.mock(EvaluationContextFactory.class);
+ final ScopeResolver resolver = Mockito.mock(ScopeResolver.class);
+ final OnapPdpEngine engine = new OnapPdpEngine(factory, resolver);
+ assertNotNull(engine);
+
+ final Request pepRequest = Mockito.mock(Request.class);
+ final Response response = engine.decide(pepRequest);
+ assertEquals(1, response.getResults().size());
+ }
}
diff --git a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatchTest.java b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatchTest.java
index 5100dc7..da1759a 100644
--- a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatchTest.java
+++ b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/FunctionDefinitionCustomRegexpMatchTest.java
@@ -7,9 +7,9 @@
* 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.
@@ -17,12 +17,11 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.xacml.pdp.std.functions;
import static org.junit.Assert.assertEquals;
-import java.util.ArrayList;
-import java.util.List;
-import org.junit.Test;
+
import com.att.research.xacml.api.Identifier;
import com.att.research.xacml.api.XACML;
import com.att.research.xacml.std.IdentifierImpl;
@@ -32,23 +31,29 @@
import com.att.research.xacmlatt.pdp.policy.FunctionArgument;
import com.att.research.xacmlatt.pdp.policy.FunctionArgumentAttributeValue;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
public class FunctionDefinitionCustomRegexpMatchTest {
- @Test
- public final void testRegexp() {
- // Setup
- String testVal = "testVal";
- String testId = "function:testId";
- IdentifierImpl testFnId = new IdentifierImpl(testId);
- Identifier identifier = XACML.ID_DATATYPE_STRING;
- StdAttributeValue<String> attValue = new StdAttributeValue<String>(identifier, testVal);
- FunctionArgument fArg = new FunctionArgumentAttributeValue(attValue);
- List<FunctionArgument> listFA = new ArrayList<FunctionArgument>();
- listFA.add(fArg);
- listFA.add(fArg);
-
- // Try a match
- FunctionDefinitionCustomRegexpMatch<String> regexpMatch = new FunctionDefinitionCustomRegexpMatch<String>(testFnId, DataTypes.DT_STRING);
- ExpressionResult result = regexpMatch.evaluate(null, listFA);
- assertEquals(result.getStatus().isOk(), true);
- }
+ @Test
+ public final void testRegexp() {
+ // Setup
+ final String testVal = "testVal";
+ final String testId = "function:testId";
+ final IdentifierImpl testFnId = new IdentifierImpl(testId);
+ final Identifier identifier = XACML.ID_DATATYPE_STRING;
+ final StdAttributeValue<String> attValue = new StdAttributeValue<String>(identifier, testVal);
+ final FunctionArgument fArg = new FunctionArgumentAttributeValue(attValue);
+ final List<FunctionArgument> listFa = new ArrayList<FunctionArgument>();
+ listFa.add(fArg);
+ listFa.add(fArg);
+
+ // Try a match
+ final FunctionDefinitionCustomRegexpMatch<String> regexpMatch =
+ new FunctionDefinitionCustomRegexpMatch<String>(testFnId, DataTypes.DT_STRING);
+ final ExpressionResult result = regexpMatch.evaluate(null, listFa);
+ assertEquals(result.getStatus().isOk(), true);
+ }
}
diff --git a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/PolicyListTest.java b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/PolicyListTest.java
index 17f509d..ccab704 100644
--- a/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/PolicyListTest.java
+++ b/ONAP-PDP/src/test/java/org/onap/policy/xacml/pdp/std/functions/PolicyListTest.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* ONAP-PDP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. 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.
@@ -17,47 +17,49 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.xacml.pdp.std.functions;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
public class PolicyListTest {
- @Before
- public void setUp() throws Exception {
- PolicyList.addPolicyID("Test");
- }
+ @Before
+ public void setUp() throws Exception {
+ PolicyList.addPolicyId("Test");
+ }
- @Test
- public final void testGetpolicyList() {
- try{
- assertTrue(PolicyList.getpolicyList().size() ==1);
- }catch(Exception e){
- fail("operation failed, e="+e);
- }
- }
+ @Test
+ public final void testGetpolicyList() {
+ try {
+ assertTrue(PolicyList.getpolicyList().size() == 1);
+ } catch (final Exception e) {
+ fail("operation failed, e=" + e);
+ }
+ }
- @Test
- public final void testAddPolicyID() {
- try{
- PolicyList.addPolicyID("Test");
- assertTrue(PolicyList.getpolicyList().size() == 1);
- }catch(Exception e){
- fail("operation failed, e="+e);
- }
- }
+ @Test
+ public final void testAddPolicyId() {
+ try {
+ PolicyList.addPolicyId("Test");
+ assertTrue(PolicyList.getpolicyList().size() == 1);
+ } catch (final Exception e) {
+ fail("operation failed, e=" + e);
+ }
+ }
- @Test
- public final void testClearPolicyList() {
- try{
- PolicyList.clearPolicyList();
- assertTrue(PolicyList.getpolicyList().size() == 0);
- }catch(Exception e){
- fail("operation failed, e="+e);
- }
- }
+ @Test
+ public final void testClearPolicyList() {
+ try {
+ PolicyList.clearPolicyList();
+ assertTrue(PolicyList.getpolicyList().size() == 0);
+ } catch (final Exception e) {
+ fail("operation failed, e=" + e);
+ }
+ }
}
diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/ActionBodyEntityTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/ActionBodyEntityTest.java
new file mode 100644
index 0000000..f8777d8
--- /dev/null
+++ b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/ActionBodyEntityTest.java
@@ -0,0 +1,67 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-REST
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.rest.jpa;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import java.util.Date;
+import org.junit.Test;
+
+public class ActionBodyEntityTest {
+ @Test
+ public void testEntity() {
+ // Set up test data
+ String value = "testVal";
+ Date date = new Date();
+ ActionBodyEntity entity = new ActionBodyEntity();
+ entity.prePersist();
+ ActionBodyEntity entity2 = new ActionBodyEntity();
+ ActionBodyEntity entity3 = new ActionBodyEntity();
+
+ // Test set and get
+ entity3.preUpdate();
+ entity3.setActionBody(value);
+ assertEquals(value, entity3.getActionBody());
+ entity3.setActionBodyName(value);
+ assertEquals(value, entity3.getActionBodyName());
+ entity3.setCreatedBy(value);
+ assertEquals(value, entity3.getCreatedBy());
+ entity3.setModifiedBy(value);
+ assertEquals(value, entity3.getModifiedBy());
+ entity3.setModifiedDate(date);
+ assertEquals(date, entity3.getModifiedDate());
+ assertEquals(0, entity3.getVersion());
+ assertNull(entity3.getCreatedDate());
+ entity3.setDeleted(true);
+ assertEquals(true, entity3.isDeleted());
+ assertEquals(0, entity3.getActionBodyId());
+
+ // Test equals method combinations
+ assertEquals(false, entity.equals(null));
+ assertEquals(true, entity.equals(entity));
+ assertEquals(false, entity.equals(value));
+ assertEquals(false, entity.equals(entity2));
+ assertThat(entity.hashCode(), is(not(0)));
+ }
+}
diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/ConfigurationDataEntityTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/ConfigurationDataEntityTest.java
new file mode 100644
index 0000000..da5dd50
--- /dev/null
+++ b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/ConfigurationDataEntityTest.java
@@ -0,0 +1,71 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-REST
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.rest.jpa;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import java.util.Date;
+import org.junit.Test;
+
+public class ConfigurationDataEntityTest {
+ @Test
+ public void testEquals() {
+ // Set up test data
+ String value = "testVal";
+ Date date = new Date();
+ ConfigurationDataEntity entity = new ConfigurationDataEntity();
+ entity.prePersist();
+ ConfigurationDataEntity entity2 = new ConfigurationDataEntity();
+ ConfigurationDataEntity entity3 = new ConfigurationDataEntity();
+
+ // Test set and get
+ entity3.preUpdate();
+ entity3.setConfigBody(value);
+ assertEquals(value, entity3.getConfigBody());
+ entity3.setCreatedBy(value);
+ assertEquals(value, entity3.getCreatedBy());
+ entity3.setModifiedBy(value);
+ assertEquals(value, entity3.getModifiedBy());
+ entity3.setModifiedDate(date);
+ assertEquals(date, entity3.getModifiedDate());
+ assertEquals(0, entity3.getVersion());
+ assertNull(entity3.getCreatedDate());
+ entity3.setDeleted(true);
+ assertEquals(true, entity3.isDeleted());
+ entity3.setDescription(value);
+ assertEquals(value, entity3.getDescription());
+ entity3.setConfigType(value);
+ assertEquals(value, entity3.getConfigType());
+ entity3.setConfigurationName(value);
+ assertEquals(value, entity3.getConfigurationName());
+ assertEquals(0, entity3.getConfigurationDataId());
+
+ // Test method combinations
+ assertEquals(false, entity.equals(null));
+ assertEquals(true, entity.equals(entity));
+ assertEquals(false, entity.equals(value));
+ assertEquals(false, entity.equals(entity2));
+ assertThat(entity.hashCode(), is(not(0)));
+ }
+}
diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/MicroserviceHeaderdeFaultsTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/MicroserviceHeaderdeFaultsTest.java
new file mode 100644
index 0000000..62452dc
--- /dev/null
+++ b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/MicroserviceHeaderdeFaultsTest.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-REST
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.rest.jpa;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+
+public class MicroserviceHeaderdeFaultsTest {
+ @Test
+ public void testHeader() {
+ // Set up test data
+ String value = "testVal";
+ MicroserviceHeaderdeFaults header = new MicroserviceHeaderdeFaults();
+ header.prePersist();
+ header.preUpdate();
+
+ // Set data
+ header.setGuard(value);
+ header.setId(1);
+ header.setModelName(value);
+ header.setOnapName(value);
+ header.setPriority(value);
+ header.setRiskLevel(value);
+ header.setRiskType(value);
+
+ // Test gets
+ assertEquals(value, header.getGuard());
+ assertEquals(1, header.getId());
+ assertEquals(value, header.getModelName());
+ assertEquals(value, header.getOnapName());
+ assertEquals(value, header.getPriority());
+ assertEquals(value, header.getRiskLevel());
+ assertEquals(value, header.getRiskType());
+ }
+}
diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/PIPConfigurationTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/PIPConfigurationTest.java
new file mode 100644
index 0000000..8d87173
--- /dev/null
+++ b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/PIPConfigurationTest.java
@@ -0,0 +1,120 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-REST
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.onap.policy.rest.jpa;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+import org.junit.Test;
+import com.att.research.xacml.api.pip.PIPException;
+import com.att.research.xacml.util.XACMLProperties;
+
+public class PIPConfigurationTest {
+ @Test
+ public void testConfig() throws PIPException {
+ String value = "testVal";
+ String id = "1";
+ PIPConfigParam param = new PIPConfigParam();
+ param.setParamName(value);
+ param.setParamValue(value);
+ Set<PIPConfigParam> params = new HashSet<PIPConfigParam>();
+ PIPResolver resolver = new PIPResolver();
+ resolver.setClassname(value);
+ resolver.setName(value);
+ params.add(param);
+ Set<PIPResolver> resolvers = new HashSet<PIPResolver>();
+ resolvers.add(resolver);
+ Properties props = new Properties();
+ props.setProperty(id + ".classname", value);
+ props.setProperty(XACMLProperties.PROP_PIP_ENGINES, id);
+ PIPType type = new PIPType();
+ Date date = new Date();
+
+ // Test constructors
+ PIPConfiguration config = new PIPConfiguration();
+ assertNotNull(config);
+ config.setPipconfigParams(params);
+ config.setPipresolvers(resolvers);
+ PIPConfiguration config2 = new PIPConfiguration(config, value);
+ assertNotNull(config2);
+ config2.prePersist();
+ config2.preUpdate();
+ PIPConfiguration config3 = new PIPConfiguration(id, props);
+ assertNotNull(config3);
+ PIPConfiguration config4 = new PIPConfiguration(id, props, value);
+ assertNotNull(config4);
+
+ // Test set and get
+ config.setId(1);
+ assertEquals(1, config.getId());
+ config.setDescription(value);
+ assertEquals(value, config.getDescription());
+ config.setName(id);
+ assertEquals(id, config.getName());
+ config.setClassname(value);
+ assertEquals(value, config.getClassname());
+ config.setIssuer(value);
+ assertEquals(value, config.getIssuer());
+ config.setReadOnly(true);
+ assertEquals('1', config.getReadOnly());
+ config.setReadOnly('0');
+ assertEquals('0', config.getReadOnly());
+ assertEquals(false, config.isReadOnly());
+ config.setRequiresResolvers('t');
+ assertEquals('t', config.getRequiresResolvers());
+ config.setReadOnly(false);
+ assertEquals('0', config.getReadOnly());
+ config.setPiptype(type);
+ assertEquals(type, config.getPiptype());
+ config.setRequiresResolvers(false);
+ assertEquals('0', config.getRequiresResolvers());
+ config.setCreatedBy(value);
+ assertEquals(value, config.getCreatedBy());
+ config.setCreatedDate(date);
+ assertEquals(date, config.getCreatedDate());
+ config.setModifiedBy(value);
+ assertEquals(value, config.getModifiedBy());
+ config.setModifiedDate(date);
+ assertEquals(date, config.getModifiedDate());
+ config.setRequiresResolvers(true);
+ assertEquals(true, config.requiresResolvers());
+ assertEquals(8, config.getConfiguration(id).size());
+ assertEquals(9, config.generateProperties(id).size());
+
+ // Test remove and clear
+ assertEquals(param, config.removePipconfigParam(param));
+ config.clearConfigParams();
+ assertEquals(0, config.getPipconfigParams().size());
+ config.removePipresolver(resolver);
+ assertEquals(0, config.getPipresolvers().size());
+
+ // Test import
+ assertEquals(1, PIPConfiguration.importPIPConfigurations(props).size());
+ config.readProperties(id, props);
+ assertEquals(id, config.getName());
+
+ // Test toString
+ assertEquals(332, config.toString().length());
+ }
+}