diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java index 221508b..8903375 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java @@ -61,8 +61,7 @@ public class DataMinerService { */ } - - + public SClient getClient(String token) throws Exception { ServiceCredentials serviceCredential = getServiceCredentials(token); @@ -85,8 +84,40 @@ public class DataMinerService { */ } - - + + /** + * + * @param token + * @param serviceAddressUrl + * valid url for example: + * http://dataminer1-devnext.d4science.org/wps/ + * @return + * @throws Exception + */ + public SClient getClient(String token, String serviceAddressUrl) + throws Exception { + + ServiceCredentials serviceCredential = getServiceCredentials(token); + + /* + * if (cachedSClients.isEmpty() || + * !cachedSClients.containsKey(serviceCredential.getScope())) { + */ + + SClientBuilder sBuilder = new SClient4WPSBuilder(serviceCredential, + serviceAddressUrl); + SClientDirector director = new SClientDirector(); + director.setSClientBuilder(sBuilder); + director.constructSClient(); + SClient sClient = director.getSClient(); + logger.debug("" + sClient); + // cachedSClients.put(serviceCredential.getScope(), sClient); + return sClient; + /* + * } else { return cachedSClients.get(serviceCredential.getScope()); } + */ + + } private ServiceCredentials getServiceCredentials() throws ServiceException { String userName = null; @@ -128,9 +159,9 @@ public class DataMinerService { return serviceCredential; } - - - private ServiceCredentials getServiceCredentials(String token) throws ServiceException { + + private ServiceCredentials getServiceCredentials(String token) + throws ServiceException { String userName = null; String scope = null; @@ -141,11 +172,13 @@ public class DataMinerService { token = Constants.DEFAULT_TOKEN; } else { logger.debug("Production Mode"); - if(token==null|| token.isEmpty()){ - logger.error("Error Retrieving token credentials: token="+token); - throw new ServiceException("Error Retrieving token credentials: token="+token); + if (token == null || token.isEmpty()) { + logger.error("Error Retrieving token credentials: token=" + + token); + throw new ServiceException( + "Error Retrieving token credentials: token=" + token); } - + try { logger.debug("Retrieving token credentials"); AuthorizationEntry entry = authorizationService().get(token); @@ -168,6 +201,5 @@ public class DataMinerService { return serviceCredential; } - } diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java index 535fb02..fdb749f 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java @@ -94,6 +94,11 @@ public class SClient4WPS extends SClient { private SClient4WPSSession wpsClient; + /** + * + * @param serviceCredentials + * @throws ServiceException + */ public SClient4WPS(ServiceCredentials serviceCredentials) throws ServiceException { super(); @@ -164,6 +169,62 @@ public class SClient4WPS extends SClient { } + /** + * + * @param serviceCredentials + * @param serviceAddressUrl + * valid url for example: + * http://dataminer1-devnext.d4science.org/wps/ + * @throws ServiceException + */ + public SClient4WPS(ServiceCredentials serviceCredentials, + String serviceAddressUrl) throws ServiceException { + super(); + process = new HashMap<>(); + runningProcess = new HashMap<>(); + if (serviceCredentials == null) { + logger.error("Error credetials are null!"); + throw new ServiceException("Error credetials are null!"); + } else { + String token = serviceCredentials.getToken(); + if (token == null || token.isEmpty()) { + logger.error("Error authorization token invalid: " + token); + throw new ServiceException( + "Error authorization token invalid: " + token); + } else { + wpsToken = token; + } + + String userName = serviceCredentials.getUsername(); + if (userName == null || userName.isEmpty()) { + logger.error("Error invalid user name: " + userName); + throw new ServiceException("Error invalid user name: " + + userName); + } else { + wpsUser = userName; + } + + logger.debug("Service Address:" + serviceAddressUrl); + if (serviceAddressUrl == null || serviceAddressUrl.isEmpty()) { + logger.error("Invalid DataMiner service address: " + + serviceAddressUrl); + throw new ServiceException( + "Invalid DataMiner service address: " + + serviceAddressUrl); + } else { + logger.info("DataMiner service address: " + serviceAddressUrl); + // http://dataminer1-devnext.d4science.org/wps/WebProcessingService + wpsProcessingServlet = serviceAddressUrl + + Constants.WPSWebProcessingService; + wpsCancelComputationServlet = serviceAddressUrl + + Constants.WPSCancelComputationServlet; + + } + + } + + } + private SClient4WPSSession createWPSClientSession() { if (wpsClient == null) { wpsClient = new SClient4WPSSession(wpsUser, wpsToken); @@ -612,12 +673,11 @@ public class SClient4WPS extends SClient { if (node == null) return; - logger.debug("Node Name: " + node.getNodeName()); if (node.getNodeName() == null) { return; } - + if (node.getFirstChild() != null) { logger.debug("Node Value: " + node.getFirstChild().getNodeValue()); } else { @@ -625,7 +685,6 @@ public class SClient4WPS extends SClient { return; } - String text; switch (node.getNodeName()) { case "d4science:Data": diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPSBuilder.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPSBuilder.java index fa2abe6..622a187 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPSBuilder.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPSBuilder.java @@ -1,6 +1,5 @@ package org.gcube.data.analysis.dataminermanagercl.server.dmservice; - import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials; import org.gcube.data.analysis.dataminermanagercl.shared.exception.ServiceException; import org.slf4j.Logger; @@ -17,10 +16,30 @@ public class SClient4WPSBuilder extends SClientBuilder { private static Logger logger = LoggerFactory .getLogger(SClient4WPSBuilder.class); private ServiceCredentials serviceCredendials; + private String serviceAddressUrl; + private boolean useUrl; + /** + * + * @param serviceCredentials + */ public SClient4WPSBuilder(ServiceCredentials serviceCredentials) { - this.serviceCredendials= serviceCredentials; + this.serviceCredendials = serviceCredentials; + this.useUrl = false; + } + /** + * + * @param serviceCredentials + * @param serviceAddressUrl + * valid url for example: + * http://dataminer1-devnext.d4science.org/wps/ + */ + public SClient4WPSBuilder(ServiceCredentials serviceCredentials, + String serviceAddressUrl) { + this.serviceCredendials = serviceCredentials; + this.serviceAddressUrl = serviceAddressUrl; + this.useUrl = true; } @Override @@ -28,13 +47,20 @@ public class SClient4WPSBuilder extends SClientBuilder { try { logger.debug("Build SC4WPS"); logger.debug("ServiceCredentials: " + serviceCredendials); - SClient sClient = new SClient4WPS(serviceCredendials); - + SClient sClient; + if (useUrl) { + logger.debug("Use Url: " + useUrl); + logger.debug("DataMiner Service Address: " + serviceAddressUrl); + sClient = new SClient4WPS(serviceCredendials, serviceAddressUrl); + } else { + logger.debug("Use Url: " + useUrl); + sClient = new SClient4WPS(serviceCredendials); + } sClientSpec.setSClient(sClient); } catch (Throwable e) { logger.error(e.getLocalizedMessage()); e.printStackTrace(); - throw new ServiceException(e.getLocalizedMessage(),e); + throw new ServiceException(e.getLocalizedMessage(), e); } }