Skip to content

Commit 555e756

Browse files
committed
Fix for issue #572
Signed-off-by: Alexander Veit <alexander.veit@gmx.net>
1 parent da0c59a commit 555e756

2 files changed

Lines changed: 24 additions & 16 deletions

File tree

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/NetworkModuleService.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,20 @@ private NetworkModuleService() {
5555
* @throws IllegalArgumentException is case the URI is invalid or there is no {@link NetworkModule} installed for
5656
* the URI scheme
5757
*/
58-
public synchronized static void validateURI(String brokerUri) throws IllegalArgumentException {
58+
public static void validateURI(String brokerUri) throws IllegalArgumentException {
5959
try {
6060
URI uri = new URI(brokerUri);
6161
String scheme = uri.getScheme();
6262
if (scheme == null || scheme.isEmpty()) {
6363
throw new IllegalArgumentException("missing scheme in broker URI: " + brokerUri);
6464
}
6565
scheme = scheme.toLowerCase();
66-
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
67-
if (factory.getSupportedUriSchemes().contains(scheme)) {
68-
factory.validateURI(uri);
69-
return;
66+
synchronized (FACTORY_SERVICE_LOADER) {
67+
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
68+
if (factory.getSupportedUriSchemes().contains(scheme)) {
69+
factory.validateURI(uri);
70+
return;
71+
}
7072
}
7173
}
7274
throw new IllegalArgumentException("no NetworkModule installed for scheme \"" + scheme
@@ -93,9 +95,11 @@ public static NetworkModule createInstance(String address, MqttConnectOptions op
9395
URI brokerUri = new URI(address);
9496
applyRFC3986AuthorityPatch(brokerUri);
9597
String scheme = brokerUri.getScheme().toLowerCase();
96-
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
97-
if (factory.getSupportedUriSchemes().contains(scheme)) {
98-
return factory.createNetworkModule(brokerUri, options, clientId);
98+
synchronized (FACTORY_SERVICE_LOADER) {
99+
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
100+
if (factory.getSupportedUriSchemes().contains(scheme)) {
101+
return factory.createNetworkModule(brokerUri, options, clientId);
102+
}
99103
}
100104
}
101105
/*

org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/NetworkModuleService.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,20 @@ private NetworkModuleService() {
5353
* @throws IllegalArgumentException is case the URI is invalid or there is no {@link NetworkModule} installed for
5454
* the URI scheme
5555
*/
56-
public synchronized static void validateURI(String brokerUri) throws IllegalArgumentException {
56+
public static void validateURI(String brokerUri) throws IllegalArgumentException {
5757
try {
5858
URI uri = new URI(brokerUri);
5959
String scheme = uri.getScheme();
6060
if (scheme == null || scheme.isEmpty()) {
6161
throw new IllegalArgumentException("missing scheme in broker URI: " + brokerUri);
6262
}
6363
scheme = scheme.toLowerCase();
64-
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
65-
if (factory.getSupportedUriSchemes().contains(scheme)) {
66-
factory.validateURI(uri);
67-
return;
64+
synchronized (FACTORY_SERVICE_LOADER) {
65+
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
66+
if (factory.getSupportedUriSchemes().contains(scheme)) {
67+
factory.validateURI(uri);
68+
return;
69+
}
6870
}
6971
}
7072
throw new IllegalArgumentException("no NetworkModule installed for scheme \"" + scheme
@@ -91,9 +93,11 @@ public static NetworkModule createInstance(String address, MqttConnectionOptions
9193
URI brokerUri = new URI(address);
9294
applyRFC3986AuthorityPatch(brokerUri);
9395
String scheme = brokerUri.getScheme().toLowerCase();
94-
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
95-
if (factory.getSupportedUriSchemes().contains(scheme)) {
96-
return factory.createNetworkModule(brokerUri, options, clientId);
96+
synchronized (FACTORY_SERVICE_LOADER) {
97+
for (NetworkModuleFactory factory : FACTORY_SERVICE_LOADER) {
98+
if (factory.getSupportedUriSchemes().contains(scheme)) {
99+
return factory.createNetworkModule(brokerUri, options, clientId);
100+
}
97101
}
98102
}
99103
/*

0 commit comments

Comments
 (0)