Enforce SpotBugs in Service handler 14/89614/19
authorguillaume.lambert <guillaume.lambert@orange.com>
Wed, 6 May 2020 10:41:13 +0000 (12:41 +0200)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Sun, 31 May 2020 17:54:52 +0000 (17:54 +0000)
and fix ServiceHandler SLF4J SpotBugs issues.
By the way:
- rename ServiceHandlerCompliancyCheck class for coherence
- clean ModelMappingUtils.java and ServicehandlerImpl.java
- review how messages and logs are handled
- improve Junit tests

JIRA: TRNSPRTPCE-214 TRNSPRTPCE-246 TRNSPRTPCE-265
Signed-off-by: guillaume.lambert <guillaume.lambert@orange.com>
Change-Id: I82e1ac784bb66acbdcf62004da6da6eb3701434b

13 files changed:
servicehandler/pom.xml
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/service/ServiceDataStoreOperationsImpl.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/ServiceCreateValidation.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ComplianceCheckResult.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerComplianceCheck.java [new file with mode: 0644]
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerCompliancyCheck.java [deleted file]
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerTxRxCheck.java
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImplTest.java
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/service/ServiceDataStoreOperationsImplTest.java
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerComplianceCheckTest.java [moved from servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerCompliancyCheckTest.java with 64% similarity]
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerTxRxCheckTest.java

index 48b87e639779bae8686091f6be0577ed349e64b4..2a0fdec2b48b556b7681ec3799c84bfbd029a3a7 100644 (file)
@@ -45,10 +45,4 @@ Author: Martial Coulibaly <martial.coulibaly@gfi.com> on behalf of Orange
     </dependency>
   </dependencies>
 
-<!-- checkstyle and spotbugds enforced by odlparent since Magnesium -->
-  <properties>
-    <!-- odlparent.checkstyle.enforce>false</odlparent.checkstyle.enforce -->
-    <odlparent.spotbugs.enforce>false</odlparent.spotbugs.enforce>
-  </properties>
-
 </project>
index 8561321a75e4ab6cbe285a34c4a9ecfd97dba7f6..46d1ccacd57b4d8fdd267ed4d7d41ff0f2981f74 100644 (file)
@@ -63,14 +63,61 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 
 public final class ModelMappingUtils {
 
+    private static final Logger LOG = LoggerFactory.getLogger(ModelMappingUtils.class);
+
     private ModelMappingUtils() {
     }
 
     public static ServiceImplementationRequestInput createServiceImplementationRequest(ServiceInput input,
             PathDescription pathDescription) {
+
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .service.implementation.request.input.ServiceAEndBuilder serviceAEnd =
+            new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .service.implementation.request.input.ServiceAEndBuilder()
+                    .setServiceFormat(input.getServiceAEnd().getServiceFormat())
+                    .setServiceRate(input.getServiceAEnd().getServiceRate())
+                    .setClli(input.getServiceAEnd().getClli())
+                    .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue())
+                    .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+                        .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
+                            .setPort(input.getServiceAEnd().getTxDirection().getPort())
+                            .build())
+                    .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+                        .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
+                            .setPort(input.getServiceAEnd().getRxDirection().getPort())
+                            .build());
+
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .service.implementation.request.input.ServiceZEndBuilder serviceZEnd =
+            new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .service.implementation.request.input.ServiceZEndBuilder()
+                    .setServiceFormat(input.getServiceZEnd().getServiceFormat())
+                    .setServiceRate(input.getServiceZEnd().getServiceRate())
+                    .setClli(input.getServiceZEnd().getClli())
+                    .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
+                    .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+                        .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
+                            .setPort(input.getServiceZEnd().getTxDirection().getPort())
+                            .build())
+                    .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+                        .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
+                            .setPort(input.getServiceZEnd().getRxDirection().getPort())
+                        .build());
+
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .service.implementation.request.input.PathDescriptionBuilder pathDescBuilder =
+            new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .service.implementation.request.input.PathDescriptionBuilder()
+                    .setAToZDirection(pathDescription.getAToZDirection())
+                    .setZToADirection(pathDescription.getZToADirection());
+
         ServiceImplementationRequestInputBuilder serviceImplementationRequestInputBuilder =
                 new ServiceImplementationRequestInputBuilder();
         if (input.isServiceReconfigure()) {
@@ -78,182 +125,171 @@ public final class ModelMappingUtils {
         } else {
             serviceImplementationRequestInputBuilder.setServiceName(input.getServiceName());
         }
-        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation
-            .request.input.ServiceAEndBuilder serviceAEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight
-                .transportpce.renderer.rev171017.service.implementation.request.input.ServiceAEndBuilder();
-        serviceAEnd.setServiceFormat(input.getServiceAEnd().getServiceFormat())
-            .setServiceRate(input.getServiceAEnd().getServiceRate()).setClli(input.getServiceAEnd().getClli())
-            .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue())
-            .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
-                .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
-                .setPort(input.getServiceAEnd().getTxDirection().getPort()).build())
-            .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
-                .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
-                .setPort(input.getServiceAEnd().getRxDirection().getPort()).build());
-        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation
-            .request.input.ServiceZEndBuilder serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight
-                .transportpce.renderer.rev171017.service.implementation.request.input.ServiceZEndBuilder();
-        serviceZEnd.setServiceFormat(input.getServiceZEnd().getServiceFormat())
-            .setServiceRate(input.getServiceZEnd().getServiceRate()).setClli(input.getServiceZEnd().getClli())
-            .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
-            .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
-                .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
-                .setPort(input.getServiceZEnd().getTxDirection().getPort()).build())
-            .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
-                .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
-                .setPort(input.getServiceZEnd().getRxDirection().getPort()).build());
-        serviceImplementationRequestInputBuilder
-            .setServiceAEnd(serviceAEnd.build())
-            .setServiceZEnd(serviceZEnd.build())
-            .setServiceHandlerHeader(
-                new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build());
-        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation
-            .request.input.PathDescriptionBuilder pathDescBuilder = new org.opendaylight.yang.gen.v1.http.org
-                .opendaylight.transportpce.renderer.rev171017.service.implementation.request.input
-                    .PathDescriptionBuilder();
-        pathDescBuilder
-            .setAToZDirection(pathDescription.getAToZDirection())
-            .setZToADirection(pathDescription.getZToADirection());
-        serviceImplementationRequestInputBuilder.setPathDescription(pathDescBuilder.build());
-        return serviceImplementationRequestInputBuilder.build();
+
+        return serviceImplementationRequestInputBuilder
+                .setServiceAEnd(serviceAEnd.build())
+                .setServiceZEnd(serviceZEnd.build())
+                .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+                    .setRequestId(input.getSdncRequestHeader().getRequestId())
+                    .build())
+                .setPathDescription(pathDescBuilder.build())
+                .build();
     }
 
     public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-        .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
-        ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
-            .setServiceName(serviceInput.getServiceName())
-            .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
-                .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build());
-        return builder.build();
+            .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
+        return new ServiceDeleteInputBuilder()
+                .setServiceName(serviceInput.getServiceName())
+                .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+                    .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
+                    .build())
+                .build();
     }
 
     public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-        .ServiceDeleteInput createServiceDeleteInput(ServiceRerouteInput serviceRerouteinput, Services services) {
-        ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
-            .setServiceName(serviceRerouteinput.getServiceName())
-            .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId(
-                services.getSdncRequestHeader().getRequestId()).build());
-        return builder.build();
+            .ServiceDeleteInput createServiceDeleteInput(ServiceRerouteInput serviceRerouteinput, Services services) {
+        return new ServiceDeleteInputBuilder()
+                .setServiceName(serviceRerouteinput.getServiceName())
+                .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+                    .setRequestId(services.getSdncRequestHeader().getRequestId())
+                    .build())
+                .build();
     }
 
     public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-        .ServiceDeleteInput createServiceDeleteInput(ServiceRestorationInput serviceRestorationInput,
+            .ServiceDeleteInput createServiceDeleteInput(ServiceRestorationInput serviceRestorationInput,
                 Services services) {
-        ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
-            .setServiceName(serviceRestorationInput.getServiceName())
-            .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId(
-                services.getSdncRequestHeader().getRequestId()).build());
-        return builder.build();
+        return new ServiceDeleteInputBuilder()
+                .setServiceName(serviceRestorationInput.getServiceName())
+                .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+                    .setRequestId(services.getSdncRequestHeader().getRequestId())
+                    .build())
+                .build();
     }
 
     public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteInput
             createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) {
-        String serviceName = serviceReconfigureInput.getServiceName();
-        ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
-            .setServiceName(serviceReconfigureInput.getServiceName())
-            .setServiceHandlerHeader(
-                new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build());
-        return builder.build();
+        return new ServiceDeleteInputBuilder()
+                .setServiceName(serviceReconfigureInput.getServiceName())
+                .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+                    .setRequestId(serviceReconfigureInput.getServiceName() + "-reconfigure")
+                    .build())
+                .build();
     }
 
