aboutsummaryrefslogtreecommitdiffstats
path: root/applications/guard
diff options
context:
space:
mode:
Diffstat (limited to 'applications/guard')
-rw-r--r--applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/LegacyGuardTranslator.java132
1 files changed, 67 insertions, 65 deletions
diff --git a/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/LegacyGuardTranslator.java b/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/LegacyGuardTranslator.java
index 932db959..3ccbd9cd 100644
--- a/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/LegacyGuardTranslator.java
+++ b/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/LegacyGuardTranslator.java
@@ -68,6 +68,8 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
private static final String FIELD_GUARD_ACTIVE_START = "guardActiveStart";
private static final String FIELD_GUARD_ACTIVE_END = "guardActiveEnd";
private static final String FIELD_TARGET = "targets";
+ private static final String DESC_DEFAULT = "Default is to PERMIT if the policy matches.";
+ private static final String ID_RULE = ":rule";
public LegacyGuardTranslator() {
super();
@@ -193,7 +195,7 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
//
// Add in the Policy Version
//
- policy.setVersion(map.get("policy-version").toString());
+ policy.setVersion(map.get("policy-version"));
}
return policy;
}
@@ -209,10 +211,8 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
if (properties.containsKey("recipe")) {
addMatch(allOf, properties.get("recipe"), ToscaDictionary.ID_RESOURCE_GUARD_RECIPE);
}
- if (addTargets) {
- if (properties.containsKey("targets")) {
- addMatch(allOf, properties.get("targets"), ToscaDictionary.ID_RESOURCE_GUARD_TARGETID);
- }
+ if (addTargets && properties.containsKey(FIELD_TARGET)) {
+ addMatch(allOf, properties.get(FIELD_TARGET), ToscaDictionary.ID_RESOURCE_GUARD_TARGETID);
}
if (properties.containsKey("clname")) {
addMatch(allOf, properties.get("clname"), ToscaDictionary.ID_RESOURCE_GUARD_CLNAME);
@@ -333,8 +333,8 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
// Now we can create our rule
//
RuleType permit = new RuleType();
- permit.setDescription("Default is to PERMIT if the policy matches.");
- permit.setRuleId(policyName + ":rule");
+ permit.setDescription(DESC_DEFAULT);
+ permit.setRuleId(policyName + ID_RULE);
permit.setEffect(EffectType.PERMIT);
permit.setTarget(new TargetType());
//
@@ -344,7 +344,7 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
//
// TODO Add the advice - Is the request id needed to be returned?
//
- // permit.setAdviceExpressions(adviceExpressions);
+ // permit . setAdviceExpressions (adviceExpressions)
//
// Done
//
@@ -391,13 +391,25 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
// Create our rule
//
RuleType permit = new RuleType();
- permit.setDescription("Default is to PERMIT if the policy matches.");
- permit.setRuleId(policyName + ":rule");
+ permit.setDescription(DESC_DEFAULT);
+ permit.setRuleId(policyName + ID_RULE);
permit.setEffect(EffectType.PERMIT);
permit.setTarget(new TargetType());
//
- // Create our condition
+ // Create the condition
+ //
+ permit.setCondition(createCondition(timeRange, minApply, maxApply));
+ //
+ // TODO Add the advice - Is the request id needed to be returned?
+ //
+ // permit . setAdviceExpressions (adviceExpressions)
+ //
+ // Done
//
+ return permit;
+ }
+
+ private static ConditionType createCondition(ApplyType timeRange, ApplyType minApply, ApplyType maxApply) {
final ConditionType condition = new ConditionType();
//
// Check if we have all the fields (this can be a little
@@ -419,63 +431,53 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
// Add into the condition
//
condition.setExpression(factory.createApply(applyAnd));
+
+ return condition;
+ }
+ //
+ // At least one of these applies is null. We need at least
+ // two to require the And apply. Otherwise there is no need
+ // for an outer And apply as the single condition can work
+ // on its own.
+ //
+ if (timeRange != null && minApply == null && maxApply == null) {
+ //
+ // Only the time range check is necessary
+ //
+ condition.setExpression(factory.createApply(timeRange));
+ } else if (timeRange == null && minApply != null && maxApply == null) {
+ //
+ // Only the min check is necessary
+ //
+ condition.setExpression(factory.createApply(minApply));
+ } else if (timeRange == null && minApply == null) {
+ //
+ // Only the max check is necessary
+ //
+ condition.setExpression(factory.createApply(maxApply));
} else {
//
- // At least one of these applies is null. We need at least
- // two to require the And apply. Otherwise there is no need
- // for an outer And apply as the single condition can work
- // on its own.
+ // Ok we will need an outer And and have at least the
+ // time range and either min or max check
//
- if (timeRange != null && minApply == null && maxApply == null) {
- //
- // Only the time range check is necessary
- //
- condition.setExpression(factory.createApply(timeRange));
- } else if (timeRange == null && minApply != null && maxApply == null) {
- //
- // Only the min check is necessary
- //
- condition.setExpression(factory.createApply(minApply));
- } else if (timeRange == null && minApply == null) {
- //
- // Only the max check is necessary
- //
- condition.setExpression(factory.createApply(maxApply));
- } else {
- //
- // Ok we will need an outer And and have at least the
- // time range and either min or max check
- //
- ApplyType applyAnd = new ApplyType();
- applyAnd.setDescription("return true if all the apply's are true.");
- applyAnd.setFunctionId(XACML3.ID_FUNCTION_AND.stringValue());
- if (timeRange != null) {
- applyAnd.getExpression().add(factory.createApply(timeRange));
- }
- if (minApply != null) {
- applyAnd.getExpression().add(factory.createApply(minApply));
- }
- if (maxApply != null) {
- applyAnd.getExpression().add(factory.createApply(maxApply));
- }
- //
- // Add into the condition
- //
- condition.setExpression(factory.createApply(applyAnd));
+ ApplyType applyAnd = new ApplyType();
+ applyAnd.setDescription("return true if all the apply's are true.");
+ applyAnd.setFunctionId(XACML3.ID_FUNCTION_AND.stringValue());
+ if (timeRange != null) {
+ applyAnd.getExpression().add(factory.createApply(timeRange));
+ }
+ if (minApply != null) {
+ applyAnd.getExpression().add(factory.createApply(minApply));
}
+ if (maxApply != null) {
+ applyAnd.getExpression().add(factory.createApply(maxApply));
+ }
+ //
+ // Add into the condition
+ //
+ condition.setExpression(factory.createApply(applyAnd));
}
- //
- // Add the condition
- //
- permit.setCondition(condition);
- //
- // TODO Add the advice - Is the request id needed to be returned?
- //
- // permit.setAdviceExpressions(adviceExpressions);
- //
- // Done
- //
- return permit;
+ return condition;
}
private static RuleType generateBlacklistPermit(String policyName, Map<String, Object> properties) {
@@ -506,8 +508,8 @@ public class LegacyGuardTranslator implements ToscaPolicyTranslator {
// Create our rule
//
RuleType permit = new RuleType();
- permit.setDescription("Default is to PERMIT if the policy matches.");
- permit.setRuleId(policyName + ":rule");
+ permit.setDescription(DESC_DEFAULT);
+ permit.setRuleId(policyName + ID_RULE);
permit.setEffect(EffectType.PERMIT);
permit.setTarget(new TargetType());
//