aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/common/guard/src
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-11-08 08:54:40 -0500
committerJim Hahn <jrh3@att.com>2019-11-08 10:19:53 -0500
commitf17e395186c8d6866977ff3210f62b79f4f61e37 (patch)
treef03b7af4e8c6dfe76b0e70c1607d9819b71b8797 /controlloop/common/guard/src
parent5f417e1ae3a6827881f21fa8293485c271f4c847 (diff)
Fix more sonar issues in drools-applications
Addressed the following sonar issues: - unused imports - unused method parameters - superfluous "throws" declaration - fields within a serializable class must also be serializable; this was/will be fixed with a change to AaiCqResponse in policy-models - use logger instead of System.out; turns out that the code that used System.out is no longer needed. In fact, deleted several classes that are no longer needed: ControlLoopLogger and ControlLoopPublisher - cyclomatic complexity and switch/case statements too big; used eclipse to extract chunks of code into separate methods - duplicate code Note: extracted common code and used lambdas to eliminate duplicate code in PolicyGuardYamlToXacml. However, a better approach would be to use object-oriented programming, using mini/nested objects to do the generation. The lambdas would then become abstract methods. Nevertheless, that would entail significantly more re-write of this class than desired at this time Issue-ID: POLICY-2225 Change-Id: Ie503ffd7accbad3e410af602d32b29c0095c3a33 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'controlloop/common/guard/src')
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardYamlToXacml.java62
1 files changed, 34 insertions, 28 deletions
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardYamlToXacml.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardYamlToXacml.java
index 057c3f116..60ccce05d 100644
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardYamlToXacml.java
+++ b/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardYamlToXacml.java
@@ -48,15 +48,33 @@ public class PolicyGuardYamlToXacml {
* @param xacmlPolicyOutput the Xacml output
*/
public static void fromYamlToXacml(String yamlFile, String xacmlTemplate, String xacmlPolicyOutput) {
+ fromYamlToXacml(yamlFile, xacmlTemplate, xacmlPolicyOutput, PolicyGuardYamlToXacml::generateXacmlGuard,
+ constraint -> {
+ logger.debug("num: {}", constraint.getFreq_limit_per_target());
+ logger.debug("duration: {}", constraint.getTime_window());
+ logger.debug("time_in_range: {}", constraint.getActive_time_range());
+ });
+ }
+
+ /**
+ * Convert from Yaml to Xacml.
+ *
+ * @param yamlFile the Yaml file
+ * @param xacmlTemplate the Xacml template
+ * @param xacmlPolicyOutput the Xacml output
+ * @param generator function to generate the yaml from the xacml
+ * @param logConstraint function to log relevant fields of the constraint
+ */
+ public static void fromYamlToXacml(String yamlFile, String xacmlTemplate, String xacmlPolicyOutput,
+ Generator generator, Consumer<Constraint> logConstraint) {
+
ControlLoopGuard yamlGuardObject = Util.loadYamlGuard(yamlFile);
GuardPolicy guardPolicy = yamlGuardObject.getGuards().get(0);
logger.debug("clname: {}", guardPolicy.getMatch_parameters().getControlLoopName());
logger.debug("actor: {}", guardPolicy.getMatch_parameters().getActor());
logger.debug("recipe: {}", guardPolicy.getMatch_parameters().getRecipe());
Constraint constraint = guardPolicy.getLimit_constraints().get(0);
- logger.debug("num: {}", constraint.getFreq_limit_per_target());
- logger.debug("duration: {}", constraint.getTime_window());
- logger.debug("time_in_range: {}", constraint.getActive_time_range());
+ logConstraint.accept(constraint);
Path xacmlTemplatePath = Paths.get(xacmlTemplate);
String xacmlTemplateContent;
@@ -64,7 +82,7 @@ public class PolicyGuardYamlToXacml {
try {
xacmlTemplateContent = new String(Files.readAllBytes(xacmlTemplatePath));
- String xacmlPolicyContent = generateXacmlGuard(xacmlTemplateContent,
+ String xacmlPolicyContent = generator.apply(xacmlTemplateContent,
guardPolicy.getMatch_parameters(), constraint);
Files.write(Paths.get(xacmlPolicyOutput), xacmlPolicyContent.getBytes());
@@ -160,30 +178,12 @@ public class PolicyGuardYamlToXacml {
* @param xacmlPolicyOutput the Xacml output
*/
public static void fromYamlToXacmlBlacklist(String yamlFile, String xacmlTemplate, String xacmlPolicyOutput) {
- ControlLoopGuard yamlGuardObject = Util.loadYamlGuard(yamlFile);
- GuardPolicy guardPolicy = yamlGuardObject.getGuards().get(0);
- logger.debug("actor: {}", guardPolicy.getMatch_parameters().getActor());
- logger.debug("recipe: {}", guardPolicy.getMatch_parameters().getRecipe());
- Constraint constraint = guardPolicy.getLimit_constraints().get(0);
- logger.debug("freq_limit_per_target: {}", constraint.getFreq_limit_per_target());
- logger.debug("time_window: {}", constraint.getTime_window());
- logger.debug("active_time_range: {}", constraint.getActive_time_range());
-
- Path xacmlTemplatePath = Paths.get(xacmlTemplate);
- String xacmlTemplateContent;
-
- try {
- xacmlTemplateContent = new String(Files.readAllBytes(xacmlTemplatePath));
- String xacmlPolicyContent = generateXacmlGuardBlacklist(xacmlTemplateContent,
- guardPolicy.getMatch_parameters(), constraint);
-
- logger.debug("{}", xacmlPolicyContent);
-
- Files.write(Paths.get(xacmlPolicyOutput), xacmlPolicyContent.getBytes());
-
- } catch (IOException e) {
- logger.error("fromYamlToXacmlBlacklist threw: ", e);
- }
+ fromYamlToXacml(yamlFile, xacmlTemplate, xacmlPolicyOutput, PolicyGuardYamlToXacml::generateXacmlGuardBlacklist,
+ constraint -> {
+ logger.debug("freq_limit_per_target: {}", constraint.getFreq_limit_per_target());
+ logger.debug("time_window: {}", constraint.getTime_window());
+ logger.debug("active_time_range: {}", constraint.getActive_time_range());
+ });
}
private static String generateXacmlGuardBlacklist(String xacmlTemplateContent, MatchParameters matchParameters,
@@ -201,4 +201,10 @@ public class PolicyGuardYamlToXacml {
return result;
}
+
+ @FunctionalInterface
+ private static interface Generator {
+ public String apply(String xacmlTemplateContent, MatchParameters matchParameters,
+ Constraint constraint);
+ }
}