Skip to content

Commit 7b7e984

Browse files
Replacement marker mismatch handled better (#428)
* Throw exception earlier and more helpful error message
1 parent 574cd0c commit 7b7e984

File tree

9 files changed

+77
-36
lines changed

9 files changed

+77
-36
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.ericsson.ei.exception;
2+
3+
public class ReplacementMarkerException extends Exception {
4+
5+
private static final long serialVersionUID = 1L;
6+
7+
public ReplacementMarkerException(String message) {
8+
super(message);
9+
}
10+
}

src/main/java/com/ericsson/ei/rules/MatchIdRulesHandler.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,14 @@
1616
*/
1717
package com.ericsson.ei.rules;
1818

19+
import java.util.ArrayList;
1920
import java.util.List;
2021

22+
import com.ericsson.ei.exception.ReplacementMarkerException;
2123
import com.ericsson.ei.handlers.ObjectHandler;
24+
25+
import org.slf4j.Logger;
26+
import org.slf4j.LoggerFactory;
2227
import org.springframework.beans.factory.annotation.Autowired;
2328
import org.springframework.beans.factory.annotation.Value;
2429
import org.springframework.stereotype.Component;
@@ -30,6 +35,8 @@
3035
@Component
3136
public class MatchIdRulesHandler {
3237

38+
private static final Logger LOGGER = LoggerFactory.getLogger(MatchIdRulesHandler.class);
39+
3340
@Value("${rules.replacement.marker:%IdentifyRulesEventId%}")
3441
private String replacementMarker;
3542

@@ -42,10 +49,13 @@ public class MatchIdRulesHandler {
4249
* */
4350
public List<String> fetchObjectsById(RulesObject ruleObject, String id) {
4451
String matchIdString = ruleObject.getMatchIdRules();
45-
String fetchQueryString = replaceIdInRules(matchIdString, id);
46-
MongoQuery fetchQuery = new MongoStringQuery(fetchQueryString);
47-
List<String> objects = objHandler.findObjectsByCondition(fetchQuery);
48-
return objects;
52+
List<String> objects = new ArrayList<>();
53+
try {
54+
objects = doFetchObjectsById(matchIdString, id);
55+
} catch (ReplacementMarkerException e) {
56+
LOGGER.error("Replacement marker mismatch.", e);
57+
}
58+
return objects;
4959
}
5060

5161
/**
@@ -62,13 +72,21 @@ public List<String> fetchObjectsById(RulesObject ruleObject, String id) {
6272
* @param matchIdString the string containing a placeholder key to be replaced
6373
* @param id the Eiffel event id to replace placeholder with
6474
* @return an updated matchIdString
75+
* @throws ReplacementMarkerException
6576
*/
66-
public String replaceIdInRules(String matchIdString, String id) {
77+
protected String replaceIdInRules(String matchIdString, String id) throws ReplacementMarkerException {
6778
if (matchIdString.contains(replacementMarker)) {
6879
return matchIdString.replace(replacementMarker, id);
6980
} else {
70-
return null;
81+
String errorMessage = String.format("MatchIdRules: %s does not contain the rules.replacement.marker: %s", matchIdString, replacementMarker);
82+
throw new ReplacementMarkerException(errorMessage);
7183
}
7284
}
7385

86+
private List<String> doFetchObjectsById(String matchIdString, String id) throws ReplacementMarkerException {
87+
String fetchQueryString = replaceIdInRules(matchIdString, id);
88+
MongoQuery fetchQuery = new MongoStringQuery(fetchQueryString);
89+
List<String> objects = objHandler.findObjectsByCondition(fetchQuery);
90+
return objects;
91+
}
7492
}

src/test/java/com/ericsson/ei/extraction/test/TestExtractionHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import com.ericsson.ei.handlers.ExtractionHandler;
3232
import com.ericsson.ei.jmespath.JmesPathInterface;
3333
import com.ericsson.ei.rules.RulesObject;
34-
import com.ericsson.ei.rules.test.TestRulesHandler;
34+
import com.ericsson.ei.rules.TestRulesHandler;
3535
import com.fasterxml.jackson.databind.JsonNode;
3636
import com.fasterxml.jackson.databind.ObjectMapper;
3737

src/test/java/com/ericsson/ei/rules/test/MatchIdRulesHandlerTest.java renamed to src/test/java/com/ericsson/ei/rules/MatchIdRulesHandlerTest.java

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,53 +14,66 @@
1414
See the License for the specific language governing permissions and
1515
limitations under the License.
1616
*/
17-
package com.ericsson.ei.rules.test;
17+
package com.ericsson.ei.rules;
1818

1919
import static org.junit.Assert.assertEquals;
2020

2121
import java.io.File;
22+
import java.io.IOException;
2223

2324
import org.apache.commons.io.FileUtils;
24-
import org.junit.Before;
2525
import org.junit.Test;
2626
import org.powermock.reflect.Whitebox;
27-
import org.slf4j.Logger;
28-
import org.slf4j.LoggerFactory;
2927

30-
import com.ericsson.ei.rules.MatchIdRulesHandler;
28+
import com.ericsson.ei.exception.ReplacementMarkerException;
3129
import com.ericsson.ei.rules.RulesObject;
3230
import com.fasterxml.jackson.databind.ObjectMapper;
3331

3432
public class MatchIdRulesHandlerTest {
3533
private static final String INPUT_FILE_PATH = "src/test/resources/MatchIdRulesHandlerInput.json";
3634
private static final String OUTPUT_FILE_PATH = "src/test/resources/MatchIdRulesHandlerOutput.json";
3735
private static final String EVENT_ID = "e90daae3-bf3f-4b0a-b899-67834fd5ebd0";
38-
private static final Logger LOGGER = LoggerFactory.getLogger(MatchIdRulesHandlerTest.class);
3936

4037
private MatchIdRulesHandler matchIdRulesHandler;
4138

42-
@Before
43-
public void setProperties() {
44-
matchIdRulesHandler = new MatchIdRulesHandler();
45-
Whitebox.setInternalState(matchIdRulesHandler, "replacementMarker", "%IdentifyRulesEventId%");
46-
}
47-
4839
@Test
49-
public void replaceIdInRulesTest() {
50-
String jsonInput = null;
51-
String jsonOutput = null;
52-
RulesObject ruleObject = null;
53-
try {
54-
jsonInput = FileUtils.readFileToString(new File(INPUT_FILE_PATH), "UTF-8");
55-
jsonOutput = FileUtils.readFileToString(new File(OUTPUT_FILE_PATH), "UTF-8");
56-
ObjectMapper objectmapper = new ObjectMapper();
57-
ruleObject = new RulesObject(objectmapper.readTree(jsonInput));
58-
} catch (Exception e) {
59-
LOGGER.error(e.getMessage(), e);
60-
}
40+
public void replaceIdInRulesTest() throws IOException, ReplacementMarkerException {
41+
setMatchingProperty();
42+
String jsonInput = readFile(INPUT_FILE_PATH);
43+
String jsonOutput = readFile(OUTPUT_FILE_PATH);
44+
RulesObject ruleObject = createRulesObject(jsonInput);
6145
String matchIdString = ruleObject.getMatchIdRules();
6246
String replacedId = matchIdRulesHandler.replaceIdInRules(matchIdString, EVENT_ID);
6347
assertEquals(replacedId, jsonOutput);
6448
}
6549

50+
@Test(expected = ReplacementMarkerException.class)
51+
public void replaceIdInRulesExceptionTest() throws IOException, ReplacementMarkerException {
52+
setMismatchingProperty();
53+
String jsonInput = readFile(INPUT_FILE_PATH);
54+
RulesObject ruleObject = createRulesObject(jsonInput);
55+
String matchIdString = ruleObject.getMatchIdRules();
56+
matchIdRulesHandler.replaceIdInRules(matchIdString, EVENT_ID);
57+
}
58+
59+
private RulesObject createRulesObject(String input) throws IOException {
60+
ObjectMapper objectmapper = new ObjectMapper();
61+
RulesObject ruleObject = new RulesObject(objectmapper.readTree(input));
62+
return ruleObject;
63+
}
64+
65+
private String readFile(String path) throws IOException {
66+
return FileUtils.readFileToString(new File(path), "UTF-8");
67+
}
68+
69+
private void setMatchingProperty() {
70+
matchIdRulesHandler = new MatchIdRulesHandler();
71+
Whitebox.setInternalState(matchIdRulesHandler, "replacementMarker",
72+
"%IdentifyRulesEventId%");
73+
}
74+
75+
private void setMismatchingProperty() {
76+
matchIdRulesHandler = new MatchIdRulesHandler();
77+
Whitebox.setInternalState(matchIdRulesHandler, "replacementMarker", "%IdentifyRulesEvent%");
78+
}
6679
}

src/test/java/com/ericsson/ei/rules/test/TestIdRulesHandler.java renamed to src/test/java/com/ericsson/ei/rules/TestIdRulesHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
See the License for the specific language governing permissions and
1515
limitations under the License.
1616
*/
17-
package com.ericsson.ei.rules.test;
17+
package com.ericsson.ei.rules;
1818

1919
import static org.junit.Assert.assertEquals;
2020

src/test/java/com/ericsson/ei/rules/test/TestRulesHandler.java renamed to src/test/java/com/ericsson/ei/rules/TestRulesHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
See the License for the specific language governing permissions and
1515
limitations under the License.
1616
*/
17-
package com.ericsson.ei.rules.test;
17+
package com.ericsson.ei.rules;
1818

1919
import static org.junit.Assert.assertEquals;
2020

src/test/java/com/ericsson/ei/rules/test/TestRulesObject.java renamed to src/test/java/com/ericsson/ei/rules/TestRulesObject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
See the License for the specific language governing permissions and
1515
limitations under the License.
1616
*/
17-
package com.ericsson.ei.rules.test;
17+
package com.ericsson.ei.rules;
1818

1919
import static org.junit.Assert.assertEquals;
2020

src/test/java/com/ericsson/ei/rules/test/TestRulesRestAPI.java renamed to src/test/java/com/ericsson/ei/rules/TestRulesRestAPI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
See the License for the specific language governing permissions and
1515
limitations under the License.
1616
*/
17-
package com.ericsson.ei.rules.test;
17+
package com.ericsson.ei.rules;
1818

1919
import static org.junit.Assert.assertEquals;
2020
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;

src/test/java/com/ericsson/ei/rules/test/TestRulesService.java renamed to src/test/java/com/ericsson/ei/rules/TestRulesService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ericsson.ei.rules.test;
1+
package com.ericsson.ei.rules;
22

33
import static org.junit.Assert.assertEquals;
44

0 commit comments

Comments
 (0)