-    public static ServiceAEnd createServiceAEnd(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
-            .rev190531.ServiceEndpoint serviceAEnd) {
-        ServiceAEndBuilder serviceAEndBuilder = new ServiceAEndBuilder()
-            .setClli(serviceAEnd.getClli())
-            .setNodeId(serviceAEnd.getNodeId().getValue())
-            .setRxDirection(createRxDirection(serviceAEnd.getRxDirection()))
-            .setServiceFormat(serviceAEnd.getServiceFormat())
-            .setServiceRate(serviceAEnd.getServiceRate())
-            .setTxDirection(createTxDirection(serviceAEnd.getTxDirection()));
-        return serviceAEndBuilder.build();
+    public static ServiceAEnd createServiceAEnd(org.opendaylight.yang.gen.v1.http
+            .org.openroadm.common.service.types.rev190531.ServiceEndpoint serviceAEnd) {
+        return new ServiceAEndBuilder()
+                .setClli(serviceAEnd.getClli())
+                .setNodeId(serviceAEnd.getNodeId().getValue())
+                .setRxDirection(createRxDirection(serviceAEnd.getRxDirection()))
+                .setServiceFormat(serviceAEnd.getServiceFormat())
+                .setServiceRate(serviceAEnd.getServiceRate())
+                .setTxDirection(createTxDirection(serviceAEnd.getTxDirection()))
+                .build();
     }
 
-    public static ServiceZEnd createServiceZEnd(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
-            .rev190531.ServiceEndpoint serviceZEnd) {
-        ServiceZEndBuilder serviceZEndBuilder = new ServiceZEndBuilder()
-            .setClli(serviceZEnd.getClli())
-            .setNodeId(serviceZEnd.getNodeId().getValue())
-            .setRxDirection(createRxDirection(serviceZEnd.getRxDirection()))
-            .setServiceFormat(serviceZEnd.getServiceFormat())
-            .setServiceRate(serviceZEnd.getServiceRate())
-            .setTxDirection(createTxDirection(serviceZEnd.getTxDirection()));
-        return serviceZEndBuilder.build();
+    public static ServiceZEnd createServiceZEnd(org.opendaylight.yang.gen.v1.http
+            .org.openroadm.common.service.types.rev190531.ServiceEndpoint serviceZEnd) {
+        return new ServiceZEndBuilder()
+                .setClli(serviceZEnd.getClli())
+                .setNodeId(serviceZEnd.getNodeId().getValue())
+                .setRxDirection(createRxDirection(serviceZEnd.getRxDirection()))
+                .setServiceFormat(serviceZEnd.getServiceFormat())
+                .setServiceRate(serviceZEnd.getServiceRate())
+                .setTxDirection(createTxDirection(serviceZEnd.getTxDirection()))
+                .build();
     }
 
     public static RxDirection createRxDirection(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
             .rev190531.service.endpoint.RxDirection rxDirection) {
-        RxDirectionBuilder rxDirectionBuilder = new RxDirectionBuilder().setPort(rxDirection.getPort());
-        return rxDirectionBuilder.build();
+        return new RxDirectionBuilder()
+                .setPort(rxDirection.getPort())
+                .build();
     }
 
     public static TxDirection createTxDirection(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service
             .types.rev190531.service.endpoint.TxDirection txDirection) {
-        TxDirectionBuilder txDirectionBuilder = new TxDirectionBuilder().setPort(txDirection.getPort());
-        return txDirectionBuilder.build();
+        return new TxDirectionBuilder()
+                .setPort(txDirection.getPort())
+                .build();
     }
 
     public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(ServiceDeleteInput input,
             String finalAck, String message, String responseCode) {
+        LOG.debug("createDeleteServiceReply : {}", message);
         ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
+                .setAckFinalIndicator(finalAck)
+                .setResponseMessage(message)
+                .setResponseCode(responseCode);
         if (input.getSdncRequestHeader() != null) {
             builder.setRequestId(input.getSdncRequestHeader().getRequestId());
         } else {
             builder.setRequestId(null);
         }
         ConfigurationResponseCommon configurationResponseCommon = builder.build();
-        ServiceDeleteOutput output =
-                new ServiceDeleteOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon).build();
+        ServiceDeleteOutput output = new ServiceDeleteOutputBuilder()
+                .setConfigurationResponseCommon(configurationResponseCommon)
+                .build();
         return RpcResultBuilder.success(output).buildFuture();
     }
 
     public static ListenableFuture<RpcResult<TempServiceDeleteOutput>> createDeleteServiceReply(
             TempServiceDeleteInput input, String finalAck, String message, String responseCode) {
-        ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder()
+        LOG.debug("createDeleteServiceReply : {}", message);
+        ConfigurationResponseCommonBuilder configurationResponseCommon =
+            new ConfigurationResponseCommonBuilder()
                 .setAckFinalIndicator(finalAck)
                 .setResponseMessage(message)
                 .setResponseCode(responseCode)
                 .setRequestId(null);
-        ConfigurationResponseCommon configurationResponseCommon = builder.build();
         TempServiceDeleteOutput output = new TempServiceDeleteOutputBuilder()
-                .setConfigurationResponseCommon(configurationResponseCommon).build();
+                .setConfigurationResponseCommon(configurationResponseCommon.build())
+                .build();
         return RpcResultBuilder.success(output).buildFuture();
     }
 
     public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(ServiceCreateInput input,
             String finalAck, String message, String responseCode) {
+        LOG.debug("createCreateServiceReply : {}", message);
         ResponseParametersBuilder responseParameters = new ResponseParametersBuilder();
         ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
+                .setAckFinalIndicator(finalAck)
+                .setResponseMessage(message)
+                .setResponseCode(responseCode);
         if (input.getSdncRequestHeader() != null) {
             configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId());
         } else {
             configurationResponseCommon.setRequestId(null);
         }
-        ServiceCreateOutputBuilder output =
-                new ServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build())
-                        .setResponseParameters(responseParameters.build());
+        ServiceCreateOutputBuilder output = new ServiceCreateOutputBuilder()
+                .setConfigurationResponseCommon(configurationResponseCommon.build())
+                .setResponseParameters(responseParameters.build());
         return RpcResultBuilder.success(output.build()).buildFuture();
     }
 
     public static ListenableFuture<RpcResult<TempServiceCreateOutput>> createCreateServiceReply(
             TempServiceCreateInput input, String finalAck, String message, String responseCode) {
-        ResponseParametersBuilder responseParameters = new ResponseParametersBuilder();
-        ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
+        LOG.debug("createCreateServiceReply : {}", message);
+        ConfigurationResponseCommonBuilder configurationResponseCommon =
+            new ConfigurationResponseCommonBuilder()
+                .setAckFinalIndicator(finalAck)
+                .setResponseMessage(message)
+                .setResponseCode(responseCode);
         if (input.getSdncRequestHeader() != null) {
             configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId());
         } else {
             configurationResponseCommon.setRequestId(null);
         }
-        TempServiceCreateOutputBuilder output =
-                new TempServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build())
-                        .setResponseParameters(responseParameters.build());
+        TempServiceCreateOutputBuilder output = new TempServiceCreateOutputBuilder()
+                .setConfigurationResponseCommon(configurationResponseCommon.build())
+                .setResponseParameters(new ResponseParametersBuilder().build());
         return RpcResultBuilder.success(output.build()).buildFuture();
     }
 
     public static ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> createCreateServiceReply(
             ServiceFeasibilityCheckInput input, String finalAck, String message, String responseCode) {
+        LOG.debug("createCreateServiceReply : {}", message);
         ResponseParametersBuilder responseParameters = new ResponseParametersBuilder();
         ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
                 .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
@@ -270,6 +306,7 @@ public final class ModelMappingUtils {
 
     public static ListenableFuture<RpcResult<ServiceReconfigureOutput>> createCreateServiceReply(
             ServiceReconfigureInput input, String message, RpcStatus rpcStatus) {
+        LOG.debug("createCreateServiceReply : {}", message);
         ServiceReconfigureOutputBuilder output = new ServiceReconfigureOutputBuilder()
                 .setStatus(rpcStatus)
                 .setStatusMessage(message);
@@ -278,6 +315,7 @@ public final class ModelMappingUtils {
 
     public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(ServiceRerouteInput input,
             String finalAckYes, String message, RpcStatus status) {
+        LOG.debug("createRerouteServiceReply : {}", message);
         ServiceRerouteOutputBuilder output = new ServiceRerouteOutputBuilder()
                 .setHardConstraints(null)
                 .setSoftConstraints(null)
@@ -288,6 +326,7 @@ public final class ModelMappingUtils {
 
     public static ListenableFuture<RpcResult<ServiceRestorationOutput>> createRestoreServiceReply(String message,
             RpcStatus status) {
+        LOG.debug("createRestoreServiceReply : {}", message);
         ServiceRestorationOutputBuilder output = new ServiceRestorationOutputBuilder()
                 .setStatus(status)
                 .setStatusMessage(message);
@@ -355,61 +394,79 @@ public final class ModelMappingUtils {
     }
 
     public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) {
-        ServicePathsBuilder servicePathBuilder = new ServicePathsBuilder();
-        if (serviceInput != null) {
-            org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+        if (serviceInput == null) {
+            return new ServicePathsBuilder().build();
+        }
+
+        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
                 .service.path.ServiceAEndBuilder serviceAEnd =
-                new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
-                    .service.path.ServiceAEndBuilder();
-            serviceAEnd.setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
-                .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
-                .setClli(serviceInput.getServiceAEnd().getClli())
-                .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId()).getValue())
-                .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
-                    .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
-                    .setPort(serviceInput.getServiceAEnd().getTxDirection().getPort()).build())
-                .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
-                    .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
-                    .setPort(serviceInput.getServiceAEnd().getRxDirection().getPort()).build());
-            org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+            new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+                .service.path.ServiceAEndBuilder()
+                    .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
+                    .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
+                    .setClli(serviceInput.getServiceAEnd().getClli())
+                    .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId()).getValue())
+                    .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+                            .transportpce.b.c._interface.service.types.rev200128
+                            .service.endpoint.sp.TxDirectionBuilder()
+                                .setPort(serviceInput.getServiceAEnd().getTxDirection().getPort())
+                                .build())
+                    .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+                            .transportpce.b.c._interface.service.types.rev200128
+                            .service.endpoint.sp.RxDirectionBuilder()
+                                .setPort(serviceInput.getServiceAEnd().getRxDirection().getPort())
+                                .build());
+        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
                 .service.path.ServiceZEndBuilder serviceZEnd =
-                    new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
-                        .service.path.ServiceZEndBuilder();
-            serviceZEnd.setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
-                .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
-                .setClli(serviceInput.getServiceZEnd().getClli())
-                .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId()).getValue())
-                .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
-                    .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
-                    .setPort(serviceInput.getServiceZEnd().getTxDirection().getPort()).build())
-                .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
-                    .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
-                    .setPort(serviceInput.getServiceZEnd().getRxDirection().getPort()).build());
-            servicePathBuilder.setServiceAEnd(serviceAEnd.build());
-            servicePathBuilder.setServiceZEnd(serviceZEnd.build());
-            MappingConstraints mapConstraints = new MappingConstraints(serviceInput.getHardConstraints(),
-                    serviceInput.getSoftConstraints());
-            mapConstraints.serviceToServicePathConstarints();
-            if (mapConstraints.getServicePathHardConstraints() != null) {
-                HardConstraintsBuilder hardConstraintBuilder = new HardConstraintsBuilder()
+            new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+                .service.path.ServiceZEndBuilder()
+                    .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
+                    .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
+                    .setClli(serviceInput.getServiceZEnd().getClli())
+                    .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId()).getValue())
+                    .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+                                .transportpce.b.c._interface.service.types.rev200128
+                                .service.endpoint.sp.TxDirectionBuilder()
+                                        .setPort(serviceInput.getServiceZEnd().getTxDirection().getPort())
+                                        .build())
+                    .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+                                .transportpce.b.c._interface.service.types.rev200128
+                                .service.endpoint.sp.RxDirectionBuilder()
+                                    .setPort(serviceInput.getServiceZEnd().getRxDirection().getPort())
+                                    .build());
+        ServicePathsBuilder servicePathBuilder = new ServicePathsBuilder()
+                .setServiceAEnd(serviceAEnd.build())
+                .setServiceZEnd(serviceZEnd.build());
+        MappingConstraints mapConstraints = new MappingConstraints(
+                serviceInput.getHardConstraints(),
+                serviceInput.getSoftConstraints()
+            );
+        mapConstraints.serviceToServicePathConstarints();
+        if (mapConstraints.getServicePathHardConstraints() != null) {
+            servicePathBuilder.setHardConstraints(
+                new HardConstraintsBuilder()
                     .setCustomerCode(serviceInput.getHardConstraints().getCustomerCode())
-                    .setCoRoutingOrGeneral(mapConstraints.getServicePathHardConstraints().getCoRoutingOrGeneral());
-                servicePathBuilder.setHardConstraints(hardConstraintBuilder.build());
-            }
-            if (mapConstraints.getServicePathSoftConstraints() != null) {
-                SoftConstraintsBuilder softConstraintBuilder = new SoftConstraintsBuilder()
+                    .setCoRoutingOrGeneral(mapConstraints.getServicePathHardConstraints().getCoRoutingOrGeneral())
+                    .build()
+            );
+        }
+        if (mapConstraints.getServicePathSoftConstraints() != null) {
+            servicePathBuilder.setSoftConstraints(
+                new SoftConstraintsBuilder()
                     .setCustomerCode(mapConstraints.getServicePathSoftConstraints().getCustomerCode())
-                    .setCoRoutingOrGeneral(mapConstraints.getServicePathSoftConstraints().getCoRoutingOrGeneral());
-                servicePathBuilder.setSoftConstraints(softConstraintBuilder.build());
-            }
-            servicePathBuilder.setServicePathName(serviceInput.getServiceName());
-            servicePathBuilder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
-                    .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build());
-            if (output.getResponseParameters().getPathDescription() != null) {
-                PathDescriptionBuilder pathDescBuilder =
-                        new PathDescriptionBuilder(output.getResponseParameters().getPathDescription());
-                servicePathBuilder.setPathDescription(pathDescBuilder.build());
-            }
+                    .setCoRoutingOrGeneral(mapConstraints.getServicePathSoftConstraints().getCoRoutingOrGeneral())
+                    .build()
+            );
+        }
+        servicePathBuilder
+            .setServicePathName(serviceInput.getServiceName())
+            .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+                    .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
+                    .build());
+        if (output.getResponseParameters().getPathDescription() != null) {
+            servicePathBuilder.setPathDescription(
+                    new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build()
+            );
         }
 
         return servicePathBuilder.build();
