From 046498c77c8788d24d84224575f24dde96f061a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Turan=20Utkan=20=C3=96zy=C3=BCrek?= Date: Thu, 4 Jun 2020 11:03:32 +0200 Subject: [PATCH] adding Monetary class' class loader to ServiceLoader's load method so to fix error in Java11 parallel stream loading error --- .../org/javamoney/moneta/internal/OSGIServiceProvider.java | 3 ++- .../org/javamoney/moneta/spi/PriorityAwareServiceProvider.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/moneta-core/src/main/java/org/javamoney/moneta/internal/OSGIServiceProvider.java b/moneta-core/src/main/java/org/javamoney/moneta/internal/OSGIServiceProvider.java index 8a9137679..82f936385 100644 --- a/moneta-core/src/main/java/org/javamoney/moneta/internal/OSGIServiceProvider.java +++ b/moneta-core/src/main/java/org/javamoney/moneta/internal/OSGIServiceProvider.java @@ -17,6 +17,7 @@ import org.osgi.framework.*; +import javax.money.Monetary; import javax.money.spi.ServiceProvider; import java.net.URL; import java.util.*; @@ -97,7 +98,7 @@ public List getServices(Class serviceType) { LOG.log(Level.SEVERE, "could not create services of type: " + serviceType, e); } try{ - for(T service:ServiceLoader.load(serviceType)){ + for(T service:ServiceLoader.load(serviceType, Monetary.class.getClassLoader())){ services.add(service); } return services; diff --git a/moneta-core/src/main/java/org/javamoney/moneta/spi/PriorityAwareServiceProvider.java b/moneta-core/src/main/java/org/javamoney/moneta/spi/PriorityAwareServiceProvider.java index 71e07545a..962c0a6b1 100644 --- a/moneta-core/src/main/java/org/javamoney/moneta/spi/PriorityAwareServiceProvider.java +++ b/moneta-core/src/main/java/org/javamoney/moneta/spi/PriorityAwareServiceProvider.java @@ -16,6 +16,7 @@ package org.javamoney.moneta.spi; import javax.annotation.Priority; +import javax.money.Monetary; import javax.money.spi.ServiceProvider; import java.util.ArrayList; import java.util.Collections; @@ -95,7 +96,7 @@ public static int compareServices(Object o1, Object o2) { private List loadServices(final Class serviceType) { List services = new ArrayList<>(); try { - for (T t : ServiceLoader.load(serviceType)) { + for (T t : ServiceLoader.load(serviceType, Monetary.class.getClassLoader())) { services.add(t); } services.sort(PriorityAwareServiceProvider::compareServices);