From e1b2f2eb13db079a3f16fc981d1a33e26db0d895 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Thu, 16 Apr 2020 16:18:04 +0200 Subject: [PATCH] ref 19081: DM Pool Manager uses a deprecated social networking api https://support.d4science.org/issues/19081 Updated to new Social Networking API --- .classpath | 6 +- .settings/org.eclipse.core.resources.prefs | 1 + .settings/org.eclipse.wst.common.component | 2 +- changelog.xml | 3 + pom.xml | 2 +- .../DMPMClientConfiguratorManager.java | 135 +++--- .../dataminer/poolmanager/util/SendMail.java | 383 ++++++++---------- .../util/exception/EMailException.java | 24 +- src/main/webapp/WEB-INF/.gitignore | 5 + .../dataminerpoolmanager/SendMailTest.java | 38 ++ 10 files changed, 301 insertions(+), 298 deletions(-) create mode 100644 src/main/webapp/WEB-INF/.gitignore create mode 100644 src/test/java/org/gcube/dataanalysis/dataminerpoolmanager/SendMailTest.java diff --git a/.classpath b/.classpath index e50289f..5c3ac53 100755 --- a/.classpath +++ b/.classpath @@ -17,7 +17,11 @@ - + + + + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 1c075a8..a931bf8 100755 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -2,4 +2,5 @@ eclipse.preferences.version=1 encoding***REMOVED***src/main/java=UTF-8 encoding***REMOVED***src/main/resources=UTF-8 encoding***REMOVED***src/test/java=UTF-8 +encoding***REMOVED***src/test/resources=UTF-8 encoding/=UTF-8 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 0da405d..b6b38a3 100755 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,5 @@ - + diff --git a/changelog.xml b/changelog.xml index b185ddf..51865af 100644 --- a/changelog.xml +++ b/changelog.xml @@ -1,4 +1,7 @@ + + Updated to new Social Networking API [ticket #19081] + Updated to Git and Jenkins Knime 4.1 added [ticket #18190] diff --git a/pom.xml b/pom.xml index 4259558..01496ee 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.dataanalysis dataminer-pool-manager war - 2.6.0 + 2.7.0-SNAPSHOT dataminer-pool-manager DataMiner Pool Manager is a service to support the integration of algorithms in D4Science Infrastructure diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java index 650ab5c..d67ebac 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java @@ -1,7 +1,9 @@ package org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration; ***REMOVED*** +import java.util.ArrayList; import java.util.Iterator; +***REMOVED*** import java.util.Properties; ***REMOVED*** @@ -11,105 +13,90 @@ import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.Config ***REMOVED*** import org.tmatesoft.svn.core.SVNException; -public class DMPMClientConfiguratorManager -{ - private final Logger logger; +public class DMPMClientConfiguratorManager { + private final Logger logger; private Properties defaultAdmins; - private String admins; - + static DMPMClientConfiguratorManager instance; - - private ScopedCacheMap cacheMap; - - private DMPMClientConfiguratorManager () - { - this.admins = null; + + private ScopedCacheMap cacheMap; + + private DMPMClientConfiguratorManager() { this.cacheMap = new ScopedCacheMap(); this.logger = LoggerFactory.getLogger(DMPMClientConfiguratorManager.class); this.defaultAdmins = new Properties(); - - try - { + + try { this.defaultAdmins.load(this.getClass().getResourceAsStream("/default.admins")); this.logger.debug("Default users successfully loaded"); - ***REMOVED*** catch (Exception e) - { - this.logger.error("Unable to get default users",e); + ***REMOVED*** catch (Exception e) { + this.logger.error("Unable to get default users", e); ***REMOVED*** ***REMOVED*** - - private ClientConfigurationCache getCurrentCache () - { + + private ClientConfigurationCache getCurrentCache() { String currentScope = ScopeProvider.instance.get(); - this.logger.debug("Current scope = "+currentScope); + this.logger.debug("Current scope = " + currentScope); this.logger.debug("Getting current configuration cache"); ClientConfigurationCache cache = this.cacheMap.get(currentScope); - - if (cache == null) - { - this.logger.debug("Cache not created yet, creating..."); - cache = new ClientConfigurationCache (); - this.cacheMap.put(currentScope, cache); - - ***REMOVED*** - - return cache; - - -***REMOVED*** - - public static DMPMClientConfiguratorManager getInstance () - { - if (instance == null) instance = new DMPMClientConfiguratorManager(); - + if (cache == null) { + this.logger.debug("Cache not created yet, creating..."); + cache = new ClientConfigurationCache(); + this.cacheMap.put(currentScope, cache); + + ***REMOVED*** + + return cache; + +***REMOVED*** + + public static DMPMClientConfiguratorManager getInstance() { + if (instance == null) + instance = new DMPMClientConfiguratorManager(); + return instance; ***REMOVED*** - - public Configuration getProductionConfiguration () - { + + public Configuration getProductionConfiguration() { return new ConfigurationImpl(CONFIGURATIONS.PROD, getCurrentCache()); ***REMOVED*** - - public Configuration getStagingConfiguration () - { + + public Configuration getStagingConfiguration() { return new ConfigurationImpl(CONFIGURATIONS.STAGE, getCurrentCache()); ***REMOVED*** - - public String getDefaultAdmins () - { - if (this.admins == null && this.defaultAdmins.isEmpty()) this.admins= "ciro.formisano"; - else if (admins == null) - { - Iterator keys = this.defaultAdmins.keySet().iterator(); - StringBuilder response = new StringBuilder(); - - while (keys.hasNext()) - { - String key = (String) keys.next(); - response.append(this.defaultAdmins.getProperty(key)).append(", "); - ***REMOVED*** - - this.admins = response.substring(0, response.length()-2); + + public List getDefaultAdmins() { + List admins = new ArrayList(); + + if (defaultAdmins == null || defaultAdmins.isEmpty()) { + admins.add("statistical.manager"); + ***REMOVED*** else { + Iterator keys = this.defaultAdmins.keySet().iterator(); + + while (keys.hasNext()) { + String key = (String) keys.next(); + admins.add(defaultAdmins.getProperty(key)); + ***REMOVED*** + ***REMOVED*** - - this.logger.debug("Default admins list "+this.admins); - return this.admins; + + this.logger.debug("Default admins list: " + admins); + return admins; ***REMOVED*** - - + public static void main(String[] args) throws IOException, SVNException { DMPMClientConfiguratorManager a = new DMPMClientConfiguratorManager(); ScopeProvider.instance.set("/gcube/devNext/NextNext"); - ***REMOVED***SecurityTokenProvider.instance.set("708e7eb8-11a7-4e9a-816b-c9ed7e7e99fe-98187548"); - - System.out.println("RESULT 1"+a.getStagingConfiguration().getSVNCRANDepsList()); - System.out.println("RESULT 2"+a.getProductionConfiguration().getRepository()); - System.out.println("RESULT 3"+a.getStagingConfiguration().getSVNRepository().getPath()); - ***REMOVED***System.out.println(a.getRepo()); - ***REMOVED***System.out.println(a.getAlgoRepo()); - ***REMOVED***System.out.println(a.getSVNRepo()); + ***REMOVED*** SecurityTokenProvider.instance.set("708e7eb8-11a7-4e9a-816b-c9ed7e7e99fe-98187548"); + + System.out.println("RESULT 1" + a.getStagingConfiguration().getSVNCRANDepsList()); + System.out.println("RESULT 2" + a.getProductionConfiguration().getRepository()); + System.out.println("RESULT 3" + a.getStagingConfiguration().getSVNRepository().getPath()); + ***REMOVED*** System.out.println(a.getRepo()); + ***REMOVED*** System.out.println(a.getAlgoRepo()); + ***REMOVED*** System.out.println(a.getSVNRepo()); ***REMOVED*** ***REMOVED*** diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SendMail.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SendMail.java index 9c933d3..ace7382 100644 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SendMail.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SendMail.java @@ -8,12 +8,10 @@ import static org.gcube.resources.discovery.icclient.ICFactory.queryFor; ***REMOVED*** ***REMOVED*** import java.io.OutputStreamWriter; -import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; ***REMOVED*** import java.net.URLConnection; -import java.net.URLEncoder; -***REMOVED*** +import java.util.ArrayList; ***REMOVED*** import org.apache.http.client.methods.HttpGet; @@ -24,140 +22,134 @@ import org.apache.http.util.EntityUtils; import org.gcube.common.authorization.library.AuthorizationEntry; ***REMOVED*** import org.gcube.common.resources.gcore.GCoreEndpoint; -***REMOVED*** import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.DMPMClientConfiguratorManager; import org.gcube.dataanalysis.dataminer.poolmanager.util.exception.EMailException; import org.gcube.resources.discovery.client.api.DiscoveryClient; import org.gcube.resources.discovery.client.queries.api.SimpleQuery; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; ***REMOVED*** ***REMOVED*** +public class SendMail { -public class SendMail { + private Logger logger = LoggerFactory.getLogger(SendMail.class); + private final String WRITE_MESSAGE_ADDRESS_PATH = "2/messages/write-message?gcube-token=", + USER_ROLES_ADDRESS_PATH = "2/users/get-usernames-by-role?role-name=DataMiner-Manager&gcube-token=", + SOCIAL_SERVICE_QUERY_CONDITION = "$resource/Profile/ServiceName/text() eq 'SocialNetworking'", + SOCIAL_SERVICE_URI = "jersey-servlet", JSON_MIME_TYPE = "application/json"; + + private String socialServiceAddress; -***REMOVED*** - private final String WRITE_MESSAGE_ADDRESS_PATH ="messages/writeMessageToUsers?gcube-token=", - USER_ROLES_ADDRESS_PATH ="2/users/get-usernames-by-role?role-name=DataMiner-Manager&gcube-token=", - ENCODING = "UTF-8", - SENDER_PARAMETER_FORMAT = "&sender=dataminer&recipients=%s&subject=%s&body=%s", - SOCIAL_SERVICE_QUERY_CONDITION ="$resource/Profile/ServiceName/text() eq 'SocialNetworking'", - SOCIAL_SERVICE_URI="jersey-servlet", - JSON_MIME_TYPE = "application/json"; - public SendMail() { - this.logger = LoggerFactory.getLogger(SendMail.class); + ***REMOVED*** - private String getRequestMessage (String addressPath) - { - String serviceAddress = this.getSocialService(); - StringBuilder requestMessageBuilder = new StringBuilder(serviceAddress); + public void sendNotification(String subject, String body) throws EMailException { + logger.debug("SendNotification"); + logger.debug("Notification Subject: " + subject); + logger.debug("Notification Body: " + body); + + retrieveSocialService(); + + String postBody = createPostBody(subject, body); + String requestForMessage = getRequestMessage(WRITE_MESSAGE_ADDRESS_PATH); - if (!serviceAddress.endsWith("/")) requestMessageBuilder.append('/'); - - requestMessageBuilder.append(addressPath).append(SecurityTokenProvider.instance.get()); - String requestForMessage = requestMessageBuilder.toString(); - this.logger.debug("Request "+requestForMessage); - return requestForMessage; + sendPostRequest(requestForMessage, postBody); + ***REMOVED*** - - public void sendNotification(String subject, String body) throws EMailException - { - this.logger.debug("Sending mail notification for "+subject); - this.logger.debug("Body "+body); - + private String createPostBody(String subject, String body) throws EMailException { + try { + List recipientsList = getRecipients(); + if (recipientsList == null || recipientsList.isEmpty()) { + logger.error("Invalid recipient list: " + recipientsList); + throw new EMailException("Unable to send email notification. Invalid recipient list:" + recipientsList); + ***REMOVED*** + ***REMOVED*** {"subject": "subject-content", "body": "body-content", + ***REMOVED*** "recipients":[{"id":"userid"***REMOVED***]***REMOVED*** - ***REMOVED***AnalysisLogger.getLogger().debug("Emailing System->Request url is going to be " + requestForMessage); + JSONObject data = new JSONObject(); + data.put("subject", subject); + data.put("body", body); + + JSONArray recipients = new JSONArray(); + for (String recipient : recipientsList) { + JSONObject d = new JSONObject(); + d.put("id", recipient); + recipients.put(d); + ***REMOVED*** + data.put("recipients", recipients); + + logger.info("Post Body: " + data); + return data.toString(); + + ***REMOVED*** catch (EMailException e) { + throw e; + ***REMOVED*** catch (Throwable e) { + logger.error("Error creating the notification body: " + e.getLocalizedMessage(), e); + throw new EMailException(e); - ***REMOVED*** put the sender, the recipients, subject and body of the mail here - - try - { - subject = URLEncoder.encode(subject, ENCODING); - body = URLEncoder.encode(body, ENCODING); ***REMOVED*** - catch (UnsupportedEncodingException e) - { + +***REMOVED*** + + private void retrieveSocialService() throws EMailException { + try { + SimpleQuery query = queryFor(GCoreEndpoint.class); + query.addCondition(SOCIAL_SERVICE_QUERY_CONDITION); + DiscoveryClient client = clientFor(GCoreEndpoint.class); + List resources = client.submit(query); + socialServiceAddress = resources.get(0).profile().endpointMap().get(SOCIAL_SERVICE_URI).uri().toString(); + logger.info("Retrieved Social Service Address: " + socialServiceAddress); + if (socialServiceAddress == null || socialServiceAddress.isEmpty()) { + throw new EMailException( + "Unable to send email notification. Invalid address in GCoreEndpoint resource on IS."); + ***REMOVED*** + ***REMOVED*** catch (EMailException e) { + logger.error(e.getLocalizedMessage(), e); + throw e; + ***REMOVED*** catch (Throwable e) { + logger.error(e.getLocalizedMessage(), e); throw new EMailException(e); ***REMOVED*** - String requestForMessage = getRequestMessage(WRITE_MESSAGE_ADDRESS_PATH); - requestForMessage = requestForMessage.replace("http:***REMOVED***", "https:***REMOVED***").replace(":80", ""); - - String requestParameters = String.format(SENDER_PARAMETER_FORMAT, this.getAdmins(), subject , body); - - - String response = this.sendPostRequest(requestForMessage, requestParameters); - ***REMOVED***AnalysisLogger.getLogger().debug("Emailing System->Emailing response OK "); - - if (response == null) throw new EMailException(); - ***REMOVED*** - ***REMOVED*** public void notifySubmitter(String a, String b) throws Exception { - ***REMOVED*** NotificationHelper nh = new NotificationHelper(); - ***REMOVED*** super.sendNotification(nh.getSubject(), - ***REMOVED*** nh.getBody()); - ***REMOVED*** ***REMOVED*** + private String getRequestMessage(String addressPath) { + StringBuilder requestMessageBuilder = new StringBuilder(socialServiceAddress); - public String username(String token) throws ObjectNotFound, Exception { + if (!socialServiceAddress.endsWith("/")) + requestMessageBuilder.append('/'); + + requestMessageBuilder.append(addressPath).append(SecurityTokenProvider.instance.get()); + String requestForMessage = requestMessageBuilder.toString(); + logger.debug("Request " + requestForMessage); + return requestForMessage; +***REMOVED*** + + private String username(String token) throws ObjectNotFound, Exception { AuthorizationEntry entry = authorizationService().get(token); - this.logger.debug(entry.getClientInfo().getId()); + logger.debug(entry.getClientInfo().getId()); return entry.getClientInfo().getId(); ***REMOVED*** -***REMOVED*** public String retrieveAdminRole() throws Exception { -***REMOVED*** String serviceAddress = InfraRetrieval.findEmailingSystemAddress(ScopeProvider.instance.get()); -***REMOVED*** -***REMOVED*** if (!serviceAddress.endsWith("/")) -***REMOVED*** serviceAddress = serviceAddress + "/"; -***REMOVED*** -***REMOVED*** String requestForMessage = serviceAddress + "2/users/get-usernames-by-global-role"; -***REMOVED*** requestForMessage = requestForMessage.replace("https:***REMOVED***", "http:***REMOVED***").replace(":80", ""); -***REMOVED*** String requestParameters = "&role-name=Administrator" + "&gcube-token=" + SecurityTokenProvider.instance.get(); -***REMOVED*** -***REMOVED*** String response = HttpRequest.sendGetRequest(requestForMessage, requestParameters); -***REMOVED*** System.out.println(response.toString()); -***REMOVED*** -***REMOVED*** if (response == null) { -***REMOVED*** Exception e = new Exception("Error in querying the recipient"); -***REMOVED*** throw e; -***REMOVED*** ***REMOVED*** -***REMOVED*** return response; -***REMOVED*** -***REMOVED******REMOVED*** - - public String getSocialService() { - SimpleQuery query = queryFor(GCoreEndpoint.class); - query.addCondition(SOCIAL_SERVICE_QUERY_CONDITION); - DiscoveryClient client = clientFor(GCoreEndpoint.class); - List resources = client.submit(query); - String a = resources.get(0).profile().endpointMap().get(SOCIAL_SERVICE_URI).uri().toString(); - return a; -***REMOVED*** - - - - public String sendPostRequest(String endpoint, String requestParameters) { - - this.logger.debug("Sending post request"); - ***REMOVED*** Build parameter string - String data = requestParameters; + private void sendPostRequest(String endpoint, String postBody) throws EMailException { + logger.info("Execute Post:" + endpoint); + logger.info("Post Body:" + postBody); try { ***REMOVED*** Send the request URL url = new URL(endpoint); URLConnection conn = url.openConnection(); - + conn.setRequestProperty("Accept", JSON_MIME_TYPE); + conn.setRequestProperty("Content-Type", JSON_MIME_TYPE); conn.setDoOutput(true); - OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); - ***REMOVED*** write parameters - writer.write(data); + OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); + writer.write(postBody); writer.flush(); ***REMOVED*** Get the response @@ -170,125 +162,94 @@ public class SendMail { writer.close(); reader.close(); - this.logger.debug("Operation completed"); - String response = answer.toString(); - this.logger.debug("Response "+response); - ***REMOVED*** Output the response - return response; + logger.debug("Operation completed"); + String response = answer.toString(); + logger.info("Notification Response: " + response); + checkResponse(response); - ***REMOVED*** catch (MalformedURLException ex) { - this.logger.error("Invalid URL",ex); - ***REMOVED*** catch (IOException ex) { - - this.logger.error("Error in the IO process",ex); + ***REMOVED*** catch (EMailException e) { + throw e; + ***REMOVED*** catch (MalformedURLException e) { + logger.error("Invalid URL: " + e.getLocalizedMessage(), e); + throw new EMailException(e); + ***REMOVED*** catch (IOException e) { + logger.error("Error in the IO process: " + e.getLocalizedMessage(), e); + throw new EMailException(e); + ***REMOVED*** catch (Throwable e) { + logger.error("Error executing post:" + e.getLocalizedMessage(), e); + throw new EMailException(e); ***REMOVED*** - return null; + ***REMOVED*** - - - - - public String getAdminRoles() throws Exception{ - - ***REMOVED*** discover social gcore endpoint - - ***REMOVED***GcoreEndpointReader ep = new GcoreEndpointReader(ScopeProvider.instance.get()); - - - String serviceAddress = getRequestMessage(USER_ROLES_ADDRESS_PATH); - ***REMOVED***String serviceAddress = InfraRetrieval.findEmailingSystemAddress(ScopeProvider.instance.get()); - - - ***REMOVED***String serviceAddress = ep.getResourceEntyName();***REMOVED***"https:***REMOVED***socialnetworking1.d4science.org/social-networking-library-ws/rest/"; -***REMOVED*** serviceAddress = serviceAddress.endsWith("/") ? serviceAddress : serviceAddress + "/"; -***REMOVED*** serviceAddress+= "2/users/get-usernames-by-role?role-name=DataMiner-Manager&gcube-token=" + SecurityTokenProvider.instance.get(); - - this.logger.debug("Admin roles url is " + serviceAddress); - + + private void checkResponse(String response) throws EMailException { + if (response == null) { + logger.error("Invalid notification response: " + response); + throw new EMailException();***REMOVED*** TODO + ***REMOVED*** else { + try { + JSONObject res = new JSONObject(response); + boolean success = res.getBoolean("success"); + if (!success) { + String message = res.getString("message"); + logger.error("Error in send email notification: " + message); + throw new EMailException("Error in send email notification: "+message); + ***REMOVED*** + + ***REMOVED*** catch (JSONException e) { + logger.error("Invalid notification response: " + response); + throw new EMailException(e); + ***REMOVED*** + + ***REMOVED*** +***REMOVED*** + + private List getRecipients() { + try { + List recipients = new ArrayList(); + String dataMinerManagers = retrieveDataMinerManagers(); + logger.debug("Retrieved DataMiner Managers: " + dataMinerManagers); + if (dataMinerManagers != null && !dataMinerManagers.isEmpty()) { + JSONObject obj = new JSONObject(dataMinerManagers); + JSONArray data = obj.getJSONArray("result"); + if (data != null) { + for (int i = 0; i < data.length(); i++) { + recipients.add(data.getString(i)); + ***REMOVED*** + ***REMOVED*** + ***REMOVED*** else { + logger.info("Use the default admins how workaround "); + List defaultManagers = DMPMClientConfiguratorManager.getInstance().getDefaultAdmins(); + recipients.addAll(defaultManagers); + ***REMOVED*** + recipients.add(this.username(SecurityTokenProvider.instance.get())); + + logger.info("Retrieved Recipients: " + recipients); + return recipients; + ***REMOVED*** catch (Exception e) { + logger.error("Error retrieving recipients: " + e.getLocalizedMessage(), e); + logger.info("Use the default admins how workaround "); + return DMPMClientConfiguratorManager.getInstance().getDefaultAdmins(); + ***REMOVED*** + +***REMOVED*** + + private String retrieveDataMinerManagers() throws Exception { + ***REMOVED*** Try to retrieve a url like this: + ***REMOVED*** https:***REMOVED***api.d4science.org/social-networking-library-ws/rest/2/users/get-usernames-by-role?role-name=DataMiner-Manager&gcube-token=xxx-xxxx-xxxx-xxx + + String requestAdminsUrl = getRequestMessage(USER_ROLES_ADDRESS_PATH); + + logger.info("Request Admins Url: " + requestAdminsUrl); + CloseableHttpClient client = HttpClientBuilder.create().build(); - HttpGet getReq = new HttpGet(serviceAddress); + HttpGet getReq = new HttpGet(requestAdminsUrl); getReq.setHeader("accept", JSON_MIME_TYPE); getReq.setHeader("content-type", JSON_MIME_TYPE); - this.logger.info(EntityUtils.toString(client.execute(getReq).getEntity())); - + logger.info("Response: " + EntityUtils.toString(client.execute(getReq).getEntity())); + return EntityUtils.toString(client.execute(getReq).getEntity()); - + ***REMOVED*** - - - public String getAdmins(){ - try{ - List s = new LinkedList(); - JSONObject obj = new JSONObject(this.getAdminRoles()); - JSONArray data = obj.getJSONArray("result"); - if (data != null) { - String[] names = new String[data.length()]; - for (int i = 0; i < data.length(); i++) { - names[i] = data.getString(i); - s.add(names[i]); - ***REMOVED*** - s.add(this.username(SecurityTokenProvider.instance.get())); - ***REMOVED*** - return s.toString().replace("[", "").replace("]", ""); - ***REMOVED*** - catch(Exception a){return DMPMClientConfiguratorManager.getInstance().getDefaultAdmins(); ***REMOVED*** - - ***REMOVED*** - - - - -***REMOVED*** public String getRootToken() throws Exception { -***REMOVED*** -***REMOVED*** ***REMOVED***ApplicationContext ctx = ContextProvider.get(); ***REMOVED*** get this info from -***REMOVED*** ***REMOVED*** SmartGears -***REMOVED*** ***REMOVED***System.out.println(ctx.container().configuration().infrastructure()); -***REMOVED*** String a = ""; -***REMOVED*** SimpleQuery query2 = queryFor(ServiceEndpoint.class); -***REMOVED*** query2.addCondition("$resource/Profile/Name/text() eq 'SAIService'").setResult("$resource"); -***REMOVED*** -***REMOVED*** DiscoveryClient client2 = clientFor(ServiceEndpoint.class); -***REMOVED*** List df = client2.submit(query2); -***REMOVED*** -***REMOVED*** for (ServiceEndpoint b : df) { -***REMOVED*** a = StringEncrypter.getEncrypter().decrypt(b.profile().accessPoints().iterator().next().password()); -***REMOVED*** ***REMOVED*** -***REMOVED*** return a; -***REMOVED******REMOVED*** - - - - - - public static void main(String[] args) throws Exception { - - ***REMOVED***ScopeProvider.instance.set("/d4science.research-infrastructures.eu/gCubeApps/RPrototypingLab"); - ***REMOVED***SecurityTokenProvider.instance.set("3a23bfa4-4dfe-44fc-988f-194b91071dd2-843339462"); - - ***REMOVED***ScopeProvider.instance.set("/gcube/devNext"); - ***REMOVED***SecurityTokenProvider.instance.set("aa6eec71-fe07-43ab-bd1c-f03df293e430-98187548"); - - ***REMOVED***NotificationHelper nh = new NotificationHelper(); - - SendMail sm = new SendMail(); - - ***REMOVED***ScopeProvider.instance.set("/gcube/devNext/NextNext"); - ***REMOVED***SecurityTokenProvider.instance.set("708e7eb8-11a7-4e9a-816b-c9ed7e7e99fe-98187548"); - ***REMOVED***System.out.println(sm.getRootToken()); - ***REMOVED***sm.getGenericResourceByName(""); - - ScopeProvider.instance.set("/gcube/preprod/preVRE"); - SecurityTokenProvider.instance.set("2eceaf27-0e22-4dbe-8075-e09eff199bf9-98187548"); - - - ***REMOVED***sm.sendNotification(nh.getFailedSubject(), nh.getFailedBody("test failed")); - ***REMOVED*** sm.username(SecurityTokenProvider.instance.get()); - ***REMOVED***sm.retrieveAdminRole(); - ***REMOVED***sm.getAdminRoles(); - System.out.println(sm.getAdmins()); - ***REMOVED***System.out.println(sm.getAdmins()); - ***REMOVED***sm.sendNotification("test", "test"); - ***REMOVED***System.out.println(sm.getSocialService()); -***REMOVED*** ***REMOVED*** diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/exception/EMailException.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/exception/EMailException.java index 3e52844..d84ddf3 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/exception/EMailException.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/exception/EMailException.java @@ -2,23 +2,27 @@ package org.gcube.dataanalysis.dataminer.poolmanager.util.exception; public class EMailException extends Exception { - private static final String MESSAGE = "Unable to send email notification"; - + /** * */ private static final long serialVersionUID = 1L; public EMailException() { - super (MESSAGE); -***REMOVED*** - - public EMailException(Throwable cause) { - super (MESSAGE,cause); + super(MESSAGE); +***REMOVED*** + + public EMailException(String message) { + super(message); +***REMOVED*** + + public EMailException(String message, Throwable e) { + super(message, e); +***REMOVED*** + + public EMailException(Throwable e) { + super(MESSAGE, e); ***REMOVED*** - - - ***REMOVED*** diff --git a/src/main/webapp/WEB-INF/.gitignore b/src/main/webapp/WEB-INF/.gitignore new file mode 100644 index 0000000..e5d1453 --- /dev/null +++ b/src/main/webapp/WEB-INF/.gitignore @@ -0,0 +1,5 @@ +/LICENSE.md +/README.md +/changelog.xml +/gcube-app.xml +/profile.xml diff --git a/src/test/java/org/gcube/dataanalysis/dataminerpoolmanager/SendMailTest.java b/src/test/java/org/gcube/dataanalysis/dataminerpoolmanager/SendMailTest.java new file mode 100644 index 0000000..efb2a1f --- /dev/null +++ b/src/test/java/org/gcube/dataanalysis/dataminerpoolmanager/SendMailTest.java @@ -0,0 +1,38 @@ +package org.gcube.dataanalysis.dataminerpoolmanager; + +***REMOVED*** +***REMOVED*** +import org.gcube.dataanalysis.dataminer.poolmanager.util.SendMail; + +public class SendMailTest { + + public static void main(String[] args) { + try { + + ***REMOVED*** NotificationHelper nh = new NotificationHelper(); + + SendMail sm = new SendMail(); + + ScopeProvider.instance.set("/gcube/devNext/NextNext"); + SecurityTokenProvider.instance.set("xxxx-xxxx-xxx"); + ***REMOVED*** System.out.println(sm.getRootToken()); + ***REMOVED*** sm.getGenericResourceByName(""); + + ***REMOVED***ScopeProvider.instance.set("/gcube/devsec/devVRE"); + ***REMOVED***SecurityTokenProvider.instance.set("xxxx-xxxx-xxxx"); + + ***REMOVED*** sm.sendNotification(nh.getFailedSubject(), nh.getFailedBody("test + ***REMOVED*** failed")); + ***REMOVED*** sm.username(SecurityTokenProvider.instance.get()); + ***REMOVED*** sm.retrieveAdminRole(); + ***REMOVED*** sm.getAdminRoles(); + sm.sendNotification("Test DMPoolManager Notification", "This is only a test please cancel this message."); + ***REMOVED*** System.out.println(sm.getAdmins()); + ***REMOVED*** sm.sendNotification("test", "test"); + ***REMOVED*** System.out.println(sm.getSocialService()); + ***REMOVED*** catch (Exception e) { + System.out.println("Error in sent mail: "+e.getLocalizedMessage()); + e.printStackTrace(); + ***REMOVED*** +***REMOVED*** +***REMOVED***