diff --git a/src/main/java/org/gcube/accounting/datamodel/validations/validators/Harmonizer.java b/src/main/java/org/gcube/accounting/datamodel/validations/validators/Harmonizer.java index 374a51c..0e54b62 100644 --- a/src/main/java/org/gcube/accounting/datamodel/validations/validators/Harmonizer.java +++ b/src/main/java/org/gcube/accounting/datamodel/validations/validators/Harmonizer.java @@ -48,16 +48,21 @@ public class Harmonizer implements FieldAction { List matcherReplaceList = RegexRulesAggregator.getInstance().getMatcherReplaceList(); + String calledMethod = (String) value; + for(MatcherReplace matcherReplace : matcherReplaceList) { - Replace replace = matcherReplace.check(serviceClass, serviceName, (String) value); + Replace replace = matcherReplace.check(serviceClass, serviceName, calledMethod); if(replace != null) { - serviceUsageRecord.setServiceClass(replace.getServiceClass()); - serviceUsageRecord.setServiceName(replace.getServiceName()); - return replace.getCalledMethod(); + serviceClass = replace.getServiceClass(); + serviceName = replace.getServiceName(); + calledMethod = replace.getCalledMethod(); } } - return value; + serviceUsageRecord.setServiceClass(serviceClass); + serviceUsageRecord.setServiceName(serviceName); + + return calledMethod; } } diff --git a/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java b/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java index 52dd266..bd48ce8 100644 --- a/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java +++ b/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java @@ -219,8 +219,8 @@ public class TestRules extends ContextTest { public void testSingleRule() throws Exception { allRules(); File rulesDirectory = getRulesDirectory(); - File rulesDirFile = new File(rulesDirectory, "SmartExecutor"); - File ruleFile = new File(rulesDirFile, "SmartExecutor-getAvailablePlugins.json"); + File rulesDirFile = new File(rulesDirectory, "WhnManager"); + File ruleFile = new File(rulesDirFile, "WhnManager-OTHER.json"); testRule(ruleFile); } diff --git a/src/test/resources/rules/SmartExecutor/SmartExecutor-OTHER.json b/src/test/resources/rules/SmartExecutor/SmartExecutor-OTHER.json index 03ed8ad..0612233 100644 --- a/src/test/resources/rules/SmartExecutor/SmartExecutor-OTHER.json +++ b/src/test/resources/rules/SmartExecutor/SmartExecutor-OTHER.json @@ -2,7 +2,7 @@ "match": { "serviceClassRegex": "VREManagement", "serviceNameRegex": "(SmartExecutor)|(smart-executor)", - "calledMethodRegex": ".*(UNKNOWN)|(OTHER).*" + "calledMethodRegex": "^((UNKNOWN)|(OTHER))$" }, "replace": { "serviceClass": "VREManagement", diff --git a/src/test/resources/rules/WhnManager/WhnManager-OTHER.csv b/src/test/resources/rules/WhnManager/WhnManager-OTHER.csv new file mode 100644 index 0000000..65c9920 --- /dev/null +++ b/src/test/resources/rules/WhnManager/WhnManager-OTHER.csv @@ -0,0 +1,2 @@ +VREManagement,WhnManager,OTHER +VREManagement,WhnManager,gcube/vremanagement/ws/whnmanager \ No newline at end of file diff --git a/src/test/resources/rules/WhnManager/WhnManager-OTHER.json b/src/test/resources/rules/WhnManager/WhnManager-OTHER.json new file mode 100644 index 0000000..365d57f --- /dev/null +++ b/src/test/resources/rules/WhnManager/WhnManager-OTHER.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "VREManagement", + "serviceNameRegex": "WhnManager", + "calledMethodRegex": "(OTHER)|((\/){0,1}gcube\/vremanagement\/ws\/whnmanager)" + }, + "replace": { + "serviceClass": "VREManagement", + "serviceName": "WhnManager", + "calledMethod": "OTHER" + } +} \ No newline at end of file