diff --git a/pom.xml b/pom.xml
index bd1c536..32880a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,12 +24,20 @@
pom
import
+
+ org.gcube.distribution
+ gcube-portal-bom
+ LATEST
+ pom
+ import
+
1.7
- 2.25.1
+ 2.9
+ 2.0.1
${project.basedir}/distro
social-networking
${project.build.directory}/${project.build.finalName}
@@ -48,19 +56,16 @@
org.gcube.common
home-library
- [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)
compile
org.gcube.common
home-library-jcr
- [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)
compile
org.gcube.portal
social-networking-library
- [1.0.0-SNAPSHOT,)
compile
@@ -73,23 +78,22 @@
social-networking-service-model
[1.0.0-SNAPSHOT,)
-
- org.glassfish.jersey.ext
- jersey-bean-validation
- ${version.jersey}
- provided
-
+
+
+
+
+
org.glassfish.jersey.media
jersey-media-json-jackson
${version.jersey}
- provided
+ compile
org.glassfish.jersey.core
jersey-client
${version.jersey}
- provided
+ compile
org.slf4j
@@ -99,7 +103,6 @@
org.slf4j
slf4j-log4j12
- 1.6.4
provided
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/BaseClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/BaseClient.java
index 0dbc18b..201eefd 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/BaseClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/BaseClient.java
@@ -1,6 +1,8 @@
package org.gcube.portal.social_networking_client_library;
import org.gcube.portal.social_networking_client_library.utils.ServiceDiscoverer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Base client service.
@@ -8,13 +10,16 @@ import org.gcube.portal.social_networking_client_library.utils.ServiceDiscoverer
*/
public abstract class BaseClient {
+ private static Logger logger = LoggerFactory.getLogger(BaseClient.class);
private String serviceEndpoint;
public BaseClient(String subPath) throws Exception {
- ServiceDiscoverer discover = new ServiceDiscoverer();
- serviceEndpoint = discover.getEntryPoint();
+ ServiceDiscoverer discoverer = new ServiceDiscoverer();
+ logger.debug("Discovering service...");
+ serviceEndpoint = discoverer.getEntryPoint();
serviceEndpoint = serviceEndpoint.endsWith("/") ? serviceEndpoint + subPath :
serviceEndpoint + "/" + subPath;
+ logger.debug("Discovered service " + serviceEndpoint);
}
public String getServiceEndpoint() {
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/FullTextSearchClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/FullTextSearchClient.java
index 6791d1c..e05e0d9 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/FullTextSearchClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/FullTextSearchClient.java
@@ -3,12 +3,14 @@ package org.gcube.portal.social_networking_client_library;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
-import java.util.List;
+
+import javax.ws.rs.core.GenericType;
import org.apache.commons.lang.Validate;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.databook.shared.EnhancedFeed;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -20,12 +22,11 @@ public class FullTextSearchClient extends BaseClient{
private static final String SUB_SERVICE_PATH = "2/full-text-search/";
private static Logger logger = LoggerFactory.getLogger(FullTextSearchClient.class);
-
-
+
public FullTextSearchClient() throws Exception {
super(SUB_SERVICE_PATH);
}
-
+
/**
* Perform a search query over social data
* @param query
@@ -34,18 +35,17 @@ public class FullTextSearchClient extends BaseClient{
* @return a list of matching posts
* @throws UnsupportedEncodingException
*/
- @SuppressWarnings("unchecked")
- public List search(String query, int from, int quantity) throws UnsupportedEncodingException{
-
+ public ArrayList search(String query, int from, int quantity) throws UnsupportedEncodingException{
+
Validate.isTrue(query != null, "Query cannot be null");
Validate.isTrue(from >= 0, "From needs to be greater or equal to zero");
Validate.isTrue(quantity >= 0, "Quantity needs to be greater or equal to zero");
-
+
logger.debug("Request for query " + query + " and from " + from + " and quantity is " + quantity);
String thisMethodSignature = "search-by-query";
String request = getServiceEndpoint() + thisMethodSignature + "?" + "query=" + URLEncoder.encode(query, "UTF-8") + "&from=" + from + "&quantity=" + quantity;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
-
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
+
}
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/HashTagsClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/HashTagsClient.java
index 904154c..e5b1c86 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/HashTagsClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/HashTagsClient.java
@@ -3,8 +3,11 @@ package org.gcube.portal.social_networking_client_library;
import java.util.HashMap;
import java.util.Map;
+import javax.ws.rs.core.GenericType;
+
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,14 +29,11 @@ public class HashTagsClient extends BaseClient{
* Get hashtags and their count
* @return a map of type hashtag -> number
*/
- @SuppressWarnings("unchecked")
public Map getHashtagsCount(){
-
logger.debug("Request for hastags");
String thisMethodSignature = "get-hashtags-and-occurrences";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new HashMap(0).getClass(), request, SecurityTokenProvider.instance.get());
-
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/MessagesClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/MessagesClient.java
index 24e028c..d2dd0a7 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/MessagesClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/MessagesClient.java
@@ -3,11 +3,14 @@ package org.gcube.portal.social_networking_client_library;
import java.util.ArrayList;
import java.util.List;
+import javax.ws.rs.core.GenericType;
+
import org.apache.commons.lang.Validate;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.homelibrary.home.workspace.sharing.WorkspaceMessage;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
import org.gcube.portal.socialnetworking.model.input.MessageInputBean;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,13 +32,12 @@ public class MessagesClient extends BaseClient{
* Get sent messages
* @return
*/
- @SuppressWarnings("unchecked")
public List getSentMessages(){
logger.debug("Request for sent messages");
String thisMethodSignature = "get-sent-messages";
String request = getServiceEndpoint() + thisMethodSignature + "?";
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -43,13 +45,12 @@ public class MessagesClient extends BaseClient{
* Get received messages
* @return
*/
- @SuppressWarnings("unchecked")
public List getReceivedMessages(){
logger.debug("Request for received messages");
String thisMethodSignature = "get-received-messages";
String request = getServiceEndpoint() + thisMethodSignature + "?";
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -64,7 +65,7 @@ public class MessagesClient extends BaseClient{
logger.debug("Request for writing new message");
String thisMethodSignature = "write-message";
String request = getServiceEndpoint() + thisMethodSignature + "?";
- return HttpClient.post(String.class, request, SecurityTokenProvider.instance.get(), m);
+ return HttpClient.post(new GenericType>(){}, request, SecurityTokenProvider.instance.get(), m);
}
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/NotificationsClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/NotificationsClient.java
index 9daebf0..8f404da 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/NotificationsClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/NotificationsClient.java
@@ -3,11 +3,14 @@ package org.gcube.portal.social_networking_client_library;
import java.util.ArrayList;
import java.util.List;
+import javax.ws.rs.core.GenericType;
+
import org.apache.commons.lang.Validate;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.databook.shared.Notification;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
import org.gcube.portal.socialnetworking.model.input.JobNotificationBean;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -27,20 +30,19 @@ public class NotificationsClient extends BaseClient{
/**
* Get range notifications
- * @param from
+ * @param from greater or equal to one
* @param quantity
* @return
*/
- @SuppressWarnings("unchecked")
public List getNotifications(int from, int quantity){
- Validate.isTrue(from >= 0, "From cannot be negative");
+ Validate.isTrue(from >= 1, "From cannot be negative");
Validate.isTrue(from >= 0, "Quantity cannot be negative");
logger.debug("Request for getting notifications");
String thisMethodSignature = "get-range-notifications";
String request = getServiceEndpoint() + thisMethodSignature + "?from=" + from + "&quantity=" +quantity;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -52,11 +54,10 @@ public class NotificationsClient extends BaseClient{
public void sendJobNotification(JobNotificationBean notification){
Validate.isTrue(notification != null, "Notification cannot be null");
-
logger.debug("Request for getting notifications");
String thisMethodSignature = "notify-job-status";
String request = getServiceEndpoint() + thisMethodSignature;
- HttpClient.post(Void.class, request, SecurityTokenProvider.instance.get(), notification);
+ HttpClient.post(new GenericType>(){}, request, SecurityTokenProvider.instance.get(), notification);
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/PeopleClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/PeopleClient.java
index 26d9396..0889779 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/PeopleClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/PeopleClient.java
@@ -1,7 +1,10 @@
package org.gcube.portal.social_networking_client_library;
+import javax.ws.rs.core.GenericType;
+
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,8 +32,7 @@ public class PeopleClient extends BaseClient{
logger.debug("Request for getting profile");
String thisMethodSignature = "profile";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(JSONObject.class, request, SecurityTokenProvider.instance.get());
-
+ return HttpClient.get(new GenericType>(){}, request, SecurityTokenProvider.instance.get());
}
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/PostsClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/PostsClient.java
index 1fce66b..775f688 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/PostsClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/PostsClient.java
@@ -3,11 +3,14 @@ package org.gcube.portal.social_networking_client_library;
import java.util.ArrayList;
import java.util.List;
+import javax.ws.rs.core.GenericType;
+
import org.apache.commons.lang.Validate;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.databook.shared.Feed;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
import org.gcube.portal.socialnetworking.model.input.PostInputBean;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,7 +32,6 @@ public class PostsClient extends BaseClient{
* Get posts since date
* @return
*/
- @SuppressWarnings("unchecked")
public List getPostsSinceDate(long timeInMillis){
Validate.isTrue(timeInMillis >= 0, "time cannot be negative");
@@ -37,7 +39,7 @@ public class PostsClient extends BaseClient{
logger.debug("Request for getting posts");
String thisMethodSignature = "get-posts-user-since";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -45,7 +47,6 @@ public class PostsClient extends BaseClient{
* Get all posts
* @return
*/
- @SuppressWarnings("unchecked")
public List getAllPosts(long timeInMillis){
Validate.isTrue(timeInMillis >= 0, "time cannot be negative");
@@ -53,7 +54,7 @@ public class PostsClient extends BaseClient{
logger.debug("Request for getting posts");
String thisMethodSignature = "get-posts-user";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -61,7 +62,6 @@ public class PostsClient extends BaseClient{
* Get posts quantity
* @return
*/
- @SuppressWarnings("unchecked")
public List getPostsQuantity(int quantity){
Validate.isTrue(quantity >= 0, "quantity cannot be negative");
@@ -69,7 +69,7 @@ public class PostsClient extends BaseClient{
logger.debug("Request for getting posts");
String thisMethodSignature = "get-posts-user-quantity";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -84,7 +84,7 @@ public class PostsClient extends BaseClient{
logger.debug("Request for writing post");
String thisMethodSignature = "write-post-user";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.post(Feed.class, request, SecurityTokenProvider.instance.get(), toWrite);
+ return HttpClient.post(new GenericType>(){}, request, SecurityTokenProvider.instance.get(), toWrite);
}
@@ -92,13 +92,12 @@ public class PostsClient extends BaseClient{
* Get posts application (token set must belong to the application)
* @return
*/
- @SuppressWarnings("unchecked")
public List getAllApplicationPosts(){
logger.debug("Request for getting posts");
String thisMethodSignature = "get-posts-app";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -113,7 +112,7 @@ public class PostsClient extends BaseClient{
logger.debug("Request for writing application post");
String thisMethodSignature = "write-post-app";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.post(Feed.class, request, SecurityTokenProvider.instance.get(), toWrite);
+ return HttpClient.post(new GenericType>(){}, request, SecurityTokenProvider.instance.get(), toWrite);
}
@@ -121,13 +120,12 @@ public class PostsClient extends BaseClient{
* Get posts vre
* @return
*/
- @SuppressWarnings("unchecked")
public List getPostsVRE(){
logger.debug("Request for getting posts vre");
String thisMethodSignature = "get-posts-vre";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -135,7 +133,6 @@ public class PostsClient extends BaseClient{
* Get posts hashtag
* @return
*/
- @SuppressWarnings("unchecked")
public List getHashtagPosts(String hashtag){
Validate.isTrue(hashtag != null, "hashtag cannot be null");
@@ -143,21 +140,20 @@ public class PostsClient extends BaseClient{
logger.debug("Request for getting posts with hashtag " + hashtag);
String thisMethodSignature = "get-posts-by-hashtag";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
-
+
/**
* Get liked posts
* @return
*/
- @SuppressWarnings("unchecked")
public List getLikedPost(){
logger.debug("Request for getting posts liked");
String thisMethodSignature = "get-liked-posts";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -165,13 +161,12 @@ public class PostsClient extends BaseClient{
* Get liked posts ids
* @return
*/
- @SuppressWarnings("unchecked")
public List getLikedPostIds(){
logger.debug("Request for getting posts liked");
String thisMethodSignature = "get-id-liked-posts";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/TokensClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/TokensClient.java
index ff481ab..b1e17eb 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/TokensClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/TokensClient.java
@@ -1,9 +1,12 @@
package org.gcube.portal.social_networking_client_library;
+import javax.ws.rs.core.GenericType;
+
import org.apache.commons.lang.Validate;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
import org.gcube.portal.socialnetworking.model.input.ApplicationId;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +35,7 @@ public class TokensClient extends BaseClient{
logger.debug("Request for writing new message");
String thisMethodSignature = "generate-application-token";
String request = getServiceEndpoint() + thisMethodSignature + "?";
- return HttpClient.post(String.class, request, SecurityTokenProvider.instance.get(), appId);
+ return HttpClient.post(new GenericType>(){}, request, SecurityTokenProvider.instance.get(), appId);
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/UsersClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/UsersClient.java
index 45bd01b..5cd150d 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/UsersClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/UsersClient.java
@@ -5,9 +5,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.ws.rs.core.GenericType;
+
import org.apache.commons.lang.Validate;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,7 +40,7 @@ public class UsersClient extends BaseClient{
logger.debug("Request for attribute value");
String thisMethodSignature = "get-custom-attribute";
String request = getServiceEndpoint() + thisMethodSignature + "?attribute=" + attributeKey;
- return HttpClient.get(String.class, request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -50,7 +53,7 @@ public class UsersClient extends BaseClient{
logger.debug("Request for fullname");
String thisMethodSignature = "get-fullname";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(String.class, request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -63,7 +66,7 @@ public class UsersClient extends BaseClient{
logger.debug("Request for email");
String thisMethodSignature = "get-email";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(String.class, request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -76,7 +79,7 @@ public class UsersClient extends BaseClient{
logger.debug("Request for getting profile");
String thisMethodSignature = "get-profile";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(JSONObject.class, request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -84,13 +87,12 @@ public class UsersClient extends BaseClient{
* Get all usernames in this context
* @return
*/
- @SuppressWarnings("unchecked")
public List getAllUsernamesContext(){
logger.debug("Request for getting usernames in this context");
String thisMethodSignature = "get-all-usernames";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -98,13 +100,12 @@ public class UsersClient extends BaseClient{
* Get all usernames and fullnames in this context
* @return
*/
- @SuppressWarnings("unchecked")
public Map getAllUsernamesFullnamesContext(){
logger.debug("Request for getting usernames and fullnames in this context");
String thisMethodSignature = "get-all-fullnames-and-usernames";
String request = getServiceEndpoint() + thisMethodSignature;
- return HttpClient.get(new HashMap(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -112,7 +113,6 @@ public class UsersClient extends BaseClient{
* Get usernames by global role
* @return
*/
- @SuppressWarnings("unchecked")
public List getAllUsernamesByGlobalRole(String globalRole){
Validate.isTrue(globalRole != null, "role cannot be null");
@@ -120,7 +120,7 @@ public class UsersClient extends BaseClient{
logger.debug("Request for getting usernames with global role");
String thisMethodSignature = "get-usernames-by-global-role";
String request = getServiceEndpoint() + thisMethodSignature + "?role-name=" + globalRole;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -128,7 +128,6 @@ public class UsersClient extends BaseClient{
* Get usernames by local role
* @return
*/
- @SuppressWarnings("unchecked")
public List getAllUsernamesByLocalRole(String localRole){
Validate.isTrue(localRole != null, "role cannot be null");
@@ -136,7 +135,7 @@ public class UsersClient extends BaseClient{
logger.debug("Request for getting usernames with global role");
String thisMethodSignature = "get-usernames-by-role";
String request = getServiceEndpoint() + thisMethodSignature + "?role-name=" + localRole;
- return HttpClient.get(new ArrayList(0).getClass(), request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>>(){}, request, SecurityTokenProvider.instance.get());
}
@@ -151,7 +150,7 @@ public class UsersClient extends BaseClient{
logger.debug("Request for getting usernames with global role");
String thisMethodSignature = "user-exists";
String request = getServiceEndpoint() + thisMethodSignature + "?username=" + username;
- return HttpClient.get(Boolean.class, request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>(){}, request, SecurityTokenProvider.instance.get());
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/VREsClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/VREsClient.java
index 0371b61..bfdf0a2 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/VREsClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/VREsClient.java
@@ -1,7 +1,10 @@
package org.gcube.portal.social_networking_client_library;
+import javax.ws.rs.core.GenericType;
+
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.portal.social_networking_client_library.utils.HttpClient;
+import org.gcube.portal.socialnetworking.model.output.ResponseBean;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,7 +32,7 @@ public class VREsClient extends BaseClient{
logger.debug("Request for writing new message");
String thisMethodSignature = "get-my-vres";
String request = getServiceEndpoint() + thisMethodSignature + "?";
- return HttpClient.get(JSONArray.class, request, SecurityTokenProvider.instance.get());
+ return HttpClient.get(new GenericType>(){}, request, SecurityTokenProvider.instance.get());
}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/exceptions/NoSocialServiceAvailable.java b/src/main/java/org/gcube/portal/social_networking_client_library/exceptions/NoSocialServiceAvailable.java
new file mode 100644
index 0000000..85eb05d
--- /dev/null
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/exceptions/NoSocialServiceAvailable.java
@@ -0,0 +1,15 @@
+package org.gcube.portal.social_networking_client_library.exceptions;
+
+/**
+ * No social service available in the infrastructure.
+ * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
+ */
+public class NoSocialServiceAvailable extends Exception {
+
+ public NoSocialServiceAvailable(String errorMsg) {
+ super(errorMsg);
+ }
+
+ private static final long serialVersionUID = 5927949225149691036L;
+
+}
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/utils/HttpClient.java b/src/main/java/org/gcube/portal/social_networking_client_library/utils/HttpClient.java
index 7745b63..7f5f3d2 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/utils/HttpClient.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/utils/HttpClient.java
@@ -5,73 +5,111 @@ import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
import org.gcube.portal.socialnetworking.model.output.ResponseBean;
-import org.glassfish.jersey.client.ClientResponse;
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jackson.JacksonFeature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.fasterxml.jackson.core.JsonProcessingException;
+
/**
* Http client with post and get methods (jersey is used)
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
-@SuppressWarnings("unchecked")
-public class HttpClient {
+public class HttpClient{
private static Logger logger = LoggerFactory.getLogger(HttpClient.class);
- public static R get(Class returnType, String requestUrl, String token){
+ /**
+ * Executes a get request
+ * @param genericType
+ * @param genericType
+ * @param genericType
+ * @param returnType
+ * @param requestUrl
+ * @param token
+ * @return
+ */
+ public static R get(GenericType> returnType, String requestUrl, String token){
logger.debug("Executing get request at url " + requestUrl + " and token is " + maskedToken(token));
- // Create Jersey client
- Client client = ClientBuilder.newClient();
+ ClientConfig cc = new ClientConfig().register(new JacksonFeature());//.register(new JacksonJsonProvider(getMapper()));
+ Client client = ClientBuilder.newClient(cc);
WebTarget webResourceGet = client.target(requestUrl).queryParam("gcube-token", token);
- ClientResponse response = webResourceGet.request(MediaType.APPLICATION_JSON).get(ClientResponse.class);
+ ResponseBean response = webResourceGet.request(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).get(returnType);
- if (response.getStatus() < 200 || response.getStatus() > 205) {
- throw new RuntimeException("Failed : HTTP error code : "
- + response.getStatus());
- }
+ if(response == null)
+ throw new WebApplicationException("Response returned by the service is null");
- ResponseBean responseEntity = (ResponseBean) response.getEntity();
-
- if (responseEntity.getMessage() != null && !responseEntity.getMessage().isEmpty()) {
+ if (response.getMessage() != null && !response.getMessage().isEmpty())
throw new WebApplicationException(
- "Response has status code " + response.getStatus() + " and message " +
- responseEntity.getMessage());
- }
+ "Error message is " + response.getMessage());
- return (R) responseEntity.getResult();
+ return response.getResult();
}
- public static R post(Class returnType, String requestUrl, String token, Object body){
+ // public static ObjectMapper getMapper(){
+ //
+ // ObjectMapper mapper = new ObjectMapper();
+ // mapper.enable(SerializationFeature.INDENT_OUTPUT);
+ // mapper.addMixIn(WorkspaceMessage.class, MessageOutputBeanMixIn.class);
+ // mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
+ // return mapper;
+ // }
- logger.debug("Executing get request at url " + requestUrl + " and token is " + maskedToken(token));
+ /**
+ * Executes a post request
+ * @param returnType
+ * @param requestUrl
+ * @param token
+ * @param body
+ * @return
+ * @throws JsonProcessingException
+ */
+ public static R post(GenericType> returnType, String requestUrl, String token, Object obj){
- // Create Jersey client
- Client client = ClientBuilder.newClient();
+ logger.debug("Executing post request at url " + requestUrl + " and token is " + maskedToken(token));
+
+ ClientConfig cc = new ClientConfig().register(new JacksonFeature());
+ Client client = ClientBuilder.newClient(cc);
WebTarget webResourceGet = client.target(requestUrl).queryParam("gcube-token", token);
- Response response = webResourceGet.request(MediaType.APPLICATION_JSON).post(Entity.json(body));
+ //
+ // String asJson = null;
+ // try{
+ // ObjectMapper mapper = new ObjectMapper();
+ // mapper.enable(SerializationFeature.INDENT_OUTPUT);
+ // mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
+ // mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
+ // asJson = mapper.writeValueAsString(obj);
+ // logger.debug("Request body looks like\n"+asJson);
+ // }catch(Exception e){
+ // logger.error("Failed to parse data", e);
+ // }
- if (response.getStatus() < 200 || response.getStatus() > 205) {
- throw new RuntimeException("Failed : HTTP error code : "
- + response.getStatus());
- }
+ logger.debug("Entity looks like " + Entity.json(obj));
- ResponseBean responseEntity = (ResponseBean) response.getEntity();
+ ResponseBean response = webResourceGet.request(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).post(Entity.json(obj), returnType);
- if (responseEntity.getMessage() != null && !responseEntity.getMessage().isEmpty()) {
+ if(response == null)
+ throw new WebApplicationException("Response returned by the service is null");
+
+ if (response.getMessage() != null && !response.getMessage().isEmpty())
throw new WebApplicationException(
- "Response has status code " + response.getStatus() + " and message " +
- responseEntity.getMessage());
- }
+ "Error message is " + response.getMessage());
- return (R) responseEntity.getResult();
+ return response.getResult();
}
+ /**
+ * Avoid to show the token
+ * @param token
+ * @return
+ */
private static String maskedToken(String token){
if(token == null)
diff --git a/src/main/java/org/gcube/portal/social_networking_client_library/utils/ServiceDiscoverer.java b/src/main/java/org/gcube/portal/social_networking_client_library/utils/ServiceDiscoverer.java
index 9660573..7432fcb 100644
--- a/src/main/java/org/gcube/portal/social_networking_client_library/utils/ServiceDiscoverer.java
+++ b/src/main/java/org/gcube/portal/social_networking_client_library/utils/ServiceDiscoverer.java
@@ -10,6 +10,7 @@ import java.util.List;
import org.gcube.common.resources.gcore.GCoreEndpoint;
import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.portal.social_networking_client_library.exceptions.NoSocialServiceAvailable;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.slf4j.Logger;
@@ -31,6 +32,9 @@ public class ServiceDiscoverer {
public ServiceDiscoverer() throws Exception {
String currentScope = ScopeProvider.instance.get();
+
+ if(currentScope == null || currentScope.isEmpty())
+ throw new RuntimeException("Scope is not set");
try{
@@ -47,12 +51,12 @@ public class ServiceDiscoverer {
DiscoveryClient client = client();
List endpoints = client.submit(query);
if (endpoints == null || endpoints.isEmpty())
- throw new Exception("Cannot retrieve the GCoreEndpoint serviceName: "+serviceName +", serviceClass: " +serviceClass +", in scope: "+currentScope);
+ throw new NoSocialServiceAvailable("Cannot retrieve the GCoreEndpoint serviceName: "+serviceName +", serviceClass: " +serviceClass +", in scope: "+currentScope);
this.entryPoint = endpoints.get(0);
if(entryPoint==null)
- throw new Exception("Endpoint:"+resource+", is null for serviceName: "+serviceName +", serviceClass: " +serviceClass +", in scope: "+currentScope);
+ throw new NoSocialServiceAvailable("Endpoint:"+resource+", is null for serviceName: "+serviceName +", serviceClass: " +serviceClass +", in scope: "+currentScope);
logger.info("found entryPoint "+entryPoint+" for social service: "+resource);
diff --git a/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java b/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java
index 5d7ea51..33db6a4 100644
--- a/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java
+++ b/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java
@@ -15,78 +15,108 @@ import org.gcube.portal.databook.shared.Notification;
import org.gcube.portal.socialnetworking.model.input.JobNotificationBean;
import org.gcube.portal.socialnetworking.model.input.MessageInputBean;
import org.gcube.portal.socialnetworking.model.input.Recipient;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestClientServices {
-
+
private static Logger logger = LoggerFactory.getLogger(TestClientServices.class);
-
+
@Before
public void setContextAndToken(){
-
+
ScopeProvider.instance.set("/gcube/devNext/NextNext");
SecurityTokenProvider.instance.set("d423aed7-e9e2-424a-b9e7-2bbbd151d9c4-98187548");
-
+
}
- @Test
+ //@Test
public void testSearch() throws Exception {
FullTextSearchClient search = new FullTextSearchClient();
- List result = search.search("looking for test", 0, 10);
-
+ ArrayList result = search.search("looking for test", 0, 10);
+
for (EnhancedFeed enhancedFeed : result) {
logger.debug("Returned feed " + enhancedFeed);
}
}
-
- @Test
+
+ //@Test
+ public void testSearchEmptyList() throws Exception {
+ FullTextSearchClient search = new FullTextSearchClient();
+ ArrayList result = search.search("tipiterotipirè", 0, 10);
+
+ for (EnhancedFeed enhancedFeed : result) {
+ logger.debug("Returned feed " + enhancedFeed);
+ }
+ }
+
+ //@Test
public void testHashTags() throws Exception {
HashTagsClient hashtags = new HashTagsClient();
Map hashtagsCount = hashtags.getHashtagsCount();
- logger.debug("Returned tags " + hashtagsCount);
+ logger.debug("Returned tags " + hashtagsCount);
}
-
+
@Test
- public void testMessages() throws Exception {
+ public void testMessagesReceived() throws Exception {
MessagesClient messagesClient = new MessagesClient();
List receivedMessages = messagesClient.getReceivedMessages();
-
for (WorkspaceMessage workspaceMessage : receivedMessages) {
logger.debug("Received message " + workspaceMessage.toString());
}
-
+ }
+
+ //@Test
+ public void testMessagesSent() throws Exception {
+ MessagesClient messagesClient = new MessagesClient();
List sentMessages = messagesClient.getSentMessages();
for (WorkspaceMessage workspaceMessage : sentMessages) {
logger.debug("Sent message was " + workspaceMessage);
}
-
+ }
+
+ //@Test
+ public void sendMessage() throws Exception{
logger.debug("Sending message ");
+ MessagesClient messagesClient = new MessagesClient();
List rec = Arrays.asList(new Recipient("andrea.rossi"));
- MessageInputBean input = new MessageInputBean("Test message",
+ MessageInputBean message = new MessageInputBean(
+ "Test message",
"Sending message via client " + System.currentTimeMillis(),
new ArrayList(rec));
- String idMessage = messagesClient.writeMessage(input);
+ String idMessage = messagesClient.writeMessage(message);
assert(idMessage != null);
}
- @Test
+ //@Test
public void testNotifications() throws Exception {
NotificationsClient notificationsClient = new NotificationsClient();
- List latestNotifications = notificationsClient.getNotifications(0, 2000);
+ List latestNotifications = notificationsClient.getNotifications(1, 2);
for (Notification notification : latestNotifications) {
logger.debug("Notification is " + notification);
}
}
-
- @Test
+
+ //@Test
public void sendJobNotification() throws Exception {
NotificationsClient notificationsClient = new NotificationsClient();
- JobNotificationBean notification = new JobNotificationBean("costantino.perciante", UUID.randomUUID().toString(), "SmartExecutor Social Indexer", "SmartExecutor",
- JobStatusType.SUCCEEDED, "");
+ JobNotificationBean notification = new JobNotificationBean(
+ "costantino.perciante",
+ UUID.randomUUID().toString(),
+ "SmartExecutor Social Indexer",
+ "SmartExecutor",
+ JobStatusType.SUCCEEDED,
+ "all ok");
notificationsClient.sendJobNotification(notification);
- logger.debug("Sent job notification and received ");
+ logger.debug("Sent job notification ");
+ }
+
+ @After
+ public void reset(){
+ ScopeProvider.instance.reset();
+ SecurityTokenProvider.instance.reset();
}
}