index 731ce9cff93ef6fb1d505b271949a8dea2d50855..9d4482b5b4365eb81e296ba9c3ef3c7bc3dfc210 100644 (file)
@@ -30,7 +30,7 @@ import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOper
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl;
 import org.opendaylight.transportpce.servicehandler.validation.ServiceCreateValidation;
 import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerCompliancyCheck;
+import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.RpcActions;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ServiceNotificationTypes;
@@ -116,16 +116,51 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
         this.rendererListenerImpl = rendererListenerImpl;
     }
 
+
+    // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+    public static final class LogMessages {
+
+        public static final String PCE_CALLING;
+        public static final String ABORT_PCE_FAILED;
+        public static final String PCE_FAILED;
+        public static final String ABORT_SERVICE_NON_COMPLIANT;
+        public static final String SERVICE_NON_COMPLIANT;
+        public static final String RENDERER_DELETE_FAILED;
+        public static final String ABORT_VALID_FAILED;
+
+        // Static blocks are generated once and spare memory.
+        static {
+            PCE_CALLING = "Calling PCE";
+            ABORT_PCE_FAILED = "Aborting: PCE calculation failed ";
+            PCE_FAILED = "PCE calculation failed";
+            ABORT_SERVICE_NON_COMPLIANT = "Aborting: non-compliant service ";
+            SERVICE_NON_COMPLIANT = "non-compliant service";
+            RENDERER_DELETE_FAILED = "Renderer service delete failed";
+            ABORT_VALID_FAILED = "Aborting: validation of service create request failed";
+        }
+
+        public static String serviceNotInDS(String serviceName) {
+            return "Service '" + serviceName + "' does not exist in datastore";
+        }
+
+        public static String serviceInService(String serviceName) {
+            return "Service '" + serviceName + "' is in 'inService' state";
+        }
+
+        private LogMessages() {
+        }
+    }
+
     @Override
     public ListenableFuture<RpcResult<ServiceCreateOutput>> serviceCreate(ServiceCreateInput input) {
-        LOG.info("RPC service creation received");
+        LOG.info("RPC serviceCreate received");
         // Validation
         OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(
                 new ServiceInput(input), RpcActions.ServiceCreate);
         if (! validationResult.isSuccess()) {
-            LOG.warn("Aborting service create because validation of service create request failed: {}",
-                    validationResult.getResultMessage());
-            return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+            LOG.warn("serviceCreate: {}", LogMessages.ABORT_VALID_FAILED);
+            return ModelMappingUtils.createCreateServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
                     validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
         }
         this.pceListenerImpl.setInput(new ServiceInput(input));
@@ -133,95 +168,95 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
         this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
         this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
         this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
-        LOG.info("Commencing PCE");
+        LOG.debug("serviceCreate: {}", LogMessages.PCE_CALLING);
         PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true);
-        if (output != null) {
-            LOG.info("Service compliant, serviceCreate in progress...");
-            ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-            return ModelMappingUtils.createCreateServiceReply(input, common.getAckFinalIndicator(),
-                    common.getResponseMessage(), common.getResponseCode());
-        } else {
+        if (output == null) {
+            LOG.warn("serviceCreate: {}", LogMessages.ABORT_PCE_FAILED);
             return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                    "PCE calculation failed", ResponseCodes.RESPONSE_FAILED);
+                    LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED);
         }
+        LOG.info("RPC serviceCreate in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createCreateServiceReply(
+                input, common.getAckFinalIndicator(),
+                common.getResponseMessage(), common.getResponseCode());
     }
 
     @Override
     public ListenableFuture<RpcResult<ServiceDeleteOutput>> serviceDelete(ServiceDeleteInput input) {
-        LOG.info("RPC serviceDelete request received for {}", input.getServiceDeleteReqInfo().getServiceName());
-        String message = "";
+        String serviceName = input.getServiceDeleteReqInfo().getServiceName();
+        LOG.info("RPC serviceDelete request received for {}", serviceName);
 
         /*
          * Upon receipt of service-deleteService RPC, service header and sdnc-request
-         * header compliancy are verified.
+         * header compliance are verified.
          */
-        LOG.info("checking Service Compliancy ...");
         ComplianceCheckResult serviceHandlerCheckResult =
-            ServicehandlerCompliancyCheck.check(
+            ServicehandlerComplianceCheck.check(
                 input.getServiceDeleteReqInfo().getServiceName(),
                 input.getSdncRequestHeader(), null, RpcActions.ServiceDelete, false, true);
-        if (serviceHandlerCheckResult.hasPassed()) {
-            LOG.info("Service compliant !");
-        } else {
-            LOG.info("Service is not compliant !");
-            return ModelMappingUtils
-                    .createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                            "Service not compliant !", ResponseCodes.RESPONSE_FAILED);
+        if (!serviceHandlerCheckResult.hasPassed()) {
+            LOG.warn("serviceDelete: {}", LogMessages.ABORT_SERVICE_NON_COMPLIANT);
+            return ModelMappingUtils.createDeleteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED);
         }
 
         //Check presence of service to be deleted
-        String serviceName = input.getServiceDeleteReqInfo().getServiceName();
-        LOG.info("serviceName : {}", serviceName);
-        try {
-            Optional<Services> service = this.serviceDataStoreOperations.getService(serviceName);
-            if (!service.isPresent()) {
-                message = "Service '" + serviceName + "' does not exist in datastore";
-                LOG.error(message);
-                return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                        message, ResponseCodes.RESPONSE_FAILED);
-            }
-        } catch (NullPointerException e) {
-            LOG.error("failed to get service '{}' from datastore : ", serviceName, e);
-            message = "Service '" + serviceName + "' does not exist in datastore";
-            LOG.error(message);
-            return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES, message,
-                    ResponseCodes.RESPONSE_FAILED);
+//TODO check if an expected bug was justifying this NPE handling
+//        try {
+        Optional<Services> service = this.serviceDataStoreOperations.getService(serviceName);
+//        } catch (NullPointerException e) {
+//            LOG.error("Something wrong when retrieving service '{}' from datastore : ", serviceName, e);
+//            return ModelMappingUtils.createDeleteServiceReply(
+//                    input, ResponseCodes.FINAL_ACK_YES,
+//                    LogMessages.serviceNotInDS(serviceName), ResponseCodes.RESPONSE_FAILED);
+//        }
+        if (!service.isPresent()) {
+            LOG.warn("serviceDelete: {}", LogMessages.serviceNotInDS(serviceName));
+            return ModelMappingUtils.createDeleteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.serviceNotInDS(serviceName), ResponseCodes.RESPONSE_FAILED);
         }
-        LOG.info("Service '{}' present in datastore !", serviceName);
+        LOG.debug("serviceDelete: Service '{}' found in datastore", serviceName);
         this.pceListenerImpl.setInput(new ServiceInput(input));
         this.pceListenerImpl.setServiceReconfigure(false);
         this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
         this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
         this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
         org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-            .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
-                    new ServiceInput(input));
+                .ServiceDeleteInput serviceDeleteInput =
+            ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input));
         org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output =
-                this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
-                ServiceNotificationTypes.ServiceDeleteResult);
-        if (output != null) {
-            LOG.info("Service present in datastore, service-delete in progress...");
-            ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-            return ModelMappingUtils.createDeleteServiceReply(input, common.getAckFinalIndicator(),
-                    common.getResponseMessage(), common.getResponseCode());
-        } else {
-            return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                    "Renderer service delete failed !", ResponseCodes.RESPONSE_FAILED);
+            this.rendererServiceWrapper.performRenderer(
+                serviceDeleteInput, ServiceNotificationTypes.ServiceDeleteResult);
+
+        if (output == null) {
+            LOG.error("serviceDelete: {}", LogMessages.RENDERER_DELETE_FAILED);
+            return ModelMappingUtils.createDeleteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.RENDERER_DELETE_FAILED, ResponseCodes.RESPONSE_FAILED);
         }
+
+        LOG.debug("RPC serviceDelete in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createDeleteServiceReply(
+                input, common.getAckFinalIndicator(),
+                common.getResponseMessage(), common.getResponseCode());
     }
 
     @Override
     public ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> serviceFeasibilityCheck(
             ServiceFeasibilityCheckInput input) {
-        LOG.info("RPC service feasibility check received");
+        LOG.info("RPC serviceFeasibilityCheck received");
         // Validation
         ServiceInput serviceInput = new ServiceInput(input);
         OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(serviceInput,
                 RpcActions.ServiceFeasibilityCheck);
         if (! validationResult.isSuccess()) {
-            LOG.warn("Aborting service feasibility check because validation of service create request failed: {}",
-                    validationResult.getResultMessage());
-            return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+            LOG.warn("serviceFeasabilityCheck: {}", LogMessages.ABORT_VALID_FAILED);
+            return ModelMappingUtils.createCreateServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
                     validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
         }
         this.pceListenerImpl.setInput(new ServiceInput(input));
@@ -230,134 +265,141 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
         this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
         this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
         this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
-        LOG.info("Commencing PCE");
+        LOG.debug("serviceFeasabilityCheck: {}", LogMessages.PCE_CALLING);
         PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true);
-        if (output != null) {
-            LOG.info("Service compliant, serviceFeasibilityCheck in progress...");
-            ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-            return ModelMappingUtils.createCreateServiceReply(input, common.getAckFinalIndicator(),
-                    common.getResponseMessage(), common.getResponseCode());
-        } else {
+        if (output == null) {
+            LOG.warn("serviceFeasabilityCheck: {}", LogMessages.ABORT_PCE_FAILED);
             return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                    "PCE calculation failed", ResponseCodes.RESPONSE_FAILED);
+                    LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED);
         }
