Improvements on the return value of ECS rest api 68/5368/2
authorecaiyanlinux <martin.c.yan@est.tech>
Fri, 18 Dec 2020 15:36:28 +0000 (16:36 +0100)
committerecaiyanlinux <martin.c.yan@est.tech>
Mon, 21 Dec 2020 10:07:47 +0000 (11:07 +0100)
Signed-off-by: ecaiyanlinux <martin.c.yan@est.tech>
Change-Id: Ie15c4e61838873aa964cc07c12924264493168e8
Issue-ID: NONRTRIC-314

12 files changed:
webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/controller/EnrichmentController.java
webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApi.java
webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImpl.java
webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerRegistrationInfo.java [new file with mode: 0644]
webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerStatusInfo.java [moved from webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/ProducerStatusInfo.java with 93% similarity]
webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/util/JsonArrayHandler.java [new file with mode: 0644]
webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImplTest.java
webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiJobs.java [deleted file]
webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducer.java [deleted file]
webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducers.java [deleted file]
webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiType.java [deleted file]
webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EnrichmentControllerMockConfiguration.java

index 57019ce..c874dc1 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.oransc.portal.nonrtric.controlpanel.controller;
 
-import com.google.gson.GsonBuilder;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonParser;
@@ -34,6 +33,9 @@ import org.oransc.portal.nonrtric.controlpanel.ControlPanelConstants;
 import org.oransc.portal.nonrtric.controlpanel.eiproducerapi.EiProducerApi;
 import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
 import org.oransc.portal.nonrtric.controlpanel.model.ProducerInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo.ProducerEiTypeRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,8 +61,6 @@ public class EnrichmentController {
 
     private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
-    private static com.google.gson.Gson gson = new GsonBuilder().create();
-
     // Publish paths in constants so tests are easy to write
     public static final String CONTROLLER_PATH = ControlPanelConstants.ENDPOINT_PREFIX + "/enrichment";
     // Endpoints
@@ -95,14 +95,9 @@ public class EnrichmentController {
     }
 
     private List<JobInfo> getJobs(JsonElement producerId) {
-        List<JobInfo> jobs = new ArrayList<>();
-        ResponseEntity<String> jobsResponse = this.eiProducerApi.getEiJobsForOneEiProducer(producerId.getAsString());
-        JsonArray jobsJson = JsonParser.parseString(jobsResponse.getBody()).getAsJsonArray();
-        for (JsonElement jobJson : jobsJson) {
-            JobInfo jobInfo = gson.fromJson(jobJson, JobInfo.class);
-            jobs.add(jobInfo);
-        }
-        return jobs;
+        ResponseEntity<List<JobInfo>> jobsResponse =
+            this.eiProducerApi.getEiJobsForOneEiProducer(producerId.getAsString());
+        return jobsResponse.getBody();
     }
 
     @ApiOperation(value = "Get EI producers")
@@ -125,19 +120,18 @@ public class EnrichmentController {
     }
 
     private String[] getSupportedTypes(JsonElement producerId) {
-        ResponseEntity<String> producerResponse = this.eiProducerApi.getEiProducer(producerId.getAsString());
-        JsonArray supportedTypesJson = JsonParser.parseString(producerResponse.getBody()).getAsJsonObject()
-            .get("supported_ei_types").getAsJsonArray();
+        ResponseEntity<ProducerRegistrationInfo> producerResponse =
+            this.eiProducerApi.getEiProducer(producerId.getAsString());
         List<String> supportedTypes = new ArrayList<>();
-        for (JsonElement typeJson : supportedTypesJson) {
-            supportedTypes.add(typeJson.getAsJsonObject().get("ei_type_identity").getAsString());
+        for (ProducerEiTypeRegistrationInfo type : producerResponse.getBody().types) {
+            supportedTypes.add(type.eiTypeId);
         }
         return supportedTypes.toArray(new String[0]);
     }
 
     private String getProducerStatus(JsonElement producerId) {
-        ResponseEntity<String> statusResponse = this.eiProducerApi.getEiProducerStatus(producerId.getAsString());
-        return JsonParser.parseString(statusResponse.getBody()).getAsJsonObject().get("operational_state")
-            .getAsString();
+        ResponseEntity<ProducerStatusInfo> statusResponse =
+            this.eiProducerApi.getEiProducerStatus(producerId.getAsString());
+        return statusResponse.getBody().opState.toString();
     }
 }
index 943b9f9..60a3300 100644 (file)
  */
 package org.oransc.portal.nonrtric.controlpanel.eiproducerapi;
 
+import java.util.List;
+
+import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo;
 import org.springframework.http.ResponseEntity;
 
 public interface EiProducerApi {
 
     public ResponseEntity<String> getAllEiProducerIds();
 
-    public ResponseEntity<String> getEiProducer(String eiProducerId);
+    public ResponseEntity<ProducerRegistrationInfo> getEiProducer(String eiProducerId);
 
-    public ResponseEntity<String> getEiJobsForOneEiProducer(String eiProducerId);
+    public ResponseEntity<List<JobInfo>> getEiJobsForOneEiProducer(String eiProducerId);
 
-    public ResponseEntity<String> getEiProducerStatus(String eiProducerId);
+    public ResponseEntity<ProducerStatusInfo> getEiProducerStatus(String eiProducerId);
 
 }
index 51be42a..921d586 100644 (file)
  */
 package org.oransc.portal.nonrtric.controlpanel.eiproducerapi;
 
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonSyntaxException;
+
 import java.lang.invoke.MethodHandles;
+import java.util.List;
 
 import org.json.JSONArray;
 import org.json.JSONObject;
+import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo;
 import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient;
 import org.oransc.portal.nonrtric.controlpanel.util.ErrorResponseHandler;
+import org.oransc.portal.nonrtric.controlpanel.util.JsonArrayHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +48,7 @@ public class EiProducerApiImpl implements EiProducerApi {
     private static final String STATUS = "/status";
 
     private final AsyncRestClient webClient;
+    private static com.google.gson.Gson gson = new GsonBuilder().create();
 
     @Autowired
     public EiProducerApiImpl(
@@ -58,18 +67,25 @@ public class EiProducerApiImpl implements EiProducerApi {
     }
 
     @Override
-    public ResponseEntity<String> getEiProducer(String eiProducerId) {
-        return getResponseObject(EI_PRODUCERS + "/" + eiProducerId);
+    public ResponseEntity<ProducerRegistrationInfo> getEiProducer(String eiProducerId) throws JsonSyntaxException {
+        ResponseEntity<String> resp = getResponseObject(EI_PRODUCERS + "/" + eiProducerId);
+        ProducerRegistrationInfo info = gson.fromJson(resp.getBody(), ProducerRegistrationInfo.class);
+        return new ResponseEntity<>(info, resp.getStatusCode());
     }
 
     @Override
-    public ResponseEntity<String> getEiJobsForOneEiProducer(String eiProducerId) {
-        return getResponseArray(EI_PRODUCERS + "/" + eiProducerId + EI_JOBS);
+    public ResponseEntity<List<JobInfo>> getEiJobsForOneEiProducer(String eiProducerId)
+        throws JsonSyntaxException, IllegalStateException {
+        ResponseEntity<String> resp = getResponseArray(EI_PRODUCERS + "/" + eiProducerId + EI_JOBS);
+        List<JobInfo> jobs = JsonArrayHandler.parseJsonArray(resp.getBody(), JobInfo.class);
+        return new ResponseEntity<>(jobs, resp.getStatusCode());
     }
 
     @Override
-    public ResponseEntity<String> getEiProducerStatus(String eiProducerId) {
-        return getResponseObject(EI_PRODUCERS + "/" + eiProducerId + STATUS);
+    public ResponseEntity<ProducerStatusInfo> getEiProducerStatus(String eiProducerId) throws JsonSyntaxException {
+        ResponseEntity<String> resp = getResponseObject(EI_PRODUCERS + "/" + eiProducerId + STATUS);
+        ProducerStatusInfo status = gson.fromJson(resp.getBody(), ProducerStatusInfo.class);
+        return new ResponseEntity<>(status, resp.getStatusCode());
     }
 
     private ResponseEntity<String> getResponseArray(String url) {
diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerRegistrationInfo.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerRegistrationInfo.java
new file mode 100644 (file)
index 0000000..0f4499d
--- /dev/null
@@ -0,0 +1,75 @@
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2020 Nordix Foundation
+ * %%
+ * 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.
+ * ========================LICENSE_END===================================
+ */
+
+package org.oransc.portal.nonrtric.controlpanel.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.gson.annotations.SerializedName;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Collection;
+
+import lombok.Builder;
+
+import org.immutables.gson.Gson;
+
+@Gson.TypeAdapters
+@ApiModel(value = "producer_registration_info", description = "Information for an EI producer")
+@Builder
+public class ProducerRegistrationInfo {
+
+    @Gson.TypeAdapters
+    @ApiModel(value = "producer_ei_type_registration_info", description = "Information for an EI type")
+    @Builder
+    public static class ProducerEiTypeRegistrationInfo {
+
+        @ApiModelProperty(value = "EI type identity", required = true)
+        @SerializedName("ei_type_identity")
+        @JsonProperty(value = "ei_type_identity", required = true)
+        public String eiTypeId;
+
+        @ApiModelProperty(value = "Json schema for the job data")
+        @SerializedName("ei_job_data_schema")
+        @JsonProperty("ei_job_data_schema")
+        public Object jobDataSchema;
+    }
+
+    @ApiModelProperty(value = "Supported EI types", required = true)
+    @SerializedName("supported_ei_types")
+    @JsonProperty(value = "supported_ei_types", required = true)
+    public Collection<ProducerEiTypeRegistrationInfo> types;
+
+    @ApiModelProperty(value = "callback for EI job", required = true)
+    @SerializedName("ei_job_callback_url")
+    @JsonProperty(value = "ei_job_callback_url", required = true)
+    public String jobCallbackUrl;
+
+    @ApiModelProperty(value = "callback for producer supervision", required = true)
+    @SerializedName("ei_producer_supervision_callback_url")
+    @JsonProperty(value = "ei_producer_supervision_callback_url", required = true)
+    public String producerSupervisionCallbackUrl;
+
+    @ApiModelProperty(value = "status", required = true)
+    @SerializedName("status")
+    @JsonProperty(value = "status", required = true)
+    public ProducerStatusInfo status;
+}
  * ========================LICENSE_END===================================
  */
 
-package org.oransc.portal.nonrtric.controlpanel.mock;
+package org.oransc.portal.nonrtric.controlpanel.model;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.gson.annotations.SerializedName;
 
+import lombok.Builder;
+
 import org.immutables.gson.Gson;
 
 @Gson.TypeAdapters
+@Builder
 public class ProducerStatusInfo {
 
     @Gson.TypeAdapters
diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/util/JsonArrayHandler.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/util/JsonArrayHandler.java
new file mode 100644 (file)
index 0000000..7af2429
--- /dev/null
@@ -0,0 +1,24 @@
+package org.oransc.portal.nonrtric.controlpanel.util;
+
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class JsonArrayHandler {
+
+    public static com.google.gson.Gson gson = new GsonBuilder().create();
+
+    public static <T> List<T> parseJsonArray(String jsonString, Class<T> clazz) {
+        List<T> result = new ArrayList<>();
+        JsonArray jsonArr = JsonParser.parseString(jsonString).getAsJsonArray();
+        for (JsonElement jsonElement : jsonArr) {
+            T json = gson.fromJson(jsonElement.toString(), clazz);
+            result.add(json);
+        }
+        return result;
+    }
+}
index a388d8b..1f4c21b 100644 (file)
  */
 package org.oransc.portal.nonrtric.controlpanel.eiproducerapi;
 
+import static org.junit.Assert.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonSyntaxException;
+
 import java.util.Arrays;
+import java.util.List;
 
 import org.junit.jupiter.api.Test;
+import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo;
 import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -53,6 +61,7 @@ class EiProducerApiImplTest {
 
     AsyncRestClient restClientMock = mock(AsyncRestClient.class);
     EiProducerApiImpl apiUnderTest = new EiProducerApiImpl(restClientMock);
+    private static com.google.gson.Gson gson = new GsonBuilder().create();
 
     private void whenGetReturnOK(String url, HttpStatus status, String body) {
         ResponseEntity<String> ret = new ResponseEntity<>(body, status);
@@ -86,27 +95,34 @@ class EiProducerApiImplTest {
     void testGetEiProducerValidJson() {
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1, HttpStatus.OK, EI_PRODUCER_1_INFO_VALID);
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1);
+        ResponseEntity<ProducerRegistrationInfo> returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1);
 
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
-        assertEquals(EI_PRODUCER_1_INFO_VALID, returnedResp.getBody());
+        assertEquals(EI_PRODUCER_1_INFO_VALID, gson.toJson(returnedResp.getBody()));
     }
 
     @Test
-    void testGetEiProducerInvalidJson() {
+    public void whenGetEiProducerExceptionThrown_thenAssertionSucceeds() {
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1, HttpStatus.OK, EI_PRODUCER_1_INFO_INVALID);
+        Exception exception = assertThrows(JsonSyntaxException.class, () -> {
+            apiUnderTest.getEiProducer(EI_PRODUCER_1);
+        });
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1);
-
-        assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
-        assertTrue(returnedResp.getBody().contains("JSONException"));
+        String expectedMessage = "Expected BEGIN_OBJECT but was STRING";
+        String actualMessage = exception.getMessage();
+        assertTrue(actualMessage.contains(expectedMessage));
     }
 
     @Test
-    void testGetEiJobsForOneEiProducerFailure() {
+    void whenGetEiJobsForOneEiProducerExceptionThrown_thenAssertionSucceeds() {
         whenGetReturnFailure(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_EI_JOBS, HttpStatus.NOT_FOUND, "");
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
-        assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
+        Exception exception = assertThrows(IllegalStateException.class, () -> {
+            apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
+        });
+
+        String expectedMessage = "Not a JSON Array: null";
+        String actualMessage = exception.getMessage();
+        assertTrue(actualMessage.contains(expectedMessage));
     }
 
     @Test
@@ -115,9 +131,9 @@ class EiProducerApiImplTest {
 
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_EI_JOBS, HttpStatus.OK, eiJobs);
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
-        assertTrue(returnedResp.getBody().contains("\"ei_job_identity\":\"eijob1\""));
-        assertTrue(returnedResp.getBody().contains("\"ei_job_identity\":\"eijob2\""));
+        ResponseEntity<List<JobInfo>> returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
+        assertTrue(gson.toJson(returnedResp.getBody()).contains("\"ei_job_identity\":\"eijob1\""));
+        assertTrue(gson.toJson(returnedResp.getBody()).contains("\"ei_job_identity\":\"eijob2\""));
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
     }
 
@@ -125,20 +141,22 @@ class EiProducerApiImplTest {
     void testGetEiProducerStatusValidJson() {
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_STATUS, HttpStatus.OK, EI_PRODUCER_1_STATUS_VALID);
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
+        ResponseEntity<ProducerStatusInfo> returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
 
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
-        assertEquals(EI_PRODUCER_1_STATUS_VALID, returnedResp.getBody());
+        assertEquals(EI_PRODUCER_1_STATUS_VALID, gson.toJson(returnedResp.getBody()));
     }
 
     @Test
-    void testGetEiProducerStatusInvalidJson() {
+    public void whenGetEiProducerStatusExceptionThrown_thenAssertionSucceeds() {
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_STATUS, HttpStatus.OK,
             EI_PRODUCER_1_STATUS_INVALID);
+        Exception exception = assertThrows(JsonSyntaxException.class, () -> {
+            apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
+        });
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
-
-        assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
-        assertTrue(returnedResp.getBody().contains("JSONException"));
+        String expectedMessage = "Expected BEGIN_OBJECT but was STRING";
+        String actualMessage = exception.getMessage();
+        assertTrue(actualMessage.contains(expectedMessage));
     }
 }
diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiJobs.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiJobs.java
deleted file mode 100644 (file)
index ce831d3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*-
- * ========================LICENSE_START=================================
- * O-RAN-SC
- * %%
- * Copyright (C) 2019 Nordix Foundation
- * Modifications Copyright (C) 2020 Nordix Foundation
- * %%
- * 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.
- * ========================LICENSE_END===================================
- */
-package org.oransc.portal.nonrtric.controlpanel.mock;
-
-import java.util.ArrayList;
-
-import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
-
-public class EiJobs extends ArrayList<JobInfo> {
-
-    private static final long serialVersionUID = -928428052502491021L;
-
-}
diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducer.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducer.java
deleted file mode 100644 (file)
index 603dd5a..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ========================LICENSE_START=================================
- * O-RAN-SC
- * %%
- * Copyright (C) 2019 Nordix Foundation
- * Modifications Copyright (C) 2020 Nordix Foundation
- * %%
- * 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.
- * ========================LICENSE_END===================================
- */
-package org.oransc.portal.nonrtric.controlpanel.mock;
-
-import java.util.List;
-
-import org.immutables.gson.Gson;
-import org.immutables.value.Value;
-
-@Value.Immutable
-@Gson.TypeAdapters
-public interface EiProducer {
-
-    public String ei_producer_id();
-
-    public String ei_job_creation_callback_url();
-
-    public String ei_job_deletion_callback_url();
-
-    public String ei_producer_supervision_callback_url();
-
-    public List<EiType> supported_ei_types();
-
-    public ProducerStatusInfo status();
-}
diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducers.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducers.java
deleted file mode 100644 (file)
index 5bc3ec8..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-
- * ========================LICENSE_START=================================
- * O-RAN-SC
- * %%
- * Copyright (C) 2019 Nordix Foundation
- * Modifications Copyright (C) 2020 Nordix Foundation
- * %%
- * 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.
- * ========================LICENSE_END===================================
- */
-package org.oransc.portal.nonrtric.controlpanel.mock;
-
-import java.util.ArrayList;
-
-public class EiProducers extends ArrayList<EiProducer> {
-
-    private static final long serialVersionUID = -928428052502491021L;
-
-}
diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiType.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiType.java
deleted file mode 100644 (file)
index ce64fad..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ========================LICENSE_START=================================
- * O-RAN-SC
- * %%
- * Copyright (C) 2019 Nordix Foundation
- * Modifications Copyright (C) 2020 Nordix Foundation
- * %%
- * 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.
- * ========================LICENSE_END===================================
- */
-package org.oransc.portal.nonrtric.controlpanel.mock;
-
-import java.util.List;
-
-import org.immutables.gson.Gson;
-import org.immutables.value.Value;
-
-@Value.Immutable
-@Gson.TypeAdapters
-public interface EiType {
-
-    public String ei_type_identity();
-
-    public Object ei_job_data_schema();
-
-    public List<String> ei_producer_ids();
-}
index c0fb4f1..b9dcc6b 100644 (file)
@@ -37,6 +37,9 @@ import java.util.stream.Collectors;
 
 import org.oransc.portal.nonrtric.controlpanel.eiproducerapi.EiProducerApi;
 import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo.ProducerEiTypeRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.test.context.TestConfiguration;
@@ -74,29 +77,29 @@ public class EnrichmentControllerMockConfiguration {
         }
 
         public ResponseEntity<String> getAllEiProducers() {
-            EiProducers result = new EiProducers();
+            List<ProducerRegistrationInfo> result = new ArrayList<>();
             result.addAll(database.getAllEiProducers());
             return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK);
         }
 
         @Override
-        public ResponseEntity<String> getEiProducer(String eiProducerId) {
-            EiProducer result = database.getEiProducerInstance(eiProducerId);
-            return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK);
+        public ResponseEntity<ProducerRegistrationInfo> getEiProducer(String eiProducerId) {
+            ProducerRegistrationInfo result = database.getEiProducerInstance(eiProducerId);
+            return new ResponseEntity<>(result, HttpStatus.OK);
         }
 
         @Override
-        public ResponseEntity<String> getEiJobsForOneEiProducer(String eiProducerId) {
-            EiJobs result = new EiJobs();
+        public ResponseEntity<List<JobInfo>> getEiJobsForOneEiProducer(String eiProducerId) {
+            List<JobInfo> result = new ArrayList<>();
 
             result.addAll(database.getAllEiJobs());
-            return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK);
+            return new ResponseEntity<>(result, HttpStatus.OK);
         }
 
         @Override
-        public ResponseEntity<String> getEiProducerStatus(String eiProducerId) {
-            EiProducer result = database.getEiProducerInstance(eiProducerId);
-            return new ResponseEntity<>(gson.toJson(result.status()), HttpStatus.OK);
+        public ResponseEntity<ProducerStatusInfo> getEiProducerStatus(String eiProducerId) {
+            ProducerRegistrationInfo result = database.getEiProducerInstance(eiProducerId);
+            return new ResponseEntity<>(result.status, HttpStatus.OK);
         }
     }
 
@@ -104,19 +107,19 @@ public class EnrichmentControllerMockConfiguration {
 
         Database() {
 
-            List<EiType> supported_types = new ArrayList<EiType>();
+            List<ProducerEiTypeRegistrationInfo> supported_types = new ArrayList<ProducerEiTypeRegistrationInfo>();
 
-            // Create EiType instance
+            // Create ProducerEiTypeRegistrationInfo instance
             String schema = getStringFromFile("ei-type-1.json");
-            EiType eiType1 = getEiTypeInstance("type1", schema, Arrays.asList("prod-1"));
+            ProducerEiTypeRegistrationInfo eiType1 = getEiTypeInstance("type1", schema, Arrays.asList("prod-1"));
             supported_types.add(eiType1);
 
-            // Create EiType instance
+            // Create ProducerEiTypeRegistrationInfo instance
             schema = getStringFromFile("ei-type-2.json");
-            EiType eiType2 = getEiTypeInstance("type2", schema, Arrays.asList("prod-1"));
+            ProducerEiTypeRegistrationInfo eiType2 = getEiTypeInstance("type2", schema, Arrays.asList("prod-1"));
             supported_types.add(eiType2);
 
-            // Create EiProducer instance
+            // Create ProducerRegistrationInfo instance
             putEiProducerInstance("prod-1", "http://example.com/", "http://example.com/", "http://example.com/",
                 supported_types, new ProducerStatusInfo(ProducerStatusInfo.OperationalState.ENABLED));
 
@@ -152,22 +155,20 @@ public class EnrichmentControllerMockConfiguration {
         }
 
         void putEiProducerInstance(String id, String creation_url, String deletion_url, String callback_url,
-            List<EiType> supported_types, ProducerStatusInfo status) {
-            EiProducer eiProducer = ImmutableEiProducer.builder() //
-                .ei_producer_id(id) //
-                .ei_job_creation_callback_url(creation_url) //
-                .ei_job_deletion_callback_url(deletion_url) //
-                .ei_producer_supervision_callback_url(callback_url) //
-                .supported_ei_types(supported_types) //
-                .status(status).build(); //
+            List<ProducerEiTypeRegistrationInfo> supported_types, ProducerStatusInfo status) {
+            ProducerRegistrationInfo eiProducer = ProducerRegistrationInfo.builder() //
+                .jobCallbackUrl(creation_url) //
+                .producerSupervisionCallbackUrl(callback_url) //
+                .types(supported_types) //
+                .status(status) //
+                .build(); //
             eiProducers.put(id, eiProducer);
         }
 
-        EiType getEiTypeInstance(String id, Object data, List<String> producer_ids) {
-            return ImmutableEiType.builder() //
-                .ei_type_identity(id) //
-                .ei_job_data_schema(data) //
-                .ei_producer_ids(producer_ids) //
+        ProducerEiTypeRegistrationInfo getEiTypeInstance(String id, Object data, List<String> producer_ids) {
+            return ProducerEiTypeRegistrationInfo.builder() //
+                .eiTypeId(id) //
+                .jobDataSchema(data) //
                 .build(); //
         }
 
@@ -179,8 +180,8 @@ public class EnrichmentControllerMockConfiguration {
             eiJobs.remove(id);
         }
 
-        EiProducer getEiProducerInstance(String id) throws RestClientException {
-            EiProducer i = eiProducers.get(id);
+        ProducerRegistrationInfo getEiProducerInstance(String id) throws RestClientException {
+            ProducerRegistrationInfo i = eiProducers.get(id);
             if (i == null) {
                 throw new RestClientException("Producer not found: " + id);
             }
@@ -191,16 +192,15 @@ public class EnrichmentControllerMockConfiguration {
             return Collections.unmodifiableCollection(eiProducers.keySet());
         }
 
-        public Collection<EiProducer> getAllEiProducers() {
+        public Collection<ProducerRegistrationInfo> getAllEiProducers() {
             return eiProducers.values();
         }
 
         public List<JobInfo> getAllEiJobs() {
             return new ArrayList<>(eiJobs.values());
-
         }
 
-        private Map<String, EiProducer> eiProducers = new HashMap<>();
+        private Map<String, ProducerRegistrationInfo> eiProducers = new HashMap<>();
         private Map<String, JobInfo> eiJobs = new HashMap<>();
     }
 }