[POLICY-122] Policy GUI Fixes
[policy/engine.git] / ECOMP-PDP-REST / src / main / java / org / openecomp / policy / pdp / rest / api / controller / PolicyEngineServices.java
index 47afcda..48539ad 100644 (file)
@@ -58,6 +58,8 @@ import org.openecomp.policy.pdp.rest.api.services.GetDecisionService;
 import org.openecomp.policy.pdp.rest.api.services.GetDictionaryService;
 import org.openecomp.policy.pdp.rest.api.services.GetMetricsService;
 import org.openecomp.policy.pdp.rest.api.services.ListConfigService;
+import org.openecomp.policy.pdp.rest.api.services.NotificationService;
+import org.openecomp.policy.pdp.rest.api.services.NotificationService.NotificationServiceType;
 import org.openecomp.policy.pdp.rest.api.services.PolicyEngineImportService;
 import org.openecomp.policy.pdp.rest.api.services.PushPolicyService;
 import org.openecomp.policy.pdp.rest.api.services.SendEventService;
@@ -81,8 +83,9 @@ import springfox.documentation.annotations.ApiIgnore;
 @Api(value = "Policy Engine Services")
 @RequestMapping("/")
 public class PolicyEngineServices {
-       private static Logger LOGGER = FlexLogger
-                       .getLogger(PolicyEngineServices.class.getName());
+       private static Logger logger = FlexLogger.getLogger(PolicyEngineServices.class.getName());
+       private static final String NOTIFICATIONPERM = "notification"; 
+       
        private final AtomicLong configCounter = new AtomicLong();
        private final AtomicLong configNameCounter = new AtomicLong();
        private final AtomicLong eventCounter = new AtomicLong();
@@ -97,6 +100,7 @@ public class PolicyEngineServices {
        private final AtomicLong policyEngineImportCounter = new AtomicLong();
        private final AtomicLong deprecatedCounter = new AtomicLong();
        private final AtomicLong metricCounter = new AtomicLong();
+       private final AtomicLong notificationCounter = new AtomicLong();
 
        @ApiImplicitParams({
                        @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
@@ -118,8 +122,7 @@ public class PolicyEngineServices {
                        status = getConfigService.getResponseCode();
                }
                configCounter.incrementAndGet();
-               return new ResponseEntity<Collection<PolicyConfig>>(policyConfig,
-                               status);
+               return new ResponseEntity<>(policyConfig, status);
        }
 
        @ApiImplicitParams({
@@ -136,8 +139,7 @@ public class PolicyEngineServices {
                Collection<PolicyConfig> policyConfig = null;
                HttpStatus status = HttpStatus.UNAUTHORIZED;
                // Check Permissions.
-               if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
-                               "getConfigByPolicyName")) {
+               if (PDPApiAuth.checkPermissions(clientEncoding, requestID,"getConfigByPolicyName")) {
                        ConfigRequestParameters configRequestParameters = new ConfigRequestParameters();
                        configRequestParameters.setPolicyName(configNameRequest
                                        .getPolicyName());
@@ -147,8 +149,7 @@ public class PolicyEngineServices {
                        status = getConfigService.getResponseCode();
                }
                configNameCounter.incrementAndGet();
-               return new ResponseEntity<Collection<PolicyConfig>>(policyConfig,
-                               status);
+               return new ResponseEntity<>(policyConfig, status);
        }
 
        @ApiImplicitParams({
@@ -172,7 +173,7 @@ public class PolicyEngineServices {
                        status = listConfigService.getResponseCode();
                }
                configCounter.incrementAndGet();
-               return new ResponseEntity<Collection<String>>(results, status);
+               return new ResponseEntity<>(results, status);
        }
        
        @ApiImplicitParams({
@@ -194,7 +195,72 @@ public class PolicyEngineServices {
                        status = getMetricsService.getResponseCode();
                }       
                metricCounter.incrementAndGet();
-               return new ResponseEntity<MetricsResponse>(response, status);
+               return new ResponseEntity<>(response, status);
+       }
+       
+       @ApiImplicitParams({
+               @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
+               @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
+       @ApiOperation(value = "Registers DMaaP Topic to recieve notification from Policy Engine")
+       @RequestMapping(value = "/getNotification", method = RequestMethod.POST)
+       @ResponseBody
+       public ResponseEntity<String> getNotification(
+                       @RequestBody String notificationTopic,
+                       @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
+                       @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
+               String policyResponse = "Error Unauthorized to use Notification Service.";
+               HttpStatus status = HttpStatus.UNAUTHORIZED;
+               // Check Permissions.
+               if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) {
+                       NotificationService notificationService = new NotificationService(notificationTopic, requestID, NotificationServiceType.ADD);
+                       policyResponse = notificationService.getResult();
+                       status = notificationService.getResponseCode();
+               }
+               notificationCounter.incrementAndGet();
+               return new ResponseEntity<>(policyResponse, status);
+       }
+       
+       @ApiImplicitParams({
+               @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
+               @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
+       @ApiOperation(value = "De-Registers DMaaP Topic to stop recieving notifications from Policy Engine")
+       @RequestMapping(value = "/stopNotification", method = RequestMethod.POST)
+       @ResponseBody
+       public ResponseEntity<String> stopNotification(
+                       @RequestBody String notificationTopic,
+                       @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
+                       @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
+               String policyResponse = "Error Unauthorized to use Notification Service.";
+               HttpStatus status = HttpStatus.UNAUTHORIZED;
+               // Check Permissions.
+               if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) {
+                       NotificationService notificationService = new NotificationService(notificationTopic, requestID, NotificationServiceType.REMOVE);
+                       policyResponse = notificationService.getResult();
+                       status = notificationService.getResponseCode();
+               }
+               notificationCounter.incrementAndGet();
+               return new ResponseEntity<>(policyResponse, status);
+       }
+       
+       @ApiImplicitParams({
+               @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
+               @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
+       @ApiOperation(value = "Sends Heartbeat to DMaaP Topic Registry to continue recieving notifications from Policy Engine")
+       @RequestMapping(value = "/sendHeartbeat", method = RequestMethod.POST)
+       @ResponseBody
+       public ResponseEntity<String> sendHeartbeat(
+                       @RequestBody String notificationTopic,
+                       @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
+                       @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
+               String policyResponse = "Error Unauthorized to use Heartbeat Service.";
+               HttpStatus status = HttpStatus.UNAUTHORIZED;
+               // Check Permissions.
+               if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) {
+                       NotificationService notificationService = new NotificationService(notificationTopic, requestID, NotificationServiceType.HB);
+                       policyResponse = notificationService.getResult();
+                       status = notificationService.getResponseCode();
+               }
+               return new ResponseEntity<>(policyResponse, status);
        }
 
        @ApiImplicitParams({
@@ -217,7 +283,7 @@ public class PolicyEngineServices {
                        status = sendEventService.getResponseCode();
                }
                eventCounter.incrementAndGet();
-               return new ResponseEntity<Collection<PolicyResponse>>(policyResponse,
+               return new ResponseEntity<>(policyResponse,
                                status);
        }
 
@@ -242,7 +308,7 @@ public class PolicyEngineServices {
                        status = getDecisionService.getResponseCode();
                }
                decisionCounter.incrementAndGet();
-               return new ResponseEntity<DecisionResponse>(decisionResponse, status);
+               return new ResponseEntity<>(decisionResponse, status);
        }
 
        @ApiImplicitParams({
@@ -266,7 +332,7 @@ public class PolicyEngineServices {
                        status = pushPolicyService.getResponseCode();
                }
                pushCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -290,7 +356,7 @@ public class PolicyEngineServices {
                        status = deletePolicyService.getResponseCode();
                }
                deleteCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -316,13 +382,13 @@ public class PolicyEngineServices {
                                status = createPolicyService.getResponseCode();
                        } catch (InstantiationException | IllegalAccessException
                                        | IllegalArgumentException | InvocationTargetException e) {
-                               LOGGER.error(e.getMessage());
+                               logger.error(e.getMessage(), e);
                                response = "Problem with CreateUpdate Policy Service. ";
                                status = HttpStatus.INTERNAL_SERVER_ERROR;
                        }
                }
                createPolicyCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -348,13 +414,13 @@ public class PolicyEngineServices {
                                status = updatePolicyService.getResponseCode();
                        } catch (InstantiationException | IllegalAccessException
                                        | IllegalArgumentException | InvocationTargetException e) {
-                               LOGGER.error(e.getMessage());
+                               logger.error(e.getMessage(), e);
                                response = "Problem with CreateUpdate Policy Service. ";
                                status = HttpStatus.INTERNAL_SERVER_ERROR;
                        }
                }
                updatePolicyCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -378,7 +444,7 @@ public class PolicyEngineServices {
                        status = createDictionaryService.getResponseCode();
                }
                createDictionaryCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -402,7 +468,7 @@ public class PolicyEngineServices {
                        status = updateDictionaryService.getResponseCode();
                }
                updateDictionaryCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -426,7 +492,7 @@ public class PolicyEngineServices {
                        status = getDictionaryService.getResponseCode();
                }
                getDictionaryCounter.incrementAndGet();
-               return new ResponseEntity<DictionaryResponse>(dictionaryResponse,
+               return new ResponseEntity<>(dictionaryResponse,
                                status);
        }
 
@@ -452,7 +518,7 @@ public class PolicyEngineServices {
                        status = policyEngineImportService.getResponseCode();
                }
                policyEngineImportCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -477,7 +543,7 @@ public class PolicyEngineServices {
                        status = createPolicyService.getResponseCode();
                }
                deprecatedCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -502,7 +568,7 @@ public class PolicyEngineServices {
                        status = updatePolicyService.getResponseCode();
                }
                deprecatedCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -527,7 +593,7 @@ public class PolicyEngineServices {
                        status = createFirewallPolicyService.getResponseCode();
                }
                deprecatedCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiImplicitParams({
@@ -552,7 +618,7 @@ public class PolicyEngineServices {
                        status = updateFirewallPolicyService.getResponseCode();
                }
                deprecatedCounter.incrementAndGet();
-               return new ResponseEntity<String>(response, status);
+               return new ResponseEntity<>(response, status);
        }
 
        @ApiOperation(value = "Gets the API Services usage Information")
@@ -573,13 +639,14 @@ public class PolicyEngineServices {
                                + "\nTotal PolicyEngine Import Calls: "
                                + policyEngineImportCounter
                                + "\nTotal Deprecated Policy Calls: " + deprecatedCounter
-                               + "\nTotal Metrics Calls:" + metricCounter;
+                               + "\nTotal Metrics Calls:" + metricCounter
+                               + "\nTotal Notification Calls:" + notificationCounter;
        }
 
        @ExceptionHandler({ HttpMessageNotReadableException.class })
        public ResponseEntity<String> messageNotReadableExceptionHandler(
                        HttpServletRequest req, HttpMessageNotReadableException exception) {
-               LOGGER.error("Request not readable: {}", exception);
+               logger.error("Request not readable: {}", exception);
                StringBuilder message = new StringBuilder();
                message.append(exception.getMessage());
                if (exception.getCause() != null) {