From de3dfa5170625ffb738d4af6bc69604341e17790 Mon Sep 17 00:00:00 2001 From: Andy McCright Date: Mon, 9 Dec 2019 13:25:13 -0600 Subject: [PATCH] 238: Remove recursive classloader check in loadSpi --- .../client/spi/RestClientBuilderResolver.java | 29 +++++++------------ .../rest/client/spi/package-info.java | 2 +- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/api/src/main/java/org/eclipse/microprofile/rest/client/spi/RestClientBuilderResolver.java b/api/src/main/java/org/eclipse/microprofile/rest/client/spi/RestClientBuilderResolver.java index 5552d368..cccfd182 100644 --- a/api/src/main/java/org/eclipse/microprofile/rest/client/spi/RestClientBuilderResolver.java +++ b/api/src/main/java/org/eclipse/microprofile/rest/client/spi/RestClientBuilderResolver.java @@ -1,6 +1,6 @@ /* ******************************************************************************* - * Copyright (c) 2016-2017 Contributors to the Eclipse Foundation + * Copyright (c) 2016-2019 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. @@ -98,26 +98,19 @@ private static RestClientBuilderResolver loadSpi(ClassLoader cl) { return null; } - // start from the root CL and go back down to the TCCL - PrivilegedAction action = () -> cl.getParent(); - RestClientBuilderResolver resolver = loadSpi(AccessController.doPrivileged(action)); + RestClientBuilderResolver instance = null; - if (resolver == null) { - ServiceLoader sl = ServiceLoader.load( - RestClientBuilderResolver.class, cl); - for (RestClientBuilderResolver spi : sl) { - if (resolver != null) { - throw new IllegalStateException( - "Multiple RestClientBuilderResolver implementations found: " - + spi.getClass().getName() + " and " - + resolver.getClass().getName()); - } - else { - resolver = spi; - } + ServiceLoader sl = ServiceLoader.load(RestClientBuilderResolver.class, cl); + for (RestClientBuilderResolver spi : sl) { + if (instance != null) { + throw new IllegalStateException("Multiple RestClientBuilderResolver implementations found: " + + spi.getClass().getName() + " and " + + instance.getClass().getName()); } + instance = spi; } - return resolver; + + return instance; } /** diff --git a/api/src/main/java/org/eclipse/microprofile/rest/client/spi/package-info.java b/api/src/main/java/org/eclipse/microprofile/rest/client/spi/package-info.java index 89e7e019..a43a5e15 100644 --- a/api/src/main/java/org/eclipse/microprofile/rest/client/spi/package-info.java +++ b/api/src/main/java/org/eclipse/microprofile/rest/client/spi/package-info.java @@ -23,5 +23,5 @@ * provide additional functionality for MP Rest Clients. * */ -@org.osgi.annotation.versioning.Version("1.1") +@org.osgi.annotation.versioning.Version("1.1.1") package org.eclipse.microprofile.rest.client.spi;