impl. complete

This commit is contained in:
Massimiliano Assante 2022-10-20 18:57:58 +02:00
parent 631461b31f
commit aa434744ab
5 changed files with 76 additions and 8 deletions

View File

@ -1,9 +1,10 @@
# Changelog
## [v1.1.1-SNAPSHOT] - 2022-09-06
## [v1.2.0-SNAPSHOT] - 2022-10-20
- Minor fix on a method name
- Feature #23887 possibility to get-usernames-by-role in UserClient
- Feature #23995 Social Service add support for set Message read / unread
## [v1.1.0] - 2022-04-06

View File

@ -10,7 +10,7 @@
<groupId>org.gcube.social-networking</groupId>
<artifactId>social-service-client</artifactId>
<version>1.1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<name>social-networking-service-client</name>
<packaging>jar</packaging>
<description>The social networking web service client library</description>

View File

@ -3,12 +3,13 @@ package org.gcube.social_networking.social_networking_client_library;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType;
import org.apache.commons.lang.Validate;
import org.gcube.social_networking.social_networking_client_library.utils.HttpClient;
import org.gcube.social_networking.socialnetworking.model.beans.Message;
import org.gcube.social_networking.socialnetworking.model.beans.MessageInbox;
import org.gcube.social_networking.socialnetworking.model.beans.MessageInputBean;
import org.gcube.social_networking.socialnetworking.model.output.ResponseBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -57,7 +58,7 @@ public class MessageClient extends BaseClient{
* Write message
* @return message id
*/
public String writeMessage(Message m){
public String writeMessage(MessageInputBean m){
Validate.isTrue(m != null, "Message cannot be null");
@ -67,4 +68,26 @@ public class MessageClient extends BaseClient{
return HttpClient.post(new GenericType<ResponseBean<String>>(){}, request, m);
}
/**
* mark the message read or not
* @param messageId the message identifier
* @param read true to set read, false to set unread
* @return the result of the operation
*/
public String markMessageRead(String messageId, boolean read) {
Validate.isTrue(messageId != null, "Message id cannot be null");
logger.debug("set Message id:" + messageId + " read?" + read);
String thisMethodSignature = "set-message-read";
String request = getServiceEndpoint() + thisMethodSignature;
Form form = new Form();
form.param("messageId", messageId);
form.param("read", read+"");
return HttpClient.postFormData(new GenericType<ResponseBean<String>>(){}, request, form);
}
}

View File

@ -4,7 +4,9 @@ import javax.ws.rs.WebApplicationException;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@ -86,4 +88,36 @@ public class HttpClient{
return result.getResult();
}
/**
* Executes a post request
* @param returnType
* @param requestUrl
* @param obj
* @return
*/
public static <R> R postFormData(GenericType<ResponseBean<R>> returnType, String requestUrl, Form form){
logger.debug("Executing post request at url " + requestUrl);
ClientConfig cc = new ClientConfig().register(new JacksonFeature()).register(new AuthorizationFilter()).register(new CustomObjectMapper());;
Client client = ClientBuilder.newClient(cc);
WebTarget webResourceGet = client.target(requestUrl);
Builder basicRequest = webResourceGet.request();
Response response = basicRequest.post(Entity.form(form), Response.class);
if(response == null)
throw new WebApplicationException("Response returned by the service is null");
if(response.getStatus() >= 300)
throw new WebApplicationException("There was an error at server side: " + response.getStatusInfo());
ResponseBean<R> result = response.readEntity(returnType);
if (!result.isSuccess())
throw new WebApplicationException(
"Error message is " + result.getMessage());
return result.getResult();
}
}

View File

@ -12,7 +12,6 @@ import org.gcube.common.authorization.library.provider.AccessTokenProvider;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portal.databook.shared.EnhancedFeed;
import org.gcube.portal.databook.shared.Feed;
import org.gcube.portal.databook.shared.Notification;
import org.gcube.portal.databook.shared.Post;
import org.gcube.social_networking.social_networking_client_library.FullTextSearchClient;
@ -27,8 +26,8 @@ import org.gcube.social_networking.social_networking_client_library.VREClient;
import org.gcube.social_networking.socialnetworking.model.beans.ApplicationId;
import org.gcube.social_networking.socialnetworking.model.beans.JobNotificationBean;
import org.gcube.social_networking.socialnetworking.model.beans.JobStatusModelType;
import org.gcube.social_networking.socialnetworking.model.beans.Message;
import org.gcube.social_networking.socialnetworking.model.beans.MessageInbox;
import org.gcube.social_networking.socialnetworking.model.beans.MessageInputBean;
import org.gcube.social_networking.socialnetworking.model.beans.MyVRE;
import org.gcube.social_networking.socialnetworking.model.beans.PostInputBean;
import org.gcube.social_networking.socialnetworking.model.beans.Recipient;
@ -51,13 +50,14 @@ public class TestClientServices {
private static Logger logger = LoggerFactory.getLogger(TestClientServices.class);
@SuppressWarnings("deprecation")
@Before
public void setContextAndToken(){
//ScopeProvider.instance.set("/d4science.research-infrastructures.eu/gCubeApps/gCube");
//String umaToken = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJySUJPYjZZY3p2ZE4xNVpuNHFkUTRLdEQ5VUhyY1dwNWJCT3NaLXpYbXM0In0.eyJleHAiOjE2NjM2NjU2NTgsImlhdCI6MTY2MzY2NTM1OCwiYXV0aF90aW1lIjoxNjYzNjY0MTg1LCJqdGkiOiIxMjNhYmY0MS1lZmE1LTQ4ZjEtYmE2Zi03MjNkOWZjNDAwMWQiLCJpc3MiOiJodHRwczovL2FjY291bnRzLmQ0c2NpZW5jZS5vcmcvYXV0aC9yZWFsbXMvZDRzY2llbmNlIiwiYXVkIjoiJTJGZDRzY2llbmNlLnJlc2VhcmNoLWluZnJhc3RydWN0dXJlcy5ldSUyRmdDdWJlQXBwcyUyRmdDdWJlIiwic3ViIjoiMzM4OGQwZjgtM2E0OS00ZGEwLWE3OGUtN2I2MjI1OTI2M2U2IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoidmxhYi5pc3RpLmNuci5pdCIsInNlc3Npb25fc3RhdGUiOiI3MjRkMmJmOS00NjQ2LTQwZjAtOTY1ZC02MzFlODJiZWZkMmEiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIi8qIl0sInJlc291cmNlX2FjY2VzcyI6eyIlMkZkNHNjaWVuY2UucmVzZWFyY2gtaW5mcmFzdHJ1Y3R1cmVzLmV1JTJGZ0N1YmVBcHBzJTJGZ0N1YmUiOnsicm9sZXMiOlsiVlJFLU1hbmFnZXIiLCJNZW1iZXIiXX19LCJhdXRob3JpemF0aW9uIjp7InBlcm1pc3Npb25zIjpbeyJyc2lkIjoiYWNlM2ZmNWQtYjU2ZS00MDgzLTljMzAtMjY0NTJiODc3YWIzIiwicnNuYW1lIjoiRGVmYXVsdCBSZXNvdXJjZSJ9XX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiTWFzc2ltaWxpYW5vIEFzc2FudGUiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJtYXNzaW1pbGlhbm8uYXNzYW50ZSIsImdpdmVuX25hbWUiOiJNYXNzaW1pbGlhbm8iLCJmYW1pbHlfbmFtZSI6IkFzc2FudGUiLCJlbWFpbCI6Im1hc3NpbWlsaWFuby5hc3NhbnRlQGlzdGkuY25yLml0In0.KIxC9QYGZCp6jAdye_82q648JjZli9KMxe-lqyFWkuA-HaZ-Ig2lWyn747iKp3UmstQgCTTonmOsVANHp1Feu_U1CuiWqRZ8OhmrTj8Q5v-FKwVtN2GfbjOF9b4aMXySFPd1HtCGHJ4o57uUrIQvvOV_SJOK5SOjG0YzOmsrOcXzSPl97ZZLKwio-Py0rxN6fdK8Obx7TL1eGgllhAI7ZDFRfoZrbz-F1YL1IPlQ6RI76rb7sbt6oL-T6LirP92AmUaW_nTLBBqrFR7uCaZdZKIDd4zxBmyzXjkNHncMKg8yFl-i1SRe58EcucMwEN0O-kUkhIb2CzaClsiWcLjP5g";
ScopeProvider.instance.set("/gcube/devsec/devVRE");
String umaToken = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSSklZNEpoNF9qdDdvNmREY0NlUDFfS1l0akcxVExXVW9oMkQ2Tzk1bFNBIn0.eyJleHAiOjE2NjM2ODc1MzQsImlhdCI6MTY2MzY4NzIzNCwiYXV0aF90aW1lIjoxNjYzNjg3MjI4LCJqdGkiOiI4Y2Q2NmZlNC1mNDBlLTRjZjQtOTBhNC0zZjMxYmYxNjdhYWQiLCJpc3MiOiJodHRwczovL2FjY291bnRzLmRldi5kNHNjaWVuY2Uub3JnL2F1dGgvcmVhbG1zL2Q0c2NpZW5jZSIsImF1ZCI6IiUyRmdjdWJlJTJGZGV2c2VjJTJGZGV2VlJFIiwic3ViIjoiNmE4MmY1ODctYzgwZS00OWUzLTg4YzYtYzExN2U5ZDhkM2Y3IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibmV4dC5kNHNjaWVuY2Uub3JnIiwic2Vzc2lvbl9zdGF0ZSI6IjhmOTQ3ZmE4LWY3NmUtNDMwYS1iMWQ3LWQwNzk5NjNlZjNlZiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVzb3VyY2VfYWNjZXNzIjp7ImNvbmR1Y3Rvci1zZXJ2ZXIiOnsicm9sZXMiOlsiY29uZHVjdG9yLW1hbmFnZXIiXX0sIiUyRmdjdWJlJTJGZGV2c2VjJTJGZGV2VlJFIjp7InJvbGVzIjpbIk1lbWJlciJdfX0sImF1dGhvcml6YXRpb24iOnsicGVybWlzc2lvbnMiOlt7InJzaWQiOiI1NzI4NTUxMC0zOTM5LTRkZTctOGZjMS1lM2E5ZDNjY2UyODEiLCJyc25hbWUiOiJEZWZhdWx0IFJlc291cmNlIn1dfSwic2NvcGUiOiJlbWFpbCBwcm9maWxlIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJNYXNzaW1pbGlhbiBBc3NhbnRlIiwicHJlZmVycmVkX3VzZXJuYW1lIjoibWFzc2ltaWxpYW5vLmFzc2FudGUiLCJnaXZlbl9uYW1lIjoiTWFzc2ltaWxpYW4iLCJsb2NhbGUiOiJlbiIsImZhbWlseV9uYW1lIjoiQXNzYW50ZSIsImVtYWlsIjoibWFzc2ltaWxpYW5vLmFzc2FudGVAaXN0aS5jbnIuaXQifQ.IkYaHojPyKuM-xIQexIf8KDyR41-vnE8DVm7LzVfbRuPEmkprICxHIrrrnrCWTP1ZfgCfhgjlHTvzkGpGUCdM5NxtQbMcm4k4yqfbOAyJ-S0BQJGgpkA-jLYAfC-OrRPeyNul_nTpn-L0vro3-FWRfqgpS3fYGfPbxqQpGxlpqmxJ-V05vKhILkp6uXN0lcrKKuWjAO0VchgnLF0f_J6dlPdsueLKRGMIs_Xsq-RErrhe2vsbw7kt-2hZ29rNHDLcpnXtka-4LK_bVZbHhglIAn1TVPb8YPQmfooIu35fggDSY7qtXIrsJjbRlQzlVUCmjbNd-fykgoex0cojcsjaQ";
String umaToken = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSSklZNEpoNF9qdDdvNmREY0NlUDFfS1l0akcxVExXVW9oMkQ2Tzk1bFNBIn0.eyJleHAiOjE2NjYyODUxMDYsImlhdCI6MTY2NjI4NDgwNiwiYXV0aF90aW1lIjoxNjY2Mjc5NDM2LCJqdGkiOiJjYjlmZDgxNi1kNGU5LTQ4NTYtOTQ5My1iYzk4ZDFhYTdiZTMiLCJpc3MiOiJodHRwczovL2FjY291bnRzLmRldi5kNHNjaWVuY2Uub3JnL2F1dGgvcmVhbG1zL2Q0c2NpZW5jZSIsImF1ZCI6IiUyRmdjdWJlJTJGZGV2c2VjJTJGZGV2VlJFIiwic3ViIjoiNzcxZjYxNTEtMDBhZS00NWMyLWE3NTQtZjA1NDZkOThmNDgyIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibmV4dC5kNHNjaWVuY2Uub3JnIiwic2Vzc2lvbl9zdGF0ZSI6ImNlZDM0NmE1LWExNzctNGNmYy1iYjU5LTBlMjk5OWJhZDU4ZCIsImFsbG93ZWQtb3JpZ2lucyI6WyIvKiJdLCJyZXNvdXJjZV9hY2Nlc3MiOnsiJTJGZ2N1YmUlMkZkZXZzZWMlMkZkZXZWUkUiOnsicm9sZXMiOlsiQ2F0YWxvZ3VlLU1hbmFnZXIiLCJNZW1iZXIiXX19LCJhdXRob3JpemF0aW9uIjp7InBlcm1pc3Npb25zIjpbeyJyc2lkIjoiNTcyODU1MTAtMzkzOS00ZGU3LThmYzEtZTNhOWQzY2NlMjgxIiwicnNuYW1lIjoiRGVmYXVsdCBSZXNvdXJjZSJ9XX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImNlZDM0NmE1LWExNzctNGNmYy1iYjU5LTBlMjk5OWJhZDU4ZCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiQW5kcmVhIFJvc3NpIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYW5kcmVhLnJvc3NpIiwiZ2l2ZW5fbmFtZSI6IkFuZHJlYSIsImZhbWlseV9uYW1lIjoiUm9zc2kiLCJlbWFpbCI6Im0uYXNzYW50ZUBnbWFpbC5jb20ifQ.HHHqPWPkq8wVV2dT8U4iraGy0VpdFb2MJKTGZLz3woqhGOo7cARKTF9S_Cv9RigkL7vg_vriScDZzwCH-jVopK8EDRZTthiQIITzYG7EPg-B0zuOkUeC1GE0LFU3kqCTpwbLElOmQJfn6FP95lzMQWIhJrMSwVwjsXDf12bcYyr0QZDa8A9lxA4RkQezkpXhJ72s841oOp1vul5wyoSFYCdr7cZnMLuY5pdasheqGfQdkGi39SZ_dlnGgAkEArVqUCIlCxvdT2EUpiPG9854e2fBFdOss6NiSbZHF5n5nLvR8kDCaN12YOCw54fxwAByhvI0pBKEa_uM029eip43-A";
AccessTokenProvider.instance.set(umaToken);
SecurityTokenProvider.instance.set("");
}
@ -153,13 +153,23 @@ public class TestClientServices {
logger.debug("Sending message ");
MessageClient messagesClient = new MessageClient();
List<Recipient> rec = Arrays.asList(new Recipient("andrea.rossi"), new Recipient("giancarlo.panichi"));
Message message = new Message(
MessageInputBean message = new MessageInputBean(
"Test message",
"Sending message via client " + System.currentTimeMillis(),
new ArrayList<Recipient>(rec));
String idMessage = messagesClient.writeMessage(message);
assert(idMessage != null);
}
@Test
public void markMessageRead() throws Exception{
logger.debug("markMessageRead message ");
MessageClient messagesClient = new MessageClient();
String idMessage = messagesClient.markMessageRead("a7b825c3-a0ca-42d7-b228-00b9e8f015e4", false);
assert(idMessage != null);
}
//@Test
public void testNotifications() throws Exception {