From aba8bcf80754f27a74d1e50bc61f1fa38d0d9f5d Mon Sep 17 00:00:00 2001 From: "panagiotis.kanakakis" Date: Wed, 24 Jan 2018 15:10:47 +0000 Subject: [PATCH] 1. Add a get notifications method by subscription id --- pom.xml | 6 +- .../service/controllers/BrokerApi.java | 5 ++ .../service/controllers/BrokerApiImpl.java | 70 ++++++++++++------- .../webapp/WEB-INF/applicationContext.xml | 4 +- 4 files changed, 54 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index 4d8bd80..b23deb7 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ eu.dnetlib uoa-repository-manager-service 1.0.0-SNAPSHOT - war + jar @@ -218,11 +218,11 @@ - + postgresql diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApi.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApi.java index dd9c679..34f838b 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApi.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApi.java @@ -49,4 +49,9 @@ public interface BrokerApi { @RequestMapping(value = "/getDnetTopics" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody Map getDnetTopics() throws BrokerException; + + @RequestMapping(value = "/getNotificationsBySubscriptionId/{subscriptionId}/{page}/{size}" , method = RequestMethod.GET + ,produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + EventsPage getNotificationsBySubscriptionId(String subscriptionId,String page,String size) throws BrokerException; } diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApiImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApiImpl.java index d5952a9..6c01319 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApiImpl.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApiImpl.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; @@ -22,6 +23,7 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponents; import org.springframework.web.util.UriComponentsBuilder; import javax.annotation.PostConstruct; @@ -45,12 +47,21 @@ public class BrokerApiImpl implements BrokerApi { private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger .getLogger(BrokerApiImpl.class); + private RestTemplate restTemplate = null; + + private HttpHeaders httpHeaders; private HashMap topics = new HashMap(); @PostConstruct private void initDnetTopicsMap() { + restTemplate = new RestTemplate(); + restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); + + httpHeaders = new HttpHeaders(); + httpHeaders.set("Content-Type", "application/json"); + LOGGER.debug("Init dnet topics!"); InputStream is = null; try { @@ -104,11 +115,9 @@ public class BrokerApiImpl implements BrokerApi { UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(openairePath + service) .queryParam("ds", datasourceName); - RestTemplate template = new RestTemplate(); - template.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); ResponseEntity> resp; try { - resp = template.exchange( + resp = restTemplate.exchange( builder.build().encode().toUri(), HttpMethod.GET, null, @@ -147,11 +156,9 @@ public class BrokerApiImpl implements BrokerApi { HttpEntity entity = new HttpEntity<>(advQueryObject, headers); - RestTemplate template = new RestTemplate(); - template.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); ResponseEntity resp; try { - resp = template.exchange( + resp = restTemplate.exchange( builder.buildAndExpand(uriParams).encode().toUri(), HttpMethod.POST, entity, @@ -231,13 +238,10 @@ public class BrokerApiImpl implements BrokerApi { .queryParam("topic", topic) .queryParam("page", page); - //create new template engine - RestTemplate template = new RestTemplate(); - template.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); ResponseEntity resp; try { //communicate with endpoint - resp = template.exchange( + resp = restTemplate.exchange( builder.build().encode().toUri(), HttpMethod.GET, null, @@ -259,12 +263,10 @@ public class BrokerApiImpl implements BrokerApi { .queryParam("email", userEmail); //create new template engine - RestTemplate template = new RestTemplate(); - template.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); ResponseEntity>> resp; try { //communicate with endpoint - resp = template.exchange( + resp = restTemplate.exchange( builder.build().encode().toUri(), HttpMethod.GET, null, @@ -284,10 +286,7 @@ public class BrokerApiImpl implements BrokerApi { //build the uri params UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(openairePath + service); - //Header info - MultiValueMap headers = new LinkedMultiValueMap<>(); - headers.add("Content-Type", "application/json"); - HttpEntity entity = new HttpEntity<>(obj, headers); + HttpEntity entity = new HttpEntity<>(obj, httpHeaders); //create new template engine RestTemplate template = new RestTemplate(); @@ -295,7 +294,7 @@ public class BrokerApiImpl implements BrokerApi { ResponseEntity resp; try { //communicate with endpoint - resp = template.exchange( + resp = restTemplate.exchange( builder.build().encode().toUri(), HttpMethod.POST, entity, @@ -315,12 +314,9 @@ public class BrokerApiImpl implements BrokerApi { //build the uri params UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiPath + service); - //create new template engine - RestTemplate template = new RestTemplate(); - template.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); try { //communicate with endpoint - template.exchange( + restTemplate.exchange( builder.build().encode().toUri(), HttpMethod.DELETE, null, @@ -338,13 +334,10 @@ public class BrokerApiImpl implements BrokerApi { //build the uri params UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiPath + service); - //create new template engine - RestTemplate template = new RestTemplate(); - template.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); ResponseEntity resp; try { //communicate with endpoint - resp = template.exchange( + resp = restTemplate.exchange( builder.build().encode().toUri(), HttpMethod.GET, null, @@ -361,5 +354,30 @@ public class BrokerApiImpl implements BrokerApi { return topics; } + @Override + public EventsPage getNotificationsBySubscriptionId(@PathVariable("subscriptionId") String subscriptionId, + @PathVariable("page") String page, + @PathVariable("size") String size + ) throws BrokerException { + + UriComponents uriComponents = UriComponentsBuilder + .fromHttpUrl(apiPath + "/openaireBroker/notifications/") + .path("/{id}/{page}/{size}/") + .build().expand(subscriptionId,page, size).encode(); + + ResponseEntity resp; + try { + resp = restTemplate.exchange( + uriComponents.toUri(), + HttpMethod.GET, + null, + new ParameterizedTypeReference() { + }); + } catch (RestClientException e) { + throw new BrokerException(e); + } + return resp.getBody(); + } + } diff --git a/src/main/webapp/WEB-INF/applicationContext.xml b/src/main/webapp/WEB-INF/applicationContext.xml index 7b9e0a8..87f064d 100644 --- a/src/main/webapp/WEB-INF/applicationContext.xml +++ b/src/main/webapp/WEB-INF/applicationContext.xml @@ -14,7 +14,7 @@ - +