Merge "Removed DCAE Related Log"
authortang peng <tang.peng5@zte.com.cn>
Fri, 3 Aug 2018 01:42:14 +0000 (01:42 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 3 Aug 2018 01:42:14 +0000 (01:42 +0000)
engine-d/src/main/java/org/onap/holmes/engine/EngineDActiveApp.java
engine-d/src/main/java/org/onap/holmes/engine/EngineDAppConfig.java
engine-d/src/main/java/org/onap/holmes/engine/dmaap/SubscriberAction.java
engine-d/src/main/java/org/onap/holmes/engine/manager/DroolsEngine.java
engine-d/src/main/java/org/onap/holmes/engine/request/CompileRuleRequest.java
engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java
engine-d/src/main/java/org/onap/holmes/engine/resources/SwaggerResource.java

index 19a9153..7ac4642 100644 (file)
@@ -43,6 +43,7 @@ public class EngineDActiveApp extends IOCApplication<EngineDAppConfig> {
         new EngineDActiveApp().run(args);
     }
 
+    @Override
     public void run(EngineDAppConfig configuration, Environment environment) throws Exception {
         super.run(configuration, environment);
 
index c748f85..71a58f9 100644 (file)
@@ -26,8 +26,6 @@ import org.onap.holmes.common.config.MQConfig;
 @Service
 public class EngineDAppConfig extends Configuration {
 
-    private String defaultName = "Correlation-Rule";
-
     private String apidescription = "Holmes rule management rest API";
 
     @JsonProperty
index b02cbe4..c96b813 100644 (file)
@@ -18,7 +18,6 @@ package org.onap.holmes.engine.dmaap;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
index dcc40fd..bb3795d 100644 (file)
@@ -63,8 +63,12 @@ import org.onap.holmes.engine.wrapper.RuleMgtWrapper;
 @Service\r
 public class DroolsEngine {\r
 \r
-    private final static int ENABLE = 1;\r
+    private static final int ENABLE = 1;\r
+    public static final String UTF_8 = "UTF-8";\r
+    public static final String K_BASE = "KBase";\r
+    private static final String RULES_FILE_NAME = "src/main/resources/rules/rule.drl";\r
     private final Set<String> packageNames = new HashSet<String>();\r
+\r
     @Inject\r
     private RuleMgtWrapper ruleMgtWrapper;\r
 \r
@@ -139,8 +143,8 @@ public class DroolsEngine {
     private void deployRuleFromDB(String ruleContent) throws CorrelationException {\r
         avoidDeployBug();\r
         StringReader reader = new StringReader(ruleContent);\r
-        kfs.write("src/main/resources/rules/rule.drl",\r
-                this.resources.newReaderResource(reader,"UTF-8").setResourceType(ResourceType.DRL));\r
+        kfs.write(RULES_FILE_NAME,\r
+                this.resources.newReaderResource(reader, UTF_8).setResourceType(ResourceType.DRL));\r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
         try {\r
             InternalKieModule internalKieModule = (InternalKieModule)kieBuilder.getKieModule();\r
@@ -155,14 +159,14 @@ public class DroolsEngine {
         throws CorrelationException {\r
         avoidDeployBug();\r
         StringReader reader = new StringReader(rule.getContent());\r
-        kfs.write("src/main/resources/rules/rule.drl",\r
-                this.resources.newReaderResource(reader,"UTF-8").setResourceType(ResourceType.DRL));\r
+        kfs.write(RULES_FILE_NAME,\r
+                this.resources.newReaderResource(reader, UTF_8).setResourceType(ResourceType.DRL));\r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
 \r
         judgeRuleContent(locale, kieBuilder, true);\r
 \r
         InternalKieModule internalKieModule = (InternalKieModule)kieBuilder.getKieModule();;\r
-        String packageName = internalKieModule.getKnowledgePackagesForKieBase("KBase").iterator().next().getName();\r
+        String packageName = internalKieModule.getKnowledgePackagesForKieBase(K_BASE).iterator().next().getName();\r
         try {\r
             kieContainer.updateToVersion(internalKieModule.getReleaseId());\r
         } catch (Exception e) {\r
@@ -191,8 +195,8 @@ public class DroolsEngine {
         throws CorrelationException {\r
         StringReader reader = new StringReader(content);\r
 \r
-        kfs.write("src/main/resources/rules/rule.drl",\r
-                this.resources.newReaderResource(reader,"UTF-8").setResourceType(ResourceType.DRL));\r
+        kfs.write(RULES_FILE_NAME,\r
+                this.resources.newReaderResource(reader, UTF_8).setResourceType(ResourceType.DRL));\r
 \r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
 \r
@@ -216,7 +220,7 @@ public class DroolsEngine {
         if (internalKieModule == null) {\r
             throw new CorrelationException("There are errors in the rule!");\r
         }\r
-        String packageName = internalKieModule.getKnowledgePackagesForKieBase("KBase").iterator().next().getName();\r
+        String packageName = internalKieModule.getKnowledgePackagesForKieBase(K_BASE).iterator().next().getName();\r
 \r
         if (queryAllPackage().contains(packageName) && judgePackageName) {\r
             throw new CorrelationException("The rule " + packageName + " already exists in the drools engine.");\r
@@ -254,7 +258,7 @@ public class DroolsEngine {
 \r
     private KieFileSystem createKieFileSystemWithKProject(KieServices ks) {\r
         KieModuleModel kieModuleModel = ks.newKieModuleModel();\r
-        KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel("KBase")\r
+        KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel(K_BASE)\r
                 .addPackage("rules")\r
                 .setDefault(true)\r
                 .setEqualsBehavior(EqualityBehaviorOption.EQUALITY)\r
@@ -271,10 +275,10 @@ public class DroolsEngine {
     private void avoidDeployBug() {\r
         String tmp = Math.random() + "";\r
         String rule = "package justInOrderToAvoidDeployBug" + tmp.substring(2);\r
-        kfs.write("src/main/resources/rules/rule.drl", rule);\r
+        kfs.write(RULES_FILE_NAME, rule);\r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
         InternalKieModule internalKieModule = (InternalKieModule)kieBuilder.getKieModule();\r
-        String packageName = internalKieModule.getKnowledgePackagesForKieBase("KBase").iterator().next().getName();\r
+        String packageName = internalKieModule.getKnowledgePackagesForKieBase(K_BASE).iterator().next().getName();\r
         kieRepository.addKieModule(internalKieModule);\r
         kieContainer.updateToVersion(internalKieModule.getReleaseId());\r
 \r
index 8af9778..b38ee5f 100644 (file)
@@ -15,7 +15,6 @@
  */
 package org.onap.holmes.engine.request;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
 import javax.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
index b9875da..4088d72 100644 (file)
@@ -20,10 +20,10 @@ import com.codahale.metrics.annotation.Timed;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
 import java.util.Locale;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.DELETE;
@@ -51,7 +51,8 @@ import org.onap.holmes.engine.response.CorrelationRuleResponse;
 @Produces(MediaType.APPLICATION_JSON)
 @Slf4j
 public class EngineResources {
-
+       private Pattern packagePattern = Pattern.compile("package[\\s]+([^;]+)[;\\s]*");
+    
     @Inject
     DroolsEngine droolsEngine;
 
@@ -70,6 +71,10 @@ public class EngineResources {
         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());
+            }
+            
             DmaapService.loopControlNames
                     .put(packageName, deployRuleRequest.getLoopControlName());
             String packageNameRet = droolsEngine.deployRule(deployRuleRequest, locale);
@@ -79,8 +84,8 @@ public class EngineResources {
                 DmaapService.loopControlNames
                         .put(packageNameRet, deployRuleRequest.getLoopControlName());
             }
-            log.info("Rule deployed. Package name: " + packageName);
-            crResponse.setPackageName(packageName);
+            log.info("Rule deployed. Package name: " + packageNameRet);
+            crResponse.setPackageName(packageNameRet);
 
         } catch (CorrelationException correlationException) {
             log.error(correlationException.getMessage(), correlationException);
@@ -131,10 +136,14 @@ public class EngineResources {
         }
         return true;
     }
-
+    
     private String getPackageName(String contents){
-        String ret = contents.trim();
-        ret = ret.substring(7, ret.indexOf("import")).trim();
-        return ret.endsWith(";") ? ret.substring(0, ret.length() - 1) : ret;
+        Matcher m = packagePattern.matcher(contents);
+        
+        if (m.find( )) {
+           return m.group(1);
+        }else {
+           return null;
+        }
     }
 }
index a20b578..6743b8e 100644 (file)
 
 package org.onap.holmes.engine.resources;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.SwaggerDefinition;
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.net.URL;
 import java.net.URLDecoder;
 import javax.ws.rs.GET;
@@ -44,30 +40,29 @@ public class SwaggerResource {
     public String getSwaggerJson() {
         URL url = SwaggerResource.class.getResource("/swagger.json");
         String ret = "{}";
-        BufferedReader br = null;
+        File file = null;
+
         try {
             System.out.println(URLDecoder.decode(url.getPath(), "UTF-8"));
-            File file = new File(URLDecoder.decode(url.getPath(), "UTF-8"));
+            file = new File(URLDecoder.decode(url.getPath(), "UTF-8"));
+        } catch (IOException e) {
+            log.warn("An error occurred while decoding url");
+        }
 
-            br = new BufferedReader(new FileReader(file));
+        if (file == null) {
+            log.warn("Unable to get Swagger Json since API description file could not be read");
+            return ret;
+        }
+
+        try(BufferedReader br = new BufferedReader(new FileReader(file))) {
             StringBuffer buffer = new StringBuffer();
             String line = " ";
             while ((line = br.readLine()) != null) {
                 buffer.append(line);
             }
             ret = buffer.toString();
-        } catch (FileNotFoundException e) {
-            log.warn("Failed to read the API description file.");
         } catch (IOException e) {
             log.warn("An error occurred while reading swagger.json.");
-        } finally {
-            if (br != null) {
-                try {
-                    br.close();
-                } catch (IOException e) {
-                    log.warn("Failed to close the file reader. This may cause memory leak.");
-                }
-            }
         }
         return ret;
     }