diff options
author | Vodafone <onap@vodafone.com> | 2019-03-25 17:38:23 +0530 |
---|---|---|
committer | Matthieu Geerebaert <matthieu.geerebaert@orange.com> | 2019-04-12 14:13:40 +0200 |
commit | ff5433e350678f5f45e8b2aa14cdb00f9cecfceb (patch) | |
tree | 002fc90357697b9b4bcfa96279731873a7b3bcc4 /src/main/java/org/onap/nbi/apis/hub/HubResource.java | |
parent | 5ad4e649d9c634309447fda7b867719040c1fd56 (diff) |
CCVPN (East-west Interface)
Change-Id: I11dbe477db3310ef054b2e894e8005b0f8e4be96
Issue-ID: EXTAPI-204
Co-authored-by: madhuri.verma@vodafone.com
Signed-off-by: Vodafone <onap@vodafone.com>
Diffstat (limited to 'src/main/java/org/onap/nbi/apis/hub/HubResource.java')
-rwxr-xr-x | src/main/java/org/onap/nbi/apis/hub/HubResource.java | 59 |
1 files changed, 45 insertions, 14 deletions
diff --git a/src/main/java/org/onap/nbi/apis/hub/HubResource.java b/src/main/java/org/onap/nbi/apis/hub/HubResource.java index 28e1313..3f14b8a 100755 --- a/src/main/java/org/onap/nbi/apis/hub/HubResource.java +++ b/src/main/java/org/onap/nbi/apis/hub/HubResource.java @@ -13,19 +13,23 @@ */ package org.onap.nbi.apis.hub; +import java.util.LinkedHashMap; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; +import org.onap.nbi.OnapComponentsUrlPaths; import org.onap.nbi.apis.hub.model.Subscriber; import org.onap.nbi.apis.hub.model.Subscription; import org.onap.nbi.apis.hub.service.dmaap.CheckDMaaPEventsManager; import org.onap.nbi.apis.hub.service.SubscriptionService; +import org.onap.nbi.commons.EWInterfaceUtils; import org.onap.nbi.commons.JsonRepresentation; import org.onap.nbi.commons.MultiCriteriaRequestBuilder; import org.onap.nbi.commons.ResourceManagement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Query; import org.springframework.http.HttpHeaders; @@ -39,14 +43,14 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.bind.annotation.RequestHeader; @RestController -@RequestMapping("/hub") +@RequestMapping(OnapComponentsUrlPaths.HUB_PATH) @EnableScheduling public class HubResource extends ResourceManagement { @@ -65,27 +69,40 @@ public class HubResource extends ResourceManagement { CheckDMaaPEventsManager checkDMaaPEventMAnager; @Autowired - ExtApiClientForHub extApiClientForHub; + EWInterfaceUtils ewInterfaceUtils; + + @Value("${nbi.public.url}") + private String nbiPublicUrl; @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Object> createEventSubscription(@RequestBody Subscription subscription, - @RequestParam MultiValueMap<String, String> params, @RequestHeader(required = false) String targetURL) { + @RequestParam MultiValueMap<String, String> params, @RequestHeader(value="Target",required = false)String targetUrl) { logger.debug("POST request for subscription : {}", subscription); - if(targetURL != null) { - Subscriber subscriber = subscriptionService.createSubscription(subscription); - return extApiClientForHub.postEventSubscription(subscription,targetURL); - }else { - Subscriber subscriber = subscriptionService.createSubscription(subscription); - JsonRepresentation filter = new JsonRepresentation(params); - return this.createResponse(Subscription.createFromSubscriber(subscriber), filter); + if (targetUrl != null) { + targetUrl = targetUrl + OnapComponentsUrlPaths.HUB_PATH; + String originalCallback = subscription.getCallback(); + subscription.setCallback(nbiPublicUrl + OnapComponentsUrlPaths.LISTENER_PATH); + ResponseEntity ewResponse = ewInterfaceUtils.callPostRequestTarget(subscription, targetUrl); + if (ewResponse.getStatusCode() == HttpStatus.CREATED) { + subscription.setCallback(originalCallback); + subscription.setEwHost(targetUrl); + subscription.setEwId(((LinkedHashMap)ewResponse.getBody()).get( "id" ).toString()); + } else { + return ewResponse; + } } + Subscriber subscriber = subscriptionService.createSubscription(subscription); + JsonRepresentation filter = new JsonRepresentation(params); + return this.createResponse(Subscription.createFromSubscriber(subscriber), filter); + } @GetMapping(value = "/{subscriptionId}", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Subscription> getSubscription(@PathVariable String subscriptionId) { - Optional<Subscriber> optionalSubscriber = subscriptionService.findSubscriptionById(subscriptionId); + Optional<Subscriber> optionalSubscriber = + subscriptionService.findSubscriptionById(subscriptionId); if (!optionalSubscriber.isPresent()) { return ResponseEntity.notFound().build(); } @@ -93,7 +110,8 @@ public class HubResource extends ResourceManagement { } @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity<Object> findSubscribers(@RequestParam MultiValueMap<String, String> params) { + public ResponseEntity<Object> findSubscribers( + @RequestParam MultiValueMap<String, String> params) { Query query = multiCriteriaRequestBuilder.buildRequest(params); List<Subscriber> subscribers = mongoTemplate.find(query, Subscriber.class); @@ -102,7 +120,8 @@ public class HubResource extends ResourceManagement { HttpHeaders headers = new HttpHeaders(); headers.add("X-Total-Count", String.valueOf(totalCount)); headers.add("X-Result-Count", String.valueOf(subscribers.size())); - List<Subscription> subscriptions = subscribers.stream().map(Subscription::createFromSubscriber).collect(Collectors.toList()); + List<Subscription> subscriptions = + subscribers.stream().map(Subscription::createFromSubscriber).collect(Collectors.toList()); return this.findResponse(subscriptions, filter, headers); @@ -121,7 +140,19 @@ public class HubResource extends ResourceManagement { @ResponseStatus(HttpStatus.NO_CONTENT) public void deleteSubscription(@PathVariable String subscriptionId) { logger.debug("DELETE request for subscription id #{}", subscriptionId); + Optional<Subscriber> optionalSubscriber= subscriptionService.findSubscriptionById(subscriptionId); subscriptionService.deleteSubscription(subscriptionId); + String ewHost=optionalSubscriber.get().getEwHost(); + String ewId=optionalSubscriber.get().getEwId(); + logger.info("POST delete for ewHost : {}", ewHost); + logger.info("POST delete for ewId : {}", ewId); + if ( ewHost !=null && ewId !=null ) + { + logger.info("POST deleteIF for ewHost : {}", ewHost); + String targetUrl = ewHost+ "/" + ewId; + ewInterfaceUtils.callDeleteRequestTarget(targetUrl); + logger.info("POST deleteIF for ewHost is : {}", targetUrl); + } } } |