Skip to content

Commit 4de95d8

Browse files
committed
Make CloudEventValidatorProvider thread safe (cloudevents#650)
Signed-off-by: Pierangelo Di Pilato <[email protected]>
1 parent d01caf0 commit 4de95d8

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

core/src/main/java/io/cloudevents/core/provider/CloudEventValidatorProvider.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import io.cloudevents.CloudEvent;
2020
import io.cloudevents.core.validator.CloudEventValidator;
2121

22-
import java.util.Iterator;
23-
import java.util.ServiceConfigurationError;
22+
import java.util.ArrayList;
23+
import java.util.Collection;
2424
import java.util.ServiceLoader;
2525

2626
/**
@@ -30,10 +30,14 @@ public class CloudEventValidatorProvider {
3030

3131
private static final CloudEventValidatorProvider cloudEventValidatorProvider = new CloudEventValidatorProvider();
3232

33-
private final ServiceLoader<CloudEventValidator> loader;
33+
private final Collection<CloudEventValidator> validators;
3434

35-
private CloudEventValidatorProvider(){
36-
loader = ServiceLoader.load(CloudEventValidator.class);
35+
private CloudEventValidatorProvider() {
36+
final ServiceLoader<CloudEventValidator> loader = ServiceLoader.load(CloudEventValidator.class);
37+
this.validators = new ArrayList<>(2);
38+
for (CloudEventValidator cloudEventValidator : loader) {
39+
validators.add(cloudEventValidator);
40+
}
3741
}
3842

3943
public static CloudEventValidatorProvider getInstance() {
@@ -42,10 +46,11 @@ public static CloudEventValidatorProvider getInstance() {
4246

4347
/**
4448
* iterates through available Cloudevent validators.
45-
* @param cloudEvent
49+
*
50+
* @param cloudEvent event to validate.
4651
*/
47-
public void validate(CloudEvent cloudEvent){
48-
for (final CloudEventValidator validator : loader) {
52+
public void validate(CloudEvent cloudEvent) {
53+
for (final CloudEventValidator validator : validators) {
4954
validator.validate(cloudEvent);
5055
}
5156
}

0 commit comments

Comments
 (0)