+        LOG.info("RPC serviceFeasibilityCheck in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createCreateServiceReply(
+                input, common.getAckFinalIndicator(),
+                common.getResponseMessage(), common.getResponseCode());
     }
 
     @Override
     public ListenableFuture<RpcResult<ServiceReconfigureOutput>> serviceReconfigure(ServiceReconfigureInput input) {
-        LOG.info("RPC service reconfigure received");
-        String message = "";
-        Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(input.getServiceName());
-        if (servicesObject.isPresent()) {
-            LOG.info("Service '{}' is present", input.getServiceName());
-            OperationResult validationResult = ServiceCreateValidation
-                    .validateServiceCreateRequest(new ServiceInput(input), RpcActions.ServiceReconfigure);
-            if (!validationResult.isSuccess()) {
-                LOG.warn("Aborting service reconfigure because validation of service create request failed: {}",
-                        validationResult.getResultMessage());
-                return ModelMappingUtils.createCreateServiceReply(input, validationResult.getResultMessage(),
-                        RpcStatus.Failed);
-            }
-            this.pceListenerImpl.setInput(new ServiceInput(input));
-            this.pceListenerImpl.setServiceReconfigure(true);
-            this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
-            this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
-            this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
-            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-                    .ServiceDeleteInput serviceDeleteInput =
-                            ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input));
-            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-                    .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
-                            ServiceNotificationTypes.ServiceDeleteResult);
-            if (output != null) {
-                LOG.info("Service compliant, service reconfigure in progress...");
-                ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-                return ModelMappingUtils.createCreateServiceReply(input, common.getResponseMessage(),
-                        RpcStatus.Successful);
-            } else {
-                return ModelMappingUtils.createCreateServiceReply(input, "Renderer service delete failed !",
-                        RpcStatus.Successful);
-            }
-        } else {
-            LOG.error("Service '{}' is not present", input.getServiceName());
-            message = "Service '" + input.getServiceName() + "' is not present";
-            return ModelMappingUtils.createCreateServiceReply(input, message, RpcStatus.Failed);
+        String serviceName = input.getServiceName();
+        LOG.info("RPC serviceReconfigure received for {}", serviceName);
+        Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(serviceName);
+        if (!servicesObject.isPresent()) {
+            LOG.warn("serviceReconfigure: {}", LogMessages.serviceNotInDS(serviceName));
+            return ModelMappingUtils.createCreateServiceReply(
+                input,
+                LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed);
+        }
+        LOG.debug("Service '{}' found in datastore", serviceName);
+        OperationResult validationResult = ServiceCreateValidation
+                .validateServiceCreateRequest(new ServiceInput(input), RpcActions.ServiceReconfigure);
+        if (!validationResult.isSuccess()) {
+            LOG.warn("serviceReconfigure: {}", LogMessages.ABORT_VALID_FAILED);
+            return ModelMappingUtils.createCreateServiceReply(
+                    input,
+                    validationResult.getResultMessage(), RpcStatus.Failed);
         }
+        this.pceListenerImpl.setInput(new ServiceInput(input));
+        this.pceListenerImpl.setServiceReconfigure(true);
+        this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+        this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
+        this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .ServiceDeleteInput serviceDeleteInput =
+                        ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input));
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
+                        ServiceNotificationTypes.ServiceDeleteResult);
+        if (output == null) {
+            LOG.error("serviceReconfigure: {}", LogMessages.RENDERER_DELETE_FAILED);
+            return ModelMappingUtils.createCreateServiceReply(
+                    input,
+                    LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Successful);
+                    //TODO check if RpcStatus.Successful is really expected here
+        }
+        LOG.info("RPC serviceReconfigure in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createCreateServiceReply(
+                input,
+                common.getResponseMessage(), RpcStatus.Successful);
     }
 
     @Override
     public ListenableFuture<RpcResult<ServiceRestorationOutput>> serviceRestoration(ServiceRestorationInput input) {
-        LOG.info("RPC service restoration received");
-        String message = "";
         String serviceName = input.getServiceName();
+        LOG.info("RPC serviceRestoration received for {}", serviceName);
         Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(serviceName);
-        if (servicesObject.isPresent()) {
-            Services service = servicesObject.get();
-            State state = service.getOperationalState();
-            if (state != State.InService) {
-                ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
-                DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
-                OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
-                DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
-                deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
-                    .setServiceName(serviceName).setDueDate(datetime)
-                    .setTailRetention(TailRetention.No).build());
-                SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
-                    .setNotificationUrl(service.getSdncRequestHeader().getNotificationUrl())
-                    .setRequestId(service.getSdncRequestHeader().getRequestId())
-                    .setRequestSystemId(service.getSdncRequestHeader().getRequestSystemId())
-                    .setRpcAction(RpcActions.ServiceDelete);
-                deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
-                ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
-                serviceInput.setServiceAEnd(service.getServiceAEnd());
-                serviceInput.setServiceZEnd(service.getServiceZEnd());
-                serviceInput.setConnectionType(service.getConnectionType());
-                HardConstraints hardConstraints = service.getHardConstraints();
-                if (hardConstraints != null) {
-                    SoftConstraints softConstraints = service.getSoftConstraints();
-                    if (softConstraints != null) {
-                        LOG.info("converting hard constraints to soft constraints ...");
-                        serviceInput.setSoftConstraints(
-                                DowngradeConstraints.updateSoftConstraints(hardConstraints, softConstraints));
-                        serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
-                    } else {
-                        LOG.warn("service '{}' SoftConstraints is not set !", serviceName);
-                        serviceInput.setSoftConstraints(DowngradeConstraints.convertToSoftConstraints(hardConstraints));
-                        serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
-                    }
-                } else {
-                    LOG.warn("service '{}' HardConstraints is not set !", serviceName);
-                }
-                this.pceListenerImpl.setInput(serviceInput);
-                this.pceListenerImpl.setServiceReconfigure(true);
-                this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
-                this.rendererListenerImpl.setServiceInput(serviceInput);
-                this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
-                org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-                    .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
-                            new ServiceInput(deleteInputBldr.build()));
-                org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-                    .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
-                        ServiceNotificationTypes.ServiceDeleteResult);
-                if (output != null) {
-                    LOG.info("Service present in datastore, service-restore in progress...");
-                    ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-                    return ModelMappingUtils.createRestoreServiceReply(common.getResponseMessage(),
-                            RpcStatus.Successful);
-                } else {
-                    return ModelMappingUtils.createRestoreServiceReply("Renderer service delete failed !",
-                            RpcStatus.Failed);
-                }
+
+        if (!servicesObject.isPresent()) {
+            LOG.warn("serviceRestoration: {}", LogMessages.serviceNotInDS(serviceName));
+            return ModelMappingUtils.createRestoreServiceReply(
+                    LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed);
+        }
+
+        Services service = servicesObject.get();
+        State state = service.getOperationalState();
+
+        if (state == State.InService) {
+            LOG.error("serviceRestoration: {}", LogMessages.serviceInService(serviceName));
+            return ModelMappingUtils.createRestoreServiceReply(
+                    LogMessages.serviceInService(serviceName), RpcStatus.Failed);
+        }
+
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+        OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+        DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+        SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
+                .setNotificationUrl(service.getSdncRequestHeader().getNotificationUrl())
+                .setRequestId(service.getSdncRequestHeader().getRequestId())
+                .setRequestSystemId(service.getSdncRequestHeader().getRequestSystemId())
+                .setRpcAction(RpcActions.ServiceDelete);
+        ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder()
+                .setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
+                    .setServiceName(serviceName)
+                    .setDueDate(datetime)
+                    .setTailRetention(TailRetention.No).build())
+                .setSdncRequestHeader(sdncBuilder.build());
+        ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
+        serviceInput.setServiceAEnd(service.getServiceAEnd());
+        serviceInput.setServiceZEnd(service.getServiceZEnd());
+        serviceInput.setConnectionType(service.getConnectionType());
+        HardConstraints hardConstraints = service.getHardConstraints();
+        if (hardConstraints == null) {
+            LOG.warn("service '{}' HardConstraints is not set !", serviceName);
+        } else {
+            SoftConstraints softConstraints = service.getSoftConstraints();
+            if (softConstraints == null) {
+                LOG.warn("service '{}' SoftConstraints is not set !", serviceName);
+                serviceInput.setSoftConstraints(DowngradeConstraints.convertToSoftConstraints(hardConstraints));
+                serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
             } else {
-                LOG.error("Service '{}' is in 'inService' state", input.getServiceName());
-                message = "Service '" + input.getServiceName() + "' is in 'inService' state";
-                return ModelMappingUtils.createRestoreServiceReply(message, RpcStatus.Failed);
+                LOG.info("converting hard constraints to soft constraints ...");
+                serviceInput.setSoftConstraints(
+                        DowngradeConstraints.updateSoftConstraints(hardConstraints, softConstraints));
+                serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
             }
-        } else {
-            LOG.error("Service '{}' is not present", input.getServiceName());
-            message = "Service '" + input.getServiceName() + "' is not present";
-            return ModelMappingUtils.createRestoreServiceReply(message, RpcStatus.Failed);
         }
+        this.pceListenerImpl.setInput(serviceInput);
+        this.pceListenerImpl.setServiceReconfigure(true);
+        this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+        this.rendererListenerImpl.setServiceInput(serviceInput);
+        this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
+                    new ServiceInput(deleteInputBldr.build()));
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
+                ServiceNotificationTypes.ServiceDeleteResult);
+        if (output == null) {
+            LOG.error("serviceRestoration: {}", LogMessages.RENDERER_DELETE_FAILED);
+            return ModelMappingUtils.createRestoreServiceReply(
+                     LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Failed);
+        }
+        LOG.info("RPC serviceRestore in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createRestoreServiceReply(
+                common.getResponseMessage(), RpcStatus.Successful);
+
     }
 
     @Override
@@ -376,54 +418,55 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
 
     @Override
     public ListenableFuture<RpcResult<ServiceRerouteOutput>> serviceReroute(ServiceRerouteInput input) {
-        LOG.info("RPC service reroute received");
-        String message = "";
-        Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(input.getServiceName());
-        if (servicesObject.isPresent()) {
-            Services service = servicesObject.get();
-            ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
-            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
-            OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
-            DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
-            deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
-                .setServiceName(input.getServiceName()).setDueDate(datetime)
-                .setTailRetention(TailRetention.No).build());
-            SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
+        String serviceName = input.getServiceName();
+        LOG.info("RPC serviceReroute received for {}", serviceName);
+        Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(serviceName);
+        if (!servicesObject.isPresent()) {
+            LOG.warn("serviceReroute: {}", LogMessages.serviceNotInDS(serviceName));
+            return ModelMappingUtils.createRerouteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_NO,
+                    LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed);
+        }
+        Services service = servicesObject.get();
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+        OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+        DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+        SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
                 .setNotificationUrl(service.getSdncRequestHeader().getNotificationUrl())
                 .setRequestId(service.getSdncRequestHeader().getRequestId())
                 .setRequestSystemId(service.getSdncRequestHeader().getRequestSystemId())
                 .setRpcAction(RpcActions.ServiceDelete);
-            deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
-            ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
-            serviceInput.setServiceAEnd(service.getServiceAEnd());
-            serviceInput.setServiceZEnd(service.getServiceZEnd());
-            serviceInput.setConnectionType(service.getConnectionType());
-            this.pceListenerImpl.setInput(serviceInput);
-            this.pceListenerImpl.setServiceReconfigure(true);
-            this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
-            this.rendererListenerImpl.setServiceInput(serviceInput);
-            this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
-            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-                .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
-                        new ServiceInput(deleteInputBldr.build()));
-            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
-                .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
-                    ServiceNotificationTypes.ServiceDeleteResult);
-            if (output != null) {
-                LOG.info("Service present in datastore, service-reroute in progress...");
-                ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-                return ModelMappingUtils.createRerouteServiceReply(input, common.getAckFinalIndicator(),
-                        common.getResponseMessage(), RpcStatus.Successful);
-            } else {
-                return ModelMappingUtils.createRerouteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                        "Renderer service delete failed !", RpcStatus.Failed);
-            }
-        } else {
-            LOG.error("Service '{}' is not present", input.getServiceName());
-            message = "Service '" + input.getServiceName() + "' is not present";
-            return ModelMappingUtils.createRerouteServiceReply(input, ResponseCodes.FINAL_ACK_NO, message,
-                    RpcStatus.Failed);
+        ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder()
+                .setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
+                    .setServiceName(serviceName).setDueDate(datetime)
+                    .setTailRetention(TailRetention.No).build())
+                .setSdncRequestHeader(sdncBuilder.build());
+        ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
+        serviceInput.setServiceAEnd(service.getServiceAEnd());
+        serviceInput.setServiceZEnd(service.getServiceZEnd());
+        serviceInput.setConnectionType(service.getConnectionType());
+        this.pceListenerImpl.setInput(serviceInput);
+        this.pceListenerImpl.setServiceReconfigure(true);
+        this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+        this.rendererListenerImpl.setServiceInput(serviceInput);
+        this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
+                    new ServiceInput(deleteInputBldr.build()));
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
+                ServiceNotificationTypes.ServiceDeleteResult);
+        if (output == null) {
+            LOG.error("serviceReroute: {}", LogMessages.RENDERER_DELETE_FAILED);
+            return ModelMappingUtils.createRerouteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Failed);
         }
+        LOG.info("RPC ServiceReroute in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createRerouteServiceReply(
+                input, common.getAckFinalIndicator(),
+                common.getResponseMessage(), RpcStatus.Successful);
     }
 
     @Override
