Skip to content

Commit 7caadea

Browse files
committed
correctly handle nonexistent metadata ID
Signed-off-by: Richard Ogin <rogin@users.noreply.github.com>
1 parent 7c53aef commit 7caadea

File tree

2 files changed

+104
-3
lines changed

2 files changed

+104
-3
lines changed

server/src/com/mirth/connect/server/userutil/DestinationSet.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ public boolean removeAllExcept(Object metaDataIdOrConnectorName) {
101101
if (metaDataIds != null) {
102102
Integer metaDataId = convertToMetaDataId(metaDataIdOrConnectorName);
103103

104-
if (metaDataId != null) {
105-
return metaDataIds.retainAll(Collections.singleton(metaDataId));
106-
}
104+
Set<Integer> set = (metaDataId != null) ? Collections.singleton(metaDataId) : Collections.emptySet();
105+
106+
return metaDataIds.retainAll(set);
107107
}
108108

109109
return false;
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package com.mirth.connect.server.userutil;
2+
3+
import static org.junit.Assert.assertFalse;
4+
import static org.junit.Assert.assertTrue;
5+
6+
import java.util.HashMap;
7+
import java.util.HashSet;
8+
import java.util.Map;
9+
import java.util.Set;
10+
11+
import org.junit.Test;
12+
13+
import com.mirth.connect.donkey.model.message.ConnectorMessage;
14+
import com.mirth.connect.donkey.server.Constants;
15+
import com.mirth.connect.userutil.ImmutableConnectorMessage;
16+
17+
public class DestinationSetTest {
18+
private Set<Integer> createMetadataIds() {
19+
Set<Integer> metaDataIds = new HashSet<>();
20+
metaDataIds.add(1);
21+
metaDataIds.add(3);
22+
metaDataIds.add(5);
23+
metaDataIds.add(7);
24+
metaDataIds.add(9);
25+
26+
return metaDataIds;
27+
}
28+
29+
private Map<String, Integer> createDestinationIdMap() {
30+
Map<String, Integer> destinationIdMap = new HashMap<>();
31+
destinationIdMap.put("One", 1);
32+
destinationIdMap.put("Three", 3);
33+
destinationIdMap.put("Five", 5);
34+
destinationIdMap.put("Seven", 7);
35+
destinationIdMap.put("Nine", 9);
36+
37+
return destinationIdMap;
38+
}
39+
40+
private ImmutableConnectorMessage createMessage(Map<String, Integer> destinationIdMap, Set<Integer> metadataIds) {
41+
ConnectorMessage cm = new ConnectorMessage();
42+
43+
if(metadataIds != null) {
44+
cm.getSourceMap().put(Constants.DESTINATION_SET_KEY, metadataIds);
45+
}
46+
47+
if(destinationIdMap != null) {
48+
return new ImmutableConnectorMessage(cm,true, destinationIdMap);
49+
} else {
50+
return new ImmutableConnectorMessage(cm, true);
51+
}
52+
}
53+
54+
@Test
55+
public void test_removeAllExceptObject_withSourceMap_removeAllForMetadataIdWhichDoesNotExist() throws Exception {
56+
Set<Integer> metaDataIds = createMetadataIds();
57+
DestinationSet destinationSet = new DestinationSet(createMessage(createDestinationIdMap(), metaDataIds));
58+
59+
assertTrue(destinationSet.removeAllExcept("I_DONT_EXIST"));
60+
assertTrue(metaDataIds.isEmpty());
61+
}
62+
63+
@Test
64+
public void test_removeAllExceptObject_withSourceMap_removeForMatchingMetadataId() throws Exception {
65+
Set<Integer> metaDataIds = createMetadataIds();
66+
DestinationSet destinationSet = new DestinationSet(createMessage(createDestinationIdMap(), metaDataIds));
67+
68+
assertTrue(destinationSet.removeAllExcept(3));
69+
assertTrue(metaDataIds.size() == 1);
70+
}
71+
72+
@Test
73+
public void test_removeAllExceptObject_withSourceMap_removeForMatchingConnectorName() throws Exception {
74+
Set<Integer> metaDataIds = createMetadataIds();
75+
DestinationSet destinationSet = new DestinationSet(createMessage(createDestinationIdMap(), metaDataIds));
76+
77+
assertTrue(destinationSet.removeAllExcept("Seven"));
78+
assertTrue(metaDataIds.size() == 1);
79+
}
80+
81+
@Test
82+
public void test_removeAllExceptObject_noSourceMap_noRemovalForMetadataIdWhichDoesNotExist() throws Exception {
83+
DestinationSet destinationSet = new DestinationSet(createMessage(createDestinationIdMap(), null));
84+
85+
assertFalse(destinationSet.removeAllExcept("I_DONT_EXIST"));
86+
}
87+
88+
@Test
89+
public void test_removeAllExceptObject_noSourceMap_noRemovalForMatchingMetadataId() throws Exception {
90+
DestinationSet destinationSet = new DestinationSet(createMessage(createDestinationIdMap(), null));
91+
92+
assertFalse(destinationSet.removeAllExcept(3));
93+
}
94+
95+
@Test
96+
public void test_removeAllExceptObject_noSourceMap_noRemovalForMatchingConnectorName() throws Exception {
97+
DestinationSet destinationSet = new DestinationSet(createMessage(createDestinationIdMap(), null));
98+
99+
assertFalse(destinationSet.removeAllExcept("Seven"));
100+
}
101+
}

0 commit comments

Comments
 (0)