diff --git a/src/main/java/org/gcube/gcat/client/GCatClientDiscovery.java b/src/main/java/org/gcube/gcat/client/GCatClientDiscovery.java index c8aa7b5..7e05114 100644 --- a/src/main/java/org/gcube/gcat/client/GCatClientDiscovery.java +++ b/src/main/java/org/gcube/gcat/client/GCatClientDiscovery.java @@ -51,9 +51,9 @@ public class GCatClientDiscovery { - private static SimpleQuery queryForService(){ + private static SimpleQuery queryForService(String serviceClass){ return ICFactory.queryFor(GCoreEndpoint.class) - .addCondition(String.format(classFormat, GCatConstants.SERVICE_CLASS)) + .addCondition(String.format(classFormat, serviceClass)) .addCondition(String.format(nameFormat, GCatConstants.SERVICE_NAME)) .addCondition(String.format(statusFormat)) .addVariable("$entry","$resource/Profile/AccessPoint/RunningInstanceInterfaces/Endpoint") @@ -61,9 +61,9 @@ public class GCatClientDiscovery { .setResult("$entry/text()"); } - private static SimpleQuery queryForProxy(){ + private static SimpleQuery queryForProxy(String serviceClass){ return ICFactory.queryFor(ServiceEndpoint.class) - .addCondition(String.format(serviceEndpointCategoryFormat, GCatConstants.SERVICE_CLASS)) + .addCondition(String.format(serviceEndpointCategoryFormat, serviceClass)) .addCondition(String.format(serviceEndpointNameFormat, GCatConstants.SERVICE_NAME)) .addCondition(String.format(serviceEndpointstatusFormat)) .addVariable("$entry","$resource/Profile/AccessPoint/Interface/Endpoint") @@ -76,17 +76,24 @@ public class GCatClientDiscovery { List addresses = new ArrayList<>(); try { - SimpleQuery proxyQuery = queryForProxy(); + SimpleQuery proxyQuery = queryForProxy(GCatConstants.SERVICE_CLASS); addresses = ICFactory.client().submit(proxyQuery); if(addresses==null || addresses.isEmpty()){ - throw new Exception("No ResourceRegistry Proxy Found"); + proxyQuery = queryForProxy(GCatConstants.OLD_SERVICE_CLASS); + addresses = ICFactory.client().submit(proxyQuery); + if(addresses==null || addresses.isEmpty()){ + throw new Exception("No ResourceRegistry Proxy Found"); + } } } catch (Exception e) { logger.debug("{}. Looking for RunningInstance.", e.getMessage()); - SimpleQuery serviceQuery = queryForService(); + SimpleQuery serviceQuery = queryForService(GCatConstants.SERVICE_CLASS); addresses = ICFactory.client().submit(serviceQuery); + if(addresses==null || addresses.isEmpty()){ + serviceQuery = queryForService(GCatConstants.OLD_SERVICE_CLASS); + addresses = ICFactory.client().submit(serviceQuery); + } } - return addresses; } @@ -115,7 +122,7 @@ public class GCatClientDiscovery { List addresses = getAddresses(); if(addresses==null || addresses.isEmpty()){ - String error = String.format("No %s:%s found in the current context", GCatConstants.SERVICE_CLASS, GCatConstants.SERVICE_NAME); + String error = String.format("No (%s or %s):%s found in the current context", GCatConstants.SERVICE_CLASS, GCatConstants.OLD_SERVICE_CLASS, GCatConstants.SERVICE_NAME); throw new RuntimeException(error); } Random random = new Random();