@@ -447,38 +490,42 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
 
     @Override
     public ListenableFuture<RpcResult<TempServiceDeleteOutput>> tempServiceDelete(TempServiceDeleteInput input) {
-        LOG.info("RPC temp serviceDelete request received for {}", input.getCommonId());
-        String message = "";
+        String commonId = input.getCommonId();
+        LOG.info("RPC temp serviceDelete request received for {}", commonId);
 
         /*
          * Upon receipt of service-deleteService RPC, service header and sdnc-request
          * header compliancy are verified.
          */
-        LOG.info("checking Service Compliancy ...");
-        ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerCompliancyCheck.check(input.getCommonId(),
-                null, null, RpcActions.ServiceDelete, false, false);
-        if (serviceHandlerCheckResult.hasPassed()) {
-            LOG.info("Service compliant !");
-        } else {
-            LOG.info("Service is not compliant !");
-            return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                    "Service not compliant !", ResponseCodes.RESPONSE_FAILED);
+        LOG.debug("checking Service Compliance ...");
+        ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerComplianceCheck.check(
+                commonId, null, null, RpcActions.ServiceDelete, false, false
+            );
+        if (!serviceHandlerCheckResult.hasPassed()) {
+            LOG.warn("tempServiceDelete: {}", LogMessages.ABORT_SERVICE_NON_COMPLIANT);
+            return ModelMappingUtils.createDeleteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED);
         }
 
         //Check presence of service to be deleted
-        String commonId = input.getCommonId();
-        LOG.info("service common-id : {}", commonId);
-        try {
-            Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                .Services> service = this.serviceDataStoreOperations.getTempService(commonId);
-            if (!service.isPresent()) {
-                message = "Service '" + commonId + "' does not exist in datastore";
-                LOG.error(message);
-                return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                        message, ResponseCodes.RESPONSE_FAILED);
-            }
-        } catch (NullPointerException e) {
-            LOG.info("failed to get service '{}' from datastore : ", commonId, e);
+        LOG.debug("service common-id '{}' is compliant", commonId);
+//TODO check if an expected bug was justifying this NPE handling
+//        try {
+        Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list.Services>
+                service =
+            this.serviceDataStoreOperations.getTempService(commonId);
+//        } catch (NullPointerException e) {
+//            LOG.info("failed to get service '{}' from datastore : ", commonId, e);
+//            return ModelMappingUtils.createDeleteServiceReply(
+//                    input, ResponseCodes.FINAL_ACK_YES,
+//                    LogMessages.serviceNotInDS(CommonId), ResponseCodes.RESPONSE_FAILED);
+//        }
+        if (!service.isPresent()) {
+            LOG.error("tempServiceDelete: {}", LogMessages.serviceNotInDS(commonId));
+            return ModelMappingUtils.createDeleteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.serviceNotInDS(commonId), ResponseCodes.RESPONSE_FAILED);
         }
 
         LOG.info("Service '{}' present in datastore !", commonId);
@@ -490,32 +537,34 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
         this.rendererListenerImpl.setTempService(true);
         org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output =
                 this.rendererServiceWrapper.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult);
-        if (output != null) {
-            LOG.info("Temp Service present in datastore, service-delete in progress...");
-            ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-            return ModelMappingUtils.createDeleteServiceReply(input, common.getAckFinalIndicator(),
-                    common.getResponseMessage(), common.getResponseCode());
-        } else {
-            return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                    "Renderer service delete failed !", ResponseCodes.RESPONSE_FAILED);
+        if (output == null) {
+            LOG.error("tempServiceDelete: {}", LogMessages.RENDERER_DELETE_FAILED);
+            return ModelMappingUtils.createDeleteServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.RENDERER_DELETE_FAILED, ResponseCodes.RESPONSE_FAILED);
         }
+        LOG.info("RPC tempServiceDelete in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createDeleteServiceReply(
+                input, common.getAckFinalIndicator(),
+                common.getResponseMessage(), common.getResponseCode());
     }
 
     @Override
     public ListenableFuture<RpcResult<TempServiceCreateOutput>> tempServiceCreate(TempServiceCreateInput input) {
-        LOG.info("RPC temp service creation received");
+        LOG.info("RPC tempServiceCreate received");
         // Validation
         OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(
                 new ServiceInput(input), RpcActions.TempServiceCreate);
         if (! validationResult.isSuccess()) {
-            LOG.warn("Aborting service create because validation of service create request failed: {}",
-                    validationResult.getResultMessage());
-            return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+            LOG.warn("tempServiceCreate: {}", LogMessages.ABORT_VALID_FAILED);
+            return ModelMappingUtils.createCreateServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
                     validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
         }
 
         // Starting service create operation
-        LOG.info("Commencing PCE");
+        LOG.debug("tempServiceCreate: {}", LogMessages.PCE_CALLING);
         this.pceListenerImpl.setInput(new ServiceInput(input));
         this.pceListenerImpl.setServiceReconfigure(false);
         this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
@@ -524,15 +573,17 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
         this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
         this.rendererListenerImpl.setTempService(true);
         PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true);
-        if (output != null) {
-            LOG.info("Service compliant, temp serviceCreate in progress...");
-            ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
-            return ModelMappingUtils.createCreateServiceReply(input, common.getAckFinalIndicator(),
-                    common.getResponseMessage(), common.getResponseCode());
-        } else {
-            return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
-                    "PCE calculation failed", ResponseCodes.RESPONSE_FAILED);
+        if (output == null) {
+            LOG.warn("tempServiceCreate: {}", LogMessages.ABORT_PCE_FAILED);
+            return ModelMappingUtils.createCreateServiceReply(
+                    input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED);
         }
+        LOG.info("RPC tempServiceCreate in progress...");
+        ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+        return ModelMappingUtils.createCreateServiceReply(
+                input, common.getAckFinalIndicator(),
+                common.getResponseMessage(), common.getResponseCode());
     }
 
     @Override
index 52031fbeb872b4ddd2b2bf8a3786bbd940962a40..bd590e607a2f088e28abc091a88b338c2c4c227a 100644 (file)
@@ -44,9 +44,29 @@ import org.slf4j.LoggerFactory;
 
 public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperations {
     private static final Logger LOG = LoggerFactory.getLogger(ServiceDataStoreOperationsImpl.class);
-    private static final String SUCCESSFUL_MESSAGE = "Successful";
     private DataBroker dataBroker;
 
+    // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+    public static final class LogMessages {
+
+        public static final String SUCCESSFUL_MESSAGE;
+        public static final String SERVICE_NOT_FOUND;
+
+        // Static blocks are generated once and spare memory.
+        static {
+            SUCCESSFUL_MESSAGE = "Successful";
+            SERVICE_NOT_FOUND = "Service not found";
+        }
+
+        public static String failedTo(String action, String serviceName) {
+            return  "Failed to " + action + " service " + serviceName;
+        }
+
+        private LogMessages() {
+        }
+    }
+
+
     public ServiceDataStoreOperationsImpl(DataBroker dataBroker) {
         this.dataBroker = dataBroker;
     }
@@ -67,7 +87,7 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
             FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
             future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
-            LOG.warn("init failed: {}", e.getMessage());
+            LOG.error("init failed: ", e);
         }
     }
 
@@ -81,7 +101,7 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
             FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
             future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
-            LOG.warn("init failed: {}", e.getMessage());
+            LOG.error("init failed: ", e);
         }
     }
 
@@ -128,11 +148,10 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
                     InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
             writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
             writeTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
-            return OperationResult.ok(SUCCESSFUL_MESSAGE);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
-            String message = "Failed to delete service " + serviceName + " from Service List";
-            LOG.warn(message, e);
-            return OperationResult.failed(message);
+            LOG.warn("deleteService : {}", LogMessages.failedTo("delete", serviceName), e);
+            return OperationResult.failed(LogMessages.failedTo("delete", serviceName));
         }
     }
 
@@ -148,11 +167,10 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
                             .ServicesKey(commonId));
             writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
             writeTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
-            return OperationResult.ok(SUCCESSFUL_MESSAGE);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
-            String message = "Failed to delete service " + commonId + " from Service List";
-            LOG.warn(message, e);
-            return OperationResult.failed(message);
+            LOG.warn("deleteTempService : {}", LogMessages.failedTo("delete Temp", commonId), e);
+            return OperationResult.failed(LogMessages.failedTo("delete Temp", commonId));
         }
     }
 
@@ -160,26 +178,23 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     public OperationResult modifyService(String serviceName, State operationalState, AdminStates administrativeState) {
         LOG.debug("Modifying '{}' Service", serviceName);
         Optional<Services> readService = getService(serviceName);
-        if (readService.isPresent()) {
-            try {
-                WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-                InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
-                        .child(Services.class, new ServicesKey(serviceName));
-                Services services = new ServicesBuilder(readService.get()).setOperationalState(operationalState)
-                        .setAdministrativeState(administrativeState)
-                        .build();
-                writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
-                writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
-                return OperationResult.ok(SUCCESSFUL_MESSAGE);
-            } catch (TimeoutException | InterruptedException | ExecutionException e) {
-                String message = "Failed to modify service " + serviceName + " from Service List";
-                LOG.warn(message, e);
-                return OperationResult.failed(message);
-            }
-        } else {
-            String message = "Service " + serviceName + " is not present!";
-            LOG.warn(message);
-            return OperationResult.failed(message);
+        if (!readService.isPresent()) {
+            LOG.warn("modifyService: {}", LogMessages.SERVICE_NOT_FOUND);
+            return OperationResult.failed(LogMessages.SERVICE_NOT_FOUND);
+        }
+        try {
+            WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
+            InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
+                    .child(Services.class, new ServicesKey(serviceName));
+            Services services = new ServicesBuilder(readService.get()).setOperationalState(operationalState)
+                    .setAdministrativeState(administrativeState)
+                    .build();
+            writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
+            writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+        } catch (TimeoutException | InterruptedException | ExecutionException e) {
+            LOG.warn("modifyService : {}", LogMessages.failedTo("modify", serviceName), e);
+            return OperationResult.failed(LogMessages.failedTo("modify", serviceName));
         }
     }
 
@@ -189,31 +204,28 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         LOG.debug("Modifying '{}' Temp Service", serviceName);
         Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
             .Services> readService = getTempService(serviceName);
-        if (readService.isPresent()) {
-            try {
-                WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-                InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                    .Services> iid = InstanceIdentifier.create(TempServiceList.class)
-                        .child(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                                .Services.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
-                                    .temp.service.list.ServicesKey(serviceName));
-                org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                    .Services services = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp
-                        .service.list.ServicesBuilder(readService.get()).setOperationalState(operationalState)
-                            .setAdministrativeState(administrativeState)
-                            .build();
-                writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
-                writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
-                return OperationResult.ok(SUCCESSFUL_MESSAGE);
-            } catch (TimeoutException | InterruptedException | ExecutionException e) {
-                String message = "Failed to modify temp service " + serviceName + " from Temp Service List";
-                LOG.warn(message, e);
-                return OperationResult.failed(message);
-            }
-        } else {
-            String message = "Temp Service " + serviceName + " is not present!";
-            LOG.warn(message);
-            return OperationResult.failed(message);
+        if (!readService.isPresent()) {
+            LOG.warn("modifyTempService: {}", LogMessages.SERVICE_NOT_FOUND);
+            return OperationResult.failed(LogMessages.SERVICE_NOT_FOUND);
+        }
+        try {
+            WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
+            InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
+                .Services> iid = InstanceIdentifier.create(TempServiceList.class)
+                    .child(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
+                            .Services.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
+                                .temp.service.list.ServicesKey(serviceName));
+            org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
+                .Services services = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp
+                    .service.list.ServicesBuilder(readService.get()).setOperationalState(operationalState)
+                        .setAdministrativeState(administrativeState)
+                        .build();
+            writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
+            writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+        } catch (TimeoutException | InterruptedException | ExecutionException e) {
+            LOG.warn("modifyTempService : {}", LogMessages.failedTo("modify Temp", serviceName), e);
+            return OperationResult.failed(LogMessages.failedTo("modify Temp", serviceName));
         }
     }
 
@@ -227,11 +239,10 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
             writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
-            return OperationResult.ok(SUCCESSFUL_MESSAGE);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
-            String message = "Failed to create service " + serviceCreateInput.getServiceName() + " to Service List";
-            LOG.warn(message, e);
-            return OperationResult.failed(message);
+            LOG.warn("createService : {}", LogMessages.failedTo("create", serviceCreateInput.getServiceName()), e);
+            return OperationResult.failed(LogMessages.failedTo("create", serviceCreateInput.getServiceName()));
         }
     }
 
