Skip to content

Commit b392514

Browse files
authored
Use a proper classloader for loading services (#958)
1 parent 95c6185 commit b392514

8 files changed

Lines changed: 18 additions & 13 deletions

File tree

aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/SdkJsonDocumentParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ final class SdkJsonDocumentParser implements ShapeSerializer {
4040
static final Map<ShapeId, DocumentConverter> CONVERTERS = new HashMap<>();
4141

4242
static {
43-
for (var impl : ServiceLoader.load(DocumentConverter.class)) {
43+
for (var impl : ServiceLoader.load(DocumentConverter.class, DocumentConverter.class.getClassLoader())) {
4444
CONVERTERS.put(impl.protocol(), impl);
4545
}
4646
}

client/client-core/src/main/java/software/amazon/smithy/java/client/core/plugins/AutoPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public final class AutoPlugin implements ClientPlugin {
2424

2525
static {
2626
List<ClientPlugin> children = new ArrayList<>();
27-
for (var plugin : ServiceLoader.load(AutoClientPlugin.class)) {
27+
for (var plugin : ServiceLoader.load(AutoClientPlugin.class, AutoClientPlugin.class.getClassLoader())) {
2828
children.add(plugin);
2929
}
3030
CHILDREN = Collections.unmodifiableList(children);

client/client-rulesengine/src/main/java/software/amazon/smithy/java/client/rulesengine/RulesEngineBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public final class RulesEngineBuilder {
3333
// Always include the standard builtins.
3434
EXTENSIONS.add(new StdExtension());
3535

36-
for (var ext : ServiceLoader.load(RulesExtension.class)) {
36+
for (var ext : ServiceLoader.load(RulesExtension.class, RulesExtension.class.getClassLoader())) {
3737
EXTENSIONS.add(ext);
3838
}
3939
}

client/dynamic-client/src/main/java/software/amazon/smithy/java/dynamicclient/plugins/DetectProtocolPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public final class DetectProtocolPlugin implements ClientPlugin {
3333
private static final List<ClientProtocolFactory<Trait>> PROTOCOL_FACTORIES = new ArrayList<>();
3434

3535
static {
36-
for (var protocolImpl : ServiceLoader.load(ClientProtocolFactory.class)) {
36+
for (var protocolImpl : ServiceLoader.load(ClientProtocolFactory.class,
37+
ClientProtocolFactory.class.getClassLoader())) {
3738
PROTOCOL_FACTORIES.add(protocolImpl);
3839
}
3940
}

codecs/cbor-codec/src/main/java/software/amazon/smithy/java/cbor/CborSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public final class CborSettings {
1414
static {
1515
final String preferredName = System.getProperty("smithy-java.cbor-provider");
1616
CborSerdeProvider selected = null;
17-
for (var provider : ServiceLoader.load(CborSerdeProvider.class)) {
17+
for (var provider : ServiceLoader.load(CborSerdeProvider.class, CborSerdeProvider.class.getClassLoader())) {
1818
if (preferredName != null) {
1919
if (provider.getName().equals(preferredName)) {
2020
selected = provider;

codecs/json-codec/src/main/java/software/amazon/smithy/java/json/JsonSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public final class JsonSettings {
1919
static {
2020
final String preferredName = System.getProperty("smithy-java.json-provider");
2121
JsonSerdeProvider selected = null;
22-
for (JsonSerdeProvider provider : ServiceLoader.load(JsonSerdeProvider.class)) {
22+
for (var provider : ServiceLoader.load(JsonSerdeProvider.class, JsonSerdeProvider.class.getClassLoader())) {
2323
if (preferredName != null) {
2424
if (provider.getName().equals(preferredName)) {
2525
selected = provider;

core/src/main/java/software/amazon/smithy/java/core/schema/SchemaIndex.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package software.amazon.smithy.java.core.schema;
77

8+
import java.util.ArrayList;
89
import java.util.List;
910
import java.util.ServiceLoader;
1011
import java.util.function.Consumer;
@@ -15,8 +16,11 @@ public abstract class SchemaIndex {
1516
private static final SchemaIndex COMBINED_SCHEMA_INDEX = createCombinedSchemaIndex();
1617

1718
private static SchemaIndex createCombinedSchemaIndex() {
18-
return new CombinedSchemaIndex(
19-
ServiceLoader.load(SchemaIndex.class).stream().map(ServiceLoader.Provider::get).toList());
19+
var schemaIndexes = new ArrayList<SchemaIndex>();
20+
for (var schemaIndex : ServiceLoader.load(SchemaIndex.class, SchemaIndex.class.getClassLoader())) {
21+
schemaIndexes.add(schemaIndex);
22+
}
23+
return new CombinedSchemaIndex(schemaIndexes);
2024
}
2125

2226
public static SchemaIndex getCombinedSchemaIndex() {

server/server-api/src/main/java/software/amazon/smithy/java/server/Server.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ static ServerBuilder<?> builder(String serverName) {
2222
private static ServerBuilder<?> findBuilder(String name) {
2323
ServerProvider selected = null;
2424
InternalLogger logger = InternalLogger.getLogger(Server.class);
25-
List<ServerProvider> providers = ServiceLoader.load(ServerProvider.class)
26-
.stream()
27-
.map(ServiceLoader.Provider::get)
28-
.peek(p -> logger.debug("Discovered server provider {}:{}", p.name(), p.getClass()))
29-
.toList();
25+
List<ServerProvider> providers = new ArrayList<>();
26+
for (var provider : ServiceLoader.load(ServerProvider.class, ServerProvider.class.getClassLoader())) {
27+
logger.debug("Discovered server provider {}:{}", provider.name(), provider.getClass());
28+
providers.add(provider);
29+
}
3030
for (var provider : providers) {
3131
if (provider.name().equals(name)) {
3232
selected = provider;

0 commit comments

Comments
 (0)