Skip to content

Commit a5747d0

Browse files
committed
fixes subsequent regex removal
1 parent a9eacb4 commit a5747d0

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/RegexRemover.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020
package org.restcomm.connect.sms.smpp;
2121

22+
import java.util.ArrayList;
2223
import java.util.List;
2324
import org.apache.commons.lang.StringUtils;
2425
import org.restcomm.connect.dao.entities.IncomingPhoneNumber;
@@ -34,13 +35,20 @@ public class RegexRemover {
3435
* @param numbers
3536
*/
3637
static void removeRegexes(List<IncomingPhoneNumber> numbers) {
38+
//use a list to prevent conc access during iteration
39+
List<IncomingPhoneNumber> toBeRemoved = new ArrayList();
3740
if (numbers != null) {
38-
for (int i = 0; i < numbers.size(); i++) {
39-
IncomingPhoneNumber nAux = numbers.get(i);
41+
for (IncomingPhoneNumber nAux : numbers) {
4042
if (StringUtils.containsAny(nAux.getPhoneNumber(), REGEX_SPECIAL_CHARS)) {
41-
numbers.remove(i);
43+
//mark this as to be removed later
44+
toBeRemoved.add(nAux);
4245
}
4346
}
47+
//finally remove regexes
48+
for (IncomingPhoneNumber nAux : toBeRemoved) {
49+
//this is relying on Java default equals IncomingPhoneNumber
50+
numbers.remove(nAux);
51+
}
4452
}
4553
}
4654
}

restcomm/restcomm.sms/src/test/java/org/restcomm/connect/sms/smpp/SmppMessageHandlerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ public void testRemover() {
7474
numbers.add(builder.build());
7575
builder.setPhoneNumber("+1234*");
7676
numbers.add(builder.build());
77+
builder.setPhoneNumber("+1234.*");
78+
numbers.add(builder.build());
7779
builder.setPhoneNumber("9887");
7880
numbers.add(builder.build());
7981
builder.setPhoneNumber("+");

0 commit comments

Comments
 (0)