diff options
Diffstat (limited to 'engine-d/src/main/java/org/onap/holmes/engine/resources')
4 files changed, 73 insertions, 118 deletions
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java b/engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java index 548b9b2..576170f 100644 --- a/engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java +++ b/engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 ZTE Corporation. + * Copyright 2017-2022 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,45 +18,35 @@ package org.onap.holmes.engine.resources; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.DELETE; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.core.MediaType; import lombok.extern.slf4j.Slf4j; -import org.jvnet.hk2.annotations.Service; import org.onap.holmes.common.dcae.DcaeConfigurationsCache; import org.onap.holmes.common.dcae.entity.SecurityInfo; -import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder; +import org.onap.holmes.common.utils.SpringContextUtil; import org.onap.holmes.dsa.dmaappolling.Subscriber; import org.onap.holmes.engine.dmaap.SubscriberAction; import org.onap.holmes.engine.request.DmaapConfigRequest; +import org.springframework.web.bind.annotation.*; -@Service @Slf4j -//@Api(tags = {"DMaaP Configurations"}) -@Path("/dmaap") +@RestController +@RequestMapping("/dmaap") public class DmaapConfigurationService { - @PUT - @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = "Subscribe to a new topic. " + "If the topic already exists, it is replaced with the new configuration.") - @Path("/sub") + @RequestMapping(value = "/sub", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON) public String addSubInfo( - @ApiParam (value = "A JSON object with the fields named <b>name</b>" - + " and <b>url</b>. Both fields are required.") DmaapConfigRequest config, - @Context HttpServletRequest request){ + @ApiParam(value = "A JSON object with the fields named <b>name</b>" + + " and <b>url</b>. Both fields are required.") + @RequestBody DmaapConfigRequest config) { String url = config.getUrl(); if (url.startsWith("http://") || url.startsWith("https://")) { Subscriber subscriber = new Subscriber(); subscriber.setTopic(config.getName()); subscriber.setUrl(url); - SubscriberAction subscriberAction = ServiceLocatorHolder.getLocator() - .getService(SubscriberAction.class); + SubscriberAction subscriberAction = SpringContextUtil.getBean(SubscriberAction.class); subscriberAction.removeSubscriber(subscriber); subscriberAction.addSubscriber(subscriber); @@ -67,30 +57,26 @@ public class DmaapConfigurationService { return "{\"message\": \"Only the HTTP or HTTPS protocol is supported!\"}"; } - @DELETE @Path("/sub/{topic}") @ApiOperation(value = "Unsubscribe a topic from DMaaP.") - @Produces(MediaType.APPLICATION_JSON) - public String removeSubInfo(@PathParam("topic") String topic){ + @RequestMapping(value = "/sub/{topic}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON) + public String removeSubInfo(@PathVariable("topic") String topic) { Subscriber subscriber = new Subscriber(); subscriber.setTopic(topic); - SubscriberAction subscriberAction = ServiceLocatorHolder.getLocator() - .getService(SubscriberAction.class); + SubscriberAction subscriberAction = SpringContextUtil.getBean(SubscriberAction.class); subscriberAction.removeSubscriber(subscriber); return "{\"message\": \"Topic unsubscribed.\"}"; } - @PUT - @Produces(MediaType.APPLICATION_JSON) - @Path("/pub") @ApiOperation(value = "Add/Update a publishing topic. " + "If the topic already exists, it is replaced with the new configuration.") + @RequestMapping(value = "/pub", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON) public String updatePubInfo( - @ApiParam (value = "A JSON object with the fields named <b>name</b>" - + " and <b>url</b>. Both fields are required.") DmaapConfigRequest config, - @Context HttpServletRequest request){ + @ApiParam(value = "A JSON object with the fields named <b>name</b>" + + " and <b>url</b>. Both fields are required.") + @RequestBody DmaapConfigRequest config) { String url = config.getUrl(); if (url.startsWith("http://") || url.startsWith("https://")) { SecurityInfo securityInfo = new SecurityInfo(); diff --git a/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java b/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java index 0aa3a59..cb41533 100644 --- a/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java +++ b/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java @@ -1,12 +1,12 @@ /** * Copyright 2017 ZTE Corporation. - * + * <p> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * <p> * http://www.apache.org/licenses/LICENSE-2.0 - * + * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -16,64 +16,59 @@ package org.onap.holmes.engine.resources; -import com.codahale.metrics.annotation.Timed; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; -import org.jvnet.hk2.annotations.Service; import org.onap.holmes.common.dmaap.store.ClosedLoopControlNameCache; import org.onap.holmes.common.exception.CorrelationException; import org.onap.holmes.common.utils.ExceptionUtil; -import org.onap.holmes.common.utils.LanguageUtil; import org.onap.holmes.engine.manager.DroolsEngine; import org.onap.holmes.engine.request.CompileRuleRequest; import org.onap.holmes.engine.request.DeployRuleRequest; import org.onap.holmes.engine.response.CorrelationRuleResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import java.util.Locale; +import jakarta.ws.rs.core.MediaType; import java.util.regex.Matcher; import java.util.regex.Pattern; -@Service -@Path("/rule") -@Api(tags = {"Holmes Engine Management"}) -@Produces(MediaType.APPLICATION_JSON) @Slf4j +@RestController +@RequestMapping("/rule") +@Api(tags = {"Holmes Engine Management"}) public class EngineResources { - @Inject - DroolsEngine droolsEngine; - private Pattern packagePattern = Pattern.compile("package[\\s]+([^;]+)[;\\s]*"); + private Pattern packagePattern = Pattern.compile("package[\\s]+([^;]+)[;\\s]*"); private ClosedLoopControlNameCache closedLoopControlNameCache; + private DroolsEngine droolsEngine; + + @Autowired + public void setDroolsEngine(DroolsEngine droolsEngine) { + this.droolsEngine = droolsEngine; + } - @Inject + @Autowired public void setClosedLoopControlNameCache(ClosedLoopControlNameCache closedLoopControlNameCache) { this.closedLoopControlNameCache = closedLoopControlNameCache; } - @PUT - @Produces(MediaType.APPLICATION_JSON) - @Timed + @ResponseBody + @PutMapping(produces = MediaType.APPLICATION_JSON) public CorrelationRuleResponse deployRule( @ApiParam(value = "The request entity of the HTTP call, which comprises three " + "fields: \"content\" , \"loopControlName\" and \"engineId\". " + "The \"content\" should be a valid Drools rule string and the \"engineId\" " - + "has to be \"engine-d\" in the Amsterdam release.", required = true) DeployRuleRequest deployRuleRequest, - @Context HttpServletRequest httpRequest) { + + "has to be \"engine-d\" in the Amsterdam release.", required = true) + @RequestBody DeployRuleRequest deployRuleRequest) { CorrelationRuleResponse crResponse = new CorrelationRuleResponse(); - Locale locale = LanguageUtil.getLocale(httpRequest); try { String packageName = getPackageName(deployRuleRequest.getContent()); - if(packageName == null) { - throw new CorrelationException("Could not find package name in rule: "+deployRuleRequest.getContent()); + if (packageName == null) { + throw new CorrelationException("Could not find package name in rule: " + deployRuleRequest.getContent()); } - + closedLoopControlNameCache .put(packageName, deployRuleRequest.getLoopControlName()); String packageNameRet = droolsEngine.deployRule(deployRuleRequest); @@ -97,15 +92,8 @@ public class EngineResources { return crResponse; } - @DELETE - @Produces(MediaType.APPLICATION_JSON) - @Timed - @Path("/{packageName}") - public boolean undeployRule(@PathParam("packageName") String packageName, - @Context HttpServletRequest httpRequest) { - - Locale locale = LanguageUtil.getLocale(httpRequest); - + @DeleteMapping(value = "/{packageName}") + public void undeployRule(@PathVariable("packageName") String packageName) { try { droolsEngine.undeployRule(packageName); closedLoopControlNameCache.remove(packageName); @@ -113,36 +101,26 @@ public class EngineResources { log.error(correlationException.getMessage(), correlationException); throw ExceptionUtil.buildExceptionResponse(correlationException.getMessage()); } - - return true; } - - @POST + @PostMapping @ApiOperation(value = "Check the validity of a rule.") - @Produces(MediaType.APPLICATION_JSON) - @Timed - public boolean compileRule(CompileRuleRequest compileRuleRequest, - @Context HttpServletRequest httpRequest) { - - Locale locale = LanguageUtil.getLocale(httpRequest); - + public void compileRule(@RequestBody CompileRuleRequest compileRuleRequest) { try { droolsEngine.compileRule(compileRuleRequest.getContent()); } catch (CorrelationException correlationException) { log.error(correlationException.getMessage(), correlationException); throw ExceptionUtil.buildExceptionResponse(correlationException.getMessage()); } - return true; } - - private String getPackageName(String contents){ + + private String getPackageName(String contents) { Matcher m = packagePattern.matcher(contents); - - if (m.find( )) { - return m.group(1); - }else { - return null; + + if (m.find()) { + return m.group(1); + } else { + return null; } } } diff --git a/engine-d/src/main/java/org/onap/holmes/engine/resources/HealthCheck.java b/engine-d/src/main/java/org/onap/holmes/engine/resources/HealthCheck.java index c86bf06..44d238a 100644 --- a/engine-d/src/main/java/org/onap/holmes/engine/resources/HealthCheck.java +++ b/engine-d/src/main/java/org/onap/holmes/engine/resources/HealthCheck.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 ZTE Corporation. + * Copyright 2017-2022 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,24 +19,17 @@ package org.onap.holmes.engine.resources; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.SwaggerDefinition; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import lombok.extern.slf4j.Slf4j; -import org.jvnet.hk2.annotations.Service; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -@Service +@RestController @SwaggerDefinition -@Path("/healthcheck") +@RequestMapping("/healthcheck") @Api(tags = {"Health Check"}) -@Produces(MediaType.TEXT_PLAIN) -@Slf4j public class HealthCheck { - @GET - @Produces(MediaType.TEXT_PLAIN) + @GetMapping @ApiOperation(value = "Interface for the health check of the engine management module for Holmes") - public boolean healthCheck(){ - return true; + public void healthCheck() { } } diff --git a/engine-d/src/main/java/org/onap/holmes/engine/resources/SwaggerResource.java b/engine-d/src/main/java/org/onap/holmes/engine/resources/SwaggerResource.java index 6743b8e..494df77 100644 --- a/engine-d/src/main/java/org/onap/holmes/engine/resources/SwaggerResource.java +++ b/engine-d/src/main/java/org/onap/holmes/engine/resources/SwaggerResource.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 ZTE Corporation. + * Copyright 2017-2022 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,27 +16,25 @@ package org.onap.holmes.engine.resources; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import jakarta.ws.rs.core.MediaType; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.net.URL; import java.net.URLDecoder; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import lombok.extern.slf4j.Slf4j; -import org.jvnet.hk2.annotations.Service; -@Service -@Path("/swagger.json") -@Produces(MediaType.APPLICATION_JSON) @Slf4j +@RestController +@RequestMapping("/swagger.json") public class SwaggerResource { - @GET - @Produces(MediaType.APPLICATION_JSON) + @GetMapping(produces = MediaType.APPLICATION_JSON) public String getSwaggerJson() { URL url = SwaggerResource.class.getResource("/swagger.json"); String ret = "{}"; @@ -54,7 +52,7 @@ public class SwaggerResource { return ret; } - try(BufferedReader br = new BufferedReader(new FileReader(file))) { + try (BufferedReader br = new BufferedReader(new FileReader(file))) { StringBuffer buffer = new StringBuffer(); String line = " "; while ((line = br.readLine()) != null) { |