*/
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;
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;
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
}
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")
}
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();
}
}
*/
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);
}
*/
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;
private static final String STATUS = "/status";
private final AsyncRestClient webClient;
+ private static com.google.gson.Gson gson = new GsonBuilder().create();
@Autowired
public EiProducerApiImpl(
}
@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) {
--- /dev/null
+/*-
+ * ========================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
--- /dev/null
+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;
+ }
+}
*/
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;
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);
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
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());
}
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));
}
}
+++ /dev/null
-/*-
- * ========================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;
-
-}
+++ /dev/null
-/*-
- * ========================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();
-}
+++ /dev/null
-/*-
- * ========================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;
-
-}
+++ /dev/null
-/*-
- * ========================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();
-}
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;
}
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);
}
}
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));
}
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(); //
}
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);
}
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<>();
}
}