Remove Sonar issues 86/112486/3
authorelinuxhenrik <henrik.b.andersson@est.tech>
Thu, 10 Sep 2020 10:46:50 +0000 (12:46 +0200)
committerelinuxhenrik <henrik.b.andersson@est.tech>
Thu, 17 Sep 2020 07:36:19 +0000 (09:36 +0200)
Change-Id: I4e9b737e110f83a32512c3f5f98bf1a784e6c5ee
Issue-ID: CCSDK-2604
Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
a1-adapter/a1-adapter-api/provider/pom.xml
a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterClient.java
a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterProvider.java
a1-adapter/a1-adapter-api/provider/src/test/java/org/onap/ccsdk/features/a1/adapter/A1AdapterClientTest.java
a1-adapter/a1-adapter-api/provider/src/test/java/org/onap/ccsdk/features/a1/adapter/A1AdapterProviderTest.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/SwaggerConfig.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java

index dfb8555..89e0c5c 100644 (file)
@@ -39,6 +39,8 @@
 
     <properties>
         <sonar-maven-plugin.version>3.7.0.1746</sonar-maven-plugin.version>
+        <junit-jupiter-engine.version>5.6.0</junit-jupiter-engine.version>
+        <mockito-junit-jupiter.version>3.5.10</mockito-junit-jupiter.version>
     </properties>
 
     <dependencyManagement>
             <artifactId>yang-data-impl</artifactId>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>concepts</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <scope>test</scope>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
         </dependency>
         <dependency>
             <groupId>org.onap.ccsdk.sli.core</groupId>
         <dependency>
             <groupId>org.onap.ccsdk.sli.core</groupId>
             <artifactId>utils-provider</artifactId>
-            <!-- <version>${sdnctl.sli.version}</version> -->
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${junit-jupiter-engine.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-junit-jupiter</artifactId>
+            <version>${mockito-junit-jupiter.version}</version>
+            <scope>test</scope>
         </dependency>
     </dependencies>
 
index 2cf63b3..addfa46 100644 (file)
@@ -24,11 +24,6 @@ import java.util.Properties;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper;
 import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyOutputBuilder;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyOutputBuilder;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusOutputBuilder;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeOutputBuilder;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutputBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,6 +31,8 @@ public class A1AdapterClient {
 
     private static final String PARAMETERS_PASSED_TO_SLI = "Parameters passed to SLI";
     private static final String PARAMETERS_RETURNED_BY_SLI = "Parameters returned by SLI";
+    private static final String FAILURE = "failure";
+    private static final String SVC_LOGIC_STATUS = "SvcLogic.status";
 
     private static final Logger LOG = LoggerFactory.getLogger(A1AdapterClient.class);
 
@@ -49,10 +46,11 @@ public class A1AdapterClient {
         return svcLogicService.hasGraph(module, rpc, version, mode);
     }
 
+    @SuppressWarnings("squid:S1874") // "@Deprecated" code should not be used
     public Properties execute(String module, String rpc, String version, String mode,
-            GetA1PolicyTypeOutputBuilder serviceData, Properties parms) throws SvcLogicException {
+        Object policyData, Properties parms) throws SvcLogicException {
         Properties localProp;
-        localProp = MdsalHelper.toProperties(parms, serviceData);
+        localProp = MdsalHelper.toProperties(parms, policyData);
         if (LOG.isDebugEnabled()) {
             logParameters(PARAMETERS_PASSED_TO_SLI, localProp);
         }
@@ -60,82 +58,10 @@ public class A1AdapterClient {
         if (LOG.isDebugEnabled()) {
             logParameters(PARAMETERS_RETURNED_BY_SLI, localProp);
         }
-        if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
+        if (FAILURE.equalsIgnoreCase(respProps.getProperty(SVC_LOGIC_STATUS))) {
             return respProps;
         }
-        MdsalHelper.toBuilder(respProps, serviceData);
-        return respProps;
-    }
-
-    public Properties execute(String module, String rpc, String version, String mode,
-            GetA1PolicyStatusOutputBuilder serviceData, Properties parms) throws SvcLogicException {
-        Properties localProp;
-        localProp = MdsalHelper.toProperties(parms, serviceData);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_PASSED_TO_SLI, localProp);
-        }
-        Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_RETURNED_BY_SLI, localProp);
-        }
-        if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
-            return respProps;
-        }
-        MdsalHelper.toBuilder(respProps, serviceData);
-        return respProps;
-    }
-
-    public Properties execute(String module, String rpc, String version, String mode,
-            GetA1PolicyOutputBuilder serviceData, Properties parms) throws SvcLogicException {
-        Properties localProp;
-        localProp = MdsalHelper.toProperties(parms, serviceData);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_PASSED_TO_SLI, localProp);
-        }
-        Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_RETURNED_BY_SLI, localProp);
-        }
-        if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
-            return respProps;
-        }
-        MdsalHelper.toBuilder(respProps, serviceData);
-        return respProps;
-    }
-
-    public Properties execute(String module, String rpc, String version, String mode,
-            DeleteA1PolicyOutputBuilder serviceData, Properties parms) throws SvcLogicException {
-        Properties localProp;
-        localProp = MdsalHelper.toProperties(parms, serviceData);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_PASSED_TO_SLI, localProp);
-        }
-        Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_RETURNED_BY_SLI, localProp);
-        }
-        if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
-            return respProps;
-        }
-        MdsalHelper.toBuilder(respProps, serviceData);
-        return respProps;
-    }
-
-    public Properties execute(String module, String rpc, String version, String mode,
-            PutA1PolicyOutputBuilder serviceData, Properties parms) throws SvcLogicException {
-        Properties localProp;
-        localProp = MdsalHelper.toProperties(parms, serviceData);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_PASSED_TO_SLI, localProp);
-        }
-        Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp);
-        if (LOG.isDebugEnabled()) {
-            logParameters(PARAMETERS_RETURNED_BY_SLI, localProp);
-        }
-        if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
-            return respProps;
-        }
-        MdsalHelper.toBuilder(respProps, serviceData);
+        MdsalHelper.toBuilder(respProps, policyData);
         return respProps;
     }
 
