diff --git a/src/main/java/org/gcube/common/authorization/library/enpoints/AuthorizationEndpointScanner.java b/src/main/java/org/gcube/common/authorization/library/enpoints/AuthorizationEndpointScanner.java index 8c48acc..67c772c 100644 --- a/src/main/java/org/gcube/common/authorization/library/enpoints/AuthorizationEndpointScanner.java +++ b/src/main/java/org/gcube/common/authorization/library/enpoints/AuthorizationEndpointScanner.java @@ -1,7 +1,10 @@ package org.gcube.common.authorization.library.enpoints; +import java.net.URL; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; @@ -10,6 +13,7 @@ import org.gcube.common.scan.ClasspathScanner; import org.gcube.common.scan.ClasspathScannerFactory; import org.gcube.common.scan.matchers.NameMatcher; import org.gcube.common.scan.resources.ClasspathResource; +import org.gcube.common.scope.api.ServiceMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,6 +34,7 @@ public class AuthorizationEndpointScanner { public static synchronized EndpointsContainer endpoints() { if (endpoints==null || endpoints.getEndpoints().size()==0){ + log.trace("starting authorization endpoint retrieving"); Map endpointsMap = new HashMap(); try { @@ -40,28 +45,32 @@ public class AuthorizationEndpointScanner { String defaultInfrastructure = null; int defaultInfraPriority= Integer.MAX_VALUE; - ClasspathScanner scanner = ClasspathScannerFactory.scanner(); - for (ClasspathResource r : scanner.scan(new NameMatcher(configurationPattern))){ - AuthorizationEndpoint endpoint = (AuthorizationEndpoint)um.unmarshal(r.stream()); + for (String r :getEnpointResourceNames()){ + + URL url = Thread.currentThread().getContextClassLoader().getResource(r); + + + AuthorizationEndpoint endpoint = (AuthorizationEndpoint)um.unmarshal(url); if (defaultInfrastructure==null) defaultInfrastructure = endpoint.getInfrastructure(); if (!endpointsMap.containsKey(endpoint.getInfrastructure()) || endpointsMap.get(endpoint.getInfrastructure()).getPriority()> endpoint.getPriority()){ - if ((r.name()).startsWith("default") && endpoint.getPriority() getEnpointResourceNames() { + + ClasspathScanner scanner = ClasspathScannerFactory.scanner(); + Set names = new HashSet(); + for (ClasspathResource r : scanner.scan(new NameMatcher(configurationPattern))) + names.add(r.name()); + return names; + } }