From 40a746215f1075eebaf708a8a9684dc03f707787 Mon Sep 17 00:00:00 2001 From: NicolasLaplaud Date: Thu, 5 Jul 2018 11:32:45 +0200 Subject: HUB Resource - init EventSubscription model and repository - init hub resource - add licences Change-Id: I329864e3e82c72365b4f61fc2782704dc32bb200 Signed-off-by: NicolasLaplaud Issue-ID: EXTAPI-96 --- .../java/org/onap/nbi/apis/hub/HubResource.java | 51 ++++++++++++ .../onap/nbi/apis/hub/model/EventSubscription.java | 95 ++++++++++++++++++++++ .../repository/EventSubscriptionRepository.java | 22 +++++ 3 files changed, 168 insertions(+) create mode 100644 src/main/java/org/onap/nbi/apis/hub/HubResource.java create mode 100644 src/main/java/org/onap/nbi/apis/hub/model/EventSubscription.java create mode 100644 src/main/java/org/onap/nbi/apis/hub/repository/EventSubscriptionRepository.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/onap/nbi/apis/hub/HubResource.java b/src/main/java/org/onap/nbi/apis/hub/HubResource.java new file mode 100644 index 0000000..491ff75 --- /dev/null +++ b/src/main/java/org/onap/nbi/apis/hub/HubResource.java @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2018 Orange + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.nbi.apis.hub; + +import org.onap.nbi.apis.hub.model.EventSubscription; +import org.onap.nbi.apis.hub.repository.EventSubscriptionRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import java.net.URI; + +@RestController +@RequestMapping("/hub") +@EnableScheduling +public class HubResource { + + @Autowired + EventSubscriptionRepository eventSubscriptionRepository; + + @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity createEventSubscription(@RequestBody EventSubscription eventSubscription) { + EventSubscription result = eventSubscriptionRepository.save(eventSubscription); + URI location = ServletUriComponentsBuilder + .fromCurrentRequest() + .path("{id}") + .buildAndExpand(result.getId()) + .toUri(); + + return ResponseEntity.created(location).build(); + } +} diff --git a/src/main/java/org/onap/nbi/apis/hub/model/EventSubscription.java b/src/main/java/org/onap/nbi/apis/hub/model/EventSubscription.java new file mode 100644 index 0000000..3911c23 --- /dev/null +++ b/src/main/java/org/onap/nbi/apis/hub/model/EventSubscription.java @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2018 Orange + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.nbi.apis.hub.model; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Objects; + + +@Document +public class EventSubscription { + + @Id + private String id; + + private String callback; + + private String query; + + private String eventType; + + public EventSubscription(){ + + } + + public EventSubscription(String id, String callback, String query, String eventType) { + this.id = id; + this.callback = callback; + this.query = query; + this.eventType = eventType; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCallback() { + return callback; + } + + public void setCallback(String callback) { + this.callback = callback; + } + + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } + + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + EventSubscription that = (EventSubscription) o; + return Objects.equals(id, that.id) && + Objects.equals(callback, that.callback) && + Objects.equals(query, that.query) && + Objects.equals(eventType, that.eventType); + } + + @Override + public int hashCode() { + + return Objects.hash(id, callback, query, eventType); + } +} diff --git a/src/main/java/org/onap/nbi/apis/hub/repository/EventSubscriptionRepository.java b/src/main/java/org/onap/nbi/apis/hub/repository/EventSubscriptionRepository.java new file mode 100644 index 0000000..3d5fc88 --- /dev/null +++ b/src/main/java/org/onap/nbi/apis/hub/repository/EventSubscriptionRepository.java @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2018 Orange + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.nbi.apis.hub.repository; + +import org.onap.nbi.apis.hub.model.EventSubscription; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface EventSubscriptionRepository extends MongoRepository { +} -- cgit 1.2.3-korg