Fixed the Start-up Logic
[holmes/rule-management.git] / rulemgt / src / main / java / org / onap / holmes / rulemgt / msb / MsbQuery.java
index ed9b9af..2f440b6 100644 (file)
@@ -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
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <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.
 package org.onap.holmes.rulemgt.msb;
 
 import lombok.extern.slf4j.Slf4j;
-import org.jvnet.hk2.annotations.Service;
+import org.glassfish.hk2.api.ServiceLocator;
+import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;
 import org.onap.holmes.rulemgt.send.RuleAllocation;
 import org.onap.holmes.rulemgt.send.Ip4AddingRule;
 import org.onap.holmes.rulemgt.wrapper.RuleMgtWrapper;
 
-import javax.annotation.PostConstruct;
-import javax.inject.Inject;
 import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
 
 
-@Service
 @Slf4j
 public class MsbQuery {
 
-    @Inject
     private RuleAllocation ruleAllocation;
 
-    @Inject
     private Ip4AddingRule ip4AddingRule;
 
-    @Inject
     private EngineIpList engineIpList;
 
-    @Inject
     private RuleMgtWrapper ruleMgtWrapper;
 
-    private  List<String> timerIpList;
+    private List<String> timerIpList;
 
-    @PostConstruct
-    public void init() {
+    public MsbQuery() {
+        ruleAllocation = new RuleAllocation();
 
-        try{
+        ServiceLocator locator = ServiceLocatorHolder.getLocator();
+        ip4AddingRule = locator.getService(Ip4AddingRule.class);
+        engineIpList = locator.getService(EngineIpList.class);
+        ruleMgtWrapper = locator.getService(RuleMgtWrapper.class);
+    }
+
+    public void startTimer() {
+        try {
             timer();
-        }catch(Exception e){
-            log.error("MSBQuery init timer task failed !" + e.getMessage());
+        } catch (Exception e) {
+            log.error("MSBQuery startTimer timer task failed !" + e.getMessage(), e);
+            try {
+                Thread.sleep(30000);
+            } catch (InterruptedException e1) {
+                Thread.currentThread().interrupt();
+            }
         }
 
+
     }
 
-    public void timer() throws Exception{
+    public void timer() throws Exception {
         Timer timer = new Timer();
         timer.schedule(new TimerTask() {
 
             public void run() {
                 try {
                     timerIpList = engineIpList.getServiceCount();
-                    ip4AddingRule.getIpList(timerIpList);
-                    ruleAllocation.judgeAndAllocateRule(timerIpList);
+                    log.info(String.format("There are %d engine instance(s) running currently.", timerIpList.size()));
 
+                    ip4AddingRule.setIpList(timerIpList);
+                    ruleAllocation.judgeAndAllocateRule(timerIpList);
                 } catch (Exception e) {
-                    log.error("The timing query engine instance failed " ,e);
+                    log.error("The timing query engine instance failed "e);
                 }
             }
 
-        }, 5000, 30000);
+        }, 10000, 30000);
 
     }