index e1c151a..8693f49 100644 (file)
 
 package org.onap.ccsdk.features.a1.adapter;
 
+import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR;
+import static org.apache.http.HttpStatus.SC_SERVICE_UNAVAILABLE;
+
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.lang.reflect.Method;
 import java.util.Properties;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
@@ -51,48 +54,43 @@ import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyInp
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyInputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutput;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutputBuilder;
+import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Defines a base implementation for your provider. This class overrides the generated interface from the YANG model and
- * implements the request model for the A1 interface. This class identifies the Near-RT RIC throught the IP passed over
- * the payload and calls the corresponding Near-RT RIC over Rest API
- *
+ * This class implements the generated interface from the YANG model and implements the request model for the A1
+ * interface. This class identifies the Near-RT RIC throughout the IP passed over the payload and calls the
+ * corresponding Near-RT RIC over Rest API.
  */
 @SuppressWarnings("squid:S1874") // "@Deprecated" code should not be used
 public class A1AdapterProvider implements AutoCloseable, A1ADAPTERAPIService {
 
+    private static final String START_OPERATION_MESSAGE = "Start of {}";
+    private static final String END_OPERATION_MESSAGE = "End of {}";
+
     private static final String A1_ADAPTER_API = "A1-ADAPTER-API";
     private static final String RESPONSE_BODY = "responseBody";
     private static final String RESPONSE_CODE = "response-code";
     private static final String SYNC = "sync";
 
-    private static final String ADDING_INPUT_DATA_MESSAGE = "Adding INPUT data for {} input: {}";
-    private static final String A1_ADAPTER_CLIENT_GRAPH_MESSAGE = "A1AdapterClient has a Directed Graph for '{}'";
-    private static final String SERVICE_EXCEPTION_MESSAGE = "Caught exception executing service logic for {}, {}";
-    private static final String NO_SERVICE_LOGIC_ACTIVE_MESSAGE = "No service logic active for A1Adapter: '{}'";
-    private static final String LOOKUP_SERVICE_LOGIC_EXCEPTION_MESSAGE = "Caught exception looking for service logic, {}";
-
     private static final Logger log = LoggerFactory.getLogger(A1AdapterProvider.class);
 
     private static final String APPLICATION_NAME = "a1Adapter-api";
 
     private final ExecutorService executor;
-    protected DataBroker dataBroker;
     protected NotificationPublishService notificationService;
     protected RpcProviderRegistry rpcRegistry;
     protected BindingAwareBroker.RpcRegistration<A1ADAPTERAPIService> rpcRegistration;
     private final A1AdapterClient a1AdapterClient;
 
-    public A1AdapterProvider(final DataBroker dataBroker, final NotificationPublishService notificationPublishService,
-            final RpcProviderRegistry rpcProviderRegistry, final A1AdapterClient a1AdapterClient) {
+    public A1AdapterProvider(final NotificationPublishService notificationPublishService,
+        final RpcProviderRegistry rpcProviderRegistry, final A1AdapterClient a1AdapterClient) {
 
         log.info("Creating provider for {}", APPLICATION_NAME);
         executor = Executors.newFixedThreadPool(1);
-        this.dataBroker = dataBroker;
         this.notificationService = notificationPublishService;
         this.rpcRegistry = rpcProviderRegistry;
         this.a1AdapterClient = a1AdapterClient;
@@ -105,10 +103,6 @@ public class A1AdapterProvider implements AutoCloseable, A1ADAPTERAPIService {
         log.info("Initialization complete for {}", APPLICATION_NAME);
     }
 
-    protected void initializeChild() {
-        // Override if you have custom initialization intelligence
-    }
-
     @Override
     public void close() throws Exception {
         log.info("Closing provider for {}", APPLICATION_NAME);
@@ -118,192 +112,129 @@ public class A1AdapterProvider implements AutoCloseable, A1ADAPTERAPIService {
     }
 
     @Override
-    public ListenableFuture<RpcResult<DeleteA1PolicyOutput>> deleteA1Policy(DeleteA1PolicyInput input) {
-        log.info("Start of deleteA1Policy");
+    public ListenableFuture<RpcResult<DeleteA1PolicyOutput>> deleteA1Policy(DeleteA1PolicyInput deletePolicyInput) {
         final String svcOperation = "deleteA1Policy";
-        Properties parms = new Properties();
-        DeleteA1PolicyOutputBuilder deleteResponse = new DeleteA1PolicyOutputBuilder();
-        // add input to parms
-        log.info(ADDING_INPUT_DATA_MESSAGE, svcOperation, input);
-        DeleteA1PolicyInputBuilder inputBuilder = new DeleteA1PolicyInputBuilder(input);
-        MdsalHelper.toProperties(parms, inputBuilder.build());
-        logSliParameters(parms);
-        // Call SLI sync method
-        try {
-            if (a1AdapterClient.hasGraph(A1_ADAPTER_API, svcOperation, null, SYNC)) {
-                log.info(A1_ADAPTER_CLIENT_GRAPH_MESSAGE, svcOperation);
-                try {
-                    Properties responseParms = a1AdapterClient.execute(A1_ADAPTER_API, svcOperation, null, SYNC, deleteResponse, parms);
-                    logResponse(responseParms);
-                    deleteResponse.setHttpStatus(Integer.valueOf(responseParms.getProperty(RESPONSE_CODE)));
-                } catch (Exception e) {
-                    log.error(SERVICE_EXCEPTION_MESSAGE, svcOperation, e.getMessage());
-                    deleteResponse.setHttpStatus(500);
-                }
-            } else {
-                log.error(NO_SERVICE_LOGIC_ACTIVE_MESSAGE, svcOperation);
-                deleteResponse.setHttpStatus(503);
-            }
-        } catch (Exception e) {
-            log.error(LOOKUP_SERVICE_LOGIC_EXCEPTION_MESSAGE, e.getMessage());
-            deleteResponse.setHttpStatus(500);
-        }
-        RpcResult<DeleteA1PolicyOutput> rpcResult =
-                RpcResultBuilder.<DeleteA1PolicyOutput>status(true).withResult(deleteResponse.build()).build();
-        log.info("End of deleteA1Policy");
-        return Futures.immediateFuture(rpcResult);
+        log.info(START_OPERATION_MESSAGE, svcOperation);
+        DeleteA1PolicyOutputBuilder deletePolicyResponse = new DeleteA1PolicyOutputBuilder();
+        setUpAndExecuteOperation(svcOperation, new DeleteA1PolicyInputBuilder(deletePolicyInput), deletePolicyResponse);
+
+        RpcResult<DeleteA1PolicyOutput> deletePolicyResult =
+            RpcResultBuilder.<DeleteA1PolicyOutput>status(true).withResult(deletePolicyResponse.build()).build();
+        log.info(END_OPERATION_MESSAGE, svcOperation);
+        return Futures.immediateFuture(deletePolicyResult);
     }
 
     @Override
-    public ListenableFuture<RpcResult<GetA1PolicyOutput>> getA1Policy(GetA1PolicyInput input) {
-        log.info("Start of getA1Policy");
+    public ListenableFuture<RpcResult<GetA1PolicyOutput>> getA1Policy(GetA1PolicyInput getPolicyInput) {
         final String svcOperation = "getA1Policy";
-        Properties parms = new Properties();
-        GetA1PolicyOutputBuilder policyResponse = new GetA1PolicyOutputBuilder();
-        // add input to parms
-        log.info(ADDING_INPUT_DATA_MESSAGE, svcOperation, input);
-        GetA1PolicyInputBuilder inputBuilder = new GetA1PolicyInputBuilder(input);
-        MdsalHelper.toProperties(parms, inputBuilder.build());
-        logSliParameters(parms);
-        // Call SLI sync method
-        try {
-            if (a1AdapterClient.hasGraph(A1_ADAPTER_API, svcOperation, null, SYNC)) {
-                log.info(A1_ADAPTER_CLIENT_GRAPH_MESSAGE, svcOperation);
-                try {
-                    Properties responseParms = a1AdapterClient.execute(A1_ADAPTER_API, svcOperation, null, SYNC, policyResponse, parms);
-                    logResponse(responseParms);
-                    policyResponse.setBody(responseParms.getProperty(RESPONSE_BODY));
-                    policyResponse.setHttpStatus(Integer.valueOf(responseParms.getProperty(RESPONSE_CODE)));
-                } catch (Exception e) {
-                    log.error(SERVICE_EXCEPTION_MESSAGE, svcOperation, e.getMessage());
-                    policyResponse.setHttpStatus(500);
-                }
-            } else {
-                log.error(NO_SERVICE_LOGIC_ACTIVE_MESSAGE, svcOperation);
-                policyResponse.setHttpStatus(503);
-            }
-        } catch (Exception e) {
-            log.error(LOOKUP_SERVICE_LOGIC_EXCEPTION_MESSAGE, e.getMessage());
-            policyResponse.setHttpStatus(500);
-        }
-        RpcResult<GetA1PolicyOutput> rpcResult =
-                RpcResultBuilder.<GetA1PolicyOutput>status(true).withResult(policyResponse.build()).build();
-        log.info("End of getA1Policy");
-        return Futures.immediateFuture(rpcResult);
+        log.info(START_OPERATION_MESSAGE, svcOperation);
+        GetA1PolicyOutputBuilder getPolicyResponse = new GetA1PolicyOutputBuilder();
+        setUpAndExecuteOperation(svcOperation, new GetA1PolicyInputBuilder(getPolicyInput), getPolicyResponse);
+
+        RpcResult<GetA1PolicyOutput> getPolicyResult =
+            RpcResultBuilder.<GetA1PolicyOutput>status(true).withResult(getPolicyResponse.build()).build();
+        log.info(END_OPERATION_MESSAGE, svcOperation);
+        return Futures.immediateFuture(getPolicyResult);
     }
 
     @Override
-    public ListenableFuture<RpcResult<GetA1PolicyStatusOutput>> getA1PolicyStatus(GetA1PolicyStatusInput input) {
-        log.info("Start of getA1PolicyStatus");
+    public ListenableFuture<RpcResult<GetA1PolicyStatusOutput>> getA1PolicyStatus(
+        GetA1PolicyStatusInput getPolicyStatusInput) {
         final String svcOperation = "getA1PolicyStatus";
-        Properties parms = new Properties();
-        GetA1PolicyStatusOutputBuilder policyStatusResponse = new GetA1PolicyStatusOutputBuilder();
-        // add input to parms
-        log.info(ADDING_INPUT_DATA_MESSAGE, svcOperation, input);
-        GetA1PolicyStatusInputBuilder inputBuilder = new GetA1PolicyStatusInputBuilder(input);
-        MdsalHelper.toProperties(parms, inputBuilder.build());
-        logSliParameters(parms);
-        // Call SLI sync method
-        try {
-            if (a1AdapterClient.hasGraph(A1_ADAPTER_API, svcOperation, null, SYNC)) {
-                log.info(A1_ADAPTER_CLIENT_GRAPH_MESSAGE, svcOperation);
-                try {
-                    Properties responseParms = a1AdapterClient.execute(A1_ADAPTER_API, svcOperation, null, SYNC, policyStatusResponse, parms);
-                    logResponse(responseParms);
-                    policyStatusResponse.setBody(responseParms.getProperty(RESPONSE_BODY));
-                    policyStatusResponse.setHttpStatus(Integer.valueOf(responseParms.getProperty(RESPONSE_CODE)));
-                } catch (Exception e) {
-                    log.error(SERVICE_EXCEPTION_MESSAGE, svcOperation, e.getMessage());
-                    policyStatusResponse.setHttpStatus(500);
-                }
-            } else {
-                log.error(NO_SERVICE_LOGIC_ACTIVE_MESSAGE, svcOperation);
-                policyStatusResponse.setHttpStatus(503);
-            }
-        } catch (Exception e) {
-            log.error(LOOKUP_SERVICE_LOGIC_EXCEPTION_MESSAGE, e.getMessage());
-            policyStatusResponse.setHttpStatus(500);
-        }
-        RpcResult<GetA1PolicyStatusOutput> rpcResult =
-                RpcResultBuilder.<GetA1PolicyStatusOutput>status(true).withResult(policyStatusResponse.build()).build();
-        log.info("End of getA1PolicyStatus");
-        return Futures.immediateFuture(rpcResult);
+        log.info(START_OPERATION_MESSAGE, svcOperation);
+        GetA1PolicyStatusOutputBuilder getPolicyStatusResponse = new GetA1PolicyStatusOutputBuilder();
+        setUpAndExecuteOperation(svcOperation, new GetA1PolicyStatusInputBuilder(getPolicyStatusInput),
+            getPolicyStatusResponse);
+
+        RpcResult<GetA1PolicyStatusOutput> getPolicyStatusResult =
+            RpcResultBuilder.<GetA1PolicyStatusOutput>status(true).withResult(getPolicyStatusResponse.build()).build();
+        log.info(END_OPERATION_MESSAGE, svcOperation);
+        return Futures.immediateFuture(getPolicyStatusResult);
     }
 
     @Override
-    public ListenableFuture<RpcResult<GetA1PolicyTypeOutput>> getA1PolicyType(GetA1PolicyTypeInput input) {
-        log.info("Start of getA1PolicyType");
+    public ListenableFuture<RpcResult<GetA1PolicyTypeOutput>> getA1PolicyType(GetA1PolicyTypeInput getPolicyTypeInput) {
         final String svcOperation = "getA1PolicyType";
-        Properties parms = new Properties();
-        GetA1PolicyTypeOutputBuilder policyTypeResponse = new GetA1PolicyTypeOutputBuilder();
-        // add input to parms
-        log.info(ADDING_INPUT_DATA_MESSAGE, svcOperation, input);
-        GetA1PolicyTypeInputBuilder inputBuilder = new GetA1PolicyTypeInputBuilder(input);
-        MdsalHelper.toProperties(parms, inputBuilder.build());
-        logSliParameters(parms);
-        // Call SLI sync method
+        log.info(START_OPERATION_MESSAGE, svcOperation);
+        GetA1PolicyTypeOutputBuilder getPolicyTypeResponse = new GetA1PolicyTypeOutputBuilder();
+        setUpAndExecuteOperation(svcOperation, new GetA1PolicyTypeInputBuilder(getPolicyTypeInput),
+            getPolicyTypeResponse);
+
+        RpcResult<GetA1PolicyTypeOutput> getPolicyTypeResult =
+            RpcResultBuilder.<GetA1PolicyTypeOutput>status(true).withResult(getPolicyTypeResponse.build()).build();
+        log.info(END_OPERATION_MESSAGE, svcOperation);
+        return Futures.immediateFuture(getPolicyTypeResult);
+    }
+
+    @Override
+    public ListenableFuture<RpcResult<PutA1PolicyOutput>> putA1Policy(PutA1PolicyInput putPolicyInput) {
+        final String svcOperation = "putA1Policy";
+        log.info(START_OPERATION_MESSAGE, svcOperation);
+        PutA1PolicyOutputBuilder putPolicyResponse = new PutA1PolicyOutputBuilder();
+        setUpAndExecuteOperation(svcOperation, new PutA1PolicyInputBuilder(putPolicyInput), putPolicyResponse);
+
+        RpcResult<PutA1PolicyOutput> putPolicyResult =
+            RpcResultBuilder.<PutA1PolicyOutput>status(true).withResult(putPolicyResponse.build()).build();
+        log.info(END_OPERATION_MESSAGE, svcOperation);
+        return Futures.immediateFuture(putPolicyResult);
+    }
+
+    private <T> boolean hasGraph(final String svcOperation, Builder<T> response) {
         try {
-            if (a1AdapterClient.hasGraph(A1_ADAPTER_API, svcOperation, null, SYNC)) {
-                log.info(A1_ADAPTER_CLIENT_GRAPH_MESSAGE, svcOperation);
-                try {
-                    Properties responseParms = a1AdapterClient.execute(A1_ADAPTER_API, svcOperation, null, SYNC, policyTypeResponse, parms);
-                    logResponse(responseParms);
-                    policyTypeResponse.setBody(responseParms.getProperty(RESPONSE_BODY));
-                    policyTypeResponse.setHttpStatus(Integer.valueOf(responseParms.getProperty(RESPONSE_CODE)));
-                } catch (Exception e) {
-                    log.error(SERVICE_EXCEPTION_MESSAGE, svcOperation, e.getMessage());
-                    policyTypeResponse.setHttpStatus(500);
-                }
-            } else {
-                log.error(NO_SERVICE_LOGIC_ACTIVE_MESSAGE, svcOperation);
-                policyTypeResponse.setHttpStatus(503);
-            }
+            return a1AdapterClient.hasGraph(A1_ADAPTER_API, svcOperation, null, SYNC);
         } catch (Exception e) {
-            log.error(LOOKUP_SERVICE_LOGIC_EXCEPTION_MESSAGE, e.getMessage());
-            policyTypeResponse.setHttpStatus(500);
+            log.error("Caught exception looking for service logic, {}", e.getMessage());
+            setHttpResponse(response, SC_INTERNAL_SERVER_ERROR);
         }
-        RpcResult<GetA1PolicyTypeOutput> rpcResult =
-                RpcResultBuilder.<GetA1PolicyTypeOutput>status(true).withResult(policyTypeResponse.build()).build();
-        log.info("End of getA1PolicyType");
-        return Futures.immediateFuture(rpcResult);
+        return false;
     }
 
-    @Override
-    public ListenableFuture<RpcResult<PutA1PolicyOutput>> putA1Policy(PutA1PolicyInput input) {
-        log.info("Start of putA1Policy");
-        final String svcOperation = "putA1Policy";
-        Properties parms = new Properties();
-        PutA1PolicyOutputBuilder policyResponse = new PutA1PolicyOutputBuilder();
+    private <U, T> void setUpAndExecuteOperation(final String svcOperation, Builder<U> inputBuilder,
+        Builder<T> responseBuilder) {
+        log.info("Adding INPUT data for {} input: {}", svcOperation, inputBuilder);
         // add input to parms
-        log.info(ADDING_INPUT_DATA_MESSAGE, svcOperation, input);
-        PutA1PolicyInputBuilder inputBuilder = new PutA1PolicyInputBuilder(input);
+        Properties parms = new Properties();
         MdsalHelper.toProperties(parms, inputBuilder.build());
         logSliParameters(parms);
         // Call SLI sync method
+        if (hasGraph(svcOperation, responseBuilder)) {
+            log.info("A1AdapterClient has a Directed Graph for '{}'", svcOperation);
+            executeOperation(svcOperation, parms, responseBuilder);
+        } else {
+            log.error("No service logic active for A1Adapter: '{}'", svcOperation);
+            setHttpResponse(responseBuilder, Integer.valueOf(SC_SERVICE_UNAVAILABLE));
+        }
+    }
+
+    private <T> void executeOperation(final String svcOperation, Properties parms, Builder<T> response) {
         try {
-            if (a1AdapterClient.hasGraph(A1_ADAPTER_API, svcOperation, null, SYNC)) {
-                log.info(A1_ADAPTER_CLIENT_GRAPH_MESSAGE, svcOperation);
-                try {
-                    Properties responseParms = a1AdapterClient.execute(A1_ADAPTER_API, svcOperation, null, SYNC, policyResponse, parms);
-                    logResponse(responseParms);
-                    policyResponse.setBody(responseParms.getProperty(RESPONSE_BODY));
-                    policyResponse.setHttpStatus(Integer.valueOf(responseParms.getProperty(RESPONSE_CODE)));
-                } catch (Exception e) {
-                    log.error(SERVICE_EXCEPTION_MESSAGE, svcOperation, e.getMessage());
-                    policyResponse.setHttpStatus(500);
-                }
-            } else {
-                log.error(NO_SERVICE_LOGIC_ACTIVE_MESSAGE, svcOperation);
-                policyResponse.setHttpStatus(503);
-            }
+            Properties responseParms =
+                a1AdapterClient.execute(A1_ADAPTER_API, svcOperation, null, SYNC, response, parms);
+            logResponse(responseParms);
+            setBody(response, responseParms.getProperty(RESPONSE_BODY));
+            setHttpResponse(response, Integer.valueOf(responseParms.getProperty(RESPONSE_CODE)));
         } catch (Exception e) {
-            log.error(LOOKUP_SERVICE_LOGIC_EXCEPTION_MESSAGE, e.getMessage());
-            policyResponse.setHttpStatus(500);
+            log.error("Caught exception executing service logic for {}, {}", svcOperation, e.getMessage());
+            setHttpResponse(response, Integer.valueOf(SC_INTERNAL_SERVER_ERROR));
+        }
+    }
+
+    private <T> void setBody(Builder<T> responseBuilder, String body) {
+        try {
+            Method method = responseBuilder.getClass().getMethod("setBody", String.class);
+            method.invoke(responseBuilder, body);
+        } catch (Exception reflectionException) {
+            throw new MissingResponseMethodRuntimeException(reflectionException);
+        }
+    }
+
+    private <T> void setHttpResponse(Builder<T> responseBuilder, Integer response) {
+        try {
+            Method method = responseBuilder.getClass().getMethod("setHttpStatus", Integer.class);
+            method.invoke(responseBuilder, response);
+        } catch (Exception reflectionException) {
+            throw new MissingResponseMethodRuntimeException(reflectionException);
         }
-        RpcResult<PutA1PolicyOutput> rpcResult =
-                RpcResultBuilder.<PutA1PolicyOutput>status(true).withResult(policyResponse.build()).build();
-        log.info("End of putA1Policy");
-        return Futures.immediateFuture(rpcResult);
     }
 
     private void logSliParameters(Properties parms) {
@@ -320,4 +251,12 @@ public class A1AdapterProvider implements AutoCloseable, A1ADAPTERAPIService {
         log.info("responseCode::{}", responseParms.getProperty(RESPONSE_CODE));
         log.info("responseMessage::{}", responseParms.getProperty("response-message"));
     }
+
+    public class MissingResponseMethodRuntimeException extends RuntimeException {
+        private static final long serialVersionUID = -6803869291161765099L;
+
+        MissingResponseMethodRuntimeException(Exception e) {
+            super(e);
+        }
+    }
 }
index 5c4b285..50f44f0 100644 (file)
 
 package org.onap.ccsdk.features.a1.adapter;
 
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
+
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyOutputBuilder;
@@ -41,13 +42,8 @@ import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOut
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * This class Tests all the methods in A1AdapterClientTest
- *
- */
-
-@RunWith(MockitoJUnitRunner.Silent.class)
-public class A1AdapterClientTest {
+@ExtendWith(MockitoExtension.class)
+class A1AdapterClientTest {
 
     protected static final Logger LOG = LoggerFactory.getLogger(A1AdapterClientTest.class);
 
@@ -57,13 +53,13 @@ public class A1AdapterClientTest {
     private static String module = "A1-ADAPTER-API";
     private static String mode = "sync";
 
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() {
         a1AdapterClient = new A1AdapterClient(svcLogicService);
     }
 
     @Test
-    public void test_execute_getPolicyType() throws SvcLogicException, InterruptedException, ExecutionException {
+    void getPolicyType() throws Exception {
         String rpc = "deleteA1Policy";
         Properties params = new Properties();
         Properties respProps = new Properties();
@@ -75,7 +71,7 @@ public class A1AdapterClientTest {
     }
 
     @Test
-    public void test_execute_getPolicyStatus() throws SvcLogicException, InterruptedException, ExecutionException {
+    void getPolicyStatus() throws Exception {
         String rpc = "getA1PolicyStatus";
         Properties params = new Properties();
         Properties respProps = new Properties();
@@ -87,7 +83,7 @@ public class A1AdapterClientTest {
     }
 
     @Test
-    public void test_execute_getPolicy() throws SvcLogicException, InterruptedException, ExecutionException {
+    void getPolicy() throws Exception {
         String rpc = "getA1Policy";
         Properties params = new Properties();
         Properties respProps = new Properties();
@@ -99,7 +95,7 @@ public class A1AdapterClientTest {
     }
 
     @Test
-    public void test_execute_deletePolicy() throws SvcLogicException, InterruptedException, ExecutionException {
+    void deletePolicy() throws Exception {
         String rpc = "deleteA1Policy";
         Properties params = new Properties();
         Properties respProps = new Properties();
@@ -111,7 +107,7 @@ public class A1AdapterClientTest {
     }
 
     @Test
-    public void test_execute_putPolicy() throws SvcLogicException, InterruptedException, ExecutionException {
+    void putPolicy() throws Exception {
         String rpc = "putA1Policy";
         Properties params = new Properties();
         Properties respProps = new Properties();
index a6588ea..96bad81 100644 (file)
 
 package org.onap.ccsdk.features.a1.adapter;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
+
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Properties;
-import java.util.concurrent.ExecutionException;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.junit.MockitoJUnitRunner;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.mockito.junit.jupiter.MockitoExtension;
 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyInputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyOutput;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyOutputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyInputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyOutput;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyOutputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusInputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusOutput;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusOutputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeInputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeOutput;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeOutputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyInputBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutput;
-import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutputBuilder;
+import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * This class Tests all the methods in A1AdapterProvider
- *
- */
+@ExtendWith(MockitoExtension.class)
+class A1AdapterProviderTest {
 
-@RunWith(MockitoJUnitRunner.Silent.class)
-public class A1AdapterProviderTest {
+    private static final String RESPONSE_CODE = "response-code";
+    private static final String OK_RESPONSE = "200";
 
     protected static final Logger LOG = LoggerFactory.getLogger(A1AdapterProviderTest.class);
 
-    class A1AdapterProviderMock extends A1AdapterProvider {
-
-        A1AdapterProviderMock(final DataBroker dataBroker, final NotificationPublishService notificationPublishService,
-                final RpcProviderRegistry rpcProviderRegistry, final A1AdapterClient A1AdapterClient) {
-            super(dataBroker, mockNotificationPublishService, mockRpcProviderRegistry, a1AdapterClient);
-        }
-
-    }
-
-    private A1AdapterProviderMock a1AdapterProviderMock = null;
-    @Mock
-    private DataBroker dataBroker;
+    private A1AdapterProvider a1AdapterProviderMock = null;
     @Mock
     private NotificationPublishService mockNotificationPublishService;
     @Mock
@@ -87,80 +68,82 @@ public class A1AdapterProviderTest {
     private static String module = "A1-ADAPTER-API";
     private static String mode = "sync";
 
-    @Before
-    public void setUp() throws Exception {
-
-        a1AdapterProviderMock = new A1AdapterProviderMock(dataBroker, mockNotificationPublishService,
-                mockRpcProviderRegistry, a1AdapterClient);
-        a1AdapterProviderMock = Mockito.spy(a1AdapterProviderMock);
-
+    @BeforeEach
+    void setUp() {
+        a1AdapterProviderMock = Mockito.spy(new A1AdapterProvider(mockNotificationPublishService,
+            mockRpcProviderRegistry, a1AdapterClient));
     }
 
     @Test
-    public void test_deleteA1PolicyType() throws SvcLogicException, InterruptedException, ExecutionException {
+    void deleteA1PolicyType() throws Exception {
         String rpc = "deleteA1Policy";
         Properties respProps = new Properties();
-        respProps.setProperty("response-code", "200");
+        respProps.setProperty(RESPONSE_CODE, OK_RESPONSE);
         DeleteA1PolicyInputBuilder inputBuilder = new DeleteA1PolicyInputBuilder();
         when(a1AdapterClient.hasGraph(module, rpc, null, mode)).thenReturn(true);
-        when(a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(DeleteA1PolicyOutputBuilder.class),
-                any(Properties.class))).thenReturn(respProps);
+        when(
+            a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(Builder.class), any(Properties.class)))
+                .thenReturn(respProps);
         ListenableFuture<RpcResult<DeleteA1PolicyOutput>> result =
-                a1AdapterProviderMock.deleteA1Policy(inputBuilder.build());
-        assertEquals("200", String.valueOf(result.get().getResult().getHttpStatus()));
+            a1AdapterProviderMock.deleteA1Policy(inputBuilder.build());
+        assertEquals(OK_RESPONSE, String.valueOf(result.get().getResult().getHttpStatus()));
     }
 
     @Test
-    public void test_getA1Policy() throws SvcLogicException, InterruptedException, ExecutionException {
+    void getA1Policy() throws Exception {
         String rpc = "getA1Policy";
         Properties respProps = new Properties();
-        respProps.setProperty("response-code", "200");
+        respProps.setProperty(RESPONSE_CODE, OK_RESPONSE);
         GetA1PolicyInputBuilder inputBuilder = new GetA1PolicyInputBuilder();
         when(a1AdapterClient.hasGraph(module, rpc, null, mode)).thenReturn(true);
-        when(a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(GetA1PolicyOutputBuilder.class),
-                any(Properties.class))).thenReturn(respProps);
+        when(
+            a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(Builder.class), any(Properties.class)))
+                .thenReturn(respProps);
         ListenableFuture<RpcResult<GetA1PolicyOutput>> result = a1AdapterProviderMock.getA1Policy(inputBuilder.build());
-        assertEquals("200", String.valueOf(result.get().getResult().getHttpStatus()));
+        assertEquals(OK_RESPONSE, String.valueOf(result.get().getResult().getHttpStatus()));
     }
 
     @Test
-    public void test_getA1PolicyType() throws SvcLogicException, InterruptedException, ExecutionException {
+    void getA1PolicyType() throws Exception {
         String rpc = "getA1PolicyType";
         Properties respProps = new Properties();
-        respProps.setProperty("response-code", "200");
+        respProps.setProperty(RESPONSE_CODE, OK_RESPONSE);
         GetA1PolicyTypeInputBuilder inputBuilder = new GetA1PolicyTypeInputBuilder();
         when(a1AdapterClient.hasGraph(module, rpc, null, mode)).thenReturn(true);
-        when(a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(GetA1PolicyTypeOutputBuilder.class),
-                any(Properties.class))).thenReturn(respProps);
+        when(
+            a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(Builder.class), any(Properties.class)))
+                .thenReturn(respProps);
         ListenableFuture<RpcResult<GetA1PolicyTypeOutput>> result =
-                a1AdapterProviderMock.getA1PolicyType(inputBuilder.build());
-        assertEquals("200", String.valueOf(result.get().getResult().getHttpStatus()));
+            a1AdapterProviderMock.getA1PolicyType(inputBuilder.build());
+        assertEquals(OK_RESPONSE, String.valueOf(result.get().getResult().getHttpStatus()));
     }
 
     @Test
-    public void test_getA1PolicyStatus() throws SvcLogicException, InterruptedException, ExecutionException {
+    void getA1PolicyStatus() throws Exception {
         String rpc = "getA1PolicyStatus";
         Properties respProps = new Properties();
-        respProps.setProperty("response-code", "200");
+        respProps.setProperty(RESPONSE_CODE, OK_RESPONSE);
         GetA1PolicyStatusInputBuilder inputBuilder = new GetA1PolicyStatusInputBuilder();
         when(a1AdapterClient.hasGraph(module, rpc, null, mode)).thenReturn(true);
-        when(a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(GetA1PolicyStatusOutputBuilder.class),
-                any(Properties.class))).thenReturn(respProps);
+        when(
+            a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(Builder.class), any(Properties.class)))
+                .thenReturn(respProps);
         ListenableFuture<RpcResult<GetA1PolicyStatusOutput>> result =
-                a1AdapterProviderMock.getA1PolicyStatus(inputBuilder.build());
-        assertEquals("200", String.valueOf(result.get().getResult().getHttpStatus()));
+            a1AdapterProviderMock.getA1PolicyStatus(inputBuilder.build());
+        assertEquals(OK_RESPONSE, String.valueOf(result.get().getResult().getHttpStatus()));
     }
 
     @Test
-    public void test_putA1Policy() throws SvcLogicException, InterruptedException, ExecutionException {
+    void putA1Policy() throws Exception {
         String rpc = "putA1Policy";
         Properties respProps = new Properties();
-        respProps.setProperty("response-code", "200");
+        respProps.setProperty(RESPONSE_CODE, OK_RESPONSE);
         PutA1PolicyInputBuilder inputBuilder = new PutA1PolicyInputBuilder();
         when(a1AdapterClient.hasGraph(module, rpc, null, mode)).thenReturn(true);
-        when(a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(PutA1PolicyOutputBuilder.class),
-                any(Properties.class))).thenReturn(respProps);
+        when(
+            a1AdapterClient.execute(eq(module), eq(rpc), eq(null), eq(mode), any(Builder.class), any(Properties.class)))
+                .thenReturn(respProps);
         ListenableFuture<RpcResult<PutA1PolicyOutput>> result = a1AdapterProviderMock.putA1Policy(inputBuilder.build());
-        assertEquals("200", String.valueOf(result.get().getResult().getHttpStatus()));
+        assertEquals(OK_RESPONSE, String.valueOf(result.get().getResult().getHttpStatus()));
     }
 }
index 89058a1..61c03ba 100644 (file)
@@ -99,8 +99,8 @@ public class SwaggerConfig extends WebMvcConfigurationSupport {
                 .build();
     }
 
-    @SuppressWarnings("rawtypes") // VendorExtension is a raw type. References to generic type VendorExtension<T>
-                                  // should be parameterizedJava(16777788)
+    @SuppressWarnings("java:S3740") // VendorExtension is a raw type. References to generic type VendorExtension<T>
+                                    // should be parameterizedJava(16777788)
     private static List<VendorExtension> vendorExtentions() {
         final String URN = "60f9a0e7-343f-43bf-9194-d8d65688d465";
         List<VendorExtension> extentions = new ArrayList<>();
index 8d3ecf6..6c9012b 100644 (file)
@@ -66,7 +66,7 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti
 import reactor.core.publisher.Mono;
 
 @RestController("PolicyControllerV2")
-@Api(tags = {Consts.V2_API_NAME}, description = "Policy management")
+@Api(tags = {Consts.V2_API_NAME})
 public class PolicyController {
 
     public static class RejectionException extends Exception {