@@ -249,12 +260,11 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
             writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
-            return OperationResult.ok(SUCCESSFUL_MESSAGE);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
-            String message = "Failed to create Temp service " + tempServiceCreateInput.getCommonId()
-                + " to TempService List";
-            LOG.warn(message, e);
-            return OperationResult.failed(message);
+            LOG.warn("createTempService : {}",
+                    LogMessages.failedTo("create Temp", tempServiceCreateInput.getCommonId()), e);
+            return OperationResult.failed(LogMessages.failedTo("create Temp", tempServiceCreateInput.getCommonId()));
         }
     }
 
@@ -268,11 +278,11 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
             writeTx.put(LogicalDatastoreType.OPERATIONAL, servicePathsIID, servicePath);
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
-            return OperationResult.ok(SUCCESSFUL_MESSAGE);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
-            String message = "Failed to create servicePath " + serviceInput.getCommonId() + " to ServicePath List";
-            LOG.warn(message, e);
-            return OperationResult.failed(message);
+            LOG.warn("createServicePath : {}",
+                    LogMessages.failedTo("create servicePath", serviceInput.getCommonId()), e);
+            return OperationResult.failed(LogMessages.failedTo("create servicePath", serviceInput.getCommonId()));
         }
     }
 
@@ -285,11 +295,10 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         servicePathsWriteTx.delete(LogicalDatastoreType.OPERATIONAL, servicePathsIID);
         try {
             servicePathsWriteTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
-            return OperationResult.ok(SUCCESSFUL_MESSAGE);
+            return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
-            String message = "Unable to delete service path " + serviceName;
-            LOG.error(message, e);
-            return OperationResult.failed(message);
+            LOG.error("deleteServicePath : {}", LogMessages.failedTo("delete servicePath", serviceName), e);
+            return OperationResult.failed(LogMessages.failedTo("delete servicePath", serviceName));
         }
     }
 
@@ -312,60 +321,61 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
             PathComputationRequestOutput output, int choice) {
         LOG.debug("WriteOrModifyOrDeleting '{}' Service", serviceName);
         WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-        String result = null;
         Optional<Services> readService = getService(serviceName);
-        if (readService.isPresent()) {
-            /*
-             * Modify / Delete Service.
-             */
-            InstanceIdentifier<Services> iid =
-                    InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
-            ServicesBuilder service = new ServicesBuilder(readService.get());
-            String action = null;
-            switch (choice) {
-                case 0 : /* Modify. */
-                    LOG.debug("Modifying '{}' Service", serviceName);
-                    service.setOperationalState(State.InService).setAdministrativeState(AdminStates.InService);
-                    writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, service.build());
-                    action = "modifyService";
-                    break;
-                case 1 : /* Delete */
-                    LOG.debug("Deleting '{}' Service", serviceName);
-                    writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
-                    action = "deleteService";
-                    break;
-                default:
-                    LOG.debug("No choice found");
-                    break;
+
+        /*
+         * Write Service.
+         */
+        if (!readService.isPresent()) {
+            if (choice != 2) {
+                LOG.warn("writeOrModifyOrDeleteServiceList: {}", LogMessages.SERVICE_NOT_FOUND);
+                return LogMessages.SERVICE_NOT_FOUND;
             }
+
+            LOG.debug("Writing '{}' Service", serviceName);
+            InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
+                    .child(Services.class, new ServicesKey(serviceName));
+            Services service = ModelMappingUtils.mappingServices(input, null);
+            writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
             try {
                 writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException | ExecutionException | TimeoutException e) {
-                LOG.error("Failed to {} service from Service List", action, e);
-                result = "Failed to " + action + " service from Service List";
-            }
-        } else {
-            /*
-             * Write Service.
-             */
-            if (choice == 2) {
-                LOG.debug("Writing '{}' Service", serviceName);
-                InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
-                        .child(Services.class, new ServicesKey(serviceName));
-                Services service = ModelMappingUtils.mappingServices(input, null);
-                writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
-                try {
-                    writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
-                    result = null;
-                } catch (InterruptedException | TimeoutException | ExecutionException e) {
-                    LOG.error("Failed to createService service to Service List", e);
-                    result = "Failed to createService service to Service List";
-                }
-            } else {
-                LOG.info("Service is not present ! ");
-                result = "Service is not present ! ";
+                return null;
+            } catch (InterruptedException | TimeoutException | ExecutionException e) {
+                LOG.error("writeOrModifyOrDeleteServiceList : {}", LogMessages.failedTo("create", serviceName), e);
+                return LogMessages.failedTo("create", serviceName);
             }
         }
-        return result;
+
+        /*
+         * Modify / Delete Service.
+         */
+        InstanceIdentifier<Services> iid =
+                InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
+        ServicesBuilder service = new ServicesBuilder(readService.get());
+        String action = null;
+        switch (choice) {
+            case 0 : /* Modify. */
+                LOG.debug("Modifying '{}' Service", serviceName);
+                service.setOperationalState(State.InService).setAdministrativeState(AdminStates.InService);
+                writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, service.build());
+                action = "modifyService";
+                break;
+            case 1 : /* Delete */
+                LOG.debug("Deleting '{}' Service", serviceName);
+                writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
+                action = "deleteService";
+                break;
+            default:
+                LOG.debug("No choice found");
+                break;
+        }
+        try {
+            writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException | ExecutionException | TimeoutException e) {
+            LOG.error("writeOrModifyOrDeleteServiceList : {}", LogMessages.failedTo(action, serviceName), e);
+            return LogMessages.failedTo(action, serviceName);
+        }
+
+        return null;
     }
 }
index 503dad06b7e9d437fcc079e7feef2251500228c5..666264ac8b67ea50d8c323b8c81730e1206e049a 100644 (file)
@@ -13,7 +13,7 @@ import org.opendaylight.transportpce.servicehandler.ServiceEndpointType;
 import org.opendaylight.transportpce.servicehandler.ServiceInput;
 import org.opendaylight.transportpce.servicehandler.validation.checks.CheckCoherencyHardSoft;
 import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerCompliancyCheck;
+import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck;
 import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerTxRxCheck;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.RpcActions;
