diff options
author | Jim Hahn <jrh3@att.com> | 2019-11-08 08:54:40 -0500 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2019-11-08 10:19:53 -0500 |
commit | f17e395186c8d6866977ff3210f62b79f4f61e37 (patch) | |
tree | f03b7af4e8c6dfe76b0e70c1607d9819b71b8797 /controlloop/common/guard/src/main/java | |
parent | 5f417e1ae3a6827881f21fa8293485c271f4c847 (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/main/java')
-rw-r--r-- | controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardYamlToXacml.java | 62 |
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); + } } |