@@ -30,12 +30,12 @@ public final class ServiceCreateValidation {
          * -create RPC, service header and sdnc
          * -request header compliancy are verified.
          */
-        LOG.debug("checking Service Compliancy ...");
+        LOG.debug("checking Service Compliance ...");
         try {
             String serviceNmame = input.getServiceName();
             SdncRequestHeader sdncRequestHeader = input.getSdncRequestHeader();
             ConnectionType conType = input.getConnectionType();
-            ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerCompliancyCheck.check(
+            ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerComplianceCheck.check(
                     serviceNmame, sdncRequestHeader, conType, rpcActions, true, true);
             if (serviceHandlerCheckResult.hasPassed()) {
                 LOG.debug("Service request compliant !");
index 6a26fa2555cf20e72edaf068da779c07b4134695..e50a3324b85c82edcf5b1b669c6fbeb4d00920a6 100644 (file)
@@ -6,9 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 package org.opendaylight.transportpce.servicehandler.validation.checks;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ComplianceCheckResult {
 
+    private static final Logger LOG = LoggerFactory.getLogger(ComplianceCheckResult.class);
+
     private boolean passed;
     private String message;
 
@@ -18,6 +22,11 @@ public class ComplianceCheckResult {
     }
 
     public ComplianceCheckResult(boolean passed, String message) {
+        if (passed) {
+            LOG.debug("Compliance check passed");
+        } else {
+            LOG.debug("Compliance check: {}", message);
+        }
         this.passed = passed;
         this.message = message;
     }
diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerComplianceCheck.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerComplianceCheck.java
new file mode 100644 (file)
index 0000000..5508ac7
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Copyright Â© 2017 Orange, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.transportpce.servicehandler.validation.checks;
+
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.RpcActions;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeader;
+
+/**
+ * Class for checking service sdnc-request-header compliance.
+ *
+ */
+public final class ServicehandlerComplianceCheck {
+
+    // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+    public static final class LogMessages {
+
+        public static final String SERVICENAME_NOT_SET;
+        public static final String CONNECTIONTYPE_NOT_SET;
+        public static final String REQUESTID_NOT_SET;
+        public static final String RPCACTION_NOT_SET;
+        public static final String HEADER_NOT_SET;
+
+        // Static blocks are generated once and spare memory.
+        static {
+            SERVICENAME_NOT_SET = "Service Name (common-id for Temp service) is not set";
+            CONNECTIONTYPE_NOT_SET = "Service ConnectionType is not set";
+            REQUESTID_NOT_SET = "Service sdncRequestHeader 'request-id' is not set";
+            RPCACTION_NOT_SET = "Service sdncRequestHeader 'rpc-action' is not set";
+            HEADER_NOT_SET = "Service sdncRequestHeader is not set";
+        }
+
+        public static String rpcactionsDiffers(RpcActions action1, RpcActions action2) {
+            return
+                "Service sdncRequestHeader rpc-action '" + action1.name() + "' not equal to '" + action2.name() + "'";
+        }
+
+        private LogMessages() {
+        }
+    }
+
+    /**
+     * Check if a String is not null and not equal to void.
+     *
+     * @param value
+     *            String value
+     * @return true if String ok false if not
+     */
+    public static boolean checkString(String value) {
+        return ((value != null) && (!value.isEmpty()));
+    }
+
+    /**
+     * Check Compliance of Service request.
+     *
+     * @param serviceName
+     *            Service Name
+     * @param sdncRequestHeader
+     *            sdncRequestHeader
+     * @param conType
+     *            Connection type
+     * @param action
+     *            RPC Actions
+     * @param contype
+     *            Boolean to check connection Type
+     * @param sdncRequest
+     *            Boolean to check sdncRequestHeader
+     *
+     * @return true if Service Request OK and false if not
+     */
+    public static ComplianceCheckResult check(String serviceName, SdncRequestHeader sdncRequestHeader,
+                                       ConnectionType conType, RpcActions action,
+                                       Boolean contype, Boolean sdncRequest) {
+        if (!checkString(serviceName)) {
+            return new ComplianceCheckResult(false, LogMessages.SERVICENAME_NOT_SET);
+        }
+        if (contype && (conType == null)) {
+            return new ComplianceCheckResult(false, LogMessages.CONNECTIONTYPE_NOT_SET);
+        }
+        if (sdncRequest) {
+            if (sdncRequestHeader == null) {
+                return new ComplianceCheckResult(false, LogMessages.HEADER_NOT_SET);
+            }
+            RpcActions serviceAction = sdncRequestHeader.getRpcAction();
+            String requestId = sdncRequestHeader.getRequestId();
+            if (!checkString(requestId)) {
+                return new ComplianceCheckResult(false, LogMessages.REQUESTID_NOT_SET);
+            }
+            if (serviceAction == null) {
+                return new ComplianceCheckResult(false, LogMessages.RPCACTION_NOT_SET);
+            }
+            if (serviceAction.compareTo(action) != 0) {
+                return new ComplianceCheckResult(false, LogMessages.rpcactionsDiffers(serviceAction, action));
+            }
+        }
+        return new ComplianceCheckResult(true, "");
+    }
+
+    private ServicehandlerComplianceCheck() {
+    }
+
+}
diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerCompliancyCheck.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/validation/checks/ServicehandlerCompliancyCheck.java
deleted file mode 100644 (file)
index f0c15ac..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright Â© 2017 Orange, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.transportpce.servicehandler.validation.checks;
-
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.RpcActions;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Class for checking service sdnc-request-header compliancy.
- *
- */
-public final class ServicehandlerCompliancyCheck {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerCompliancyCheck.class);
-
-    /**
-     * Check if a String is not null and not equal to void.
-     *
-     * @param value
-     *            String value
-     * @return true if String ok false if not
-     */
-    public static boolean checkString(String value) {
-        return ((value != null) && (value.compareTo("") != 0));
-    }
-
-    /**
-     * Check Compliancy of Service request.
-     *
-     * @param serviceName
-     *            Service Name
-     * @param sdncRequestHeader
-     *            sdncRequestHeader
-     * @param conType
-     *            Connection type
-     * @param action
-     *            RPC Actions
-     * @param contype
-     *            Boolean to check connection Type
-     * @param sdncRequest
-     *            Boolean to check sdncRequestHeader
-     *
-     * @return true if String ok false if not
-     */
-    public static ComplianceCheckResult check(String serviceName, SdncRequestHeader sdncRequestHeader,
-                                       ConnectionType conType, RpcActions action,
-                                       Boolean contype, Boolean sdncRequest) {
-        boolean result = true;
-        String message = "";
-        if (!checkString(serviceName)) {
-            result = false;
-            message = "Service Name (common-id for Temp service) is not set";
-        } else if (contype && (conType == null)) {
-            result = false;
-            message = "Service ConnectionType is not set";
-        }
-        if (sdncRequest) {
-            if (sdncRequestHeader != null) {
-                RpcActions serviceAction = sdncRequestHeader.getRpcAction();
-                String requestId = sdncRequestHeader.getRequestId();
-                if (!checkString(requestId)) {
-                    result = false;
-                    message = "Service sdncRequestHeader 'request-id' is not set";
-                    LOG.debug(message);
-                } else if (serviceAction != null) {
-                    if (serviceAction.compareTo(action) != 0) {
-                        result = false;
-                        message = "Service sdncRequestHeader rpc-action '" + serviceAction + "' not equal to '"
-                                + action.name() + "'";
-                    }
-                } else {
-                    result = false;
-                    message = "Service sndc-request-header 'rpc-action' is not set ";
-                }
-
-            } else {
-                result = false;
-                message = "Service sndc-request-header is not set ";
-            }
-        }
-        LOG.debug(message);
-        return new ComplianceCheckResult(result, message);
-    }
-
-    private ServicehandlerCompliancyCheck() {
-    }
-
-}
index 93dc393497aaf489c8f874084bd04f600662e5e7..519f85cfb761678f2049edd8a63a060ce9f76b6c 100644 (file)
@@ -15,8 +15,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev1
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.lgx.Lgx;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.Port;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Class for checking missing info on Tx/Rx for A/Z end.
@@ -24,7 +22,46 @@ import org.slf4j.LoggerFactory;
  */
 public final class ServicehandlerTxRxCheck {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerTxRxCheck.class);
+    // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+    public static final class LogMessages {
+
+        public static final String TXDIR_NOT_SET;
+        public static final String TXDIR_PORT_NOT_SET;
+        public static final String TXDIR_LGX_NOT_SET;
+        public static final String RXDIR_NOT_SET;
+        public static final String RXDIR_PORT_NOT_SET;
+        public static final String RXDIR_LGX_NOT_SET;
+
+        // Static blocks are generated once and spare memory.
+        static {
+            TXDIR_NOT_SET = "Service TxDirection is not correctly set";
+            RXDIR_NOT_SET = "Service RxDirection is not correctly set";
+            TXDIR_PORT_NOT_SET = "Service TxDirection Port is not correctly set";
+            TXDIR_LGX_NOT_SET = "Service TxDirection Lgx is not correctly set";
+            RXDIR_PORT_NOT_SET = "Service RxDirection Port is not correctly set";
+            RXDIR_LGX_NOT_SET = "Service RxDirection Lgx is not correctly set";
+        }
+
+        public static String endpointTypeNotSet(ServiceEndpointType endpointType) {
+            return "Service " + endpointType + " is not set";
+        }
+
+        public static String rateNotSet(ServiceEndpointType endpointType) {
+            return "Service " + endpointType + " rate is not set";
+        }
+
+        public static String formatNotSet(ServiceEndpointType endpointType) {
+            return "Service " + endpointType + " format is not set";
+        }
+
+        public static String clliNotSet(ServiceEndpointType endpointType) {
+            return "Service " + endpointType + " clli is not set";
+        }
+
+        private LogMessages() {
+        }
+    }
+
 
     /**
      * Check if a String is not null and not equal to ''.
@@ -94,80 +131,67 @@ public final class ServicehandlerTxRxCheck {
      * @return <code>true</code> if check is ok <code>false</code> else
      */
     public static ComplianceCheckResult checkTxOrRxInfo(TxDirection txDirection, RxDirection rxDirection) {
-        boolean result = true;
-        String message = "";
-        if (txDirection != null) {
-            if (!checkPort(txDirection.getPort())) {
-                result = false;
-                message = "Service TxDirection Port is not correctly set";
-            } else if (!checkLgx(txDirection.getLgx())) {
-                result = false;
-                message = "Service TxDirection Lgx is not correctly set";
-            } else if (rxDirection != null) {
-                if (!checkPort(rxDirection.getPort())) {
-                    result = false;
-                    message = "Service RxDirection Port is not correctly set";
-                } else if (!checkLgx(rxDirection.getLgx())) {
-                    result = false;
-                    message = "Service RxDirection Lgx is not correctly set";
-                }
-            } else {
-                result = false;
-                message = "Service RxDirection is not correctly set";
-            }
-        } else {
-            result = false;
-            message = "Service TxDirection is not correctly set";
+        if (txDirection == null) {
+            return new ComplianceCheckResult(false, LogMessages.TXDIR_NOT_SET);
+        }
+        if (rxDirection == null) {
+            return new ComplianceCheckResult(false, LogMessages.RXDIR_NOT_SET);
+        }
+        if (!checkPort(txDirection.getPort())) {
+            return new ComplianceCheckResult(false, LogMessages.TXDIR_PORT_NOT_SET);
+        }
+        if (!checkLgx(txDirection.getLgx())) {
+            return new ComplianceCheckResult(false, LogMessages.TXDIR_LGX_NOT_SET);
         }
-        return new ComplianceCheckResult(result, message);
+        if (!checkPort(rxDirection.getPort())) {
+            return new ComplianceCheckResult(false, LogMessages.RXDIR_PORT_NOT_SET);
+        }
+        if (!checkLgx(rxDirection.getLgx())) {
+            return new ComplianceCheckResult(false, LogMessages.RXDIR_LGX_NOT_SET);
+        }
+        return new ComplianceCheckResult(true, "");
     }
 
     /**
-     * Check Compliancy of Service TxRx info.
+     * Check Compliance of Service TxRx info.
      * @param serviceEnd Service Endpoint
      * @param endpointType Endpoint type
      *
      * @return true if String ok false if not
      */
     public static ComplianceCheckResult check(ServiceEndpoint serviceEnd, ServiceEndpointType endpointType) {
-        boolean result = true;
-        String message = "";
-        if (serviceEnd != null) {
-            try {
-                Long serviceRate = serviceEnd.getServiceRate().toJava();
-                ServiceFormat serviceformat = serviceEnd.getServiceFormat();
-                String clli = serviceEnd.getClli();
-                if ((serviceRate == null) || (serviceRate <= 0)) {
-                    result = false;
-                    message = "Service " + endpointType + " rate is not set";
-                    LOG.debug(message);
-                } else if (serviceformat == null) {
-                    result = false;
-                    message = "Service " + endpointType + " format is not set";
-                    LOG.debug(message);
-                } else if (!checkString(clli)) {
-                    result = false;
-                    message = "Service" + endpointType + " clli format is not set";
-                    LOG.debug(message);
-                } else {
-                    ComplianceCheckResult complianceCheckResult
-                            = checkTxOrRxInfo(serviceEnd.getTxDirection(), serviceEnd.getRxDirection());
-                    if (!complianceCheckResult.hasPassed()) {
-                        result = false;
-                        message = complianceCheckResult.getMessage();
-                    }
-                }
-            } catch (NullPointerException e) {
-                message = "Service " + endpointType + " rate, format or clli is not set";
-                LOG.error(message, e);
-                return new ComplianceCheckResult(false, message);
-            }
-        } else {
-            result = false;
-            message = endpointType + " is not set";
-            LOG.debug(message);
+        if (serviceEnd == null) {
+            return new ComplianceCheckResult(false, LogMessages.endpointTypeNotSet(endpointType));
         }
-        return new ComplianceCheckResult(result, message);
+
+//TODO check if an expected bug was justifying this NPE handling
+//        try {
+        Long serviceRate = serviceEnd.getServiceRate().toJava();
+        ServiceFormat serviceformat = serviceEnd.getServiceFormat();
+        String clli = serviceEnd.getClli();
+//        } catch (NullPointerException e) {
+//            String message = "Something wrong when accessing Service " + endpointType + " rate, format or clli";
+//            LOG.error("Service TxRx info check: {}",message, e);
+//            return new ComplianceCheckResult(false, message);
+//        }
+
+        if ((serviceRate == null) || (serviceRate <= 0)) {
+            return new ComplianceCheckResult(false, LogMessages.rateNotSet(endpointType));
+        }
+        if (serviceformat == null) {
+            return new ComplianceCheckResult(false, LogMessages.formatNotSet(endpointType));
+        }
+        if (!checkString(clli)) {
+            return new ComplianceCheckResult(false, LogMessages.clliNotSet(endpointType));
+        }
+
+        ComplianceCheckResult complianceCheckResult
+                = checkTxOrRxInfo(serviceEnd.getTxDirection(), serviceEnd.getRxDirection());
+        if (!complianceCheckResult.hasPassed()) {
+            return new ComplianceCheckResult(false, complianceCheckResult.getMessage());
+        }
+
+        return new ComplianceCheckResult(true, "");
     }
 
     private ServicehandlerTxRxCheck() {
index 38c2cdc14d2e762d31fb19d0a1f45917a9ecda09..96829eca91f8eb1dadefa571b855c5570ed1fc89 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.transportpce.servicehandler.impl;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl.LogMessages;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -526,7 +527,8 @@ public class ServicehandlerImplTest extends AbstractTest  {
         Assert.assertEquals(
             ResponseCodes.RESPONSE_FAILED, rpcResult.getResult().getConfigurationResponseCommon().getResponseCode());
         Assert.assertEquals(
-            "Service not compliant !", rpcResult.getResult().getConfigurationResponseCommon().getResponseMessage());
+            LogMessages.SERVICE_NON_COMPLIANT,
+            rpcResult.getResult().getConfigurationResponseCommon().getResponseMessage());
     }
 
     @Test
index c854702e4a58ecceff591363b17f1fe4ce2d60e3..52d408d3f5d65dc15465a2ada9b59abdca78ea67 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.transportpce.servicehandler.service;
 
+import static org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl.LogMessages;
+
 import java.util.Optional;
 import org.junit.Assert;
 import org.junit.Before;
@@ -49,7 +51,7 @@ public class ServiceDataStoreOperationsImplTest extends AbstractTest {
         OperationResult result =
                 this.serviceDataStoreOperations.modifyService("service 1", State.InService, AdminStates.InService);
         Assert.assertFalse(result.isSuccess());
-        Assert.assertEquals("Service service 1 is not present!", result.getResultMessage());
+        Assert.assertEquals(LogMessages.SERVICE_NOT_FOUND, result.getResultMessage());
     }
 
     @Test
@@ -64,7 +66,7 @@ public class ServiceDataStoreOperationsImplTest extends AbstractTest {
         String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("serviceCreateInput",
             createInput, pathComputationRequestOutput, 3);
 
-        Assert.assertEquals("Service is not present ! ", result);
+        Assert.assertEquals(LogMessages.SERVICE_NOT_FOUND, result);
     }
 
     @Test
@@ -99,6 +101,7 @@ public class ServiceDataStoreOperationsImplTest extends AbstractTest {
     @Test
     public void writeOrModifyOrDeleteServiceListPresentWithDeleteChoice() {
         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
+
         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
                 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
                 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
@@ -208,8 +211,8 @@ public class ServiceDataStoreOperationsImplTest extends AbstractTest {
     public void modifyTempServiceIsSuccessfulForPresentTempService() {
         TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
         this.serviceDataStoreOperations.createTempService(createInput);
-        OperationResult result = this.serviceDataStoreOperations.modifyTempService(createInput.getCommonId(),
-            State.InService, AdminStates.InService);
+        OperationResult result = this.serviceDataStoreOperations.modifyTempService(
+            createInput.getCommonId(), State.InService, AdminStates.InService);
         Assert.assertTrue(result.isSuccess());
     }
 
@@ -7,20 +7,22 @@
  */
 package org.opendaylight.transportpce.servicehandler.validation.checks;
 
+import static org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck.LogMessages;
+
 import org.junit.Assert;
 import org.junit.Test;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.RpcActions;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeaderBuilder;
 
-public class ServicehandlerCompliancyCheckTest {
+public class ServicehandlerComplianceCheckTest {
 
-    public ServicehandlerCompliancyCheckTest(){
+    public ServicehandlerComplianceCheckTest(){
     }
 
     @Test
     public void checkFalseSdncRequest() {
-        ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+        ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
             new SdncRequestHeaderBuilder().setRequestId("1").setRequestSystemId("1").setNotificationUrl("1")
             .setRpcAction(RpcActions.ServiceCreate).build(),
             ConnectionType.Service,RpcActions.ServiceCreate, false, false);
@@ -31,61 +33,61 @@ public class ServicehandlerCompliancyCheckTest {
 
     @Test
     public void checkServiceNameNull() {
-        ComplianceCheckResult result = ServicehandlerCompliancyCheck.check(null, null,
-                ConnectionType.Service,null, false, false);
+        ComplianceCheckResult result = ServicehandlerComplianceCheck.check(null, null,
+                ConnectionType.Service, null, false, false);
 
-        Assert.assertEquals("Service Name (common-id for Temp service) is not set", result.getMessage());
+        Assert.assertEquals(LogMessages.SERVICENAME_NOT_SET, result.getMessage());
         Assert.assertFalse(result.hasPassed());
     }
 
     @Test
     public void checkConTypeFalseAndNull() {
-        ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1", null,
-                null,null, true, false);
-        Assert.assertEquals("Service ConnectionType is not set", result.getMessage());
+        ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1", null,
+                null, null, true, false);
+        Assert.assertEquals(LogMessages.CONNECTIONTYPE_NOT_SET, result.getMessage());
         Assert.assertFalse(result.hasPassed());
     }
 
     @Test
     public void checkSdncRequestHeaderNull() {
-        ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1", null,
-                ConnectionType.Service,null, true, true);
+        ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1", null,
+                ConnectionType.Service, null, true, true);
 
-        Assert.assertEquals("Service sndc-request-header is not set ", result.getMessage());
+        Assert.assertEquals(LogMessages.HEADER_NOT_SET, result.getMessage());
         Assert.assertFalse(result.hasPassed());
     }
 
     @Test
     public void checkRequestIdEmptyString() {
-        ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+        ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
                 new SdncRequestHeaderBuilder().setRequestId("")
                         .setRpcAction(RpcActions.ServiceCreate).build(),
                 ConnectionType.Service, RpcActions.ServiceCreate, true, true);
 
-        Assert.assertEquals("Service sdncRequestHeader 'request-id' is not set", result.getMessage());
+        Assert.assertEquals(LogMessages.REQUESTID_NOT_SET, result.getMessage());
         Assert.assertFalse(result.hasPassed());
     }
 
     @Test
     public void checkDifferentAction() {
-        ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+        ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
                 new SdncRequestHeaderBuilder().setRequestId("1")
                         .setRpcAction(RpcActions.ServiceCreate).build(),
                 ConnectionType.Service, RpcActions.NetworkReOptimization, true, true);
 
-        Assert.assertEquals("Service sdncRequestHeader rpc-action '" + RpcActions.ServiceCreate.name()
-                + "' not equal to '"
-                + RpcActions.NetworkReOptimization.name() + "'", result.getMessage());
+        Assert.assertEquals(
+                LogMessages.rpcactionsDiffers(RpcActions.ServiceCreate, RpcActions.NetworkReOptimization),
+                result.getMessage());
         Assert.assertFalse(result.hasPassed());
     }
 
     @Test
     public void checkServiceActionNull() {
-        ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+        ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
                 new SdncRequestHeaderBuilder().setRequestId("1").build(),
                 ConnectionType.Service, RpcActions.NetworkReOptimization, true, true);
 
-        Assert.assertEquals("Service sndc-request-header 'rpc-action' is not set ", result.getMessage());
+        Assert.assertEquals(LogMessages.RPCACTION_NOT_SET, result.getMessage());
         Assert.assertFalse(result.hasPassed());
     }
 }
index 3df746e36fbcd08b075ab1fa45589fd455e55720..53f6ca8aa6b21228f8365da9f0d1b7caa6acb068 100644 (file)
@@ -8,6 +8,8 @@
 
 package org.opendaylight.transportpce.servicehandler.validation.checks;
 
+import static org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerTxRxCheck.LogMessages;
+
 import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -33,72 +35,103 @@ public class ServicehandlerTxRxCheckTest {
 
     @Test
     public void checkTxOrRxInfoForNullTx() {
-        ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(null, null);
+        ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+                null,
+                new RxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build());
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service TxDirection is not correctly set", result.getMessage());
+        Assert.assertEquals(LogMessages.TXDIR_NOT_SET, result.getMessage());
     }
 
     @Test
     public void checkTxOrRxInfoForNullTxPort() {
-        ComplianceCheckResult result = ServicehandlerTxRxCheck
-                .checkTxOrRxInfo(new TxDirectionBuilder().build(), null);
+        ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+                new TxDirectionBuilder()
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build(),
+                new RxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build());
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service TxDirection Port is not correctly set", result.getMessage());
+        Assert.assertEquals(LogMessages.TXDIR_PORT_NOT_SET, result.getMessage());
     }
 
     @Test
     public void checkTxOrRxInfoForNullTxLgx() {
-        ComplianceCheckResult result = ServicehandlerTxRxCheck
-            .checkTxOrRxInfo(new TxDirectionBuilder()
-                .setPort(new PortBuilder().setPortDeviceName("q")
-                    .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build()).build(), null);
+        ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+                new TxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build()).build(),
+                new RxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build());
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service TxDirection Lgx is not correctly set", result.getMessage());
+        Assert.assertEquals(LogMessages.TXDIR_LGX_NOT_SET, result.getMessage());
     }
 
     @Test
     public void checkTxOrRxInfoForNullRx() {
-        ComplianceCheckResult result = ServicehandlerTxRxCheck
-                .checkTxOrRxInfo(new TxDirectionBuilder()
-                        .setPort(new PortBuilder().setPortDeviceName("q")
-                                .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
-                        .setLgx(new LgxBuilder().setLgxDeviceName("l")
-                                .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build()).build(), null);
+        ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+                new TxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build(),
+                null);
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service RxDirection is not correctly set", result.getMessage());
+        Assert.assertEquals(LogMessages.RXDIR_NOT_SET, result.getMessage());
     }
 
     @Test
     public void checkTxOrRxInfoForNullRxPort() {
-        ComplianceCheckResult result = ServicehandlerTxRxCheck
-            .checkTxOrRxInfo(new TxDirectionBuilder()
-                .setPort(new PortBuilder().setPortDeviceName("q")
-                .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
-                .setLgx(new LgxBuilder().setLgxDeviceName("l")
-                .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build()).build(),
-            new RxDirectionBuilder().build());
+        ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+                new TxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build(),
+                new RxDirectionBuilder()
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build());
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service RxDirection Port is not correctly set", result.getMessage());
+        Assert.assertEquals(LogMessages.RXDIR_PORT_NOT_SET, result.getMessage());
     }
 
     @Test
     public void checkTxOrRxInfoForNullRxLgx() {
-        ComplianceCheckResult result = ServicehandlerTxRxCheck
-                .checkTxOrRxInfo(new TxDirectionBuilder()
-                        .setPort(new PortBuilder().setPortDeviceName("q")
-                                .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
-                        .setLgx(new LgxBuilder().setLgxDeviceName("l")
-                                .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build()).build(),
-                        new RxDirectionBuilder().setPort(new PortBuilder().setPortDeviceName("q")
-                                .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build()).build());
+        ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+                new TxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+                    .setLgx(new LgxBuilder().setLgxDeviceName("l")
+                            .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+                    .build(),
+                new RxDirectionBuilder()
+                    .setPort(new PortBuilder().setPortDeviceName("q")
+                            .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+                    .build());
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service RxDirection Lgx is not correctly set", result.getMessage());
+        Assert.assertEquals(LogMessages.RXDIR_LGX_NOT_SET, result.getMessage());
     }
 
     @Test
@@ -106,7 +139,7 @@ public class ServicehandlerTxRxCheckTest {
         ComplianceCheckResult result = ServicehandlerTxRxCheck.check(null, ServiceEndpointType.SERVICEAEND);
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals(ServiceEndpointType.SERVICEAEND + " is not set", result.getMessage());
+        Assert.assertEquals(LogMessages.endpointTypeNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
     }
 
     @Ignore
@@ -116,7 +149,7 @@ public class ServicehandlerTxRxCheckTest {
             ServicehandlerTxRxCheck.check(new ServiceAEndBuilder().build(), ServiceEndpointType.SERVICEAEND);
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service " + ServiceEndpointType.SERVICEAEND + " rate is not set", result.getMessage());
+        Assert.assertEquals(LogMessages.rateNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
     }
 
     @Test
@@ -125,7 +158,7 @@ public class ServicehandlerTxRxCheckTest {
             new ServiceAEndBuilder().setServiceRate(0L).build(), ServiceEndpointType.SERVICEAEND);
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service " + ServiceEndpointType.SERVICEAEND + " rate is not set", result.getMessage());
+        Assert.assertEquals(LogMessages.rateNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
     }
 
     @Test
@@ -134,7 +167,7 @@ public class ServicehandlerTxRxCheckTest {
             new ServiceAEndBuilder().setServiceRate(3L).build(), ServiceEndpointType.SERVICEAEND);
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service " + ServiceEndpointType.SERVICEAEND + " format is not set", result.getMessage());
+        Assert.assertEquals(LogMessages.formatNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
     }
 
     @Test
@@ -144,8 +177,7 @@ public class ServicehandlerTxRxCheckTest {
             ServiceEndpointType.SERVICEAEND);
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals(
-            "Service" + ServiceEndpointType.SERVICEAEND + " clli format is not set", result.getMessage());
+        Assert.assertEquals(LogMessages.clliNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
     }
 
     @Test
@@ -155,6 +187,6 @@ public class ServicehandlerTxRxCheckTest {
             ServiceEndpointType.SERVICEAEND);
 
         Assert.assertFalse(result.hasPassed());
-        Assert.assertEquals("Service TxDirection is not correctly set", result.getMessage());
+        Assert.assertEquals(LogMessages.TXDIR_NOT_SET, result.getMessage());
     }
 }