You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2016/09/08 07:14:02 UTC

[01/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Repository: incubator-eagle
Updated Branches:
  refs/heads/master 2958bc8b4 -> a0fc87084


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/test/resources/application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/test/resources/application.conf
index 63e649c..f760241 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/test/resources/application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/test/resources/application.conf
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 {
-	"datastore": {
-		"metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl"
-	}
+  "datastore": {
+    "metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl"
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/IMetadataDao.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/IMetadataDao.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/IMetadataDao.java
index 59bd4bf..d245afd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/IMetadataDao.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/IMetadataDao.java
@@ -16,9 +16,6 @@
  */
 package org.apache.eagle.alert.metadata;
 
-import java.io.Closeable;
-import java.util.List;
-
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
@@ -27,6 +24,9 @@ import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.metadata.resource.Models;
 import org.apache.eagle.alert.metadata.resource.OpResult;
 
+import java.io.Closeable;
+import java.util.List;
+
 public interface IMetadataDao extends Closeable {
 
     List<Topology> listTopologies();
@@ -83,7 +83,9 @@ public interface IMetadataDao extends Closeable {
 
     // APIs for test friendly
     OpResult clear();
+
     Models export();
+
     OpResult importModels(Models models);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java
index 1210861..7015a53 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/MetadataUtils.java
@@ -18,11 +18,11 @@
 
 package org.apache.eagle.alert.metadata;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
 import org.apache.eagle.alert.engine.coordinator.PublishmentType;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,7 +34,7 @@ import java.sql.SQLException;
 
 public class MetadataUtils {
 
-    private final static Logger LOG = LoggerFactory.getLogger(MetadataUtils.class);
+    private static final Logger LOG = LoggerFactory.getLogger(MetadataUtils.class);
 
     public static <T> String getKey(T t) {
         if (t instanceof StreamDefinition) {
@@ -54,11 +54,11 @@ public class MetadataUtils {
             Method m = t.getClass().getMethod("getName");
             return (String) m.invoke(t);
         } catch (NoSuchMethodException | SecurityException | InvocationTargetException | IllegalAccessException
-                | IllegalArgumentException e) {
+            | IllegalArgumentException e) {
             LOG.error(" getName not found on given class :" + t.getClass().getName());
         }
         throw new RuntimeException(String.format("no getName() found on target class %s for matching", t.getClass()
-                .getName()));
+            .getName()));
     }
 
     public static Connection getJdbcConnection(Config config) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/InMemMetadataDaoImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/InMemMetadataDaoImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/InMemMetadataDaoImpl.java
index ecd9a6e..dea5b82 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/InMemMetadataDaoImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/InMemMetadataDaoImpl.java
@@ -16,40 +16,29 @@
  */
 package org.apache.eagle.alert.metadata.impl;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.SortedMap;
-import java.util.TreeMap;
-import java.util.function.Predicate;
-
-import com.google.inject.Inject;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
 import org.apache.eagle.alert.coordination.model.internal.Topology;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.Publishment;
-import org.apache.eagle.alert.engine.coordinator.PublishmentType;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
+import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.metadata.IMetadataDao;
 import org.apache.eagle.alert.metadata.MetadataUtils;
 import org.apache.eagle.alert.metadata.resource.Models;
 import org.apache.eagle.alert.metadata.resource.OpResult;
+import com.google.inject.Inject;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.io.IOException;
+import java.util.*;
+import java.util.function.Predicate;
 
 /**
  * In memory service for simple service start. Make all service API as
  * synchronized.
- * 
- * @since Apr 11, 2016
  *
+ * @since Apr 11, 2016
  */
 public class InMemMetadataDaoImpl implements IMetadataDao {
 
@@ -207,10 +196,6 @@ public class InMemMetadataDaoImpl implements IMetadataDao {
         return remove(publishmentTypes, pubType);
     }
 
-    @Override
-    public ScheduleState getScheduleState(String versionId) {
-        return scheduleStates.get(versionId);
-    }
 
     @Override
     public synchronized OpResult addScheduleState(ScheduleState state) {
@@ -239,6 +224,11 @@ public class InMemMetadataDaoImpl implements IMetadataDao {
     }
 
     @Override
+    public ScheduleState getScheduleState(String versionId) {
+        return scheduleStates.get(versionId);
+    }
+
+    @Override
     public List<PolicyAssignment> listAssignments() {
         return assignments;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcDatabaseHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcDatabaseHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcDatabaseHandler.java
index 08d670a..e484e09 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcDatabaseHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcDatabaseHandler.java
@@ -18,12 +18,12 @@
 
 package org.apache.eagle.alert.metadata.impl;
 
+import org.apache.eagle.alert.metadata.MetadataUtils;
+import org.apache.eagle.alert.metadata.resource.OpResult;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.typesafe.config.Config;
-import org.apache.eagle.alert.metadata.MetadataUtils;
-import org.apache.eagle.alert.metadata.resource.OpResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,12 +38,12 @@ public class JdbcDatabaseHandler {
 
     private static final Logger LOG = LoggerFactory.getLogger(JdbcDatabaseHandler.class);
 
-    private final String INSERT_STATEMENT = "INSERT INTO %s VALUES (?, ?)";
-    private final String DELETE_STATEMENT = "DELETE FROM %s WHERE id=?";
-    private final String UPDATE_STATEMENT = "UPDATE %s set value=? WHERE id=?";
-    private final String QUERY_ALL_STATEMENT = "SELECT value FROM %s";
-    private final String QUERY_CONDITION_STATEMENT = "SELECT value FROM %s WHERE id=?";
-    private final String QUERY_ORDERBY_STATEMENT = "SELECT value FROM %s ORDER BY id %s";
+    private static final String INSERT_STATEMENT = "INSERT INTO %s VALUES (?, ?)";
+    private static final String DELETE_STATEMENT = "DELETE FROM %s WHERE id=?";
+    private static final String UPDATE_STATEMENT = "UPDATE %s set value=? WHERE id=?";
+    private static final String QUERY_ALL_STATEMENT = "SELECT value FROM %s";
+    private static final String QUERY_CONDITION_STATEMENT = "SELECT value FROM %s WHERE id=?";
+    private static final String QUERY_ORDERBY_STATEMENT = "SELECT value FROM %s ORDER BY id %s";
 
     private Map<String, String> tblNameMap = new HashMap<>();
 
@@ -98,19 +98,19 @@ public class JdbcDatabaseHandler {
             LOG.info("update {} entities", status);
             connection.commit();
         } catch (SQLException e) {
-            LOG.error(e.getMessage(),e.getCause());
-            if(e.getMessage().toLowerCase().contains("duplicate")){
+            LOG.error(e.getMessage(), e.getCause());
+            if (e.getMessage().toLowerCase().contains("duplicate")) {
                 LOG.info("Detected duplicated entity");
                 try {
                     connection.rollback(savepoint);
                     update(tb, key, value);
                 } catch (SQLException e1) {
                     //e1.printStackTrace();
-                    LOG.warn("Rollback failed",e1);
+                    LOG.warn("Rollback failed", e1);
                 }
             }
         } catch (JsonProcessingException e) {
-            LOG.error("Got JsonProcessingException: {}",e.getMessage(),e.getCause());
+            LOG.error("Got JsonProcessingException: {}", e.getMessage(), e.getCause());
             result.code = OpResult.FAILURE;
             result.message = e.getMessage();
         } finally {
@@ -118,7 +118,7 @@ public class JdbcDatabaseHandler {
                 try {
                     statement.close();
                 } catch (SQLException e) {
-                    LOG.error("Failed to close statement: {}",e.getMessage(),e.getCause());
+                    LOG.error("Failed to close statement: {}", e.getMessage(), e.getCause());
                 }
             }
         }
@@ -157,7 +157,7 @@ public class JdbcDatabaseHandler {
             ResultSet rs = statement.executeQuery(String.format(QUERY_ALL_STATEMENT, tb));
             while (rs.next()) {
                 //String key = rs.getString(1);
-                String json= rs.getString(1);
+                String json = rs.getString(1);
                 try {
                     T obj = mapper.readValue(json, clz);
                     result.add(obj);
@@ -183,7 +183,7 @@ public class JdbcDatabaseHandler {
             ResultSet rs = statement.executeQuery();
             while (rs.next()) {
                 //String key = rs.getString(1);
-                String json= rs.getString(1);
+                String json = rs.getString(1);
                 try {
                     T obj = mapper.readValue(json, clz);
                     result.add(obj);
@@ -219,7 +219,7 @@ public class JdbcDatabaseHandler {
             ResultSet rs = statement.executeQuery();
             while (rs.next()) {
                 //String key = rs.getString(1);
-                String json= rs.getString(1);
+                String json = rs.getString(1);
                 try {
                     T obj = mapper.readValue(json, clz);
                     result.add(obj);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcMetadataDaoImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcMetadataDaoImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcMetadataDaoImpl.java
index 639edd6..bba2d1e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcMetadataDaoImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcMetadataDaoImpl.java
@@ -16,27 +16,22 @@
  */
 package org.apache.eagle.alert.metadata.impl;
 
-import java.io.IOException;
-import java.util.List;
-
-import com.google.inject.Inject;
-import com.typesafe.config.Config;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
 import org.apache.eagle.alert.coordination.model.internal.Topology;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.Publishment;
-import org.apache.eagle.alert.engine.coordinator.PublishmentType;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
-import org.apache.eagle.alert.metadata.resource.OpResult;
+import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.metadata.IMetadataDao;
 import org.apache.eagle.alert.metadata.resource.Models;
+import org.apache.eagle.alert.metadata.resource.OpResult;
+import com.google.inject.Inject;
+import com.typesafe.config.Config;
+
+import java.io.IOException;
+import java.util.List;
 
 /**
- * @since May 26, 2016
- *
+ * @since May 26, 2016.
  */
 public class JdbcMetadataDaoImpl implements IMetadataDao {
     private JdbcDatabaseHandler handler;
@@ -50,39 +45,48 @@ public class JdbcMetadataDaoImpl implements IMetadataDao {
     public List<Topology> listTopologies() {
         return handler.list(Topology.class);
     }
+
     @Override
     public List<StreamingCluster> listClusters() {
         return handler.list(StreamingCluster.class);
     }
+
     @Override
     public List<StreamDefinition> listStreams() {
         return handler.list(StreamDefinition.class);
     }
+
     @Override
     public List<Kafka2TupleMetadata> listDataSources() {
         return handler.list(Kafka2TupleMetadata.class);
     }
+
     @Override
     public List<PolicyDefinition> listPolicies() {
         return handler.list(PolicyDefinition.class);
     }
+
     @Override
     public List<Publishment> listPublishment() {
         return handler.list(Publishment.class);
     }
+
     @Override
     public ScheduleState getScheduleState(String versionId) {
         return handler.listWithFilter(versionId, ScheduleState.class);
         //return null;
     }
+
     @Override
     public ScheduleState getScheduleState() {
         return handler.listTop(ScheduleState.class, "DESC");
     }
+
     @Override
     public List<PolicyAssignment> listAssignments() {
         return handler.list(PolicyAssignment.class);
     }
+
     @Override
     public List<PublishmentType> listPublishmentType() {
         return handler.list(PublishmentType.class);
@@ -92,34 +96,42 @@ public class JdbcMetadataDaoImpl implements IMetadataDao {
     public OpResult addTopology(Topology t) {
         return handler.addOrReplace(Topology.class.getSimpleName(), t);
     }
+
     @Override
     public OpResult addCluster(StreamingCluster cluster) {
         return handler.addOrReplace(StreamingCluster.class.getSimpleName(), cluster);
     }
+
     @Override
     public OpResult createStream(StreamDefinition stream) {
         return handler.addOrReplace(StreamDefinition.class.getSimpleName(), stream);
     }
+
     @Override
     public OpResult addDataSource(Kafka2TupleMetadata dataSource) {
         return handler.addOrReplace(Kafka2TupleMetadata.class.getSimpleName(), dataSource);
     }
+
     @Override
     public OpResult addPolicy(PolicyDefinition policy) {
         return handler.addOrReplace(PolicyDefinition.class.getSimpleName(), policy);
     }
+
     @Override
     public OpResult addPublishment(Publishment publishment) {
         return handler.addOrReplace(Publishment.class.getSimpleName(), publishment);
     }
+
     @Override
     public OpResult addScheduleState(ScheduleState state) {
         return handler.addOrReplace(ScheduleState.class.getSimpleName(), state);
     }
+
     @Override
     public OpResult addAssignment(PolicyAssignment assignment) {
         return handler.addOrReplace(PolicyAssignment.class.getSimpleName(), assignment);
     }
+
     @Override
     public OpResult addPublishmentType(PublishmentType publishmentType) {
         return handler.addOrReplace(PublishmentType.class.getSimpleName(), publishmentType);
@@ -129,26 +141,32 @@ public class JdbcMetadataDaoImpl implements IMetadataDao {
     public OpResult removeTopology(String topologyName) {
         return handler.remove(Topology.class.getSimpleName(), topologyName);
     }
+
     @Override
     public OpResult removeCluster(String clusterId) {
         return handler.remove(StreamingCluster.class.getSimpleName(), clusterId);
     }
+
     @Override
     public OpResult removeStream(String streamId) {
         return handler.remove(StreamDefinition.class.getSimpleName(), streamId);
     }
+
     @Override
     public OpResult removeDataSource(String datasourceId) {
         return handler.remove(Kafka2TupleMetadata.class.getSimpleName(), datasourceId);
     }
+
     @Override
     public OpResult removePolicy(String policyId) {
         return handler.remove(PolicyDefinition.class.getSimpleName(), policyId);
     }
+
     @Override
     public OpResult removePublishment(String pubId) {
         return handler.remove(Publishment.class.getSimpleName(), pubId);
     }
+
     @Override
     public OpResult removePublishmentType(String pubType) {
         return handler.remove(PublishmentType.class.getSimpleName(), pubType);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcSchemaManager.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcSchemaManager.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcSchemaManager.java
index d9df055..274164d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcSchemaManager.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/JdbcSchemaManager.java
@@ -18,16 +18,18 @@
 
 package org.apache.eagle.alert.metadata.impl;
 
-import com.typesafe.config.Config;
-import org.apache.ddlutils.Platform;
-import org.apache.ddlutils.PlatformFactory;
-import org.apache.ddlutils.model.*;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
 import org.apache.eagle.alert.coordination.model.internal.Topology;
 import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.metadata.MetadataUtils;
+import com.typesafe.config.Config;
+import org.apache.ddlutils.Platform;
+import org.apache.ddlutils.PlatformFactory;
+import org.apache.ddlutils.model.Column;
+import org.apache.ddlutils.model.Database;
+import org.apache.ddlutils.model.Table;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,7 +42,7 @@ import java.util.Map;
 
 public class JdbcSchemaManager {
 
-    private final static Logger LOG = LoggerFactory.getLogger(JdbcSchemaManager.class);
+    private static final Logger LOG = LoggerFactory.getLogger(JdbcSchemaManager.class);
     private Database database;
     private Platform platform;
 
@@ -48,9 +50,10 @@ public class JdbcSchemaManager {
 
     public static Map<String, String> tblNameMap = new HashMap<>();
 
-    private JdbcSchemaManager(){}
+    private JdbcSchemaManager() {
+    }
 
-    private static void registerTableName(String clzName, String tblName){
+    private static void registerTableName(String clzName, String tblName) {
         tblNameMap.put(clzName, tblName);
     }
 
@@ -66,8 +69,8 @@ public class JdbcSchemaManager {
         registerTableName(Topology.class.getSimpleName(), "topology");
     }
 
-    public static JdbcSchemaManager getInstance(){
-        if(instance == null) {
+    public static JdbcSchemaManager getInstance() {
+        if (instance == null) {
             instance = new JdbcSchemaManager();
         }
         return instance;
@@ -84,28 +87,28 @@ public class JdbcSchemaManager {
             LOG.info("Loaded " + database);
 
             Database _database = identifyNewTables();
-            if(_database.getTableCount() > 0) {
+            if (_database.getTableCount() > 0) {
                 LOG.info("Creating {} new tables (totally {} tables)", _database.getTableCount(), database.getTableCount());
                 this.platform.createTables(connection, _database, false, true);
-                LOG.info("Created {} new tables: ",_database.getTableCount(), _database.getTables());
+                LOG.info("Created {} new tables: ", _database.getTableCount(), _database.getTables());
             } else {
                 LOG.debug("All the {} tables have already been created, no new tables", database.getTableCount());
             }
         } catch (Exception e) {
-            LOG.error(e.getMessage(),e);
+            LOG.error(e.getMessage(), e);
             throw new IllegalStateException(e);
         } finally {
-            if (connection != null){
+            if (connection != null) {
                 try {
                     connection.close();
                 } catch (SQLException e) {
-                    LOG.warn(e.getMessage(),e);
+                    LOG.warn(e.getMessage(), e);
                 }
             }
         }
     }
 
-    private Database identifyNewTables(){
+    private Database identifyNewTables() {
         Database _database = new Database();
         _database.setName(database.getName());
         Collection<String> tableNames = tblNameMap.values();
@@ -127,7 +130,7 @@ public class JdbcSchemaManager {
         this.platform.shutdownDatabase();
     }
 
-    private Table createTable(String tableName){
+    private Table createTable(String tableName) {
         Table table = new Table();
         table.setName(tableName);
         buildTable(table);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MetadataDaoFactory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MetadataDaoFactory.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MetadataDaoFactory.java
index 0b91277..b03fc61 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MetadataDaoFactory.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MetadataDaoFactory.java
@@ -16,18 +16,16 @@
  */
 package org.apache.eagle.alert.metadata.impl;
 
-import java.lang.reflect.Constructor;
-
 import org.apache.eagle.alert.metadata.IMetadataDao;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.lang.reflect.Constructor;
 
 /**
- * @since Apr 12, 2016
- *
+ * @since Apr 12, 2016.
  */
 public class MetadataDaoFactory {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java
index d68dc6a..2f03bf9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/impl/MongoMetadataDaoImpl.java
@@ -16,6 +16,16 @@
  */
 package org.apache.eagle.alert.metadata.impl;
 
+import org.apache.eagle.alert.coordination.model.*;
+import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
+import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
+import org.apache.eagle.alert.coordination.model.internal.ScheduleStateBase;
+import org.apache.eagle.alert.coordination.model.internal.Topology;
+import org.apache.eagle.alert.engine.coordinator.*;
+import org.apache.eagle.alert.metadata.IMetadataDao;
+import org.apache.eagle.alert.metadata.MetadataUtils;
+import org.apache.eagle.alert.metadata.resource.Models;
+import org.apache.eagle.alert.metadata.resource.OpResult;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.inject.Inject;
@@ -30,16 +40,6 @@ import com.mongodb.client.model.UpdateOptions;
 import com.mongodb.client.result.DeleteResult;
 import com.mongodb.client.result.UpdateResult;
 import com.typesafe.config.Config;
-import org.apache.eagle.alert.coordination.model.*;
-import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
-import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
-import org.apache.eagle.alert.coordination.model.internal.ScheduleStateBase;
-import org.apache.eagle.alert.coordination.model.internal.Topology;
-import org.apache.eagle.alert.engine.coordinator.*;
-import org.apache.eagle.alert.metadata.IMetadataDao;
-import org.apache.eagle.alert.metadata.MetadataUtils;
-import org.apache.eagle.alert.metadata.resource.Models;
-import org.apache.eagle.alert.metadata.resource.OpResult;
 import org.bson.BsonDocument;
 import org.bson.BsonInt32;
 import org.bson.BsonString;
@@ -54,14 +54,14 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * @since Apr 11, 2016
- *
+ * @since Apr 11, 2016.
  */
 public class MongoMetadataDaoImpl implements IMetadataDao {
 
     private static final String DB_NAME = "ump_alert_metadata";
     private static final Logger LOG = LoggerFactory.getLogger(MongoMetadataDaoImpl.class);
     private static final ObjectMapper mapper = new ObjectMapper();
+
     static {
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
     }
@@ -135,18 +135,18 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
 
         spoutSpecs = db.getCollection("spoutSpecs");
         {
-            IndexOptions io_internal = new IndexOptions().background(true).unique(true).name("topologyIdIndex");
-            BsonDocument doc_internal = new BsonDocument();
-            doc_internal.append("topologyId", new BsonInt32(1));
-            spoutSpecs.createIndex(doc_internal, io_internal);
+            IndexOptions ioInternal = new IndexOptions().background(true).unique(true).name("topologyIdIndex");
+            BsonDocument docInternal = new BsonDocument();
+            docInternal.append("topologyId", new BsonInt32(1));
+            spoutSpecs.createIndex(docInternal, ioInternal);
         }
 
         alertSpecs = db.getCollection("alertSpecs");
         {
-            IndexOptions io_internal = new IndexOptions().background(true).unique(true).name("topologyNameIndex");
-            BsonDocument doc_internal = new BsonDocument();
-            doc_internal.append("topologyName", new BsonInt32(1));
-            alertSpecs.createIndex(doc_internal, io_internal);
+            IndexOptions ioInternal = new IndexOptions().background(true).unique(true).name("topologyNameIndex");
+            BsonDocument docInternal = new BsonDocument();
+            docInternal.append("topologyName", new BsonInt32(1));
+            alertSpecs.createIndex(docInternal, ioInternal);
         }
 
         groupSpecs = db.getCollection("groupSpecs");
@@ -173,22 +173,6 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
         return list(cluster, StreamingCluster.class);
     }
 
-    private <T> List<T> list(MongoCollection<Document> collection, Class<T> clz) {
-        List<T> result = new LinkedList<T>();
-        collection.find().map(new Function<Document, T>() {
-            @Override
-            public T apply(Document t) {
-                String json = t.toJson();
-                try {
-                    return mapper.readValue(json, clz);
-                } catch (IOException e) {
-                    LOG.error("deserialize config item failed!", e);
-                }
-                return null;
-            }
-        }).into(result);
-        return result;
-    }
 
     private <T> OpResult addOrReplace(MongoCollection<Document> collection, T t) {
         BsonDocument filter = new BsonDocument();
@@ -350,7 +334,7 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
             }
         }).first();
 
-        if (state != null){
+        if (state != null) {
             // based on version, to add content from collections of spoutSpecs/alertSpecs/etc..
             state = addDetailForScheduleState(state, versionId);
         }
@@ -358,10 +342,9 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
         return state;
     }
 
-    /***
+    /**
      * get the basic ScheduleState, and then based on the version to get all sub-part(spoutSpecs/alertSpecs/etc)
      * to form a completed ScheduleState.
-     *
      * @return the latest ScheduleState
      */
     @Override
@@ -381,7 +364,7 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
             }
         }).first();
 
-        if (state != null){
+        if (state != null) {
             String version = state.getVersion();
             // based on version, to add content from collections of spoutSpecs/alertSpecs/etc..
             state = addDetailForScheduleState(state, version);
@@ -390,55 +373,55 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
         return state;
     }
 
-    private ScheduleState addDetailForScheduleState(ScheduleState state, String version){
+    private ScheduleState addDetailForScheduleState(ScheduleState state, String version) {
         Map<String, SpoutSpec> spoutMaps = maps(spoutSpecs, SpoutSpec.class, version);
-        if (spoutMaps.size() !=0){
+        if (spoutMaps.size() != 0) {
             state.setSpoutSpecs(spoutMaps);
         }
 
         Map<String, AlertBoltSpec> alertMaps = maps(alertSpecs, AlertBoltSpec.class, version);
-        if (alertMaps.size() !=0){
+        if (alertMaps.size() != 0) {
             state.setAlertSpecs(alertMaps);
         }
 
         Map<String, RouterSpec> groupMaps = maps(groupSpecs, RouterSpec.class, version);
-        if (groupMaps.size() !=0){
+        if (groupMaps.size() != 0) {
             state.setGroupSpecs(groupMaps);
         }
 
         Map<String, PublishSpec> publishMaps = maps(publishSpecs, PublishSpec.class, version);
-        if (publishMaps.size() !=0){
+        if (publishMaps.size() != 0) {
             state.setPublishSpecs(publishMaps);
         }
 
         List<VersionedPolicyDefinition> policyLists = list(policySnapshots, VersionedPolicyDefinition.class, version);
-        if (policyLists.size() !=0){
+        if (policyLists.size() != 0) {
             state.setPolicySnapshots(policyLists);
         }
 
         List<VersionedStreamDefinition> streamLists = list(streamSnapshots, VersionedStreamDefinition.class, version);
-        if (streamLists.size() !=0){
+        if (streamLists.size() != 0) {
             state.setStreamSnapshots(streamLists);
         }
 
         List<MonitoredStream> monitorLists = list(monitoredStreams, MonitoredStream.class, version);
-        if (monitorLists.size() !=0){
+        if (monitorLists.size() != 0) {
             state.setMonitoredStreams(monitorLists);
         }
 
         List<PolicyAssignment> assignmentLists = list(assignments, PolicyAssignment.class, version);
-        if (assignmentLists.size() !=0){
+        if (assignmentLists.size() != 0) {
             state.setAssignments(assignmentLists);
         }
         return state;
     }
 
-    private <T> Map<String, T> maps(MongoCollection<Document> collection, Class<T> clz, String version){
+    private <T> Map<String, T> maps(MongoCollection<Document> collection, Class<T> clz, String version) {
         BsonDocument doc = new BsonDocument();
         doc.append("version", new BsonString(version));
 
         Map<String, T> maps = new HashMap<String, T>();
-        String mapKey = (clz == SpoutSpec.class)? "topologyId" : "topologyName";
+        String mapKey = (clz == SpoutSpec.class) ? "topologyId" : "topologyName";
         collection.find(doc).forEach(new Block<Document>() {
             @Override
             public void apply(Document document) {
@@ -454,7 +437,7 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
         return maps;
     }
 
-    private <T> List<T> list(MongoCollection<Document> collection, Class<T> clz, String version){
+    private <T> List<T> list(MongoCollection<Document> collection, Class<T> clz, String version) {
         BsonDocument doc = new BsonDocument();
         doc.append("version", new BsonString(version));
 
@@ -474,7 +457,24 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
         return result;
     }
 
-    /***
+    private <T> List<T> list(MongoCollection<Document> collection, Class<T> clz) {
+        List<T> result = new LinkedList<T>();
+        collection.find().map(new Function<Document, T>() {
+            @Override
+            public T apply(Document t) {
+                String json = t.toJson();
+                try {
+                    return mapper.readValue(json, clz);
+                } catch (IOException e) {
+                    LOG.error("deserialize config item failed!", e);
+                }
+                return null;
+            }
+        }).into(result);
+        return result;
+    }
+
+    /**
      * write ScheduleState to several collections. basic info writes to ScheduleState, other writes to collections
      * named by spoutSpecs/alertSpecs/etc.
      *
@@ -485,45 +485,45 @@ public class MongoMetadataDaoImpl implements IMetadataDao {
     public OpResult addScheduleState(ScheduleState state) {
         OpResult result = new OpResult();
         try {
-            for (String key: state.getSpoutSpecs().keySet()){
+            for (String key : state.getSpoutSpecs().keySet()) {
                 SpoutSpec spoutSpec = state.getSpoutSpecs().get(key);
                 addOne(spoutSpecs, spoutSpec);
             }
 
-            for (String key: state.getAlertSpecs().keySet()){
+            for (String key : state.getAlertSpecs().keySet()) {
                 AlertBoltSpec alertBoltSpec = state.getAlertSpecs().get(key);
                 addOne(alertSpecs, alertBoltSpec);
             }
 
-            for (String key: state.getGroupSpecs().keySet()){
+            for (String key : state.getGroupSpecs().keySet()) {
                 RouterSpec groupSpec = state.getGroupSpecs().get(key);
                 addOne(groupSpecs, groupSpec);
             }
 
-            for (String key: state.getPublishSpecs().keySet()){
+            for (String key : state.getPublishSpecs().keySet()) {
                 PublishSpec publishSpec = state.getPublishSpecs().get(key);
                 addOne(publishSpecs, publishSpec);
             }
 
-            for (VersionedPolicyDefinition policySnapshot: state.getPolicySnapshots()){
+            for (VersionedPolicyDefinition policySnapshot : state.getPolicySnapshots()) {
                 addOne(policySnapshots, policySnapshot);
             }
 
-            for (VersionedStreamDefinition streamSnapshot: state.getStreamSnapshots()){
+            for (VersionedStreamDefinition streamSnapshot : state.getStreamSnapshots()) {
                 addOne(streamSnapshots, streamSnapshot);
             }
 
-            for (MonitoredStream monitoredStream: state.getMonitoredStreams()){
+            for (MonitoredStream monitoredStream : state.getMonitoredStreams()) {
                 addOne(monitoredStreams, monitoredStream);
             }
 
-            for (PolicyAssignment assignment: state.getAssignments()){
+            for (PolicyAssignment assignment : state.getAssignments()) {
                 addOne(assignments, assignment);
             }
 
             ScheduleStateBase stateBase = new ScheduleStateBase(
-                    state.getVersion(), state.getGenerateTime(), state.getCode(),
-                    state.getMessage(), state.getScheduleTimeMillis());
+                state.getVersion(), state.getGenerateTime(), state.getCode(),
+                state.getMessage(), state.getScheduleTimeMillis());
 
             addOne(scheduleStates, stateBase);
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/Models.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/Models.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/Models.java
index 6bb38f1..2463e5b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/Models.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/Models.java
@@ -16,11 +16,6 @@
  */
 package org.apache.eagle.alert.metadata.resource;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
@@ -30,11 +25,15 @@ import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
 /**
  * This models used for metadata export/import to easy of test.
- * 
- * @since May 23, 2016
  *
+ * @since May 23, 2016
  */
 public class Models {
     public List<StreamingCluster> clusters = new ArrayList<StreamingCluster>();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/OpResult.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/OpResult.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/OpResult.java
index 3115439..a43b064 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/OpResult.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/main/java/org/apache/eagle/alert/metadata/resource/OpResult.java
@@ -17,8 +17,7 @@
 package org.apache.eagle.alert.metadata.resource;
 
 /**
- * @since Apr 11, 2016
- *
+ * @since Apr 11, 2016.
  */
 public class OpResult {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/InMemoryTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/InMemoryTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/InMemoryTest.java
index 645fc2b..840f4a7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/InMemoryTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/InMemoryTest.java
@@ -16,19 +16,17 @@
  */
 package org.apache.eagle.service.alert.resource.impl;
 
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
+import org.apache.eagle.alert.metadata.IMetadataDao;
 import org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl;
 import org.apache.eagle.alert.metadata.impl.MetadataDaoFactory;
-import org.apache.eagle.alert.metadata.IMetadataDao;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.ConfigFactory;
-
 /**
  * @since May 1, 2016
- *
  */
 public class InMemoryTest {
 
@@ -36,11 +34,11 @@ public class InMemoryTest {
 
     @Test
     public void test_AddPolicy() {
-        
+
         LoggerFactory.getLogger(InMemoryTest.class);
-        
+
         MetadataDaoFactory.getInstance().getMetadataDao();
-        
+
         PolicyDefinition pd = new PolicyDefinition();
         pd.setName("pd1");
         dao.addPolicy(pd);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/JdbcImplTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/JdbcImplTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/JdbcImplTest.java
index 1a78109..8812f87 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/JdbcImplTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/JdbcImplTest.java
@@ -18,10 +18,8 @@
 
 package org.apache.eagle.service.alert.resource.impl;
 
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
@@ -33,16 +31,13 @@ import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
 import org.apache.eagle.alert.metadata.IMetadataDao;
 import org.apache.eagle.alert.metadata.impl.JdbcMetadataDaoImpl;
 import org.apache.eagle.alert.metadata.resource.OpResult;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
 
 public class JdbcImplTest {
     private static Logger LOG = LoggerFactory.getLogger(JdbcImplTest.class);
@@ -69,7 +64,8 @@ public class JdbcImplTest {
 
     private String TOPO_NAME = "topoName";
 
-    @Ignore @Test
+    @Ignore
+    @Test
     public void test_apis() {
         // publishment
         {
@@ -155,7 +151,8 @@ public class JdbcImplTest {
         Assert.assertEquals(state.getVersion(), versionId);
     }
 
-    @Ignore @Test
+    @Ignore
+    @Test
     public void test_readCurrentState() {
         test_addstate();
         ScheduleState state = dao.getScheduleState();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/MongoImplTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/MongoImplTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/MongoImplTest.java
index 95f2682..63871c3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/MongoImplTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/java/org/apache/eagle/service/alert/resource/impl/MongoImplTest.java
@@ -46,7 +46,6 @@ import java.util.*;
 
 /**
  * @since May 1, 2016
- *
  */
 public class MongoImplTest {
     private static Logger LOG = LoggerFactory.getLogger(MongoImplTest.class);
@@ -59,7 +58,7 @@ public class MongoImplTest {
         try {
             MongodStarter starter = MongodStarter.getDefaultInstance();
             mongodExe = starter.prepare(new MongodConfigBuilder().version(Version.V3_2_1)
-                    .net(new Net(27017, Network.localhostIsIPv6())).build());
+                .net(new Net(27017, Network.localhostIsIPv6())).build());
             mongod = mongodExe.start();
         } catch (Exception e) {
             LOG.error("start embed mongod failed, assume some external mongo running. continue run test!", e);
@@ -82,16 +81,14 @@ public class MongoImplTest {
         if (mongod != null) {
             try {
                 mongod.stop();
-            }
-            catch (IllegalStateException e) {
+            } catch (IllegalStateException e) {
                 // catch this exception for the unstable stopping mongodb
                 // reason: the exception is usually thrown out with below message format when stop() returns null value,
                 //         but actually this should have been captured in ProcessControl.stopOrDestroyProcess() by destroying
                 //         the process ultimately
                 if (e.getMessage() != null && e.getMessage().matches("^Couldn't kill.*process!.*")) {
                     // if matches, do nothing, just ignore the exception
-                }
-                else {
+                } else {
                     LOG.warn(String.format("Ignored error for stopping mongod process, see stack trace: %s", ExceptionUtils.getStackTrace(e)));
                 }
             }
@@ -193,7 +190,7 @@ public class MongoImplTest {
             state.setCode(201);
             result = dao.addScheduleState(state);
             Assert.assertEquals(200, result.code);
-            
+
             ScheduleState getState = dao.getScheduleState();
             Assert.assertEquals(201, getState.getCode());
         }
@@ -274,10 +271,10 @@ public class MongoImplTest {
 
         // Assignments
         Collection<PolicyAssignment> assignments = new ArrayList<>();
-        assignments.add(new PolicyAssignment("syslog_regex", "SG[syslog_stream-]"+timestamp));
+        assignments.add(new PolicyAssignment("syslog_regex", "SG[syslog_stream-]" + timestamp));
 
         ScheduleState state = new ScheduleState(version, spoutSpecsMap, groupSpecsMap, alertSpecsMap, pubMap,
-                assignments, monitoredStreams, policySnapshots, streams);
+            assignments, monitoredStreams, policySnapshots, streams);
 
         OpResult result = dao.addScheduleState(state);
         Assert.assertEquals(200, result.code);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf
index f9b2597..fbb99de 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application-mongo.conf
@@ -14,8 +14,8 @@
 # limitations under the License.
 
 {
-	"datastore": {
-        "metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl",
-		"connection": "mongodb://localhost:27017"
-	}
+  "datastore": {
+    "metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl",
+    "connection": "mongodb://localhost:27017"
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application.conf
index 7213a9f..cdb0b25 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata/src/test/resources/application.conf
@@ -15,10 +15,10 @@
 
 
 {
-	"datastore": {
-		"metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl",
-		"connection": "localhost:27017",
-		"properties" : {
-		}
-	}
+  "datastore": {
+    "metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl",
+    "connection": "localhost:27017",
+    "properties": {
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/pom.xml b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/pom.xml
index 1d4b33d..5694a7b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/pom.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/pom.xml
@@ -11,20 +11,20 @@
 	License for the specific language governing permissions and ~ limitations 
 	under the License. -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>org.apache.eagle</groupId>
-		<artifactId>eagle-alert</artifactId>
-		<version>0.5.0-incubating-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
-	</parent>
-	<artifactId>alert-metadata-parent</artifactId>
-	<packaging>pom</packaging>
+    <parent>
+        <groupId>org.apache.eagle</groupId>
+        <artifactId>eagle-alert</artifactId>
+        <version>0.5.0-incubating-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <artifactId>alert-metadata-parent</artifactId>
+    <packaging>pom</packaging>
 
-	<modules>
-		<module>alert-metadata</module>
-		<module>alert-metadata-service</module>
-	</modules>
+    <modules>
+        <module>alert-metadata</module>
+        <module>alert-metadata-service</module>
+    </modules>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-service/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/pom.xml b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/pom.xml
index 18c054e..7764ccf 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/pom.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/pom.xml
@@ -11,196 +11,196 @@
 	License for the specific language governing permissions and ~ limitations 
 	under the License. -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>eagle-alert</artifactId>
-		<groupId>org.apache.eagle</groupId>
-		<version>0.5.0-incubating-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>eagle-alert</artifactId>
+        <groupId>org.apache.eagle</groupId>
+        <version>0.5.0-incubating-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-	<artifactId>alert-service</artifactId>
-	<description>Alert Service: Coordinator + Metadata</description>
-	<packaging>jar</packaging>
+    <artifactId>alert-service</artifactId>
+    <description>Alert Service: Coordinator + Metadata</description>
+    <packaging>jar</packaging>
 
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.eagle</groupId>
-			<artifactId>alert-coordinator</artifactId>
-			<version>${project.version}</version>
-			<exclusions>
-				<exclusion>
-					<groupId>org.slf4j</groupId>
-					<artifactId>slf4j-log4j12</artifactId>
-				</exclusion>
-				<exclusion>
-					<artifactId>storm-core</artifactId>
-					<groupId>org.apache.storm</groupId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.eagle</groupId>
-			<artifactId>alert-metadata-service</artifactId>
-			<version>${project.version}</version>
-			<exclusions>
-				<exclusion>
-					<groupId>org.slf4j</groupId>
-					<artifactId>slf4j-log4j12</artifactId>
-				</exclusion>
-				<exclusion>
-					<artifactId>storm-core</artifactId>
-					<groupId>org.apache.storm</groupId>
-				</exclusion>
-			</exclusions>
-		</dependency>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.eagle</groupId>
+            <artifactId>alert-coordinator</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>storm-core</artifactId>
+                    <groupId>org.apache.storm</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.eagle</groupId>
+            <artifactId>alert-metadata-service</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>storm-core</artifactId>
+                    <groupId>org.apache.storm</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
 
-		<dependency>
-			<groupId>com.sun.jersey</groupId>
-			<artifactId>jersey-json</artifactId>
-		</dependency>
-		<!-- dropwizard -->
-		<dependency>
-			<groupId>io.dropwizard</groupId>
-			<artifactId>dropwizard-core</artifactId>
-			<exclusions>
-				<exclusion>
-					<groupId>org.slf4j</groupId>
-					<artifactId>slf4j-log4j12</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>io.dropwizard</groupId>
-			<artifactId>dropwizard-jersey</artifactId>
-			<exclusions>
-				<exclusion>
-					<groupId>org.slf4j</groupId>
-					<artifactId>slf4j-log4j12</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>io.swagger</groupId>
-			<artifactId>swagger-jersey-jaxrs</artifactId>
-			<scope>compile</scope>
-			<exclusions>
-				<exclusion>
-					<groupId>com.sun.jersey</groupId>
-					<artifactId>*</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-	</dependencies>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.eclipse.jetty</groupId>
-				<artifactId>jetty-maven-plugin</artifactId>
-				<version>9.2.11.v20150529</version>
-				<configuration>
-					<scanIntervalSeconds>5</scanIntervalSeconds>
-				</configuration>
-			</plugin>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-json</artifactId>
+        </dependency>
+        <!-- dropwizard -->
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-core</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-jersey</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-jersey-jaxrs</artifactId>
+            <scope>compile</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.eclipse.jetty</groupId>
+                <artifactId>jetty-maven-plugin</artifactId>
+                <version>9.2.11.v20150529</version>
+                <configuration>
+                    <scanIntervalSeconds>5</scanIntervalSeconds>
+                </configuration>
+            </plugin>
 
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-shade-plugin</artifactId>
-				<version>1.4</version>
-				<configuration>
-					<filters>
-						<filter>
-							<artifact>*:*</artifact>
-							<excludes>
-								<exclude>META-INF/*.SF</exclude>
-								<exclude>META-INF/*.DSA</exclude>
-								<exclude>META-INF/*.RSA</exclude>
-							</excludes>
-						</filter>
-					</filters>
-				</configuration>
-				<executions>
-					<execution>
-						<phase>package</phase>
-						<goals>
-							<goal>shade</goal>
-						</goals>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>1.4</version>
+                <configuration>
+                    <filters>
+                        <filter>
+                            <artifact>*:*</artifact>
+                            <excludes>
+                                <exclude>META-INF/*.SF</exclude>
+                                <exclude>META-INF/*.DSA</exclude>
+                                <exclude>META-INF/*.RSA</exclude>
+                            </excludes>
+                        </filter>
+                    </filters>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
 
-						<configuration>
-							<shadedArtifactAttached>true</shadedArtifactAttached>
-							<shadedClassifierName>shaded</shadedClassifierName>
-							<transformers>
-								<transformer
-									implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-								<transformer
-									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-									<mainClass>org.apache.eagle.service.app.ServiceApp</mainClass>
-								</transformer>
-							</transformers>
+                        <configuration>
+                            <shadedArtifactAttached>true</shadedArtifactAttached>
+                            <shadedClassifierName>shaded</shadedClassifierName>
+                            <transformers>
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>org.apache.eagle.service.app.ServiceApp</mainClass>
+                                </transformer>
+                            </transformers>
 
-							<artifactSet>
-								<excludes>
-									<exclude>org.slf4j:slf4j-log4j12</exclude>
-								</excludes>
-							</artifactSet>
+                            <artifactSet>
+                                <excludes>
+                                    <exclude>org.slf4j:slf4j-log4j12</exclude>
+                                </excludes>
+                            </artifactSet>
 
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
 
-			<!-- change project to war, and use maven-war-plugin to build the war -->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-war-plugin</artifactId>
-				<version>2.6</version>
-				<executions>
-					<execution>
-						<phase>package</phase>
-						<goals>
-							<goal>war</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
+            <!-- change project to war, and use maven-war-plugin to build the war -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>war</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
 
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>build-helper-maven-plugin</artifactId>
-				<version>1.12</version>
-				<executions>
-					<execution>
-						<id>attach-artifacts</id>
-						<phase>package</phase>
-						<goals>
-							<goal>attach-artifact</goal>
-						</goals>
-						<configuration>
-							<artifacts>
-								<artifact>
-									<file>target/alert-service-${project.version}.war</file>
-									<type>war</type>
-								</artifact>
-							</artifacts>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.12</version>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>target/alert-service-${project.version}.war</file>
+                                    <type>war</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
 
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-source-plugin</artifactId>
-				<version>2.1.2</version>
-				<executions>
-					<execution>
-						<id>attach-sources</id>
-						<phase>verify</phase>
-						<goals>
-							<goal>jar-no-fork</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1.2</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/AlertDropWizardConfiguration.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/AlertDropWizardConfiguration.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/AlertDropWizardConfiguration.java
index adb55c5..c44a950 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/AlertDropWizardConfiguration.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/AlertDropWizardConfiguration.java
@@ -21,8 +21,7 @@ import io.dropwizard.Configuration;
 import javax.validation.Valid;
 
 /**
- * @since Jun 27, 2016
- *
+ * @since Jun 27, 2016.
  */
 public class AlertDropWizardConfiguration extends Configuration {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/ServiceApp.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/ServiceApp.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/ServiceApp.java
index 8e6fa88..0f8b57e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/ServiceApp.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/java/org/apache/eagle/service/app/ServiceApp.java
@@ -16,28 +16,24 @@
  */
 package org.apache.eagle.service.app;
 
+import org.apache.eagle.alert.coordinator.CoordinatorListener;
+import org.apache.eagle.alert.coordinator.resource.CoordinatorResource;
+import org.apache.eagle.alert.resource.SimpleCORSFiler;
+import org.apache.eagle.service.metadata.resource.MetadataResource;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.typesafe.config.ConfigFactory;
 import io.dropwizard.Application;
 import io.dropwizard.setup.Bootstrap;
 import io.dropwizard.setup.Environment;
 import io.swagger.jaxrs.config.BeanConfig;
 import io.swagger.jaxrs.listing.ApiListingResource;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.EnumSet;
-
 import javax.servlet.DispatcherType;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.eagle.alert.coordinator.CoordinatorListener;
-import org.apache.eagle.alert.coordinator.resource.CoordinatorResource;
-import org.apache.eagle.alert.resource.SimpleCORSFiler;
-import org.apache.eagle.service.metadata.resource.MetadataResource;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.typesafe.config.ConfigFactory;
-
 /**
- * @since Jun 27, 2016
- *
+ * @since Jun 27, 2016.
  */
 public class ServiceApp extends Application<AlertDropWizardConfiguration> {
 
@@ -76,12 +72,12 @@ public class ServiceApp extends Application<AlertDropWizardConfiguration> {
         swaggerConfig.setVersion("v1.2");
         swaggerConfig.setBasePath("/rest");
         swaggerConfig
-                .setResourcePackage("org.apache.eagle.alert.coordinator.resource,org.apache.eagle.service.metadata.resource");
+            .setResourcePackage("org.apache.eagle.alert.coordinator.resource,org.apache.eagle.service.metadata.resource");
         swaggerConfig.setScan(true);
 
         // simple CORS filter
         environment.servlets().addFilter("corsFilter", new SimpleCORSFiler())
-                .addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
+            .addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
 
         // context listener
         environment.servlets().addServletListeners(new CoordinatorListener());

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/application.conf
index 72a731a..710459f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/application.conf
@@ -14,41 +14,41 @@
 # limitations under the License.
 
 {
-	"coordinator" : {
-		"policiesPerBolt" : 30,
-		"boltParallelism" : 5,
-		"policyDefaultParallelism" : 5,
-		"boltLoadUpbound": 0.8,
-		"topologyLoadUpbound" : 0.8,
-		"numOfAlertBoltsPerTopology" : 20,
-		"zkConfig" : {
-			"zkQuorum" : "127.0.0.1:2181",
-			"zkRoot" : "/alert",
-			"zkSessionTimeoutMs" : 10000,
-			"connectionTimeoutMs" : 10000,
-			"zkRetryTimes" : 3,
-			"zkRetryInterval" : 3000
-		},
-		"metadataService" : {
-			"host" : "localhost",
-			"port" : 8080,
-			"context" : "/rest"
-		},
-		"metadataDynamicCheck" : {
-			"initDelayMillis" : 1000,
-			"delayMillis" : 30000
-		},
-		"kafkaProducer": {
-			"bootstrapServers": "127.0.0.1:9092"
-		},
-		"email": {
-			"sender": "eagle@eagle.com",
-			"recipients": "test@eagle.com",
-			"mailSmtpHost": "test.eagle.com",
-			"mailSmtpPort": "25"
-		}
-	},
-	"datastore": {
-		"metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl"
-	}
+  "coordinator": {
+    "policiesPerBolt": 30,
+    "boltParallelism": 5,
+    "policyDefaultParallelism": 5,
+    "boltLoadUpbound": 0.8,
+    "topologyLoadUpbound": 0.8,
+    "numOfAlertBoltsPerTopology": 20,
+    "zkConfig": {
+      "zkQuorum": "127.0.0.1:2181",
+      "zkRoot": "/alert",
+      "zkSessionTimeoutMs": 10000,
+      "connectionTimeoutMs": 10000,
+      "zkRetryTimes": 3,
+      "zkRetryInterval": 3000
+    },
+    "metadataService": {
+      "host": "localhost",
+      "port": 8080,
+      "context": "/rest"
+    },
+    "metadataDynamicCheck": {
+      "initDelayMillis": 1000,
+      "delayMillis": 30000
+    },
+    "kafkaProducer": {
+      "bootstrapServers": "127.0.0.1:9092"
+    },
+    "email": {
+      "sender": "eagle@eagle.com",
+      "recipients": "test@eagle.com",
+      "mailSmtpHost": "test.eagle.com",
+      "mailSmtpPort": "25"
+    }
+  },
+  "datastore": {
+    "metadataDao": "org.apache.eagle.alert.metadata.impl.InMemMetadataDaoImpl"
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/log4j.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/log4j.properties
index dd4407b..5337cae 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/log4j.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/resources/log4j.properties
@@ -12,9 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 log4j.rootLogger=ERROR, stdout
-
 # standard output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/webapp/WEB-INF/web.xml b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/webapp/WEB-INF/web.xml
index c8c4707..5e10197 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/webapp/WEB-INF/web.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/main/webapp/WEB-INF/web.xml
@@ -16,28 +16,31 @@
   ~ limitations under the License.
   -->
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
-           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 		  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
-           version="3.0">
+         version="3.0">
     <welcome-file-list>
         <welcome-file>index.html</welcome-file>
     </welcome-file-list>
-    
+
     <listener>
-    	<listener-class>org.apache.eagle.alert.coordinator.CoordinatorListener</listener-class>
+        <listener-class>org.apache.eagle.alert.coordinator.CoordinatorListener</listener-class>
     </listener>
-    
+
     <servlet>
         <servlet-name>Jersey Web Application</servlet-name>
         <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
         <init-param>
             <param-name>com.sun.jersey.config.property.packages</param-name>
-            <param-value>io.swagger.jaxrs.json,io.swagger.jaxrs.listing,org.apache.eagle,org.codehaus.jackson.jaxrs</param-value>
+            <param-value>io.swagger.jaxrs.json,io.swagger.jaxrs.listing,org.apache.eagle,org.codehaus.jackson.jaxrs
+            </param-value>
         </init-param>
         <init-param>
             <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
-            <param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter;com.sun.jersey.api.container.filter.PostReplaceFilter</param-value>
+            <param-value>
+                com.sun.jersey.api.container.filter.GZIPContentEncodingFilter;com.sun.jersey.api.container.filter.PostReplaceFilter
+            </param-value>
         </init-param>
         <init-param>
             <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
@@ -46,19 +49,19 @@
         <load-on-startup>1</load-on-startup>
     </servlet>
     <!-- Servlet for swagger initialization only, no URL mapping. -->
-	<servlet>
-		<servlet-name>swaggerConfig</servlet-name>
-		<servlet-class>io.swagger.jaxrs.config.DefaultJaxrsConfig</servlet-class>
-		<init-param>
-			<param-name>api.version</param-name>
-			<param-value>1.0.0</param-value>
-		</init-param>
-		<init-param>
-			<param-name>swagger.api.basepath</param-name>
-			<param-value>/rest</param-value>
-		</init-param>
-		<load-on-startup>2</load-on-startup>
-	</servlet>
+    <servlet>
+        <servlet-name>swaggerConfig</servlet-name>
+        <servlet-class>io.swagger.jaxrs.config.DefaultJaxrsConfig</servlet-class>
+        <init-param>
+            <param-name>api.version</param-name>
+            <param-value>1.0.0</param-value>
+        </init-param>
+        <init-param>
+            <param-name>swagger.api.basepath</param-name>
+            <param-value>/rest</param-value>
+        </init-param>
+        <load-on-startup>2</load-on-startup>
+    </servlet>
     <servlet-mapping>
         <servlet-name>Jersey Web Application</servlet-name>
         <url-pattern>/rest/*</url-pattern>
@@ -73,7 +76,9 @@
         </init-param>
         <init-param>
             <param-name>cors.allowed.headers</param-name>
-            <param-value>Authorization,Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With, Accept</param-value>
+            <param-value>Authorization,Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified,
+                Cache-Control, Expires, Content-Type, X-E4M-With, Accept
+            </param-value>
         </init-param>
         <init-param>
             <param-name>cors.allowed.methods</param-name>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/test/java/com/apache/eagle/service/app/TestServiceAppWithZk.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/test/java/com/apache/eagle/service/app/TestServiceAppWithZk.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/test/java/com/apache/eagle/service/app/TestServiceAppWithZk.java
index f312e19..a19889b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/test/java/com/apache/eagle/service/app/TestServiceAppWithZk.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-service/src/test/java/com/apache/eagle/service/app/TestServiceAppWithZk.java
@@ -41,91 +41,89 @@ import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 
 /**
- * 
  * @author xiancli
- *
  */
 public class TestServiceAppWithZk {
 
-	ZookeeperEmbedded zkEmbed;
-
-	PrintStream oldStream;
-	PrintStream newStream;
-	ByteArrayOutputStream newStreamOutput;
-
-	@Before
-	public void setUp() throws Exception {
-		// Create a stream to hold the output
-		newStreamOutput = new ByteArrayOutputStream();
-		newStream = new PrintStream(newStreamOutput);
-		// IMPORTANT: Save the old System.out!
-		oldStream = System.out;
-		// Tell Java to use your special stream
-		System.setOut(newStream);
-
-		zkEmbed = new ZookeeperEmbedded(2181);
-		zkEmbed.start();
-
-		Thread.sleep(2000);
-
-		new ServiceApp().run(new String[] { "server" });
-	}
-
-	@After
-	public void tearDown() throws Exception {
-		zkEmbed.shutdown();
-	}
-
-	@Test
-	public void testMain() throws Exception {
-		try {
-			Thread.sleep(15000);
-		} catch (InterruptedException e1) {
-		}
-
-		// Put things back
-		System.out.flush();
-		System.setOut(oldStream);
-
-		BufferedReader br = new BufferedReader(new StringReader(newStreamOutput.toString()));
-		List<String> logs = new ArrayList<String>();
-		String line = null;
-		while ((line = br.readLine()) != null) {
-			logs.add(line);
-		}
-
-		System.out.println(Joiner.on("\n").join(logs));
-
-		Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("this is leader node right now..")));
-		Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("start coordinator background tasks..")));
-
-		Config config = ConfigFactory.load().getConfig("coordinator");
-		// build dynamic policy loader
-		String host = config.getString("metadataService.host");
-		int port = config.getInt("metadataService.port");
-		String context = config.getString("metadataService.context");
-		IMetadataServiceClient client = new MetadataServiceClientImpl(host, port, context);
-
-		List<PolicyDefinition> policies = client.listPolicies();
-
-		Assert.assertEquals(0, policies.size());
-
-		PolicyDefinition def = new PolicyDefinition();
-		def.setName("test-policy-1");
-		def.setInputStreams(Arrays.asList("testStreamDef"));
-		def.setOutputStreams(Arrays.asList("test-datasource-1"));
-		def.setParallelismHint(5);
-		def.setDefinition(new Definition());
-		client.addPolicy(def);
-
-		policies = client.listPolicies();
-
-		Assert.assertEquals(1, policies.size());
-
-		try {
-			client.close();
-		} catch (IOException e) {
-		}
-	}
+    ZookeeperEmbedded zkEmbed;
+
+    PrintStream oldStream;
+    PrintStream newStream;
+    ByteArrayOutputStream newStreamOutput;
+
+    @Before
+    public void setUp() throws Exception {
+        // Create a stream to hold the output
+        newStreamOutput = new ByteArrayOutputStream();
+        newStream = new PrintStream(newStreamOutput);
+        // IMPORTANT: Save the old System.out!
+        oldStream = System.out;
+        // Tell Java to use your special stream
+        System.setOut(newStream);
+
+        zkEmbed = new ZookeeperEmbedded(2181);
+        zkEmbed.start();
+
+        Thread.sleep(2000);
+
+        new ServiceApp().run(new String[] {"server"});
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        zkEmbed.shutdown();
+    }
+
+    @Test
+    public void testMain() throws Exception {
+        try {
+            Thread.sleep(15000);
+        } catch (InterruptedException e1) {
+        }
+
+        // Put things back
+        System.out.flush();
+        System.setOut(oldStream);
+
+        BufferedReader br = new BufferedReader(new StringReader(newStreamOutput.toString()));
+        List<String> logs = new ArrayList<String>();
+        String line = null;
+        while ((line = br.readLine()) != null) {
+            logs.add(line);
+        }
+
+        System.out.println(Joiner.on("\n").join(logs));
+
+        Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("this is leader node right now..")));
+        Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("start coordinator background tasks..")));
+
+        Config config = ConfigFactory.load().getConfig("coordinator");
+        // build dynamic policy loader
+        String host = config.getString("metadataService.host");
+        int port = config.getInt("metadataService.port");
+        String context = config.getString("metadataService.context");
+        IMetadataServiceClient client = new MetadataServiceClientImpl(host, port, context);
+
+        List<PolicyDefinition> policies = client.listPolicies();
+
+        Assert.assertEquals(0, policies.size());
+
+        PolicyDefinition def = new PolicyDefinition();
+        def.setName("test-policy-1");
+        def.setInputStreams(Arrays.asList("testStreamDef"));
+        def.setOutputStreams(Arrays.asList("test-datasource-1"));
+        def.setParallelismHint(5);
+        def.setDefinition(new Definition());
+        client.addPolicy(def);
+
+        policies = client.listPolicies();
+
+        Assert.assertEquals(1, policies.size());
+
+        try {
+            client.close();
+        } catch (IOException e) {
+        }
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/pom.xml b/eagle-core/eagle-alert-parent/pom.xml
index e2ba4d8..3fcb494 100644
--- a/eagle-core/eagle-alert-parent/pom.xml
+++ b/eagle-core/eagle-alert-parent/pom.xml
@@ -28,9 +28,23 @@
     <packaging>pom</packaging>
 
     <name>eagle-alert-parent</name>
+
     <modules>
         <module>eagle-alert</module>
         <module>eagle-alert-service</module>
-    <module>eagle-alert-app</module>
-  </modules>
+        <module>eagle-alert-app</module>
+    </modules>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <configuration>
+                    <failOnViolation>true</failOnViolation>
+                    <failsOnError>true</failsOnError>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file



[14/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/NodataMetadataGenerator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/NodataMetadataGenerator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/NodataMetadataGenerator.java
index 67dedeb..3cf5721 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/NodataMetadataGenerator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/NodataMetadataGenerator.java
@@ -16,328 +16,319 @@
  */
 package org.apache.eagle.alert.coordinator.provider;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.commons.lang3.StringUtils;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.Tuple2StreamMetadata;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.Publishment;
-import org.apache.eagle.alert.engine.coordinator.StreamColumn;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.utils.TimePeriodUtils;
+import com.typesafe.config.Config;
+import org.apache.commons.lang3.StringUtils;
 import org.joda.time.Period;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.util.*;
 
 public class NodataMetadataGenerator {
 
-	private static final Logger LOG = LoggerFactory.getLogger(NodataMetadataGenerator.class);
-	
-	private static final String NODATA_ALERT_AGGR_STREAM = "nodata_alert_aggregation_stream";
-	private static final String NODATA_ALERT_AGGR_OUTPUT_STREAM = "nodata_alert_aggregation_output_stream";
-	private static final String NODATA_ALERT_AGGR_DATASOURCE_NAME = "nodata_alert_aggregation_ds";
-	private static final String NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME = "nodata_alert_aggregation_output_ds";
-	private static final String NODATA_ALERT_AGGR_TOPIC_NAME = "nodata_alert_aggregation";
-	private static final String NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME = "nodata_alert";
-	
-	private static final String DATASOURCE_TYPE = "KAFKA";
-	private static final String DATASOURCE_SCHEME_CLS = "org.apache.eagle.alert.engine.scheme.JsonScheme";
-	
-	private static final String NODATA_ALERT_AGGR_POLICY_TYPE = "nodataalert";
-	private static final String NODATA_ALERT_AGGR_OUTPUT_POLICY_TYPE = "siddhi";
-	
-	private static final String JSON_STRING_STREAM_NAME_SELECTOR_CLS = "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector";
-	private static final String STREAM_TIMESTAMP_COLUMN_NAME = "timestamp";
-	private static final String STREAM_TIMESTAMP_FORMAT = "";
-	
-	private static final String KAFKA_PUBLISHMENT_TYPE = "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher";
-	private static final String EMAIL_PUBLISHMENT_TYPE = "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher";
-	
-	private static final String PUBLISHMENT_DEDUP_DURATION = "PT0M";
-	private static final String PUBLISHMENT_SERIALIZER = "org.apache.eagle.alert.engine.publisher.impl.JsonEventSerializer";
-	
-	public NodataMetadataGenerator() {}
-	
-	public void execute(Config config, Map<String, StreamDefinition> streamDefinitionsMap, 
-			Map<String, Kafka2TupleMetadata> kafkaSources, 
-			Map<String, PolicyDefinition> policies, Map<String, Publishment> publishments) {
-		Collection<StreamDefinition> streamDefinitions = streamDefinitionsMap.values();
-		for (StreamDefinition streamDefinition : streamDefinitions) {
-    		StreamColumn columnWithNodataExpression = null;
-    		for (StreamColumn column : streamDefinition.getColumns()) {
-    			if (StringUtils.isNotBlank(column.getNodataExpression())) {
-    				// has nodata alert setting, needs to generate the nodata alert policy
-    				if (columnWithNodataExpression != null) {
-    					columnWithNodataExpression = null;
-    					LOG.warn("Only one column in one stream is allowed to configure nodata alert");
-    					break;
-    				}
-    				columnWithNodataExpression = column;
-    			}
-    		}
-    		if (columnWithNodataExpression != null) {
-    			String streamName = streamDefinition.getStreamId();
-    			
-    			// create nodata alert aggr stream
-    			if (streamDefinitionsMap.containsKey(NODATA_ALERT_AGGR_STREAM)) {
-    				LOG.info("Nodata alert aggregation stream: {} already exists", NODATA_ALERT_AGGR_STREAM);
-    			} else {
-    				streamDefinitionsMap.put(NODATA_ALERT_AGGR_STREAM, buildAggregationStream());
-    				LOG.info("Created nodata alert aggregation stream: {}", NODATA_ALERT_AGGR_STREAM);
-    			}
-    			
-    			// create nodata alert aggr output stream
-    			if (streamDefinitionsMap.containsKey(NODATA_ALERT_AGGR_OUTPUT_STREAM)) {
-    				LOG.info("Nodata alert aggregation output stream: {} already exists", NODATA_ALERT_AGGR_OUTPUT_STREAM);
-    			} else {
-    				streamDefinitionsMap.put(NODATA_ALERT_AGGR_OUTPUT_STREAM, buildAggregationOutputStream());
-    				LOG.info("Created nodata alert aggregation output stream: {}", NODATA_ALERT_AGGR_OUTPUT_STREAM);
-    			}
-    			
-    			// create nodata alert data source
-    			if (kafkaSources.containsKey(NODATA_ALERT_AGGR_DATASOURCE_NAME)) {
-    				LOG.info("Stream: {} nodata alert aggregation datasource: {} already exists", 
-    						NODATA_ALERT_AGGR_STREAM, NODATA_ALERT_AGGR_DATASOURCE_NAME);
-    			} else {
-	    			kafkaSources.put(NODATA_ALERT_AGGR_DATASOURCE_NAME, buildAggregationDatasource());
-	    			LOG.info("Created nodata alert aggregation datasource {} for stream {}", 
-	    					NODATA_ALERT_AGGR_DATASOURCE_NAME, NODATA_ALERT_AGGR_STREAM);
-    			}
-    			
-    			// create nodata alert aggregation output datasource
-    			if (kafkaSources.containsKey(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME)) {
-    				LOG.info("Stream: {} nodata alert aggregation output datasource: {} already exists", 
-    						NODATA_ALERT_AGGR_OUTPUT_STREAM, NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME);
-    			} else {
-	    			kafkaSources.put(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME, buildAggregationOutputDatasource());
-	    			LOG.info("Created nodata alert aggregation output datasource {} for stream {}", 
-	    					NODATA_ALERT_AGGR_DATASOURCE_NAME, NODATA_ALERT_AGGR_OUTPUT_STREAM);
-    			}
-    			
-    			// create nodata alert policy
-    			String policyName = streamName + "_nodata_alert";
-    			String nodataExpression = columnWithNodataExpression.getNodataExpression();
-    			String[] segments = nodataExpression.split(",");
-    			long windowPeriodInSeconds = TimePeriodUtils.getSecondsOfPeriod(Period.parse(segments[0]));
-    			if (policies.containsKey(policyName)) {
-    				LOG.info("Stream: {} nodata alert policy: {} already exists", streamName, policyName);
-    			} else {
-    				policies.put(policyName, buildDynamicNodataPolicy(
-    						streamName,
-    						policyName, 
-    						columnWithNodataExpression.getName(),
-    						nodataExpression,
-    						Arrays.asList(streamName)));
-    				LOG.info("Created nodata alert policy {} with expression {} for stream {}", 
-    						policyName, nodataExpression, streamName);
-    			}
-    			
-    			// create nodata alert aggregation
-    			String aggrPolicyName = NODATA_ALERT_AGGR_STREAM + "_policy";
-    			if (policies.containsKey(aggrPolicyName)) {
-    				LOG.info("Stream: {} nodata alert aggregation policy: {} already exists", 
-    						NODATA_ALERT_AGGR_OUTPUT_STREAM, aggrPolicyName);
-    			} else {
-    				policies.put(aggrPolicyName, buildAggregationPolicy(
-    						aggrPolicyName, 
-    						columnWithNodataExpression.getName(),
-    						windowPeriodInSeconds));
-    				LOG.info("Created nodata alert aggregation policy {} for stream {}", 
-    						aggrPolicyName, NODATA_ALERT_AGGR_OUTPUT_STREAM);
-    			}
-    			
-    			// create nodata alert publish
-    			String publishmentName = policyName + "_publish";
-    			if (publishments.containsKey(publishmentName)) {
-    				LOG.info("Stream: {} nodata alert publishment: {} already exists", streamName, publishmentName);
-    			} else {
-	    			String kafkaBroker = config.getString("kafkaProducer.bootstrapServers");
-	    			publishments.put(publishmentName, buildKafkaAlertPublishment(
-	    					publishmentName, policyName, kafkaBroker, NODATA_ALERT_AGGR_TOPIC_NAME));
-	    			publishments.put(publishmentName + "_email", buildEmailAlertPublishment(config, 
-	    					publishmentName + "_email", policyName, kafkaBroker, NODATA_ALERT_AGGR_TOPIC_NAME));
-	    			LOG.info("Created nodata alert publishment {} for stream {}", policyName + "_publish", streamName);
-    			}
-    			
-    			// create nodata alert aggregation publish
-    			String aggrPublishName = aggrPolicyName + "_publish";
-    			if (publishments.containsKey(aggrPublishName)) {
-    				LOG.info("Stream: {} publishment: {} already exists", NODATA_ALERT_AGGR_STREAM, aggrPublishName);
-    			} else {
-	    			String kafkaBroker = config.getString("kafkaProducer.bootstrapServers");
-	    			publishments.put(aggrPublishName, buildKafkaAlertPublishment(
-	    					aggrPublishName, aggrPolicyName, kafkaBroker, NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME));
-	    			publishments.put(aggrPublishName + "_email", buildEmailAlertPublishment(config, 
-	    					aggrPublishName + "_email", aggrPolicyName, kafkaBroker, NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME));
-	    			LOG.info("Created nodata alert publishment {} for stream {}", policyName + "_publish", streamName);
-    			}
-    		}
-    	}
-	}
-	
-	private Kafka2TupleMetadata buildAggregationDatasource() {
-		Kafka2TupleMetadata datasource = new Kafka2TupleMetadata();
-		datasource.setName(NODATA_ALERT_AGGR_DATASOURCE_NAME);
-		datasource.setType(DATASOURCE_TYPE);
-		datasource.setSchemeCls(DATASOURCE_SCHEME_CLS);
-		datasource.setTopic(NODATA_ALERT_AGGR_TOPIC_NAME);
-		Tuple2StreamMetadata codec = new Tuple2StreamMetadata();
-		codec.setStreamNameSelectorCls(JSON_STRING_STREAM_NAME_SELECTOR_CLS);
-		codec.setTimestampColumn(STREAM_TIMESTAMP_COLUMN_NAME);
-		codec.setTimestampFormat(STREAM_TIMESTAMP_FORMAT);
-		Properties codecProperties = new Properties();
-		codecProperties.put("userProvidedStreamName", NODATA_ALERT_AGGR_STREAM);
-		codecProperties.put("streamNameFormat", "%s");
-		codec.setStreamNameSelectorProp(codecProperties);
-		datasource.setCodec(codec);
-		return datasource;
-	}
-	
-	private Kafka2TupleMetadata buildAggregationOutputDatasource() {
-		Kafka2TupleMetadata datasource = new Kafka2TupleMetadata();
-		datasource.setName(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME);
-		datasource.setType(DATASOURCE_TYPE);
-		datasource.setSchemeCls(DATASOURCE_SCHEME_CLS);
-		datasource.setTopic(NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME);
-		Tuple2StreamMetadata codec = new Tuple2StreamMetadata();
-		codec.setStreamNameSelectorCls(JSON_STRING_STREAM_NAME_SELECTOR_CLS);
-		codec.setTimestampColumn(STREAM_TIMESTAMP_COLUMN_NAME);
-		codec.setTimestampFormat(STREAM_TIMESTAMP_FORMAT);
-		Properties codecProperties = new Properties();
-		codecProperties.put("userProvidedStreamName", NODATA_ALERT_AGGR_OUTPUT_STREAM);
-		codecProperties.put("streamNameFormat", "%s");
-		codec.setStreamNameSelectorProp(codecProperties);
-		datasource.setCodec(codec);
-		return datasource;
-	}
-	
-	private PolicyDefinition buildDynamicNodataPolicy(String streamName, String policyName, 
-    		String columnName, String expression, List<String> inputStream) {
-		PolicyDefinition pd = new PolicyDefinition();
-		PolicyDefinition.Definition def = new PolicyDefinition.Definition();
-		//expression, something like "PT5S,dynamic,1,host"
-		def.setValue(expression);
-		def.setType(NODATA_ALERT_AGGR_POLICY_TYPE);
-		pd.setDefinition(def);
-		pd.setInputStreams(inputStream);
-		pd.setOutputStreams(Arrays.asList(NODATA_ALERT_AGGR_STREAM));
-		pd.setName(policyName);
-		pd.setDescription(String.format("Nodata alert policy for stream %s", streamName));
-		
-		StreamPartition sp = new StreamPartition();
-		sp.setStreamId(streamName);
-		sp.setColumns(Arrays.asList(columnName));
-		sp.setType(StreamPartition.Type.GROUPBY);
-		pd.addPartition(sp);
-		return pd;
-	}
-    
-    private PolicyDefinition buildAggregationPolicy(String policyName, String columnName, 
-    		long windowPeriodInSeconds) {
-    	PolicyDefinition pd = new PolicyDefinition();
-		PolicyDefinition.Definition def = new PolicyDefinition.Definition();
-		String SiddhiQL = String.format(
-				"from %s#window.timeBatch(%s sec) select eagle:collectWithDistinct(%s) as hosts, "
-				+ "originalStreamName as streamName group by originalStreamName insert into %s", 
-				NODATA_ALERT_AGGR_STREAM, windowPeriodInSeconds * 2, 
-				columnName, NODATA_ALERT_AGGR_OUTPUT_STREAM);
-		LOG.info("Generated SiddhiQL {} for stream: {}", SiddhiQL, NODATA_ALERT_AGGR_STREAM);
-		def.setValue(SiddhiQL);
-		def.setType(NODATA_ALERT_AGGR_OUTPUT_POLICY_TYPE);
-		pd.setDefinition(def);
-		pd.setInputStreams(Arrays.asList(NODATA_ALERT_AGGR_STREAM));
-		pd.setOutputStreams(Arrays.asList(NODATA_ALERT_AGGR_OUTPUT_STREAM));
-		pd.setName(policyName);
-		pd.setDescription("Nodata alert aggregation policy, used to merge alerts from multiple bolts");
-		
-		StreamPartition sp = new StreamPartition();
-		sp.setStreamId(NODATA_ALERT_AGGR_STREAM);
-		sp.setColumns(Arrays.asList(columnName));
-		sp.setType(StreamPartition.Type.GROUPBY);
-		pd.addPartition(sp);
-		pd.setParallelismHint(0);
-    	return pd;
+    private static final Logger LOG = LoggerFactory.getLogger(NodataMetadataGenerator.class);
+
+    private static final String NODATA_ALERT_AGGR_STREAM = "nodata_alert_aggregation_stream";
+    private static final String NODATA_ALERT_AGGR_OUTPUT_STREAM = "nodata_alert_aggregation_output_stream";
+    private static final String NODATA_ALERT_AGGR_DATASOURCE_NAME = "nodata_alert_aggregation_ds";
+    private static final String NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME = "nodata_alert_aggregation_output_ds";
+    private static final String NODATA_ALERT_AGGR_TOPIC_NAME = "nodata_alert_aggregation";
+    private static final String NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME = "nodata_alert";
+
+    private static final String DATASOURCE_TYPE = "KAFKA";
+    private static final String DATASOURCE_SCHEME_CLS = "org.apache.eagle.alert.engine.scheme.JsonScheme";
+
+    private static final String NODATA_ALERT_AGGR_POLICY_TYPE = "nodataalert";
+    private static final String NODATA_ALERT_AGGR_OUTPUT_POLICY_TYPE = "siddhi";
+
+    private static final String JSON_STRING_STREAM_NAME_SELECTOR_CLS = "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector";
+    private static final String STREAM_TIMESTAMP_COLUMN_NAME = "timestamp";
+    private static final String STREAM_TIMESTAMP_FORMAT = "";
+
+    private static final String KAFKA_PUBLISHMENT_TYPE = "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher";
+    private static final String EMAIL_PUBLISHMENT_TYPE = "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher";
+
+    private static final String PUBLISHMENT_DEDUP_DURATION = "PT0M";
+    private static final String PUBLISHMENT_SERIALIZER = "org.apache.eagle.alert.engine.publisher.impl.JsonEventSerializer";
+
+    public NodataMetadataGenerator() {
+    }
+
+    public void execute(Config config, Map<String, StreamDefinition> streamDefinitionsMap,
+                        Map<String, Kafka2TupleMetadata> kafkaSources,
+                        Map<String, PolicyDefinition> policies, Map<String, Publishment> publishments) {
+        Collection<StreamDefinition> streamDefinitions = streamDefinitionsMap.values();
+        for (StreamDefinition streamDefinition : streamDefinitions) {
+            StreamColumn columnWithNodataExpression = null;
+            for (StreamColumn column : streamDefinition.getColumns()) {
+                if (StringUtils.isNotBlank(column.getNodataExpression())) {
+                    // has nodata alert setting, needs to generate the nodata alert policy
+                    if (columnWithNodataExpression != null) {
+                        columnWithNodataExpression = null;
+                        LOG.warn("Only one column in one stream is allowed to configure nodata alert");
+                        break;
+                    }
+                    columnWithNodataExpression = column;
+                }
+            }
+            if (columnWithNodataExpression != null) {
+                final String streamName = streamDefinition.getStreamId();
+
+                // create nodata alert aggr stream
+                if (streamDefinitionsMap.containsKey(NODATA_ALERT_AGGR_STREAM)) {
+                    LOG.info("Nodata alert aggregation stream: {} already exists", NODATA_ALERT_AGGR_STREAM);
+                } else {
+                    streamDefinitionsMap.put(NODATA_ALERT_AGGR_STREAM, buildAggregationStream());
+                    LOG.info("Created nodata alert aggregation stream: {}", NODATA_ALERT_AGGR_STREAM);
+                }
+
+                // create nodata alert aggr output stream
+                if (streamDefinitionsMap.containsKey(NODATA_ALERT_AGGR_OUTPUT_STREAM)) {
+                    LOG.info("Nodata alert aggregation output stream: {} already exists", NODATA_ALERT_AGGR_OUTPUT_STREAM);
+                } else {
+                    streamDefinitionsMap.put(NODATA_ALERT_AGGR_OUTPUT_STREAM, buildAggregationOutputStream());
+                    LOG.info("Created nodata alert aggregation output stream: {}", NODATA_ALERT_AGGR_OUTPUT_STREAM);
+                }
+
+                // create nodata alert data source
+                if (kafkaSources.containsKey(NODATA_ALERT_AGGR_DATASOURCE_NAME)) {
+                    LOG.info("Stream: {} nodata alert aggregation datasource: {} already exists",
+                        NODATA_ALERT_AGGR_STREAM, NODATA_ALERT_AGGR_DATASOURCE_NAME);
+                } else {
+                    kafkaSources.put(NODATA_ALERT_AGGR_DATASOURCE_NAME, buildAggregationDatasource());
+                    LOG.info("Created nodata alert aggregation datasource {} for stream {}",
+                        NODATA_ALERT_AGGR_DATASOURCE_NAME, NODATA_ALERT_AGGR_STREAM);
+                }
+
+                // create nodata alert aggregation output datasource
+                if (kafkaSources.containsKey(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME)) {
+                    LOG.info("Stream: {} nodata alert aggregation output datasource: {} already exists",
+                        NODATA_ALERT_AGGR_OUTPUT_STREAM, NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME);
+                } else {
+                    kafkaSources.put(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME, buildAggregationOutputDatasource());
+                    LOG.info("Created nodata alert aggregation output datasource {} for stream {}",
+                        NODATA_ALERT_AGGR_DATASOURCE_NAME, NODATA_ALERT_AGGR_OUTPUT_STREAM);
+                }
+
+                // create nodata alert policy
+                String policyName = streamName + "_nodata_alert";
+                String nodataExpression = columnWithNodataExpression.getNodataExpression();
+                String[] segments = nodataExpression.split(",");
+                long windowPeriodInSeconds = TimePeriodUtils.getSecondsOfPeriod(Period.parse(segments[0]));
+                if (policies.containsKey(policyName)) {
+                    LOG.info("Stream: {} nodata alert policy: {} already exists", streamName, policyName);
+                } else {
+                    policies.put(policyName, buildDynamicNodataPolicy(
+                        streamName,
+                        policyName,
+                        columnWithNodataExpression.getName(),
+                        nodataExpression,
+                        Arrays.asList(streamName)));
+                    LOG.info("Created nodata alert policy {} with expression {} for stream {}",
+                        policyName, nodataExpression, streamName);
+                }
+
+                // create nodata alert aggregation
+                String aggrPolicyName = NODATA_ALERT_AGGR_STREAM + "_policy";
+                if (policies.containsKey(aggrPolicyName)) {
+                    LOG.info("Stream: {} nodata alert aggregation policy: {} already exists",
+                        NODATA_ALERT_AGGR_OUTPUT_STREAM, aggrPolicyName);
+                } else {
+                    policies.put(aggrPolicyName, buildAggregationPolicy(
+                        aggrPolicyName,
+                        columnWithNodataExpression.getName(),
+                        windowPeriodInSeconds));
+                    LOG.info("Created nodata alert aggregation policy {} for stream {}",
+                        aggrPolicyName, NODATA_ALERT_AGGR_OUTPUT_STREAM);
+                }
+
+                // create nodata alert publish
+                String publishmentName = policyName + "_publish";
+                if (publishments.containsKey(publishmentName)) {
+                    LOG.info("Stream: {} nodata alert publishment: {} already exists", streamName, publishmentName);
+                } else {
+                    String kafkaBroker = config.getString("kafkaProducer.bootstrapServers");
+                    publishments.put(publishmentName, buildKafkaAlertPublishment(
+                        publishmentName, policyName, kafkaBroker, NODATA_ALERT_AGGR_TOPIC_NAME));
+                    publishments.put(publishmentName + "_email", buildEmailAlertPublishment(config,
+                        publishmentName + "_email", policyName, kafkaBroker, NODATA_ALERT_AGGR_TOPIC_NAME));
+                    LOG.info("Created nodata alert publishment {} for stream {}", policyName + "_publish", streamName);
+                }
+
+                // create nodata alert aggregation publish
+                String aggrPublishName = aggrPolicyName + "_publish";
+                if (publishments.containsKey(aggrPublishName)) {
+                    LOG.info("Stream: {} publishment: {} already exists", NODATA_ALERT_AGGR_STREAM, aggrPublishName);
+                } else {
+                    String kafkaBroker = config.getString("kafkaProducer.bootstrapServers");
+                    publishments.put(aggrPublishName, buildKafkaAlertPublishment(
+                        aggrPublishName, aggrPolicyName, kafkaBroker, NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME));
+                    publishments.put(aggrPublishName + "_email", buildEmailAlertPublishment(config,
+                        aggrPublishName + "_email", aggrPolicyName, kafkaBroker, NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME));
+                    LOG.info("Created nodata alert publishment {} for stream {}", policyName + "_publish", streamName);
+                }
+            }
+        }
+    }
+
+    private Kafka2TupleMetadata buildAggregationDatasource() {
+        Kafka2TupleMetadata datasource = new Kafka2TupleMetadata();
+        datasource.setName(NODATA_ALERT_AGGR_DATASOURCE_NAME);
+        datasource.setType(DATASOURCE_TYPE);
+        datasource.setSchemeCls(DATASOURCE_SCHEME_CLS);
+        datasource.setTopic(NODATA_ALERT_AGGR_TOPIC_NAME);
+        Tuple2StreamMetadata codec = new Tuple2StreamMetadata();
+        codec.setStreamNameSelectorCls(JSON_STRING_STREAM_NAME_SELECTOR_CLS);
+        codec.setTimestampColumn(STREAM_TIMESTAMP_COLUMN_NAME);
+        codec.setTimestampFormat(STREAM_TIMESTAMP_FORMAT);
+        Properties codecProperties = new Properties();
+        codecProperties.put("userProvidedStreamName", NODATA_ALERT_AGGR_STREAM);
+        codecProperties.put("streamNameFormat", "%s");
+        codec.setStreamNameSelectorProp(codecProperties);
+        datasource.setCodec(codec);
+        return datasource;
+    }
+
+    private Kafka2TupleMetadata buildAggregationOutputDatasource() {
+        Kafka2TupleMetadata datasource = new Kafka2TupleMetadata();
+        datasource.setName(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME);
+        datasource.setType(DATASOURCE_TYPE);
+        datasource.setSchemeCls(DATASOURCE_SCHEME_CLS);
+        datasource.setTopic(NODATA_ALERT_AGGR_OUTPUT_TOPIC_NAME);
+        Tuple2StreamMetadata codec = new Tuple2StreamMetadata();
+        codec.setStreamNameSelectorCls(JSON_STRING_STREAM_NAME_SELECTOR_CLS);
+        codec.setTimestampColumn(STREAM_TIMESTAMP_COLUMN_NAME);
+        codec.setTimestampFormat(STREAM_TIMESTAMP_FORMAT);
+        Properties codecProperties = new Properties();
+        codecProperties.put("userProvidedStreamName", NODATA_ALERT_AGGR_OUTPUT_STREAM);
+        codecProperties.put("streamNameFormat", "%s");
+        codec.setStreamNameSelectorProp(codecProperties);
+        datasource.setCodec(codec);
+        return datasource;
+    }
+
+    private PolicyDefinition buildDynamicNodataPolicy(String streamName, String policyName,
+                                                      String columnName, String expression, List<String> inputStream) {
+        PolicyDefinition pd = new PolicyDefinition();
+        PolicyDefinition.Definition def = new PolicyDefinition.Definition();
+        //expression, something like "PT5S,dynamic,1,host"
+        def.setValue(expression);
+        def.setType(NODATA_ALERT_AGGR_POLICY_TYPE);
+        pd.setDefinition(def);
+        pd.setInputStreams(inputStream);
+        pd.setOutputStreams(Arrays.asList(NODATA_ALERT_AGGR_STREAM));
+        pd.setName(policyName);
+        pd.setDescription(String.format("Nodata alert policy for stream %s", streamName));
+
+        StreamPartition sp = new StreamPartition();
+        sp.setStreamId(streamName);
+        sp.setColumns(Arrays.asList(columnName));
+        sp.setType(StreamPartition.Type.GROUPBY);
+        pd.addPartition(sp);
+        return pd;
     }
-	
-	private Publishment buildKafkaAlertPublishment(String publishmentName, String policyName, String kafkaBroker, String topic) {
-		Publishment publishment = new Publishment();
-		publishment.setName(publishmentName);
-		publishment.setType(KAFKA_PUBLISHMENT_TYPE);
-		publishment.setPolicyIds(Arrays.asList(policyName));
-		publishment.setDedupIntervalMin(PUBLISHMENT_DEDUP_DURATION);
-		Map<String, String> publishmentProperties = new HashMap<String, String>();
-		publishmentProperties.put("kafka_broker", kafkaBroker);
-		publishmentProperties.put("topic", topic);
-		publishment.setProperties(publishmentProperties);
-		publishment.setSerializer(PUBLISHMENT_SERIALIZER);
-		return publishment;
-	}
-	
-	private Publishment buildEmailAlertPublishment(Config config, 
-			String publishmentName, String policyName, String kafkaBroker, String topic) {
-		Publishment publishment = new Publishment();
-		publishment.setName(publishmentName);
-		publishment.setType(EMAIL_PUBLISHMENT_TYPE);
-		publishment.setPolicyIds(Arrays.asList(policyName));
-		publishment.setDedupIntervalMin(PUBLISHMENT_DEDUP_DURATION);
-		Map<String, String> publishmentProperties = new HashMap<String, String>();
-		publishmentProperties.put("subject", String.format("Eagle Alert - %s", topic));
-		publishmentProperties.put("template", "");
-		publishmentProperties.put("sender", config.getString("email.sender"));
-		publishmentProperties.put("recipients", config.getString("email.recipients"));
-		publishmentProperties.put("mail.smtp.host", config.getString("email.mailSmtpHost"));
-		publishmentProperties.put("mail.smtp.port", config.getString("email.mailSmtpPort"));
-		publishmentProperties.put("connection", "plaintext");
-		publishment.setProperties(publishmentProperties);
-		publishment.setSerializer(PUBLISHMENT_SERIALIZER);
-		return publishment;
-	}
-	
-	private StreamDefinition buildAggregationStream() {
-		StreamDefinition sd = new StreamDefinition();
-		StreamColumn tsColumn = new StreamColumn();
-		tsColumn.setName("timestamp");
-		tsColumn.setType(StreamColumn.Type.LONG);
-		
-		StreamColumn hostColumn = new StreamColumn();
-		hostColumn.setName("host");
-		hostColumn.setType(StreamColumn.Type.STRING);
-
-		StreamColumn originalStreamNameColumn = new StreamColumn();
-		originalStreamNameColumn.setName("originalStreamName");
-		originalStreamNameColumn.setType(StreamColumn.Type.STRING);
-		
-		sd.setColumns(Arrays.asList(tsColumn, hostColumn, originalStreamNameColumn));
-		sd.setDataSource(NODATA_ALERT_AGGR_DATASOURCE_NAME);
-		sd.setStreamId(NODATA_ALERT_AGGR_STREAM);
-		sd.setDescription("Nodata alert aggregation stream");
-		return sd;
-	}
-	
-	private StreamDefinition buildAggregationOutputStream() {
-		StreamDefinition sd = new StreamDefinition();
-		StreamColumn hostColumn = new StreamColumn();
-		hostColumn.setName("hosts");
-		hostColumn.setType(StreamColumn.Type.STRING);
-		
-		StreamColumn osnColumn = new StreamColumn();
-		osnColumn.setName("streamName");
-		osnColumn.setType(StreamColumn.Type.STRING);
-		
-		sd.setColumns(Arrays.asList(hostColumn, osnColumn));
-		sd.setDataSource(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME);
-		sd.setStreamId(NODATA_ALERT_AGGR_OUTPUT_STREAM);
-		sd.setDescription("Nodata alert aggregation output stream");
-		return sd;
-	}
-    
+
+    private PolicyDefinition buildAggregationPolicy(String policyName, String columnName,
+                                                    long windowPeriodInSeconds) {
+        final PolicyDefinition pd = new PolicyDefinition();
+        PolicyDefinition.Definition def = new PolicyDefinition.Definition();
+        String siddhiQL = String.format(
+            "from %s#window.timeBatch(%s sec) select eagle:collectWithDistinct(%s) as hosts, "
+                + "originalStreamName as streamName group by originalStreamName insert into %s",
+            NODATA_ALERT_AGGR_STREAM, windowPeriodInSeconds * 2,
+            columnName, NODATA_ALERT_AGGR_OUTPUT_STREAM);
+        LOG.info("Generated SiddhiQL {} for stream: {}", siddhiQL, NODATA_ALERT_AGGR_STREAM);
+        def.setValue(siddhiQL);
+        def.setType(NODATA_ALERT_AGGR_OUTPUT_POLICY_TYPE);
+        pd.setDefinition(def);
+        pd.setInputStreams(Arrays.asList(NODATA_ALERT_AGGR_STREAM));
+        pd.setOutputStreams(Arrays.asList(NODATA_ALERT_AGGR_OUTPUT_STREAM));
+        pd.setName(policyName);
+        pd.setDescription("Nodata alert aggregation policy, used to merge alerts from multiple bolts");
+
+        StreamPartition sp = new StreamPartition();
+        sp.setStreamId(NODATA_ALERT_AGGR_STREAM);
+        sp.setColumns(Arrays.asList(columnName));
+        sp.setType(StreamPartition.Type.GROUPBY);
+        pd.addPartition(sp);
+        pd.setParallelismHint(0);
+        return pd;
+    }
+
+    private Publishment buildKafkaAlertPublishment(String publishmentName, String policyName, String kafkaBroker, String topic) {
+        Publishment publishment = new Publishment();
+        publishment.setName(publishmentName);
+        publishment.setType(KAFKA_PUBLISHMENT_TYPE);
+        publishment.setPolicyIds(Arrays.asList(policyName));
+        publishment.setDedupIntervalMin(PUBLISHMENT_DEDUP_DURATION);
+        Map<String, String> publishmentProperties = new HashMap<String, String>();
+        publishmentProperties.put("kafka_broker", kafkaBroker);
+        publishmentProperties.put("topic", topic);
+        publishment.setProperties(publishmentProperties);
+        publishment.setSerializer(PUBLISHMENT_SERIALIZER);
+        return publishment;
+    }
+
+    private Publishment buildEmailAlertPublishment(Config config,
+                                                   String publishmentName, String policyName, String kafkaBroker, String topic) {
+        Publishment publishment = new Publishment();
+        publishment.setName(publishmentName);
+        publishment.setType(EMAIL_PUBLISHMENT_TYPE);
+        publishment.setPolicyIds(Arrays.asList(policyName));
+        publishment.setDedupIntervalMin(PUBLISHMENT_DEDUP_DURATION);
+        Map<String, String> publishmentProperties = new HashMap<String, String>();
+        publishmentProperties.put("subject", String.format("Eagle Alert - %s", topic));
+        publishmentProperties.put("template", "");
+        publishmentProperties.put("sender", config.getString("email.sender"));
+        publishmentProperties.put("recipients", config.getString("email.recipients"));
+        publishmentProperties.put("mail.smtp.host", config.getString("email.mailSmtpHost"));
+        publishmentProperties.put("mail.smtp.port", config.getString("email.mailSmtpPort"));
+        publishmentProperties.put("connection", "plaintext");
+        publishment.setProperties(publishmentProperties);
+        publishment.setSerializer(PUBLISHMENT_SERIALIZER);
+        return publishment;
+    }
+
+    private StreamDefinition buildAggregationStream() {
+        final StreamDefinition sd = new StreamDefinition();
+        StreamColumn tsColumn = new StreamColumn();
+        tsColumn.setName("timestamp");
+        tsColumn.setType(StreamColumn.Type.LONG);
+
+        StreamColumn hostColumn = new StreamColumn();
+        hostColumn.setName("host");
+        hostColumn.setType(StreamColumn.Type.STRING);
+
+        StreamColumn originalStreamNameColumn = new StreamColumn();
+        originalStreamNameColumn.setName("originalStreamName");
+        originalStreamNameColumn.setType(StreamColumn.Type.STRING);
+
+        sd.setColumns(Arrays.asList(tsColumn, hostColumn, originalStreamNameColumn));
+        sd.setDataSource(NODATA_ALERT_AGGR_DATASOURCE_NAME);
+        sd.setStreamId(NODATA_ALERT_AGGR_STREAM);
+        sd.setDescription("Nodata alert aggregation stream");
+        return sd;
+    }
+
+    private StreamDefinition buildAggregationOutputStream() {
+        final StreamDefinition sd = new StreamDefinition();
+        StreamColumn hostColumn = new StreamColumn();
+        hostColumn.setName("hosts");
+        hostColumn.setType(StreamColumn.Type.STRING);
+
+        StreamColumn osnColumn = new StreamColumn();
+        osnColumn.setName("streamName");
+        osnColumn.setType(StreamColumn.Type.STRING);
+
+        sd.setColumns(Arrays.asList(hostColumn, osnColumn));
+        sd.setDataSource(NODATA_ALERT_AGGR_OUTPUT_DATASOURCE_NAME);
+        sd.setStreamId(NODATA_ALERT_AGGR_OUTPUT_STREAM);
+        sd.setDescription("Nodata alert aggregation output stream");
+        return sd;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/ScheduleContextBuilder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/ScheduleContextBuilder.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/ScheduleContextBuilder.java
index dd38395..193b98f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/ScheduleContextBuilder.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/ScheduleContextBuilder.java
@@ -16,24 +16,10 @@
  */
 package org.apache.eagle.alert.coordinator.provider;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.WorkSlot;
-import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
-import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
-import org.apache.eagle.alert.coordination.model.internal.StreamGroup;
-import org.apache.eagle.alert.coordination.model.internal.StreamWorkSlotQueue;
-import org.apache.eagle.alert.coordination.model.internal.Topology;
+import org.apache.eagle.alert.coordination.model.internal.*;
 import org.apache.eagle.alert.coordinator.IScheduleContext;
 import org.apache.eagle.alert.coordinator.model.AlertBoltUsage;
 import org.apache.eagle.alert.coordinator.model.GroupBoltUsage;
@@ -44,17 +30,18 @@ import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.service.IMetadataServiceClient;
 import org.apache.eagle.alert.service.MetadataServiceClientImpl;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * FIXME: this class focus on correctness, not the efficiency now. There might
  * be problem when metadata size grows too big.
- * 
- * @since May 3, 2016
  *
+ * @since May 3, 2016
  */
 public class ScheduleContextBuilder {
 
@@ -74,18 +61,18 @@ public class ScheduleContextBuilder {
     private Map<String, TopologyUsage> usages;
 
     public ScheduleContextBuilder(Config config) {
-    	this.config = config;
+        this.config = config;
         client = new MetadataServiceClientImpl(config);
     }
 
     public ScheduleContextBuilder(Config config, IMetadataServiceClient client) {
-    	this.config = config;
+        this.config = config;
         this.client = client;
     }
 
     /**
      * Built a shcedule context for metadata client service.
-     * 
+     *
      * @return
      */
     public IScheduleContext buildContext() {
@@ -93,13 +80,13 @@ public class ScheduleContextBuilder {
         kafkaSources = listToMap(client.listDataSources());
         // filter out disabled policies
         List<PolicyDefinition> enabledPolicies = client.listPolicies().stream().filter(
-        		(t) -> t.getPolicyStatus() != PolicyStatus.DISABLED).collect(Collectors.toList());
+            (t) -> t.getPolicyStatus() != PolicyStatus.DISABLED).collect(Collectors.toList());
         policies = listToMap(enabledPolicies);
         publishments = listToMap(client.listPublishment());
         streamDefinitions = listToMap(client.listStreams());
         // generate data sources, policies, publishments for nodata alert
         new NodataMetadataGenerator().execute(config, streamDefinitions, kafkaSources, policies, publishments);
-        
+
         // TODO: See ScheduleState comments on how to improve the storage
         ScheduleState state = client.getVersionedSpec();
 
@@ -118,9 +105,9 @@ public class ScheduleContextBuilder {
 
         // copy to shedule context now
         return new InMemScheduleConext(topologies, assignments, kafkaSources, policies, publishments,
-                streamDefinitions, monitoredStreamMap, usages);
+            streamDefinitions, monitoredStreamMap, usages);
     }
-    
+
     /**
      * 1.
      * <pre>
@@ -133,12 +120,13 @@ public class ScheduleContextBuilder {
      * <pre>
      * if monitored stream's queue's is on non-existing topology, remove it.
      * </pre>
+     *
      * @param monitoredStreams
      * @return
      */
     private List<MonitoredStream> detectMonitoredStreams(List<MonitoredStream> monitoredStreams) {
         List<MonitoredStream> result = new ArrayList<MonitoredStream>(monitoredStreams);
-        
+
         // clear deprecated streams
         clearMonitoredStreams(monitoredStreams);
 
@@ -159,8 +147,8 @@ public class ScheduleContextBuilder {
             StreamGroup group = queue2StreamGroup.get(assignment.getQueueId());
             if (group == null || !Objects.equals(group.getStreamPartitions(), def.getPartitionSpec())) {
                 LOG.warn(" policy assgiment {} 's policy group {} is different to the monitored stream's partition group {}, "
-                                + "this indicates a policy stream partition spec change, the assignment would be removed! ",
-                        assignment, def.getPartitionSpec(), group == null ? "'not found'" :group.getStreamPartitions());
+                        + "this indicates a policy stream partition spec change, the assignment would be removed! ",
+                    assignment, def.getPartitionSpec(), group == null ? "'not found'" : group.getStreamPartitions());
                 toRemove.add(assignment.getPolicyName());
             } else {
                 usedGroups.add(group);
@@ -174,9 +162,9 @@ public class ScheduleContextBuilder {
             boolean used = usedGroups.contains(t.getStreamGroup());
             if (!used) {
                 LOG.warn("monitor stream with stream group {} is not referenced, "
-                        + "this monitored stream and its worker queu will be removed", t.getStreamGroup());
+                    + "this monitored stream and its worker queu will be removed", t.getStreamGroup());
             }
-            return !used; 
+            return !used;
         });
 
         return result;
@@ -194,7 +182,7 @@ public class ScheduleContextBuilder {
                 for (WorkSlot ws : queue.getWorkingSlots()) {
                     // check if topology available or bolt available
                     if (!topologies.containsKey(ws.topologyName)
-                            || !topologies.get(ws.topologyName).getAlertBoltIds().contains(ws.boltId)) {
+                        || !topologies.get(ws.topologyName).getAlertBoltIds().contains(ws.boltId)) {
                         deprecated = true;
                         break;
                     }
@@ -230,7 +218,7 @@ public class ScheduleContextBuilder {
             } else {
                 StreamWorkSlotQueue queue = queueMap.get(assignment.getQueueId());
                 if (queue == null
-                        || policies.get(assignment.getPolicyName()).getParallelismHint() > queue.getQueueSize()) {
+                    || policies.get(assignment.getPolicyName()).getParallelismHint() > queue.getQueueSize()) {
                     // queue not found or policy has hint bigger than queue (possible a poilcy update)
                     LOG.info("Policy assignment {} 's policy doesnt match queue: {}!", assignment, queue);
                     paIt.remove();
@@ -286,7 +274,7 @@ public class ScheduleContextBuilder {
         Map<String, StreamWorkSlotQueue> queueMap = new HashMap<String, StreamWorkSlotQueue>();
 
         preBuildQueue2TopoMap(topo2MonitorStream, topo2Policies, bolt2Policies, bolt2Partition, bolt2QueueIds, queueMap);
-        
+
         for (Topology t : topologies.values()) {
             TopologyUsage u = new TopologyUsage(t.getName());
             // add group/bolt usages
@@ -323,8 +311,8 @@ public class ScheduleContextBuilder {
     }
 
     private void addBoltUsageInfo(Map<String, Set<String>> bolt2Policies,
-            Map<String, Set<StreamGroup>> bolt2Partition, Map<String, Set<String>> bolt2QueueIds, String uniqueAlertBolt,
-            AlertBoltUsage alertUsage, Map<String, StreamWorkSlotQueue> queueMap) {
+                                  Map<String, Set<StreamGroup>> bolt2Partition, Map<String, Set<String>> bolt2QueueIds, String uniqueAlertBolt,
+                                  AlertBoltUsage alertUsage, Map<String, StreamWorkSlotQueue> queueMap) {
         //
         if (bolt2Policies.containsKey(uniqueAlertBolt)) {
             alertUsage.getPolicies().addAll(bolt2Policies.get(uniqueAlertBolt));
@@ -371,15 +359,15 @@ public class ScheduleContextBuilder {
     }
 
     private void preBuildQueue2TopoMap(
-            Map<String, Set<MonitoredStream>> topo2MonitorStream,
-            Map<String, Set<String>> topo2Policies, 
-            Map<String, Set<String>> bolt2Policies, 
-            Map<String, Set<StreamGroup>> bolt2Partition, 
-            Map<String, Set<String>> bolt2QueueIds,
-            Map<String, StreamWorkSlotQueue> queueMap) {
+        Map<String, Set<MonitoredStream>> topo2MonitorStream,
+        Map<String, Set<String>> topo2Policies,
+        Map<String, Set<String>> bolt2Policies,
+        Map<String, Set<StreamGroup>> bolt2Partition,
+        Map<String, Set<String>> bolt2QueueIds,
+        Map<String, StreamWorkSlotQueue> queueMap) {
         // pre-build structure
         // why don't reuse the queue.getPolicies
-        Map<String, Set<String>> queue2Policies= new HashMap<String, Set<String>>();
+        Map<String, Set<String>> queue2Policies = new HashMap<String, Set<String>>();
         for (PolicyAssignment pa : assignments.values()) {
             if (!queue2Policies.containsKey(pa.getQueueId())) {
                 queue2Policies.put(pa.getQueueId(), new HashSet<String>());
@@ -391,32 +379,32 @@ public class ScheduleContextBuilder {
             for (StreamWorkSlotQueue q : stream.getQueues()) {
                 queueMap.put(q.getQueueId(), q);
                 Set<String> policiesOnQ = queue2Policies.containsKey(q.getQueueId()) ? queue2Policies.get(q.getQueueId()) : new HashSet<String>();
-                
+
                 for (WorkSlot slot : q.getWorkingSlots()) {
                     // topo2monitoredstream
                     if (!topo2MonitorStream.containsKey(slot.getTopologyName())) {
                         topo2MonitorStream.put(slot.getTopologyName(), new HashSet<MonitoredStream>());
                     }
                     topo2MonitorStream.get(slot.getTopologyName()).add(stream);
-                    
+
                     // topo2policy
                     if (!topo2Policies.containsKey(slot.getTopologyName())) {
                         topo2Policies.put(slot.getTopologyName(), new HashSet<String>());
                     }
                     topo2Policies.get(slot.getTopologyName()).addAll(policiesOnQ);
-                    
+
                     // bolt2Policy
                     if (!bolt2Policies.containsKey(getUniqueBoltId(slot))) {
                         bolt2Policies.put(getUniqueBoltId(slot), new HashSet<String>());
                     }
                     bolt2Policies.get(getUniqueBoltId(slot)).addAll(policiesOnQ);
-                    
+
                     // bolt2Queue
                     if (!bolt2QueueIds.containsKey(getUniqueBoltId(slot))) {
                         bolt2QueueIds.put(getUniqueBoltId(slot), new HashSet<String>());
                     }
                     bolt2QueueIds.get(getUniqueBoltId(slot)).add(q.getQueueId());
-                    
+
                     // bolt2Partition
                     if (!bolt2Partition.containsKey(getUniqueBoltId(slot))) {
                         bolt2Partition.put(getUniqueBoltId(slot), new HashSet<StreamGroup>());

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/resource/CoordinatorResource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/resource/CoordinatorResource.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/resource/CoordinatorResource.java
index c715bf8..273ab33 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/resource/CoordinatorResource.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/resource/CoordinatorResource.java
@@ -16,24 +16,24 @@
  */
 package org.apache.eagle.alert.coordinator.resource;
 
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordinator.Coordinator;
 import org.apache.eagle.alert.coordinator.ScheduleOption;
 import org.apache.eagle.alert.utils.JsonUtils;
 
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
 /**
  * This is to provide API access even we don't have ZK as intermediate access.
  * FIXME : more elogant status code
- * 
+ *
  * @since Mar 24, 2016 <br/>
  */
 @Path("/coordinator")
-@Produces({ "application/json" })
+@Produces( {"application/json"})
 public class CoordinatorResource {
 
     // sprint config here?
@@ -65,7 +65,7 @@ public class CoordinatorResource {
     public void disablePeriodicallyBuild() {
         alertCoordinator.disablePeriodicallyBuild();
     }
-    
+
     @SuppressWarnings("static-access")
     @GET
     @Path("/periodicForceBuildState")
@@ -74,9 +74,7 @@ public class CoordinatorResource {
     }
 
     /**
-     * Manually update the topology usages, for administration
-     * 
-     * @return
+     * Manually update the topology usages, for administration.
      */
     @POST
     @Path("/refreshUsages")

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/CoordinatorTrigger.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/CoordinatorTrigger.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/CoordinatorTrigger.java
index 4e17179..ce3c02b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/CoordinatorTrigger.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/CoordinatorTrigger.java
@@ -16,28 +16,21 @@
  */
 package org.apache.eagle.alert.coordinator.trigger;
 
-import java.util.concurrent.TimeUnit;
-
 import org.apache.eagle.alert.config.ConfigBusProducer;
 import org.apache.eagle.alert.config.ZKConfigBuilder;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
-import org.apache.eagle.alert.coordinator.Coordinator;
-import org.apache.eagle.alert.coordinator.IPolicyScheduler;
-import org.apache.eagle.alert.coordinator.IScheduleContext;
-import org.apache.eagle.alert.coordinator.PolicySchedulerFactory;
-import org.apache.eagle.alert.coordinator.ScheduleOption;
-import org.apache.eagle.alert.coordinator.TopologyMgmtService;
+import org.apache.eagle.alert.coordinator.*;
 import org.apache.eagle.alert.coordinator.provider.ScheduleContextBuilder;
 import org.apache.eagle.alert.service.IMetadataServiceClient;
+import com.google.common.base.Stopwatch;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Stopwatch;
-import com.typesafe.config.Config;
+import java.util.concurrent.TimeUnit;
 
 /**
- * @since Jun 27, 2016
- *
+ * @since Jun 27, 2016.
  */
 public class CoordinatorTrigger implements Runnable {
     // TODO : support configurable in coordiantor
@@ -77,7 +70,7 @@ public class CoordinatorTrigger implements Runnable {
 
                 watch.stop();
                 LOG.info("CoordinatorTrigger ended, used time {} sm.", watch.elapsed(TimeUnit.MILLISECONDS));
-            }  else {
+            } else {
                 LOG.info("CoordinatorTrigger found isPeriodicallyForceBuildEnable = false, skipped build");
             }
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/DynamicPolicyLoader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/DynamicPolicyLoader.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/DynamicPolicyLoader.java
index df7556d..a60c959 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/DynamicPolicyLoader.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/DynamicPolicyLoader.java
@@ -16,25 +16,20 @@
  */
 package org.apache.eagle.alert.coordinator.trigger;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.service.IMetadataServiceClient;
+import com.google.common.base.Stopwatch;
+import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Stopwatch;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
- * Poll policy change and notify listeners
+ * Poll policy change and notify listeners.
  */
-public class DynamicPolicyLoader implements Runnable{
+public class DynamicPolicyLoader implements Runnable {
     private static Logger LOG = LoggerFactory.getLogger(DynamicPolicyLoader.class);
 
     private IMetadataServiceClient client;
@@ -42,7 +37,7 @@ public class DynamicPolicyLoader implements Runnable{
     private Map<String, PolicyDefinition> cachedPolicies = new HashMap<>();
     private List<PolicyChangeListener> listeners = new ArrayList<>();
 
-    public DynamicPolicyLoader(IMetadataServiceClient client){
+    public DynamicPolicyLoader(IMetadataServiceClient client) {
         this.client = client;
     }
 
@@ -52,14 +47,14 @@ public class DynamicPolicyLoader implements Runnable{
 
     /**
      * When it is run at the first time, due to cachedPolicies being empty, all existing policies are expected
-     * to be addedPolicies
+     * to be addedPolicies.
      */
     @SuppressWarnings("unchecked")
     @Override
     public void run() {
         // we should catch every exception to avoid zombile thread
         try {
-            Stopwatch watch = Stopwatch.createStarted();
+            final Stopwatch watch = Stopwatch.createStarted();
             LOG.info("policies loader start.");
             List<PolicyDefinition> current = client.listPolicies();
             Map<String, PolicyDefinition> currPolicies = new HashMap<>();
@@ -77,9 +72,9 @@ public class DynamicPolicyLoader implements Runnable{
             }
 
             boolean policyChanged = false;
-            if (addedPolicies.size() != 0 ||
-                    removedPolicies.size() != 0 ||
-                    reallyModifiedPolicies.size() != 0) {
+            if (addedPolicies.size() != 0
+                || removedPolicies.size() != 0
+                || reallyModifiedPolicies.size() != 0) {
                 policyChanged = true;
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/PolicyChangeListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/PolicyChangeListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/PolicyChangeListener.java
index be8c68a..d36765f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/PolicyChangeListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/trigger/PolicyChangeListener.java
@@ -16,11 +16,10 @@
  */
 package org.apache.eagle.alert.coordinator.trigger;
 
+import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-
 public interface PolicyChangeListener {
     void onPolicyChange(List<PolicyDefinition> allPolicies, Collection<String> addedPolicies, Collection<String> removedPolicies, Collection<String> modifiedPolicies);
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/CoordinatorTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/CoordinatorTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/CoordinatorTest.java
index b618dfc..79056d4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/CoordinatorTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/CoordinatorTest.java
@@ -44,7 +44,6 @@ import com.typesafe.config.ConfigFactory;
 
 /**
  * @since May 5, 2016
- *
  */
 public class CoordinatorTest {
 
@@ -63,7 +62,7 @@ public class CoordinatorTest {
         zkEmbed.shutdown();
     }
 
-    @SuppressWarnings({ "resource", "unused" })
+    @SuppressWarnings( {"resource", "unused"})
     @Ignore
     @Test
     public void test() throws Exception {
@@ -92,7 +91,7 @@ public class CoordinatorTest {
         Assert.assertTrue(validated.get());
     }
 
-    @SuppressWarnings({ "resource", "unused" })
+    @SuppressWarnings( {"resource", "unused"})
     @Test
     public void test_01() throws Exception {
         before();
@@ -138,7 +137,7 @@ public class CoordinatorTest {
         ConfigFactory.invalidateCaches();
         ConfigFactory.load().getConfig("coordinator");
     }
-    
+
     @Test
     public void test_Schedule() {
         Coordinator.startSchedule();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/DynamicPolicyLoaderTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/DynamicPolicyLoaderTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/DynamicPolicyLoaderTest.java
index fe62b3b..a86dd04 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/DynamicPolicyLoaderTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/DynamicPolicyLoaderTest.java
@@ -24,4 +24,4 @@ package org.apache.alert.coordinator;
  */
 @org.junit.Ignore
 public class DynamicPolicyLoaderTest {
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/MetadataServiceClientImplTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/MetadataServiceClientImplTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/MetadataServiceClientImplTest.java
index e2ea031..d71dd88 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/MetadataServiceClientImplTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/MetadataServiceClientImplTest.java
@@ -30,7 +30,6 @@ import com.typesafe.config.ConfigFactory;
 
 /**
  * @since May 9, 2016
- *
  */
 public class MetadataServiceClientImplTest {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/NodataMetadataGeneratorTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/NodataMetadataGeneratorTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/NodataMetadataGeneratorTest.java
index 43dc9c1..9d2b9c7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/NodataMetadataGeneratorTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/NodataMetadataGeneratorTest.java
@@ -37,67 +37,67 @@ import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 
 public class NodataMetadataGeneratorTest {
-	
-	private static final Logger LOG = LoggerFactory.getLogger(NodataMetadataGeneratorTest.class);
-
-	Config config = ConfigFactory.load().getConfig("coordinator");
-	private NodataMetadataGenerator generator;
-	
-	@Before
-	public void setup() {
-		generator = new NodataMetadataGenerator();
-	}
-	
-	@Test
-	public void testNormal() throws Exception {
-		StreamDefinition sd = createStreamDefinitionWithNodataAlert();
-		Map<String, StreamDefinition> streamDefinitionsMap = new HashMap<String, StreamDefinition>();
-		streamDefinitionsMap.put(sd.getStreamId(), sd);
-		
-		Map<String, Kafka2TupleMetadata> kafkaSources = new HashMap<String, Kafka2TupleMetadata>();
-		Map<String, PolicyDefinition> policies = new HashMap<String, PolicyDefinition>();
-		Map<String, Publishment> publishments = new HashMap<String, Publishment>();
-		
-		generator.execute(config, streamDefinitionsMap, kafkaSources, policies, publishments);
-		
-		Assert.assertEquals(2, kafkaSources.size());
-		
-		kafkaSources.forEach((key, value) -> {
-			LOG.info("KafkaSources > {}: {}", key, ToStringBuilder.reflectionToString(value));
-		});
-		
-		Assert.assertEquals(2, policies.size());
-		
-		policies.forEach((key, value) -> {
-			LOG.info("Policies > {}: {}", key, ToStringBuilder.reflectionToString(value));
-		});
-		
-		Assert.assertEquals(4, publishments.size());
-		
-		publishments.forEach((key, value) -> {
-			LOG.info("Publishments > {}: {}", key, ToStringBuilder.reflectionToString(value));
-		});
-	}
-	
-	private StreamDefinition createStreamDefinitionWithNodataAlert() {
-		StreamDefinition sd = new StreamDefinition();
-		StreamColumn tsColumn = new StreamColumn();
-		tsColumn.setName("timestamp");
-		tsColumn.setType(StreamColumn.Type.LONG);
-
-		StreamColumn hostColumn = new StreamColumn();
-		hostColumn.setName("host");
-		hostColumn.setType(StreamColumn.Type.STRING);
-		hostColumn.setNodataExpression("PT1M,dynamic,1,host");
-
-		StreamColumn valueColumn = new StreamColumn();
-		valueColumn.setName("value");
-		valueColumn.setType(StreamColumn.Type.DOUBLE);
-
-		sd.setColumns(Arrays.asList(tsColumn, hostColumn, valueColumn));
-		sd.setDataSource("testDataSource");
-		sd.setStreamId("testStreamId");
-		return sd;
-	}
-	
+
+    private static final Logger LOG = LoggerFactory.getLogger(NodataMetadataGeneratorTest.class);
+
+    Config config = ConfigFactory.load().getConfig("coordinator");
+    private NodataMetadataGenerator generator;
+
+    @Before
+    public void setup() {
+        generator = new NodataMetadataGenerator();
+    }
+
+    @Test
+    public void testNormal() throws Exception {
+        StreamDefinition sd = createStreamDefinitionWithNodataAlert();
+        Map<String, StreamDefinition> streamDefinitionsMap = new HashMap<String, StreamDefinition>();
+        streamDefinitionsMap.put(sd.getStreamId(), sd);
+
+        Map<String, Kafka2TupleMetadata> kafkaSources = new HashMap<String, Kafka2TupleMetadata>();
+        Map<String, PolicyDefinition> policies = new HashMap<String, PolicyDefinition>();
+        Map<String, Publishment> publishments = new HashMap<String, Publishment>();
+
+        generator.execute(config, streamDefinitionsMap, kafkaSources, policies, publishments);
+
+        Assert.assertEquals(2, kafkaSources.size());
+
+        kafkaSources.forEach((key, value) -> {
+            LOG.info("KafkaSources > {}: {}", key, ToStringBuilder.reflectionToString(value));
+        });
+
+        Assert.assertEquals(2, policies.size());
+
+        policies.forEach((key, value) -> {
+            LOG.info("Policies > {}: {}", key, ToStringBuilder.reflectionToString(value));
+        });
+
+        Assert.assertEquals(4, publishments.size());
+
+        publishments.forEach((key, value) -> {
+            LOG.info("Publishments > {}: {}", key, ToStringBuilder.reflectionToString(value));
+        });
+    }
+
+    private StreamDefinition createStreamDefinitionWithNodataAlert() {
+        StreamDefinition sd = new StreamDefinition();
+        StreamColumn tsColumn = new StreamColumn();
+        tsColumn.setName("timestamp");
+        tsColumn.setType(StreamColumn.Type.LONG);
+
+        StreamColumn hostColumn = new StreamColumn();
+        hostColumn.setName("host");
+        hostColumn.setType(StreamColumn.Type.STRING);
+        hostColumn.setNodataExpression("PT1M,dynamic,1,host");
+
+        StreamColumn valueColumn = new StreamColumn();
+        valueColumn.setName("value");
+        valueColumn.setType(StreamColumn.Type.DOUBLE);
+
+        sd.setColumns(Arrays.asList(tsColumn, hostColumn, valueColumn));
+        sd.setDataSource("testDataSource");
+        sd.setStreamId("testStreamId");
+        return sd;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/ScheduleContextBuilderTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/ScheduleContextBuilderTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/ScheduleContextBuilderTest.java
index 84153f6..ac83c73 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/ScheduleContextBuilderTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/ScheduleContextBuilderTest.java
@@ -54,12 +54,11 @@ import com.typesafe.config.ConfigFactory;
 
 /**
  * @since May 5, 2016
- *
  */
 public class ScheduleContextBuilderTest {
 
-	Config config = ConfigFactory.load().getConfig("coordinator");
-	
+    Config config = ConfigFactory.load().getConfig("coordinator");
+
     @Test
     public void test() {
         InMemMetadataServiceClient client = getSampleMetadataService();
@@ -78,7 +77,7 @@ public class ScheduleContextBuilderTest {
         String alertBolt2 = TOPO1 + "-alert-" + "2";
         for (AlertBoltUsage u : usages.get(TOPO1).getAlertUsages().values()) {
             if (u.getBoltId().equals(alertBolt0) || u.getBoltId().equals(alertBolt1)
-                    || u.getBoltId().equals(alertBolt2)) {
+                || u.getBoltId().equals(alertBolt2)) {
                 Assert.assertEquals(1, u.getPolicies().size());
                 Assert.assertTrue(u.getPolicies().contains(TEST_POLICY_1));
                 Assert.assertEquals(1, u.getPartitions().size());
@@ -195,51 +194,51 @@ public class ScheduleContextBuilderTest {
         // just to make sure queueNew is present
         Assert.assertEquals(queue.getQueueId(), queueNew.getQueueId());
     }
-    
+
     @Test
     public void test_stream_noalert_policies_generation() throws Exception {
-    	InMemMetadataServiceClient client = getSampleMetadataServiceWithNodataAlert();
-    	
+        InMemMetadataServiceClient client = getSampleMetadataServiceWithNodataAlert();
+
         ScheduleContextBuilder builder = new ScheduleContextBuilder(config, client);
         IScheduleContext context = builder.buildContext();
-        
+
         PolicyDefinition policyDefinition = null;
         PolicyDefinition aggrPolicyDefinition = null;
         for (Entry<String, PolicyDefinition> entry : context.getPolicies().entrySet()) {
-        	if (entry.getKey().endsWith("_nodata_alert")) {
-        		policyDefinition = entry.getValue();
-        		continue;
-        	}
-        	if (entry.getKey().endsWith("_aggregation_stream_policy")) {
-        		aggrPolicyDefinition = entry.getValue();
-        		continue;
-        	}
+            if (entry.getKey().endsWith("_nodata_alert")) {
+                policyDefinition = entry.getValue();
+                continue;
+            }
+            if (entry.getKey().endsWith("_aggregation_stream_policy")) {
+                aggrPolicyDefinition = entry.getValue();
+                continue;
+            }
         }
         Assert.assertEquals(3, context.getPolicies().size());
-        
+
         Assert.assertNotNull(policyDefinition);
         Assert.assertEquals("nodataalert", policyDefinition.getDefinition().getType());
         Assert.assertEquals("PT5S,dynamic,1," + COL1, policyDefinition.getDefinition().getValue());
-        
+
         Assert.assertNotNull(aggrPolicyDefinition);
         Assert.assertEquals("siddhi", aggrPolicyDefinition.getDefinition().getType());
-        
+
         Kafka2TupleMetadata datasource = null;
         for (Entry<String, Kafka2TupleMetadata> entry : context.getDataSourceMetadata().entrySet()) {
-        	if ("nodata_alert_aggregation_ds".equals(entry.getKey())) {
-        		datasource = entry.getValue();
-        		break;
-        	}
+            if ("nodata_alert_aggregation_ds".equals(entry.getKey())) {
+                datasource = entry.getValue();
+                break;
+            }
         }
         Assert.assertNotNull(datasource);
-        
+
         String publishmentName = policyDefinition.getName() + "_publish";
         Publishment publishment = null;
         for (Entry<String, Publishment> entry : context.getPublishments().entrySet()) {
-        	if (publishmentName.equals(entry.getKey())) {
-        		publishment = entry.getValue();
-        		break;
-        	}
+            if (publishmentName.equals(entry.getKey())) {
+                publishment = entry.getValue();
+                break;
+            }
         }
         Assert.assertNotNull(publishment);
     }
@@ -280,7 +279,7 @@ public class ScheduleContextBuilderTest {
         client.addScheduleState(createScheduleState());
         return client;
     }
-    
+
     public static InMemMetadataServiceClient getSampleMetadataServiceWithNodataAlert() {
         InMemMetadataServiceClient client = new InMemMetadataServiceClient();
         client.addTopology(createSampleTopology());
@@ -291,7 +290,7 @@ public class ScheduleContextBuilderTest {
         client.addScheduleState(createScheduleState());
         return client;
     }
-    
+
     private static StreamDefinition createStreamDefinitionWithNodataAlert() {
         StreamDefinition def = new StreamDefinition();
         def.setStreamId(TEST_STREAM_DEF_1);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/SchedulerTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/SchedulerTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/SchedulerTest.java
index 53de19a..d0b7a09 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/SchedulerTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/SchedulerTest.java
@@ -70,9 +70,7 @@ import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 
 /**
- * 
  * @since Apr 22, 2016
- *
  */
 public class SchedulerTest {
 
@@ -375,7 +373,7 @@ public class SchedulerTest {
                 StreamWorkSlotQueue queue1 = getQueue(context, pa1.getQueueId()).getRight();
                 StreamWorkSlotQueue queue3 = getQueue(context, pa3.getQueueId()).getRight();
                 Assert.assertNotEquals(queue1.getWorkingSlots().get(0).getTopologyName(),
-                        queue3.getWorkingSlots().get(0).getTopologyName());
+                    queue3.getWorkingSlots().get(0).getTopologyName());
             }
         }
         // group spec
@@ -722,7 +720,7 @@ public class SchedulerTest {
         List<Topology> topos = loadEntities(base + "topologies.json", Topology.class);
         for (Topology t : topos) {
             context.addTopology(t);
-            
+
             TopologyUsage u = new TopologyUsage(t.getName());
             for (String gnid : t.getGroupNodeIds()) {
                 u.getGroupUsages().put(gnid, new GroupBoltUsage(gnid));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestExclusiveExecutor.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestExclusiveExecutor.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestExclusiveExecutor.java
index 04b760a..7e170a8 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestExclusiveExecutor.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestExclusiveExecutor.java
@@ -36,82 +36,82 @@ import com.google.common.base.Joiner;
 @Ignore
 public class TestExclusiveExecutor {
 
-	ZookeeperEmbedded zkEmbed;
+    ZookeeperEmbedded zkEmbed;
 
-	@Before
-	public void setUp() throws Exception {
-		zkEmbed = new ZookeeperEmbedded(2181);
-		zkEmbed.start();
+    @Before
+    public void setUp() throws Exception {
+        zkEmbed = new ZookeeperEmbedded(2181);
+        zkEmbed.start();
 
-		Thread.sleep(2000);
-	}
+        Thread.sleep(2000);
+    }
 
-	@After
-	public void tearDown() throws Exception {
-		zkEmbed.shutdown();
-	}
+    @After
+    public void tearDown() throws Exception {
+        zkEmbed.shutdown();
+    }
 
-	@Test
-	public void testConcurrency() throws Exception {
-		ByteArrayOutputStream newStreamOutput = new ByteArrayOutputStream();
-		PrintStream newStream = new PrintStream(newStreamOutput);
-		PrintStream oldStream = System.out;
+    @Test
+    public void testConcurrency() throws Exception {
+        ByteArrayOutputStream newStreamOutput = new ByteArrayOutputStream();
+        PrintStream newStream = new PrintStream(newStreamOutput);
+        PrintStream oldStream = System.out;
 
-		System.setOut(newStream);
+        System.setOut(newStream);
 
-		ExclusiveExecutor.Runnable runnableOne = new ExclusiveExecutor.Runnable() {
+        ExclusiveExecutor.Runnable runnableOne = new ExclusiveExecutor.Runnable() {
 
-			@Override
-			public void run() throws Exception {
-				System.out.println("this is thread one");
-			}
+            @Override
+            public void run() throws Exception {
+                System.out.println("this is thread one");
+            }
 
-		};
+        };
 
-		new Thread(new Runnable() {
+        new Thread(new Runnable() {
 
-			@Override
-			public void run() {
-				ExclusiveExecutor.execute("/alert/test/leader", runnableOne);
-			}
+            @Override
+            public void run() {
+                ExclusiveExecutor.execute("/alert/test/leader", runnableOne);
+            }
 
-		}).start();
+        }).start();
 
-		ExclusiveExecutor.Runnable runnableTwo = new ExclusiveExecutor.Runnable() {
+        ExclusiveExecutor.Runnable runnableTwo = new ExclusiveExecutor.Runnable() {
 
-			@Override
-			public void run() throws Exception {
-				System.out.println("this is thread two");
-			}
+            @Override
+            public void run() throws Exception {
+                System.out.println("this is thread two");
+            }
 
-		};
-		new Thread(new Runnable() {
+        };
+        new Thread(new Runnable() {
 
-			@Override
-			public void run() {
-				ExclusiveExecutor.execute("/alert/test/leader", runnableTwo);
-			}
+            @Override
+            public void run() {
+                ExclusiveExecutor.execute("/alert/test/leader", runnableTwo);
+            }
 
-		}).start();
+        }).start();
 
-		Thread.sleep(2000);
+        Thread.sleep(2000);
 
-		System.out.flush();
-		BufferedReader br = new BufferedReader(new StringReader(newStreamOutput.toString()));
-		List<String> logs = new ArrayList<String>();
-		String line = null;
-		while ((line = br.readLine()) != null) {
-			logs.add(line);
-		}
+        System.out.flush();
+        BufferedReader br = new BufferedReader(new StringReader(newStreamOutput.toString()));
+        List<String> logs = new ArrayList<String>();
+        String line = null;
+        while ((line = br.readLine()) != null) {
+            logs.add(line);
+        }
 
-		System.setOut(oldStream);
-		System.out.println("Cached logs: " + Joiner.on("\n").join(logs));
+        System.setOut(oldStream);
+        System.out.println("Cached logs: " + Joiner.on("\n").join(logs));
 
-		Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("this is thread one")));
-		Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("this is thread two")));
+        Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("this is thread one")));
+        Assert.assertTrue(logs.stream().anyMatch((log) -> log.contains("this is thread two")));
 
-		Assert.assertTrue(runnableOne.isCompleted());
-		Assert.assertTrue(runnableTwo.isCompleted());
-	}
+        Assert.assertTrue(runnableOne.isCompleted());
+        Assert.assertTrue(runnableTwo.isCompleted());
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestGreedyScheduleCoordinator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestGreedyScheduleCoordinator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestGreedyScheduleCoordinator.java
index a86b13a..91df334 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestGreedyScheduleCoordinator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/TestGreedyScheduleCoordinator.java
@@ -23,109 +23,113 @@ import org.junit.Before;
 import org.junit.Test;
 
 public class TestGreedyScheduleCoordinator {
-	
-	public static class ScheduleZkState {
-    	volatile boolean scheduleAcquired = false;
+
+    public static class ScheduleZkState {
+        volatile boolean scheduleAcquired = false;
         volatile boolean scheduleCompleted = false;
     }
 
-	public static class GreedyScheduleCoordinator {
-		
-	    public int schedule(int input) {
-	    	ScheduleZkState scheduleZkState = new ScheduleZkState();
-	    	ExclusiveExecutor.Runnable exclusiveRunnable = new ExclusiveExecutor.Runnable() {
-				@Override
-				public void run() throws Exception {
-					scheduleZkState.scheduleAcquired = true;
-					
-					while (!scheduleZkState.scheduleCompleted) {
-						Thread.sleep(2000);
-					}
-				}
-	    	};
-	    	ExclusiveExecutor.execute("/alert/test", exclusiveRunnable);
-	    	int waitMaxTimes = 0;
-	    	while (waitMaxTimes < 90) { //about 3 minutes waiting
-	    		if (!scheduleZkState.scheduleAcquired) {
-	    			waitMaxTimes ++;
-	    			try {
-						Thread.sleep(2000);
-					} catch (InterruptedException e) {}
-	    			continue;
-	    		}
-	    		try {
-	    			return input;
-	    		} finally {
-	    			//schedule completed
-	    			scheduleZkState.scheduleCompleted = true;
-	    		}
-	    	}
-	    	throw new RuntimeException("Acquire greedy scheduler lock failed, please retry later");
-	    }
-		
-	}
-	
-	ZookeeperEmbedded zkEmbed;
-
-	@Before
-	public void setUp() throws Exception {
-		zkEmbed = new ZookeeperEmbedded(2181);
-		zkEmbed.start();
-
-		Thread.sleep(2000);
-	}
-
-	@After
-	public void tearDown() throws Exception {
-		zkEmbed.shutdown();
-	}
-	
-	@Test
-	public void testMain() throws Exception {
-		final GreedyScheduleCoordinator coordinator = new GreedyScheduleCoordinator();
-		
-		
-		new Thread(new Runnable() {
-
-			@Override
-			public void run() {
-				System.out.println("output: " + coordinator.schedule(1));
-				
-				try {
-					Thread.sleep(1000);
-				} catch (InterruptedException e) {}
-			}
-			
-		}).start();
-		
-		new Thread(new Runnable() {
-
-			@Override
-			public void run() {
-				System.out.println("output: " + coordinator.schedule(2));
-				
-				try {
-					Thread.sleep(1000);
-				} catch (InterruptedException e) {}
-			}
-			
-		}).start();
-		
-		new Thread(new Runnable() {
-
-			@Override
-			public void run() {
-				System.out.println("output: " + coordinator.schedule(3));
-				
-				try {
-					Thread.sleep(1000);
-				} catch (InterruptedException e) {}
-			}
-			
-		}).start();
-		
-		Thread.sleep(15000);
-	}
-	
-	
+    public static class GreedyScheduleCoordinator {
+
+        public int schedule(int input) {
+            ScheduleZkState scheduleZkState = new ScheduleZkState();
+            ExclusiveExecutor.Runnable exclusiveRunnable = new ExclusiveExecutor.Runnable() {
+                @Override
+                public void run() throws Exception {
+                    scheduleZkState.scheduleAcquired = true;
+
+                    while (!scheduleZkState.scheduleCompleted) {
+                        Thread.sleep(2000);
+                    }
+                }
+            };
+            ExclusiveExecutor.execute("/alert/test", exclusiveRunnable);
+            int waitMaxTimes = 0;
+            while (waitMaxTimes < 90) { //about 3 minutes waiting
+                if (!scheduleZkState.scheduleAcquired) {
+                    waitMaxTimes++;
+                    try {
+                        Thread.sleep(2000);
+                    } catch (InterruptedException e) {
+                    }
+                    continue;
+                }
+                try {
+                    return input;
+                } finally {
+                    //schedule completed
+                    scheduleZkState.scheduleCompleted = true;
+                }
+            }
+            throw new RuntimeException("Acquire greedy scheduler lock failed, please retry later");
+        }
+
+    }
+
+    ZookeeperEmbedded zkEmbed;
+
+    @Before
+    public void setUp() throws Exception {
+        zkEmbed = new ZookeeperEmbedded(2181);
+        zkEmbed.start();
+
+        Thread.sleep(2000);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        zkEmbed.shutdown();
+    }
+
+    @Test
+    public void testMain() throws Exception {
+        final GreedyScheduleCoordinator coordinator = new GreedyScheduleCoordinator();
+
+
+        new Thread(new Runnable() {
+
+            @Override
+            public void run() {
+                System.out.println("output: " + coordinator.schedule(1));
+
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                }
+            }
+
+        }).start();
+
+        new Thread(new Runnable() {
+
+            @Override
+            public void run() {
+                System.out.println("output: " + coordinator.schedule(2));
+
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                }
+            }
+
+        }).start();
+
+        new Thread(new Runnable() {
+
+            @Override
+            public void run() {
+                System.out.println("output: " + coordinator.schedule(3));
+
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                }
+            }
+
+        }).start();
+
+        Thread.sleep(15000);
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/WorkSlotStrategyTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/WorkSlotStrategyTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/WorkSlotStrategyTest.java
index 52ea022..077e619 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/WorkSlotStrategyTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/WorkSlotStrategyTest.java
@@ -38,9 +38,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * 
  * @since Apr 27, 2016
- *
  */
 public class WorkSlotStrategyTest {
 
@@ -54,7 +52,7 @@ public class WorkSlotStrategyTest {
         partition.setType(StreamPartition.Type.GLOBAL);
         partition.setStreamId("s1");
         partition.setColumns(Arrays.asList("f1", "f2"));
-        
+
         StreamGroup group = new StreamGroup();
         group.addStreamPartition(partition);
 
@@ -148,7 +146,7 @@ public class WorkSlotStrategyTest {
             Assert.assertEquals(5, queue.getWorkingSlots().size());
             Assert.assertEquals(2, context.getTopologies().size());
             Assert.assertEquals(2, context.getTopologyUsages().size());
-            
+
             String topo2 = queue.getWorkingSlots().get(0).getTopologyName();
             String bolt2 = queue.getWorkingSlots().get(0).getBoltId();
             for (WorkSlot ws : queue.getWorkingSlots()) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/InMemMetadataServiceClient.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/InMemMetadataServiceClient.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/InMemMetadataServiceClient.java
index f19533a..5024429 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/InMemMetadataServiceClient.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/InMemMetadataServiceClient.java
@@ -38,9 +38,8 @@ import org.apache.eagle.alert.service.IMetadataServiceClient;
 /**
  * According to metadata servic client semantic, change to the interface returned value should not direclty change the
  * states.
- * 
- * @since May 5, 2016
  *
+ * @since May 5, 2016
  */
 @SuppressWarnings("serial")
 public class InMemMetadataServiceClient implements IMetadataServiceClient {
@@ -73,7 +72,7 @@ public class InMemMetadataServiceClient implements IMetadataServiceClient {
     public List<PolicyDefinition> listPolicies() {
         return Collections.unmodifiableList(policies);
     }
-    
+
     public void removePolicy(int idx) {
         policies.remove(idx);
     }



[11/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishSpecListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishSpecListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishSpecListener.java
index fc1fc28..b03305f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishSpecListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishSpecListener.java
@@ -1,11 +1,4 @@
-package org.apache.eagle.alert.engine.publisher;
-
-import java.util.Map;
-
-import org.apache.eagle.alert.coordination.model.PublishSpec;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -21,6 +14,13 @@ import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.publisher;
+
+import org.apache.eagle.alert.coordination.model.PublishSpec;
+import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
+
+import java.util.Map;
+
 public interface AlertPublishSpecListener {
     void onAlertPublishSpecChange(PublishSpec spec, Map<String, StreamDefinition> sds);
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublisher.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublisher.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublisher.java
index 5c0e597..cdd52db 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublisher.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublisher.java
@@ -1,14 +1,4 @@
-package org.apache.eagle.alert.engine.publisher;
-
-
-import java.io.Serializable;
-import java.util.Map;
-
-import org.apache.eagle.alert.engine.model.AlertStreamEvent;
-
-import com.typesafe.config.Config;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -24,10 +14,21 @@ import com.typesafe.config.Config;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.publisher;
+
+import org.apache.eagle.alert.engine.model.AlertStreamEvent;
+import com.typesafe.config.Config;
+
+import java.io.Serializable;
+import java.util.Map;
+
 public interface AlertPublisher extends AlertPublishListener, Serializable {
     @SuppressWarnings("rawtypes")
     void init(Config config, Map stormConfig);
+
     String getName();
+
     void nextEvent(AlertStreamEvent event);
+
     void close();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertSink.java
index 91c9296..991bba0 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertSink.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertSink.java
@@ -1,8 +1,4 @@
-package org.apache.eagle.alert.engine.publisher;
-
-import java.io.Serializable;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -18,16 +14,12 @@ import java.io.Serializable;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.publisher;
+
+import java.io.Serializable;
+
 public interface AlertSink extends Serializable {
-    /**
-     *
-     * @throws Exception
-     */
     void open() throws Exception;
 
-    /**
-     *
-     * @throws Exception
-     */
     void close() throws Exception;
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailContext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailContext.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailContext.java
index 8723283..77cb1a7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailContext.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailContext.java
@@ -21,7 +21,7 @@ import java.util.Map;
 
 /**
  * alert email bean
- * one email consists of a list of email component
+ * one email consists of a list of email component.
  */
 public class AlertEmailContext {
     private Map<String, String> alertContext;
@@ -38,33 +38,43 @@ public class AlertEmailContext {
     public void setAlertContext(Map<String, String> alertContext) {
         this.alertContext = alertContext;
     }
+
     public String getVelocityTplFile() {
         return velocityTplFile;
     }
+
     public void setVelocityTplFile(String velocityTplFile) {
         this.velocityTplFile = velocityTplFile;
     }
+
     public String getRecipients() {
         return recipients;
     }
+
     public void setRecipients(String recipients) {
         this.recipients = recipients;
     }
+
     public String getSender() {
         return sender;
     }
+
     public void setSender(String sender) {
         this.sender = sender;
     }
+
     public String getSubject() {
         return subject;
     }
+
     public void setSubject(String subject) {
         this.subject = subject;
     }
+
     public String getCc() {
         return cc;
     }
+
     public void setCc(String cc) {
         this.cc = cc;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGenerator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGenerator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGenerator.java
index 0c68629..06bd9ac 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGenerator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGenerator.java
@@ -20,20 +20,16 @@
  */
 package org.apache.eagle.alert.engine.publisher.email;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.publisher.PublishConstants;
 import org.apache.eagle.alert.utils.DateTimeUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.*;
+
 public class AlertEmailGenerator {
     private String tplFile;
     private String sender;
@@ -43,9 +39,9 @@ public class AlertEmailGenerator {
 
     private ThreadPoolExecutor executorPool;
 
-    private final static Logger LOG = LoggerFactory.getLogger(AlertEmailGenerator.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AlertEmailGenerator.class);
 
-    private final static long MAX_TIMEOUT_MS =60000;
+    private static final long MAX_TIMEOUT_MS = 60000;
 
     public boolean sendAlertEmail(AlertStreamEvent entity) {
         return sendAlertEmail(entity, recipients, null);
@@ -64,11 +60,13 @@ public class AlertEmailGenerator {
         email.setSender(sender);
         email.setRecipients(recipients);
         email.setCc(cc);
-        
-        /** asynchronized email sending */
+
+        /** asynchronized email sending. */
         AlertEmailSender thread = new AlertEmailSender(email, properties);
 
-        if(this.executorPool == null) throw new IllegalStateException("Invoking thread executor pool but it's is not set yet");
+        if (this.executorPool == null) {
+            throw new IllegalStateException("Invoking thread executor pool but it's is not set yet");
+        }
 
         LOG.info("Sending email  in asynchronous to: " + recipients + ", cc: " + cc);
         Future<?> future = this.executorPool.submit(thread);
@@ -79,10 +77,10 @@ public class AlertEmailGenerator {
             //LOG.info(String.format("Successfully send email to %s", recipients));
         } catch (InterruptedException | ExecutionException e) {
             status = false;
-            LOG.error(String.format("Failed to send email to %s, due to:%s", recipients, e),e);
+            LOG.error(String.format("Failed to send email to %s, due to:%s", recipients, e), e);
         } catch (TimeoutException e) {
             status = false;
-            LOG.error(String.format("Failed to send email to %s due to timeout exception, max timeout: %s ms ", recipients, MAX_TIMEOUT_MS),e);
+            LOG.error(String.format("Failed to send email to %s due to timeout exception, max timeout: %s ms ", recipients, MAX_TIMEOUT_MS), e);
         }
         return status;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGeneratorBuilder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGeneratorBuilder.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGeneratorBuilder.java
index e9635dd..b894b23 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGeneratorBuilder.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailGeneratorBuilder.java
@@ -22,38 +22,46 @@ import java.util.concurrent.ThreadPoolExecutor;
 
 public class AlertEmailGeneratorBuilder {
     private AlertEmailGenerator generator;
-    private AlertEmailGeneratorBuilder(){
+
+    private AlertEmailGeneratorBuilder() {
         generator = new AlertEmailGenerator();
     }
-    public static AlertEmailGeneratorBuilder newBuilder(){
+
+    public static AlertEmailGeneratorBuilder newBuilder() {
         return new AlertEmailGeneratorBuilder();
     }
-    public AlertEmailGeneratorBuilder withSubject(String subject){
+
+    public AlertEmailGeneratorBuilder withSubject(String subject) {
         generator.setSubject(subject);
         return this;
     }
-    public AlertEmailGeneratorBuilder withSender(String sender){
+
+    public AlertEmailGeneratorBuilder withSender(String sender) {
         generator.setSender(sender);
         return this;
     }
-    public AlertEmailGeneratorBuilder withRecipients(String recipients){
+
+    public AlertEmailGeneratorBuilder withRecipients(String recipients) {
         generator.setRecipients(recipients);
         return this;
     }
-    public AlertEmailGeneratorBuilder withTplFile(String tplFile){
+
+    public AlertEmailGeneratorBuilder withTplFile(String tplFile) {
         generator.setTplFile(tplFile);
         return this;
     }
+
     public AlertEmailGeneratorBuilder withMailProps(Map<String, String> mailProps) {
         generator.setProperties(mailProps);
         return this;
     }
+
     public AlertEmailGeneratorBuilder withExecutorPool(ThreadPoolExecutor threadPoolExecutor) {
         generator.setExecutorPool(threadPoolExecutor);
         return this;
     }
 
-    public AlertEmailGenerator build(){
+    public AlertEmailGenerator build() {
         return this.generator;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailSender.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailSender.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailSender.java
index 4091457..344b3aa 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailSender.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/AlertEmailSender.java
@@ -17,18 +17,18 @@
  */
 package org.apache.eagle.alert.engine.publisher.email;
 
-import java.lang.management.ManagementFactory;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
 import org.apache.eagle.alert.engine.publisher.PublishConstants;
 import org.apache.eagle.alert.utils.DateTimeUtil;
 import org.apache.velocity.VelocityContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.lang.management.ManagementFactory;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
 public class AlertEmailSender implements Runnable {
 
     protected final List<Map<String, String>> alertContexts = new ArrayList<Map<String, String>>();
@@ -40,25 +40,26 @@ public class AlertEmailSender implements Runnable {
     protected final String origin;
     protected boolean sentSuccessfully = false;
 
-    private final static Logger LOG = LoggerFactory.getLogger(AlertEmailSender.class);
-    private final static int MAX_RETRY_COUNT = 3;
-
+    private static final Logger LOG = LoggerFactory.getLogger(AlertEmailSender.class);
+    private static final int MAX_RETRY_COUNT = 3;
 
 
     private Map<String, String> mailProps;
 
 
     private String threadName;
+
     /**
-     * Derived class may have some additional context properties to add
+     * Derived class may have some additional context properties to add.
+     *
      * @param context velocity context
-     * @param env environment
+     * @param env     environment
      */
     protected void additionalContext(VelocityContext context, String env) {
         // By default there's no additional context added
     }
 
-    public AlertEmailSender(AlertEmailContext alertEmail){
+    public AlertEmailSender(AlertEmailContext alertEmail) {
         this.recipients = alertEmail.getRecipients();
         this.configFileName = alertEmail.getVelocityTplFile();
         this.subject = alertEmail.getSubject();
@@ -69,16 +70,18 @@ public class AlertEmailSender implements Runnable {
         String tmp = ManagementFactory.getRuntimeMXBean().getName();
         this.origin = tmp.split("@")[1] + "(pid:" + tmp.split("@")[0] + ")";
         threadName = Thread.currentThread().getName();
-        LOG.info("Initialized "+threadName+": origin is : " + this.origin+", recipient of the email: " + this.recipients +", velocity TPL file: " + this.configFileName);
+        LOG.info("Initialized " + threadName + ": origin is : " + this.origin + ", recipient of the email: " + this.recipients + ", velocity TPL file: " + this.configFileName);
     }
 
-    public AlertEmailSender(AlertEmailContext alertEmail, Map<String, String> mailProps){
+    public AlertEmailSender(AlertEmailContext alertEmail, Map<String, String> mailProps) {
         this(alertEmail);
         this.mailProps = mailProps;
     }
 
     private Properties parseMailClientConfig(Map<String, String> mailProps) {
-        if (mailProps == null) return null;
+        if (mailProps == null) {
+            return null;
+        }
         Properties props = new Properties();
         String mailHost = mailProps.get(AlertEmailConstants.CONF_MAIL_HOST);
         String mailPort = mailProps.get(AlertEmailConstants.CONF_MAIL_PORT);
@@ -103,7 +106,7 @@ public class AlertEmailSender implements Runnable {
         if (smtpConn.equalsIgnoreCase(AlertEmailConstants.CONN_SSL)) {
             props.put("mail.smtp.socketFactory.port", "465");
             props.put("mail.smtp.socketFactory.class",
-                    "javax.net.ssl.SSLSocketFactory");
+                "javax.net.ssl.SSLSocketFactory");
         }
         props.put(AlertEmailConstants.CONF_MAIL_DEBUG, mailProps.getOrDefault(AlertEmailConstants.CONF_MAIL_DEBUG, "false"));
         return props;
@@ -113,15 +116,14 @@ public class AlertEmailSender implements Runnable {
     public void run() {
         int count = 0;
         boolean success = false;
-        while(count++ < MAX_RETRY_COUNT && !success){
-            LOG.info("Sending email, tried: " + count+", max: " + MAX_RETRY_COUNT);
+        while (count++ < MAX_RETRY_COUNT && !success) {
+            LOG.info("Sending email, tried: " + count + ", max: " + MAX_RETRY_COUNT);
             try {
                 final EagleMailClient client;
                 if (mailProps != null) {
                     Properties props = parseMailClientConfig(mailProps);
                     client = new EagleMailClient(props);
-                }
-                else {
+                } else {
                     client = new EagleMailClient();
                 }
 
@@ -137,19 +139,18 @@ public class AlertEmailSender implements Runnable {
 
                 success = client.send(sender, recipients, cc, title, configFileName, context, null);
                 LOG.info("Success of sending email: " + success);
-                if(!success && count < MAX_RETRY_COUNT) {
+                if (!success && count < MAX_RETRY_COUNT) {
                     LOG.info("Sleep for a while before retrying");
                     Thread.sleep(10 * 1000);
                 }
-            }
-            catch (Exception e){
+            } catch (Exception e) {
                 LOG.warn("Sending mail exception", e);
             }
         }
         if (success) {
             sentSuccessfully = true;
             LOG.info(String.format("Successfully send email, thread: %s", threadName));
-        } else{
+        } else {
             LOG.warn(String.format("Fail sending email after tries %s times, thread: %s", MAX_RETRY_COUNT, threadName));
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/EagleMailClient.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/EagleMailClient.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/EagleMailClient.java
index 21fe354..7147894 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/EagleMailClient.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/email/EagleMailClient.java
@@ -17,219 +17,214 @@
  */
 package org.apache.eagle.alert.engine.publisher.email;
 
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.File;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-
 import javax.activation.DataHandler;
 import javax.activation.DataSource;
 import javax.activation.FileDataSource;
-import javax.mail.Authenticator;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Multipart;
-import javax.mail.PasswordAuthentication;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.internet.AddressException;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.apache.velocity.exception.ResourceNotFoundException;
-import org.apache.velocity.runtime.RuntimeConstants;
-import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import javax.mail.*;
+import javax.mail.internet.*;
 
 public class EagleMailClient {
-	private static final Logger LOG = LoggerFactory.getLogger(EagleMailClient.class);
-	private static final String BASE_PATH = "templates/";
-
-	private VelocityEngine velocityEngine;
-	private Session session;
-
-	public EagleMailClient() {
-		this(new Properties());
-	}
-	
-	public EagleMailClient(final Properties config) {
-		try {
-			velocityEngine = new VelocityEngine();
-			velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
-			velocityEngine.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
-			velocityEngine.init();
-
-			config.put("mail.transport.protocol", "smtp");
-			if(Boolean.parseBoolean(config.getProperty(AlertEmailConstants.CONF_MAIL_AUTH))){
-				session = Session.getInstance(config, new Authenticator() {
-					protected PasswordAuthentication getPasswordAuthentication() {
-						return new PasswordAuthentication(
-								config.getProperty(AlertEmailConstants.CONF_AUTH_USER),
-								config.getProperty(AlertEmailConstants.CONF_AUTH_PASSWORD)
-						);
-					}
-				});
-			} else {
-				session = Session.getInstance(config, new Authenticator() {});
-			}
-
-			final String debugMode = config.getProperty(AlertEmailConstants.CONF_MAIL_DEBUG, "false");
-			final boolean debug = Boolean.parseBoolean(debugMode);
+    private static final Logger LOG = LoggerFactory.getLogger(EagleMailClient.class);
+    private static final String BASE_PATH = "templates/";
+
+    private VelocityEngine velocityEngine;
+    private Session session;
+
+    public EagleMailClient() {
+        this(new Properties());
+    }
+
+    public EagleMailClient(final Properties config) {
+        try {
+            velocityEngine = new VelocityEngine();
+            velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+            velocityEngine.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+            velocityEngine.init();
+
+            config.put("mail.transport.protocol", "smtp");
+            if (Boolean.parseBoolean(config.getProperty(AlertEmailConstants.CONF_MAIL_AUTH))) {
+                session = Session.getInstance(config, new Authenticator() {
+                    protected PasswordAuthentication getPasswordAuthentication() {
+                        return new PasswordAuthentication(
+                            config.getProperty(AlertEmailConstants.CONF_AUTH_USER),
+                            config.getProperty(AlertEmailConstants.CONF_AUTH_PASSWORD)
+                        );
+                    }
+                });
+            } else {
+                session = Session.getInstance(config, new Authenticator() {
+                });
+            }
+
+            final String debugMode = config.getProperty(AlertEmailConstants.CONF_MAIL_DEBUG, "false");
+            final boolean debug = Boolean.parseBoolean(debugMode);
             LOG.info("Set email debug mode: " + debugMode);
-			session.setDebug(debug);
-		} catch (Exception e) {
+            session.setDebug(debug);
+        } catch (Exception e) {
             LOG.error("Failed to connect to smtp server", e);
-		}
-	}
-
-	private boolean _send(String from, String to, String cc, String title, String content) {
-		Message msg = new MimeMessage(session);
-		try {
-			msg.setFrom(new InternetAddress(from));
-			msg.setSubject(title);
-			if (to != null) {
-				msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
-			}
-			if (cc != null) {
-				msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
-			}
-			//msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(DEFAULT_BCC_ADDRESS));
-			msg.setContent(content, "text/html;charset=utf-8");
-			LOG.info(String.format("Going to send mail: from[%s], to[%s], cc[%s], title[%s]", from, to, cc, title));
-			Transport.send(msg);
-			return true;
-		} catch (AddressException e) {
-			LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
-			return false;
-		} catch (MessagingException e) {
-			LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
-			return false;
-		}
-	}
-
-	private boolean _send(String from,String to,String cc,String title,String content,List<MimeBodyPart> attachments){
-		MimeMessage  mail = new MimeMessage(session);
-		try {
-			mail.setFrom(new InternetAddress(from));
-			mail.setSubject(title);
-			if (to != null) {
-				mail.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
-			}
-			if (cc != null) {
-				mail.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
-			}
-			
-			//mail.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(DEFAULT_BCC_ADDRESS));
-
-			MimeBodyPart mimeBodyPart = new MimeBodyPart();
-			mimeBodyPart.setContent(content,"text/html;charset=utf-8");
-
-			Multipart  multipart = new MimeMultipart();
-			multipart.addBodyPart(mimeBodyPart);
-
-			for(MimeBodyPart attachment:attachments){
-				multipart.addBodyPart(attachment);
-			}
-
-			mail.setContent(multipart);
-//			mail.setContent(content, "text/html;charset=utf-8");
-			LOG.info(String.format("Going to send mail: from[%s], to[%s], cc[%s], title[%s]", from, to, cc, title));
-			Transport.send(mail);
-			return true;
-		} catch (AddressException e) {
-			LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
-			return false;
-		} catch (MessagingException e) {
-			LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
-			return false;
-		}
-	}
-
-	public boolean send(String from, String to, String cc, String title,
-			String content) {
-		return this._send(from, to, cc, title, content);
-	}
-
-	public boolean send(String from, String to, String cc, String title,
-			String templatePath, VelocityContext context) {
-		Template t = null;
-		try {
-			t = velocityEngine.getTemplate(BASE_PATH + templatePath);
-		} catch (ResourceNotFoundException ex) {
-		}
-		if (t == null) {
-			try {
-				t = velocityEngine.getTemplate(templatePath);
-			} catch (ResourceNotFoundException e) {
-				t = velocityEngine.getTemplate("/" + templatePath);
-			}
-		}
-		final StringWriter writer = new StringWriter();
-		t.merge(context, writer);
-		if(LOG.isDebugEnabled()) LOG.debug(writer.toString());
-
-		return this.send(from, to, cc, title, writer.toString());
-	}
-
-	public boolean send(String from, String to, String cc, String title,
-	                    String templatePath, VelocityContext context, Map<String,File> attachments) {
-		if (attachments == null || attachments.isEmpty()) {
-			return send(from, to, cc, title, templatePath, context);
-		}
-		Template t = null;
-
-		List<MimeBodyPart> mimeBodyParts = new ArrayList<MimeBodyPart>();
-
-		for (Map.Entry<String,File> entry : attachments.entrySet()) {
-			final String attachment = entry.getKey();
-			final File attachmentFile  = entry.getValue();
-			final MimeBodyPart mimeBodyPart = new MimeBodyPart();
-			if(attachmentFile !=null && attachmentFile.exists()){
-				DataSource source = new FileDataSource(attachmentFile);
-				try {
-					mimeBodyPart.setDataHandler(new DataHandler(source));
-					mimeBodyPart.setFileName(attachment);
-					mimeBodyPart.setDisposition(MimeBodyPart.ATTACHMENT);
-					mimeBodyPart.setContentID(attachment);
-					mimeBodyParts.add(mimeBodyPart);
-				} catch (MessagingException e) {
-					LOG.error("Generate mail failed, got exception while attaching files: " + e.getMessage(), e);
-				}
-			}else{
-				LOG.error("Attachment: " + attachment + " is null or not exists");
-			}
-		}
-
-		try {
-			t = velocityEngine.getTemplate(BASE_PATH + templatePath);
-		} catch (ResourceNotFoundException ex) {
-//			LOGGER.error("Template not found:"+BASE_PATH + templatePath, ex);
-		}
-
-		if (t == null) {
-			try {
-				t = velocityEngine.getTemplate(templatePath);
-			} catch (ResourceNotFoundException e) {
-				try {
-					t = velocityEngine.getTemplate("/" + templatePath);
-				} catch (Exception ex) {
-					LOG.error("Template not found:"+ "/" + templatePath, ex);
-				}
-			}
-		}
-
-		final StringWriter writer = new StringWriter();
-		t.merge(context, writer);
-		if(LOG.isDebugEnabled()) LOG.debug(writer.toString());
-
-		return this._send(from, to, cc, title, writer.toString(), mimeBodyParts);
-	}
+        }
+    }
+
+    private boolean sendInternal(String from, String to, String cc, String title, String content) {
+        Message msg = new MimeMessage(session);
+        try {
+            msg.setFrom(new InternetAddress(from));
+            msg.setSubject(title);
+            if (to != null) {
+                msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
+            }
+            if (cc != null) {
+                msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
+            }
+            //msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(DEFAULT_BCC_ADDRESS));
+            msg.setContent(content, "text/html;charset=utf-8");
+            LOG.info(String.format("Going to send mail: from[%s], to[%s], cc[%s], title[%s]", from, to, cc, title));
+            Transport.send(msg);
+            return true;
+        } catch (AddressException e) {
+            LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
+            return false;
+        } catch (MessagingException e) {
+            LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
+            return false;
+        }
+    }
+
+    private boolean sendInternal(String from, String to, String cc, String title, String content, List<MimeBodyPart> attachments) {
+        MimeMessage mail = new MimeMessage(session);
+        try {
+            mail.setFrom(new InternetAddress(from));
+            mail.setSubject(title);
+            if (to != null) {
+                mail.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
+            }
+            if (cc != null) {
+                mail.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
+            }
+
+            //mail.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(DEFAULT_BCC_ADDRESS));
+
+            MimeBodyPart mimeBodyPart = new MimeBodyPart();
+            mimeBodyPart.setContent(content, "text/html;charset=utf-8");
+
+            Multipart multipart = new MimeMultipart();
+            multipart.addBodyPart(mimeBodyPart);
+
+            for (MimeBodyPart attachment : attachments) {
+                multipart.addBodyPart(attachment);
+            }
+
+            mail.setContent(multipart);
+            //  mail.setContent(content, "text/html;charset=utf-8");
+            LOG.info(String.format("Going to send mail: from[%s], to[%s], cc[%s], title[%s]", from, to, cc, title));
+            Transport.send(mail);
+            return true;
+        } catch (AddressException e) {
+            LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
+            return false;
+        } catch (MessagingException e) {
+            LOG.info("Failed to send mail, got an AddressException: " + e.getMessage(), e);
+            return false;
+        }
+    }
+
+    public boolean send(String from, String to, String cc, String title,
+                        String content) {
+        return this.sendInternal(from, to, cc, title, content);
+    }
+
+    public boolean send(String from, String to, String cc, String title,
+                        String templatePath, VelocityContext context) {
+        Template t = null;
+        try {
+            t = velocityEngine.getTemplate(BASE_PATH + templatePath);
+        } catch (ResourceNotFoundException ex) {
+            // ignored
+        }
+        if (t == null) {
+            try {
+                t = velocityEngine.getTemplate(templatePath);
+            } catch (ResourceNotFoundException e) {
+                t = velocityEngine.getTemplate("/" + templatePath);
+            }
+        }
+        final StringWriter writer = new StringWriter();
+        t.merge(context, writer);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug(writer.toString());
+        }
+
+        return this.send(from, to, cc, title, writer.toString());
+    }
+
+    public boolean send(String from, String to, String cc, String title,
+                        String templatePath, VelocityContext context, Map<String, File> attachments) {
+        if (attachments == null || attachments.isEmpty()) {
+            return send(from, to, cc, title, templatePath, context);
+        }
+        Template t = null;
+
+        List<MimeBodyPart> mimeBodyParts = new ArrayList<MimeBodyPart>();
+
+        for (Map.Entry<String, File> entry : attachments.entrySet()) {
+            final String attachment = entry.getKey();
+            final File attachmentFile = entry.getValue();
+            final MimeBodyPart mimeBodyPart = new MimeBodyPart();
+            if (attachmentFile != null && attachmentFile.exists()) {
+                DataSource source = new FileDataSource(attachmentFile);
+                try {
+                    mimeBodyPart.setDataHandler(new DataHandler(source));
+                    mimeBodyPart.setFileName(attachment);
+                    mimeBodyPart.setDisposition(MimeBodyPart.ATTACHMENT);
+                    mimeBodyPart.setContentID(attachment);
+                    mimeBodyParts.add(mimeBodyPart);
+                } catch (MessagingException e) {
+                    LOG.error("Generate mail failed, got exception while attaching files: " + e.getMessage(), e);
+                }
+            } else {
+                LOG.error("Attachment: " + attachment + " is null or not exists");
+            }
+        }
+
+        try {
+            t = velocityEngine.getTemplate(BASE_PATH + templatePath);
+        } catch (ResourceNotFoundException ex) {
+            // ignored
+        }
+
+        if (t == null) {
+            try {
+                t = velocityEngine.getTemplate(templatePath);
+            } catch (ResourceNotFoundException e) {
+                try {
+                    t = velocityEngine.getTemplate("/" + templatePath);
+                } catch (Exception ex) {
+                    LOG.error("Template not found:" + "/" + templatePath, ex);
+                }
+            }
+        }
+
+        final StringWriter writer = new StringWriter();
+        t.merge(context, writer);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug(writer.toString());
+        }
+
+        return this.sendInternal(from, to, cc, title, writer.toString(), mimeBodyParts);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AbstractPublishPlugin.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AbstractPublishPlugin.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AbstractPublishPlugin.java
index 7a67011..31110ef 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AbstractPublishPlugin.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AbstractPublishPlugin.java
@@ -16,19 +16,18 @@
  */
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.alert.engine.codec.IEventSerializer;
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.publisher.AlertDeduplicator;
 import org.apache.eagle.alert.engine.publisher.AlertPublishPlugin;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 
 import java.util.Map;
 
 /**
- * @since Jun 3, 2016
- *
+ * @since Jun 3, 2016.
  */
 public abstract class AbstractPublishPlugin implements AlertPublishPlugin {
 
@@ -47,9 +46,9 @@ public abstract class AbstractPublishPlugin implements AlertPublishPlugin {
             Object obj = Class.forName(serializerClz).getConstructor(Map.class).newInstance(conf);
             if (!(obj instanceof IEventSerializer)) {
                 throw new Exception(String.format("serializer %s of publishment %s is not subclass to %s!",
-                        publishment.getSerializer(),
-                        publishment.getName(),
-                        IEventSerializer.class.getName()));
+                    publishment.getSerializer(),
+                    publishment.getName(),
+                    IEventSerializer.class.getName()));
             }
             serializer = (IEventSerializer) obj;
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertEmailPublisher.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertEmailPublisher.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertEmailPublisher.java
index a87fc7d..65837dd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertEmailPublisher.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertEmailPublisher.java
@@ -18,13 +18,13 @@
 
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import com.typesafe.config.Config;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.publisher.PublishConstants;
 import org.apache.eagle.alert.engine.publisher.email.AlertEmailGenerator;
 import org.apache.eagle.alert.engine.publisher.email.AlertEmailGeneratorBuilder;
+import com.typesafe.config.Config;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,9 +37,9 @@ import java.util.concurrent.TimeUnit;
 public class AlertEmailPublisher extends AbstractPublishPlugin {
 
     private static final Logger LOG = LoggerFactory.getLogger(AlertEmailPublisher.class);
-    private final static int DEFAULT_THREAD_POOL_CORE_SIZE = 4;
-    private final static int DEFAULT_THREAD_POOL_MAX_SIZE = 8;
-    private final static long DEFAULT_THREAD_POOL_SHRINK_TIME = 60000L; // 1 minute
+    private static final int DEFAULT_THREAD_POOL_CORE_SIZE = 4;
+    private static final int DEFAULT_THREAD_POOL_MAX_SIZE = 8;
+    private static final long DEFAULT_THREAD_POOL_SHRINK_TIME = 60000L; // 1 minute
 
     private AlertEmailGenerator emailGenerator;
     private Map<String, String> emailConfig;
@@ -60,18 +60,18 @@ public class AlertEmailPublisher extends AbstractPublishPlugin {
 
     @Override
     public void onAlert(AlertStreamEvent event) throws Exception {
-        if(emailGenerator == null) {
+        if (emailGenerator == null) {
             LOG.warn("emailGenerator is null due to the incorrect configurations");
             return;
         }
         event = dedup(event);
-        if(event == null) {
+        if (event == null) {
             return;
         }
 
         boolean isSuccess = emailGenerator.sendAlertEmail(event);
         PublishStatus status = new PublishStatus();
-        if(!isSuccess) {
+        if (!isSuccess) {
             status.errorMessage = "Failed to send email";
             status.successful = false;
         } else {
@@ -85,7 +85,7 @@ public class AlertEmailPublisher extends AbstractPublishPlugin {
     public void update(String dedupIntervalMin, Map<String, String> pluginProperties) {
         super.update(dedupIntervalMin, pluginProperties);
 
-        if (pluginProperties != null && ! emailConfig.equals(pluginProperties)) {
+        if (pluginProperties != null && !emailConfig.equals(pluginProperties)) {
             emailConfig = new HashMap<>(pluginProperties);
             emailGenerator = createEmailGenerator(pluginProperties);
         }
@@ -96,10 +96,6 @@ public class AlertEmailPublisher extends AbstractPublishPlugin {
         this.executorPool.shutdown();
     }
 
-    /**
-     * @param notificationConfig
-     * @return
-     */
     private AlertEmailGenerator createEmailGenerator(Map<String, String> notificationConfig) {
         String tplFileName = notificationConfig.get(PublishConstants.TEMPLATE);
         if (tplFileName == null || tplFileName.equals("")) {
@@ -111,31 +107,33 @@ public class AlertEmailPublisher extends AbstractPublishPlugin {
         }
         String sender = notificationConfig.get(PublishConstants.SENDER);
         String recipients = notificationConfig.get(PublishConstants.RECIPIENTS);
-        if(sender == null || recipients == null) {
+        if (sender == null || recipients == null) {
             LOG.warn("email sender or recipients is null");
             return null;
         }
-        AlertEmailGenerator gen = AlertEmailGeneratorBuilder.newBuilder().
-                withMailProps(notificationConfig).
-                withSubject(subject).
-                withSender(sender).
-                withRecipients(recipients).
-                withTplFile(tplFileName).
-                withExecutorPool(this.executorPool).build();
+        AlertEmailGenerator gen = AlertEmailGeneratorBuilder.newBuilder()
+            .withMailProps(notificationConfig)
+            .withSubject(subject)
+            .withSender(sender)
+            .withRecipients(recipients)
+            .withTplFile(tplFileName)
+            .withExecutorPool(this.executorPool).build();
         return gen;
     }
 
     @Override
-    public int hashCode(){
+    public int hashCode() {
         return new HashCodeBuilder().append(getClass().getCanonicalName()).toHashCode();
     }
 
     @Override
-    public boolean equals(Object o){
-        if(o == this)
+    public boolean equals(Object o) {
+        if (o == this) {
             return true;
-        if(!(o instanceof AlertEmailPublisher))
+        }
+        if (!(o instanceof AlertEmailPublisher)) {
             return false;
+        }
         return true;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertKafkaPublisher.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertKafkaPublisher.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertKafkaPublisher.java
index ca46aeb..048424c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertKafkaPublisher.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertKafkaPublisher.java
@@ -18,21 +18,20 @@
 
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.publisher.PublishConstants;
+import com.typesafe.config.Config;
 import org.apache.kafka.clients.producer.KafkaProducer;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 
 public class AlertKafkaPublisher extends AbstractPublishPlugin {
 
@@ -57,7 +56,7 @@ public class AlertKafkaPublisher extends AbstractPublishPlugin {
         }
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+    @SuppressWarnings( {"unchecked", "rawtypes"})
     @Override
     public void onAlert(AlertStreamEvent event) throws Exception {
         if (producer == null) {
@@ -65,7 +64,7 @@ public class AlertKafkaPublisher extends AbstractPublishPlugin {
             return;
         }
         event = dedup(event);
-        if(event == null) {
+        if (event == null) {
             return;
         }
         PublishStatus status = new PublishStatus();
@@ -86,7 +85,7 @@ public class AlertKafkaPublisher extends AbstractPublishPlugin {
             status.successful = false;
             status.errorMessage = String.format("Failed to send message to %s, due to:%s", brokerList, e);
             LOG.error(status.errorMessage, e);
-        } catch (Exception ex ) {
+        } catch (Exception ex) {
             LOG.error("fail writing alert to Kafka bus", ex);
             status.successful = false;
             status.errorMessage = ex.getMessage();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublishPluginsFactory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublishPluginsFactory.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublishPluginsFactory.java
index 82be5a0..957d356 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublishPluginsFactory.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublishPluginsFactory.java
@@ -18,17 +18,16 @@
 
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.publisher.AlertPublishPlugin;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.util.Map;
 
 /**
- * @Since on 5/11/16.
+ * @since on 5/11/16.
  */
 public class AlertPublishPluginsFactory {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublisherImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublisherImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublisherImpl.java
index f9306dc..fe1438e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublisherImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/AlertPublisherImpl.java
@@ -17,25 +17,24 @@
 
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.commons.collections.ListUtils;
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.publisher.AlertPublishPlugin;
 import org.apache.eagle.alert.engine.publisher.AlertPublisher;
+import com.typesafe.config.Config;
+import org.apache.commons.collections.ListUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 @SuppressWarnings("rawtypes")
 public class AlertPublisherImpl implements AlertPublisher {
     private static final long serialVersionUID = 4809983246198138865L;
-    private final static Logger LOG = LoggerFactory.getLogger(AlertPublisherImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AlertPublisherImpl.class);
     private final String name;
 
     private volatile Map<String, List<String>> policyPublishPluginMapping = new ConcurrentHashMap<>(1);
@@ -60,21 +59,24 @@ public class AlertPublisherImpl implements AlertPublisher {
 
     @Override
     public void nextEvent(AlertStreamEvent event) {
-        if(LOG.isDebugEnabled())
+        if (LOG.isDebugEnabled()) {
             LOG.debug(event.toString());
+        }
         notifyAlert(event);
     }
 
     private void notifyAlert(AlertStreamEvent event) {
         String policyId = event.getPolicyId();
-        if(policyId == null || !policyPublishPluginMapping.containsKey(policyId)) {
+        if (policyId == null || !policyPublishPluginMapping.containsKey(policyId)) {
             LOG.warn("Policy {} does NOT subscribe any publishments", policyId);
             return;
         }
-        for(String id: policyPublishPluginMapping.get(policyId)) {
+        for (String id : policyPublishPluginMapping.get(policyId)) {
             AlertPublishPlugin plugin = publishPluginMapping.get(id);
             try {
-                if(LOG.isDebugEnabled()) LOG.debug("Execute alert publisher " + plugin.getClass().getCanonicalName());
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Execute alert publisher " + plugin.getClass().getCanonicalName());
+                }
                 plugin.onAlert(event);
             } catch (Exception ex) {
                 LOG.error("Fail invoking publisher's onAlert, continue ", ex);
@@ -93,10 +95,18 @@ public class AlertPublisherImpl implements AlertPublisher {
                                 List<Publishment> removed,
                                 List<Publishment> afterModified,
                                 List<Publishment> beforeModified) {
-        if (added == null) added = new ArrayList<>();
-        if (removed == null) removed = new ArrayList<>();
-        if (afterModified == null) afterModified = new ArrayList<>();
-        if (beforeModified == null) beforeModified = new ArrayList<>();
+        if (added == null) {
+            added = new ArrayList<>();
+        }
+        if (removed == null) {
+            removed = new ArrayList<>();
+        }
+        if (afterModified == null) {
+            afterModified = new ArrayList<>();
+        }
+        if (beforeModified == null) {
+            beforeModified = new ArrayList<>();
+        }
 
         if (afterModified.size() != beforeModified.size()) {
             LOG.warn("beforeModified size != afterModified size");
@@ -109,7 +119,7 @@ public class AlertPublisherImpl implements AlertPublisher {
             }
 
             AlertPublishPlugin plugin = AlertPublishPluginsFactory.createNotificationPlugin(publishment, config, conf);
-            if(plugin != null) {
+            if (plugin != null) {
                 publishPluginMapping.put(publishment.getName(), plugin);
                 onPolicyAdded(publishment.getPolicyIds(), publishment.getName());
             } else {
@@ -127,7 +137,7 @@ public class AlertPublisherImpl implements AlertPublisher {
             List<String> newPolicies = afterModified.get(i).getPolicyIds();
             List<String> oldPolicies = beforeModified.get(i).getPolicyIds();
 
-            if (! newPolicies.equals(oldPolicies)) {
+            if (!newPolicies.equals(oldPolicies)) {
                 List<String> deletedPolicies = ListUtils.subtract(oldPolicies, newPolicies);
                 onPolicyDeleted(deletedPolicies, pubName);
                 List<String> addedPolicies = ListUtils.subtract(newPolicies, oldPolicies);
@@ -139,7 +149,9 @@ public class AlertPublisherImpl implements AlertPublisher {
     }
 
     private synchronized void onPolicyAdded(List<String> addedPolicyIds, String pubName) {
-        if (addedPolicyIds == null || pubName == null) return;
+        if (addedPolicyIds == null || pubName == null) {
+            return;
+        }
 
         for (String policyId : addedPolicyIds) {
             if (policyPublishPluginMapping.get(policyId) == null) {
@@ -151,7 +163,9 @@ public class AlertPublisherImpl implements AlertPublisher {
     }
 
     private synchronized void onPolicyDeleted(List<String> deletedPolicyIds, String pubName) {
-        if (deletedPolicyIds == null || pubName == null) return;
+        if (deletedPolicyIds == null || pubName == null) {
+            return;
+        }
 
         for (String policyId : deletedPolicyIds) {
             List<String> publishIds = policyPublishPluginMapping.get(policyId);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/DefaultDeduplicator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/DefaultDeduplicator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/DefaultDeduplicator.java
index 43be2e1..258f613 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/DefaultDeduplicator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/DefaultDeduplicator.java
@@ -17,10 +17,10 @@
  */
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import org.apache.commons.lang.time.DateUtils;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.publisher.AlertDeduplicator;
+import org.apache.commons.lang.time.DateUtils;
 import org.joda.time.Period;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,121 +32,118 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 public class DefaultDeduplicator implements AlertDeduplicator {
-	private long dedupIntervalMin;
-	private List<String> customDedupFields = new ArrayList<>();
-	private volatile Map<EventUniq, Long> events = new HashMap<>();
-	private static Logger LOG = LoggerFactory.getLogger(DefaultDeduplicator.class);
-
-	public enum AlertDeduplicationStatus{
-		NEW,
-		DUPLICATED,
-		IGNORED
-	}
-	
-	public DefaultDeduplicator() {
-		this.dedupIntervalMin = 0;
-	}
-
-	public DefaultDeduplicator(String intervalMin) {
-		setDedupIntervalMin(intervalMin);
-	}
-	
-	public DefaultDeduplicator(long intervalMin) {
-		this.dedupIntervalMin = intervalMin;
-	}
-
-	public DefaultDeduplicator(String intervalMin, List<String> customDedupFields) {
-		setDedupIntervalMin(intervalMin);
-		if (customDedupFields != null){
-			this.customDedupFields = customDedupFields;
-		}
-	}
-	
-	public void clearOldCache() {
-		List<EventUniq> removedkeys = new ArrayList<>();
-		for (Entry<EventUniq, Long> entry : events.entrySet()) {
-			EventUniq entity = entry.getKey();
-			if (System.currentTimeMillis() - 7 * DateUtils.MILLIS_PER_DAY > entity.createdTime) {
-				removedkeys.add(entry.getKey());
-			}
-		}
-		for (EventUniq alertKey : removedkeys) {
-			events.remove(alertKey);
-		}
-	}
-
-	/***
-	 *
-	 * @param key
-	 * @return
-	 */
-	public AlertDeduplicationStatus checkDedup(EventUniq key) {
-		long current = key.timestamp;
-		if(!events.containsKey(key)) {
-			events.put(key, current);
-			return AlertDeduplicationStatus.NEW;
-		}
-		
-		long last = events.get(key);
-		if(current - last >= dedupIntervalMin * DateUtils.MILLIS_PER_MINUTE) {
-			events.put(key, current);
-			return AlertDeduplicationStatus.IGNORED;
-		}
-
-		return AlertDeduplicationStatus.DUPLICATED;
-	}
-	
-	public AlertStreamEvent dedup(AlertStreamEvent event) {
-        if (event == null) return null;
-		clearOldCache();
-		AlertStreamEvent result = null;
-
-		// check custom field, and get the field values
-		StreamDefinition streamDefinition = event.getSchema();
-		HashMap<String, String> customFieldValues = new HashMap<>();
-		for (int i = 0; i < event.getData().length; i++){
-			if (i > streamDefinition.getColumns().size()) {
-				if (LOG.isWarnEnabled()) {
-					LOG.warn("output column does not found for event data, this indicate code error!");
-				}
-				continue;
-			}
-			String colName = streamDefinition.getColumns().get(i).getName();
-
-			for (String field : customDedupFields){
-				if (colName.equals(field)){
-					customFieldValues.put(field, event.getData()[i].toString());
-					break;
-				}
-			}
-		}
-
-		AlertDeduplicationStatus status = checkDedup(
-				new EventUniq(event.getStreamId(),
-						event.getPolicyId(),
-						event.getCreatedTime(),
-						customFieldValues));
-		if (!status.equals(AlertDeduplicationStatus.DUPLICATED)) {
-			result = event;
-		} else if(LOG.isDebugEnabled()){
-			LOG.debug("Alert event is skipped because it's duplicated: {}", event.toString());
-		}
-		return result;
-	}
-
-	@Override
-	public void setDedupIntervalMin(String newDedupIntervalMin) {
-		if (newDedupIntervalMin == null || newDedupIntervalMin.isEmpty()) {
-			dedupIntervalMin = 0;
+    private long dedupIntervalMin;
+    private List<String> customDedupFields = new ArrayList<>();
+    private volatile Map<EventUniq, Long> events = new HashMap<>();
+    private static Logger LOG = LoggerFactory.getLogger(DefaultDeduplicator.class);
+
+    public enum AlertDeduplicationStatus {
+        NEW,
+        DUPLICATED,
+        IGNORED
+    }
+
+    public DefaultDeduplicator() {
+        this.dedupIntervalMin = 0;
+    }
+
+    public DefaultDeduplicator(String intervalMin) {
+        setDedupIntervalMin(intervalMin);
+    }
+
+    public DefaultDeduplicator(long intervalMin) {
+        this.dedupIntervalMin = intervalMin;
+    }
+
+    public DefaultDeduplicator(String intervalMin, List<String> customDedupFields) {
+        setDedupIntervalMin(intervalMin);
+        if (customDedupFields != null) {
+            this.customDedupFields = customDedupFields;
+        }
+    }
+
+    public void clearOldCache() {
+        List<EventUniq> removedkeys = new ArrayList<>();
+        for (Entry<EventUniq, Long> entry : events.entrySet()) {
+            EventUniq entity = entry.getKey();
+            if (System.currentTimeMillis() - 7 * DateUtils.MILLIS_PER_DAY > entity.createdTime) {
+                removedkeys.add(entry.getKey());
+            }
+        }
+        for (EventUniq alertKey : removedkeys) {
+            events.remove(alertKey);
+        }
+    }
+
+    public AlertDeduplicationStatus checkDedup(EventUniq key) {
+        long current = key.timestamp;
+        if (!events.containsKey(key)) {
+            events.put(key, current);
+            return AlertDeduplicationStatus.NEW;
+        }
+
+        long last = events.get(key);
+        if (current - last >= dedupIntervalMin * DateUtils.MILLIS_PER_MINUTE) {
+            events.put(key, current);
+            return AlertDeduplicationStatus.IGNORED;
+        }
+
+        return AlertDeduplicationStatus.DUPLICATED;
+    }
+
+    public AlertStreamEvent dedup(AlertStreamEvent event) {
+        if (event == null) {
+            return null;
+        }
+        clearOldCache();
+        AlertStreamEvent result = null;
+
+        // check custom field, and get the field values
+        StreamDefinition streamDefinition = event.getSchema();
+        HashMap<String, String> customFieldValues = new HashMap<>();
+        for (int i = 0; i < event.getData().length; i++) {
+            if (i > streamDefinition.getColumns().size()) {
+                if (LOG.isWarnEnabled()) {
+                    LOG.warn("output column does not found for event data, this indicate code error!");
+                }
+                continue;
+            }
+            String colName = streamDefinition.getColumns().get(i).getName();
+
+            for (String field : customDedupFields) {
+                if (colName.equals(field)) {
+                    customFieldValues.put(field, event.getData()[i].toString());
+                    break;
+                }
+            }
+        }
+
+        AlertDeduplicationStatus status = checkDedup(
+            new EventUniq(event.getStreamId(),
+                event.getPolicyId(),
+                event.getCreatedTime(),
+                customFieldValues));
+        if (!status.equals(AlertDeduplicationStatus.DUPLICATED)) {
+            result = event;
+        } else if (LOG.isDebugEnabled()) {
+            LOG.debug("Alert event is skipped because it's duplicated: {}", event.toString());
+        }
+        return result;
+    }
+
+    @Override
+    public void setDedupIntervalMin(String newDedupIntervalMin) {
+        if (newDedupIntervalMin == null || newDedupIntervalMin.isEmpty()) {
+            dedupIntervalMin = 0;
             return;
-		}
-		try {
-			Period period = Period.parse(newDedupIntervalMin);
-			this.dedupIntervalMin = period.toStandardMinutes().getMinutes();
-		} catch (Exception e) {
-			LOG.warn("Fail to pares deDupIntervalMin, will disable deduplication instead", e);
-			this.dedupIntervalMin = 0;
-		}
-	}
+        }
+        try {
+            Period period = Period.parse(newDedupIntervalMin);
+            this.dedupIntervalMin = period.toStandardMinutes().getMinutes();
+        } catch (Exception e) {
+            LOG.warn("Fail to pares deDupIntervalMin, will disable deduplication instead", e);
+            this.dedupIntervalMin = 0;
+        }
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/EventUniq.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/EventUniq.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/EventUniq.java
index 79fa6cc..1b90833 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/EventUniq.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/EventUniq.java
@@ -16,7 +16,7 @@
  *
  */
 /**
- * 
+ *
  */
 package org.apache.eagle.alert.engine.publisher.impl;
 
@@ -25,50 +25,50 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
 import java.util.HashMap;
 
 /**
- * @since Mar 19, 2015
+ * @since Mar 19, 2015.
  */
 public class EventUniq {
-	public String streamId;
-	public String policyId;
-	public Long timestamp;	 // event's createTimestamp
-	public long createdTime; // created time, for cache removal;
-	public HashMap<String, String> customFieldValues;
+    public String streamId;
+    public String policyId;
+    public Long timestamp;     // event's createTimestamp
+    public long createdTime; // created time, for cache removal;
+    public HashMap<String, String> customFieldValues;
 
-	public EventUniq(String streamId, String policyId, long timestamp) {
-		this.streamId = streamId;
-		this.timestamp = timestamp;
-		this.policyId = policyId;
-		this.createdTime = System.currentTimeMillis();
-	}
+    public EventUniq(String streamId, String policyId, long timestamp) {
+        this.streamId = streamId;
+        this.timestamp = timestamp;
+        this.policyId = policyId;
+        this.createdTime = System.currentTimeMillis();
+    }
 
-	public EventUniq(String streamId, String policyId, long timestamp, HashMap<String, String> customFieldValues) {
-		this.streamId = streamId;
-		this.timestamp = timestamp;
-		this.policyId = policyId;
-		this.createdTime = System.currentTimeMillis();
-		this.customFieldValues = customFieldValues;
-	}
+    public EventUniq(String streamId, String policyId, long timestamp, HashMap<String, String> customFieldValues) {
+        this.streamId = streamId;
+        this.timestamp = timestamp;
+        this.policyId = policyId;
+        this.createdTime = System.currentTimeMillis();
+        this.customFieldValues = customFieldValues;
+    }
 
-	@Override
-	public boolean equals(Object obj) {
-		if (obj instanceof EventUniq) {
-			EventUniq au = (EventUniq) obj;
-			boolean result = this.streamId.equalsIgnoreCase(au.streamId) & this.policyId.equalsIgnoreCase(au.policyId);
-			if (this.customFieldValues != null && au.customFieldValues != null) {
-				result = result & this.customFieldValues.equals(au.customFieldValues);
-			}
-			return result;
-		}
-		return false;
-	}
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof EventUniq) {
+            EventUniq au = (EventUniq) obj;
+            boolean result = this.streamId.equalsIgnoreCase(au.streamId) & this.policyId.equalsIgnoreCase(au.policyId);
+            if (this.customFieldValues != null && au.customFieldValues != null) {
+                result = result & this.customFieldValues.equals(au.customFieldValues);
+            }
+            return result;
+        }
+        return false;
+    }
 
-	@Override
-	public int hashCode() {
-		HashCodeBuilder builder = new HashCodeBuilder().append(streamId).append(policyId);
+    @Override
+    public int hashCode() {
+        HashCodeBuilder builder = new HashCodeBuilder().append(streamId).append(policyId);
 
-		if (customFieldValues != null){
-			builder.append(customFieldValues);
-		}
-		return builder.build();
-	}
+        if (customFieldValues != null) {
+            builder.append(customFieldValues);
+        }
+        return builder.build();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/JsonEventSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/JsonEventSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/JsonEventSerializer.java
index a448703..aa22884 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/JsonEventSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/JsonEventSerializer.java
@@ -28,8 +28,7 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * @since Jul 9, 2016
- *
+ * @since Jul 9, 2016.
  */
 public class JsonEventSerializer implements IEventSerializer {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/KafkaProducerManager.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/KafkaProducerManager.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/KafkaProducerManager.java
index fb038ba..423017b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/KafkaProducerManager.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/KafkaProducerManager.java
@@ -17,13 +17,13 @@
  */
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import java.util.Map;
-import java.util.Properties;
-
 import org.apache.kafka.clients.producer.KafkaProducer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Map;
+import java.util.Properties;
+
 /**
  * The producer is thread safe and sharing a single producer instance across threads will generally be faster than
  * having multiple instances.
@@ -33,16 +33,16 @@ public class KafkaProducerManager {
 
     private static final String STRING_SERIALIZER = "org.apache.kafka.common.serialization.StringSerializer";
     private static final String STRING_DESERIALIZER = "org.apache.kafka.common.serialization.StringDeserializer";
-    
+
     private static final String VALUE_DESERIALIZER = "value.deserializer";
     private static final String VALUE_DESERIALIZER_UNDERSCORE = "value_deserializer";
-    
+
     private static final String VALUE_SERIALIZER = "value.serializer";
     private static final String VALUE_SERIALIZER_UNDERSCORE = "value_serializer";
-    
+
     private static final String KEY_DESERIALIZER = "key.deserializer";
     private static final String KEY_DESERIALIZER_UNDERSCORE = "key_deserializer";
-    
+
     private static final String KEY_SERIALIZER = "key.serializer";
     private static final String KEY_SERIALIZER_UNDERSCORE = "key_serializer";
 
@@ -73,7 +73,7 @@ public class KafkaProducerManager {
             configMap.put(VALUE_SERIALIZER, STRING_SERIALIZER);
         }
         configMap.put("request.required.acks", "1");
-        
+
         // value deserializer
         if (kafkaConfig.containsKey(VALUE_DESERIALIZER_UNDERSCORE)) {
             configMap.put(VALUE_DESERIALIZER, kafkaConfig.get(VALUE_DESERIALIZER_UNDERSCORE));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/PublishStatus.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/PublishStatus.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/PublishStatus.java
index c165686..44f902c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/PublishStatus.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/PublishStatus.java
@@ -19,9 +19,9 @@
 package org.apache.eagle.alert.engine.publisher.impl;
 
 /**
- * Object that holds the status of Notification Posted to Notification Plugin  
+ * Object that holds the status of Notification Posted to Notification Plugin.
  */
 public class PublishStatus {
-	public boolean successful;
-	public String errorMessage;
+    public boolean successful;
+    public String errorMessage;
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/StringEventSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/StringEventSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/StringEventSerializer.java
index 012ebaa..5eb444d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/StringEventSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/impl/StringEventSerializer.java
@@ -16,17 +16,16 @@
  */
 package org.apache.eagle.alert.engine.publisher.impl;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.engine.codec.IEventSerializer;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 
+import java.util.Map;
+
 /**
- * @since Jun 3, 2016
- *
+ * @since Jun 3, 2016.
  */
 public class StringEventSerializer implements IEventSerializer {
-    
+
     @SuppressWarnings("rawtypes")
     public StringEventSerializer(Map stormConf) {
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/AlertBoltSpecListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/AlertBoltSpecListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/AlertBoltSpecListener.java
index e1f3e9c..84345dd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/AlertBoltSpecListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/AlertBoltSpecListener.java
@@ -19,11 +19,11 @@
 
 package org.apache.eagle.alert.engine.router;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.AlertBoltSpec;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 
+import java.util.Map;
+
 /**
  * Since 5/2/16.
  */

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/SpoutSpecListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/SpoutSpecListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/SpoutSpecListener.java
index aa40dc5..598ce18 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/SpoutSpecListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/SpoutSpecListener.java
@@ -19,11 +19,11 @@
 
 package org.apache.eagle.alert.engine.router;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 
+import java.util.Map;
+
 /**
  * Since 5/3/16.
  */

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoute.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoute.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoute.java
index 07518d9..049e852 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoute.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoute.java
@@ -1,42 +1,43 @@
-package org.apache.eagle.alert.engine.router;
-
-import java.io.Serializable;
-
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
  *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.eagle.alert.engine.router;
+
+import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
+import java.io.Serializable;
+
+/**
  * <b></b>
  * 1. Group by SingleStream[stream_1.col1]
  *
- * Shuffle(stream_1,[col1])
+ * <p>Shuffle(stream_1,[col1])</p>
  *
  * <b></b>
  * 2. Group by SingleStream[stream_1.col1,stream_1.col2]
  *
- * Shuffle(stream_1,[col1,col2])
+ * <p>Shuffle(stream_1,[col1,col2])</p>
  *
  * <b></b>
  * 3. Group by JoinedStream[stream_1.col1,stream_1.col2,stream_2.col3]
- *
- * Shuffle(stream_1.col1,stream_1.col2) + Global(stream_2.col3)
+ * <p>Shuffle(stream_1.col1,stream_1.col2) + Global(stream_2.col3)</p>
  */
-public class StreamRoute implements Serializable{
+public class StreamRoute implements Serializable {
     private static final long serialVersionUID = 4649184902196034940L;
 
     private String targetComponentId;
@@ -51,7 +52,7 @@ public class StreamRoute implements Serializable{
         this.targetComponentId = targetComponentId;
     }
 
-    public StreamRoute(String targetComponentId, int partitionKey, StreamPartition.Type type){
+    public StreamRoute(String targetComponentId, int partitionKey, StreamPartition.Type type) {
         this.setTargetComponentId(targetComponentId);
         this.setPartitionKey(partitionKey);
         this.setPartitionType(type);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitionFactory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitionFactory.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitionFactory.java
index 6dcd312..0d397e4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitionFactory.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitionFactory.java
@@ -16,15 +16,15 @@
  */
 package org.apache.eagle.alert.engine.router;
 
-import java.util.List;
-
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.router.impl.BasicStreamRoutePartitioner;
 
+import java.util.List;
+
 public class StreamRoutePartitionFactory {
     /**
-     * TODO: Decouple different StreamRoutePartitioner implementation from BasicStreamRoutePartitioner
+     * TODO: Decouple different StreamRoutePartitioner implementation from BasicStreamRoutePartitioner.
      *
      * @param outputComponentIds
      * @param streamDefinition

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitioner.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitioner.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitioner.java
index 213abef..5b5632d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitioner.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRoutePartitioner.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -16,14 +16,10 @@
  */
 package org.apache.eagle.alert.engine.router;
 
-import java.util.List;
-
 import org.apache.eagle.alert.engine.model.StreamEvent;
 
+import java.util.List;
+
 public interface StreamRoutePartitioner {
-    /**
-     * @param event
-     * @return
-     */
     List<StreamRoute> partition(StreamEvent event);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouteSpecListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouteSpecListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouteSpecListener.java
index abc465d..dfd2cc4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouteSpecListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouteSpecListener.java
@@ -1,12 +1,4 @@
-package org.apache.eagle.alert.engine.router;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -22,6 +14,14 @@ import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.router;
+
+import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
+import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
+
+import java.util.Collection;
+import java.util.Map;
+
 public interface StreamRouteSpecListener {
     void onStreamRouterSpecChange(Collection<StreamRouterSpec> added,
                                   Collection<StreamRouterSpec> removed,


[16/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java
index 42bf5d5..bf0b365 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java
@@ -16,198 +16,193 @@
  */
 package org.apache.eagle.alert.metric.reporter;
 
-import java.util.Map;
-import java.util.Properties;
-import java.util.SortedMap;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
 import org.apache.eagle.alert.metric.entity.MetricEvent;
 import org.apache.eagle.alert.utils.ByteUtils;
+import com.codahale.metrics.*;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Preconditions;
+import com.typesafe.config.Config;
 import org.apache.kafka.clients.producer.KafkaProducer;
 import org.apache.kafka.clients.producer.Producer;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import com.codahale.metrics.ConsoleReporter;
-import com.codahale.metrics.Counter;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Histogram;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricFilter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.ScheduledReporter;
-import com.codahale.metrics.Timer;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Preconditions;
-import com.typesafe.config.Config;
+import java.util.Map;
+import java.util.Properties;
+import java.util.SortedMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 public class KafkaReporter extends ScheduledReporter {
-	private final static Logger LOG = LoggerFactory.getLogger(KafkaReporter.class);
-	private final String topic;
-	private final Properties properties;
-	private final Producer<byte[], String> producer;
-	private final Map<String, Object> additionalFields;
-
-	protected KafkaReporter(MetricRegistry registry, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit, String topic, Properties config, Map<String, Object> additionalFields) {
-		super(registry, "kafka-reporter", filter, rateUnit, durationUnit);
-		this.topic = topic;
-		this.properties = new Properties();
-		Preconditions.checkNotNull(topic,"topic should not be null");
-//		properties.put("bootstrap.servers", brokerList);
-//		properties.put("metadata.broker.list", brokerList);
-		properties.put("key.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");
-		properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
-		properties.put("request.required.acks", "1");
-		properties.put("key.deserializer","org.apache.kafka.common.serialization.ByteArraySerializer");
-		properties.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
-		if(config != null) {
-			LOG.info(config.toString());
-			properties.putAll(config);
-		}
-		this.additionalFields = additionalFields;
-		this.producer = new KafkaProducer<>(properties);
-		LOG.info("Initialized kafka-reporter");
-	}
-
-	@SuppressWarnings("rawtypes")
+    private static final Logger LOG = LoggerFactory.getLogger(KafkaReporter.class);
+    private final String topic;
+    private final Properties properties;
+    private final Producer<byte[], String> producer;
+    private final Map<String, Object> additionalFields;
+
+    protected KafkaReporter(MetricRegistry registry, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit, String topic, Properties config, Map<String, Object> additionalFields) {
+        super(registry, "kafka-reporter", filter, rateUnit, durationUnit);
+        this.topic = topic;
+        this.properties = new Properties();
+        Preconditions.checkNotNull(topic, "topic should not be null");
+        // properties.put("bootstrap.servers", brokerList);
+        // properties.put("metadata.broker.list", brokerList);
+        properties.put("key.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");
+        properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
+        properties.put("request.required.acks", "1");
+        properties.put("key.deserializer", "org.apache.kafka.common.serialization.ByteArraySerializer");
+        properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
+        if (config != null) {
+            LOG.info(config.toString());
+            properties.putAll(config);
+        }
+        this.additionalFields = additionalFields;
+        this.producer = new KafkaProducer<>(properties);
+        LOG.info("Initialized kafka-reporter");
+    }
+
+    @SuppressWarnings("rawtypes")
+    @Override
+    public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters,
+                       SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters, SortedMap<String, Timer> timers) {
+        for (SortedMap.Entry<String, Gauge> entry : gauges.entrySet()) {
+            onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
+        }
+        for (SortedMap.Entry<String, Counter> entry : counters.entrySet()) {
+            onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
+        }
+        for (SortedMap.Entry<String, Histogram> entry : histograms.entrySet()) {
+            onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
+        }
+        for (SortedMap.Entry<String, Meter> entry : meters.entrySet()) {
+            onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
+        }
+        for (SortedMap.Entry<String, Timer> entry : timers.entrySet()) {
+            onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
+        }
+    }
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    private void onMetricEvent(MetricEvent event) {
+        try {
+            if (additionalFields != null) {
+                event.putAll(additionalFields);
+            }
+            // TODO: Support configurable partition key
+            byte[] key = ByteUtils.intToBytes(event.hashCode());
+            ProducerRecord<byte[], String> record = new ProducerRecord<>(topic, key, OBJECT_MAPPER.writeValueAsString(event));
+            // TODO: Support configuration timeout
+            this.producer.send(record).get(5, TimeUnit.SECONDS);
+        } catch (JsonProcessingException e) {
+            LOG.error("Failed to serialize {} as json", event, e);
+        } catch (InterruptedException | ExecutionException | TimeoutException e) {
+            LOG.error("Failed to produce message to topic {}", topic, e);
+        }
+    }
+
+    @Override
+    public void stop() {
+        this.producer.close();
+        super.stop();
+    }
+
     @Override
-	public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters, SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters, SortedMap<String, Timer> timers) {
-		for(SortedMap.Entry<String, Gauge> entry:gauges.entrySet()){
-			onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
-		}
-		for(SortedMap.Entry<String, Counter> entry:counters.entrySet()){
-			onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
-		}
-		for(SortedMap.Entry<String, Histogram> entry:histograms.entrySet()){
-			onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
-		}
-		for(SortedMap.Entry<String, Meter> entry:meters.entrySet()){
-			onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
-		}
-		for(SortedMap.Entry<String, Timer> entry:timers.entrySet()){
-			onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build());
-		}
-	}
-
-	private final static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
-	private void onMetricEvent(MetricEvent event){
-		try {
-			if(additionalFields!=null){
-				event.putAll(additionalFields);
-			}
-			// TODO: Support configurable partition key
-			byte[] key = ByteUtils.intToBytes(event.hashCode());
-			ProducerRecord<byte[],String> record  = new ProducerRecord<>(topic, key, OBJECT_MAPPER.writeValueAsString(event));
-			// TODO: Support configuration timeout
-			this.producer.send(record).get(5,TimeUnit.SECONDS);
-		} catch (JsonProcessingException e) {
-			LOG.error("Failed to serialize {} as json",event,e);
-		} catch (InterruptedException | ExecutionException | TimeoutException e) {
-			LOG.error("Failed to produce message to topic {}",topic,e);
-		}
-	}
-
-	@Override
-	public void stop() {
-		this.producer.close();
-		super.stop();
-	}
-
-	@Override
-	public void close() {
-		this.producer.close();
-		super.close();
-	}
-
-	public static Builder forRegistry(MetricRegistry registry){
-		return new Builder(registry);
-	}
-
-	public static class Builder{
-		private final MetricRegistry registry;
-		private TimeUnit rateUnit;
-		private TimeUnit durationUnit;
-		private MetricFilter filter;
-		private String topic;
-		private Properties properties;
-		private Map<String, Object> additionalFields;
-
-		private Builder(MetricRegistry registry) {
-			this.registry = registry;
-			this.rateUnit = TimeUnit.SECONDS;
-			this.durationUnit = TimeUnit.MILLISECONDS;
-			this.filter = MetricFilter.ALL;
-		}
-
-		/**
-		 * Convert rates to the given time unit.
-		 *
-		 * @param rateUnit a unit of time
-		 * @return {@code this}
-		 */
-		public Builder convertRatesTo(TimeUnit rateUnit) {
-			this.rateUnit = rateUnit;
-			return this;
-		}
-
-		/**
-		 * Convert durations to the given time unit.
-		 *
-		 * @param durationUnit a unit of time
-		 * @return {@code this}
-		 */
-		public Builder convertDurationsTo(TimeUnit durationUnit) {
-			this.durationUnit = durationUnit;
-			return this;
-		}
-
-		/**
-		 * Only report metrics which match the given filter.
-		 *
-		 * @param filter a {@link MetricFilter}
-		 * @return {@code this}
-		 */
-		public Builder filter(MetricFilter filter) {
-			this.filter = filter;
-			return this;
-		}
-
-		public Builder topic(String topic){
-			this.topic = topic;
-			return this;
-		}
-
-		public Builder config(Properties properties){
-			this.properties = properties;
-			return this;
-		}
-
-		/**
-		 * Builds a {@link ConsoleReporter} with the given properties.
-		 *
-		 * @return a {@link ConsoleReporter}
-		 */
-		public KafkaReporter build() {
-			if(topic == null && properties!=null) topic = properties.getProperty("topic");
-			return new KafkaReporter(registry,filter,rateUnit,durationUnit,topic,properties,additionalFields);
-		}
-
-		@SuppressWarnings("serial")
+    public void close() {
+        this.producer.close();
+        super.close();
+    }
+
+    public static Builder forRegistry(MetricRegistry registry) {
+        return new Builder(registry);
+    }
+
+    public static class Builder {
+        private final MetricRegistry registry;
+        private TimeUnit rateUnit;
+        private TimeUnit durationUnit;
+        private MetricFilter filter;
+        private String topic;
+        private Properties properties;
+        private Map<String, Object> additionalFields;
+
+        private Builder(MetricRegistry registry) {
+            this.registry = registry;
+            this.rateUnit = TimeUnit.SECONDS;
+            this.durationUnit = TimeUnit.MILLISECONDS;
+            this.filter = MetricFilter.ALL;
+        }
+
+        /**
+         * Convert rates to the given time unit.
+         *
+         * @param rateUnit a unit of time
+         * @return {@code this}
+         */
+        public Builder convertRatesTo(TimeUnit rateUnit) {
+            this.rateUnit = rateUnit;
+            return this;
+        }
+
+        /**
+         * Convert durations to the given time unit.
+         *
+         * @param durationUnit a unit of time
+         * @return {@code this}
+         */
+        public Builder convertDurationsTo(TimeUnit durationUnit) {
+            this.durationUnit = durationUnit;
+            return this;
+        }
+
+        /**
+         * Only report metrics which match the given filter.
+         *
+         * @param filter a {@link MetricFilter}
+         * @return {@code this}
+         */
+        public Builder filter(MetricFilter filter) {
+            this.filter = filter;
+            return this;
+        }
+
+        public Builder topic(String topic) {
+            this.topic = topic;
+            return this;
+        }
+
+        /**
+         * Builds a {@link ConsoleReporter} with the given properties.
+         *
+         * @return a {@link ConsoleReporter}
+         */
+        public KafkaReporter build() {
+            if (topic == null && properties != null) {
+                topic = properties.getProperty("topic");
+            }
+            return new KafkaReporter(registry, filter, rateUnit, durationUnit, topic, properties, additionalFields);
+        }
+
+        @SuppressWarnings("serial")
         public Builder config(Config config) {
-			this.config(new Properties(){{
-				putAll(config.root().unwrapped());
-			}});
-			return this;
-		}
-
-		public Builder addFields(Map<String, Object> tags) {
-			this.additionalFields = tags;
-			return this;
-		}
-	}
+            this.config(new Properties() {
+                {
+                    putAll(config.root().unwrapped());
+                }
+            });
+            return this;
+        }
+
+        public Builder config(Properties properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public Builder addFields(Map<String, Object> tags) {
+            this.additionalFields = tags;
+            return this;
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java
index fd6cc41..6ded685 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java
@@ -1,12 +1,4 @@
-package org.apache.eagle.alert.metric.sink;
-
-import java.util.concurrent.TimeUnit;
-
-import com.codahale.metrics.ConsoleReporter;
-import com.codahale.metrics.MetricRegistry;
-import com.typesafe.config.Config;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -22,15 +14,24 @@ import com.typesafe.config.Config;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
+package org.apache.eagle.alert.metric.sink;
+
+import com.codahale.metrics.ConsoleReporter;
+import com.codahale.metrics.MetricRegistry;
+import com.typesafe.config.Config;
+import java.util.concurrent.TimeUnit;
+
 public class ConsoleSink implements MetricSink {
     private ConsoleReporter reporter;
+
     @Override
     public void prepare(Config config, MetricRegistry registry) {
         reporter = ConsoleReporter.forRegistry(registry).build();
     }
 
     @Override
-    public void start(long period,TimeUnit unit) {
+    public void start(long period, TimeUnit unit) {
         reporter.start(period, unit);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java
index 7e30b82..4de98cf 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java
@@ -16,43 +16,42 @@
  */
 package org.apache.eagle.alert.metric.sink;
 
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
+import com.codahale.metrics.MetricRegistry;
+import com.typesafe.config.Config;
 import org.elasticsearch.metrics.ElasticsearchReporter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.codahale.metrics.MetricRegistry;
-import com.typesafe.config.Config;
+import java.io.IOException;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 public class ElasticSearchSink implements MetricSink {
     private ElasticsearchReporter reporter = null;
-    private final static Logger LOG = LoggerFactory.getLogger(ElasticSearchSink.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchSink.class);
 
     @Override
     public void prepare(Config config, MetricRegistry registry) {
         LOG.debug("Preparing elasticsearch-sink");
         try {
             ElasticsearchReporter.Builder builder = ElasticsearchReporter.forRegistry(registry);
-            if(config.hasPath("hosts")){
+            if (config.hasPath("hosts")) {
                 List<String> hosts = config.getStringList("hosts");
                 builder.hosts(hosts.toArray(new String[hosts.size()]));
             }
-            if(config.hasPath("index")){
+            if (config.hasPath("index")) {
                 builder.index(config.getString("index"));
             }
             builder.indexDateFormat("yyyy-MM-dd");
-            builder.timestampFieldname(config.hasPath("timestampField")?config.getString("timestampField"):"@timestamp");
+            builder.timestampFieldname(config.hasPath("timestampField") ? config.getString("timestampField") : "@timestamp");
 
-            if(config.hasPath("tags")) {
+            if (config.hasPath("tags")) {
                 builder.additionalFields(config.getConfig("tags").root().unwrapped());
             }
 
             reporter = builder.build();
         } catch (IOException e) {
-            LOG.error(e.getMessage(),e);
+            LOG.error(e.getMessage(), e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java
index fddaf19..2d3ed93 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -16,11 +16,10 @@
  */
 package org.apache.eagle.alert.metric.sink;
 
-import java.util.concurrent.TimeUnit;
-
 import com.codahale.metrics.JmxReporter;
 import com.codahale.metrics.MetricRegistry;
 import com.typesafe.config.Config;
+import java.util.concurrent.TimeUnit;
 
 public class JmxSink implements MetricSink {
     private JmxReporter reporter;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java
index 6ff000c..88b22c5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java
@@ -1,15 +1,4 @@
-package org.apache.eagle.alert.metric.sink;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.eagle.alert.metric.reporter.KafkaReporter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.codahale.metrics.MetricRegistry;
-import com.typesafe.config.Config;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -25,17 +14,28 @@ import com.typesafe.config.Config;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-public class KafkaSink implements MetricSink{
+
+package org.apache.eagle.alert.metric.sink;
+
+import org.apache.eagle.alert.metric.reporter.KafkaReporter;
+import com.codahale.metrics.MetricRegistry;
+import com.typesafe.config.Config;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.concurrent.TimeUnit;
+
+public class KafkaSink implements MetricSink {
     private KafkaReporter reporter;
-    private final static Logger LOG = LoggerFactory.getLogger(KafkaSink.class);
+    private static final Logger LOG = LoggerFactory.getLogger(KafkaSink.class);
+
     @Override
     public void prepare(Config config, MetricRegistry registry) {
         LOG.debug("Preparing kafka-sink");
         KafkaReporter.Builder builder = KafkaReporter.forRegistry(registry)
-                .topic(config.getString("topic"))
-                .config(config);
+            .topic(config.getString("topic"))
+            .config(config);
 
-        if(config.hasPath("tags")){
+        if (config.hasPath("tags")) {
             builder.addFields(config.getConfig("tags").root().unwrapped());
         }
 
@@ -46,7 +46,7 @@ public class KafkaSink implements MetricSink{
     @Override
     public void start(long period, TimeUnit unit) {
         LOG.info("Starting");
-        reporter.start(period,unit);
+        reporter.start(period, unit);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java
index b09eda3..2030d8e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java
@@ -16,15 +16,16 @@
  */
 package org.apache.eagle.alert.metric.sink;
 
-
-import java.util.concurrent.TimeUnit;
-
 import com.codahale.metrics.MetricRegistry;
 import com.typesafe.config.Config;
+import java.util.concurrent.TimeUnit;
 
 public interface MetricSink {
     void prepare(Config config, MetricRegistry registry);
-    void start(long period,TimeUnit unit);
+
+    void start(long period, TimeUnit unit);
+
     void stop();
+
     void report();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java
index b4126f2..70d7331 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java
@@ -1,9 +1,4 @@
-package org.apache.eagle.alert.metric.sink;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -19,16 +14,21 @@ import java.util.Map;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.metric.sink;
+
+import java.util.HashMap;
+import java.util.Map;
+
 public class MetricSinkRepository {
-    private final static Map<String,Class<? extends MetricSink>> sinkTypeClassMapping = new HashMap<>();
+    private static final Map<String, Class<? extends MetricSink>> sinkTypeClassMapping = new HashMap<>();
 
-    public static void register(String sinkType,Class<? extends MetricSink> sinkClass){
-        sinkTypeClassMapping.put(sinkType,sinkClass);
+    public static void register(String sinkType, Class<? extends MetricSink> sinkClass) {
+        sinkTypeClassMapping.put(sinkType, sinkClass);
     }
 
-    public static MetricSink createSink(String sinkType){
+    public static MetricSink createSink(String sinkType) {
         if (!sinkTypeClassMapping.containsKey(sinkType)) {
-            throw new IllegalArgumentException("Unknown sink type: "+sinkType);
+            throw new IllegalArgumentException("Unknown sink type: " + sinkType);
         }
         try {
             return sinkTypeClassMapping.get(sinkType).newInstance();
@@ -38,10 +38,10 @@ public class MetricSinkRepository {
     }
 
     static {
-        register("kafka",KafkaSink.class);
-        register("jmx",JmxSink.class);
-        register("elasticsearch",ElasticSearchSink.class);
-        register("stdout",ConsoleSink.class);
-        register("logger",Slf4jSink.class);
+        register("kafka", KafkaSink.class);
+        register("jmx", JmxSink.class);
+        register("elasticsearch", ElasticSearchSink.class);
+        register("stdout", ConsoleSink.class);
+        register("logger", Slf4jSink.class);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java
index ce465fa..c25c835 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -14,51 +14,53 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.eagle.alert.metric.sink;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import org.slf4j.LoggerFactory;
+package org.apache.eagle.alert.metric.sink;
 
 import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.Slf4jReporter;
 import com.typesafe.config.Config;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 public class Slf4jSink implements MetricSink {
     private Slf4jReporter reporter;
 
     @SuppressWarnings("serial")
-    private final static Map<String,Slf4jReporter.LoggingLevel> LEVEL_MAPPING = new HashMap<String,Slf4jReporter.LoggingLevel>(){{
-        put("INFO",Slf4jReporter.LoggingLevel.INFO);
-        put("DEBUG",Slf4jReporter.LoggingLevel.DEBUG);
-        put("ERROR",Slf4jReporter.LoggingLevel.ERROR);
-        put("TRACE",Slf4jReporter.LoggingLevel.TRACE);
-        put("WARN",Slf4jReporter.LoggingLevel.WARN);
-    }};
+    private static final Map<String, Slf4jReporter.LoggingLevel> LEVEL_MAPPING = new HashMap<String, Slf4jReporter.LoggingLevel>() {
+        {
+            put("INFO", Slf4jReporter.LoggingLevel.INFO);
+            put("DEBUG", Slf4jReporter.LoggingLevel.DEBUG);
+            put("ERROR", Slf4jReporter.LoggingLevel.ERROR);
+            put("TRACE", Slf4jReporter.LoggingLevel.TRACE);
+            put("WARN", Slf4jReporter.LoggingLevel.WARN);
+        }
+    };
 
-    private static Slf4jReporter.LoggingLevel getLoggingLevel(String level){
-        if(LEVEL_MAPPING.containsKey(level.toUpperCase())){
+    private static Slf4jReporter.LoggingLevel getLoggingLevel(String level) {
+        if (LEVEL_MAPPING.containsKey(level.toUpperCase())) {
             return LEVEL_MAPPING.get(level.toUpperCase());
-        } else{
-            throw new IllegalArgumentException("Illegal logging level: "+level);
+        } else {
+            throw new IllegalArgumentException("Illegal logging level: " + level);
         }
     }
 
     @Override
     public void prepare(Config config, MetricRegistry registry) {
         reporter = Slf4jReporter.forRegistry(registry)
-                .outputTo(LoggerFactory.getLogger("org.apache.eagle.alert.metric"))
-                .withLoggingLevel(config.hasPath("level")? getLoggingLevel(config.getString("level")): Slf4jReporter.LoggingLevel.INFO)
-                .convertRatesTo(TimeUnit.SECONDS)
-                .convertDurationsTo(TimeUnit.MILLISECONDS)
-                .build();
+            .outputTo(LoggerFactory.getLogger("org.apache.eagle.alert.metric"))
+            .withLoggingLevel(config.hasPath("level") ? getLoggingLevel(config.getString("level")) : Slf4jReporter.LoggingLevel.INFO)
+            .convertRatesTo(TimeUnit.SECONDS)
+            .convertDurationsTo(TimeUnit.MILLISECONDS)
+            .build();
     }
 
     @Override
-    public void start(long period,TimeUnit unit) {
-        reporter.start(period,unit);
+    public void start(long period, TimeUnit unit) {
+        reporter.start(period, unit);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java
index a5bb5f4..8261a25 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java
@@ -1,10 +1,4 @@
-package org.apache.eagle.alert.metric.source;
-
-import com.codahale.metrics.JvmAttributeGaugeSet;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -20,11 +14,17 @@ import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-public class JVMMetricSource implements MetricSource{
+package org.apache.eagle.alert.metric.source;
+
+import com.codahale.metrics.JvmAttributeGaugeSet;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+
+public class JVMMetricSource implements MetricSource {
 
     private MetricRegistry registry = new MetricRegistry();
 
-    public JVMMetricSource(){
+    public JVMMetricSource() {
         registry.registerAll(new JvmAttributeGaugeSet());
         registry.registerAll(new MemoryUsageGaugeSet());
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java
index 59b7a02..180fa97 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java
@@ -1,8 +1,4 @@
-package org.apache.eagle.alert.metric.source;
-
-import com.codahale.metrics.MetricRegistry;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -18,7 +14,12 @@ import com.codahale.metrics.MetricRegistry;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.metric.source;
+
+import com.codahale.metrics.MetricRegistry;
+
 public interface MetricSource {
     String name();
+
     MetricRegistry registry();
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java
index 137fc17..d83576c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java
@@ -1,8 +1,4 @@
-package org.apache.eagle.alert.metric.source;
-
-import com.codahale.metrics.MetricRegistry;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -18,11 +14,15 @@ import com.codahale.metrics.MetricRegistry;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.metric.source;
+
+import com.codahale.metrics.MetricRegistry;
+
 public class MetricSourceWrapper implements MetricSource {
     private final MetricRegistry registry;
     private final String name;
 
-    public MetricSourceWrapper(String name, MetricRegistry registry){
+    public MetricSourceWrapper(String name, MetricRegistry registry) {
         this.name = name;
         this.registry = registry;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java
index addab44..2e1c72c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java
@@ -29,9 +29,8 @@ import javax.servlet.http.HttpServletResponse;
 /**
  * A simple allow all CORS filter that works with swagger UI. Tomcat CORS filter
  * doesn't support Origin: null case which is the swagger UI request.
- * 
- * @since Apr 15, 2016
  *
+ * @since Apr 15, 2016
  */
 public class SimpleCORSFiler implements Filter {
 
@@ -42,13 +41,13 @@ public class SimpleCORSFiler implements Filter {
 
     @Override
     public void doFilter(ServletRequest request, ServletResponse res, FilterChain chain) throws IOException,
-            ServletException {
+        ServletException {
         HttpServletResponse response = (HttpServletResponse) res;
         response.setHeader("Access-Control-Allow-Origin", "*");
         response.setHeader("Access-Control-Allow-Methods", "HEAD, POST, GET, OPTIONS, DELETE");
         response.setHeader("Access-Control-Max-Age", "3600");
         response.setHeader("Access-Control-Allow-Headers",
-                "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
+            "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
         chain.doFilter(request, response);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java
index 80cb169..2d1072d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java
@@ -19,10 +19,6 @@
 
 package org.apache.eagle.alert.service;
 
-import java.io.Closeable;
-import java.io.Serializable;
-import java.util.List;
-
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
@@ -31,45 +27,62 @@ import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
+import java.io.Closeable;
+import java.io.Serializable;
+import java.util.List;
 
 /**
- * service stub to get metadata from remote metadata service
+ * service stub to get metadata from remote metadata service.
  */
 public interface IMetadataServiceClient extends Closeable, Serializable {
 
     // user metadta
     void addStreamingCluster(StreamingCluster cluster);
+
     void addStreamingClusters(List<StreamingCluster> clusters);
+
     List<StreamingCluster> listClusters();
-    
+
     List<Topology> listTopologies();
+
     void addTopology(Topology t);
+
     void addTopologies(List<Topology> topologies);
 
     void addPolicy(PolicyDefinition policy);
+
     void addPolicies(List<PolicyDefinition> policies);
+
     List<PolicyDefinition> listPolicies();
 
     void addStreamDefinition(StreamDefinition streamDef);
+
     void addStreamDefinitions(List<StreamDefinition> streamDefs);
+
     List<StreamDefinition> listStreams();
 
     void addDataSource(Kafka2TupleMetadata k2t);
+
     void addDataSources(List<Kafka2TupleMetadata> k2ts);
+
     List<Kafka2TupleMetadata> listDataSources();
 
     void addPublishment(Publishment pub);
+
     void addPublishments(List<Publishment> pubs);
+
     List<Publishment> listPublishment();
 
     // monitor metadata
     List<SpoutSpec> listSpoutMetadata();
 
     ScheduleState getVersionedSpec();
+
     ScheduleState getVersionedSpec(String version);
+
     void addScheduleState(ScheduleState state);
-    
+
     void clear();
-    
+
     // for topology mgmt
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java
index 2ddba55..8178824 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java
@@ -19,13 +19,6 @@
 
 package org.apache.eagle.alert.service;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.ws.rs.core.MediaType;
-
-import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
@@ -34,9 +27,8 @@ import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
+import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
 import com.sun.jersey.api.client.Client;
 import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.GenericType;
@@ -45,6 +37,13 @@ import com.sun.jersey.api.client.config.ClientConfig;
 import com.sun.jersey.api.client.config.DefaultClientConfig;
 import com.sun.jersey.client.urlconnection.URLConnectionClientHandler;
 import com.typesafe.config.Config;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.core.MediaType;
 
 public class MetadataServiceClientImpl implements IMetadataServiceClient {
     private static final long serialVersionUID = 3003976065082684128L;
@@ -82,7 +81,7 @@ public class MetadataServiceClientImpl implements IMetadataServiceClient {
 
     public MetadataServiceClientImpl(Config config) {
         this(config.getString(EAGLE_CORRELATION_SERVICE_HOST), config.getInt(EAGLE_CORRELATION_SERVICE_PORT), config
-                .getString(EAGLE_CORRELATION_CONTEXT));
+            .getString(EAGLE_CORRELATION_CONTEXT));
         basePath = buildBasePath();
     }
 
@@ -163,30 +162,30 @@ public class MetadataServiceClientImpl implements IMetadataServiceClient {
         return listOne(METADATA_SCHEDULESTATES_PATH + "/" + version, ScheduleState.class);
     }
 
+    @Override
+    public ScheduleState getVersionedSpec() {
+        return listOne(METADATA_SCHEDULESTATES_PATH, ScheduleState.class);
+    }
+
     private <T> T listOne(String path, Class<T> tClz) {
         LOG.info("query URL {}", basePath + path);
         WebResource r = client.resource(basePath + path);
 
         ClientResponse resp = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON)
-                .get(ClientResponse.class);
+            .get(ClientResponse.class);
         if (resp.getStatus() < 300) {
             try {
                 return resp.getEntity(tClz);
             } catch (Exception e) {
                 LOG.warn(" list one entity failed, ignored and continute, path {}, message {}!", path, e.getMessage());
             }
-        }else{
+        } else {
             LOG.warn("fail querying metadata service {} with http status {}", basePath + path, resp.getStatus());
         }
         return null;
     }
 
     @Override
-    public ScheduleState getVersionedSpec() {
-        return listOne(METADATA_SCHEDULESTATES_PATH, ScheduleState.class);
-    }
-
-    @Override
     public void addScheduleState(ScheduleState state) {
         WebResource r = client.resource(basePath + METADATA_SCHEDULESTATES_PATH);
         r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(state);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java
index 87c45d8..2cbc977 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java
@@ -1,6 +1,4 @@
-package org.apache.eagle.alert.utils;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -16,12 +14,14 @@ package org.apache.eagle.alert.utils;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.utils;
+
 public class AlertConstants {
-    public final static String FIELD_0 = "f0";
-    public final static String FIELD_1 = "f1";
-    public final static String FIELD_2 = "f2";
-    public final static String FIELD_3 = "f3";
+    public static final String FIELD_0 = "f0";
+    public static final String FIELD_1 = "f1";
+    public static final String FIELD_2 = "f2";
+    public static final String FIELD_3 = "f3";
 
-    public final static String DEFAULT_SPOUT_NAME = "alertEngineSpout";
-    public final static String DEFAULT_ROUTERBOLT_NAME = "streamRouterBolt";
+    public static final String DEFAULT_SPOUT_NAME = "alertEngineSpout";
+    public static final String DEFAULT_ROUTERBOLT_NAME = "streamRouterBolt";
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java
index 2e5a8fe..53fc4ac 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java
@@ -20,134 +20,134 @@ import java.io.UnsupportedEncodingException;
 
 public class ByteUtils {
 
-	public static double bytesToDouble(byte[] bytes, int offset){
-		return Double.longBitsToDouble(bytesToLong(bytes, offset));
-	}
-	
-	public static double bytesToDouble(byte[] bytes){
-		return Double.longBitsToDouble(bytesToLong(bytes));
-	}
-	
-	public static void doubleToBytes(double v, byte[] bytes){
-		doubleToBytes(v, bytes, 0);
-	}
-	
-	public static void doubleToBytes(double v, byte[] bytes, int offset){
-		longToBytes(Double.doubleToLongBits(v), bytes, offset);
-	}
-	
-	public static byte[] doubleToBytes(double v){
-		return longToBytes(Double.doubleToLongBits(v));
-	}
-	
-	public static long bytesToLong(byte[] bytes){
-		return bytesToLong(bytes, 0);
-	}
-	
-	public static long bytesToLong(byte[] bytes, int offset){
-		long value = 0;
-		for(int i=0; i<8; i++){
-			value <<= 8;
-			value |= (bytes[i+offset] & 0xFF);
-		}
-		return value;
-	}
-	
-	public static void longToBytes(long v, byte[] bytes){
-		longToBytes(v, bytes, 0);
-	}
-	
-	public static void longToBytes(long v, byte[] bytes, int offset){
-		long tmp = v;
-		for(int i=0; i<8; i++){
-			bytes[offset + 7 - i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-	}
-	
-	public static byte[] longToBytes(long v){
-		long tmp = v;
-		byte[] b = new byte[8];
-		for(int i=0; i<8; i++){
-			b[7-i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-		return b;
-	}
-	
-	public static int bytesToInt(byte[] bytes){
-		return bytesToInt(bytes, 0);
-	}
-	
-	public static int bytesToInt(byte[] bytes, int offset){
-		int value = 0;
-		for(int i=0; i<4; i++){
-			value <<= 8;
-			value |= (bytes[i+offset] & 0xFF);
-		}
-		return value;
-	}
-	
-	public static void intToBytes(int v, byte[] bytes){
-		intToBytes(v, bytes, 0);
-	}
-	
-	public static void intToBytes(int v, byte[] bytes, int offset){
-		int tmp = v;
-		for(int i=0; i<4; i++){
-			bytes[offset + 3 - i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-	}
-
-	public static byte[] intToBytes(int v){
-		int tmp = v;
-		byte[] b = new byte[4];
-		for(int i=0; i<4; i++){
-			b[3-i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-		return b;
-	}
-
-	//////
-	
-	public static short bytesToShort(byte[] bytes){
-		return bytesToShort(bytes, 0);
-	}
-	
-	public static short bytesToShort(byte[] bytes, int offset){
-		short value = 0;
-		for(int i=0; i < 2; i++){
-			value <<= 8;
-			value |= (bytes[i+offset] & 0xFF);
-		}
-		return value;
-	}
-	
-	public static void shortToBytes(short v, byte[] bytes){
-		shortToBytes(v, bytes, 0);
-	}
-	
-	public static void shortToBytes(short v, byte[] bytes, int offset){
-		int tmp = v;
-		for(int i=0; i < 2; i++){
-			bytes[offset + 1 - i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-	}
-
-	public static byte[] shortToBytes(short v){
-		int tmp = v;
-		byte[] b = new byte[2];
-		for(int i=0; i<2; i++){
-			b[1-i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-		return b;
-	}
-
-	public static byte[] concat(byte[]... arrays) {
+    public static double bytesToDouble(byte[] bytes, int offset) {
+        return Double.longBitsToDouble(bytesToLong(bytes, offset));
+    }
+
+    public static double bytesToDouble(byte[] bytes) {
+        return Double.longBitsToDouble(bytesToLong(bytes));
+    }
+
+    public static void doubleToBytes(double v, byte[] bytes) {
+        doubleToBytes(v, bytes, 0);
+    }
+
+    public static void doubleToBytes(double v, byte[] bytes, int offset) {
+        longToBytes(Double.doubleToLongBits(v), bytes, offset);
+    }
+
+    public static byte[] doubleToBytes(double v) {
+        return longToBytes(Double.doubleToLongBits(v));
+    }
+
+    public static long bytesToLong(byte[] bytes) {
+        return bytesToLong(bytes, 0);
+    }
+
+    public static long bytesToLong(byte[] bytes, int offset) {
+        long value = 0;
+        for (int i = 0; i < 8; i++) {
+            value <<= 8;
+            value |= (bytes[i + offset] & 0xFF);
+        }
+        return value;
+    }
+
+    public static void longToBytes(long v, byte[] bytes) {
+        longToBytes(v, bytes, 0);
+    }
+
+    public static void longToBytes(long v, byte[] bytes, int offset) {
+        long tmp = v;
+        for (int i = 0; i < 8; i++) {
+            bytes[offset + 7 - i] = (byte) (tmp & 0xFF);
+            tmp >>= 8;
+        }
+    }
+
+    public static byte[] longToBytes(long v) {
+        long tmp = v;
+        byte[] b = new byte[8];
+        for (int i = 0; i < 8; i++) {
+            b[7 - i] = (byte) (tmp & 0xFF);
+            tmp >>= 8;
+        }
+        return b;
+    }
+
+    public static int bytesToInt(byte[] bytes) {
+        return bytesToInt(bytes, 0);
+    }
+
+    public static int bytesToInt(byte[] bytes, int offset) {
+        int value = 0;
+        for (int i = 0; i < 4; i++) {
+            value <<= 8;
+            value |= (bytes[i + offset] & 0xFF);
+        }
+        return value;
+    }
+
+    public static void intToBytes(int v, byte[] bytes) {
+        intToBytes(v, bytes, 0);
+    }
+
+    public static void intToBytes(int v, byte[] bytes, int offset) {
+        int tmp = v;
+        for (int i = 0; i < 4; i++) {
+            bytes[offset + 3 - i] = (byte) (tmp & 0xFF);
+            tmp >>= 8;
+        }
+    }
+
+    public static byte[] intToBytes(int v) {
+        int tmp = v;
+        byte[] b = new byte[4];
+        for (int i = 0; i < 4; i++) {
+            b[3 - i] = (byte) (tmp & 0xFF);
+            tmp >>= 8;
+        }
+        return b;
+    }
+
+    //////
+
+    public static short bytesToShort(byte[] bytes) {
+        return bytesToShort(bytes, 0);
+    }
+
+    public static short bytesToShort(byte[] bytes, int offset) {
+        short value = 0;
+        for (int i = 0; i < 2; i++) {
+            value <<= 8;
+            value |= (bytes[i + offset] & 0xFF);
+        }
+        return value;
+    }
+
+    public static void shortToBytes(short v, byte[] bytes) {
+        shortToBytes(v, bytes, 0);
+    }
+
+    public static void shortToBytes(short v, byte[] bytes, int offset) {
+        int tmp = v;
+        for (int i = 0; i < 2; i++) {
+            bytes[offset + 1 - i] = (byte) (tmp & 0xFF);
+            tmp >>= 8;
+        }
+    }
+
+    public static byte[] shortToBytes(short v) {
+        int tmp = v;
+        byte[] b = new byte[2];
+        for (int i = 0; i < 2; i++) {
+            b[1 - i] = (byte) (tmp & 0xFF);
+            tmp >>= 8;
+        }
+        return b;
+    }
+
+    public static byte[] concat(byte[]... arrays) {
         int length = 0;
         for (byte[] array : arrays) {
             length += array.length;
@@ -161,28 +161,28 @@ public class ByteUtils {
         return result;
     }
 
-	public static byte[] stringToBytes(String str) {
-		try {
-			return str.getBytes("UTF-8");
-		} catch (UnsupportedEncodingException e) {
-			throw new IllegalStateException(e);
-		}
-	}
-
-//    public static void main(String[] args){ 
-//    	int a = "ThreadName".hashCode();
-//    	byte[] b = intToBytes(a);
-//    	byte[] c = intToBytes(1676687583);
-//    	String s = new String(b);
-//    	System.out.println(s);
-    	
-//    	byte[] d = intToBytes(8652353);
-//    	System.out.println(bytesToInt(d));
-    	
-//    	byte[] e = longToBytes(12131513513l);
-//    	System.out.println(bytesToLong(e));
-//    	if(12131513513l == bytesToLong(e)){
-//    		System.out.println("yes");
-//    	}
-//    }
+    public static byte[] stringToBytes(String str) {
+        try {
+            return str.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    //    public static void main(String[] args){ 
+    //      int a = "ThreadName".hashCode();
+    //      byte[] b = intToBytes(a);
+    //      byte[] c = intToBytes(1676687583);
+    //      String s = new String(b);
+    //      System.out.println(s);
+    
+    //      byte[] d = intToBytes(8652353);
+    //      System.out.println(bytesToInt(d));
+    
+    //      byte[] e = longToBytes(12131513513l);
+    //      System.out.println(bytesToLong(e));
+    //      if(12131513513l == bytesToLong(e)){
+    //        System.out.println("yes");
+    //      }
+    //    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ConfigUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ConfigUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ConfigUtils.java
index 685265f..e9634e2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ConfigUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ConfigUtils.java
@@ -1,10 +1,4 @@
-package org.apache.eagle.alert.utils;
-
-import java.util.Properties;
-
-import com.typesafe.config.Config;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -20,12 +14,19 @@ import com.typesafe.config.Config;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.utils;
+
+import com.typesafe.config.Config;
+import java.util.Properties;
+
 public class ConfigUtils {
 
     @SuppressWarnings("serial")
-    public static Properties toProperties(Config config){
-        return new Properties(){{
-            putAll(config.root().unwrapped());
-        }};
+    public static Properties toProperties(Config config) {
+        return new Properties() {
+            {
+                putAll(config.root().unwrapped());
+            }
+        };
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/DateTimeUtil.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/DateTimeUtil.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/DateTimeUtil.java
index d611b95..8b98959 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/DateTimeUtil.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/DateTimeUtil.java
@@ -24,118 +24,119 @@ import java.util.TimeZone;
 
 /**
  * be aware that SimpleDateFormat instantiation is expensive, so if that's under a tight loop, probably we need
- * a thread local SimpleDateFormat object
+ * a thread local SimpleDateFormat object.
  */
 public class DateTimeUtil {
-	public static final long ONESECOND = 1L * 1000L;
-	public static final long ONEMINUTE = 1L * 60L * 1000L;
-	public static final long ONEHOUR = 1L * 60L * 60L * 1000L;
-	public static final long ONEDAY = 24L * 60L * 60L * 1000L;
+    public static final long ONESECOND = 1L * 1000L;
+    public static final long ONEMINUTE = 1L * 60L * 1000L;
+    public static final long ONEHOUR = 1L * 60L * 60L * 1000L;
+    public static final long ONEDAY = 24L * 60L * 60L * 1000L;
     private static TimeZone CURRENT_TIME_ZONE = TimeZone.getDefault();
 
-	public static Date humanDateToDate(String date) throws ParseException {
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    public static Date humanDateToDate(String date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sdf.setTimeZone(CURRENT_TIME_ZONE);
-		return sdf.parse(date);
-	}
+        return sdf.parse(date);
+    }
 
-	public static long getCurrentTimestamp(){
-		return System.currentTimeMillis();
-	}
-	
-	public static String secondsToHumanDate(long seconds){
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    public static long getCurrentTimestamp() {
+        return System.currentTimeMillis();
+    }
+
+    public static String secondsToHumanDate(long seconds) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sdf.setTimeZone(CURRENT_TIME_ZONE);
-		Date t = new Date();
-		t.setTime(seconds*1000);
-		return sdf.format(t);
-	}
-	
-	public static String millisecondsToHumanDateWithMilliseconds(long milliseconds){
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
+        Date t = new Date();
+        t.setTime(seconds * 1000);
+        return sdf.format(t);
+    }
+
+    public static String millisecondsToHumanDateWithMilliseconds(long milliseconds) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
         sdf.setTimeZone(CURRENT_TIME_ZONE);
-		Date t = new Date();
-		t.setTime(milliseconds);
-		return sdf.format(t);
-	}
-	
-	public static String millisecondsToHumanDateWithSeconds(long milliseconds){
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date t = new Date();
+        t.setTime(milliseconds);
+        return sdf.format(t);
+    }
+
+    public static String millisecondsToHumanDateWithSeconds(long milliseconds) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sdf.setTimeZone(CURRENT_TIME_ZONE);
-		Date t = new Date();
-		t.setTime(milliseconds);
-		return sdf.format(t);
-	}
-	
-	public static long humanDateToSeconds(String date) throws ParseException {
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date t = new Date();
+        t.setTime(milliseconds);
+        return sdf.format(t);
+    }
+
+    public static long humanDateToSeconds(String date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sdf.setTimeZone(CURRENT_TIME_ZONE);
-		Date d = sdf.parse(date);
-		return d.getTime()/1000;
-	}
-	
-	public static long humanDateToMilliseconds(String date) throws ParseException {
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
+        Date d = sdf.parse(date);
+        return d.getTime() / 1000;
+    }
+
+    public static long humanDateToMilliseconds(String date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
         sdf.setTimeZone(CURRENT_TIME_ZONE);
-		Date d = sdf.parse(date);
-		return d.getTime();
-	}
-	
-	
-	public static long humanDateToMillisecondsWithoutException(String date){
-		try{
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
+        Date d = sdf.parse(date);
+        return d.getTime();
+    }
+
+
+    public static long humanDateToMillisecondsWithoutException(String date) {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
             sdf.setTimeZone(CURRENT_TIME_ZONE);
-			Date d = sdf.parse(date);
-			return d.getTime();
-		}catch(ParseException ex){
-			return 0L;
-		}
-	}
-	
-	public static long humanDateToSecondsWithoutException(String date){
-		try{
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date d = sdf.parse(date);
+            return d.getTime();
+        } catch (ParseException ex) {
+            return 0L;
+        }
+    }
+
+    public static long humanDateToSecondsWithoutException(String date) {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             sdf.setTimeZone(CURRENT_TIME_ZONE);
-			Date d = sdf.parse(date);
-			return (d.getTime() / 1000);
-		}catch(ParseException ex){
-			return 0L;
-		}
-	}
-	/**
-	 * this could be accurate only when timezone is UTC
-	 * for the timezones other than UTC, there is possibly issue, for example
-	 * assume timezone is GMT+8 in China
-	 * When user time is "2014-07-15 05:00:00", it will be converted to timestamp first, internally it would be  "2014-07-14 21:00:00" in UTC timezone. When rounded down to day, the internal time would 
-	 * be changed to "2014-07-14 00:00:00", and that means the user time is "2014-07-14 08:00:00". But originally user wants to round it to "2014-07-15 00:00:00"
-	 * 
-	 * @param field
-	 * @param timeInMillis the seconds elapsed since 1970-01-01 00:00:00
-	 * @return
-	 */
-	public static long roundDown(int field, long timeInMillis){
-		switch(field){
-			case Calendar.DAY_OF_MONTH:
-			case Calendar.DAY_OF_WEEK:
-			case Calendar.DAY_OF_YEAR:
-				return (timeInMillis - timeInMillis % (24*60*60*1000));
-			case Calendar.HOUR:
-				return (timeInMillis - timeInMillis % (60*60*1000));
-			case Calendar.MINUTE:
-				return (timeInMillis - timeInMillis % (60*1000));
-			case Calendar.SECOND:
-				return (timeInMillis - timeInMillis % (1000));
-			default:
-				return 0L;
-		}
-	}
+            Date d = sdf.parse(date);
+            return (d.getTime() / 1000);
+        } catch (ParseException ex) {
+            return 0L;
+        }
+    }
+
+    /**
+     * this could be accurate only when timezone is UTC
+     * for the timezones other than UTC, there is possibly issue, for example
+     * assume timezone is GMT+8 in China
+     * When user time is "2014-07-15 05:00:00", it will be converted to timestamp first,
+     * internally it would be  "2014-07-14 21:00:00" in UTC timezone. When rounded down to day, the internal time would
+     * be changed to "2014-07-14 00:00:00", and that means the user time is "2014-07-14 08:00:00".
+     * But originally user wants to round it to "2014-07-15 00:00:00"
+     *
+     * @param timeInMillis the seconds elapsed since 1970-01-01 00:00:00
+     */
+    public static long roundDown(int field, long timeInMillis) {
+        switch (field) {
+            case Calendar.DAY_OF_MONTH:
+            case Calendar.DAY_OF_WEEK:
+            case Calendar.DAY_OF_YEAR:
+                return (timeInMillis - timeInMillis % (24 * 60 * 60 * 1000));
+            case Calendar.HOUR:
+                return (timeInMillis - timeInMillis % (60 * 60 * 1000));
+            case Calendar.MINUTE:
+                return (timeInMillis - timeInMillis % (60 * 1000));
+            case Calendar.SECOND:
+                return (timeInMillis - timeInMillis % (1000));
+            default:
+                return 0L;
+        }
+    }
 
-	public static String format(long milliseconds, String format) {
-		SimpleDateFormat sdf = new SimpleDateFormat(format);
+    public static String format(long milliseconds, String format) {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
         sdf.setTimeZone(CURRENT_TIME_ZONE);
-		Date t = new Date();
-		t.setTime(milliseconds);
-		return sdf.format(t);
-	}
+        Date t = new Date();
+        t.setTime(milliseconds);
+        return sdf.format(t);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/HostUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/HostUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/HostUtils.java
index 556a12c..e3f72e2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/HostUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/HostUtils.java
@@ -26,7 +26,7 @@ import java.net.UnknownHostException;
 import java.util.Enumeration;
 
 /**
- * http://stackoverflow.com/questions/7348711/recommended-way-to-get-hostname-in-java
+ * http://stackoverflow.com/questions/7348711/recommended-way-to-get-hostname-in-java.
  */
 public class HostUtils {
     private static final Logger logger = LoggerFactory

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/KafkaEmbedded.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/KafkaEmbedded.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/KafkaEmbedded.java
index db4d735..7ec5872 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/KafkaEmbedded.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/KafkaEmbedded.java
@@ -16,14 +16,12 @@
  */
 package org.apache.eagle.alert.utils;
 
-import java.io.File;
-import java.util.Properties;
-
 import kafka.server.KafkaConfig;
 import kafka.server.KafkaServerStartable;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.curator.test.InstanceSpec;
+import java.io.File;
+import java.util.Properties;
 
 public class KafkaEmbedded {
 
@@ -54,8 +52,8 @@ public class KafkaEmbedded {
         }
     }
 
-    public KafkaEmbedded(String kafka_url, String zk_url) {
-        this(extractKafkaPort(kafka_url), extractKafkaPort(zk_url));
+    public KafkaEmbedded(String kafkaUrl, String zkUrl) {
+        this(extractKafkaPort(kafkaUrl), extractKafkaPort(zkUrl));
 
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/StreamIdConversion.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/StreamIdConversion.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/StreamIdConversion.java
index 88661d1..7ef54f4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/StreamIdConversion.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/StreamIdConversion.java
@@ -1,6 +1,4 @@
-package org.apache.eagle.alert.utils;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -16,21 +14,20 @@ package org.apache.eagle.alert.utils;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.utils;
+
 public class StreamIdConversion {
-    public final static String STREAM_ID_TEMPLATE = "stream_%s_to_%s";
-    public final static String STREAM_ID_NUM_TEMPLATE = "stream_%s";
-    public static String generateStreamIdBetween(String sourceId, String targetId){
-        return String.format(STREAM_ID_TEMPLATE,sourceId,targetId);
+    public static final String STREAM_ID_TEMPLATE = "stream_%s_to_%s";
+    public static final String STREAM_ID_NUM_TEMPLATE = "stream_%s";
+
+    public static String generateStreamIdBetween(String sourceId, String targetId) {
+        return String.format(STREAM_ID_TEMPLATE, sourceId, targetId);
     }
 
     /**
-     * Hard-coded stream format in stream_${partitionNum}
-     *
-     *
-     * @param partitionNum
-     * @return
+     * Hard-coded stream format in stream_${partitionNum}.
      */
-    public static String generateStreamIdByPartition(int partitionNum){
-        return String.format(STREAM_ID_NUM_TEMPLATE,partitionNum);
+    public static String generateStreamIdByPartition(int partitionNum) {
+        return String.format(STREAM_ID_NUM_TEMPLATE, partitionNum);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/TimePeriodUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/TimePeriodUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/TimePeriodUtils.java
index 782188d..10f2cb2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/TimePeriodUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/TimePeriodUtils.java
@@ -23,40 +23,27 @@ import scala.Int;
 
 public class TimePeriodUtils {
     /**
-     * For example: timestamp stands for time: 1990/01/07 12:45 and period is PT30, then result is 1990/01/07 12:30
-     *
-     * @param seconds
-     * @param period
+     * For example: timestamp stands for time: 1990/01/07 12:45 and period is PT30, then result is 1990/01/07 12:30.
      *
      * @return formatted timestamp
      */
-    public static long formatSecondsByPeriod(long seconds,Seconds period){
+    public static long formatSecondsByPeriod(long seconds, Seconds period) {
         return seconds - (seconds % Int.int2long(period.getSeconds()));
     }
 
-    /**
-     * @param seconds
-     * @param period
-     * @return
-     */
-    public static long formatSecondsByPeriod(long seconds,Period period){
+    public static long formatSecondsByPeriod(long seconds, Period period) {
         return seconds - (seconds % Int.int2long(period.toStandardSeconds().getSeconds()));
     }
 
-    /**
-     * @param milliseconds
-     * @param period
-     * @return milliseconds
-     */
-    public static long formatMillisecondsByPeriod(long milliseconds,Period period){
-        return formatSecondsByPeriod(milliseconds/1000,period)*1000;
+    public static long formatMillisecondsByPeriod(long milliseconds, Period period) {
+        return formatSecondsByPeriod(milliseconds / 1000, period) * 1000;
     }
 
-    public static int getSecondsOfPeriod(Period period){
+    public static int getSecondsOfPeriod(Period period) {
         return period.toStandardSeconds().getSeconds();
     }
 
-    public static int getMillisecondsOfPeriod(Period period){
+    public static int getMillisecondsOfPeriod(Period period) {
         return getSecondsOfPeriod(period) * 1000;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ZookeeperEmbedded.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ZookeeperEmbedded.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ZookeeperEmbedded.java
index c7c358f..da2de0d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ZookeeperEmbedded.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ZookeeperEmbedded.java
@@ -16,15 +16,14 @@
  */
 package org.apache.eagle.alert.utils;
 
-import java.io.File;
-import java.io.IOException;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.framework.imps.CuratorFrameworkState;
 import org.apache.curator.retry.ExponentialBackoffRetry;
 import org.apache.curator.test.TestingServer;
+import java.io.File;
+import java.io.IOException;
 
 public class ZookeeperEmbedded {
     private TestingServer server;
@@ -52,7 +51,7 @@ public class ZookeeperEmbedded {
 
     public void shutdown() {
         try {
-            if(zookeeper!=null) {
+            if (zookeeper != null) {
                 if (!zookeeper.getState().equals(CuratorFrameworkState.STOPPED)) {
                     zookeeper.close();
                 }
@@ -61,7 +60,7 @@ public class ZookeeperEmbedded {
             e.printStackTrace();
         } finally {
             try {
-                if(server!=null) {
+                if (server != null) {
                     server.close();
                 }
             } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/resources/log4j.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/resources/log4j.properties
index fb13ad5..ba06033 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/resources/log4j.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/resources/log4j.properties
@@ -12,9 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 log4j.rootLogger=DEBUG, stdout
-
 # standard output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/config/TestConfigBus.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/config/TestConfigBus.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/config/TestConfigBus.java
index 8123f45..a68af84 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/config/TestConfigBus.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/config/TestConfigBus.java
@@ -1,12 +1,4 @@
-package org.apache.eagle.alert.config;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with this
  * work for additional information regarding copyright ownership. The ASF
@@ -22,6 +14,14 @@ import org.junit.Test;
  * License for the specific language governing permissions and limitations under
  * the License.
  */
+package org.apache.eagle.alert.config;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
 public class TestConfigBus {
 
     @Ignore

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/metric/MetricSystemTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/metric/MetricSystemTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/metric/MetricSystemTest.java
index d1fb5f6..48bce2e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/metric/MetricSystemTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/metric/MetricSystemTest.java
@@ -1,19 +1,4 @@
-package org.apache.eagle.alert.metric;
-
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.JvmAttributeGaugeSet;
-import com.codahale.metrics.MetricRegistry;
-import com.typesafe.config.ConfigFactory;
-import org.apache.eagle.alert.metric.sink.KafkaSink;
-import org.apache.eagle.alert.metric.source.JVMMetricSource;
-import org.apache.eagle.alert.metric.source.MetricSource;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -29,18 +14,35 @@ import java.util.Map;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.metric;
+
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.JvmAttributeGaugeSet;
+import com.codahale.metrics.MetricRegistry;
+import com.typesafe.config.ConfigFactory;
+import org.apache.eagle.alert.metric.sink.KafkaSink;
+import org.apache.eagle.alert.metric.source.JVMMetricSource;
+import org.apache.eagle.alert.metric.source.MetricSource;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
 public class MetricSystemTest {
-    @Test @Ignore
-    public void testKafkaSink(){
+    @Test
+    @Ignore
+    public void testKafkaSink() {
         KafkaSink sink = new KafkaSink();
         MetricRegistry registry = new MetricRegistry();
         registry.registerAll(new JvmAttributeGaugeSet());
-        sink.prepare(ConfigFactory.load().getConfig("metric.sink.kafka"),registry);
+        sink.prepare(ConfigFactory.load().getConfig("metric.sink.kafka"), registry);
         sink.report();
         sink.stop();
     }
 
-    @Test @Ignore
+    @Test
+    @Ignore
     public void testMetricSystem() throws InterruptedException {
         MetricSystem system = MetricSystem.load(ConfigFactory.load());
         system.register(new JVMMetricSource());
@@ -50,8 +52,9 @@ public class MetricSystemTest {
         system.stop();
     }
 
-    @Test @Ignore
-    public void testMetaConflict(){
+    @Test
+    @Ignore
+    public void testMetaConflict() {
         MetricSystem system = MetricSystem.load(ConfigFactory.load());
         system.register(new MetaConflictMetricSource());
         system.start();
@@ -62,7 +65,7 @@ public class MetricSystemTest {
     private class MetaConflictMetricSource implements MetricSource {
         private MetricRegistry registry = new MetricRegistry();
 
-        public MetaConflictMetricSource(){
+        public MetaConflictMetricSource() {
             registry.register("meta.conflict", (Gauge<String>) () -> "meta conflict happening!");
         }
 
@@ -81,15 +84,17 @@ public class MetricSystemTest {
     private class SampleMetricSource implements MetricSource {
         private MetricRegistry registry = new MetricRegistry();
 
-        public SampleMetricSource(){
+        public SampleMetricSource() {
             registry.register("sample.long", (Gauge<Long>) System::currentTimeMillis);
-            registry.register("sample.map", (Gauge<Map<String, Object>>) () -> new HashMap<String, Object>(){
+            registry.register("sample.map", (Gauge<Map<String, Object>>) () -> new HashMap<String, Object>() {
                 private static final long serialVersionUID = 3948508906655117683L;
+
                 {
-                    put("int",1234);
-                    put("str","text");
-                    put("bool",true);
-                }});
+                    put("int", 1234);
+                    put("str", "text");
+                    put("bool", true);
+                }
+            });
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/service/TestMetadataServiceClientImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/service/TestMetadataServiceClientImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/service/TestMetadataServiceClientImpl.java
index 707515e..50b00d9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/service/TestMetadataServiceClientImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/java/org/apache/eagle/alert/service/TestMetadataServiceClientImpl.java
@@ -19,18 +19,18 @@
 
 package org.apache.eagle.alert.service;
 
-import java.util.List;
-
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.junit.Ignore;
 import org.junit.Test;
 
+import java.util.List;
+
 public class TestMetadataServiceClientImpl {
     @SuppressWarnings("resource")
     @Ignore
     @Test
-    public void test() throws Exception{
+    public void test() throws Exception {
         MetadataServiceClientImpl impl = new MetadataServiceClientImpl("localhost", 58080, "/api/metadata/policies");
         List<PolicyDefinition> policies = impl.listPolicies();
         ObjectMapper mapper = new ObjectMapper();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/application.conf
index 738c844..b54a5ac 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/application.conf
@@ -14,19 +14,19 @@
 # limitations under the License.
 
 {
-	metric {
-		sink {
-			kafka {
-				"topic":"alert_metric_test"
-				"bootstrap.servers": "localhost:9092"
-			}
-			logger {
-				level = "INFO"
-			}
-			elasticsearch {
+  metric {
+    sink {
+      kafka {
+        "topic": "alert_metric_test"
+        "bootstrap.servers": "localhost:9092"
+      }
+      logger {
+        level = "INFO"
+      }
+      elasticsearch {
         hosts = ["10.64.223.222:9200"]
         index = "alert_metric_test"
       }
-		}
-	}
+    }
+  }
 }
\ No newline at end of file



[02/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/ump_demo_schema.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/ump_demo_schema.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/ump_demo_schema.json
index 053ac9c..a833819 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/ump_demo_schema.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/ump_demo_schema.json
@@ -1,170 +1,181 @@
 {
   "clusters": [],
   "schemas": [
-	{
-		"streamId": "syslog_stream",
-		"dataSource" : "network_syslog_datasource",
-		"description":"the data stream for syslog events",
-		"validate": false,
-		"timeseries":false,
-		"columns": [
-			{
-				"name": "dims_facility",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required":true
-			},{
-				"name": "dims_severity",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required": true
-			},
-			{
-				"name": "dims_hostname",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required": true
-			},
-			{
-				"name": "dims_msgid",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required": true
-			},{
-				"name": "timestamp",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required":true
-			},{
-				"name": "conn",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required": true
-			},{
-				"name": "op",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required":true
-			},{
-				"name": "msgId",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required":true
-			},{
-				"name": "command",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required": true
-			},{
-				"name": "name",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required": true
-			},{
-				"name": "namespace",
-				"type" : "STRING",
-				"defaultValue": "",
-				"required": true
-			},{
-				"name": "epochMillis",
-				"type" : "LONG",
-				"defaultValue": 0,
-				"required": true
-			}
-		]
-	}
+    {
+      "streamId": "syslog_stream",
+      "dataSource": "network_syslog_datasource",
+      "description": "the data stream for syslog events",
+      "validate": false,
+      "timeseries": false,
+      "columns": [
+        {
+          "name": "dims_facility",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "dims_severity",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "dims_hostname",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "dims_msgid",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "timestamp",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "conn",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "op",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "msgId",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "command",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "name",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "namespace",
+          "type": "STRING",
+          "defaultValue": "",
+          "required": true
+        },
+        {
+          "name": "epochMillis",
+          "type": "LONG",
+          "defaultValue": 0,
+          "required": true
+        }
+      ]
+    }
   ],
   "datasources": [
-	{
-		"name": "network_syslog_datasource",
-		"type": "KAFKA",
-		"properties": {
-		},
-		"topic": "logoutput",
-		"schemeCls": "org.apache.eagle.alert.engine.extension.SherlockEventScheme",
-		"codec": {
-			"streamNameSelectorProp": {
-				"userProvidedStreamName" : "syslog_stream",
-				"streamNameFormat":"%s"
-			},
-			"streamNameSelectorCls":"org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-			"timestampColumn": "timestamp",
-			"timestampFormat":""
-		}
-	}
+    {
+      "name": "network_syslog_datasource",
+      "type": "KAFKA",
+      "properties": {
+      },
+      "topic": "logoutput",
+      "schemeCls": "org.apache.eagle.alert.engine.extension.SherlockEventScheme",
+      "codec": {
+        "streamNameSelectorProp": {
+          "userProvidedStreamName": "syslog_stream",
+          "streamNameFormat": "%s"
+        },
+        "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+        "timestampColumn": "timestamp",
+        "timestampFormat": ""
+      }
+    }
   ],
   "policies": [
-	{
-		"name": "syslog_severity_check",
-		"description" : "syslog.severity > 3 then error",
-		"inputStreams": [
-			"syslog_stream"
-		],
-		"outputStreams": [
-			"syslog_severity_check_output"
-		],
-		"definition": {
-			"type": "siddhi",
-			"value": "from syslog_stream[dims_severity == \"NOTICE\"] select * insert into syslog_severity_check_output;"
-		},
-		"partitionSpec": [
-			{
-				"streamId" : "syslog_stream",
-				"type" : "GROUPBY",
-				"columns" : [
-					"dims_hostname"
-				]
-			}
-		],
-		"parallelismHint": 10
-	}
+    {
+      "name": "syslog_severity_check",
+      "description": "syslog.severity > 3 then error",
+      "inputStreams": [
+        "syslog_stream"
+      ],
+      "outputStreams": [
+        "syslog_severity_check_output"
+      ],
+      "definition": {
+        "type": "siddhi",
+        "value": "from syslog_stream[dims_severity == \"NOTICE\"] select * insert into syslog_severity_check_output;"
+      },
+      "partitionSpec": [
+        {
+          "streamId": "syslog_stream",
+          "type": "GROUPBY",
+          "columns": [
+            "dims_hostname"
+          ]
+        }
+      ],
+      "parallelismHint": 10
+    }
   ],
   "publishments": [
-	{
-	  "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-	  "name":"network-syslog-publish",
-	  "policyIds": ["syslog_severity_check"],
-	  "dedupIntervalMin": "PT0M",
-	  "properties":{
-	    "kafka_broker":"localhost:9092",
-	    "topic":"syslog_alerts",
-	    "value.deserializer": "org.apache.kafka.common.serialization.ByteArrayDeserializer",
-	    "value.serializer": "org.apache.kafka.common.serialization.ByteArraySerializer"
-	  },
-	  "serializer" : "org.apache.eagle.alert.engine.extension.SherlockAlertSerializer"
-	}
+    {
+      "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+      "name": "network-syslog-publish",
+      "policyIds": [
+        "syslog_severity_check"
+      ],
+      "dedupIntervalMin": "PT0M",
+      "properties": {
+        "kafka_broker": "localhost:9092",
+        "topic": "syslog_alerts",
+        "value.deserializer": "org.apache.kafka.common.serialization.ByteArrayDeserializer",
+        "value.serializer": "org.apache.kafka.common.serialization.ByteArraySerializer"
+      },
+      "serializer": "org.apache.eagle.alert.engine.extension.SherlockAlertSerializer"
+    }
   ],
   "scheduleStates": {},
   "assignments": [],
   "topologies": [
-	{
-		"name": "alertUnitTopology_1",
-		"numOfSpout":1,
-		"numOfGroupBolt": 4,
-		"numOfAlertBolt": 10,
-		"spoutId": "alertEngineSpout",
-		"groupNodeIds" : [
-			"streamRouterBolt0",
-			"streamRouterBolt1",
-			"streamRouterBolt2",
-			"streamRouterBolt3"
-		],
-		"alertBoltIds": [
-			"alertBolt0",
-			"alertBolt1",
-			"alertBolt2",
-			"alertBolt3",
-			"alertBolt4",
-			"alertBolt5",
-			"alertBolt6",
-			"alertBolt7",
-			"alertBolt8",
-			"alertBolt9"
-		],
-		"pubBoltId" : "alertPublishBolt",
-		"spoutParallelism": 1,
-		"groupParallelism": 1,
-		"alertParallelism": 1
-	}
+    {
+      "name": "alertUnitTopology_1",
+      "numOfSpout": 1,
+      "numOfGroupBolt": 4,
+      "numOfAlertBolt": 10,
+      "spoutId": "alertEngineSpout",
+      "groupNodeIds": [
+        "streamRouterBolt0",
+        "streamRouterBolt1",
+        "streamRouterBolt2",
+        "streamRouterBolt3"
+      ],
+      "alertBoltIds": [
+        "alertBolt0",
+        "alertBolt1",
+        "alertBolt2",
+        "alertBolt3",
+        "alertBolt4",
+        "alertBolt5",
+        "alertBolt6",
+        "alertBolt7",
+        "alertBolt8",
+        "alertBolt9"
+      ],
+      "pubBoltId": "alertPublishBolt",
+      "spoutParallelism": 1,
+      "groupParallelism": 1,
+      "alertParallelism": 1
+    }
   ]
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/log4j.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/log4j.properties
index 164fa8e..be79336 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/log4j.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/log4j.properties
@@ -12,12 +12,9 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 log4j.rootLogger=DEBUG, stdout
-
 # standard output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %p [%t] %c{2}[%L]: %m%n
-
 log4j.logger.org.apache.eagle.alert.engine.evaluator.nodata=DEBUG
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/publishments.json
index 6d0fbf4..cb6198e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/publishments.json
@@ -1,15 +1,16 @@
 [
-
-{
-  "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-  "name":"network-syslog-publish",
-  "policyIds": ["syslog_severity_critical_check", "syslog_aggregation_alert"],
-  "dedupIntervalMin": "PT0M",
-  "properties":{
-    "kafka_broker":"localhost:9092",
-    "topic":"syslog_alerts"
-  },
-  "serializer" : "org.apache.eagle.alert.engine.publisher.impl.JsonEventSerializer"
-}
-
+  {
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+    "name": "network-syslog-publish",
+    "policyIds": [
+      "syslog_severity_critical_check",
+      "syslog_aggregation_alert"
+    ],
+    "dedupIntervalMin": "PT0M",
+    "properties": {
+      "kafka_broker": "localhost:9092",
+      "topic": "syslog_alerts"
+    },
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.JsonEventSerializer"
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/streamdefinitions.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/streamdefinitions.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/streamdefinitions.json
index abe1f13..68eb748 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/streamdefinitions.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/loopback/streamdefinitions.json
@@ -93,102 +93,102 @@
     ]
   },
   {
-    "streamId":"syslog_severity_critical_check",
-    "dataSource":"network_syslog_alert_datasource",
-    "description":"the data stream for syslog events",
-    "validate":false,
-    "timeseries":false,
-    "columns":[
+    "streamId": "syslog_severity_critical_check",
+    "dataSource": "network_syslog_alert_datasource",
+    "description": "the data stream for syslog events",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
       {
-        "name":"dims_hostname",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "dims_hostname",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"facility_code",
-        "type":"INT",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "facility_code",
+        "type": "INT",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"facility_name",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "facility_name",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"severity_code",
-        "type":"INT",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "severity_code",
+        "type": "INT",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"severity_name",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "severity_name",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"msg",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "msg",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"msgid",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "msgid",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"procid",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "procid",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"dims_appname",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "dims_appname",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"name",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "name",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"namespace",
-        "type":"STRING",
-        "defaultValue":"",
-        "required":true,
-        "description":null
+        "name": "namespace",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true,
+        "description": null
       },
       {
-        "name":"epochMillis",
-        "type":"LONG",
-        "defaultValue":0,
-        "required":true,
-        "description":null
+        "name": "epochMillis",
+        "type": "LONG",
+        "defaultValue": 0,
+        "required": true,
+        "description": null
       },
       {
-        "name":"alertKey",
-        "type":"STRING",
+        "name": "alertKey",
+        "type": "STRING",
         "defaultValue": "",
-        "required":true,
-        "description":null
+        "required": true,
+        "description": null
       }
     ]
   }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/application-nodata.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/application-nodata.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/application-nodata.conf
index 7094820..11df895 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/application-nodata.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/application-nodata.conf
@@ -13,16 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_1",
+  "topology": {
+    "name": "alertUnitTopology_1",
     "numOfTotalWorkers": 20,
-    "numOfSpoutTasks" : 1,
-    "numOfRouterBolts" : 4,
-    "numOfAlertBolts" : 10,
-    "numOfPublishTasks" : 1,
-    "localMode" : "true"
+    "numOfSpoutTasks": 1,
+    "numOfRouterBolts": 4,
+    "numOfAlertBolts": 10,
+    "numOfPublishTasks": 1,
+    "localMode": "true"
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "sandbox.hortonworks.com:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -32,29 +32,29 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "sandbox.hortonworks.com:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "sandbox.hortonworks.com:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-	"context" : "/rest",
-	"host" : "localhost",
-	"port" : 8080
+    "context": "/rest",
+    "host": "localhost",
+    "port": 8080
   },
   "coordinatorService": {
-  	"host": "localhost",
-  	"port": "8080",
-  	"context" : "/rest"
+    "host": "localhost",
+    "port": "8080",
+    "context": "/rest"
   },
   "kafkaProducer": {
-  	"bootstrapServers": "sandbox.hortonworks.com:6667"
+    "bootstrapServers": "sandbox.hortonworks.com:6667"
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/datasources.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/datasources.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/datasources.json
index 988318e..814f4c0 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/datasources.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/datasources.json
@@ -1,17 +1,17 @@
 [
-	{
-		"name": "noDataAlertDataSource",
-		"type": "KAFKA",
-		"properties": {},
-		"topic": "noDataAlertTopic",
-		"schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
-		"codec": {
-			"streamNameSelectorProp": {
-				"userProvidedStreamName": "noDataAlertStream"
-			},
-			"streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-			"timestampColumn": "timestamp",
-			"timestampFormat": ""
-		}
-	}
+  {
+    "name": "noDataAlertDataSource",
+    "type": "KAFKA",
+    "properties": {},
+    "topic": "noDataAlertTopic",
+    "schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "userProvidedStreamName": "noDataAlertStream"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": "timestamp",
+      "timestampFormat": ""
+    }
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies-provided-wisb.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies-provided-wisb.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies-provided-wisb.json
index 012fd9f..64d6885 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies-provided-wisb.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies-provided-wisb.json
@@ -1,23 +1,23 @@
 [
-	{
-		"name": "noDataAlertPolicy",
-		"description": "noDataAlertPolicy",
-		"inputStreams": [
-			"noDataAlertStream"
-		],
-		"outputStreams": [
-			"noDataAlertStream_out"
-		],
-		"definition": {
-			"type": "nodataalert",
-			"value": "PT1M,plain,1,host,host1,host2,host3"
-		},
-		"partitionSpec": [
-			{
-				"streamId": "noDataAlertStream",
-				"type": "GROUPBY"
-			}
-		],
-		"parallelismHint": 2
-	}
+  {
+    "name": "noDataAlertPolicy",
+    "description": "noDataAlertPolicy",
+    "inputStreams": [
+      "noDataAlertStream"
+    ],
+    "outputStreams": [
+      "noDataAlertStream_out"
+    ],
+    "definition": {
+      "type": "nodataalert",
+      "value": "PT1M,plain,1,host,host1,host2,host3"
+    },
+    "partitionSpec": [
+      {
+        "streamId": "noDataAlertStream",
+        "type": "GROUPBY"
+      }
+    ],
+    "parallelismHint": 2
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies.json
index 0c4df7e..18d08b9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/policies.json
@@ -1,24 +1,26 @@
 [
-	{
-		"name": "noDataAlertPolicy",
-		"description": "noDataAlertPolicy",
-		"inputStreams": [
-			"noDataAlertStream"
-		],
-		"outputStreams": [
-			"noDataAlertStream_out"
-		],
-		"definition": {
-			"type": "nodataalert",
-			"value": "PT1M,dynamic,1,host"
-		},
-		"partitionSpec": [
-			{
-				"streamId": "noDataAlertStream",
-				"type": "GROUPBY",
-				"columns" : ["host"]
-			}
-		],
-		"parallelismHint": 2
-	}
+  {
+    "name": "noDataAlertPolicy",
+    "description": "noDataAlertPolicy",
+    "inputStreams": [
+      "noDataAlertStream"
+    ],
+    "outputStreams": [
+      "noDataAlertStream_out"
+    ],
+    "definition": {
+      "type": "nodataalert",
+      "value": "PT1M,dynamic,1,host"
+    },
+    "partitionSpec": [
+      {
+        "streamId": "noDataAlertStream",
+        "type": "GROUPBY",
+        "columns": [
+          "host"
+        ]
+      }
+    ],
+    "parallelismHint": 2
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/publishments.json
index 362a03b..d8d4476 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/publishments.json
@@ -1,20 +1,20 @@
 [
-	{
-		"name":"test-stream-output",
-		"type":"org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-		"policyIds": [
-			"noDataAlertPolicy"
-		],
-		"properties": {
-			"subject":"Eagle Test Alert",
-			"template":"",
-			"sender": "sender@corp.com",
-			"recipients": "services@corp.com",
-			"smtp.server":"smtp.mailhost.com",
-			"connection": "plaintext",
-			"smtp.port": "25"
-		},
-		"dedupIntervalMin" : "PT5M",
-		"serializer" : "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
-	}
+  {
+    "name": "test-stream-output",
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
+    "policyIds": [
+      "noDataAlertPolicy"
+    ],
+    "properties": {
+      "subject": "Eagle Test Alert",
+      "template": "",
+      "sender": "sender@corp.com",
+      "recipients": "services@corp.com",
+      "smtp.server": "smtp.mailhost.com",
+      "connection": "plaintext",
+      "smtp.port": "25"
+    },
+    "dedupIntervalMin": "PT5M",
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
+  }
 ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/streamdefinitions.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/streamdefinitions.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/streamdefinitions.json
index 45b6241..4fb40d2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/streamdefinitions.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/streamdefinitions.json
@@ -1,29 +1,29 @@
 [
-	{
-		"streamId": "noDataAlertStream",
-		"dataSource": "noDataAlertDataSource",
-		"description": "the data stream for testing no data alert",
-		"validate": false,
-		"timeseries": false,
-		"columns": [
-			{
-				"name": "host",
-				"type": "STRING",
-				"defaultValue": "",
-				"required": true
-			},
-			{
-				"name": "timestamp",
-				"type": "LONG",
-				"defaultValue": 0,
-				"required": true
-			},
-			{
-				"name": "value",
-				"type": "DOUBLE",
-				"defaultValue": "0.0",
-				"required": true
-			}
-		]
-	}
+  {
+    "streamId": "noDataAlertStream",
+    "dataSource": "noDataAlertDataSource",
+    "description": "the data stream for testing no data alert",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "host",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "timestamp",
+        "type": "LONG",
+        "defaultValue": 0,
+        "required": true
+      },
+      {
+        "name": "value",
+        "type": "DOUBLE",
+        "defaultValue": "0.0",
+        "required": true
+      }
+    ]
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/topologies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/topologies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/topologies.json
index 411cc48..c13eeb2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/topologies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/nodata/topologies.json
@@ -1,31 +1,31 @@
 [
-{
-	"name": "alertUnitTopology_1",
-	"numOfSpout":1,
-	"numOfAlertBolt": 10,
-	"numOfGroupBolt": 4,
-	"spoutId": "alertEngineSpout",
-	"groupNodeIds" : [
-		"streamRouterBolt0",
-		"streamRouterBolt1",
-		"streamRouterBolt2",
-		"streamRouterBolt3"
-	],
-	"alertBoltIds": [
-		"alertBolt0",
-		"alertBolt1",
-		"alertBolt2",
-		"alertBolt3",
-		"alertBolt4",
-		"alertBolt5",
-		"alertBolt6",
-		"alertBolt7",
-		"alertBolt8",
-		"alertBolt9"
-	],
-	"pubBoltId" : "alertPublishBolt",
-	"spoutParallelism": 1,
-	"groupParallelism": 1,
-	"alertParallelism": 1
-}
+  {
+    "name": "alertUnitTopology_1",
+    "numOfSpout": 1,
+    "numOfAlertBolt": 10,
+    "numOfGroupBolt": 4,
+    "spoutId": "alertEngineSpout",
+    "groupNodeIds": [
+      "streamRouterBolt0",
+      "streamRouterBolt1",
+      "streamRouterBolt2",
+      "streamRouterBolt3"
+    ],
+    "alertBoltIds": [
+      "alertBolt0",
+      "alertBolt1",
+      "alertBolt2",
+      "alertBolt3",
+      "alertBolt4",
+      "alertBolt5",
+      "alertBolt6",
+      "alertBolt7",
+      "alertBolt8",
+      "alertBolt9"
+    ],
+    "pubBoltId": "alertPublishBolt",
+    "spoutParallelism": 1,
+    "groupParallelism": 1,
+    "alertParallelism": 1
+  }
 ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments-empty-dedup-field.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments-empty-dedup-field.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments-empty-dedup-field.json
index cba4960..f573034 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments-empty-dedup-field.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments-empty-dedup-field.json
@@ -1,20 +1,21 @@
 [
   {
-    "name":"test-stream-output",
-    "type":"org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
+    "name": "test-stream-output",
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
     "policyIds": [
-      "perfmon_cpu_host_check", "perfmon_cpu_pool_check"
+      "perfmon_cpu_host_check",
+      "perfmon_cpu_pool_check"
     ],
     "properties": {
-      "subject":"Eagle Test Alert",
-      "template":"",
+      "subject": "Eagle Test Alert",
+      "template": "",
       "sender": "sender@corp.com",
       "recipients": "receiver@corp.com",
-      "smtp.server":"mailhost.com",
+      "smtp.server": "mailhost.com",
       "connection": "plaintext",
       "smtp.port": "25"
     },
-    "dedupIntervalMin" : "PT1M",
-    "serializer" : "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
+    "dedupIntervalMin": "PT1M",
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
   }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments.json
index 4db6590..82a338d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/router/publishments.json
@@ -1,23 +1,24 @@
 [
-{
-	"name":"test-stream-output",
-	"type":"org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-	"policyIds": [
-		"perfmon_cpu_host_check", "perfmon_cpu_pool_check"
-	],
-	"properties": {
-	  "subject":"Eagle Test Alert",
-	  "template":"",
-	  "sender": "sender@corp.com",
-	  "recipients": "receiver@corp.com",
-	  "smtp.server":"mailhost.com",
-	  "connection": "plaintext",
-	  "smtp.port": "25"
-	},
-	"dedupIntervalMin" : "PT1M",
-  	"dedupFields": [
-	  "appname"
-	],
-	"serializer" : "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
-}
+  {
+    "name": "test-stream-output",
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
+    "policyIds": [
+      "perfmon_cpu_host_check",
+      "perfmon_cpu_pool_check"
+    ],
+    "properties": {
+      "subject": "Eagle Test Alert",
+      "template": "",
+      "sender": "sender@corp.com",
+      "recipients": "receiver@corp.com",
+      "smtp.server": "mailhost.com",
+      "connection": "plaintext",
+      "smtp.port": "25"
+    },
+    "dedupIntervalMin": "PT1M",
+    "dedupFields": [
+      "appname"
+    ],
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/sample_perfmon_data.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/sample_perfmon_data.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/sample_perfmon_data.json
index c63b9ff..8d1e5fa 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/sample_perfmon_data.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/sample_perfmon_data.json
@@ -1,3 +1,10 @@
 [
-{"host": "", "timestamp" : "", "metric" : "", "pool": "", "value": 1.0, "colo": "phx"},
+  {
+    "host": "",
+    "timestamp": "",
+    "metric": "",
+    "pool": "",
+    "value": 1.0,
+    "colo": "phx"
+  },
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/application-integration.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/application-integration.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/application-integration.conf
index 3f2fbc3..288d9f9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/application-integration.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/application-integration.conf
@@ -13,16 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_1",
+  "topology": {
+    "name": "alertUnitTopology_1",
     "numOfTotalWorkers": 20,
-    "numOfSpoutTasks" : 1,
-    "numOfRouterBolts" : 4,
-    "numOfAlertBolts" : 20,
-    "numOfPublishTasks" : 1,
-    "localMode" : "true"
+    "numOfSpoutTasks": 1,
+    "numOfRouterBolts": 4,
+    "numOfAlertBolts": 20,
+    "numOfPublishTasks": 1,
+    "localMode": "true"
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "127.0.0.1:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -32,35 +32,35 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "127.0.0.1:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "127.0.0.1:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-	"context" : "/rest",
-	"host" : "localhost",
-	"port" : 8080
+    "context": "/rest",
+    "host": "localhost",
+    "port": 8080
   },
   "coordinatorService": {
-  	"host": "localhost",
-  	"port": "8080",
-  	"context" : "/rest"
+    "host": "localhost",
+    "port": "8080",
+    "context": "/rest"
   },
   "kafkaProducer": {
-  	"bootstrapServers": "127.0.0.1:9092"
+    "bootstrapServers": "127.0.0.1:9092"
   },
-	"email": {
-		"sender": "eagle@eagle.com",
-		"recipients": "test@eagle.com",
-		"mail.smtp.host": "test.eagle.com",
-		"mail.smtp.port": "25"
-	}
+  "email": {
+    "sender": "eagle@eagle.com",
+    "recipients": "test@eagle.com",
+    "mail.smtp.host": "test.eagle.com",
+    "mail.smtp.port": "25"
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/datasources.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/datasources.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/datasources.json
index 77a280c..19c70b4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/datasources.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/datasources.json
@@ -1,19 +1,19 @@
 [
-{
-	"name": "perfmon_datasource",
-	"type": "KAFKA",
-	"properties": {
-	},
-	"topic": "perfmon_metrics",
-	"schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
-	"codec": {
-		"streamNameSelectorProp": {
-			"fieldNamesToInferStreamName" : "metric",
-			"streamNameFormat":"%s"
-		},
-		"streamNameSelectorCls":"org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-		"timestampColumn": "timestamp",
-		"timestampFormat":""
-	}
-}
+  {
+    "name": "perfmon_datasource",
+    "type": "KAFKA",
+    "properties": {
+    },
+    "topic": "perfmon_metrics",
+    "schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "fieldNamesToInferStreamName": "metric",
+        "streamNameFormat": "%s"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": "timestamp",
+      "timestampFormat": ""
+    }
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/policies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/policies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/policies.json
index c214f2c..043d6a8 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/policies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/policies.json
@@ -1,81 +1,81 @@
 [
-{
-	"name": "perfmon_cpu_host_check",
-	"description" : "policy to check host perfmon_cpu",
-	"inputStreams": [
-		"perfmon_cpu_stream"
-	],
-	"outputStreams": [
-		"perfmon_cpu_check_output"
-	],
-	"definition": {
-		"type": "siddhi",
-		"value": "from perfmon_cpu_stream[value > 90.0] select * group by host insert into perfmon_cpu_check_output;"
-	},
-	"partitionSpec": [
-		{
-			"streamId" : "perfmon_cpu_stream",
-			"type" : "GROUPBY",
-			"columns" : [
-				"host"
-			],
-			"sortSpec": {
-				"windowPeriod" : "PT1M"
-			}
-		}
-	]
-},
-{
-	"name": "perfmon_cpu_pool_check",
-	"description" : "policy to check pool perfmon_cpu",
-	"inputStreams": [
-		"perfmon_cpu_stream"
-	],
-	"outputStreams": [
-		"perfmon_cpu_check_output"
-	],
-	"definition": {
-		"type": "siddhi",
-		"value": "from perfmon_cpu_stream[value > 75.0] select * group by pool insert into perfmon_cpu_check_output;"
-	},
-	"partitionSpec": [
-		{
-			"streamId" : "perfmon_cpu_stream",
-			"type" : "GROUPBY",
-			"columns" : [
-				"pool"
-			],
-			"sortSpec": {
-				"windowPeriod" : "PT1M"
-			}
-		}
-	]
-},
-{
-	"name": "perfmon_cpu_pool_check_2",
-	"description" : "policy to check pool perfmon_cpu",
-	"inputStreams": [
-		"perfmon_cpu_stream"
-	],
-	"outputStreams": [
-		"perfmon_cpu_check_output_2"
-	],
-	"definition": {
-		"type": "siddhi",
-		"value": "from perfmon_cpu_stream[value > 90.0] select * group by pool insert into perfmon_cpu_check_output_2;"
-	},
-	"partitionSpec": [
-		{
-			"streamId" : "perfmon_cpu_stream",
-			"type" : "GROUPBY",
-			"columns" : [
-				"pool"
-			],
-			"sortSpec": {
-				"windowPeriod" : "PT1M"
-			}
-		}
-	],
-	"policyStatus": "DISABLED"
-}
+  {
+    "name": "perfmon_cpu_host_check",
+    "description": "policy to check host perfmon_cpu",
+    "inputStreams": [
+      "perfmon_cpu_stream"
+    ],
+    "outputStreams": [
+      "perfmon_cpu_check_output"
+    ],
+    "definition": {
+      "type": "siddhi",
+      "value": "from perfmon_cpu_stream[value > 90.0] select * group by host insert into perfmon_cpu_check_output;"
+    },
+    "partitionSpec": [
+      {
+        "streamId": "perfmon_cpu_stream",
+        "type": "GROUPBY",
+        "columns": [
+          "host"
+        ],
+        "sortSpec": {
+          "windowPeriod": "PT1M"
+        }
+      }
+    ]
+  },
+  {
+    "name": "perfmon_cpu_pool_check",
+    "description": "policy to check pool perfmon_cpu",
+    "inputStreams": [
+      "perfmon_cpu_stream"
+    ],
+    "outputStreams": [
+      "perfmon_cpu_check_output"
+    ],
+    "definition": {
+      "type": "siddhi",
+      "value": "from perfmon_cpu_stream[value > 75.0] select * group by pool insert into perfmon_cpu_check_output;"
+    },
+    "partitionSpec": [
+      {
+        "streamId": "perfmon_cpu_stream",
+        "type": "GROUPBY",
+        "columns": [
+          "pool"
+        ],
+        "sortSpec": {
+          "windowPeriod": "PT1M"
+        }
+      }
+    ]
+  },
+  {
+    "name": "perfmon_cpu_pool_check_2",
+    "description": "policy to check pool perfmon_cpu",
+    "inputStreams": [
+      "perfmon_cpu_stream"
+    ],
+    "outputStreams": [
+      "perfmon_cpu_check_output_2"
+    ],
+    "definition": {
+      "type": "siddhi",
+      "value": "from perfmon_cpu_stream[value > 90.0] select * group by pool insert into perfmon_cpu_check_output_2;"
+    },
+    "partitionSpec": [
+      {
+        "streamId": "perfmon_cpu_stream",
+        "type": "GROUPBY",
+        "columns": [
+          "pool"
+        ],
+        "sortSpec": {
+          "windowPeriod": "PT1M"
+        }
+      }
+    ],
+    "policyStatus": "DISABLED"
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/publishments.json
index cd05622..21edd0a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/publishments.json
@@ -1,31 +1,34 @@
 [
-{
-	"name":"test-stream-output",
-	"type":"org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-	"policyIds": [
-		"perfmon_cpu_host_check", "perfmon_cpu_pool_check"
-	],
-	"properties": {
-	  "subject":"Eagle Test Alert",
-	  "template":"",
-	  "sender": "sender@corp.com",
-	  "recipients": "services@corp.com",
-	  "smtp.server":"smtp.mailhost.com",
-	  "connection": "plaintext",
-	  "smtp.port": "25"
-	},
-	"dedupIntervalMin" : "PT1M",
-	"serializer" : "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
-},
-{
-  "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-  "name":"kafka-testAlertStream",
-  "policyIds": ["perfmon_cpu_host_check"],
-  "dedupIntervalMin": "PT1M",
-  "properties":{
-    "kafka_broker":"localhost:9092",
-    "topic":"test_kafka"
+  {
+    "name": "test-stream-output",
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
+    "policyIds": [
+      "perfmon_cpu_host_check",
+      "perfmon_cpu_pool_check"
+    ],
+    "properties": {
+      "subject": "Eagle Test Alert",
+      "template": "",
+      "sender": "sender@corp.com",
+      "recipients": "services@corp.com",
+      "smtp.server": "smtp.mailhost.com",
+      "connection": "plaintext",
+      "smtp.port": "25"
+    },
+    "dedupIntervalMin": "PT1M",
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
   },
-  "serializer" : "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
-}
+  {
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+    "name": "kafka-testAlertStream",
+    "policyIds": [
+      "perfmon_cpu_host_check"
+    ],
+    "dedupIntervalMin": "PT1M",
+    "properties": {
+      "kafka_broker": "localhost:9092",
+      "topic": "test_kafka"
+    },
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
+  }
 ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/streamdefinitions.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/streamdefinitions.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/streamdefinitions.json
index d93822e..abfbcf3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/streamdefinitions.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/streamdefinitions.json
@@ -1,44 +1,47 @@
 [
-{
-	"streamId": "perfmon_cpu_stream",
-	"dataSource" : "perfmon_datasource",
-	"description":"the data stream for perfmon cpu metrics",
-	"validate": false,
-	"timeseries":false,
-	"columns": [
-		{
-			"name": "host",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "timestamp",
-			"type" : "LONG",
-			"defaultValue": 0,
-			"required":true
-		},{
-			"name": "metric",
-			"type" : "STRING",
-			"defaultValue": "perfmon_cpu",
-			"required": true
-		},{
-			"name": "pool",
-			"type" : "STRING",
-			"defaultValue": "raptor_general",
-			"required":true
-		},{
-			"name": "value",
-			"type" : "DOUBLE",
-			"defaultValue": 0.0,
-			"required":true
-		},
-		{
-			"name": "colo",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		}
-	]
-}
+  {
+    "streamId": "perfmon_cpu_stream",
+    "dataSource": "perfmon_datasource",
+    "description": "the data stream for perfmon cpu metrics",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "host",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "timestamp",
+        "type": "LONG",
+        "defaultValue": 0,
+        "required": true
+      },
+      {
+        "name": "metric",
+        "type": "STRING",
+        "defaultValue": "perfmon_cpu",
+        "required": true
+      },
+      {
+        "name": "pool",
+        "type": "STRING",
+        "defaultValue": "raptor_general",
+        "required": true
+      },
+      {
+        "name": "value",
+        "type": "DOUBLE",
+        "defaultValue": 0.0,
+        "required": true
+      },
+      {
+        "name": "colo",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      }
+    ]
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/topologies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/topologies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/topologies.json
index 984fcdb..7417934 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/topologies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/simple/topologies.json
@@ -1,41 +1,41 @@
 [
-{
-	"name": "alertUnitTopology_1",
-	"numOfSpout":1,
-	"numOfAlertBolt": 20,
-	"numOfGroupBolt": 4,
-	"spoutId": "alertEngineSpout",
-	"groupNodeIds" : [
-		"streamRouterBolt0",
-		"streamRouterBolt1",
-		"streamRouterBolt2",
-		"streamRouterBolt3"
-	],
-	"alertBoltIds": [
-		"alertBolt0",
-		"alertBolt1",
-		"alertBolt2",
-		"alertBolt3",
-		"alertBolt4",
-		"alertBolt5",
-		"alertBolt6",
-		"alertBolt7",
-		"alertBolt8",
-		"alertBolt9",
-		"alertBolt10",
-		"alertBolt11",
-		"alertBolt12",
-		"alertBolt13",
-		"alertBolt14",
-		"alertBolt15",
-		"alertBolt16",
-		"alertBolt17",
-		"alertBolt18",
-		"alertBolt19"
-	],
-	"pubBoltId" : "alertPublishBolt",
-	"spoutParallelism": 1,
-	"groupParallelism": 1,
-	"alertParallelism": 1
-}
+  {
+    "name": "alertUnitTopology_1",
+    "numOfSpout": 1,
+    "numOfAlertBolt": 20,
+    "numOfGroupBolt": 4,
+    "spoutId": "alertEngineSpout",
+    "groupNodeIds": [
+      "streamRouterBolt0",
+      "streamRouterBolt1",
+      "streamRouterBolt2",
+      "streamRouterBolt3"
+    ],
+    "alertBoltIds": [
+      "alertBolt0",
+      "alertBolt1",
+      "alertBolt2",
+      "alertBolt3",
+      "alertBolt4",
+      "alertBolt5",
+      "alertBolt6",
+      "alertBolt7",
+      "alertBolt8",
+      "alertBolt9",
+      "alertBolt10",
+      "alertBolt11",
+      "alertBolt12",
+      "alertBolt13",
+      "alertBolt14",
+      "alertBolt15",
+      "alertBolt16",
+      "alertBolt17",
+      "alertBolt18",
+      "alertBolt19"
+    ],
+    "pubBoltId": "alertPublishBolt",
+    "spoutParallelism": 1,
+    "groupParallelism": 1,
+    "alertParallelism": 1
+  }
 ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/application-statecheck.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/application-statecheck.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/application-statecheck.conf
index 73e5b30..db14d3c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/application-statecheck.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/application-statecheck.conf
@@ -13,16 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_1",
+  "topology": {
+    "name": "alertUnitTopology_1",
     "numOfTotalWorkers": 20,
-    "numOfSpoutTasks" : 1,
-    "numOfRouterBolts" : 4,
-    "numOfAlertBolts" : 10,
-    "numOfPublishTasks" : 1,
-    "localMode" : "true"
+    "numOfSpoutTasks": 1,
+    "numOfRouterBolts": 4,
+    "numOfAlertBolts": 10,
+    "numOfPublishTasks": 1,
+    "localMode": "true"
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "localhost:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -32,29 +32,29 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "localhost:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "localhost:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-	"context" : "/rest",
-	"host" : "localhost",
-	"port" : 8080
+    "context": "/rest",
+    "host": "localhost",
+    "port": 8080
   },
   "coordinatorService": {
-  	"host": "localhost",
-  	"port": "8080",
-  	"context" : "/rest"
+    "host": "localhost",
+    "port": "8080",
+    "context": "/rest"
   },
   "kafkaProducer": {
-  	"bootstrapServers": "localhost:9092"
+    "bootstrapServers": "localhost:9092"
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/datasources.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/datasources.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/datasources.json
index 77a280c..19c70b4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/datasources.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/datasources.json
@@ -1,19 +1,19 @@
 [
-{
-	"name": "perfmon_datasource",
-	"type": "KAFKA",
-	"properties": {
-	},
-	"topic": "perfmon_metrics",
-	"schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
-	"codec": {
-		"streamNameSelectorProp": {
-			"fieldNamesToInferStreamName" : "metric",
-			"streamNameFormat":"%s"
-		},
-		"streamNameSelectorCls":"org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-		"timestampColumn": "timestamp",
-		"timestampFormat":""
-	}
-}
+  {
+    "name": "perfmon_datasource",
+    "type": "KAFKA",
+    "properties": {
+    },
+    "topic": "perfmon_metrics",
+    "schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "fieldNamesToInferStreamName": "metric",
+        "streamNameFormat": "%s"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": "timestamp",
+      "timestampFormat": ""
+    }
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/topologies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/topologies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/topologies.json
index 411cc48..c13eeb2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/topologies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/statecheck/topologies.json
@@ -1,31 +1,31 @@
 [
-{
-	"name": "alertUnitTopology_1",
-	"numOfSpout":1,
-	"numOfAlertBolt": 10,
-	"numOfGroupBolt": 4,
-	"spoutId": "alertEngineSpout",
-	"groupNodeIds" : [
-		"streamRouterBolt0",
-		"streamRouterBolt1",
-		"streamRouterBolt2",
-		"streamRouterBolt3"
-	],
-	"alertBoltIds": [
-		"alertBolt0",
-		"alertBolt1",
-		"alertBolt2",
-		"alertBolt3",
-		"alertBolt4",
-		"alertBolt5",
-		"alertBolt6",
-		"alertBolt7",
-		"alertBolt8",
-		"alertBolt9"
-	],
-	"pubBoltId" : "alertPublishBolt",
-	"spoutParallelism": 1,
-	"groupParallelism": 1,
-	"alertParallelism": 1
-}
+  {
+    "name": "alertUnitTopology_1",
+    "numOfSpout": 1,
+    "numOfAlertBolt": 10,
+    "numOfGroupBolt": 4,
+    "spoutId": "alertEngineSpout",
+    "groupNodeIds": [
+      "streamRouterBolt0",
+      "streamRouterBolt1",
+      "streamRouterBolt2",
+      "streamRouterBolt3"
+    ],
+    "alertBoltIds": [
+      "alertBolt0",
+      "alertBolt1",
+      "alertBolt2",
+      "alertBolt3",
+      "alertBolt4",
+      "alertBolt5",
+      "alertBolt6",
+      "alertBolt7",
+      "alertBolt8",
+      "alertBolt9"
+    ],
+    "pubBoltId": "alertPublishBolt",
+    "spoutParallelism": 1,
+    "groupParallelism": 1,
+    "alertParallelism": 1
+  }
 ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd0.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd0.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd0.json
index 9ba7adb..3d0d5a2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd0.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd0.json
@@ -5,15 +5,19 @@
   "publishments": [
     {
       "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-      "name":"email-testAlertStream",
-      "policyIds": ["policy1", "policy2", "policy3"],
+      "name": "email-testAlertStream",
+      "policyIds": [
+        "policy1",
+        "policy2",
+        "policy3"
+      ],
       "dedupIntervalMin": "PT1M",
-      "properties":{
-        "subject":"UMP Test Alert",
-        "template":"",
-	  "sender": "sender@corp.com",
-	  "recipients": "receiver@corp.com",
-	  "smtp.server":"mailhost.com",
+      "properties": {
+        "subject": "UMP Test Alert",
+        "template": "",
+        "sender": "sender@corp.com",
+        "recipients": "receiver@corp.com",
+        "smtp.server": "mailhost.com",
         "connection": "plaintext",
         "smtp.port": "25"
       }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd1.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd1.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd1.json
index 3974584..0187e8b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd1.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForAdd1.json
@@ -5,27 +5,33 @@
   "publishments": [
     {
       "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-      "name":"email-testAlertStream",
-      "policyIds": ["policy1", "policy2", "policy3"],
+      "name": "email-testAlertStream",
+      "policyIds": [
+        "policy1",
+        "policy2",
+        "policy3"
+      ],
       "dedupIntervalMin": "PT1M",
-      "properties":{
-        "subject":"UMP Test Alert",
-        "template":"",
-	  "sender": "sender@corp.com",
-	  "recipients": "receiver@corp.com",
-	  "smtp.server":"mailhost.com",
+      "properties": {
+        "subject": "UMP Test Alert",
+        "template": "",
+        "sender": "sender@corp.com",
+        "recipients": "receiver@corp.com",
+        "smtp.server": "mailhost.com",
         "connection": "plaintext",
         "smtp.port": "25"
       }
     },
     {
       "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-      "name":"kafka-testAlertStream",
-      "policyIds": ["testPolicy"],
+      "name": "kafka-testAlertStream",
+      "policyIds": [
+        "testPolicy"
+      ],
       "dedupIntervalMin": "PT1M",
-      "properties":{
-        "kafka_broker":"sandbox.hortonworks.com:6667",
-        "topic":"test_kafka"
+      "properties": {
+        "kafka_broker": "sandbox.hortonworks.com:6667",
+        "topic": "test_kafka"
       }
     }
   ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForMdyValue.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForMdyValue.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForMdyValue.json
index 4e1df83..6fa99d6 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForMdyValue.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishForMdyValue.json
@@ -5,15 +5,20 @@
   "publishments": [
     {
       "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-      "name":"email-testAlertStream",
-      "policyIds": ["policy1", "policy2", "policy3", "policy_MdyValue"],
+      "name": "email-testAlertStream",
+      "policyIds": [
+        "policy1",
+        "policy2",
+        "policy3",
+        "policy_MdyValue"
+      ],
       "dedupIntervalMin": "PT1M",
-      "properties":{
-        "subject":"UMP Test Alert",
-        "template":"",
-	  "sender": "sender@corp.com",
-	  "recipients": "receiver@corp.com",
-	  "smtp.server":"mailhost.com",
+      "properties": {
+        "subject": "UMP Test Alert",
+        "template": "",
+        "sender": "sender@corp.com",
+        "recipients": "receiver@corp.com",
+        "smtp.server": "mailhost.com",
         "connection": "plaintext",
         "smtp.port": "25"
       }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec.json
index 66b3852..70ea6b3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec.json
@@ -5,8 +5,12 @@
   "publishments": [
     {
       "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-      "name":"email-testAlertStream",
-      "policyIds": ["policy1", "policy2", "policy3"],
+      "name": "email-testAlertStream",
+      "policyIds": [
+        "policy1",
+        "policy2",
+        "policy3"
+      ],
       "dedupIntervalMin": "PT1M",
       "properties": {
         "subject": "Test Alert",
@@ -22,15 +26,15 @@
         "mail.smtp.port": "587"
       }
     }
-/*    {
-      "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-      "name":"kafka-testAlertStream",
-      "policyIds": ["testPolicy"],
-      "dedupIntervalMin": "PT1M",
-      "properties":{
-        "kafka_broker":"sandbox.hortonworks.com:6667",
-        "topic":"test_kafka"
-      }
-    }*/
+    /*    {
+          "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+          "name":"kafka-testAlertStream",
+          "policyIds": ["testPolicy"],
+          "dedupIntervalMin": "PT1M",
+          "properties":{
+            "kafka_broker":"sandbox.hortonworks.com:6667",
+            "topic":"test_kafka"
+          }
+        }*/
   ]
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec2.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec2.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec2.json
index 0108a1e..e14db43 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec2.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/testPublishSpec2.json
@@ -5,8 +5,10 @@
   "publishments": [
     {
       "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-      "name":"email-testAlertStream",
-      "policyIds": ["policy1"],
+      "name": "email-testAlertStream",
+      "policyIds": [
+        "policy1"
+      ],
       "dedupIntervalMin": "PT2M",
       "properties": {
         "subject": "Test Alert",
@@ -22,15 +24,15 @@
         "mail.smtp.port": "587"
       }
     }
-//    {
-//      "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-//      "name":"kafka-testAlertStream",
-//      "policyIds": ["testPolicy"],
-//      "dedupIntervalMin": "PT1M",
-//      "properties":{
-//        "kafka_broker":"sandbox.hortonworks.com:6667",
-//        "topic":"test_kafka"
-//      }
-//    }
+    //    {
+    //      "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+    //      "name":"kafka-testAlertStream",
+    //      "policyIds": ["testPolicy"],
+    //      "dedupIntervalMin": "PT1M",
+    //      "properties":{
+    //        "kafka_broker":"sandbox.hortonworks.com:6667",
+    //        "topic":"test_kafka"
+    //      }
+    //    }
   ]
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/pom.xml b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/pom.xml
index 2cbef7c..0518a15 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/pom.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/pom.xml
@@ -65,16 +65,16 @@
         </dependency>
 
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-mapper-asl</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-mapper-asl</artifactId>-->
         <!--</dependency>-->
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-jaxrs</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-jaxrs</artifactId>-->
         <!--</dependency>-->
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-xc</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-xc</artifactId>-->
         <!--</dependency>-->
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/metadata/resource/MetadataResource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/metadata/resource/MetadataResource.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/metadata/resource/MetadataResource.java
index 1799fa8..5922f20 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/metadata/resource/MetadataResource.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/metadata/resource/MetadataResource.java
@@ -16,50 +16,39 @@
  */
 package org.apache.eagle.service.metadata.resource;
 
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-
-import com.google.inject.Inject;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
 import org.apache.eagle.alert.coordination.model.internal.Topology;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.Publishment;
-import org.apache.eagle.alert.engine.coordinator.PublishmentType;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
+import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.metadata.IMetadataDao;
 import org.apache.eagle.alert.metadata.impl.MetadataDaoFactory;
 import org.apache.eagle.alert.metadata.resource.Models;
 import org.apache.eagle.alert.metadata.resource.OpResult;
+import com.google.inject.Inject;
+
+import java.util.LinkedList;
+import java.util.List;
+import javax.ws.rs.*;
 
 /**
- * @since Apr 11, 2016
- *
+ * @since Apr 11, 2016.
  */
 @Path("/metadata")
 @Produces("application/json")
 @Consumes("application/json")
 public class MetadataResource {
 
-//    private IMetadataDao dao = MetadataDaoFactory.getInstance().getMetadataDao();
+    //    private IMetadataDao dao = MetadataDaoFactory.getInstance().getMetadataDao();
     private final IMetadataDao dao;
 
-    public MetadataResource(){
-        this.dao = MetadataDaoFactory.getInstance().getMetadataDao();;
+    public MetadataResource() {
+        this.dao = MetadataDaoFactory.getInstance().getMetadataDao();
+        ;
     }
 
     @Inject
-    public MetadataResource(IMetadataDao dao){
+    public MetadataResource(IMetadataDao dao) {
         this.dao = dao;
     }
 
@@ -68,7 +57,7 @@ public class MetadataResource {
     public List<StreamingCluster> listClusters() {
         return dao.listClusters();
     }
-    
+
     @Path("/clear")
     @POST
     public OpResult clear() {
@@ -97,7 +86,7 @@ public class MetadataResource {
     @POST
     public List<OpResult> addClusters(List<StreamingCluster> clusters) {
         List<OpResult> results = new LinkedList<>();
-        for (StreamingCluster cluster: clusters) {
+        for (StreamingCluster cluster : clusters) {
             results.add(dao.addCluster(cluster));
         }
         return results;
@@ -113,7 +102,7 @@ public class MetadataResource {
     @DELETE
     public List<OpResult> removeClusters(List<String> clusterIds) {
         List<OpResult> results = new LinkedList<>();
-        for (String cluster: clusterIds) {
+        for (String cluster : clusterIds) {
             results.add(dao.removeCluster(cluster));
         }
         return results;
@@ -135,7 +124,7 @@ public class MetadataResource {
     @POST
     public List<OpResult> addStreams(List<StreamDefinition> streams) {
         List<OpResult> results = new LinkedList<>();
-        for (StreamDefinition stream: streams) {
+        for (StreamDefinition stream : streams) {
             results.add(dao.createStream(stream));
         }
         return results;
@@ -151,7 +140,7 @@ public class MetadataResource {
     @DELETE
     public List<OpResult> removeStreams(List<String> streamIds) {
         List<OpResult> results = new LinkedList<>();
-        for (String streamId: streamIds) {
+        for (String streamId : streamIds) {
             results.add(dao.removeStream(streamId));
         }
         return results;
@@ -173,7 +162,7 @@ public class MetadataResource {
     @POST
     public List<OpResult> addDataSources(List<Kafka2TupleMetadata> datasources) {
         List<OpResult> results = new LinkedList<>();
-        for (Kafka2TupleMetadata ds: datasources) {
+        for (Kafka2TupleMetadata ds : datasources) {
             results.add(dao.addDataSource(ds));
         }
         return results;
@@ -189,7 +178,7 @@ public class MetadataResource {
     @DELETE
     public List<OpResult> removeDataSources(List<String> datasourceIds) {
         List<OpResult> results = new LinkedList<>();
-        for (String ds: datasourceIds) {
+        for (String ds : datasourceIds) {
             results.add(dao.removeDataSource(ds));
         }
         return results;
@@ -211,7 +200,7 @@ public class MetadataResource {
     @POST
     public List<OpResult> addPolicies(List<PolicyDefinition> policies) {
         List<OpResult> results = new LinkedList<>();
-        for (PolicyDefinition policy: policies) {
+        for (PolicyDefinition policy : policies) {
             results.add(dao.addPolicy(policy));
         }
         return results;
@@ -227,7 +216,7 @@ public class MetadataResource {
     @DELETE
     public List<OpResult> removePolicies(List<String> policies) {
         List<OpResult> results = new LinkedList<>();
-        for (String policy: policies) {
+        for (String policy : policies) {
             results.add(dao.removePolicy(policy));
         }
         return results;
@@ -249,7 +238,7 @@ public class MetadataResource {
     @POST
     public List<OpResult> addPublishments(List<Publishment> publishments) {
         List<OpResult> results = new LinkedList<>();
-        for (Publishment publishment: publishments) {
+        for (Publishment publishment : publishments) {
             results.add(dao.addPublishment(publishment));
         }
         return results;
@@ -265,7 +254,7 @@ public class MetadataResource {
     @DELETE
     public List<OpResult> removePublishments(List<String> pubIds) {
         List<OpResult> results = new LinkedList<>();
-        for (String pub: pubIds) {
+        for (String pub : pubIds) {
             results.add(dao.removePublishment(pub));
         }
         return results;
@@ -287,7 +276,7 @@ public class MetadataResource {
     @POST
     public List<OpResult> addPublishmentTypes(List<PublishmentType> publishmentTypes) {
         List<OpResult> results = new LinkedList<>();
-        for (PublishmentType pubType: publishmentTypes) {
+        for (PublishmentType pubType : publishmentTypes) {
             results.add(dao.addPublishmentType(pubType));
         }
         return results;
@@ -303,7 +292,7 @@ public class MetadataResource {
     @DELETE
     public List<OpResult> removePublishmentTypes(List<String> pubTypes) {
         List<OpResult> results = new LinkedList<>();
-        for (String pubType: pubTypes) {
+        for (String pubType : pubTypes) {
             results.add(dao.removePublishmentType(pubType));
         }
         return results;
@@ -355,7 +344,7 @@ public class MetadataResource {
     @POST
     public List<OpResult> addTopologies(List<Topology> topologies) {
         List<OpResult> results = new LinkedList<>();
-        for (Topology t: topologies) {
+        for (Topology t : topologies) {
             results.add(dao.addTopology(t));
         }
         return results;
@@ -371,7 +360,7 @@ public class MetadataResource {
     @DELETE
     public List<OpResult> removeTopologies(List<String> topologies) {
         List<OpResult> results = new LinkedList<>();
-        for (String t: topologies) {
+        for (String t : topologies) {
             results.add(dao.removeTopology(t));
         }
         return results;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/TopologyMgmtResource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/TopologyMgmtResource.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/TopologyMgmtResource.java
index 437068f..5626321 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/TopologyMgmtResource.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/TopologyMgmtResource.java
@@ -22,13 +22,11 @@ import org.apache.eagle.alert.metadata.resource.OpResult;
 import org.apache.eagle.service.topology.resource.impl.TopologyMgmtResourceImpl;
 import org.apache.eagle.service.topology.resource.impl.TopologyStatus;
 
-import javax.ws.rs.*;
-
 import java.util.List;
+import javax.ws.rs.*;
 
 /**
- * @since May 5, 2016
- *
+ * @since May 5, 2016.
  */
 @Path("/alert")
 @Produces("application/json")

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceHelper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceHelper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceHelper.java
index 3876116..3c6f5a5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceHelper.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceHelper.java
@@ -30,8 +30,8 @@ public class TopologyMgmtResourceHelper {
     private static final Logger LOG = LoggerFactory.getLogger(TopologyMgmtResourceHelper.class);
 
     public static <T> Optional<T> findById(List<T> clusters, String id) {
-        Optional<T> OptionValue = clusters.stream().filter(o -> getName(o).equalsIgnoreCase(id)).findFirst();
-        return OptionValue;
+        Optional<T> pptionValue = clusters.stream().filter(o -> getName(o).equalsIgnoreCase(id)).findFirst();
+        return pptionValue;
     }
 
     public static <T> String getName(T t) {
@@ -39,10 +39,10 @@ public class TopologyMgmtResourceHelper {
             Method m = t.getClass().getMethod("getName");
             return (String) m.invoke(t);
         } catch (NoSuchMethodException | SecurityException | InvocationTargetException | IllegalAccessException
-                | IllegalArgumentException e) {
+            | IllegalArgumentException e) {
             LOG.error(" getName not found on given class :" + t.getClass().getName());
         }
         throw new RuntimeException(String.format("no getName() found on target class %s for matching", t.getClass()
-                .getName()));
+            .getName()));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceImpl.java
index f9a6450..1bf810f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-metadata-parent/alert-metadata-service/src/main/java/org/apache/eagle/service/topology/resource/impl/TopologyMgmtResourceImpl.java
@@ -18,20 +18,12 @@
 
 package org.apache.eagle.service.topology.resource.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
 import org.apache.eagle.alert.coordination.model.internal.Topology;
 import org.apache.eagle.alert.engine.UnitTopologyMain;
-import org.apache.eagle.alert.engine.runner.UnitTopologyRunner;
 import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
-import org.apache.eagle.alert.metadata.impl.MetadataDaoFactory;
+import org.apache.eagle.alert.engine.runner.UnitTopologyRunner;
 import org.apache.eagle.alert.metadata.IMetadataDao;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import org.apache.eagle.alert.metadata.impl.MetadataDaoFactory;
 import backtype.storm.Config;
 import backtype.storm.StormSubmitter;
 import backtype.storm.generated.Nimbus;
@@ -39,38 +31,47 @@ import backtype.storm.generated.StormTopology;
 import backtype.storm.generated.TopologySummary;
 import backtype.storm.utils.NimbusClient;
 import backtype.storm.utils.Utils;
-
 import com.typesafe.config.ConfigFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
 
 public class TopologyMgmtResourceImpl {
     private static final IMetadataDao dao = MetadataDaoFactory.getInstance().getMetadataDao();
     @SuppressWarnings("unused")
     private static final Logger LOG = LoggerFactory.getLogger(TopologyMgmtResourceImpl.class);
 
-    private final String DEFAULT_NIMBUS_HOST = "sandbox.hortonworks.com";
-    private final Integer DEFAULT_NIMBUS_THRIFT_PORT = 6627;
-    private final String STORM_JAR_PATH = "topology.stormJarPath";
+    private static final String DEFAULT_NIMBUS_HOST = "sandbox.hortonworks.com";
+    private static final Integer DEFAULT_NIMBUS_THRIFT_PORT = 6627;
+    private static final String STORM_JAR_PATH = "topology.stormJarPath";
 
 
-    @SuppressWarnings({ "rawtypes", "unchecked" })
+    @SuppressWarnings( {"rawtypes", "unchecked"})
     private Map getStormConf(List<StreamingCluster> clusters, String clusterId) throws Exception {
-        Map<String, Object> storm_conf = Utils.readStormConfig();
-        if(clusterId == null) {
-            storm_conf.put(Config.NIMBUS_HOST, DEFAULT_NIMBUS_HOST);
-            storm_conf.put(Config.NIMBUS_THRIFT_PORT, DEFAULT_NIMBUS_THRIFT_PORT);
+        Map<String, Object> stormConf = Utils.readStormConfig();
+        if (clusterId == null) {
+            stormConf.put(Config.NIMBUS_HOST, DEFAULT_NIMBUS_HOST);
+            stormConf.put(Config.NIMBUS_THRIFT_PORT, DEFAULT_NIMBUS_THRIFT_PORT);
         } else {
-            if(clusters == null) clusters = dao.listClusters();
+            if (clusters == null) {
+                clusters = dao.listClusters();
+            }
             Optional<StreamingCluster> scOp = TopologyMgmtResourceHelper.findById(clusters, clusterId);
             StreamingCluster cluster;
-            if(scOp.isPresent()) {
+            if (scOp.isPresent()) {
                 cluster = scOp.get();
             } else {
                 throw new Exception("Fail to find cluster: " + clusterId);
             }
-            storm_conf.put(Config.NIMBUS_HOST, cluster.getDeployments().getOrDefault(StreamingCluster.NIMBUS_HOST, DEFAULT_NIMBUS_HOST));
-            storm_conf.put(Config.NIMBUS_THRIFT_PORT, Integer.valueOf(cluster.getDeployments().get(StreamingCluster.NIMBUS_THRIFT_PORT)));
+            stormConf.put(Config.NIMBUS_HOST, cluster.getDeployments().getOrDefault(StreamingCluster.NIMBUS_HOST, DEFAULT_NIMBUS_HOST));
+            stormConf.put(Config.NIMBUS_THRIFT_PORT, Integer.valueOf(cluster.getDeployments().get(StreamingCluster.NIMBUS_THRIFT_PORT)));
         }
-        return storm_conf;
+        return stormConf;
     }
 
     private void createTopologyHelper(Topology topologyDef, com.typesafe.config.Config config) {
@@ -90,7 +91,7 @@ public class TopologyMgmtResourceImpl {
     private StormTopology createTopology(Topology topologyDef) {
         com.typesafe.config.Config topologyConf = ConfigFactory.load("topology-sample-definition.conf");
         String stormJarPath = "";
-        if(topologyConf.hasPath(STORM_JAR_PATH)) {
+        if (topologyConf.hasPath(STORM_JAR_PATH)) {
             stormJarPath = topologyConf.getString(STORM_JAR_PATH);
         }
         System.setProperty("storm.jar", stormJarPath);
@@ -101,7 +102,7 @@ public class TopologyMgmtResourceImpl {
     public void startTopology(String topologyName) throws Exception {
         Optional<Topology> tdop = TopologyMgmtResourceHelper.findById(dao.listTopologies(), topologyName);
         Topology topologyDef;
-        if(tdop.isPresent()) {
+        if (tdop.isPresent()) {
             topologyDef = tdop.get();
         } else {
             topologyDef = new Topology();
@@ -113,7 +114,7 @@ public class TopologyMgmtResourceImpl {
     public void stopTopology(String topologyName) throws Exception {
         Optional<Topology> tdop = TopologyMgmtResourceHelper.findById(dao.listTopologies(), topologyName);
         Topology topologyDef;
-        if(tdop.isPresent()) {
+        if (tdop.isPresent()) {
             topologyDef = tdop.get();
         } else {
             throw new Exception("Fail to find topology " + topologyName);
@@ -122,12 +123,12 @@ public class TopologyMgmtResourceImpl {
         stormClient.killTopology(topologyName);
     }
 
-    @SuppressWarnings({ "rawtypes", "unused" })
+    @SuppressWarnings( {"rawtypes", "unused"})
     private TopologySummary getTopologySummery(List<StreamingCluster> clusters, Topology topologyDef) throws Exception {
-        Map storm_conf = getStormConf(clusters, topologyDef.getClusterName());
-        Nimbus.Client stormClient = NimbusClient.getConfiguredClient(storm_conf).getClient();
+        Map stormConf = getStormConf(clusters, topologyDef.getClusterName());
+        Nimbus.Client stormClient = NimbusClient.getConfiguredClient(stormConf).getClient();
         Optional<TopologySummary> tOp = stormClient.getClusterInfo().get_topologies().stream().filter(topology -> topology.get_name().equalsIgnoreCase(topologyDef.getName())).findFirst();
-        if(tOp.isPresent()) {
+        if (tOp.isPresent()) {
             String id = tOp.get().get_id();
             //StormTopology stormTopology= stormClient.getTopology(id);
             return tOp.get();
@@ -141,9 +142,9 @@ public class TopologyMgmtResourceImpl {
         List<StreamingCluster> clusters = dao.listClusters();
 
         List<TopologyStatus> topologies = new ArrayList<>();
-        for(Topology topologyDef : topologyDefinitions) {
+        for (Topology topologyDef : topologyDefinitions) {
             TopologySummary topologySummary = getTopologySummery(clusters, topologyDef);
-            if(topologySummary != null) {
+            if (topologySummary != null) {
                 TopologyStatus t = new TopologyStatus();
                 t.setName(topologySummary.get_name());
                 t.setId(topologySummary.get_id());



[13/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/TestTopologyMgmtService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/TestTopologyMgmtService.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/TestTopologyMgmtService.java
index d897454..80990a5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/TestTopologyMgmtService.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/java/org/apache/alert/coordinator/mock/TestTopologyMgmtService.java
@@ -35,7 +35,7 @@ public class TestTopologyMgmtService extends TopologyMgmtService {
     private int routerNumber;
     private int i = 0;
     private String namePrefix = "Topology";
-    
+
     // a config used to check if createTopology is enabled. FIXME: another class of mgmt service might be better
     private boolean enableCreateTopology = false;
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/application.conf
index 1ef71a0..72b8012 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/application.conf
@@ -14,38 +14,38 @@
 # limitations under the License.
 
 {
-	"coordinator" : {
-		"policiesPerBolt" : 5,
-		"boltParallelism" : 5,
-		"policyDefaultParallelism" : 5,
-		"boltLoadUpbound": 0.8,
-		"topologyLoadUpbound" : 0.8,
-		"numOfAlertBoltsPerTopology" : 5,
-		"zkConfig" : {
-			"zkQuorum" : "localhost:2181",
-			"zkRoot" : "/alert",
-			"zkSessionTimeoutMs" : 10000,
-			"connectionTimeoutMs" : 10000,
-			"zkRetryTimes" : 3,
-			"zkRetryInterval" : 3000
-		}
-		"metadataService" : {
-			"host" : "localhost",
-			"port" : 8080,
-			"context" : "/rest"
-		}
-		"metadataDynamicCheck" : {
-			"initDelayMillis" : 1000,
-			"delayMillis" : 30000
-		},
-		"kafkaProducer": {
-	  		"bootstrapServers": "localhost:9092"
-	  	},
-		"email": {
-			"sender": "eagle@eagle.com",
-			"recipients": "test@eagle.com",
-			"mailSmtpHost": "test.eagle.com",
-			"mailSmtpPort": "25"
-		}
-	}
+  "coordinator": {
+    "policiesPerBolt": 5,
+    "boltParallelism": 5,
+    "policyDefaultParallelism": 5,
+    "boltLoadUpbound": 0.8,
+    "topologyLoadUpbound": 0.8,
+    "numOfAlertBoltsPerTopology": 5,
+    "zkConfig": {
+      "zkQuorum": "localhost:2181",
+      "zkRoot": "/alert",
+      "zkSessionTimeoutMs": 10000,
+      "connectionTimeoutMs": 10000,
+      "zkRetryTimes": 3,
+      "zkRetryInterval": 3000
+    }
+    "metadataService": {
+      "host": "localhost",
+      "port": 8080,
+      "context": "/rest"
+    }
+    "metadataDynamicCheck": {
+      "initDelayMillis": 1000,
+      "delayMillis": 30000
+    },
+    "kafkaProducer": {
+      "bootstrapServers": "localhost:9092"
+    },
+    "email": {
+      "sender": "eagle@eagle.com",
+      "recipients": "test@eagle.com",
+      "mailSmtpHost": "test.eagle.com",
+      "mailSmtpPort": "25"
+    }
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/log4j.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/log4j.properties
index d4bc126..53f091e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/log4j.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/log4j.properties
@@ -12,9 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 log4j.rootLogger=INFO, stdout
-
 # standard output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/datasources.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/datasources.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/datasources.json
index 8678fe6..ef697f8 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/datasources.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/datasources.json
@@ -1,19 +1,19 @@
 [
-{
-	"name": "network_syslog_datasource",
-	"type": "KAFKA",
-	"properties": {
-	},
-	"topic": "logoutput",
-	"schemeCls": "org.apache.eagle.alert.engine.extension.SherlockEventScheme",
-	"codec": {
-		"streamNameSelectorProp": {
-			"fieldNamesToInferStreamName" : "namespace",
-			"streamNameFormat":"stream_%s"
-		},
-		"streamNameSelectorCls":"org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-		"timestampColumn": null,
-		"timestampFormat":""
-	}
-}
+  {
+    "name": "network_syslog_datasource",
+    "type": "KAFKA",
+    "properties": {
+    },
+    "topic": "logoutput",
+    "schemeCls": "org.apache.eagle.alert.engine.extension.SherlockEventScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "fieldNamesToInferStreamName": "namespace",
+        "streamNameFormat": "stream_%s"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": null,
+      "timestampFormat": ""
+    }
+  }
 ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/publishments.json
index d306be2..9e8b0d3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/publishments.json
@@ -1,26 +1,32 @@
 [
-{
-  "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-  "name":"network-syslog-publish",
-  "policyIds": ["syslog_severity_check_stream_demons1", "syslog_severity_check_stream_umpns2"],
-  "dedupIntervalMin": "PT0M",
-  "properties":{
-    "kafka_broker":"127.0.0.1:9092",
-    "topic":"syslog_alerts",
-    "value_deserializer": "org.apache.kafka.common.serialization.ByteArrayDeserializer",
-    "value_serializer": "org.apache.kafka.common.serialization.ByteArraySerializer"
+  {
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+    "name": "network-syslog-publish",
+    "policyIds": [
+      "syslog_severity_check_stream_demons1",
+      "syslog_severity_check_stream_umpns2"
+    ],
+    "dedupIntervalMin": "PT0M",
+    "properties": {
+      "kafka_broker": "127.0.0.1:9092",
+      "topic": "syslog_alerts",
+      "value_deserializer": "org.apache.kafka.common.serialization.ByteArrayDeserializer",
+      "value_serializer": "org.apache.kafka.common.serialization.ByteArraySerializer"
+    },
+    "serializer": "org.apache.eagle.alert.engine.extension.SherlockAlertSerializer"
   },
-  "serializer" : "org.apache.eagle.alert.engine.extension.SherlockAlertSerializer"
-},
-{
-  "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-  "name":"network-syslog-publish_rawjson",
-  "policyIds": ["syslog_severity_check_stream_demons1", "syslog_severity_check_stream_umpns2"],
-  "dedupIntervalMin": "PT0M",
-  "properties":{
-    "kafka_broker":"127.0.0.1:9092",
-    "topic":"syslog_alerts_json"
-  },
-  "serializer" : "org.apache.eagle.alert.engine.publisher.impl.JsonEventSerializer"
-}
+  {
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+    "name": "network-syslog-publish_rawjson",
+    "policyIds": [
+      "syslog_severity_check_stream_demons1",
+      "syslog_severity_check_stream_umpns2"
+    ],
+    "dedupIntervalMin": "PT0M",
+    "properties": {
+      "kafka_broker": "127.0.0.1:9092",
+      "topic": "syslog_alerts_json"
+    },
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.JsonEventSerializer"
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/streamdefinitions.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/streamdefinitions.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/streamdefinitions.json
index cee6f8c..a4ecb79 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/streamdefinitions.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/streamdefinitions.json
@@ -1,138 +1,152 @@
 [
-{
-	"streamId": "stream_demons1",
-	"dataSource" : "network_syslog_datasource",
-	"description":"the data stream for syslog events",
-	"validate": false,
-	"timeseries":false,
-	"columns": [
-		{
-			"name": "dims_facility",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "dims_severity",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "dims_hostname",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "dims_msgid",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "timestamp",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "state",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "interface",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "version",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "type",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "origmsg",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "name",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "namespace",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "epochMillis",
-			"type" : "LONG",
-			"defaultValue": 0,
-			"required": true
-		}
-	]
-},
-{
-	"streamId": "stream_umpns2",
-	"dataSource" : "network_syslog_datasource",
-	"description":"the data stream for syslog events",
-	"validate": false,
-	"timeseries":false,
-	"columns": [
-		{
-			"name": "dims_facility",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "dims_severity",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "dims_hostname",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "dims_msgid",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "program",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "message",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "name",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "namespace",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "epochMillis",
-			"type" : "LONG",
-			"defaultValue": 0,
-			"required": true
-		}
-	]
-}
+  {
+    "streamId": "stream_demons1",
+    "dataSource": "network_syslog_datasource",
+    "description": "the data stream for syslog events",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "dims_facility",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_severity",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_hostname",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_msgid",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "timestamp",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "state",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "interface",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "version",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "type",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "origmsg",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "name",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "namespace",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "epochMillis",
+        "type": "LONG",
+        "defaultValue": 0,
+        "required": true
+      }
+    ]
+  },
+  {
+    "streamId": "stream_umpns2",
+    "dataSource": "network_syslog_datasource",
+    "description": "the data stream for syslog events",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "dims_facility",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_severity",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_hostname",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_msgid",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "program",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "message",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "name",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "namespace",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "epochMillis",
+        "type": "LONG",
+        "defaultValue": 0,
+        "required": true
+      }
+    ]
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/topologies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/topologies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/topologies.json
index 7b1732f..4b53233 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/topologies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/multi/topologies.json
@@ -1,31 +1,31 @@
 [
-{
-	"name": "alertUnitTopology_1",
-	"numOfSpout":1,
-	"numOfGroupBolt": 4,
-	"numOfAlertBolt": 10,
-	"spoutId": "alertEngineSpout",
-	"groupNodeIds" : [
-		"streamRouterBolt0",
-		"streamRouterBolt1",
-		"streamRouterBolt2",
-		"streamRouterBolt3"
-	],
-	"alertBoltIds": [
-		"alertBolt0",
-		"alertBolt1",
-		"alertBolt2",
-		"alertBolt3",
-		"alertBolt4",
-		"alertBolt5",
-		"alertBolt6",
-		"alertBolt7",
-		"alertBolt8",
-		"alertBolt9"
-	],
-	"pubBoltId" : "alertPublishBolt",
-	"spoutParallelism": 1,
-	"groupParallelism": 1,
-	"alertParallelism": 1
-}
+  {
+    "name": "alertUnitTopology_1",
+    "numOfSpout": 1,
+    "numOfGroupBolt": 4,
+    "numOfAlertBolt": 10,
+    "spoutId": "alertEngineSpout",
+    "groupNodeIds": [
+      "streamRouterBolt0",
+      "streamRouterBolt1",
+      "streamRouterBolt2",
+      "streamRouterBolt3"
+    ],
+    "alertBoltIds": [
+      "alertBolt0",
+      "alertBolt1",
+      "alertBolt2",
+      "alertBolt3",
+      "alertBolt4",
+      "alertBolt5",
+      "alertBolt6",
+      "alertBolt7",
+      "alertBolt8",
+      "alertBolt9"
+    ],
+    "pubBoltId": "alertPublishBolt",
+    "spoutParallelism": 1,
+    "groupParallelism": 1,
+    "alertParallelism": 1
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/test-application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/test-application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/test-application.conf
index 63be6a9..963d2ad 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/test-application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/test/resources/test-application.conf
@@ -14,38 +14,38 @@
 # limitations under the License.
 
 {
-	"coordinator" : {
-		"policiesPerBolt" : 5,
-		"boltParallelism" : 5,
-		"policyDefaultParallelism" : 5,
-		"boltLoadUpbound": 0.8,
-		"topologyLoadUpbound" : 0.8,
-		"numOfAlertBoltsPerTopology" : 5,
-		"zkConfig": {
-			"zkQuorum" : "localhost:2181",
-			"zkRoot": "/alert",
-			"zkSessionTimeoutMs" : 10000,
-			"connectionTimeoutMs" : 5000,
-			"zkRetryTimes" : 5,
-			"zkRetryInterval" : 1000
-		},
-		"metadataService": {
-			"context" : "/api",
-			"host" : "localhost",
-			"port" : 8080
-		},
-		"metadataDynamicCheck" : {
-			"initDelayMillis" : 1000,
-			"delayMillis" : 30000
-		},
-		"kafkaProducer": {
-	  		"bootstrapServers": "localhost:9092"
-	  	},
-		"email": {
-			"sender": "eagle@eagle.com",
-			"recipients": "test@eagle.com",
-			"mailSmtpHost": "test.eagle.com",
-			"mailSmtpPort": "25"
-		}
-	}
+  "coordinator": {
+    "policiesPerBolt": 5,
+    "boltParallelism": 5,
+    "policyDefaultParallelism": 5,
+    "boltLoadUpbound": 0.8,
+    "topologyLoadUpbound": 0.8,
+    "numOfAlertBoltsPerTopology": 5,
+    "zkConfig": {
+      "zkQuorum": "localhost:2181",
+      "zkRoot": "/alert",
+      "zkSessionTimeoutMs": 10000,
+      "connectionTimeoutMs": 5000,
+      "zkRetryTimes": 5,
+      "zkRetryInterval": 1000
+    },
+    "metadataService": {
+      "context": "/api",
+      "host": "localhost",
+      "port": 8080
+    },
+    "metadataDynamicCheck": {
+      "initDelayMillis": 1000,
+      "delayMillis": 30000
+    },
+    "kafkaProducer": {
+      "bootstrapServers": "localhost:9092"
+    },
+    "email": {
+      "sender": "eagle@eagle.com",
+      "recipients": "test@eagle.com",
+      "mailSmtpHost": "test.eagle.com",
+      "mailSmtpPort": "25"
+    }
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/conf/kafka-server.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/conf/kafka-server.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/conf/kafka-server.properties
index a9e0010..e2618c2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/conf/kafka-server.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/conf/kafka-server.properties
@@ -13,14 +13,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # see kafka.server.KafkaConfig for additional details and defaults
-
 ############################# Server Basics #############################
-
 # The id of the broker. This must be set to a unique integer for each broker.
 broker.id=0
-
 ############################# Socket Server Settings #############################
-
 # The address the socket server listens on. It will get the value returned from
 # java.net.InetAddress.getCanonicalHostName() if not configured.
 #   FORMAT:
@@ -28,44 +24,31 @@ broker.id=0
 #   EXAMPLE:
 #     listeners = PLAINTEXT://your.host.name:9092
 #listeners=PLAINTEXT://:9092
-
 # Hostname and port the broker will advertise to producers and consumers. If not set,
 # it uses the value for "listeners" if configured.  Otherwise, it will use the value
 # returned from java.net.InetAddress.getCanonicalHostName().
 #advertised.listeners=PLAINTEXT://your.host.name:9092
-
 # The number of threads handling network requests
 num.network.threads=3
-
 # The number of threads doing disk I/O
 num.io.threads=8
-
 # The send buffer (SO_SNDBUF) used by the socket server
 socket.send.buffer.bytes=102400
-
 # The receive buffer (SO_RCVBUF) used by the socket server
 socket.receive.buffer.bytes=102400
-
 # The maximum size of a request that the socket server will accept (protection against OOM)
 socket.request.max.bytes=104857600
-
-
 ############################# Log Basics #############################
-
 # A comma seperated list of directories under which to store log files
 log.dirs=/tmp/dev-kafka-logs
-
 # The default number of log partitions per topic. More partitions allow greater
 # parallelism for consumption, but this will also result in more files across
 # the brokers.
 num.partitions=1
-
 # The number of threads per data directory to be used for log recovery at startup and flushing at shutdown.
 # This value is recommended to be increased for installations with data dirs located in RAID array.
 num.recovery.threads.per.data.dir=1
-
 ############################# Log Flush Policy #############################
-
 # Messages are immediately written to the filesystem but by default we only fsync() to sync
 # the OS cache lazily. The following configurations control the flush of data to disk.
 # There are a few important trade-offs here:
@@ -74,42 +57,31 @@ num.recovery.threads.per.data.dir=1
 #    3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to exceessive seeks.
 # The settings below allow one to configure the flush policy to flush data after a period of time or
 # every N messages (or both). This can be done globally and overridden on a per-topic basis.
-
 # The number of messages to accept before forcing a flush of data to disk
 #log.flush.interval.messages=10000
-
 # The maximum amount of time a message can sit in a log before we force a flush
 #log.flush.interval.ms=1000
-
 ############################# Log Retention Policy #############################
-
 # The following configurations control the disposal of log segments. The policy can
 # be set to delete segments after a period of time, or after a given size has accumulated.
 # A segment will be deleted whenever *either* of these criteria are met. Deletion always happens
 # from the end of the log.
-
 # The minimum age of a log file to be eligible for deletion
 log.retention.hours=168
-
 # A size-based retention policy for logs. Segments are pruned from the log as long as the remaining
 # segments don't drop below log.retention.bytes.
 #log.retention.bytes=1073741824
-
 # The maximum size of a log segment file. When this size is reached a new log segment will be created.
 log.segment.bytes=1073741824
-
 # The interval at which log segments are checked to see if they can be deleted according
 # to the retention policies
 log.retention.check.interval.ms=300000
-
 ############################# Zookeeper #############################
-
 # Zookeeper connection string (see zookeeper docs for details).
 # This is a comma separated host:port pairs, each corresponding to a zk
 # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
 # You can also append an optional chroot string to the urls to specify the
 # root directory for all kafka znodes.
 zookeeper.connect=localhost:2181
-
 # Timeout in ms for connecting to zookeeper
 zookeeper.connection.timeout.ms=6000
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaConsumerOffsetFetcher.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaConsumerOffsetFetcher.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaConsumerOffsetFetcher.java
index 4fe471c..04a8cba 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaConsumerOffsetFetcher.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaConsumerOffsetFetcher.java
@@ -16,6 +16,7 @@
  */
 package org.apache.eagle.alert.tools;
 
+import org.apache.eagle.alert.config.ZKConfig;
 import com.fasterxml.jackson.databind.Module;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.jsontype.NamedType;
@@ -23,8 +24,6 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.RetryNTimes;
-import org.apache.eagle.alert.config.ZKConfig;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -35,10 +34,10 @@ public class KafkaConsumerOffsetFetcher {
     public ObjectMapper mapper;
     public String zkPathToPartition;
 
-    public KafkaConsumerOffsetFetcher(ZKConfig config, String ... parameters) {
+    public KafkaConsumerOffsetFetcher(ZKConfig config, String... parameters) {
         try {
             this.curator = CuratorFrameworkFactory.newClient(config.zkQuorum, config.zkSessionTimeoutMs, 15000,
-                    new RetryNTimes(config.zkRetryTimes, config.zkRetryInterval));
+                new RetryNTimes(config.zkRetryTimes, config.zkRetryInterval));
             curator.start();
             this.zkRoot = config.zkRoot;
             mapper = new ObjectMapper();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaLatestOffsetFetcher.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaLatestOffsetFetcher.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaLatestOffsetFetcher.java
index b78e233..e547a25 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaLatestOffsetFetcher.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/java/org/apache/eagle/alert/tools/KafkaLatestOffsetFetcher.java
@@ -17,12 +17,16 @@
 package org.apache.eagle.alert.tools;
 
 
-import java.util.*;
 import kafka.api.PartitionOffsetRequestInfo;
 import kafka.common.TopicAndPartition;
-import kafka.javaapi.*;
+import kafka.javaapi.OffsetResponse;
+import kafka.javaapi.PartitionMetadata;
+import kafka.javaapi.TopicMetadata;
+import kafka.javaapi.TopicMetadataRequest;
 import kafka.javaapi.consumer.SimpleConsumer;
 
+import java.util.*;
+
 public class KafkaLatestOffsetFetcher {
 
     private List<String> brokerList;
@@ -50,7 +54,9 @@ public class KafkaLatestOffsetFetcher {
             String clientName = "Client_" + topic + "_" + partition;
             SimpleConsumer consumer = new SimpleConsumer(leadBroker, port, 100000, 64 * 1024, clientName);
             long latestOffset = getLatestOffset(consumer, topic, partition, clientName);
-            if (consumer != null) consumer.close();
+            if (consumer != null) {
+                consumer.close();
+            }
             ret.put(partition, latestOffset);
         }
         return ret;
@@ -63,7 +69,7 @@ public class KafkaLatestOffsetFetcher {
         kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName);
         OffsetResponse response = consumer.getOffsetsBefore(request);
         if (response.hasError()) {
-            throw new RuntimeException("Error fetching data offset from the broker. Reason: " + response.errorCode(topic, partition) );
+            throw new RuntimeException("Error fetching data offset from the broker. Reason: " + response.errorCode(topic, partition));
         }
         long[] offsets = response.offsets(topic, partition);
         return offsets[0];
@@ -85,11 +91,15 @@ public class KafkaLatestOffsetFetcher {
                         partitionMetadata.put(part.partitionId(), part);
                     }
                 }
-                if (partitionMetadata.size() == partitionCount) break;
+                if (partitionMetadata.size() == partitionCount) {
+                    break;
+                }
             } catch (Exception e) {
                 throw new RuntimeException("Error communicating with Broker [" + broker + "] " + "to find Leader for [" + topic + "] Reason: ", e);
             } finally {
-                if (consumer != null) consumer.close();
+                if (consumer != null) {
+                    consumer.close();
+                }
             }
         }
         return partitionMetadata;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/scala/org/apache/eagle/contrib/kafka/ProducerTool.scala
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/scala/org/apache/eagle/contrib/kafka/ProducerTool.scala b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/scala/org/apache/eagle/contrib/kafka/ProducerTool.scala
index 830e9ac..b89737a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/scala/org/apache/eagle/contrib/kafka/ProducerTool.scala
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/main/scala/org/apache/eagle/contrib/kafka/ProducerTool.scala
@@ -176,9 +176,9 @@ object ProducerTool {
 
     val reader = Class.forName(readerClass).newInstance().asInstanceOf[MessageReader[AnyRef, AnyRef]]
 
-    if (messageData.size()>0) {
+    if (messageData.size() > 0) {
       reader.init(new ByteArrayInputStream(messageData.get(0).getBytes(StandardCharsets.UTF_8)), cmdLineProps)
-    } else if (messageFile.size()>0) {
+    } else if (messageFile.size() > 0) {
       reader.init(FileUtils.openInputStream(new File(messageFile.get(0))), cmdLineProps)
     } else {
       reader.init(System.in, cmdLineProps)

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/java/org/apache/eagle/alert/tools/TestKafkaOffset.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/java/org/apache/eagle/alert/tools/TestKafkaOffset.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/java/org/apache/eagle/alert/tools/TestKafkaOffset.java
index e4d9f8f..89b2921 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/java/org/apache/eagle/alert/tools/TestKafkaOffset.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/java/org/apache/eagle/alert/tools/TestKafkaOffset.java
@@ -43,17 +43,17 @@ public class TestKafkaOffset {
         String topic = "testTopic1";
         String topology = "alertUnitTopology_1";
 
-        while(true) {
+        while (true) {
             KafkaConsumerOffsetFetcher consumerOffsetFetcher = new KafkaConsumerOffsetFetcher(zkConfig, topic, topology);
             String kafkaBrokerList = config.getString("dataSourceConfig.kafkaBrokerList");
             KafkaLatestOffsetFetcher latestOffsetFetcher = new KafkaLatestOffsetFetcher(kafkaBrokerList);
 
             Map<String, Long> consumedOffset = consumerOffsetFetcher.fetch();
-            if(consumedOffset.size() == 0){
+            if (consumedOffset.size() == 0) {
                 System.out.println("no any consumer offset found for this topic " + topic);
             }
             Map<Integer, Long> latestOffset = latestOffsetFetcher.fetch(topic, consumedOffset.size());
-            if(latestOffset.size() == 0){
+            if (latestOffset.size() == 0) {
                 System.out.println("no any latest offset found for this topic " + topic);
             }
             for (Map.Entry<String, Long> entry : consumedOffset.entrySet()) {
@@ -61,7 +61,7 @@ public class TestKafkaOffset {
                 Integer partitionNumber = Integer.valueOf(partition.split("_")[1]);
                 Long lag = latestOffset.get(partitionNumber) - entry.getValue();
                 System.out.println(String.format("parition %s, total: %d, consumed: %d, lag: %d",
-                        partition, latestOffset.get(partitionNumber), entry.getValue(), lag));
+                    partition, latestOffset.get(partitionNumber), entry.getValue(), lag));
             }
             Thread.sleep(10000);
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/kafka-offset-test.application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/kafka-offset-test.application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/kafka-offset-test.application.conf
index 7819178..1da6fb1 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/kafka-offset-test.application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/kafka-offset-test.application.conf
@@ -13,12 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"dataSourceConfig":{
-  "kafkaBrokerList" : "kafka-broker:9092",
-  "zkQuorum" : "zk-admin:2181",
-  "transactionZKRoot" : "/consumers/eagle_consumer/%s/%s",
-  "zkSessionTimeoutMs" : 10000,
-  "connectionTimeoutMs" : 10000,
-  "zkRetryTimes" : 3,
-  "zkRetryInterval" : 3000
+"dataSourceConfig": {
+  "kafkaBrokerList": "kafka-broker:9092",
+  "zkQuorum": "zk-admin:2181",
+  "transactionZKRoot": "/consumers/eagle_consumer/%s/%s",
+  "zkSessionTimeoutMs": 10000,
+  "connectionTimeoutMs": 10000,
+  "zkRetryTimes": 3,
+  "zkRetryInterval": 3000
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/log4j.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/log4j.properties
index d59ded6..9c6875d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/log4j.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-devtools/src/test/resources/log4j.properties
@@ -12,9 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 log4j.rootLogger=INFO, stdout
-
 # standard output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/pom.xml b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/pom.xml
index d2f889b..89728fe 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/pom.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/pom.xml
@@ -47,8 +47,8 @@
             <artifactId>jersey-client</artifactId>
         </dependency>
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-jaxrs</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-jaxrs</artifactId>-->
         <!--</dependency>-->
         <dependency>
             <groupId>com.netflix.archaius</groupId>
@@ -80,11 +80,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.kafka</groupId>
-            <artifactId>kafka-clients</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>com.101tec</groupId>
             <artifactId>zkclient</artifactId>
         </dependency>
@@ -114,10 +109,6 @@
             <artifactId>mapdb</artifactId>
         </dependency>
         <dependency>
-            <groupId>joda-time</groupId>
-            <artifactId>joda-time</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.apache.velocity</groupId>
             <artifactId>velocity</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/AlertStreamCollector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/AlertStreamCollector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/AlertStreamCollector.java
index 7219271..4e3c275 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/AlertStreamCollector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/AlertStreamCollector.java
@@ -20,8 +20,9 @@ import org.apache.eagle.alert.engine.model.AlertStreamEvent;
  */
 public interface AlertStreamCollector extends Collector<AlertStreamEvent> {
     /**
-     * No need to be thread-safe, but should be called on in synchronous like in Storm bolt execute method
+     * No need to be thread-safe, but should be called on in synchronous like in Storm bolt execute method.
      */
     void flush();
+
     void close();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/Collector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/Collector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/Collector.java
index 9a6489c..d1a2b56 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/Collector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/Collector.java
@@ -19,7 +19,7 @@ package org.apache.eagle.alert.engine;
 @FunctionalInterface
 public interface Collector<T> {
     /**
-     * Must make sure thread-safe
+     * Must make sure thread-safe.
      *
      * @param t
      */

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/PartitionedEventCollector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/PartitionedEventCollector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/PartitionedEventCollector.java
index 3a99e98..7310d8b 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/PartitionedEventCollector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/PartitionedEventCollector.java
@@ -19,11 +19,11 @@ package org.apache.eagle.alert.engine;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 
 /**
- * Executed in thread-safe trace
+ * Executed in thread-safe trace.
  */
 public interface PartitionedEventCollector extends Collector<PartitionedEvent> {
     /**
-     * @param event to be dropped
+     * @param event to be dropped.
      */
     void drop(PartitionedEvent event);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContext.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContext.java
index 609378b..a03932f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContext.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContext.java
@@ -1,7 +1,6 @@
 package org.apache.eagle.alert.engine;
 
 import backtype.storm.metric.api.MultiCountMetric;
-
 import com.typesafe.config.Config;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContextImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContextImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContextImpl.java
index 4b2d68f..d02028a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContextImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/StreamContextImpl.java
@@ -18,7 +18,6 @@ package org.apache.eagle.alert.engine;
 
 import backtype.storm.metric.api.MultiCountMetric;
 import backtype.storm.task.TopologyContext;
-
 import com.typesafe.config.Config;
 
 public class StreamContextImpl implements StreamContext {
@@ -26,7 +25,7 @@ public class StreamContextImpl implements StreamContext {
     private final MultiCountMetric counter;
 
     public StreamContextImpl(Config config, MultiCountMetric counter, TopologyContext context) {
-        this.counter=counter;
+        this.counter = counter;
         this.config = config;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
index 57529b6..497d908 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
@@ -19,28 +19,30 @@
 
 package org.apache.eagle.alert.engine;
 
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.Options;
 import org.apache.eagle.alert.config.ZKConfig;
 import org.apache.eagle.alert.config.ZKConfigBuilder;
 import org.apache.eagle.alert.engine.coordinator.impl.ZKMetadataChangeNotifyService;
 import org.apache.eagle.alert.engine.runner.UnitTopologyRunner;
-
 import backtype.storm.generated.StormTopology;
-
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.Options;
+
 
 /**
- * Since 5/3/16. Make sure unit topology can be started either from command line
+ * Make sure unit topology can be started either from command line
  * or from remote A few parameters for starting unit topology 1. number of spout
  * tasks 2. number of router bolts 3. number of alert bolts 4. number of publish
  * bolts
  *
- * Connections 1. spout and router bolt 2. router bolt and alert bolt 3. alert
- * bolt and publish bolt
+ * <p>Connections 1. spout and router bolt 2. router bolt and alert bolt 3. alert
+ * bolt and publish bolt.</p>
+ *
+ * @since 5/3/16.
+ *
  */
 public class UnitTopologyMain {
 
@@ -48,7 +50,7 @@ public class UnitTopologyMain {
         // command line parse
         Options options = new Options();
         options.addOption("c", true,
-                "config URL (valid file name) - defaults application.conf according to typesafe config default behavior.");
+            "config URL (valid file name) - defaults application.conf according to typesafe config default behavior.");
         CommandLineParser parser = new DefaultParser();
         CommandLine cmd = parser.parse(options, args);
 
@@ -64,7 +66,7 @@ public class UnitTopologyMain {
         ZKMetadataChangeNotifyService changeNotifyService = createZKNotifyService(config, topologyId);
         new UnitTopologyRunner(changeNotifyService).run(topologyId, config);
     }
-    
+
     public static void runTopology(Config config, backtype.storm.Config stormConfig) {
         // load config and start
         String topologyId = config.getString("topology.name");
@@ -77,7 +79,7 @@ public class UnitTopologyMain {
         ZKMetadataChangeNotifyService changeNotifyService = new ZKMetadataChangeNotifyService(zkConfig, topologyId);
         return changeNotifyService;
     }
-    
+
     public static StormTopology createTopology(Config config) {
         String topologyId = config.getString("topology.name");
         ZKMetadataChangeNotifyService changeNotifyService = createZKNotifyService(config, topologyId);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/IMetadataChangeNotifyService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/IMetadataChangeNotifyService.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/IMetadataChangeNotifyService.java
index 22fe56a..5aa754e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/IMetadataChangeNotifyService.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/IMetadataChangeNotifyService.java
@@ -16,35 +16,31 @@
  */
 package org.apache.eagle.alert.engine.coordinator;
 
-import java.io.Closeable;
-import java.io.Serializable;
-
 import org.apache.eagle.alert.engine.publisher.AlertPublishSpecListener;
 import org.apache.eagle.alert.engine.router.AlertBoltSpecListener;
 import org.apache.eagle.alert.engine.router.SpoutSpecListener;
 import org.apache.eagle.alert.engine.router.StreamRouterBoltSpecListener;
-
 import com.typesafe.config.Config;
 
+import java.io.Closeable;
+import java.io.Serializable;
+
 /**
  * IMetadataChangeNotifyService defines the following features
  * 1) initialization
  * 2) register metadata change listener
  *
- * In distributed environment for example storm platform,
+ * <p>In distributed environment for example storm platform,
  * subclass implementing this interface should have the following lifecycle
  * 1. object is created in client machine
  * 2. object is serialized and transferred to other machine
  * 3. object is created through deserialization
  * 4. invoke init() method to do initialization
  * 5. invoke various registerListener to get notified of config change
- * 6. invoke close() to release system resource
+ * 6. invoke close() to release system resource</p>
  */
-public interface IMetadataChangeNotifyService extends Closeable,Serializable {
-    /**
-     *
-     * @param config
-     */
+public interface IMetadataChangeNotifyService extends Closeable, Serializable {
+
     void init(Config config, MetadataType type);
 
     void registerListener(SpoutSpecListener listener);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinitionNotFoundException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinitionNotFoundException.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinitionNotFoundException.java
index 5814ac6..8c493f5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinitionNotFoundException.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinitionNotFoundException.java
@@ -1,8 +1,4 @@
-package org.apache.eagle.alert.engine.coordinator;
-
-import java.io.IOException;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -18,6 +14,10 @@ import java.io.IOException;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.coordinator;
+
+import java.io.IOException;
+
 public class StreamDefinitionNotFoundException extends IOException {
     private static final long serialVersionUID = 6027811718016485808L;
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/AbstractMetadataChangeNotifyService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/AbstractMetadataChangeNotifyService.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/AbstractMetadataChangeNotifyService.java
index 52fcc04..5da4cbd 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/AbstractMetadataChangeNotifyService.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/AbstractMetadataChangeNotifyService.java
@@ -16,13 +16,6 @@
  */
 package org.apache.eagle.alert.engine.coordinator.impl;
 
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.AlertBoltSpec;
 import org.apache.eagle.alert.coordination.model.PublishSpec;
 import org.apache.eagle.alert.coordination.model.RouterSpec;
@@ -34,28 +27,30 @@ import org.apache.eagle.alert.engine.publisher.AlertPublishSpecListener;
 import org.apache.eagle.alert.engine.router.AlertBoltSpecListener;
 import org.apache.eagle.alert.engine.router.SpoutSpecListener;
 import org.apache.eagle.alert.engine.router.StreamRouterBoltSpecListener;
+import com.google.common.base.Preconditions;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Preconditions;
-import com.typesafe.config.Config;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 /**
- * notify 3 components of metadata change Spout, StreamRouterBolt and AlertBolt
+ * notify 3 components of metadata change Spout, StreamRouterBolt and AlertBolt.
  */
-@SuppressWarnings({ "serial" })
-public abstract class AbstractMetadataChangeNotifyService implements IMetadataChangeNotifyService, Closeable,
-        Serializable {
-    private final static Logger LOG = LoggerFactory.getLogger(AbstractMetadataChangeNotifyService.class);
+@SuppressWarnings( {"serial"})
+public abstract class AbstractMetadataChangeNotifyService implements IMetadataChangeNotifyService, Closeable, Serializable {
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractMetadataChangeNotifyService.class);
     private final List<StreamRouterBoltSpecListener> streamRouterBoltSpecListeners = new ArrayList<>();
     private final List<SpoutSpecListener> spoutSpecListeners = new ArrayList<>();
     private final List<AlertBoltSpecListener> alertBoltSpecListeners = new ArrayList<>();
     private final List<AlertPublishSpecListener> alertPublishSpecListeners = new ArrayList<>();
     protected MetadataType type;
 
-    /**
-     * @param config
-     */
     @Override
     public void init(Config config, MetadataType type) {
         this.type = type;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/ZKMetadataChangeNotifyService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/ZKMetadataChangeNotifyService.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/ZKMetadataChangeNotifyService.java
index 1b93072..9b31727 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/ZKMetadataChangeNotifyService.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/coordinator/impl/ZKMetadataChangeNotifyService.java
@@ -16,40 +16,32 @@
  */
 package org.apache.eagle.alert.engine.coordinator.impl;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
 import org.apache.eagle.alert.config.ConfigBusConsumer;
 import org.apache.eagle.alert.config.ConfigChangeCallback;
 import org.apache.eagle.alert.config.ConfigValue;
 import org.apache.eagle.alert.config.ZKConfig;
-import org.apache.eagle.alert.coordination.model.AlertBoltSpec;
-import org.apache.eagle.alert.coordination.model.PublishSpec;
-import org.apache.eagle.alert.coordination.model.RouterSpec;
-import org.apache.eagle.alert.coordination.model.ScheduleState;
-import org.apache.eagle.alert.coordination.model.SpoutSpec;
-import org.apache.eagle.alert.coordination.model.VersionedPolicyDefinition;
-import org.apache.eagle.alert.coordination.model.VersionedStreamDefinition;
+import org.apache.eagle.alert.coordination.model.*;
 import org.apache.eagle.alert.engine.coordinator.MetadataType;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.service.IMetadataServiceClient;
 import org.apache.eagle.alert.service.MetadataServiceClientImpl;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 
 /**
  * <b>TODO</b>: performance tuning: It is not JVM level service, so it may cause
  * zookeeper burden in case of too many listeners This does not support
  * dynamically adding topic, all topics should be available when service object
  * is created.
- * <p>
  * ZK path format is as following:
  * <ul>
  * <li>/alert/topology_1/spout</li>
@@ -80,22 +72,18 @@ public class ZKMetadataChangeNotifyService extends AbstractMetadataChangeNotifyS
         LOG.info("init called for client");
     }
 
-    /**
-     * @seeAlso Coordinator
-     * @return
-     */
     private String getMetadataTopicSuffix() {
         switch (type) {
-        case ALERT_BOLT:
-            return "alert";
-        case ALERT_PUBLISH_BOLT:
-            return "publisher";
-        case SPOUT:
-            return "spout";
-        case STREAM_ROUTER_BOLT:
-            return "router";
-        default:
-            throw new RuntimeException(String.format("unexpected metadata type: %s !", type));
+            case ALERT_BOLT:
+                return "alert";
+            case ALERT_PUBLISH_BOLT:
+                return "publisher";
+            case SPOUT:
+                return "spout";
+            case STREAM_ROUTER_BOLT:
+                return "router";
+            default:
+                throw new RuntimeException(String.format("unexpected metadata type: %s !", type));
         }
     }
 
@@ -107,7 +95,7 @@ public class ZKMetadataChangeNotifyService extends AbstractMetadataChangeNotifyS
 
     @Override
     public void onNewConfig(ConfigValue value) {
-        LOG.info("Metadata changed {}",value);
+        LOG.info("Metadata changed {}", value);
 
         if (client == null) {
             LOG.error("OnNewConfig trigger, but metadata service client is null. Metadata type {}", type);
@@ -126,42 +114,42 @@ public class ZKMetadataChangeNotifyService extends AbstractMetadataChangeNotifyS
         }
         Map<String, StreamDefinition> sds = getStreams(state.getStreamSnapshots());
         switch (type) {
-        case ALERT_BOLT:
-            // we might query metadata service query get metadata snapshot and StreamDefinition
-            AlertBoltSpec alertSpec = state.getAlertSpecs().get(topologyId);
-            if (alertSpec == null) {
-                LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
-            } else {
-                prePopulate(alertSpec, state.getPolicySnapshots());
-                notifyAlertBolt(alertSpec, sds);
-            }
-            break;
-        case ALERT_PUBLISH_BOLT:
-            PublishSpec pubSpec = state.getPublishSpecs().get(topologyId);
-            if (pubSpec == null) {
-                LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
-            } else {
-                notifyAlertPublishBolt(pubSpec, sds);
-            }
-            break;
-        case SPOUT:
-            SpoutSpec spoutSpec = state.getSpoutSpecs().get(topologyId);
-            if (spoutSpec == null) {
-                LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
-            } else {
-                notifySpout(spoutSpec, sds);
-            }
-            break;
-        case STREAM_ROUTER_BOLT:
-            RouterSpec gSpec = state.getGroupSpecs().get(topologyId);
-            if (gSpec == null) {
-                LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
-            } else {
-                notifyStreamRouterBolt(gSpec, sds);
-            }
-            break;
-        default:
-            LOG.error("unexpected metadata type: {} ", type);
+            case ALERT_BOLT:
+                // we might query metadata service query get metadata snapshot and StreamDefinition
+                AlertBoltSpec alertSpec = state.getAlertSpecs().get(topologyId);
+                if (alertSpec == null) {
+                    LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
+                } else {
+                    prePopulate(alertSpec, state.getPolicySnapshots());
+                    notifyAlertBolt(alertSpec, sds);
+                }
+                break;
+            case ALERT_PUBLISH_BOLT:
+                PublishSpec pubSpec = state.getPublishSpecs().get(topologyId);
+                if (pubSpec == null) {
+                    LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
+                } else {
+                    notifyAlertPublishBolt(pubSpec, sds);
+                }
+                break;
+            case SPOUT:
+                SpoutSpec spoutSpec = state.getSpoutSpecs().get(topologyId);
+                if (spoutSpec == null) {
+                    LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
+                } else {
+                    notifySpout(spoutSpec, sds);
+                }
+                break;
+            case STREAM_ROUTER_BOLT:
+                RouterSpec gSpec = state.getGroupSpecs().get(topologyId);
+                if (gSpec == null) {
+                    LOG.error(" alert spec for version {} not found for topology {} !", version, topologyId);
+                } else {
+                    notifyStreamRouterBolt(gSpec, sds);
+                }
+                break;
+            default:
+                LOG.error("unexpected metadata type: {} ", type);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/CompositePolicyHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/CompositePolicyHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/CompositePolicyHandler.java
index 4d69bca..d90fd9c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/CompositePolicyHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/CompositePolicyHandler.java
@@ -62,7 +62,7 @@ public class CompositePolicyHandler implements PolicyStreamHandler {
 
     @Override
     public void send(StreamEvent event) throws Exception {
-//        policyHandler.send(event);
+        // policyHandler.send(event);
         send(event, 0);
     }
 
@@ -71,8 +71,9 @@ public class CompositePolicyHandler implements PolicyStreamHandler {
         if (handlers.size() > idx) {
             handlers.get(idx).send(event);
         } else if (event instanceof AlertStreamEvent) {
-            if (LOG.isDebugEnabled())
+            if (LOG.isDebugEnabled()) {
                 LOG.debug("Emit new alert event: {}", event);
+            }
             collector.emit((AlertStreamEvent) event); // for alert stream events, emit if no handler found.
         } else {
             // nothing found. LOG, and throw exception

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyChangeListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyChangeListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyChangeListener.java
index 22f1408..40351ad 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyChangeListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyChangeListener.java
@@ -1,12 +1,4 @@
-package org.apache.eagle.alert.engine.evaluator;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -22,6 +14,14 @@ import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.evaluator;
+
+import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
+import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
+
+import java.util.List;
+import java.util.Map;
+
 public interface PolicyChangeListener {
     void onPolicyChange(List<PolicyDefinition> added,
                         List<PolicyDefinition> removed,

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyGroupEvaluator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyGroupEvaluator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyGroupEvaluator.java
index dd3ca24..e970ddd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyGroupEvaluator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyGroupEvaluator.java
@@ -1,11 +1,11 @@
 package org.apache.eagle.alert.engine.evaluator;
 
-import java.io.Serializable;
-
 import org.apache.eagle.alert.engine.AlertStreamCollector;
 import org.apache.eagle.alert.engine.StreamContext;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 
+import java.io.Serializable;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -31,11 +31,11 @@ import org.apache.eagle.alert.engine.model.PartitionedEvent;
  * Step 3: nextEvent
  * Step 4: close
  */
-public interface PolicyGroupEvaluator extends PolicyChangeListener, Serializable{
+public interface PolicyGroupEvaluator extends PolicyChangeListener, Serializable {
     void init(StreamContext context, AlertStreamCollector collector);
 
     /**
-     * Evaluate event
+     * Evaluate event.
      */
     void nextEvent(PartitionedEvent event);
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
index 335b237..49f7eed 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
@@ -1,10 +1,4 @@
-package org.apache.eagle.alert.engine.evaluator;
-
-import backtype.storm.metric.api.MultiCountMetric;
-import com.typesafe.config.Config;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -20,6 +14,13 @@ import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
+package org.apache.eagle.alert.engine.evaluator;
+
+import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
+import backtype.storm.metric.api.MultiCountMetric;
+import com.typesafe.config.Config;
+
 public class PolicyHandlerContext {
     private PolicyDefinition policyDefinition;
     private PolicyGroupEvaluator policyEvaluator;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandler.java
index 069d321..7b457b0 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandler.java
@@ -1,10 +1,4 @@
-package org.apache.eagle.alert.engine.evaluator;
-
-import org.apache.eagle.alert.engine.Collector;
-import org.apache.eagle.alert.engine.model.AlertStreamEvent;
-import org.apache.eagle.alert.engine.model.StreamEvent;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -20,8 +14,16 @@ import org.apache.eagle.alert.engine.model.StreamEvent;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.evaluator;
+
+import org.apache.eagle.alert.engine.Collector;
+import org.apache.eagle.alert.engine.model.AlertStreamEvent;
+import org.apache.eagle.alert.engine.model.StreamEvent;
+
 public interface PolicyStreamHandler {
     void prepare(Collector<AlertStreamEvent> collector, PolicyHandlerContext context) throws Exception;
+
     void send(StreamEvent event) throws Exception;
+
     void close() throws Exception;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandlers.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandlers.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandlers.java
index 1e7aacc..116f633 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandlers.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyStreamHandlers.java
@@ -16,8 +16,6 @@
  */
 package org.apache.eagle.alert.engine.evaluator;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.evaluator.absence.AbsencePolicyHandler;
@@ -27,6 +25,8 @@ import org.apache.eagle.alert.engine.evaluator.nodata.NoDataPolicyTimeBatchHandl
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Map;
+
 /**
  * TODO/FIXME: to support multiple stage definition in single policy. The methods in this class is not good to understand now.(Hard code of 0/1).
  */
@@ -42,8 +42,8 @@ public class PolicyStreamHandlers {
         if (SIDDHI_ENGINE.equals(definition.getType())) {
             return new SiddhiPolicyHandler(sds, 0);// // FIXME: 8/2/16 
         } else if (NO_DATA_ALERT_ENGINE.equals(definition.getType())) {
-        	// no data for an entire stream won't trigger gap alert  (use local time & batch window instead)
-        	return new NoDataPolicyTimeBatchHandler(sds);
+            // no data for an entire stream won't trigger gap alert  (use local time & batch window instead)
+            return new NoDataPolicyTimeBatchHandler(sds);
         } else if (ABSENCE_ALERT_ENGINE.equals(definition.getType())) {
             return new AbsencePolicyHandler(sds);
         } else if (CUSTOMIZED_ENGINE.equals(definition.getType())) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceAlertDriver.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceAlertDriver.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceAlertDriver.java
index 3b4aba8..f53139f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceAlertDriver.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceAlertDriver.java
@@ -22,8 +22,8 @@ import org.slf4j.LoggerFactory;
 import java.util.List;
 
 /**
+ * this assumes that event comes in time order.
  * Since 7/7/16.
- * this assumes that event comes in time order
  */
 public class AbsenceAlertDriver {
     private static final Logger LOG = LoggerFactory.getLogger(AbsenceAlertDriver.class);
@@ -38,7 +38,7 @@ public class AbsenceAlertDriver {
 
     public boolean process(List<Object> appearAttrs, long occurTime) {
         // initialize window
-        if(processor == null){
+        if (processor == null) {
             processor = nextProcessor(occurTime);
             LOG.info("initialized a new window {}", processor);
         }
@@ -46,8 +46,8 @@ public class AbsenceAlertDriver {
         AbsenceWindowProcessor.OccurStatus status = processor.checkStatus();
         boolean expired = processor.checkExpired();
         boolean isAbsenceAlert = false;
-        if (expired){
-            if(status == AbsenceWindowProcessor.OccurStatus.absent){
+        if (expired) {
+            if (status == AbsenceWindowProcessor.OccurStatus.absent) {
                 // send alert
                 LOG.info("===================");
                 LOG.info("|| Absence Alert ||");
@@ -63,7 +63,8 @@ public class AbsenceAlertDriver {
     }
 
     /**
-     * calculate absolute time range based on current timestamp
+     * calculate absolute time range based on current timestamp.
+     *
      * @param currTime milliseconds
      * @return
      */

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceDailyRule.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceDailyRule.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceDailyRule.java
index ed50280..db4be7c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceDailyRule.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceDailyRule.java
@@ -20,7 +20,7 @@ package org.apache.eagle.alert.engine.evaluator.absence;
  * Since 7/7/16.
  */
 public class AbsenceDailyRule implements AbsenceRule {
-    public static final long DAY_MILLI_SECONDS = 86400*1000L;
+    public static final long DAY_MILLI_SECONDS = 86400 * 1000L;
     public long startOffset;
     public long endOffset;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsencePolicyHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsencePolicyHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsencePolicyHandler.java
index 826a69d..c372411 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsencePolicyHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsencePolicyHandler.java
@@ -32,29 +32,29 @@ import java.util.*;
 
 /**
  * Since 7/6/16.
- *  * policy would be like:
+ * * policy would be like:
  * {
- "name": "absenceAlertPolicy",
- "description": "absenceAlertPolicy",
- "inputStreams": [
- "absenceAlertStream"
- ],
- "outputStreams": [
- "absenceAlertStream_out"
- ],
- "definition": {
- "type": "absencealert",
- "value": "1,jobID,job1,daily_rule,14:00:00,15:00:00"
- },
- "partitionSpec": [
- {
- "streamId": "absenceAlertStream",
- "type": "GROUPBY",
- "columns" : ["jobID"]
- }
- ],
- "parallelismHint": 2
- }
+ * "name": "absenceAlertPolicy",
+ * "description": "absenceAlertPolicy",
+ * "inputStreams": [
+ * "absenceAlertStream"
+ * ],
+ * "outputStreams": [
+ * "absenceAlertStream_out"
+ * ],
+ * "definition": {
+ * "type": "absencealert",
+ * "value": "1,jobID,job1,daily_rule,14:00:00,15:00:00"
+ * },
+ * "partitionSpec": [
+ * {
+ * "streamId": "absenceAlertStream",
+ * "type": "GROUPBY",
+ * "columns" : ["jobID"]
+ * }
+ * ],
+ * "parallelismHint": 2
+ * }
  */
 public class AbsencePolicyHandler implements PolicyStreamHandler {
     private static final Logger LOG = LoggerFactory.getLogger(AbsencePolicyHandler.class);
@@ -66,7 +66,7 @@ public class AbsencePolicyHandler implements PolicyStreamHandler {
     private volatile List<Object> expectValues = new ArrayList<>();
     private AbsenceAlertDriver driver;
 
-    public AbsencePolicyHandler(Map<String, StreamDefinition> sds){
+    public AbsencePolicyHandler(Map<String, StreamDefinition> sds) {
         this.sds = sds;
     }
 
@@ -77,11 +77,13 @@ public class AbsencePolicyHandler implements PolicyStreamHandler {
         this.policyDef = context.getPolicyDefinition();
         List<String> inputStreams = policyDef.getInputStreams();
         // validate inputStreams has to contain only one stream
-        if(inputStreams.size() != 1)
+        if (inputStreams.size() != 1) {
             throw new IllegalArgumentException("policy inputStream size has to be 1 for absence alert");
+        }
         // validate outputStream has to contain only one stream
-        if(policyDef.getOutputStreams().size() != 1)
+        if (policyDef.getOutputStreams().size() != 1) {
             throw new IllegalArgumentException("policy outputStream size has to be 1 for absence alert");
+        }
 
         String is = inputStreams.get(0);
         StreamDefinition sd = sds.get(is);
@@ -94,17 +96,17 @@ public class AbsencePolicyHandler implements PolicyStreamHandler {
         int offset = 0;
         // populate wisb field names
         int numOfFields = Integer.parseInt(segments[offset++]);
-        for(int i = offset; i < offset+numOfFields; i++){
+        for (int i = offset; i < offset + numOfFields; i++) {
             String fn = segments[i];
             expectFieldIndices.add(sd.getColumnIndex(fn));
         }
         offset += numOfFields;
-        for(int i = offset; i < offset+numOfFields; i++){
+        for (int i = offset; i < offset + numOfFields; i++) {
             String fn = segments[i];
             expectValues.add(fn);
         }
         offset += numOfFields;
-        String absence_window_rule_type = segments[offset++];
+        String absenceWindowRuleType = segments[offset++];
         AbsenceDailyRule rule = new AbsenceDailyRule();
         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
         sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
@@ -120,7 +122,7 @@ public class AbsencePolicyHandler implements PolicyStreamHandler {
     public void send(StreamEvent event) throws Exception {
         Object[] data = event.getData();
         List<Object> columnValues = new ArrayList<>();
-        for(int i=0; i<expectFieldIndices.size(); i++){
+        for (int i = 0; i < expectFieldIndices.size(); i++) {
             Object o = data[expectFieldIndices.get(i)];
             // convert value to string
             columnValues.add(o.toString());

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindow.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindow.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindow.java
index 728e702..9958dc7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindow.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindow.java
@@ -27,7 +27,7 @@ public class AbsenceWindow {
     public long startTime;
     public long endTime;
 
-    public String toString(){
+    public String toString() {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
         String t1 = sdf.format(new Date(startTime));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowGenerator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowGenerator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowGenerator.java
index 6cd0880..dfde09a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowGenerator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowGenerator.java
@@ -21,20 +21,22 @@ package org.apache.eagle.alert.engine.evaluator.absence;
  */
 public class AbsenceWindowGenerator {
     private AbsenceRule rule;
-    public AbsenceWindowGenerator(AbsenceRule rule){
+
+    public AbsenceWindowGenerator(AbsenceRule rule) {
         this.rule = rule;
     }
 
     /**
-     * @param currTime
-     * @return
+     * nextWindow.
+     *
+     * @param currTime current timestamp
      */
-    public AbsenceWindow nextWindow(long currTime){
+    public AbsenceWindow nextWindow(long currTime) {
         AbsenceWindow window = new AbsenceWindow();
-        if(rule instanceof AbsenceDailyRule){
-            AbsenceDailyRule r = (AbsenceDailyRule)rule;
+        if (rule instanceof AbsenceDailyRule) {
+            AbsenceDailyRule r = (AbsenceDailyRule) rule;
             long adjustment = 0; // if today's window already expires, then adjust to tomorrow's window
-            if(currTime % AbsenceDailyRule.DAY_MILLI_SECONDS > r.startOffset){
+            if (currTime % AbsenceDailyRule.DAY_MILLI_SECONDS > r.startOffset) {
                 adjustment = AbsenceDailyRule.DAY_MILLI_SECONDS;
             }
             // use current timestamp to round down to day
@@ -43,7 +45,7 @@ public class AbsenceWindowGenerator {
             window.startTime = day + r.startOffset;
             window.endTime = day + r.endOffset;
             return window;
-        }else{
+        } else {
             throw new UnsupportedOperationException("not supported rule " + rule);
         }
     }



[03/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestMetadataSpecSerDeser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestMetadataSpecSerDeser.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestMetadataSpecSerDeser.java
index 65b16d9..6804805 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestMetadataSpecSerDeser.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestMetadataSpecSerDeser.java
@@ -19,30 +19,8 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.eagle.alert.coordination.model.AlertBoltSpec;
-import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
-import org.apache.eagle.alert.coordination.model.PolicyWorkerQueue;
-import org.apache.eagle.alert.coordination.model.RouterSpec;
-import org.apache.eagle.alert.coordination.model.SpoutSpec;
-import org.apache.eagle.alert.coordination.model.StreamRepartitionMetadata;
-import org.apache.eagle.alert.coordination.model.StreamRepartitionStrategy;
-import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
-import org.apache.eagle.alert.coordination.model.Tuple2StreamMetadata;
-import org.apache.eagle.alert.coordination.model.WorkSlot;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamColumn;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
+import org.apache.eagle.alert.coordination.model.*;
+import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.engine.evaluator.PolicyStreamHandlers;
 import org.apache.eagle.alert.engine.utils.MetadataSerDeser;
 import org.codehaus.jackson.type.TypeReference;
@@ -50,19 +28,21 @@ import org.joda.time.Period;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.util.*;
+
 /**
  * Since 5/6/16.
  */
 public class TestMetadataSpecSerDeser {
-    private String getStreamNameByTopic(String topic){
+    private String getStreamNameByTopic(String topic) {
         return topic + "Stream";
     }
 
     @Test
-    public void testStreamDefinitions(){
+    public void testStreamDefinitions() {
         Map<String, StreamDefinition> sds = new HashMap<>();
         List<String> topics = Arrays.asList("testTopic3", "testTopic4", "testTopic5");
-        for(String topic : topics) {
+        for (String topic : topics) {
             String streamId = getStreamNameByTopic(topic);
             if (topic.equals("testTopic3") || topic.equals("testTopic4")) {
                 StreamDefinition schema = new StreamDefinition();
@@ -72,7 +52,7 @@ public class TestMetadataSpecSerDeser {
                 column.setType(StreamColumn.Type.STRING);
                 schema.setColumns(Collections.singletonList(column));
                 sds.put(schema.getStreamId(), schema);
-            }else if(topic.equals("testTopic5")){
+            } else if (topic.equals("testTopic5")) {
                 StreamDefinition schema = new StreamDefinition();
                 schema.setStreamId(streamId);
                 StreamColumn column = new StreamColumn();
@@ -86,26 +66,27 @@ public class TestMetadataSpecSerDeser {
         String json = MetadataSerDeser.serialize(sds);
         System.out.println(json);
 
-        Map<String, StreamDefinition> deserializedSpec = MetadataSerDeser.deserialize(json, new TypeReference<Map<String, StreamDefinition>>(){});
+        Map<String, StreamDefinition> deserializedSpec = MetadataSerDeser.deserialize(json, new TypeReference<Map<String, StreamDefinition>>() {
+        });
         Assert.assertEquals(3, deserializedSpec.size());
     }
 
     @SuppressWarnings("unused")
     @Test
-    public void testSpoutSpec(){
+    public void testSpoutSpec() {
         String topologyName = "testTopology";
         String spoutId = "alertEngineSpout";
         List<String> plainStringTopics = Arrays.asList("testTopic3", "testTopic4");
         List<String> jsonStringTopics = Arrays.asList("testTopic5");
         Map<String, Kafka2TupleMetadata> kafka2TupleMetadataMap = new HashMap<>();
-        for(String topic : plainStringTopics) {
+        for (String topic : plainStringTopics) {
             Kafka2TupleMetadata kafka2TupleMetadata = new Kafka2TupleMetadata();
             kafka2TupleMetadata.setName(topic);
             kafka2TupleMetadata.setTopic(topic);
             kafka2TupleMetadata.setSchemeCls("org.apache.eagle.alert.engine.scheme.PlainStringScheme");
             kafka2TupleMetadataMap.put(topic, kafka2TupleMetadata);
         }
-        for(String topic : jsonStringTopics){
+        for (String topic : jsonStringTopics) {
             Kafka2TupleMetadata kafka2TupleMetadata = new Kafka2TupleMetadata();
             kafka2TupleMetadata.setName(topic);
             kafka2TupleMetadata.setTopic(topic);
@@ -115,7 +96,7 @@ public class TestMetadataSpecSerDeser {
 
         // construct Tuple2StreamMetadata
         Map<String, Tuple2StreamMetadata> tuple2StreamMetadataMap = new HashMap<>();
-        for(String topic : plainStringTopics) {
+        for (String topic : plainStringTopics) {
             String streamId = getStreamNameByTopic(topic);
             Tuple2StreamMetadata tuple2StreamMetadata = new Tuple2StreamMetadata();
             Set<String> activeStreamNames = new HashSet<>();
@@ -128,7 +109,7 @@ public class TestMetadataSpecSerDeser {
             tuple2StreamMetadataMap.put(topic, tuple2StreamMetadata);
         }
 
-        for(String topic : jsonStringTopics) {
+        for (String topic : jsonStringTopics) {
             String streamId = getStreamNameByTopic(topic);
             Tuple2StreamMetadata tuple2StreamMetadata = new Tuple2StreamMetadata();
             Set<String> activeStreamNames = new HashSet<>();
@@ -143,7 +124,7 @@ public class TestMetadataSpecSerDeser {
 
         // construct StreamRepartitionMetadata
         Map<String, List<StreamRepartitionMetadata>> streamRepartitionMetadataMap = new HashMap<>();
-        for(String topic : plainStringTopics) {
+        for (String topic : plainStringTopics) {
             String streamId = getStreamNameByTopic(topic);
             StreamRepartitionMetadata streamRepartitionMetadata = new StreamRepartitionMetadata(topic, "defaultStringStream");
             StreamRepartitionStrategy gs = new StreamRepartitionStrategy();
@@ -164,7 +145,7 @@ public class TestMetadataSpecSerDeser {
             streamRepartitionMetadataMap.put(topic, Arrays.asList(streamRepartitionMetadata));
         }
 
-        for(String topic : jsonStringTopics) {
+        for (String topic : jsonStringTopics) {
             String streamId = getStreamNameByTopic(topic);
             StreamRepartitionMetadata streamRepartitionMetadata = new StreamRepartitionMetadata(topic, "defaultStringStream");
             StreamRepartitionStrategy gs = new StreamRepartitionStrategy();
@@ -195,10 +176,10 @@ public class TestMetadataSpecSerDeser {
     }
 
     @Test
-    public void testRouterBoltSpec(){
+    public void testRouterBoltSpec() {
         List<String> topics = Arrays.asList("testTopic3", "testTopic4", "testTopic5");
         RouterSpec boltSpec = new RouterSpec();
-        for(String topic : topics) {
+        for (String topic : topics) {
             String streamId = getStreamNameByTopic(topic);
             // StreamPartition, groupby col1 for stream cpuUsageStream
             StreamPartition sp = new StreamPartition();
@@ -229,11 +210,11 @@ public class TestMetadataSpecSerDeser {
     }
 
     @Test
-    public void testAlertBoltSpec(){
+    public void testAlertBoltSpec() {
         String topologyName = "testTopology";
         AlertBoltSpec spec = new AlertBoltSpec();
         List<String> topics = Arrays.asList("testTopic3", "testTopic4", "testTopic5");
-        for(String topic : topics) {
+        for (String topic : topics) {
             String streamId = getStreamNameByTopic(topic);
 
             // construct StreamPartition

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormCustomGroupingRouting.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormCustomGroupingRouting.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormCustomGroupingRouting.java
index 0466ed3..c612d28 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormCustomGroupingRouting.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormCustomGroupingRouting.java
@@ -19,15 +19,6 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
 import backtype.storm.Config;
 import backtype.storm.LocalCluster;
 import backtype.storm.generated.GlobalStreamId;
@@ -42,45 +33,54 @@ import backtype.storm.topology.base.BaseRichBolt;
 import backtype.storm.topology.base.BaseRichSpout;
 import backtype.storm.tuple.Fields;
 import backtype.storm.tuple.Tuple;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Since 4/29/16.
  */
-@SuppressWarnings({ "rawtypes", "serial" })
+@SuppressWarnings( {"rawtypes", "serial"})
 public class TestStormCustomGroupingRouting implements Serializable {
     @Ignore
     @Test
-    public void testRoutingByCustomGrouping() throws Exception{
+    public void testRoutingByCustomGrouping() throws Exception {
         Config conf = new Config();
         conf.setNumWorkers(2); // use two worker processes
         TopologyBuilder topologyBuilder = new TopologyBuilder();
         topologyBuilder.setSpout("blue-spout", new BlueSpout()); // parallelism hint
 
         topologyBuilder.setBolt("green-bolt-1", new GreenBolt(0)).setNumTasks(2)
-                .customGrouping("blue-spout", new CustomStreamGrouping(){
-                    int count = 0;
-                    List<Integer> targetTask;
-                    @Override
-                    public void prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks) {
-                        this.targetTask = targetTasks;
-                    }
-
-                    @Override
-                    public List<Integer> chooseTasks(int taskId, List<Object> values) {
-                        if(count % 2 == 0) {
-                            count++;
-                            return Arrays.asList(targetTask.get(0));
-                        }else{
-                            count++;
-                            return Arrays.asList(targetTask.get(1));
-                        }
+            .customGrouping("blue-spout", new CustomStreamGrouping() {
+                int count = 0;
+                List<Integer> targetTask;
+
+                @Override
+                public void prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks) {
+                    this.targetTask = targetTasks;
+                }
+
+                @Override
+                public List<Integer> chooseTasks(int taskId, List<Object> values) {
+                    if (count % 2 == 0) {
+                        count++;
+                        return Arrays.asList(targetTask.get(0));
+                    } else {
+                        count++;
+                        return Arrays.asList(targetTask.get(1));
                     }
-                });
+                }
+            });
 
         LocalCluster cluster = new LocalCluster();
         cluster.submitTopology("mytopology", new HashMap(), topologyBuilder.createTopology());
 
-        while(true) {
+        while (true) {
             try {
                 Thread.sleep(1000);
             } catch (Exception e) {
@@ -92,8 +92,10 @@ public class TestStormCustomGroupingRouting implements Serializable {
     private static class BlueSpout extends BaseRichSpout {
         int count = 0;
         private SpoutOutputCollector collector;
-        public BlueSpout(){
+
+        public BlueSpout() {
         }
+
         @Override
         public void declareOutputFields(OutputFieldsDeclarer declarer) {
             declarer.declare(new Fields("a"));
@@ -106,16 +108,16 @@ public class TestStormCustomGroupingRouting implements Serializable {
 
         @Override
         public void nextTuple() {
-            if(count % 2 == 0) {
+            if (count % 2 == 0) {
                 this.collector.emit(Arrays.asList("testdata" + count));
                 count++;
-            }else{
+            } else {
                 this.collector.emit(Arrays.asList("testdata" + count));
                 count++;
             }
-            try{
+            try {
                 Thread.sleep(10000);
-            }catch(Exception ex){
+            } catch (Exception ex) {
 
             }
         }
@@ -123,9 +125,11 @@ public class TestStormCustomGroupingRouting implements Serializable {
 
     private static class GreenBolt extends BaseRichBolt {
         private int id;
-        public GreenBolt(int id){
+
+        public GreenBolt(int id) {
             this.id = id;
         }
+
         @Override
         public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormParallelism.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormParallelism.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormParallelism.java
index 279a041..c235e73 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormParallelism.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormParallelism.java
@@ -19,12 +19,6 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
 import backtype.storm.Config;
 import backtype.storm.LocalCluster;
 import backtype.storm.spout.SpoutOutputCollector;
@@ -36,38 +30,43 @@ import backtype.storm.topology.base.BaseRichBolt;
 import backtype.storm.topology.base.BaseRichSpout;
 import backtype.storm.tuple.Fields;
 import backtype.storm.tuple.Tuple;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Since 4/29/16.
  */
-@SuppressWarnings({"serial", "rawtypes"})
+@SuppressWarnings( {"serial", "rawtypes"})
 public class TestStormParallelism {
     /**
      * When run this test, please check the following through jstack and log
      * 1) for blue-spout, num of executors is 2, # of tasks is 2
-     *
+     * <p>
      * Expected:
-     *
+     * <p>
      * a. 2 threads uniquely named Thread-*-blue-spout-executor[*,*]
      * b. each thread will have single task
-     *
+     * <p>
      * 2) for green-bolt, num of executors is 2, # of tasks is 4
-     *
+     * <p>
      * Expected:
-     *
+     * <p>
      * a. 2 threads uniquely named Thread-*-green-bolt-executor[*,*]
      * b. each thread will have 2 tasks
-     *
+     * <p>
      * 3) for yellow-bolt, num of executors is 6, # of tasks is 6
-     *
+     * <p>
      * Expected:
-     *
+     * <p>
      * a. 6 threads uniquely named Thread-*-yellow-bolt-executor[*,*]
      * b. each thread will have 1 tasks
-     *
-     *
+     * <p>
+     * <p>
      * Continue to think:
-     *
+     * <p>
      * For alter engine, if we use multiple tasks per component instead of one task per component,
      * what will the parallelism mechanism affect?
      *
@@ -75,23 +74,23 @@ public class TestStormParallelism {
      */
     @Ignore
     @Test
-    public void testParallelism() throws Exception{
+    public void testParallelism() throws Exception {
         Config conf = new Config();
         conf.setNumWorkers(2); // use two worker processes
         TopologyBuilder topologyBuilder = new TopologyBuilder();
         topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // parallelism hint
 
         topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
-                .setNumTasks(4)
-                .shuffleGrouping("blue-spout");
+            .setNumTasks(4)
+            .shuffleGrouping("blue-spout");
 
         topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6)
-                .shuffleGrouping("green-bolt");
+            .shuffleGrouping("green-bolt");
 
         LocalCluster cluster = new LocalCluster();
         cluster.submitTopology("mytopology", new HashMap(), topologyBuilder.createTopology());
 
-        while(true) {
+        while (true) {
             try {
                 Thread.sleep(1000);
             } catch (Exception e) {
@@ -100,10 +99,12 @@ public class TestStormParallelism {
         }
     }
 
-    private static class BlueSpout extends BaseRichSpout{
+    private static class BlueSpout extends BaseRichSpout {
         static int count = 0;
-        public BlueSpout(){
+
+        public BlueSpout() {
         }
+
         @Override
         public void declareOutputFields(OutputFieldsDeclarer declarer) {
             declarer.declare(new Fields("a"));
@@ -121,8 +122,9 @@ public class TestStormParallelism {
         }
     }
 
-    private static class GreenBolt extends BaseRichBolt{
+    private static class GreenBolt extends BaseRichBolt {
         static int count;
+
         @Override
         public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
             count++;
@@ -140,8 +142,9 @@ public class TestStormParallelism {
         }
     }
 
-    private static class YellowBolt extends BaseRichBolt{
+    private static class YellowBolt extends BaseRichBolt {
         static int count;
+
         @Override
         public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
             count++;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormStreamIdRouting.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormStreamIdRouting.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormStreamIdRouting.java
index 9d3892a..c27edf4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormStreamIdRouting.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestStormStreamIdRouting.java
@@ -19,13 +19,6 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
 import backtype.storm.Config;
 import backtype.storm.LocalCluster;
 import backtype.storm.spout.SpoutOutputCollector;
@@ -37,30 +30,36 @@ import backtype.storm.topology.base.BaseRichBolt;
 import backtype.storm.topology.base.BaseRichSpout;
 import backtype.storm.tuple.Fields;
 import backtype.storm.tuple.Tuple;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
 
 
 /**
  * Since 4/29/16.
  */
-@SuppressWarnings({"serial", "rawtypes", "unused"})
+@SuppressWarnings( {"serial", "rawtypes", "unused"})
 public class TestStormStreamIdRouting {
     @Ignore
     @Test
-    public void testRoutingByStreamId() throws Exception{
+    public void testRoutingByStreamId() throws Exception {
         Config conf = new Config();
         conf.setNumWorkers(2); // use two worker processes
         TopologyBuilder topologyBuilder = new TopologyBuilder();
         topologyBuilder.setSpout("blue-spout", new BlueSpout()); // parallelism hint
 
         topologyBuilder.setBolt("green-bolt-1", new GreenBolt(1))
-                .shuffleGrouping("blue-spout", "green-bolt-stream-1");
+            .shuffleGrouping("blue-spout", "green-bolt-stream-1");
         topologyBuilder.setBolt("green-bolt-2", new GreenBolt(2))
-                .shuffleGrouping("blue-spout", "green-bolt-stream-2");
+            .shuffleGrouping("blue-spout", "green-bolt-stream-2");
 
         LocalCluster cluster = new LocalCluster();
         cluster.submitTopology("mytopology", new HashMap(), topologyBuilder.createTopology());
 
-        while(true) {
+        while (true) {
             try {
                 Thread.sleep(1000);
             } catch (Exception e) {
@@ -72,8 +71,10 @@ public class TestStormStreamIdRouting {
     private static class BlueSpout extends BaseRichSpout {
         int count = 0;
         private SpoutOutputCollector collector;
-        public BlueSpout(){
+
+        public BlueSpout() {
         }
+
         @Override
         public void declareOutputFields(OutputFieldsDeclarer declarer) {
             declarer.declareStream("green-bolt-stream-1", new Fields("a"));
@@ -87,16 +88,16 @@ public class TestStormStreamIdRouting {
 
         @Override
         public void nextTuple() {
-            if(count % 2 == 0) {
+            if (count % 2 == 0) {
                 this.collector.emit("green-bolt-stream-1", Arrays.asList("testdata" + count));
                 count++;
-            }else{
+            } else {
                 this.collector.emit("green-bolt-stream-2", Arrays.asList("testdata" + count));
                 count++;
             }
-            try{
+            try {
                 Thread.sleep(10000);
-            }catch(Exception ex){
+            } catch (Exception ex) {
 
             }
         }
@@ -104,9 +105,11 @@ public class TestStormStreamIdRouting {
 
     private static class GreenBolt extends BaseRichBolt {
         private int id;
-        public GreenBolt(int id){
+
+        public GreenBolt(int id) {
             this.id = id;
         }
+
         @Override
         public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
         }
@@ -122,7 +125,7 @@ public class TestStormStreamIdRouting {
         }
     }
 
-    private static class YellowBolt extends BaseRichBolt{
+    private static class YellowBolt extends BaseRichBolt {
         @Override
         public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestTuple2StreamConverter.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestTuple2StreamConverter.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestTuple2StreamConverter.java
index b0e5c4a..19ab1da 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestTuple2StreamConverter.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestTuple2StreamConverter.java
@@ -19,26 +19,20 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
 import org.apache.eagle.alert.coordination.model.Tuple2StreamConverter;
 import org.apache.eagle.alert.coordination.model.Tuple2StreamMetadata;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.util.*;
+
 /**
  * Since 5/3/16.
  */
 public class TestTuple2StreamConverter {
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+    @SuppressWarnings( {"unchecked", "rawtypes"})
     @Test
-    public void test(){
+    public void test() {
         Tuple2StreamMetadata metadata = new Tuple2StreamMetadata();
         Set activeStreamNames = new HashSet<>();
         activeStreamNames.add("defaultStringStream");

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestUnitTopologyMain.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestUnitTopologyMain.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestUnitTopologyMain.java
index 7132f5a..9647830 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestUnitTopologyMain.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestUnitTopologyMain.java
@@ -19,36 +19,35 @@
 
 package org.apache.eagle.alert.engine.topology;
 
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.engine.runner.UnitTopologyRunner;
 import org.junit.Ignore;
 import org.junit.Test;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
 /**
  * Since 5/4/16.
  */
 public class TestUnitTopologyMain {
     @Ignore
     @Test
-    public void testTopologyRun(){
+    public void testTopologyRun() {
         testTopologyRun("/application-test.conf");
     }
 
-    public void testTopologyRun(String configResourceName){
+    public void testTopologyRun(String configResourceName) {
         ConfigFactory.invalidateCaches();
         System.setProperty("config.resource", configResourceName);
-        System.out.print("Set config.resource = "+configResourceName);
+        System.out.print("Set config.resource = " + configResourceName);
         Config config = ConfigFactory.load();
         String topologyId = config.getString("topology.name");
         MockMetadataChangeNotifyService changeNotifyService =
-                new MockMetadataChangeNotifyService(topologyId,"alertEngineSpout");
-        new UnitTopologyRunner(changeNotifyService).run(topologyId,config);
+            new MockMetadataChangeNotifyService(topologyId, "alertEngineSpout");
+        new UnitTopologyRunner(changeNotifyService).run(topologyId, config);
     }
 
-    public static void main(String[] args){
-        if(args.length>0) {
+    public static void main(String[] args) {
+        if (args.length > 0) {
             new TestUnitTopologyMain().testTopologyRun(args[0]);
         } else {
             new TestUnitTopologyMain().testTopologyRun();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/CompressionUtilsTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/CompressionUtilsTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/CompressionUtilsTest.java
index 8317943..3bfb1ab 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/CompressionUtilsTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/CompressionUtilsTest.java
@@ -16,13 +16,13 @@
  */
 package org.apache.eagle.alert.engine.utils;
 
-import java.io.IOException;
-
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+
 public class CompressionUtilsTest {
     private final static Logger LOG = LoggerFactory.getLogger(CompressionUtilsTest.class);
 
@@ -33,11 +33,11 @@ public class CompressionUtilsTest {
         byte[] compressed = CompressionUtils.compress(original);
         byte[] decompressed = CompressionUtils.decompress(compressed);
 
-        LOG.info("original size: {}",original.length);
-        LOG.info("compressed size: {}",compressed.length);
-        LOG.info("decompressed size: {}",decompressed.length);
+        LOG.info("original size: {}", original.length);
+        LOG.info("compressed size: {}", compressed.length);
+        LOG.info("decompressed size: {}", decompressed.length);
 
         String decompressedValue = new String(decompressed);
-        Assert.assertEquals(value,decompressedValue);
+        Assert.assertEquals(value, decompressedValue);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/TimePeriodUtilsTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/TimePeriodUtilsTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/TimePeriodUtilsTest.java
index cad53d4..b74e807 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/TimePeriodUtilsTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/utils/TimePeriodUtilsTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.eagle.alert.engine.utils;
 
-import java.text.ParseException;
-
 import org.apache.eagle.alert.utils.DateTimeUtil;
 import org.apache.eagle.alert.utils.TimePeriodUtils;
 import org.joda.time.Period;
@@ -25,6 +23,8 @@ import org.joda.time.Seconds;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.text.ParseException;
+
 public class TimePeriodUtilsTest {
     @Test
     public void testJodaTimePeriod() throws ParseException {
@@ -48,44 +48,44 @@ public class TimePeriodUtilsTest {
 
         Period period = new Period("PT15m");
         Seconds seconds = period.toStandardSeconds();
-        Assert.assertEquals(15*60,seconds.getSeconds());
+        Assert.assertEquals(15 * 60, seconds.getSeconds());
 
         long time = DateTimeUtil.humanDateToSeconds("2015-07-01 13:56:12");
         long expect = DateTimeUtil.humanDateToSeconds("2015-07-01 13:45:00");
-        long result = TimePeriodUtils.formatSecondsByPeriod(time,seconds);
-        Assert.assertEquals(expect,result);
+        long result = TimePeriodUtils.formatSecondsByPeriod(time, seconds);
+        Assert.assertEquals(expect, result);
 
         time = DateTimeUtil.humanDateToSeconds("2015-07-01 03:14:59");
         expect = DateTimeUtil.humanDateToSeconds("2015-07-01 03:00:00");
         result = TimePeriodUtils.formatSecondsByPeriod(time, seconds);
-        Assert.assertEquals(expect,result);
+        Assert.assertEquals(expect, result);
 
         time = DateTimeUtil.humanDateToSeconds("2015-07-01 03:14:59");
         expect = DateTimeUtil.humanDateToSeconds("2015-07-01 03:00:00");
         result = TimePeriodUtils.formatSecondsByPeriod(time, seconds);
-        Assert.assertEquals(expect,result);
+        Assert.assertEquals(expect, result);
     }
 
     @Test
-     public void testFormatSecondsByPeriod1H() throws ParseException {
+    public void testFormatSecondsByPeriod1H() throws ParseException {
 
         Period period = new Period("PT1h");
         Seconds seconds = period.toStandardSeconds();
-        Assert.assertEquals(60*60,seconds.getSeconds());
+        Assert.assertEquals(60 * 60, seconds.getSeconds());
 
         long time = DateTimeUtil.humanDateToSeconds("2015-07-01 13:56:12");
         long expect = DateTimeUtil.humanDateToSeconds("2015-07-01 13:00:00");
-        long result = TimePeriodUtils.formatSecondsByPeriod(time,seconds);
-        Assert.assertEquals(expect,result);
+        long result = TimePeriodUtils.formatSecondsByPeriod(time, seconds);
+        Assert.assertEquals(expect, result);
 
         time = DateTimeUtil.humanDateToSeconds("2015-07-01 03:14:59");
         expect = DateTimeUtil.humanDateToSeconds("2015-07-01 03:00:00");
         result = TimePeriodUtils.formatSecondsByPeriod(time, seconds);
-        Assert.assertEquals(expect,result);
+        Assert.assertEquals(expect, result);
 
         time = DateTimeUtil.humanDateToSeconds("2015-07-01 03:30:59");
         expect = DateTimeUtil.humanDateToSeconds("2015-07-01 03:00:00");
         result = TimePeriodUtils.formatSecondsByPeriod(time, seconds);
-        Assert.assertEquals(expect,result);
+        Assert.assertEquals(expect, result);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/application-absence.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/application-absence.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/application-absence.conf
index 7094820..11df895 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/application-absence.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/application-absence.conf
@@ -13,16 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_1",
+  "topology": {
+    "name": "alertUnitTopology_1",
     "numOfTotalWorkers": 20,
-    "numOfSpoutTasks" : 1,
-    "numOfRouterBolts" : 4,
-    "numOfAlertBolts" : 10,
-    "numOfPublishTasks" : 1,
-    "localMode" : "true"
+    "numOfSpoutTasks": 1,
+    "numOfRouterBolts": 4,
+    "numOfAlertBolts": 10,
+    "numOfPublishTasks": 1,
+    "localMode": "true"
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "sandbox.hortonworks.com:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -32,29 +32,29 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "sandbox.hortonworks.com:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "sandbox.hortonworks.com:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-	"context" : "/rest",
-	"host" : "localhost",
-	"port" : 8080
+    "context": "/rest",
+    "host": "localhost",
+    "port": 8080
   },
   "coordinatorService": {
-  	"host": "localhost",
-  	"port": "8080",
-  	"context" : "/rest"
+    "host": "localhost",
+    "port": "8080",
+    "context": "/rest"
   },
   "kafkaProducer": {
-  	"bootstrapServers": "sandbox.hortonworks.com:6667"
+    "bootstrapServers": "sandbox.hortonworks.com:6667"
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/datasources.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/datasources.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/datasources.json
index 7c2f8d8..ed4d638 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/datasources.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/datasources.json
@@ -1,17 +1,17 @@
 [
-	{
-		"name": "absenceAlertDataSource",
-		"type": "KAFKA",
-		"properties": {},
-		"topic": "absenceAlertTopic",
-		"schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
-		"codec": {
-			"streamNameSelectorProp": {
-				"userProvidedStreamName": "noDataAlertStream"
-			},
-			"streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-			"timestampColumn": "timestamp",
-			"timestampFormat": ""
-		}
-	}
+  {
+    "name": "absenceAlertDataSource",
+    "type": "KAFKA",
+    "properties": {},
+    "topic": "absenceAlertTopic",
+    "schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "userProvidedStreamName": "noDataAlertStream"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": "timestamp",
+      "timestampFormat": ""
+    }
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/policies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/policies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/policies.json
index df04e79..d03c86e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/policies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/policies.json
@@ -1,24 +1,26 @@
 [
-	{
-		"name": "absenceAlertPolicy",
-		"description": "absenceAlertPolicy",
-		"inputStreams": [
-			"absenceAlertStream"
-		],
-		"outputStreams": [
-			"absenceAlertStream_out"
-		],
-		"definition": {
-			"type": "absencealert",
-			"value": "1,jobID,job1,daily_rule,14:00:00,15:00:00"
-		},
-		"partitionSpec": [
-			{
-				"streamId": "absenceAlertStream",
-				"type": "GROUPBY",
-				"columns" : ["jobID"]
-			}
-		],
-		"parallelismHint": 2
-	}
+  {
+    "name": "absenceAlertPolicy",
+    "description": "absenceAlertPolicy",
+    "inputStreams": [
+      "absenceAlertStream"
+    ],
+    "outputStreams": [
+      "absenceAlertStream_out"
+    ],
+    "definition": {
+      "type": "absencealert",
+      "value": "1,jobID,job1,daily_rule,14:00:00,15:00:00"
+    },
+    "partitionSpec": [
+      {
+        "streamId": "absenceAlertStream",
+        "type": "GROUPBY",
+        "columns": [
+          "jobID"
+        ]
+      }
+    ],
+    "parallelismHint": 2
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/publishments.json
index b199e19..fca49e2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/publishments.json
@@ -1,20 +1,20 @@
 [
-	{
-		"name":"test-stream-output",
-		"type":"org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-		"policyIds": [
-			"absenceAlertPolicy"
-		],
-		"properties": {
-			"subject":"Eagle Test Alert",
-			"template":"",
-			"sender": "sender@corp.com",
-			"recipients": "services@corp.com",
-			"smtp.server":"smtp.mailhost.com",
-			"connection": "plaintext",
-			"smtp.port": "25"
-		},
-		"dedupIntervalMin" : "PT5M",
-		"serializer" : "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
-	}
+  {
+    "name": "test-stream-output",
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
+    "policyIds": [
+      "absenceAlertPolicy"
+    ],
+    "properties": {
+      "subject": "Eagle Test Alert",
+      "template": "",
+      "sender": "sender@corp.com",
+      "recipients": "services@corp.com",
+      "smtp.server": "smtp.mailhost.com",
+      "connection": "plaintext",
+      "smtp.port": "25"
+    },
+    "dedupIntervalMin": "PT5M",
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/streamdefinitions.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/streamdefinitions.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/streamdefinitions.json
index c9cd7b1..4bd7319 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/streamdefinitions.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/streamdefinitions.json
@@ -1,29 +1,29 @@
 [
-	{
-		"streamId": "absenceAlertStream",
-		"dataSource": "absenceAlertDataSource",
-		"description": "the data stream for testing absence alert",
-		"validate": false,
-		"timeseries": false,
-		"columns": [
-			{
-				"name": "jobID",
-				"type": "STRING",
-				"defaultValue": "",
-				"required": true
-			},
-			{
-				"name": "timestamp",
-				"type": "LONG",
-				"defaultValue": 0,
-				"required": true
-			},
-			{
-				"name": "status",
-				"type": "STRING",
-				"defaultValue": "running",
-				"required": true
-			}
-		]
-	}
+  {
+    "streamId": "absenceAlertStream",
+    "dataSource": "absenceAlertDataSource",
+    "description": "the data stream for testing absence alert",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "jobID",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "timestamp",
+        "type": "LONG",
+        "defaultValue": 0,
+        "required": true
+      },
+      {
+        "name": "status",
+        "type": "STRING",
+        "defaultValue": "running",
+        "required": true
+      }
+    ]
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/topologies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/topologies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/topologies.json
index afac207..8278b2d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/topologies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/absence/topologies.json
@@ -1,31 +1,31 @@
 [
-{
-	"name": "alertUnitTopology_1",
-	"numOfSpout":1,
-	"numOfAlertBolt": 10,
-	"numOfGroupBolt": 4,
-	"spoutId": "alertEngineSpout",
-	"groupNodeIds" : [
-		"streamRouterBolt0",
-		"streamRouterBolt1",
-		"streamRouterBolt2",
-		"streamRouterBolt3"
-	],
-	"alertBoltIds": [
-		"alertBolt0",
-		"alertBolt1",
-		"alertBolt2",
-		"alertBolt3",
-		"alertBolt4",
-		"alertBolt5",
-		"alertBolt6",
-		"alertBolt7",
-		"alertBolt8",
-		"alertBolt9"
-	],
-	"pubBoltId" : "alertPublishBolt",
-	"spoutParallelism": 1,
-	"groupParallelism": 1,
-	"alertParallelism": 1
-}
+  {
+    "name": "alertUnitTopology_1",
+    "numOfSpout": 1,
+    "numOfAlertBolt": 10,
+    "numOfGroupBolt": 4,
+    "spoutId": "alertEngineSpout",
+    "groupNodeIds": [
+      "streamRouterBolt0",
+      "streamRouterBolt1",
+      "streamRouterBolt2",
+      "streamRouterBolt3"
+    ],
+    "alertBoltIds": [
+      "alertBolt0",
+      "alertBolt1",
+      "alertBolt2",
+      "alertBolt3",
+      "alertBolt4",
+      "alertBolt5",
+      "alertBolt6",
+      "alertBolt7",
+      "alertBolt8",
+      "alertBolt9"
+    ],
+    "pubBoltId": "alertPublishBolt",
+    "spoutParallelism": 1,
+    "groupParallelism": 1,
+    "alertParallelism": 1
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test-backup.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test-backup.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test-backup.conf
index 4cfcc75..5b4ff04 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test-backup.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test-backup.conf
@@ -13,17 +13,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_bug",
-    "numOfSpoutTasks" : 3,
-    "numOfRouterBolts" : 6,
-    "numOfAlertBolts" : 6,
-    "numOfPublishTasks" : 1,
-    "numOfTotalWorkers":1,
+  "topology": {
+    "name": "alertUnitTopology_bug",
+    "numOfSpoutTasks": 3,
+    "numOfRouterBolts": 6,
+    "numOfAlertBolts": 6,
+    "numOfPublishTasks": 1,
+    "numOfTotalWorkers": 1,
     "messageTimeoutSecs": 30,     // topology.message.timeout.secs: 30 by default
-    "localMode" : true
+    "localMode": true
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "localhost:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -33,34 +33,34 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "localhost:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "localhost:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-    "context" : "/api",
-    "host" : "localhost",
-    "port" : 8080
+    "context": "/api",
+    "host": "localhost",
+    "port": 8080
   },
-  "metric":{
-    "tags":{
-      "topologyName":"alertUnitTopology_1"
+  "metric": {
+    "tags": {
+      "topologyName": "alertUnitTopology_1"
     }
     "sink": {
-//      "kafka": {
-//        "topic": "alert_metric_test"
-//        "bootstrap.servers": "localhost:9092"
-//      }
+      //      "kafka": {
+      //        "topic": "alert_metric_test"
+      //        "bootstrap.servers": "localhost:9092"
+      //      }
       "logger": {
-        "level":"DEBUG"
+        "level": "DEBUG"
       }
       "elasticsearch": {
         "hosts": ["localhost:9200"]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test.conf
index 4cd932f..61b6b49 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/application-test.conf
@@ -13,17 +13,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_1_test",
-    "numOfSpoutTasks" : 3,
-    "numOfRouterBolts" : 6,
-    "numOfAlertBolts" : 6,
-    "numOfPublishTasks" : 1,
-    "numOfTotalWorkers":1,
+  "topology": {
+    "name": "alertUnitTopology_1_test",
+    "numOfSpoutTasks": 3,
+    "numOfRouterBolts": 6,
+    "numOfAlertBolts": 6,
+    "numOfPublishTasks": 1,
+    "numOfTotalWorkers": 1,
     "messageTimeoutSecs": 30,     // topology.message.timeout.secs: 30 by default
-    "localMode" : true
+    "localMode": true
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "localhost:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -33,31 +33,31 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "localhost:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "localhost:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-    "context" : "/api",
-    "host" : "localhost",
-    "port" : 8080
+    "context": "/api",
+    "host": "localhost",
+    "port": 8080
   },
-  "metric":{
+  "metric": {
     "sink": {
-//      "kafka": {
-//        "topic": "alert_metric_test"
-//        "bootstrap.servers": "localhost:9092"
-//      }
+      //      "kafka": {
+      //        "topic": "alert_metric_test"
+      //        "bootstrap.servers": "localhost:9092"
+      //      }
       "logger": {
-        "level":"INFO"
+        "level": "INFO"
       }
       "elasticsearch": {
         "hosts": ["localhost:9200"]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/application-integration-2.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/application-integration-2.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/application-integration-2.conf
index 80522fb..5a626d7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/application-integration-2.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/application-integration-2.conf
@@ -13,16 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_2",
-    "numOfSpoutTasks" : 1,
-    "numOfRouterBolts" : 4,
-    "numOfAlertBolts" : 10,
-    "numOfPublishTasks" : 1,
+  "topology": {
+    "name": "alertUnitTopology_2",
+    "numOfSpoutTasks": 1,
+    "numOfRouterBolts": 4,
+    "numOfAlertBolts": 10,
+    "numOfPublishTasks": 1,
     "numOfTotalWorkers": 20,
-    "localMode" : "true"
+    "localMode": "true"
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "localhost:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -32,29 +32,29 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "localhost:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "localhost:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-	"context" : "/rest",
-	"host" : "localhost",
-	"port" : 8080
+    "context": "/rest",
+    "host": "localhost",
+    "port": 8080
   },
   "coordinatorService": {
-  	"host": "localhost",
-  	"port": "8080",
-  	"context" : "/rest"
+    "host": "localhost",
+    "port": "8080",
+    "context": "/rest"
   },
   "kafkaProducer": {
-  	"bootstrapServers": "localhost:9092"
+    "bootstrapServers": "localhost:9092"
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/datasources.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/datasources.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/datasources.json
index 946acd6..d16cea3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/datasources.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/datasources.json
@@ -1,37 +1,36 @@
 [
-{
-	"name": "eslog_datasource",
-	"type": "KAFKA",
-	"properties": {
-	},
-	"topic": "eslogs",
-	"schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
-	"codec": {
-		"streamNameSelectorProp": {
-			"userProvidedStreamName" : "esStream",
-			"streamNameFormat":"%s"
-		},
-		"streamNameSelectorCls":"org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-		"timestampColumn": "timestamp",
-		"timestampFormat":""
-	}
-},
-{
-	"name": "bootfailure_datasource",
-	"type": "KAFKA",
-	"properties": {
-	},
-	"topic": "bootfailures",
-	"schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
-	"codec": {
-		"streamNameSelectorProp": {
-			"userProvidedStreamName" : "ifStream",
-			"streamNameFormat":"%s"
-		},
-		"streamNameSelectorCls":"org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-		"timestampColumn": "timestamp",
-		"timestampFormat":""
-	}
-}
-
+  {
+    "name": "eslog_datasource",
+    "type": "KAFKA",
+    "properties": {
+    },
+    "topic": "eslogs",
+    "schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "userProvidedStreamName": "esStream",
+        "streamNameFormat": "%s"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": "timestamp",
+      "timestampFormat": ""
+    }
+  },
+  {
+    "name": "bootfailure_datasource",
+    "type": "KAFKA",
+    "properties": {
+    },
+    "topic": "bootfailures",
+    "schemeCls": "org.apache.eagle.alert.engine.scheme.JsonScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "userProvidedStreamName": "ifStream",
+        "streamNameFormat": "%s"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": "timestamp",
+      "timestampFormat": ""
+    }
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/policies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/policies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/policies.json
index 4702575..31463cd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/policies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/policies.json
@@ -1,39 +1,39 @@
 [
-{
-	"name": "logStreamJoinBootFailure",
-	"description" : "policy to check host perfmon_cpu",
-	"inputStreams": [
-		"esStream",
-		"ifStream"
-	],
-	"outputStreams": [
-		"log_stream_join_output"
-	],
-	"definition": {
-		"type": "siddhi",
-		"value": " from esStream#window.externalTime(timestamp, 20 min) as a join ifStream#window.externalTime(timestamp, 5 min) as b on a.instanceUuid == b.instanceUuid select logLevel, a.host as aHost, a.component, a.message as logMessage, b.message as failMessage, a.timestamp as t1, b.timestamp as t2, b.host as bHost, count(1) as errorCount insert into log_stream_join_output;  "
-	},
-	"partitionSpec": [
-		{
-			"streamId" : "esStream",
-			"type" : "GROUPBY",
-			"columns" : [
-				"instanceUuid"
-			],
-			"sortSpec": {
-				"windowPeriod" : "PT1M"
-			}
-		},
-		{
-			"streamId" : "ifStream",
-			"type" : "GROUPBY",
-			"columns" : [
-				"instanceUuid"
-			],
-			"sortSpec": {
-				"windowPeriod" : "PT1M"
-			}
-		}
-	]
-}
+  {
+    "name": "logStreamJoinBootFailure",
+    "description": "policy to check host perfmon_cpu",
+    "inputStreams": [
+      "esStream",
+      "ifStream"
+    ],
+    "outputStreams": [
+      "log_stream_join_output"
+    ],
+    "definition": {
+      "type": "siddhi",
+      "value": " from esStream#window.externalTime(timestamp, 20 min) as a join ifStream#window.externalTime(timestamp, 5 min) as b on a.instanceUuid == b.instanceUuid select logLevel, a.host as aHost, a.component, a.message as logMessage, b.message as failMessage, a.timestamp as t1, b.timestamp as t2, b.host as bHost, count(1) as errorCount insert into log_stream_join_output;  "
+    },
+    "partitionSpec": [
+      {
+        "streamId": "esStream",
+        "type": "GROUPBY",
+        "columns": [
+          "instanceUuid"
+        ],
+        "sortSpec": {
+          "windowPeriod": "PT1M"
+        }
+      },
+      {
+        "streamId": "ifStream",
+        "type": "GROUPBY",
+        "columns": [
+          "instanceUuid"
+        ],
+        "sortSpec": {
+          "windowPeriod": "PT1M"
+        }
+      }
+    ]
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/publishments.json
index 427526b..06d7b82 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/publishments.json
@@ -1,18 +1,18 @@
 [
-{
-	"name":"log-stream-join-output",
-	"type":"org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
-	"policyIds": [
-		"log_stream_join_output"
-	],
-	"properties": {
-		"subject":"Eagle Test Alert",
-        "template":"",
-	  "sender": "sender@corp.com",
-	  "recipients": "receiver@corp.com",
-	  "smtp.server":"mailhost.com"
-	},
-	"dedupIntervalMin" : "PT1M",
-	"serializer" : "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
-}
+  {
+    "name": "log-stream-join-output",
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertEmailPublisher",
+    "policyIds": [
+      "log_stream_join_output"
+    ],
+    "properties": {
+      "subject": "Eagle Test Alert",
+      "template": "",
+      "sender": "sender@corp.com",
+      "recipients": "receiver@corp.com",
+      "smtp.server": "mailhost.com"
+    },
+    "dedupIntervalMin": "PT1M",
+    "serializer": "org.apache.eagle.alert.engine.publisher.impl.StringEventSerializer"
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/streamdefinitions.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/streamdefinitions.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/streamdefinitions.json
index 0a26a28..d6603ac 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/streamdefinitions.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/streamdefinitions.json
@@ -1,93 +1,92 @@
 [
-{
-	"streamId": "esStream",
-	"dataSource" : "eslog_datasource",
-	"description":"the data stream for es log of different modules",
-	"validate": false,
-	"timeseries":false,
-	"columns": [
-		{
-			"name": "instanceUuid",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "timestamp",
-			"type" : "long",
-			"defaultValue": 0,
-			"required":true
-		},
-		{
-			"name": "logLevel",
-			"type" : "string",
-			"defaultValue": "ERROR",
-			"required": true
-		},
-		{
-			"name": "message",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "reqId",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "host",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "component",
-			"type" : "string",
-			"defaultValue": "nova",
-			"required":true
-		}
-	]
-}
-,
-{
-	"streamId": "ifStream",
-	"dataSource" : "bootfailure_datasource",
-	"description":"the data stream for boot failure(instance fault)",
-	"validate": false,
-	"timeseries":false,
-	"columns": [
-		{
-			"name": "instanceUuid",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "timestamp",
-			"type" : "long",
-			"defaultValue": 0,
-			"required":true
-		},
-		{
-			"name": "reqId",
-			"type" : "string",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "message",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "host",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		}
-	]
-}
+  {
+    "streamId": "esStream",
+    "dataSource": "eslog_datasource",
+    "description": "the data stream for es log of different modules",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "instanceUuid",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "timestamp",
+        "type": "long",
+        "defaultValue": 0,
+        "required": true
+      },
+      {
+        "name": "logLevel",
+        "type": "string",
+        "defaultValue": "ERROR",
+        "required": true
+      },
+      {
+        "name": "message",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "reqId",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "host",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "component",
+        "type": "string",
+        "defaultValue": "nova",
+        "required": true
+      }
+    ]
+  },
+  {
+    "streamId": "ifStream",
+    "dataSource": "bootfailure_datasource",
+    "description": "the data stream for boot failure(instance fault)",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "instanceUuid",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "timestamp",
+        "type": "long",
+        "defaultValue": 0,
+        "required": true
+      },
+      {
+        "name": "reqId",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "message",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "host",
+        "type": "string",
+        "defaultValue": "",
+        "required": true
+      }
+    ]
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/topologies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/topologies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/topologies.json
index 9aa8716..c865746 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/topologies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation/topologies.json
@@ -1,31 +1,31 @@
 [
-{
-	"name": "alertUnitTopology_2",
-	"numOfSpout":1,
-	"numOfGroupBolt": 4,
-	"numOfAlertBolt": 10,
-	"spoutId": "alertEngineSpout",
-	"groupNodeIds" : [
-		"streamRouterBolt0",
-		"streamRouterBolt1",
-		"streamRouterBolt2",
-		"streamRouterBolt3"
-	],
-	"alertBoltIds": [
-		"alertBolt0",
-		"alertBolt1",
-		"alertBolt2",
-		"alertBolt3",
-		"alertBolt4",
-		"alertBolt5",
-		"alertBolt6",
-		"alertBolt7",
-		"alertBolt8",
-		"alertBolt9"
-	],
-	"pubBoltId" : "alertPublishBolt",
-	"spoutParallelism": 1,
-	"groupParallelism": 1,
-	"alertParallelism": 1
-}
+  {
+    "name": "alertUnitTopology_2",
+    "numOfSpout": 1,
+    "numOfGroupBolt": 4,
+    "numOfAlertBolt": 10,
+    "spoutId": "alertEngineSpout",
+    "groupNodeIds": [
+      "streamRouterBolt0",
+      "streamRouterBolt1",
+      "streamRouterBolt2",
+      "streamRouterBolt3"
+    ],
+    "alertBoltIds": [
+      "alertBolt0",
+      "alertBolt1",
+      "alertBolt2",
+      "alertBolt3",
+      "alertBolt4",
+      "alertBolt5",
+      "alertBolt6",
+      "alertBolt7",
+      "alertBolt8",
+      "alertBolt9"
+    ],
+    "pubBoltId": "alertPublishBolt",
+    "spoutParallelism": 1,
+    "groupParallelism": 1,
+    "alertParallelism": 1
+  }
 ]

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation_spouttest.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation_spouttest.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation_spouttest.conf
index 2b6f767..c607702 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation_spouttest.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/correlation_spouttest.conf
@@ -13,17 +13,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_1_test",
-    "numOfSpoutTasks" : 3,
-    "numOfRouterBolts" : 6,
-    "numOfAlertBolts" : 6,
-    "numOfPublishTasks" : 1,
-    "numOfTotalWorkers":1,
+  "topology": {
+    "name": "alertUnitTopology_1_test",
+    "numOfSpoutTasks": 3,
+    "numOfRouterBolts": 6,
+    "numOfAlertBolts": 6,
+    "numOfPublishTasks": 1,
+    "numOfTotalWorkers": 1,
     "messageTimeoutSecs": 30,     // topology.message.timeout.secs: 30 by default
-    "localMode" : true
+    "localMode": true
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "localhost:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -33,21 +33,21 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "localhost:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "localhost:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-    "context" : "/rest",
-    "host" : "localhost",
-    "port" : 8080
+    "context": "/rest",
+    "host": "localhost",
+    "port": 8080
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/application-e2e.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/application-e2e.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/application-e2e.conf
index 80522fb..5a626d7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/application-e2e.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/application-e2e.conf
@@ -13,16 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_2",
-    "numOfSpoutTasks" : 1,
-    "numOfRouterBolts" : 4,
-    "numOfAlertBolts" : 10,
-    "numOfPublishTasks" : 1,
+  "topology": {
+    "name": "alertUnitTopology_2",
+    "numOfSpoutTasks": 1,
+    "numOfRouterBolts": 4,
+    "numOfAlertBolts": 10,
+    "numOfPublishTasks": 1,
     "numOfTotalWorkers": 20,
-    "localMode" : "true"
+    "localMode": "true"
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "localhost:2181",
     "kafkaBrokerZkBasePath": "/brokers",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -32,29 +32,29 @@
     "stormKafkaStateUpdateIntervalMs": 2000,
     "stormKafkaFetchSizeBytes": 1048586,
   },
-  "zkConfig" : {
-    "zkQuorum" : "localhost:2181",
-    "zkRoot" : "/alert",
-    "zkSessionTimeoutMs" : 10000,
-    "connectionTimeoutMs" : 10000,
-    "zkRetryTimes" : 3,
-    "zkRetryInterval" : 3000
+  "zkConfig": {
+    "zkQuorum": "localhost:2181",
+    "zkRoot": "/alert",
+    "zkSessionTimeoutMs": 10000,
+    "connectionTimeoutMs": 10000,
+    "zkRetryTimes": 3,
+    "zkRetryInterval": 3000
   },
-  "dynamicConfigSource" : {
+  "dynamicConfigSource": {
     "initDelayMillis": 3000,
-    "delayMillis" : 10000
+    "delayMillis": 10000
   },
   "metadataService": {
-	"context" : "/rest",
-	"host" : "localhost",
-	"port" : 8080
+    "context": "/rest",
+    "host": "localhost",
+    "port": 8080
   },
   "coordinatorService": {
-  	"host": "localhost",
-  	"port": "8080",
-  	"context" : "/rest"
+    "host": "localhost",
+    "port": "8080",
+    "context": "/rest"
   },
   "kafkaProducer": {
-  	"bootstrapServers": "localhost:9092"
+    "bootstrapServers": "localhost:9092"
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/datasources.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/datasources.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/datasources.json
index 6d745a9..09d1b97 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/datasources.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/datasources.json
@@ -1,21 +1,19 @@
 [
-
-{
-	"name": "network_syslog_datasource",
-	"type": "KAFKA",
-	"properties": {
-	},
-	"topic": "syslog_events",
-	"schemeCls": "org.apache.eagle.alert.engine.extension.SherlockEventScheme",
-	"codec": {
-		"streamNameSelectorProp": {
-			"userProvidedStreamName" : "syslog_stream",
-			"streamNameFormat":"%s"
-		},
-		"streamNameSelectorCls":"org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
-		"timestampColumn": "timestamp",
-		"timestampFormat":""
-	}
-}
-
+  {
+    "name": "network_syslog_datasource",
+    "type": "KAFKA",
+    "properties": {
+    },
+    "topic": "syslog_events",
+    "schemeCls": "org.apache.eagle.alert.engine.extension.SherlockEventScheme",
+    "codec": {
+      "streamNameSelectorProp": {
+        "userProvidedStreamName": "syslog_stream",
+        "streamNameFormat": "%s"
+      },
+      "streamNameSelectorCls": "org.apache.eagle.alert.engine.scheme.JsonStringStreamNameSelector",
+      "timestampColumn": "timestamp",
+      "timestampFormat": ""
+    }
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/policies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/policies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/policies.json
index ba013b2..0848585 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/policies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/policies.json
@@ -1,28 +1,26 @@
 [
-
-{
-	"name": "syslog_severity_check",
-	"description" : "syslog.severity > 3 then error",
-	"inputStreams": [
-		"syslog_stream"
-	],
-	"outputStreams": [
-		"syslog_severity_check_output"
-	],
-	"definition": {
-		"type": "siddhi",
-		"value": "from syslog_stream[dims_severity == \"NOTICE\"] select * insert into syslog_severity_check_output;"
-	},
-	"partitionSpec": [
-		{
-			"streamId" : "syslog_stream",
-			"type" : "GROUPBY",
-			"columns" : [
-				"dims_hostname"
-			]
-		}
-	],
-	"parallelismHint": 10
-}
-
+  {
+    "name": "syslog_severity_check",
+    "description": "syslog.severity > 3 then error",
+    "inputStreams": [
+      "syslog_stream"
+    ],
+    "outputStreams": [
+      "syslog_severity_check_output"
+    ],
+    "definition": {
+      "type": "siddhi",
+      "value": "from syslog_stream[dims_severity == \"NOTICE\"] select * insert into syslog_severity_check_output;"
+    },
+    "partitionSpec": [
+      {
+        "streamId": "syslog_stream",
+        "type": "GROUPBY",
+        "columns": [
+          "dims_hostname"
+        ]
+      }
+    ],
+    "parallelismHint": 10
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/publishments.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/publishments.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/publishments.json
index a9b85b8..0d56012 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/publishments.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/publishments.json
@@ -1,17 +1,17 @@
 [
-
-{
-  "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
-  "name":"network-syslog-publish",
-  "policyIds": ["syslog_severity_check"],
-  "dedupIntervalMin": "PT0M",
-  "properties":{
-    "kafka_broker":"localhost:9092",
-    "topic":"syslog_alerts",
-    "value_deserializer": "org.apache.kafka.common.serialization.ByteArrayDeserializer",
-    "value_serializer": "org.apache.kafka.common.serialization.ByteArraySerializer"
-  },
-  "serializer" : "org.apache.eagle.alert.engine.extension.SherlockAlertSerializer"
-}
-
+  {
+    "type": "org.apache.eagle.alert.engine.publisher.impl.AlertKafkaPublisher",
+    "name": "network-syslog-publish",
+    "policyIds": [
+      "syslog_severity_check"
+    ],
+    "dedupIntervalMin": "PT0M",
+    "properties": {
+      "kafka_broker": "localhost:9092",
+      "topic": "syslog_alerts",
+      "value_deserializer": "org.apache.kafka.common.serialization.ByteArrayDeserializer",
+      "value_serializer": "org.apache.kafka.common.serialization.ByteArraySerializer"
+    },
+    "serializer": "org.apache.eagle.alert.engine.extension.SherlockAlertSerializer"
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/sherlock.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/sherlock.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/sherlock.json
index a0eac01..ec5a13b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/sherlock.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/sherlock.json
@@ -1,4 +1,5 @@
-{"SchemaCompModel": {
+{
+  "SchemaCompModel": {
     "syslog": {
       "demo": {
         "tsdType": "SherlockLog",

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/streamdefinitions.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/streamdefinitions.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/streamdefinitions.json
index fafa8aa..082e068 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/streamdefinitions.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/streamdefinitions.json
@@ -1,76 +1,83 @@
 [
-
-{
-	"streamId": "syslog_stream",
-	"dataSource" : "network_syslog_datasource",
-	"description":"the data stream for syslog events",
-	"validate": false,
-	"timeseries":false,
-	"columns": [
-		{
-			"name": "dims_facility",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "dims_severity",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "dims_hostname",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},
-		{
-			"name": "dims_msgid",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "timestamp",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "conn",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "op",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "msgId",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required":true
-		},{
-			"name": "command",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "name",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "namespace",
-			"type" : "STRING",
-			"defaultValue": "",
-			"required": true
-		},{
-			"name": "epochMillis",
-			"type" : "LONG",
-			"defaultValue": 0,
-			"required": true
-		}
-	]
-}
-
+  {
+    "streamId": "syslog_stream",
+    "dataSource": "network_syslog_datasource",
+    "description": "the data stream for syslog events",
+    "validate": false,
+    "timeseries": false,
+    "columns": [
+      {
+        "name": "dims_facility",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_severity",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_hostname",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "dims_msgid",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "timestamp",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "conn",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "op",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "msgId",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "command",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "name",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "namespace",
+        "type": "STRING",
+        "defaultValue": "",
+        "required": true
+      },
+      {
+        "name": "epochMillis",
+        "type": "LONG",
+        "defaultValue": 0,
+        "required": true
+      }
+    ]
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/topologies.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/topologies.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/topologies.json
index 9aa8716..c865746 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/topologies.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/e2e/topologies.json
@@ -1,31 +1,31 @@
 [
-{
-	"name": "alertUnitTopology_2",
-	"numOfSpout":1,
-	"numOfGroupBolt": 4,
-	"numOfAlertBolt": 10,
-	"spoutId": "alertEngineSpout",
-	"groupNodeIds" : [
-		"streamRouterBolt0",
-		"streamRouterBolt1",
-		"streamRouterBolt2",
-		"streamRouterBolt3"
-	],
-	"alertBoltIds": [
-		"alertBolt0",
-		"alertBolt1",
-		"alertBolt2",
-		"alertBolt3",
-		"alertBolt4",
-		"alertBolt5",
-		"alertBolt6",
-		"alertBolt7",
-		"alertBolt8",
-		"alertBolt9"
-	],
-	"pubBoltId" : "alertPublishBolt",
-	"spoutParallelism": 1,
-	"groupParallelism": 1,
-	"alertParallelism": 1
-}
+  {
+    "name": "alertUnitTopology_2",
+    "numOfSpout": 1,
+    "numOfGroupBolt": 4,
+    "numOfAlertBolt": 10,
+    "spoutId": "alertEngineSpout",
+    "groupNodeIds": [
+      "streamRouterBolt0",
+      "streamRouterBolt1",
+      "streamRouterBolt2",
+      "streamRouterBolt3"
+    ],
+    "alertBoltIds": [
+      "alertBolt0",
+      "alertBolt1",
+      "alertBolt2",
+      "alertBolt3",
+      "alertBolt4",
+      "alertBolt5",
+      "alertBolt6",
+      "alertBolt7",
+      "alertBolt8",
+      "alertBolt9"
+    ],
+    "pubBoltId": "alertPublishBolt",
+    "spoutParallelism": 1,
+    "groupParallelism": 1,
+    "alertParallelism": 1
+  }
 ]


[04/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/MapDBTestSuite.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/MapDBTestSuite.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/MapDBTestSuite.java
index 613be00..ebec509 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/MapDBTestSuite.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/MapDBTestSuite.java
@@ -25,19 +25,19 @@ import org.mapdb.Serializer;
 
 public class MapDBTestSuite {
     @Test
-    public void testOnHeapDB(){
+    public void testOnHeapDB() {
         DB db = DBMaker.heapDB().make();
-        BTreeMap<Long,String> map = db.treeMap("btree").keySerializer(Serializer.LONG).valueSerializer(Serializer.STRING).create();
-        Assert.assertFalse(map.putIfAbsentBoolean(1L,"val_1"));
-        Assert.assertTrue(map.putIfAbsentBoolean(1L,"val_2"));
-        Assert.assertTrue(map.putIfAbsentBoolean(1L,"val_3"));
-        Assert.assertFalse(map.putIfAbsentBoolean(2L,"val_4"));
+        BTreeMap<Long, String> map = db.treeMap("btree").keySerializer(Serializer.LONG).valueSerializer(Serializer.STRING).create();
+        Assert.assertFalse(map.putIfAbsentBoolean(1L, "val_1"));
+        Assert.assertTrue(map.putIfAbsentBoolean(1L, "val_2"));
+        Assert.assertTrue(map.putIfAbsentBoolean(1L, "val_3"));
+        Assert.assertFalse(map.putIfAbsentBoolean(2L, "val_4"));
 
-        Assert.assertEquals("val_1",map.get(1L));
-        Assert.assertEquals("val_4",map.get(2L));
+        Assert.assertEquals("val_1", map.get(1L));
+        Assert.assertEquals("val_4", map.get(2L));
 
-        Assert.assertTrue(map.replace(2L,"val_4","val_5"));
-        Assert.assertEquals("val_5",map.get(2L));
+        Assert.assertTrue(map.replace(2L, "val_4", "val_5"));
+        Assert.assertEquals("val_5", map.get(2L));
 
         map.close();
         db.close();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamSortHandlerTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamSortHandlerTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamSortHandlerTest.java
index 6cadba7..98657e7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamSortHandlerTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamSortHandlerTest.java
@@ -16,14 +16,12 @@
  */
 package org.apache.eagle.alert.engine.sorter;
 
-import java.lang.management.ManagementFactory;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.TimeUnit;
-
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.ScheduledReporter;
+import com.codahale.metrics.Slf4jReporter;
+import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
+import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+import com.google.common.collect.Ordering;
 import org.apache.commons.lang.time.StopWatch;
 import org.apache.eagle.alert.engine.mock.MockPartitionedCollector;
 import org.apache.eagle.alert.engine.mock.MockSampleMetadataFactory;
@@ -38,12 +36,9 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.ScheduledReporter;
-import com.codahale.metrics.Slf4jReporter;
-import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
-import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
-import com.google.common.collect.Ordering;
+import java.lang.management.ManagementFactory;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
  * -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+PrintGCTaskTimeStamps -XX:+PrintGCDetails -verbose:gc
@@ -56,23 +51,24 @@ public class StreamSortHandlerTest {
     }
 
     private ScheduledReporter metricReporter;
+
     @Before
-    public void setUp(){
+    public void setUp() {
         final MetricRegistry metrics = new MetricRegistry();
         metrics.registerAll(new MemoryUsageGaugeSet());
         metrics.registerAll(new GarbageCollectorMetricSet());
         metricReporter = Slf4jReporter.forRegistry(metrics)
-                .filter((name, metric) -> name.matches("(.*heap|pools.PS.*).usage"))
-                .withLoggingLevel(Slf4jReporter.LoggingLevel.DEBUG)
-                .convertRatesTo(TimeUnit.SECONDS)
-                .convertDurationsTo(TimeUnit.MILLISECONDS)
-                .build();
-        metricReporter.start(60,TimeUnit.SECONDS);
+            .filter((name, metric) -> name.matches("(.*heap|pools.PS.*).usage"))
+            .withLoggingLevel(Slf4jReporter.LoggingLevel.DEBUG)
+            .convertRatesTo(TimeUnit.SECONDS)
+            .convertDurationsTo(TimeUnit.MILLISECONDS)
+            .build();
+        metricReporter.start(60, TimeUnit.SECONDS);
     }
 
     /**
      * Used to debug window bucket lifecycle
-     *
+     * <p>
      * Window period: PT1s, margin: 5s
      *
      * @throws InterruptedException
@@ -83,18 +79,18 @@ public class StreamSortHandlerTest {
         StreamTimeClockInLocalMemory timeClock = new StreamTimeClockInLocalMemory("sampleStream_1");
         Ordering<PartitionedEvent> timeOrdering = Ordering.from(PartitionedEventTimeOrderingComparator.INSTANCE);
         StreamSortWindowHandlerImpl sortHandler = new StreamSortWindowHandlerImpl();
-        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1m",5000),mockCollector);
+        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1m", 5000), mockCollector);
         List<PartitionedEvent> unsortedList = new LinkedList<>();
 
         int i = 0;
-        while(i<1000) {
+        while (i < 1000) {
             PartitionedEvent event = MockSampleMetadataFactory.createRandomOutOfTimeOrderEventGroupedByName("sampleStream_1");
             sortHandler.nextEvent(event);
             unsortedList.add(event);
-            if(event.getTimestamp()>timeClock.getTime()) {
+            if (event.getTimestamp() > timeClock.getTime()) {
                 timeClock.moveForward(event.getTimestamp());
             }
-            sortHandler.onTick(timeClock,System.currentTimeMillis());
+            sortHandler.onTick(timeClock, System.currentTimeMillis());
             i++;
         }
         sortHandler.close();
@@ -114,24 +110,24 @@ public class StreamSortHandlerTest {
         StreamTimeClockInLocalMemory timeClock = new StreamTimeClockInLocalMemory("sampleStream_1");
         Ordering<PartitionedEvent> timeOrdering = Ordering.from(PartitionedEventTimeOrderingComparator.INSTANCE);
         StreamSortWindowHandlerImpl sortHandler = new StreamSortWindowHandlerImpl();
-        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1h",5000),mockCollector);
+        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1h", 5000), mockCollector);
         List<PartitionedEvent> sortedList = new LinkedList<>();
 
         int i = 0;
-        while(i<1000000) {
-            PartitionedEvent event = MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",System.currentTimeMillis()+i);
+        while (i < 1000000) {
+            PartitionedEvent event = MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", System.currentTimeMillis() + i);
             sortHandler.nextEvent(event);
             sortedList.add(event);
-            if(event.getTimestamp()>timeClock.getTime()) {
+            if (event.getTimestamp() > timeClock.getTime()) {
                 timeClock.moveForward(event.getTimestamp());
             }
-            sortHandler.onTick(timeClock,System.currentTimeMillis());
+            sortHandler.onTick(timeClock, System.currentTimeMillis());
             i++;
         }
         sortHandler.close();
         Assert.assertTrue(timeOrdering.isOrdered(sortedList));
         Assert.assertTrue(timeOrdering.isOrdered(mockCollector.get()));
-        Assert.assertEquals(1000000,mockCollector.get().size());
+        Assert.assertEquals(1000000, mockCollector.get().size());
     }
 
     /**
@@ -159,33 +155,33 @@ public class StreamSortHandlerTest {
         StreamTimeClockInLocalMemory timeClock = new StreamTimeClockInLocalMemory("sampleStream_1");
         Ordering<PartitionedEvent> timeOrdering = Ordering.from(PartitionedEventTimeOrderingComparator.INSTANCE);
         StreamSortWindowHandlerImpl sortHandler = new StreamSortWindowHandlerImpl();
-        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1h",5000),mockCollector);
+        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1h", 5000), mockCollector);
         List<PartitionedEvent> unsortedList = new LinkedList<>();
 
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
         int i = 0;
-        while(i<count) {
+        while (i < count) {
             PartitionedEvent event = MockSampleMetadataFactory.createRandomOutOfTimeOrderEventGroupedByName("sampleStream_1");
             sortHandler.nextEvent(event);
             unsortedList.add(event);
-            if(event.getEvent().getTimestamp()>timeClock.getTime()) {
+            if (event.getEvent().getTimestamp() > timeClock.getTime()) {
                 timeClock.moveForward(event.getEvent().getTimestamp());
             }
-            sortHandler.onTick(timeClock,System.currentTimeMillis());
+            sortHandler.onTick(timeClock, System.currentTimeMillis());
             i++;
         }
         stopWatch.stop();
-        LOG.info("Produced {} events in {} ms",count,stopWatch.getTime());
+        LOG.info("Produced {} events in {} ms", count, stopWatch.getTime());
         sortHandler.close();
         Assert.assertFalse(timeOrdering.isOrdered(unsortedList));
         Assert.assertTrue(timeOrdering.isOrdered(mockCollector.get()));
-        Assert.assertTrue(mockCollector.get().size()>=0);
+        Assert.assertTrue(mockCollector.get().size() >= 0);
     }
 
     /**
      * Used to debug window bucket lifecycle
-     *
+     * <p>
      * Window period: PT1h, margin: 5s
      *
      * @throws InterruptedException
@@ -196,29 +192,29 @@ public class StreamSortHandlerTest {
         StreamTimeClockInLocalMemory timeClock = new StreamTimeClockInLocalMemory("sampleStream_1");
         Ordering<PartitionedEvent> timeOrdering = Ordering.from(PartitionedEventTimeOrderingComparator.INSTANCE);
         StreamSortWindowHandlerImpl sortHandler = new StreamSortWindowHandlerImpl();
-        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1h",5000),mockCollector);
+        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT1h", 5000), mockCollector);
         List<PartitionedEvent> sortedList = new LinkedList<>();
 
         int i = 0;
-        while(i<1000000) {
-            PartitionedEvent event = MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",System.currentTimeMillis()+i);
+        while (i < 1000000) {
+            PartitionedEvent event = MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", System.currentTimeMillis() + i);
             sortHandler.nextEvent(event);
             sortedList.add(event);
-            if(event.getTimestamp()>timeClock.getTime()) {
+            if (event.getTimestamp() > timeClock.getTime()) {
                 timeClock.moveForward(event.getTimestamp());
             }
-            sortHandler.onTick(timeClock,System.currentTimeMillis());
+            sortHandler.onTick(timeClock, System.currentTimeMillis());
             i++;
         }
         sortHandler.close();
         Assert.assertTrue(timeOrdering.isOrdered(sortedList));
         Assert.assertTrue(timeOrdering.isOrdered(mockCollector.get()));
-        Assert.assertEquals(1000000,mockCollector.get().size());
+        Assert.assertEquals(1000000, mockCollector.get().size());
     }
 
     /**
      * Used to debug window bucket lifecycle
-     *
+     * <p>
      * Window period: PT1h, margin: 5s
      *
      * @throws InterruptedException
@@ -229,26 +225,26 @@ public class StreamSortHandlerTest {
         StreamTimeClockInLocalMemory timeClock = new StreamTimeClockInLocalMemory("sampleStream_1");
         Ordering<PartitionedEvent> timeOrdering = Ordering.from(PartitionedEventTimeOrderingComparator.INSTANCE);
         StreamSortWindowHandlerImpl sortHandler = new StreamSortWindowHandlerImpl();
-        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT10s",1000),mockCollector);
+        sortHandler.prepare("sampleStream_1", MockSampleMetadataFactory.createSampleStreamSortSpec("sampleStream_1", "PT10s", 1000), mockCollector);
         List<PartitionedEvent> sortedList = new LinkedList<>();
 
         PartitionedEvent event = MockSampleMetadataFactory.createRandomSortedEventGroupedByName("sampleStream_1");
         sortHandler.nextEvent(event);
         sortedList.add(event);
         timeClock.moveForward(event.getTimestamp());
-        sortHandler.onTick(timeClock,System.currentTimeMillis());
+        sortHandler.onTick(timeClock, System.currentTimeMillis());
 
         // Triggered to become expired by System time
-        sortHandler.onTick(timeClock,System.currentTimeMillis()+10*1000+1000L + 1);
+        sortHandler.onTick(timeClock, System.currentTimeMillis() + 10 * 1000 + 1000L + 1);
 
         Assert.assertTrue(timeOrdering.isOrdered(sortedList));
         Assert.assertTrue(timeOrdering.isOrdered(mockCollector.get()));
-        Assert.assertEquals(1,mockCollector.get().size());
+        Assert.assertEquals(1, mockCollector.get().size());
 
         sortHandler.close();
     }
 
-//    @Test
+    //    @Test
     public void testWithTimerLock() throws InterruptedException {
         Timer timer = new Timer();
         List<Long> collected = new ArrayList<>();
@@ -265,6 +261,6 @@ public class StreamSortHandlerTest {
                     }
                 }
             }
-        },0,100);
+        }, 0, 100);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowBenchmarkTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowBenchmarkTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowBenchmarkTest.java
index a2f0da6..3d32d72 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowBenchmarkTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowBenchmarkTest.java
@@ -16,10 +16,11 @@
  */
 package org.apache.eagle.alert.engine.sorter;
 
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
-
+import com.codahale.metrics.ConsoleReporter;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.ScheduledReporter;
+import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
+import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
 import org.apache.commons.lang.time.StopWatch;
 import org.apache.eagle.alert.engine.mock.MockSampleMetadataFactory;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
@@ -31,115 +32,120 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.codahale.metrics.ConsoleReporter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.ScheduledReporter;
-import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
-import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
 
 @Ignore("Ignore automatic heavy benchmark test")
 public class StreamWindowBenchmarkTest {
     private final static Logger LOGGER = LoggerFactory.getLogger(StreamWindowBenchmarkTest.class);
+
     public void sendDESCOrderedEventsToWindow(StreamWindow window, StreamWindowRepository.StorageType storageType, int num) {
-        LOGGER.info("Sending {} events to {} ({})",num,window.getClass().getSimpleName(),storageType);
+        LOGGER.info("Sending {} events to {} ({})", num, window.getClass().getSimpleName(), storageType);
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
-        int i=0;
-        while(i<num) {
-            PartitionedEvent event = MockSampleMetadataFactory.createPartitionedEventGroupedByName("sampleStream_1",(window.startTime()+i));
+        int i = 0;
+        while (i < num) {
+            PartitionedEvent event = MockSampleMetadataFactory.createPartitionedEventGroupedByName("sampleStream_1", (window.startTime() + i));
             window.add(event);
             i++;
         }
         stopWatch.stop();
-        performanceReport.put(num+"\tInsertTime\t"+storageType,stopWatch.getTime());
-        LOGGER.info("Inserted {} events in {} ms",num,stopWatch.getTime());
+        performanceReport.put(num + "\tInsertTime\t" + storageType, stopWatch.getTime());
+        LOGGER.info("Inserted {} events in {} ms", num, stopWatch.getTime());
         stopWatch.reset();
         stopWatch.start();
         window.flush();
         stopWatch.stop();
-        performanceReport.put(num+"\tReadTime\t"+storageType,stopWatch.getTime());
+        performanceReport.put(num + "\tReadTime\t" + storageType, stopWatch.getTime());
     }
 
     private ScheduledReporter metricReporter;
-    private Map<String,Long> performanceReport;
+    private Map<String, Long> performanceReport;
+
     @Before
-    public void setUp(){
+    public void setUp() {
         final MetricRegistry metrics = new MetricRegistry();
         metrics.registerAll(new MemoryUsageGaugeSet());
         metrics.registerAll(new GarbageCollectorMetricSet());
         metricReporter = ConsoleReporter.forRegistry(metrics)
-                .filter((name, metric) -> name.matches("(.*heap|total).(usage|used)"))
+            .filter((name, metric) -> name.matches("(.*heap|total).(usage|used)"))
 //                .withLoggingLevel(Slf4jReporter.LoggingLevel.DEBUG)
-                .convertRatesTo(TimeUnit.SECONDS)
-                .convertDurationsTo(TimeUnit.MILLISECONDS)
-                .build();
-        metricReporter.start(60,TimeUnit.SECONDS);
+            .convertRatesTo(TimeUnit.SECONDS)
+            .convertDurationsTo(TimeUnit.MILLISECONDS)
+            .build();
+        metricReporter.start(60, TimeUnit.SECONDS);
         performanceReport = new TreeMap<>();
     }
 
     @After
-    public void after(){
+    public void after() {
         StringBuilder sb = new StringBuilder();
-        for(Map.Entry<String,Long> entry:performanceReport.entrySet()){
-            sb.append(String.format("%-40s\t%s\n",entry.getKey(),entry.getValue()));
+        for (Map.Entry<String, Long> entry : performanceReport.entrySet()) {
+            sb.append(String.format("%-40s\t%s\n", entry.getKey(), entry.getValue()));
         }
-        LOGGER.info("\n===== Benchmark Result Report =====\n\n{}",sb.toString());
+        LOGGER.info("\n===== Benchmark Result Report =====\n\n{}", sb.toString());
     }
 
     private final long start = DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000");
     private final long stop = DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-05 00:00:00,000");
-    private final long margin = (stop - start)/3;
+    private final long margin = (stop - start) / 3;
 
-    private void benchmarkTest(StreamWindow window, StreamWindowRepository.StorageType storageType){
+    private void benchmarkTest(StreamWindow window, StreamWindowRepository.StorageType storageType) {
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
-        LOGGER.info("\n===== Benchmark Test for {} ({}) =====",window.getClass().getSimpleName(),storageType);
+        LOGGER.info("\n===== Benchmark Test for {} ({}) =====", window.getClass().getSimpleName(), storageType);
         metricReporter.report();
-        sendDESCOrderedEventsToWindow(window,storageType,1000);
+        sendDESCOrderedEventsToWindow(window, storageType, 1000);
         metricReporter.report();
-        sendDESCOrderedEventsToWindow(window,storageType,10000);
+        sendDESCOrderedEventsToWindow(window, storageType, 10000);
         metricReporter.report();
-        sendDESCOrderedEventsToWindow(window,storageType,100000);
+        sendDESCOrderedEventsToWindow(window, storageType, 100000);
         metricReporter.report();
-        sendDESCOrderedEventsToWindow(window,storageType,1000000);
+        sendDESCOrderedEventsToWindow(window, storageType, 1000000);
         metricReporter.report();
         stopWatch.stop();
-        LOGGER.info("\n===== Finished in total {} ms =====\n",stopWatch.getTime());
+        LOGGER.info("\n===== Finished in total {} ms =====\n", stopWatch.getTime());
     }
 
-    @Test @Ignore
-    public void testStreamWindowBenchmarkMain(){
+    @Test
+    @Ignore
+    public void testStreamWindowBenchmarkMain() {
         testStreamSortedWindowOnHeap();
         testStreamSortedWindowInSerializedMemory();
         testStreamSortedWindowOffHeap();
         testStreamSortedWindowFile();
     }
 
-    @Test @Ignore
+    @Test
+    @Ignore
     public void testStreamSortedWindowOnHeap() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.ONHEAP);
-        benchmarkTest(window,StreamWindowRepository.StorageType.ONHEAP);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.ONHEAP);
+        benchmarkTest(window, StreamWindowRepository.StorageType.ONHEAP);
         window.close();
     }
 
-    @Test @Ignore
+    @Test
+    @Ignore
     public void testStreamSortedWindowInSerializedMemory() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.MEMORY);
-        benchmarkTest(window,StreamWindowRepository.StorageType.MEMORY);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.MEMORY);
+        benchmarkTest(window, StreamWindowRepository.StorageType.MEMORY);
         window.close();
     }
 
-    @Test @Ignore
+    @Test
+    @Ignore
     public void testStreamSortedWindowOffHeap() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.DIRECT_MEMORY);
-        benchmarkTest(window,StreamWindowRepository.StorageType.DIRECT_MEMORY);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.DIRECT_MEMORY);
+        benchmarkTest(window, StreamWindowRepository.StorageType.DIRECT_MEMORY);
         window.close();
     }
 
-    @Test @Ignore
+    @Test
+    @Ignore
     public void testStreamSortedWindowFile() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.FILE_RAF);
-        benchmarkTest(window,StreamWindowRepository.StorageType.FILE_RAF);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.FILE_RAF);
+        benchmarkTest(window, StreamWindowRepository.StorageType.FILE_RAF);
         window.close();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowTestSuite.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowTestSuite.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowTestSuite.java
index 950aa34..6dc9c9f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowTestSuite.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/StreamWindowTestSuite.java
@@ -16,8 +16,7 @@
  */
 package org.apache.eagle.alert.engine.sorter;
 
-import java.util.List;
-
+import com.google.common.collect.Ordering;
 import org.apache.eagle.alert.engine.mock.MockPartitionedCollector;
 import org.apache.eagle.alert.engine.mock.MockSampleMetadataFactory;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
@@ -29,7 +28,7 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.Ordering;
+import java.util.List;
 
 @SuppressWarnings("unused")
 public class StreamWindowTestSuite {
@@ -37,34 +36,34 @@ public class StreamWindowTestSuite {
 
     private final long start = DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000");
     private final long stop = DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:00,000");
-    private final long margin = (stop - start)/3;
+    private final long margin = (stop - start) / 3;
 
     @Test
     public void testStreamSortedWindowOnHeap() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.ONHEAP);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.ONHEAP);
         streamSortedWindowMustTest(window);
     }
 
     @Test
     public void testStreamSortedWindowInSerializedMemory() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.MEMORY);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.MEMORY);
         streamSortedWindowMustTest(window);
     }
 
     @Test
     public void testStreamSortedWindowOffHeap() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.DIRECT_MEMORY);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.DIRECT_MEMORY);
         streamSortedWindowMustTest(window);
     }
 
     @Test
     public void testStreamSortedWindowFile() {
-        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start,stop,margin,StreamWindowRepository.StorageType.FILE_RAF);
+        StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(start, stop, margin, StreamWindowRepository.StorageType.FILE_RAF);
         streamSortedWindowMustTest(window);
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    private void streamSortedWindowMustTest(StreamWindow window){
+    @SuppressWarnings( {"unchecked", "rawtypes"})
+    private void streamSortedWindowMustTest(StreamWindow window) {
         MockPartitionedCollector collector = new MockPartitionedCollector();
         window.register(collector);
 
@@ -72,7 +71,7 @@ public class StreamWindowTestSuite {
         clock.moveForward(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:30,000"));
 
         // Current time is: "2016-05-04 00:00:30"
-        window.onTick(clock,System.currentTimeMillis());
+        window.onTick(clock, System.currentTimeMillis());
 
         Assert.assertTrue(window.alive());
         Assert.assertFalse(window.expired());
@@ -91,74 +90,74 @@ public class StreamWindowTestSuite {
         Assert.assertFalse(window.accept(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:01,000")));
 
         // Accepted
-        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"))));
+        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"))));
 
-        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:01,000"))));
-        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:50,000"))));
-        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:40,000"))));
-        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:30,000"))));
+        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:01,000"))));
+        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:50,000"))));
+        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:40,000"))));
+        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:30,000"))));
 
         // Should accept Duplicated
-        Assert.assertTrue("Should support duplicated timestamp",window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"))));
+        Assert.assertTrue("Should support duplicated timestamp", window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"))));
 
-        Assert.assertEquals(6,window.size());
+        Assert.assertEquals(6, window.size());
 
         // Rejected
-        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-03 23:59:59,000"))));
-        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:00,000"))));
-        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:01,000"))));
+        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-03 23:59:59,000"))));
+        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:00,000"))));
+        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:01,000"))));
 
-        Assert.assertEquals(6,window.size());
+        Assert.assertEquals(6, window.size());
 
         // Now is: "2016-05-04 00:00:55"
         clock.moveForward(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:55,000"));
-        window.onTick(clock,System.currentTimeMillis());
+        window.onTick(clock, System.currentTimeMillis());
         Assert.assertTrue(window.alive());
         Assert.assertFalse(window.expired());
-        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:35,000"))));
-        Assert.assertEquals(7,window.size());
+        Assert.assertTrue(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:35,000"))));
+        Assert.assertEquals(7, window.size());
 
         // Flush when stream time delay too much after system time but window will still be alive
-        window.onTick(clock,System.currentTimeMillis() + 1 + stop - start + margin);
+        window.onTick(clock, System.currentTimeMillis() + 1 + stop - start + margin);
         Assert.assertTrue(window.alive());
         Assert.assertFalse(window.expired());
-        Assert.assertEquals(0,window.size());
-        Assert.assertEquals(7,collector.size());
+        Assert.assertEquals(0, window.size());
+        Assert.assertEquals(7, collector.size());
 
         Assert.assertFalse("Because window has flushed but not expired, window should reject future events < last flush stream time",
-                window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:54,000"))));
+            window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:54,000"))));
         Assert.assertTrue("Because window has flushed but not expired, window should still accept future events >= last flush stream time",
-                window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:56,000"))));
-        Assert.assertEquals(1,window.size());
-        Assert.assertEquals(7,collector.size());
+            window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:56,000"))));
+        Assert.assertEquals(1, window.size());
+        Assert.assertEquals(7, collector.size());
 
         // Now is: "2016-05-04 00:01:10", not expire,
         clock.moveForward(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:10,000"));
-        window.onTick(clock,System.currentTimeMillis() + 2 * (1+ stop - start + margin));
-        Assert.assertEquals(8,collector.size());
+        window.onTick(clock, System.currentTimeMillis() + 2 * (1 + stop - start + margin));
+        Assert.assertEquals(8, collector.size());
 
         // Now is: "2016-05-04 00:01:20", expire
         clock.moveForward(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:01:20,000"));
-        window.onTick(clock,System.currentTimeMillis());
+        window.onTick(clock, System.currentTimeMillis());
         Assert.assertFalse(window.alive());
         Assert.assertTrue(window.expired());
-        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1",DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:35,000"))));
-        Assert.assertEquals(0,window.size());
+        Assert.assertFalse(window.add(MockSampleMetadataFactory.createRandomPartitionedEvent("sampleStream_1", DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:35,000"))));
+        Assert.assertEquals(0, window.size());
 
-        Assert.assertEquals(8,collector.size());
+        Assert.assertEquals(8, collector.size());
 
         Ordering ordering = Ordering.from(PartitionedEventTimeOrderingComparator.INSTANCE);
         Assert.assertTrue(ordering.isOrdered(collector.get()));
 
         List<PartitionedEvent> list = collector.get();
-        Assert.assertEquals(8,list.size());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"),list.get(0).getTimestamp());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"),list.get(1).getTimestamp());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:01,000"),list.get(2).getTimestamp());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:30,000"),list.get(3).getTimestamp());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:35,000"),list.get(4).getTimestamp());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:40,000"),list.get(5).getTimestamp());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:50,000"),list.get(6).getTimestamp());
-        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:56,000"),list.get(7).getTimestamp());
+        Assert.assertEquals(8, list.size());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"), list.get(0).getTimestamp());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:00,000"), list.get(1).getTimestamp());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:01,000"), list.get(2).getTimestamp());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:30,000"), list.get(3).getTimestamp());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:35,000"), list.get(4).getTimestamp());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:40,000"), list.get(5).getTimestamp());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:50,000"), list.get(6).getTimestamp());
+        Assert.assertEquals(DateTimeUtil.humanDateToMillisecondsWithoutException("2016-05-04 00:00:56,000"), list.get(7).getTimestamp());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/TreeMultisetComparatorTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/TreeMultisetComparatorTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/TreeMultisetComparatorTest.java
index b7e76b8..c59f0de 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/TreeMultisetComparatorTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/sorter/TreeMultisetComparatorTest.java
@@ -16,9 +16,7 @@
  */
 package org.apache.eagle.alert.engine.sorter;
 
-import java.util.Arrays;
-import java.util.Iterator;
-
+import com.google.common.collect.TreeMultiset;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
@@ -26,7 +24,8 @@ import org.apache.eagle.alert.engine.sorter.impl.PartitionedEventTimeOrderingCom
 import org.junit.Assert;
 import org.junit.Test;
 
-import com.google.common.collect.TreeMultiset;
+import java.util.Arrays;
+import java.util.Iterator;
 
 /**
  * Since 5/10/16.
@@ -37,7 +36,7 @@ public class TreeMultisetComparatorTest {
      * when they are added into TreeMultiset, the second event will be replaced by the first event
      */
     @Test
-    public void testComparator(){
+    public void testComparator() {
         TreeMultiset<PartitionedEvent> set = TreeMultiset.create(PartitionedEventTimeOrderingComparator.INSTANCE);
 
         // construct PartitionEvent1
@@ -50,7 +49,7 @@ public class TreeMultisetComparatorTest {
         event1.setPartition(sp);
         event1.setPartitionKey(1000);
         StreamEvent e1 = new StreamEvent();
-        e1.setData(new Object[]{18.4});
+        e1.setData(new Object[] {18.4});
         e1.setStreamId("testStreamId");
         e1.setTimestamp(1462909984000L);
         event1.setEvent(e1);
@@ -60,7 +59,7 @@ public class TreeMultisetComparatorTest {
         event2.setPartition(sp);
         event2.setPartitionKey(1000);
         StreamEvent e2 = new StreamEvent();
-        e2.setData(new Object[]{16.3});
+        e2.setData(new Object[] {16.3});
         e2.setStreamId("testStreamId");
         e2.setTimestamp(1462909984000L);
         event2.setEvent(e2);
@@ -70,7 +69,7 @@ public class TreeMultisetComparatorTest {
         event3.setPartition(sp);
         event3.setPartitionKey(1000);
         StreamEvent e3 = new StreamEvent();
-        e3.setData(new Object[]{14.3});
+        e3.setData(new Object[] {14.3});
         e3.setStreamId("testStreamId");
         e3.setTimestamp(1462909984001L);
         event3.setEvent(e3);
@@ -79,13 +78,13 @@ public class TreeMultisetComparatorTest {
         event4.setPartition(sp);
         event4.setPartitionKey(1000);
         StreamEvent e4 = new StreamEvent();
-        e4.setData(new Object[]{14.3});
+        e4.setData(new Object[] {14.3});
         e4.setStreamId("testStreamId");
         e4.setTimestamp(1462909984001L);
         event4.setEvent(e4);
 
-        Assert.assertNotEquals(event2,event3);
-        Assert.assertEquals(event3,event4);
+        Assert.assertNotEquals(event2, event3);
+        Assert.assertEquals(event3, event4);
 
         // check content in set
         set.add(event1);
@@ -96,15 +95,15 @@ public class TreeMultisetComparatorTest {
         set.forEach(System.out::println);
 
 
-        Assert.assertEquals(-1,PartitionedEventTimeOrderingComparator.INSTANCE.compare(event1,event2));
-        Assert.assertEquals(-1,PartitionedEventTimeOrderingComparator.INSTANCE.compare(event1,event3));
-        Assert.assertEquals(-1,PartitionedEventTimeOrderingComparator.INSTANCE.compare(event2,event3));
-        Assert.assertEquals(0,PartitionedEventTimeOrderingComparator.INSTANCE.compare(event3,event4));
+        Assert.assertEquals(-1, PartitionedEventTimeOrderingComparator.INSTANCE.compare(event1, event2));
+        Assert.assertEquals(-1, PartitionedEventTimeOrderingComparator.INSTANCE.compare(event1, event3));
+        Assert.assertEquals(-1, PartitionedEventTimeOrderingComparator.INSTANCE.compare(event2, event3));
+        Assert.assertEquals(0, PartitionedEventTimeOrderingComparator.INSTANCE.compare(event3, event4));
 
         Iterator<PartitionedEvent> it = set.iterator();
-        Assert.assertEquals(16.3,it.next().getData()[0]);
-        Assert.assertEquals(18.4,it.next().getData()[0]);
-        Assert.assertEquals(14.3,it.next().getData()[0]);
-        Assert.assertEquals(14.3,it.next().getData()[0]);
+        Assert.assertEquals(16.3, it.next().getData()[0]);
+        Assert.assertEquals(18.4, it.next().getData()[0]);
+        Assert.assertEquals(14.3, it.next().getData()[0]);
+        Assert.assertEquals(14.3, it.next().getData()[0]);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/statecheck/TestStateCheckPolicy.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/statecheck/TestStateCheckPolicy.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/statecheck/TestStateCheckPolicy.java
index 8a5d616..1fc54a9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/statecheck/TestStateCheckPolicy.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/statecheck/TestStateCheckPolicy.java
@@ -106,7 +106,7 @@ public class TestStateCheckPolicy {
             mapdata.put("value", 1000.0 + i * 1000.0);
             mapdata.put("colo", "phx");
 
-            StreamEvent event = StreamEvent.Builder().timestamep(time).attributes(mapdata, definition).build();
+            StreamEvent event = StreamEvent.builder().timestamep(time).attributes(mapdata, definition).build();
             PartitionedEvent pEvent = new PartitionedEvent(event, policyDefinition.getPartitionSpec().get(0), 1);
 
             GeneralTopologyContext mock = Mockito.mock(GeneralTopologyContext.class);
@@ -122,12 +122,13 @@ public class TestStateCheckPolicy {
     @NotNull
     private Map<String, StreamDefinition> createStreamMap() throws Exception {
         List<StreamDefinition> streams = mapper.readValue(TestStateCheckPolicy.class.getResourceAsStream("/statecheck/streamdefinitions.json"),
-                new TypeReference<List<StreamDefinition>>() {
-                });
+            new TypeReference<List<StreamDefinition>>() {
+            });
         return streams.stream().collect(Collectors.toMap(StreamDefinition::getStreamId, item -> item));
     }
 
     private static ObjectMapper mapper = new ObjectMapper();
+
     static {
         mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
     }
@@ -139,8 +140,8 @@ public class TestStateCheckPolicy {
         spec.setTopologyName("testTopology");
 
         List<PolicyDefinition> policies = mapper.readValue(TestStateCheckPolicy.class.getResourceAsStream("/statecheck/policies.json"),
-                new TypeReference<List<PolicyDefinition>>() {
-                });
+            new TypeReference<List<PolicyDefinition>>() {
+            });
         Assert.assertTrue(policies.size() > 0);
         spec.addBoltPolicy("alertBolt1", policies.get(0).getName());
         spec.getBoltPoliciesMap().put("alertBolt1", new ArrayList<>(policies));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/AlertTopologyTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/AlertTopologyTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/AlertTopologyTest.java
index 30a0ef9..7212785 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/AlertTopologyTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/AlertTopologyTest.java
@@ -19,10 +19,13 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Properties;
-
+import backtype.storm.LocalCluster;
+import backtype.storm.topology.BoltDeclarer;
+import backtype.storm.topology.SpoutDeclarer;
+import backtype.storm.topology.TopologyBuilder;
+import backtype.storm.tuple.Fields;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.engine.spout.CorrelationSpout;
 import org.apache.eagle.alert.engine.spout.CreateTopicUtils;
 import org.apache.kafka.clients.producer.KafkaProducer;
@@ -34,19 +37,15 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.LocalCluster;
-import backtype.storm.topology.BoltDeclarer;
-import backtype.storm.topology.SpoutDeclarer;
-import backtype.storm.topology.TopologyBuilder;
-import backtype.storm.tuple.Fields;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Properties;
 
-@SuppressWarnings({"serial", "unused"})
-public class AlertTopologyTest implements Serializable{
+@SuppressWarnings( {"serial", "unused"})
+public class AlertTopologyTest implements Serializable {
     private static final Logger LOG = LoggerFactory.getLogger(AlertTopologyTest.class);
     char[] alphabets = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
+
     @Ignore
     @Test
     public void testMultipleTopics() throws Exception {
@@ -83,7 +82,7 @@ public class AlertTopologyTest implements Serializable{
         LocalCluster cluster = new LocalCluster();
         cluster.submitTopology(topoName, new HashMap<>(), topoBuilder.createTopology());
 
-        while(true) {
+        while (true) {
             try {
                 Thread.sleep(1000);
             } catch (Exception e) {
@@ -92,10 +91,10 @@ public class AlertTopologyTest implements Serializable{
         }
     }
 
-    @SuppressWarnings({ "rawtypes", "unchecked" })
+    @SuppressWarnings( {"rawtypes", "unchecked"})
     @Ignore
     @Test
-    public void generateRandomStringsToKafka(){
+    public void generateRandomStringsToKafka() {
         String topic = "testTopic3";
         int max = 1000;
         Properties configMap = new Properties();
@@ -104,33 +103,34 @@ public class AlertTopologyTest implements Serializable{
         configMap.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
         configMap.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
         configMap.put("request.required.acks", "1");
-        configMap.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
-        configMap.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
+        configMap.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
+        configMap.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
         KafkaProducer<String, Object> producer = new KafkaProducer<>(configMap);
 
         int i = 0;
-        while(i++ < max) {
+        while (i++ < max) {
             String randomString = generateRandomString();
             System.out.println("sending string : " + randomString);
             ProducerRecord record = new ProducerRecord(topic, randomString);
             producer.send(record);
-            if(i % 10 == 0){
+            if (i % 10 == 0) {
                 try {
                     Thread.sleep(10);
-                }catch(Exception ex){
+                } catch (Exception ex) {
                 }
             }
         }
         producer.close();
     }
 
-    private String generateRandomString(){
+    private String generateRandomString() {
         long count = Math.round(Math.random() * 10);
-        if(count == 0)
+        if (count == 0) {
             count = 1;
+        }
         StringBuilder sb = new StringBuilder();
-        while(count-- > 0) {
-            int index = (int)(Math.floor(Math.random()*26));
+        while (count-- > 0) {
+            int index = (int) (Math.floor(Math.random() * 26));
             sb.append(alphabets[index]);
         }
         return sb.toString();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CoordinatorSpoutIntegrationTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CoordinatorSpoutIntegrationTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CoordinatorSpoutIntegrationTest.java
index deca9b4..d011770 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CoordinatorSpoutIntegrationTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CoordinatorSpoutIntegrationTest.java
@@ -19,9 +19,15 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.io.Serializable;
-import java.util.HashMap;
-
+import backtype.storm.LocalCluster;
+import backtype.storm.generated.StormTopology;
+import backtype.storm.topology.BoltDeclarer;
+import backtype.storm.topology.SpoutDeclarer;
+import backtype.storm.topology.TopologyBuilder;
+import backtype.storm.tuple.Fields;
+import backtype.storm.utils.Utils;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.engine.spout.CorrelationSpout;
 import org.apache.eagle.alert.engine.spout.CreateTopicUtils;
 import org.apache.eagle.alert.utils.AlertConstants;
@@ -33,26 +39,19 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.LocalCluster;
-import backtype.storm.generated.StormTopology;
-import backtype.storm.topology.BoltDeclarer;
-import backtype.storm.topology.SpoutDeclarer;
-import backtype.storm.topology.TopologyBuilder;
-import backtype.storm.tuple.Fields;
-import backtype.storm.utils.Utils;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.io.Serializable;
+import java.util.HashMap;
 
 /**
  * Since 4/28/16.
  */
-@SuppressWarnings({"serial", "unused", "rawtypes"})
+@SuppressWarnings( {"serial", "unused", "rawtypes"})
 public class CoordinatorSpoutIntegrationTest implements Serializable {
     private static final Logger LOG = LoggerFactory.getLogger(CoordinatorSpoutIntegrationTest.class);
+
     @Ignore  // this test need zookeeper
     @Test
-    public void testConfigNotify() throws Exception{
+    public void testConfigNotify() throws Exception {
         final String topoId = "myTopology";
         int numGroupbyBolts = 2;
         int numTotalGroupbyBolts = 3;
@@ -77,14 +76,14 @@ public class CoordinatorSpoutIntegrationTest implements Serializable {
         int numBolts = config.getInt("correlation.numGroupbyBolts");
         String spoutId = "correlation-spout";
         CorrelationSpout spout = new CorrelationSpout(config, topoId,
-                new MockMetadataChangeNotifyService(topoId, spoutId), numBolts);
+            new MockMetadataChangeNotifyService(topoId, spoutId), numBolts);
         SpoutDeclarer declarer = topoBuilder.setSpout(spoutId, spout);
         declarer.setNumTasks(2);
         for (int i = 0; i < numBolts; i++) {
             TestBolt bolt = new TestBolt();
             BoltDeclarer boltDecl = topoBuilder.setBolt("engineBolt" + i, bolt);
             boltDecl.fieldsGrouping(spoutId,
-                    StreamIdConversion.generateStreamIdBetween(AlertConstants.DEFAULT_SPOUT_NAME, AlertConstants.DEFAULT_ROUTERBOLT_NAME+i), new Fields());
+                StreamIdConversion.generateStreamIdBetween(AlertConstants.DEFAULT_SPOUT_NAME, AlertConstants.DEFAULT_ROUTERBOLT_NAME + i), new Fields());
         }
 
         String topoName = config.getString("correlation.topologyName");

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CorrelationSpoutTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CorrelationSpoutTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CorrelationSpoutTest.java
index 5c5a37f..41e49fa 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CorrelationSpoutTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/CorrelationSpoutTest.java
@@ -19,12 +19,10 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-
+import backtype.storm.spout.SpoutOutputCollector;
+import backtype.storm.task.TopologyContext;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
 import org.apache.eagle.alert.coordination.model.StreamRepartitionMetadata;
@@ -35,13 +33,13 @@ import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
-
 import storm.kafka.KafkaSpoutWrapper;
-import backtype.storm.spout.SpoutOutputCollector;
-import backtype.storm.task.TopologyContext;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 @Ignore
 public class CorrelationSpoutTest {
@@ -50,17 +48,17 @@ public class CorrelationSpoutTest {
     private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(CorrelationSpoutTest.class);
     private String dataSourceName = "ds-name";
 
-    @SuppressWarnings({ "serial", "rawtypes" })
+    @SuppressWarnings( {"serial", "rawtypes"})
     @Test
-    public void testMetadataInjestion_emptyMetadata() throws Exception{
+    public void testMetadataInjestion_emptyMetadata() throws Exception {
         String topoId = "testMetadataInjection";
         Config config = ConfigFactory.load();
         AtomicBoolean validated = new AtomicBoolean(false);
         CorrelationSpout spout = new CorrelationSpout(config, topoId, null, 1) {
             @Override
             protected KafkaSpoutWrapper createKafkaSpout(Map conf, TopologyContext context,
-                    SpoutOutputCollector collector, String topic, String schemeClsName, SpoutSpec streamMetadatas, Map<String, StreamDefinition> sds)
-                    throws Exception {
+                                                         SpoutOutputCollector collector, String topic, String schemeClsName, SpoutSpec streamMetadatas, Map<String, StreamDefinition> sds)
+                throws Exception {
                 validated.set(true);
                 return null;
             }
@@ -72,7 +70,7 @@ public class CorrelationSpoutTest {
         ds.setTopic("name-of-topic1");
         ds.setSchemeCls("PlainStringScheme");
         ds.setCodec(new Tuple2StreamMetadata());
-        Map<String,Kafka2TupleMetadata> dsMap = new HashMap<String, Kafka2TupleMetadata>();
+        Map<String, Kafka2TupleMetadata> dsMap = new HashMap<String, Kafka2TupleMetadata>();
         dsMap.put(ds.getName(), ds);
 
         StreamRepartitionMetadata m1 = new StreamRepartitionMetadata(ds.getName(), "s1");
@@ -81,12 +79,12 @@ public class CorrelationSpoutTest {
         dataSources.put(ds.getName(), Arrays.asList(m1));
 
         SpoutSpec newMetadata = new SpoutSpec(topoId, dataSources, null, dsMap);
-        
+
         spout.onReload(newMetadata, null);
         Assert.assertTrue(validated.get());
     }
 
-    @SuppressWarnings({ "serial", "rawtypes" })
+    @SuppressWarnings( {"serial", "rawtypes"})
     @Test
     public void testMetadataInjestion_oneNewTopic2Streams() throws Exception {
         String topoId = "testMetadataInjection";
@@ -94,15 +92,15 @@ public class CorrelationSpoutTest {
 
         Config config = ConfigFactory.load();
         final AtomicBoolean verified = new AtomicBoolean(false);
-        CorrelationSpout spout = new CorrelationSpout(config, topoId, null, 1)  {
+        CorrelationSpout spout = new CorrelationSpout(config, topoId, null, 1) {
             @Override
-            protected KafkaSpoutWrapper createKafkaSpout(Map conf, 
-                    TopologyContext context,
-                    SpoutOutputCollector collector, 
-                    String topic, 
-                    String topic2SchemeClsName,
-                    SpoutSpec streamMetadatas,
-                    Map<String, StreamDefinition> sds) {
+            protected KafkaSpoutWrapper createKafkaSpout(Map conf,
+                                                         TopologyContext context,
+                                                         SpoutOutputCollector collector,
+                                                         String topic,
+                                                         String topic2SchemeClsName,
+                                                         SpoutSpec streamMetadatas,
+                                                         Map<String, StreamDefinition> sds) {
                 Assert.assertEquals(1, streamMetadatas.getStreamRepartitionMetadataMap().size());
                 Assert.assertTrue(streamMetadatas.getStream("s1") != null);
                 Assert.assertTrue(streamMetadatas.getStream("s2") != null);
@@ -128,7 +126,7 @@ public class CorrelationSpoutTest {
 
     private Map<String, Kafka2TupleMetadata> createDatasource(final String topicName, final String dataSourceName) {
         Kafka2TupleMetadata ds = new Kafka2TupleMetadata();
-        
+
         ds.setName(dataSourceName);
         ds.setType("KAFKA");
         ds.setProperties(new HashMap<String, String>());
@@ -140,9 +138,9 @@ public class CorrelationSpoutTest {
         return dsMap;
     }
 
-    @SuppressWarnings({ "serial", "rawtypes" })
+    @SuppressWarnings( {"serial", "rawtypes"})
     @Test
-    public void testMetadataInjestion_deleteOneTopic() throws Exception{
+    public void testMetadataInjestion_deleteOneTopic() throws Exception {
         String topoId = "testMetadataInjection";
         final String topicName = "testTopic";
         Config config = ConfigFactory.load();
@@ -151,11 +149,12 @@ public class CorrelationSpoutTest {
             @Override
             protected KafkaSpoutWrapper createKafkaSpout(Map conf, TopologyContext context, SpoutOutputCollector collector, final String topic,
                                                          String schemeClsName, SpoutSpec streamMetadatas,
-                                                         Map<String, StreamDefinition> sds){
+                                                         Map<String, StreamDefinition> sds) {
                 return new KafkaSpoutWrapper(null, null);
             }
+
             @Override
-            protected void removeKafkaSpout(KafkaSpoutWrapper wrapper){
+            protected void removeKafkaSpout(KafkaSpoutWrapper wrapper) {
                 LOG.info("successfully verified removed topic and streams");
                 verified.set(true);
             }
@@ -174,8 +173,8 @@ public class CorrelationSpoutTest {
         // delete new topic
         try {
             spout.onReload(new SpoutSpec(topoId, new HashMap<String, List<StreamRepartitionMetadata>>(), new HashMap<>(), new HashMap<String, Kafka2TupleMetadata>()),
-                    null);
-        }catch(Exception ex){
+                null);
+        } catch (Exception ex) {
             LOG.error("error reloading spout metadata", ex);
             throw ex;
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/FastWordCountTopology.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/FastWordCountTopology.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/FastWordCountTopology.java
index 4779fac..5aff5c8 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/FastWordCountTopology.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/FastWordCountTopology.java
@@ -6,9 +6,9 @@
  * to you 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.
@@ -17,23 +17,9 @@
  */
 package org.apache.eagle.alert.engine.topology;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-import java.util.concurrent.ThreadLocalRandom;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import backtype.storm.Config;
 import backtype.storm.LocalCluster;
-import backtype.storm.generated.ClusterSummary;
-import backtype.storm.generated.ExecutorSummary;
-import backtype.storm.generated.KillOptions;
-import backtype.storm.generated.Nimbus;
-import backtype.storm.generated.SpoutStats;
-import backtype.storm.generated.TopologyInfo;
-import backtype.storm.generated.TopologySummary;
+import backtype.storm.generated.*;
 import backtype.storm.metric.LoggingMetricsConsumer;
 import backtype.storm.spout.SpoutOutputCollector;
 import backtype.storm.task.TopologyContext;
@@ -46,6 +32,13 @@ import backtype.storm.tuple.Fields;
 import backtype.storm.tuple.Tuple;
 import backtype.storm.tuple.Values;
 import backtype.storm.utils.Utils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
 
 /**
  * WordCount but the spout does not stop, and the bolts are implemented in
@@ -58,11 +51,11 @@ public class FastWordCountTopology {
         SpoutOutputCollector _collector;
         Random _rand;
         private static final String[] CHOICES = {
-                "marry had a little lamb whos fleese was white as snow",
-                "and every where that marry went the lamb was sure to go",
-                "one two three four five six seven eight nine ten",
-                "this is a test of the emergency broadcast system this is only a test",
-                "peter piper picked a peck of pickeled peppers"
+            "marry had a little lamb whos fleese was white as snow",
+            "and every where that marry went the lamb was sure to go",
+            "one two three four five six seven eight nine ten",
+            "this is a test of the emergency broadcast system this is only a test",
+            "peter piper picked a peck of pickeled peppers"
         };
 
         @SuppressWarnings("rawtypes")
@@ -76,7 +69,7 @@ public class FastWordCountTopology {
         public void nextTuple() {
             String sentence = CHOICES[_rand.nextInt(CHOICES.length)];
             _collector.emit(new Values(sentence), sentence);
-            LOG.debug("Emit tuple: {}, id:{}",new Values(sentence),sentence);
+            LOG.debug("Emit tuple: {}, id:{}", new Values(sentence), sentence);
         }
 
         @Override
@@ -99,7 +92,7 @@ public class FastWordCountTopology {
         @Override
         public void execute(Tuple tuple, BasicOutputCollector collector) {
             String sentence = tuple.getString(0);
-            for (String word: sentence.split("\\s+")) {
+            for (String word : sentence.split("\\s+")) {
                 collector.emit(new Values(word, 1));
             }
         }
@@ -118,8 +111,9 @@ public class FastWordCountTopology {
         public void execute(Tuple tuple, BasicOutputCollector collector) {
             String word = tuple.getString(0);
             Integer count = counts.get(word);
-            if (count == null)
+            if (count == null) {
                 count = 0;
+            }
             count++;
             counts.put(word, count);
             collector.emit(new Values(word, count));
@@ -134,26 +128,26 @@ public class FastWordCountTopology {
     public static void printMetrics(Nimbus.Client client, String name) throws Exception {
         ClusterSummary summary = client.getClusterInfo();
         String id = null;
-        for (TopologySummary ts: summary.get_topologies()) {
+        for (TopologySummary ts : summary.get_topologies()) {
             if (name.equals(ts.get_name())) {
                 id = ts.get_id();
             }
         }
         if (id == null) {
-            throw new Exception("Could not find a topology named "+name);
+            throw new Exception("Could not find a topology named " + name);
         }
         TopologyInfo info = client.getTopologyInfo(id);
         int uptime = info.get_uptime_secs();
         long acked = 0;
         long failed = 0;
         double weightedAvgTotal = 0.0;
-        for (ExecutorSummary exec: info.get_executors()) {
+        for (ExecutorSummary exec : info.get_executors()) {
             if ("spout".equals(exec.get_component_id())) {
                 SpoutStats stats = exec.get_stats().get_specific().get_spout();
                 Map<String, Long> failedMap = stats.get_failed().get(":all-time");
                 Map<String, Long> ackedMap = stats.get_acked().get(":all-time");
                 Map<String, Double> avgLatMap = stats.get_complete_ms_avg().get(":all-time");
-                for (String key: ackedMap.keySet()) {
+                for (String key : ackedMap.keySet()) {
                     if (failedMap != null) {
                         Long tmp = failedMap.get(key);
                         if (tmp != null) {
@@ -167,8 +161,8 @@ public class FastWordCountTopology {
                 }
             }
         }
-        double avgLatency = weightedAvgTotal/acked;
-        System.out.println("uptime: "+uptime+" acked: "+acked+" avgLatency: "+avgLatency+" acked/sec: "+(((double)acked)/uptime+" failed: "+failed));
+        double avgLatency = weightedAvgTotal / acked;
+        System.out.println("uptime: " + uptime + " acked: " + acked + " avgLatency: " + avgLatency + " acked/sec: " + (((double) acked) / uptime + " failed: " + failed));
     }
 
     public static void kill(Nimbus.Client client, String name) throws Exception {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/MockMetadataChangeNotifyService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/MockMetadataChangeNotifyService.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/MockMetadataChangeNotifyService.java
index a8fb6d0..1494313 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/MockMetadataChangeNotifyService.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/MockMetadataChangeNotifyService.java
@@ -19,10 +19,7 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
+import com.typesafe.config.Config;
 import org.apache.eagle.alert.coordination.model.AlertBoltSpec;
 import org.apache.eagle.alert.coordination.model.PublishSpec;
 import org.apache.eagle.alert.coordination.model.RouterSpec;
@@ -35,23 +32,25 @@ import org.codehaus.jackson.type.TypeReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Since 5/4/16.
  */
-@SuppressWarnings({"serial"})
+@SuppressWarnings( {"serial"})
 public class MockMetadataChangeNotifyService extends AbstractMetadataChangeNotifyService implements Runnable {
     private final static Logger LOG = LoggerFactory.getLogger(MockMetadataChangeNotifyService.class);
     @SuppressWarnings("unused")
-    private static final String[] topics = new String[]{"testTopic3", "testTopic4", "testTopic5"};
+    private static final String[] topics = new String[] {"testTopic3", "testTopic4", "testTopic5"};
     @SuppressWarnings("unused")
     private String topologyName;
     @SuppressWarnings("unused")
     private String spoutId;
     private Map<String, StreamDefinition> sds;
 
-    public MockMetadataChangeNotifyService(String topologyName, String spoutId){
+    public MockMetadataChangeNotifyService(String topologyName, String spoutId) {
         this.topologyName = topologyName;
         this.spoutId = spoutId;
     }
@@ -83,28 +82,29 @@ public class MockMetadataChangeNotifyService extends AbstractMetadataChangeNotif
         }
     }
 
-    private Map<String, StreamDefinition> defineStreamDefinitions(){
+    private Map<String, StreamDefinition> defineStreamDefinitions() {
         Map<String, StreamDefinition> sds = MetadataSerDeser.deserialize(getClass().getResourceAsStream("/testStreamDefinitionsSpec.json"),
-                new TypeReference<Map<String, StreamDefinition>>() {});
+            new TypeReference<Map<String, StreamDefinition>>() {
+            });
         return sds;
     }
 
-    private void notifySpout(List<String> plainStringTopics, List<String> jsonStringTopics){
+    private void notifySpout(List<String> plainStringTopics, List<String> jsonStringTopics) {
         SpoutSpec newSpec = MetadataSerDeser.deserialize(getClass().getResourceAsStream("/testSpoutSpec.json"), SpoutSpec.class);
         notifySpout(newSpec, sds);
     }
 
-    private void populateRouterMetadata(){
+    private void populateRouterMetadata() {
         RouterSpec boltSpec = MetadataSerDeser.deserialize(getClass().getResourceAsStream("/testStreamRouterBoltSpec.json"), RouterSpec.class);
         notifyStreamRouterBolt(boltSpec, sds);
     }
 
-    private void populateAlertBoltSpec(){
+    private void populateAlertBoltSpec() {
         AlertBoltSpec spec = MetadataSerDeser.deserialize(getClass().getResourceAsStream("/testAlertBoltSpec.json"), AlertBoltSpec.class);
         notifyAlertBolt(spec, sds);
     }
 
-    private void notifyAlertPublishBolt(){
+    private void notifyAlertPublishBolt() {
         PublishSpec spec = MetadataSerDeser.deserialize(getClass().getResourceAsStream("/testPublishSpec.json"), PublishSpec.class);
         notifyAlertPublishBolt(spec, sds);
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/SendData2KafkaTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/SendData2KafkaTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/SendData2KafkaTest.java
index fa2f0a6..0ade06a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/SendData2KafkaTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/SendData2KafkaTest.java
@@ -18,6 +18,12 @@
  */
 package org.apache.eagle.alert.engine.topology;
 
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.serialization.StringSerializer;
+import org.junit.Ignore;
+import org.junit.Test;
+
 import java.io.FileWriter;
 import java.io.PrintWriter;
 import java.io.Serializable;
@@ -27,22 +33,14 @@ import java.nio.file.Paths;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.kafka.clients.producer.KafkaProducer;
-import org.apache.kafka.clients.producer.ProducerRecord;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.junit.Ignore;
-import org.junit.Test;
-
 /**
  * Created on 3/12/16.
  */
-@SuppressWarnings({"serial", "unchecked", "rawtypes", "resource"})
-public class SendData2KafkaTest implements Serializable{
+@SuppressWarnings( {"serial", "unchecked", "rawtypes", "resource"})
+public class SendData2KafkaTest implements Serializable {
     /**
-     *
      * {"timestamp": 10000, "metric": "esErrorLogEvent", "instanceUuid": "vm-InstanceId1", "host":"test-host1", "type":"nova", "stack":"NullPointException-..........."}
-     {"timestamp": 10000, "metric": "instanceFailureLogEvent", "instanceUuid": "vm-InstanceId1", "message":"instance boot failure for user liasu!"}
-     *
+     * {"timestamp": 10000, "metric": "instanceFailureLogEvent", "instanceUuid": "vm-InstanceId1", "message":"instance boot failure for user liasu!"}
      */
     @Test
     @Ignore

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestBolt.java
index 0ad6924..1c375fa 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestBolt.java
@@ -20,27 +20,27 @@
 package org.apache.eagle.alert.engine.topology;
 
 
-import java.util.Map;
-
-import org.junit.Ignore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import backtype.storm.task.OutputCollector;
 import backtype.storm.task.TopologyContext;
 import backtype.storm.topology.OutputFieldsDeclarer;
 import backtype.storm.topology.base.BaseRichBolt;
 import backtype.storm.tuple.Tuple;
+import org.junit.Ignore;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
 
 /**
  * Created by yonzhang on 4/7/16.
  */
 @Ignore
-@SuppressWarnings({"rawtypes", "serial"})
+@SuppressWarnings( {"rawtypes", "serial"})
 public class TestBolt extends BaseRichBolt {
     private static final Logger LOG = LoggerFactory.getLogger(TestBolt.class);
     private OutputCollector collector;
     private long count;
+
     @Override
     public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
         this.collector = collector;
@@ -50,7 +50,7 @@ public class TestBolt extends BaseRichBolt {
     public void execute(Tuple input) {
         LOG.info("data is coming: " + input);
         count++;
-        if(count % 10 == 0){
+        if (count % 10 == 0) {
             LOG.info("count = " + count);
         }
         collector.ack(input);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestByteBuffer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestByteBuffer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestByteBuffer.java
index 666d167..29986f1 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestByteBuffer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/topology/TestByteBuffer.java
@@ -19,26 +19,26 @@
 
 package org.apache.eagle.alert.engine.topology;
 
-import java.nio.ByteBuffer;
-
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.nio.ByteBuffer;
+
 /**
  * Storm 1.0.0 uses ByteBuffer, we need test it
  */
 public class TestByteBuffer {
     @Test
-    public void testBB(){
+    public void testBB() {
         ByteBuffer bb = ByteBuffer.allocate(100);
-        bb.put((byte)12);
+        bb.put((byte) 12);
         Assert.assertTrue(bb.hasArray());
         bb.rewind();
         Assert.assertEquals(12, bb.get());
     }
 
     @Test
-    public void testMultipleStrings() throws Exception{
+    public void testMultipleStrings() throws Exception {
         ByteBuffer bb = ByteBuffer.allocate(100);
         bb.put("abc".getBytes("UTF-8"));
         bb.put("xyz".getBytes("UTF-8"));


[10/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouter.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouter.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouter.java
index da7fb7e..a9efc97 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouter.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouter.java
@@ -1,12 +1,4 @@
-package org.apache.eagle.alert.engine.router;
-
-import java.io.Serializable;
-
-import org.apache.eagle.alert.engine.PartitionedEventCollector;
-import org.apache.eagle.alert.engine.StreamContext;
-import org.apache.eagle.alert.engine.model.PartitionedEvent;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -22,9 +14,20 @@ import org.apache.eagle.alert.engine.model.PartitionedEvent;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.router;
+
+import org.apache.eagle.alert.engine.PartitionedEventCollector;
+import org.apache.eagle.alert.engine.StreamContext;
+import org.apache.eagle.alert.engine.model.PartitionedEvent;
+
+import java.io.Serializable;
+
 public interface StreamRouter extends StreamSortSpecListener, Serializable {
     void prepare(StreamContext context, PartitionedEventCollector outputCollector);
+
     void nextEvent(PartitionedEvent event);
+
     String getName();
+
     void close();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouterBoltSpecListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouterBoltSpecListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouterBoltSpecListener.java
index cd4bfd3..0016fc0 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouterBoltSpecListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamRouterBoltSpecListener.java
@@ -19,14 +19,14 @@
 
 package org.apache.eagle.alert.engine.router;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.RouterSpec;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 
+import java.util.Map;
+
 /**
- * Since 5/1/16.
- * Listen to change on StreamRouterBoltSpec
+ * Listen to change on StreamRouterBoltSpec.
+ * @since 5/1/16.
  */
 public interface StreamRouterBoltSpecListener {
     void onStreamRouteBoltSpecChange(RouterSpec spec, Map<String, StreamDefinition> sds);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortHandler.java
index 2229099..613ab7f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortHandler.java
@@ -22,21 +22,13 @@ import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.sorter.StreamTimeClockListener;
 
 public interface StreamSortHandler extends StreamTimeClockListener {
-    /**
-     *
-     * @param streamId
-     * @param streamSortSpecSpec
-     * @param outputCollector
-     */
+
     void prepare(String streamId, StreamSortSpec streamSortSpecSpec, PartitionedEventCollector outputCollector);
 
     /**
-     * @param event StreamEvent
+     * @param event StreamEvent.
      */
     void nextEvent(PartitionedEvent event);
 
-    /**
-     *
-     */
     void close();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortSpecListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortSpecListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortSpecListener.java
index affa979..087a46f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortSpecListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/StreamSortSpecListener.java
@@ -1,11 +1,4 @@
-package org.apache.eagle.alert.engine.router;
-
-import java.util.Map;
-
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -21,6 +14,13 @@ import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.router;
+
+import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
+
+import java.util.Map;
+
 public interface StreamSortSpecListener {
     void onStreamSortSpecChange(Map<StreamPartition, StreamSortSpec> added,
                                 Map<StreamPartition, StreamSortSpec> removed,

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/BasicStreamRoutePartitioner.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/BasicStreamRoutePartitioner.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/BasicStreamRoutePartitioner.java
index afb9a6f..9337bde 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/BasicStreamRoutePartitioner.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/BasicStreamRoutePartitioner.java
@@ -16,17 +16,17 @@
  */
 package org.apache.eagle.alert.engine.router.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.model.StreamEvent;
 import org.apache.eagle.alert.engine.router.StreamRoute;
 import org.apache.eagle.alert.engine.router.StreamRoutePartitioner;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 
 public class BasicStreamRoutePartitioner implements StreamRoutePartitioner {
     private final List<String> outputComponentIds;
@@ -41,7 +41,7 @@ public class BasicStreamRoutePartitioner implements StreamRoutePartitioner {
 
     @Override
     public List<StreamRoute> partition(StreamEvent event) {
-        switch (this.streamPartition.getType()){
+        switch (this.streamPartition.getType()) {
             case GLOBAL:
                 return routeToAll(event);
             case GROUPBY:
@@ -52,19 +52,19 @@ public class BasicStreamRoutePartitioner implements StreamRoutePartitioner {
     }
 
     protected List<StreamRoute> routeByGroupByKey(StreamEvent event) {
-        int partitionKey = new HashCodeBuilder().append(event.getData(streamDefinition,this.streamPartition.getColumns())).build();
+        int partitionKey = new HashCodeBuilder().append(event.getData(streamDefinition, this.streamPartition.getColumns())).build();
         String selectedOutputStream = outputComponentIds.get(Math.abs(partitionKey) % this.outputComponentIds.size());
         return Collections.singletonList(new StreamRoute(selectedOutputStream, partitionKey, StreamPartition.Type.GROUPBY));
     }
 
     protected List<StreamRoute> routeByShuffle(StreamEvent event) {
         long random = System.currentTimeMillis();
-        int hash = Math.abs((int)random);
-        return Arrays.asList(new StreamRoute(outputComponentIds.get(hash % outputComponentIds.size()),-1,StreamPartition.Type.SHUFFLE));
+        int hash = Math.abs((int) random);
+        return Arrays.asList(new StreamRoute(outputComponentIds.get(hash % outputComponentIds.size()), -1, StreamPartition.Type.SHUFFLE));
     }
 
     protected List<StreamRoute> routeToAll(StreamEvent event) {
-        if(_globalRoutingKeys!=null) {
+        if (_globalRoutingKeys != null) {
             _globalRoutingKeys = new ArrayList<>();
             for (String targetId : outputComponentIds) {
                 _globalRoutingKeys.add(new StreamRoute(targetId, -1, StreamPartition.Type.GLOBAL));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/RoutePhysicalGrouping.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/RoutePhysicalGrouping.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/RoutePhysicalGrouping.java
index d0bf012..5c10675 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/RoutePhysicalGrouping.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/RoutePhysicalGrouping.java
@@ -16,55 +16,50 @@
  */
 package org.apache.eagle.alert.engine.router.impl;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import storm.trident.partition.GlobalGrouping;
 import backtype.storm.generated.GlobalStreamId;
 import backtype.storm.grouping.CustomStreamGrouping;
 import backtype.storm.task.WorkerTopologyContext;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import storm.trident.partition.GlobalGrouping;
+
+import java.util.*;
 
 public class RoutePhysicalGrouping implements CustomStreamGrouping {
     private static final long serialVersionUID = -511915083994148362L;
-    private final static Logger LOG = LoggerFactory.getLogger(RoutePhysicalGrouping.class);
+    private static final Logger LOG = LoggerFactory.getLogger(RoutePhysicalGrouping.class);
     private List<Integer> outdegreeTasks;
     private ShuffleGrouping shuffleGroupingDelegate;
     private GlobalGrouping globalGroupingDelegate;
-    private Map<String,Integer> connectedTargetIds;
+    private Map<String, Integer> connectedTargetIds;
 
     @Override
     public void prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks) {
         this.outdegreeTasks = new ArrayList<>(targetTasks);
         shuffleGroupingDelegate = new ShuffleGrouping();
-        shuffleGroupingDelegate.prepare(context,stream,targetTasks);
+        shuffleGroupingDelegate.prepare(context, stream, targetTasks);
         globalGroupingDelegate = new GlobalGrouping();
-        globalGroupingDelegate.prepare(context,stream,targetTasks);
+        globalGroupingDelegate.prepare(context, stream, targetTasks);
         connectedTargetIds = new HashMap<>();
-        for(Integer targetId:targetTasks){
+        for (Integer targetId : targetTasks) {
             String targetComponentId = context.getComponentId(targetId);
-            connectedTargetIds.put(targetComponentId,targetId);
+            connectedTargetIds.put(targetComponentId, targetId);
         }
-        LOG.info("OutDegree components: [{}]", StringUtils.join(connectedTargetIds.values(),","));
+        LOG.info("OutDegree components: [{}]", StringUtils.join(connectedTargetIds.values(), ","));
     }
 
     @Override
     public List<Integer> chooseTasks(int taskId, List<Object> values) {
         Object routingKeyObj = values.get(0);
-        if(routingKeyObj!=null){
+        if (routingKeyObj != null) {
             PartitionedEvent partitionedEvent = (PartitionedEvent) routingKeyObj;
             if (partitionedEvent.getPartition().getType() == StreamPartition.Type.GLOBAL) {
-                return globalGroupingDelegate.chooseTasks(taskId,values);
+                return globalGroupingDelegate.chooseTasks(taskId, values);
             } else if (partitionedEvent.getPartition().getType() == StreamPartition.Type.GROUPBY) {
-                return Collections.singletonList(outdegreeTasks.get((int)(partitionedEvent.getPartitionKey() % this.outdegreeTasks.size())));
+                return Collections.singletonList(outdegreeTasks.get((int) (partitionedEvent.getPartitionKey() % this.outdegreeTasks.size())));
             }
             // Shuffle by defaults
             return shuffleGroupingDelegate.chooseTasks(taskId, values);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/ShuffleGrouping.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/ShuffleGrouping.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/ShuffleGrouping.java
index c73854a..752c742 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/ShuffleGrouping.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/ShuffleGrouping.java
@@ -6,9 +6,9 @@
  * to you 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.
@@ -17,23 +17,18 @@
  */
 package org.apache.eagle.alert.engine.router.impl;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicInteger;
-
 import backtype.storm.generated.GlobalStreamId;
 import backtype.storm.grouping.CustomStreamGrouping;
 import backtype.storm.task.WorkerTopologyContext;
 
+import java.io.Serializable;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+
 /**
  * NOTE: This is copy from storm 1.0.0 code. DON'T modify it.
- * 
- * @since May 4, 2016
  *
+ * @since May 4, 2016
  */
 public class ShuffleGrouping implements CustomStreamGrouping, Serializable {
     private static final long serialVersionUID = 5035497345182141765L;
@@ -45,7 +40,7 @@ public class ShuffleGrouping implements CustomStreamGrouping, Serializable {
     public void prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks) {
         random = new Random();
         choices = new ArrayList<List<Integer>>(targetTasks.size());
-        for (Integer i: targetTasks) {
+        for (Integer i : targetTasks) {
             choices.add(Arrays.asList(i));
         }
         Collections.shuffle(choices, random);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterBoltOutputCollector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterBoltOutputCollector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterBoltOutputCollector.java
index 28d2d22..ae678ea 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterBoltOutputCollector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterBoltOutputCollector.java
@@ -18,13 +18,6 @@
  */
 package org.apache.eagle.alert.engine.router.impl;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.PolicyWorkerQueue;
 import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
 import org.apache.eagle.alert.coordination.model.WorkSlot;
@@ -40,36 +33,35 @@ import org.apache.eagle.alert.engine.router.StreamRoutePartitioner;
 import org.apache.eagle.alert.engine.router.StreamRouteSpecListener;
 import org.apache.eagle.alert.engine.serialization.PartitionedEventSerializer;
 import org.apache.eagle.alert.utils.StreamIdConversion;
+import backtype.storm.task.OutputCollector;
+import com.google.common.collect.Lists;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.task.OutputCollector;
-
-import com.google.common.collect.Lists;
+import java.util.*;
 
 /**
  * After sorting, one stream's message will be routed based on its StreamPartition
- * One stream may have multiple StreamPartitions based on how this stream is grouped by
- *
+ * One stream may have multiple StreamPartitions based on how this stream is grouped by.
  * TODO: Add metric statistics
  */
 public class StreamRouterBoltOutputCollector implements PartitionedEventCollector, StreamRouteSpecListener {
-    private final static Logger LOG = LoggerFactory.getLogger(StreamRouterBoltOutputCollector.class);
+    private static final Logger LOG = LoggerFactory.getLogger(StreamRouterBoltOutputCollector.class);
     private final OutputCollector outputCollector;
     private final Object outputLock = new Object();
-//    private final List<String> outputStreamIds;
+    //    private final List<String> outputStreamIds;
     private final StreamContext streamContext;
     private final PartitionedEventSerializer serializer;
-    private volatile Map<StreamPartition,StreamRouterSpec> routeSpecMap;
+    private volatile Map<StreamPartition, StreamRouterSpec> routeSpecMap;
     private volatile Map<StreamPartition, List<StreamRoutePartitioner>> routePartitionerMap;
     private final String sourceId;
 
-    public StreamRouterBoltOutputCollector(String sourceId, OutputCollector outputCollector, List<String> outputStreamIds, StreamContext streamContext, PartitionedEventSerializer serializer){
+    public StreamRouterBoltOutputCollector(String sourceId, OutputCollector outputCollector, List<String> outputStreamIds, StreamContext streamContext, PartitionedEventSerializer serializer) {
         this.sourceId = sourceId;
         this.outputCollector = outputCollector;
         this.routeSpecMap = new HashMap<>();
         this.routePartitionerMap = new HashMap<>();
-//        this.outputStreamIds = outputStreamIds;
+        // this.outputStreamIds = outputStreamIds;
         this.streamContext = streamContext;
         this.serializer = serializer;
     }
@@ -114,7 +106,7 @@ public class StreamRouterBoltOutputCollector implements PartitionedEventCollecto
                             if (LOG.isDebugEnabled()) {
                                 LOG.debug("Emitted to stream {} with message {}", targetStreamId, emittedEvent);
                             }
-                            if(this.serializer == null) {
+                            if (this.serializer == null) {
                                 outputCollector.emit(targetStreamId, event.getAnchor(), Collections.singletonList(emittedEvent));
                             } else {
                                 outputCollector.emit(targetStreamId, event.getAnchor(), Collections.singletonList(serializer.serialize(emittedEvent)));
@@ -129,8 +121,8 @@ public class StreamRouterBoltOutputCollector implements PartitionedEventCollecto
                 }
                 outputCollector.ack(event.getAnchor());
             }
-        } catch (Exception ex){
-            LOG.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            LOG.error(ex.getMessage(), ex);
             synchronized (outputLock) {
                 this.streamContext.counter().scope("fail_count").incr();
                 this.outputCollector.fail(event.getAnchor());
@@ -142,33 +134,33 @@ public class StreamRouterBoltOutputCollector implements PartitionedEventCollecto
     public void onStreamRouterSpecChange(Collection<StreamRouterSpec> added,
                                          Collection<StreamRouterSpec> removed,
                                          Collection<StreamRouterSpec> modified,
-                                         Map<String, StreamDefinition> sds){
-        Map<StreamPartition,StreamRouterSpec> copyRouteSpecMap = new HashMap<>(routeSpecMap);
+                                         Map<String, StreamDefinition> sds) {
+        Map<StreamPartition, StreamRouterSpec> copyRouteSpecMap = new HashMap<>(routeSpecMap);
         Map<StreamPartition, List<StreamRoutePartitioner>> copyRoutePartitionerMap = new HashMap<>(routePartitionerMap);
 
         // added StreamRouterSpec i.e. there is a new StreamPartition
-        for(StreamRouterSpec spec : added){
-            if(copyRouteSpecMap.containsKey(spec.getPartition())){
+        for (StreamRouterSpec spec : added) {
+            if (copyRouteSpecMap.containsKey(spec.getPartition())) {
                 LOG.error("Metadata calculation error: add existing StreamRouterSpec " + spec);
-            }else{
+            } else {
                 inplaceAdd(copyRouteSpecMap, copyRoutePartitionerMap, spec, sds);
             }
         }
 
         // removed StreamRouterSpec i.e. there is a deleted StreamPartition
-        for(StreamRouterSpec spec : removed){
-            if(!copyRouteSpecMap.containsKey(spec.getPartition())){
+        for (StreamRouterSpec spec : removed) {
+            if (!copyRouteSpecMap.containsKey(spec.getPartition())) {
                 LOG.error("Metadata calculation error: remove non-existing StreamRouterSpec " + spec);
-            }else{
+            } else {
                 inplaceRemove(copyRouteSpecMap, copyRoutePartitionerMap, spec);
             }
         }
 
         // modified StreamRouterSpec, i.e. there is modified StreamPartition, for example WorkSlotQueue assignment is changed
-        for(StreamRouterSpec spec : modified){
-            if(!copyRouteSpecMap.containsKey(spec.getPartition())){
+        for (StreamRouterSpec spec : modified) {
+            if (!copyRouteSpecMap.containsKey(spec.getPartition())) {
                 LOG.error("Metadata calculation error: modify nonexisting StreamRouterSpec " + spec);
-            }else{
+            } else {
                 inplaceRemove(copyRouteSpecMap, copyRoutePartitionerMap, spec);
                 inplaceAdd(copyRouteSpecMap, copyRoutePartitionerMap, spec, sds);
             }
@@ -179,34 +171,34 @@ public class StreamRouterBoltOutputCollector implements PartitionedEventCollecto
         routePartitionerMap = copyRoutePartitionerMap;
     }
 
-    private void inplaceRemove(Map<StreamPartition,StreamRouterSpec> routeSpecMap,
+    private void inplaceRemove(Map<StreamPartition, StreamRouterSpec> routeSpecMap,
                                Map<StreamPartition, List<StreamRoutePartitioner>> routePartitionerMap,
-                               StreamRouterSpec toBeRemoved){
+                               StreamRouterSpec toBeRemoved) {
         routeSpecMap.remove(toBeRemoved.getPartition());
         routePartitionerMap.remove(toBeRemoved.getPartition());
     }
 
-    private void inplaceAdd(Map<StreamPartition,StreamRouterSpec> routeSpecMap,
+    private void inplaceAdd(Map<StreamPartition, StreamRouterSpec> routeSpecMap,
                             Map<StreamPartition, List<StreamRoutePartitioner>> routePartitionerMap,
-                            StreamRouterSpec toBeAdded, Map<String, StreamDefinition> sds){
+                            StreamRouterSpec toBeAdded, Map<String, StreamDefinition> sds) {
         routeSpecMap.put(toBeAdded.getPartition(), toBeAdded);
         try {
             List<StreamRoutePartitioner> routePartitioners = calculatePartitioner(toBeAdded, sds);
             routePartitionerMap.put(toBeAdded.getPartition(), routePartitioners);
-        }catch(Exception e){
-            LOG.error("ignore this failure StreamRouterSpec " + toBeAdded + ", with error" + e.getMessage(),e);
+        } catch (Exception e) {
+            LOG.error("ignore this failure StreamRouterSpec " + toBeAdded + ", with error" + e.getMessage(), e);
             routeSpecMap.remove(toBeAdded.getPartition());
             routePartitionerMap.remove(toBeAdded.getPartition());
         }
     }
 
-    private List<StreamRoutePartitioner> calculatePartitioner(StreamRouterSpec streamRouterSpec, Map<String, StreamDefinition> sds) throws Exception{
+    private List<StreamRoutePartitioner> calculatePartitioner(StreamRouterSpec streamRouterSpec, Map<String, StreamDefinition> sds) throws Exception {
         List<StreamRoutePartitioner> routePartitioners = new ArrayList<>();
         for (PolicyWorkerQueue pwq : streamRouterSpec.getTargetQueue()) {
             routePartitioners.add(StreamRoutePartitionFactory.createRoutePartitioner(
-                    Lists.transform(pwq.getWorkers(), WorkSlot::getBoltId),
-                    sds.get(streamRouterSpec.getPartition().getStreamId()),
-                    streamRouterSpec.getPartition()));
+                Lists.transform(pwq.getWorkers(), WorkSlot::getBoltId),
+                sds.get(streamRouterSpec.getPartition().getStreamId()),
+                streamRouterSpec.getPartition()));
         }
         return routePartitioners;
     }
@@ -217,8 +209,8 @@ public class StreamRouterBoltOutputCollector implements PartitionedEventCollecto
             this.streamContext.counter().scope("drop_count").incr();
             if (event.getAnchor() != null) {
                 this.outputCollector.ack(event.getAnchor());
-            }else{
-                throw new IllegalStateException(event.toString()+" was not acked as anchor is null");
+            } else {
+                throw new IllegalStateException(event.toString() + " was not acked as anchor is null");
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterImpl.java
index 5008dbf..7b2a1de 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/router/impl/StreamRouterImpl.java
@@ -16,10 +16,6 @@
  */
 package org.apache.eagle.alert.engine.router.impl;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
 import org.apache.eagle.alert.engine.PartitionedEventCollector;
 import org.apache.eagle.alert.engine.StreamContext;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
@@ -33,23 +29,27 @@ import org.apache.eagle.alert.engine.sorter.impl.StreamTimeClockManagerImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
 public class StreamRouterImpl implements StreamRouter {
     private static final long serialVersionUID = -4640125063690900014L;
-    private final static Logger LOG = LoggerFactory.getLogger(StreamRouterImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(StreamRouterImpl.class);
     private final String name;
-    private volatile Map<StreamPartition,StreamSortHandler> streamSortHandlers;
+    private volatile Map<StreamPartition, StreamSortHandler> streamSortHandlers;
     private PartitionedEventCollector outputCollector;
     private StreamTimeClockManager streamTimeClockManager;
     private StreamContext context;
 
     /**
-     * @param name This name should be formed by topologyId + router id, which is built by topology builder
+     * @param name This name should be formed by topologyId + router id, which is built by topology builder.
      */
-    public StreamRouterImpl(String name){
+    public StreamRouterImpl(String name) {
         this.name = name;
     }
 
-    public String getName(){
+    public String getName() {
         return this.name;
     }
 
@@ -67,32 +67,34 @@ public class StreamRouterImpl implements StreamRouter {
     }
 
     /**
-     * TODO: Potential improvement: if StreamSortHandler is expensive, we can use DISRUPTOR to buffer
+     * TODO: Potential improvement: if StreamSortHandler is expensive, we can use DISRUPTOR to buffer.
      *
      * @param event StreamEvent
      */
     public void nextEvent(PartitionedEvent event) {
         this.context.counter().scope("receive_count").incr();
-        if(!dispatchToSortHandler(event)) {
+        if (!dispatchToSortHandler(event)) {
             this.context.counter().scope("direct_count").incr();
             // Pass through directly if no need to sort
             outputCollector.emit(event);
         }
         this.context.counter().scope("sort_count").incr();
         // Update stream clock time if moving forward and trigger all tick listeners
-        streamTimeClockManager.onTimeUpdate(event.getStreamId(),event.getTimestamp());
+        streamTimeClockManager.onTimeUpdate(event.getStreamId(), event.getTimestamp());
     }
 
     /**
-     * @param event input event
-     * @return whether sorted
+     * @param event input event.
+     * @return whether sorted.
      */
-    private boolean dispatchToSortHandler(PartitionedEvent event){
-        if(event.getTimestamp() <= 0) return false;
+    private boolean dispatchToSortHandler(PartitionedEvent event) {
+        if (event.getTimestamp() <= 0) {
+            return false;
+        }
 
         StreamSortHandler sortHandler = streamSortHandlers.get(event.getPartition());
-        if(sortHandler == null){
-            if(event.isSortRequired()) {
+        if (sortHandler == null) {
+            if (event.isSortRequired()) {
                 LOG.warn("Stream sort handler required has not been loaded so emmit directly: {}", event);
                 this.context.counter().scope("miss_sort_count").incr();
             }
@@ -105,8 +107,8 @@ public class StreamRouterImpl implements StreamRouter {
 
     @Override
     public void onStreamSortSpecChange(Map<StreamPartition, StreamSortSpec> added,
-            Map<StreamPartition, StreamSortSpec> removed,
-            Map<StreamPartition, StreamSortSpec> changed) {
+                                       Map<StreamPartition, StreamSortSpec> removed,
+                                       Map<StreamPartition, StreamSortSpec> changed) {
         synchronized (streamTimeClockManager) {
             Map<StreamPartition, StreamSortHandler> copy = new HashMap<>(this.streamSortHandlers);
             // add new StreamSortSpec
@@ -117,7 +119,7 @@ public class StreamRouterImpl implements StreamRouter {
                         LOG.error("Metadata calculation error: Duplicated StreamSortSpec " + spec);
                     } else {
                         StreamSortHandler handler = new StreamSortWindowHandlerImpl();
-                        handler.prepare(tmp.getStreamId(),spec.getValue(), this.outputCollector);
+                        handler.prepare(tmp.getStreamId(), spec.getValue(), this.outputCollector);
                         copy.put(tmp, handler);
                         streamTimeClockManager.registerListener(streamTimeClockManager.createStreamTimeClock(tmp.getStreamId()), handler);
                     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AbstractStreamBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AbstractStreamBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AbstractStreamBolt.java
index 5cb38fc..c6f6906 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AbstractStreamBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AbstractStreamBolt.java
@@ -16,13 +16,6 @@
  */
 package org.apache.eagle.alert.engine.runner;
 
-import backtype.storm.task.OutputCollector;
-import backtype.storm.task.TopologyContext;
-import backtype.storm.topology.OutputFieldsDeclarer;
-import backtype.storm.topology.base.BaseRichBolt;
-import backtype.storm.tuple.Fields;
-import com.google.common.base.Preconditions;
-import com.typesafe.config.Config;
 import org.apache.eagle.alert.engine.StreamContext;
 import org.apache.eagle.alert.engine.coordinator.IMetadataChangeNotifyService;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
@@ -32,6 +25,13 @@ import org.apache.eagle.alert.engine.serialization.PartitionedEventSerializer;
 import org.apache.eagle.alert.engine.serialization.SerializationMetadataProvider;
 import org.apache.eagle.alert.engine.serialization.Serializers;
 import org.apache.eagle.alert.utils.AlertConstants;
+import backtype.storm.task.OutputCollector;
+import backtype.storm.task.TopologyContext;
+import backtype.storm.topology.OutputFieldsDeclarer;
+import backtype.storm.topology.base.BaseRichBolt;
+import backtype.storm.tuple.Fields;
+import com.google.common.base.Preconditions;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,7 +40,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@SuppressWarnings({"rawtypes", "serial"})
+@SuppressWarnings( {"rawtypes", "serial"})
 public abstract class AbstractStreamBolt extends BaseRichBolt implements SerializationMetadataProvider {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractStreamBolt.class);
     private IMetadataChangeNotifyService changeNotifyService;
@@ -56,7 +56,7 @@ public abstract class AbstractStreamBolt extends BaseRichBolt implements Seriali
 
     private String boltId;
     protected PartitionedEventSerializer serializer;
-    protected volatile Map<String, StreamDefinition> sdf  = new HashMap<String, StreamDefinition>();
+    protected volatile Map<String, StreamDefinition> sdf = new HashMap<String, StreamDefinition>();
     protected volatile String specVersion = "Not Initialized";
     protected volatile boolean specVersionOutofdate = false;
     protected StreamContext streamContext;
@@ -67,11 +67,11 @@ public abstract class AbstractStreamBolt extends BaseRichBolt implements Seriali
         this.config = config;
     }
 
-    public void declareOutputStreams(List<String> outputStreamIds){
+    public void declareOutputStreams(List<String> outputStreamIds) {
         this.outputStreamIds = outputStreamIds;
     }
 
-    protected List<String> getOutputStreamIds(){
+    protected List<String> getOutputStreamIds() {
         return this.outputStreamIds;
     }
 
@@ -81,15 +81,15 @@ public abstract class AbstractStreamBolt extends BaseRichBolt implements Seriali
         this.stormConf = stormConf;
         this.collector = collector;
         this.serializer = Serializers.newPartitionedEventSerializer(this);
-        internalPrepare(collector,this.changeNotifyService,this.config,context);
+        internalPrepare(collector, this.changeNotifyService, this.config, context);
     }
 
 
     protected PartitionedEvent deserialize(Object object) throws IOException {
         // byte[] in higher priority
-        if(object instanceof byte[]) {
+        if (object instanceof byte[]) {
             return serializer.deserialize((byte[]) object);
-        } else if (object instanceof PartitionedEvent){
+        } else if (object instanceof PartitionedEvent) {
             return (PartitionedEvent) object;
         } else {
             throw new IllegalStateException(String.format("Unsupported event class '%s', expect byte array or PartitionedEvent!", object == null ? null : object.getClass().getCanonicalName()));
@@ -97,18 +97,19 @@ public abstract class AbstractStreamBolt extends BaseRichBolt implements Seriali
     }
 
     /**
-     * subclass should implement more initialization for example
+     * subclass should implement more initialization for example.
      * 1) register metadata change
      * 2) init stream context
+     *
      * @param collector
      * @param metadataManager
      * @param config
      * @param context
      */
     public abstract void internalPrepare(
-            OutputCollector collector,
-            IMetadataChangeNotifyService metadataManager,
-            Config config, TopologyContext context);
+        OutputCollector collector,
+        IMetadataChangeNotifyService metadataManager,
+        Config config, TopologyContext context);
 
     @Override
     public void cleanup() {
@@ -117,10 +118,10 @@ public abstract class AbstractStreamBolt extends BaseRichBolt implements Seriali
 
     @Override
     public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        if(this.outputStreamIds!=null){
+        if (this.outputStreamIds != null) {
             LOG.info("declare streams: {} ", outputStreamIds);
-            for(String streamId:this.outputStreamIds){
-                declarer.declareStream(streamId,new Fields(AlertConstants.FIELD_0));
+            for (String streamId : this.outputStreamIds) {
+                declarer.declareStream(streamId, new Fields(AlertConstants.FIELD_0));
             }
         } else {
             declarer.declare(new Fields(AlertConstants.FIELD_0));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertBolt.java
index fecb2f1..f437d43 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertBolt.java
@@ -16,15 +16,6 @@
  */
 package org.apache.eagle.alert.engine.runner;
 
-import backtype.storm.metric.api.MultiCountMetric;
-import backtype.storm.task.OutputCollector;
-import backtype.storm.task.TopologyContext;
-import backtype.storm.topology.OutputFieldsDeclarer;
-import backtype.storm.tuple.Fields;
-import backtype.storm.tuple.Tuple;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.MetricRegistry;
-import com.typesafe.config.Config;
 import org.apache.eagle.alert.coordination.model.AlertBoltSpec;
 import org.apache.eagle.alert.coordination.model.WorkSlot;
 import org.apache.eagle.alert.engine.AlertStreamCollector;
@@ -45,13 +36,23 @@ import org.apache.eagle.alert.metric.source.MetricSource;
 import org.apache.eagle.alert.service.IMetadataServiceClient;
 import org.apache.eagle.alert.service.MetadataServiceClientImpl;
 import org.apache.eagle.alert.utils.AlertConstants;
+
+import backtype.storm.metric.api.MultiCountMetric;
+import backtype.storm.task.OutputCollector;
+import backtype.storm.task.TopologyContext;
+import backtype.storm.topology.OutputFieldsDeclarer;
+import backtype.storm.tuple.Fields;
+import backtype.storm.tuple.Tuple;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.MetricRegistry;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
 
 /**
  * Since 5/1/16.
@@ -59,8 +60,8 @@ import java.util.concurrent.*;
  * MonitoredStream refers to tuple of {dataSource, streamId, groupby}
  * The container is also called {@link WorkSlot}
  */
-public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListener,SerializationMetadataProvider {
-    private final static Logger LOG = LoggerFactory.getLogger(AlertBolt.class);
+public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListener, SerializationMetadataProvider {
+    private static final Logger LOG = LoggerFactory.getLogger(AlertBolt.class);
     private static final long serialVersionUID = -4132297691448945672L;
     private PolicyGroupEvaluator policyGroupEvaluator;
     private AlertStreamCollector alertOutputCollector;
@@ -71,7 +72,7 @@ public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListen
 
     private AlertBoltSpec spec;
 
-    public AlertBolt(String boltId, Config config, IMetadataChangeNotifyService changeNotifyService){
+    public AlertBolt(String boltId, Config config, IMetadataChangeNotifyService changeNotifyService) {
         super(boltId, changeNotifyService, config);
         this.boltId = boltId;
         this.policyGroupEvaluator = new PolicyGroupEvaluatorImpl(boltId + "-evaluator_stage1"); // use bolt id as evaluatorId.
@@ -81,11 +82,11 @@ public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListen
     private class MetaConflictMetricSource implements MetricSource {
         private MetricRegistry registry = new MetricRegistry();
 
-        public MetaConflictMetricSource(){
+        public MetaConflictMetricSource() {
             registry.register("meta.conflict", (Gauge<String>) () -> "meta conflict happening!");
         }
 
-        public MetaConflictMetricSource(String message){
+        public MetaConflictMetricSource(String message) {
             registry.register("meta.conflict", (Gauge<String>) () -> message);
         }
 
@@ -105,26 +106,25 @@ public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListen
         this.streamContext.counter().scope("execute_count").incr();
         try {
             PartitionedEvent pe = deserialize(input.getValueByField(AlertConstants.FIELD_0));
-            String stream_event_version = pe.getEvent().getMetaVersion();
-            if (stream_event_version != null && !stream_event_version.equals(specVersion)) {
-                if (stream_event_version == null){
+            String streamEventVersion = pe.getEvent().getMetaVersion();
+            if (streamEventVersion != null && !streamEventVersion.equals(specVersion)) {
+                if (streamEventVersion == null) {
                     // if stream event version is null, need to initialize it
                     pe.getEvent().setMetaVersion(specVersion);
-                }
-                // check if specVersion is older than stream_event_version
-                else if (specVersion != null && stream_event_version != null &&
-                        specVersion.contains("spec_version_") && stream_event_version.contains("spec_version_")){
-//                    Long timestamp_of_specVersion = Long.valueOf(specVersion.split("spec_version_")[1]);
-//                    Long timestamp_of_streamEventVersion = Long.valueOf(stream_event_version.split("spec_version_")[1]);
-                    long timestamp_of_specVersion = Long.valueOf(specVersion.substring(13));
-                    long timestamp_of_streamEventVersion = Long.valueOf(stream_event_version.substring(13));
-                    specVersionOutofdate = timestamp_of_specVersion < timestamp_of_streamEventVersion;
-                    if (!specVersionOutofdate){
+                } else if (specVersion != null && streamEventVersion != null
+                    && specVersion.contains("spec_version_") && streamEventVersion.contains("spec_version_")) {
+                    // check if specVersion is older than stream_event_version
+                    // Long timestamp_of_specVersion = Long.valueOf(specVersion.split("spec_version_")[1]);
+                    // Long timestamp_of_streamEventVersion = Long.valueOf(stream_event_version.split("spec_version_")[1]);
+                    long timestampOfSpecVersion = Long.valueOf(specVersion.substring(13));
+                    long timestampOfStreamEventVersion = Long.valueOf(streamEventVersion.substring(13));
+                    specVersionOutofdate = timestampOfSpecVersion < timestampOfStreamEventVersion;
+                    if (!specVersionOutofdate) {
                         pe.getEvent().setMetaVersion(specVersion);
                     }
                 }
 
-                String message = String.format("Spec Version [%s] of AlertBolt is %s Stream Event Version [%s]!", specVersion, specVersionOutofdate ? "older than":"newer than", stream_event_version);
+                String message = String.format("Spec Version [%s] of AlertBolt is %s Stream Event Version [%s]!", specVersion, specVersionOutofdate ? "older than" : "newer than", streamEventVersion);
                 LOG.warn(message);
 
                 // send out metrics for meta conflict
@@ -137,15 +137,15 @@ public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListen
                 ExecutorService executors = SingletonExecutor.getExecutorService();
                 executors.submit(() -> {
                     // if spec version is out-of-date, need to refresh it
-                    if (specVersionOutofdate){
-                        try{
+                    if (specVersionOutofdate) {
+                        try {
                             IMetadataServiceClient client = new MetadataServiceClientImpl(this.getConfig());
                             String topologyId = spec.getTopologyName();
                             AlertBoltSpec latestSpec = client.getVersionedSpec().getAlertSpecs().get(topologyId);
-                            if (latestSpec != null){
+                            if (latestSpec != null) {
                                 spec = latestSpec;
                             }
-                        } catch (Exception e){
+                        } catch (Exception e) {
                             LOG.error(e.toString());
                         }
 
@@ -174,8 +174,8 @@ public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListen
     public void internalPrepare(OutputCollector collector, IMetadataChangeNotifyService metadataChangeNotifyService, Config config, TopologyContext context) {
         // instantiate output lock object
         outputLock = new Object();
-        streamContext = new StreamContextImpl(config,context.registerMetric("eagle.evaluator",new MultiCountMetric(),60),context);
-        alertOutputCollector = new AlertBoltOutputCollectorWrapper(collector, outputLock,streamContext);
+        streamContext = new StreamContextImpl(config, context.registerMetric("eagle.evaluator", new MultiCountMetric(), 60), context);
+        alertOutputCollector = new AlertBoltOutputCollectorWrapper(collector, outputLock, streamContext);
         policyGroupEvaluator.init(streamContext, alertOutputCollector);
         metadataChangeNotifyService.registerListener(this);
         metadataChangeNotifyService.init(config, MetadataType.ALERT_BOLT);
@@ -197,7 +197,7 @@ public class AlertBolt extends AbstractStreamBolt implements AlertBoltSpecListen
     @Override
     public synchronized void onAlertBoltSpecChange(AlertBoltSpec spec, Map<String, StreamDefinition> sds) {
         List<PolicyDefinition> newPolicies = spec.getBoltPoliciesMap().get(boltId);
-        if(newPolicies == null) {
+        if (newPolicies == null) {
             LOG.info("no new policy with AlertBoltSpec {} for this bolt {}", spec, boltId);
             return;
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertPublisherBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertPublisherBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertPublisherBolt.java
index 5f58536..9755c90 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertPublisherBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/AlertPublisherBolt.java
@@ -16,13 +16,6 @@
  */
 package org.apache.eagle.alert.engine.runner;
 
-import backtype.storm.metric.api.MultiCountMetric;
-import backtype.storm.task.OutputCollector;
-import backtype.storm.task.TopologyContext;
-import backtype.storm.topology.OutputFieldsDeclarer;
-import backtype.storm.tuple.Fields;
-import backtype.storm.tuple.Tuple;
-import com.typesafe.config.Config;
 import org.apache.eagle.alert.coordination.model.PublishSpec;
 import org.apache.eagle.alert.engine.StreamContextImpl;
 import org.apache.eagle.alert.engine.coordinator.IMetadataChangeNotifyService;
@@ -34,6 +27,14 @@ import org.apache.eagle.alert.engine.publisher.AlertPublishSpecListener;
 import org.apache.eagle.alert.engine.publisher.AlertPublisher;
 import org.apache.eagle.alert.engine.publisher.impl.AlertPublisherImpl;
 import org.apache.eagle.alert.utils.AlertConstants;
+import backtype.storm.metric.api.MultiCountMetric;
+import backtype.storm.task.OutputCollector;
+import backtype.storm.task.TopologyContext;
+import backtype.storm.topology.OutputFieldsDeclarer;
+import backtype.storm.tuple.Fields;
+import backtype.storm.tuple.Tuple;
+import com.typesafe.config.Config;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,11 +45,11 @@ import java.util.Map;
 
 @SuppressWarnings("serial")
 public class AlertPublisherBolt extends AbstractStreamBolt implements AlertPublishSpecListener {
-    private final static Logger LOG = LoggerFactory.getLogger(AlertPublisherBolt.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AlertPublisherBolt.class);
     private final AlertPublisher alertPublisher;
     private volatile Map<String, Publishment> cachedPublishments = new HashMap<>();
 
-    public AlertPublisherBolt(String alertPublisherName, Config config, IMetadataChangeNotifyService coordinatorService){
+    public AlertPublisherBolt(String alertPublisherName, Config config, IMetadataChangeNotifyService coordinatorService) {
         super(alertPublisherName, coordinatorService, config);
         this.alertPublisher = new AlertPublisherImpl(alertPublisherName);
     }
@@ -58,7 +59,7 @@ public class AlertPublisherBolt extends AbstractStreamBolt implements AlertPubli
         coordinatorService.registerListener(this);
         coordinatorService.init(config, MetadataType.ALERT_PUBLISH_BOLT);
         this.alertPublisher.init(config, stormConf);
-        streamContext = new StreamContextImpl(config,context.registerMetric("eagle.publisher",new MultiCountMetric(),60),context);
+        streamContext = new StreamContextImpl(config, context.registerMetric("eagle.publisher", new MultiCountMetric(), 60), context);
     }
 
     @Override
@@ -68,9 +69,9 @@ public class AlertPublisherBolt extends AbstractStreamBolt implements AlertPubli
             alertPublisher.nextEvent((AlertStreamEvent) input.getValueByField(AlertConstants.FIELD_1));
             this.collector.ack(input);
             streamContext.counter().scope("ack_count");
-        } catch (Exception ex){
+        } catch (Exception ex) {
             streamContext.counter().scope("fail_count");
-            LOG.error(ex.getMessage(),ex);
+            LOG.error(ex.getMessage(), ex);
             collector.reportError(ex);
         }
     }
@@ -88,10 +89,12 @@ public class AlertPublisherBolt extends AbstractStreamBolt implements AlertPubli
 
     @Override
     public void onAlertPublishSpecChange(PublishSpec pubSpec, Map<String, StreamDefinition> sds) {
-        if(pubSpec == null) return;
+        if (pubSpec == null) {
+            return;
+        }
 
         List<Publishment> newPublishments = pubSpec.getPublishments();
-        if(newPublishments == null) {
+        if (newPublishments == null) {
             LOG.info("no publishments with PublishSpec {} for this topology", pubSpec);
             return;
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/MapComparator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/MapComparator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/MapComparator.java
index 04595b1..5c65d91 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/MapComparator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/MapComparator.java
@@ -19,14 +19,10 @@
 
 package org.apache.eagle.alert.engine.runner;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.commons.collections.CollectionUtils;
 
+import java.util.*;
+
 /**
  * Since 5/2/16.
  */
@@ -36,13 +32,14 @@ public class MapComparator<K, V> {
     private List<V> added = new ArrayList<>();
     private List<V> removed = new ArrayList<>();
     private List<V> modified = new ArrayList<>();
-    public MapComparator(Map<K, V> map1, Map<K, V> map2){
+
+    public MapComparator(Map<K, V> map1, Map<K, V> map2) {
         this.map1 = map1;
         this.map2 = map2;
     }
 
     @SuppressWarnings("unchecked")
-    public void compare(){
+    public void compare() {
         Set<K> keys1 = map1.keySet();
         Set<K> keys2 = map2.keySet();
         Collection<K> addedKeys = CollectionUtils.subtract(keys1, keys2);
@@ -52,21 +49,21 @@ public class MapComparator<K, V> {
         addedKeys.forEach(k -> added.add(map1.get(k)));
         removedKeys.forEach(k -> removed.add(map2.get(k)));
         modifiedKeys.forEach(k -> {
-            if(!map1.get(k).equals(map2.get(k))){
+            if (!map1.get(k).equals(map2.get(k))) {
                 modified.add(map1.get(k));
             }
         });
     }
 
-    public List<V> getAdded(){
+    public List<V> getAdded() {
         return added;
     }
 
-    public List<V> getRemoved(){
+    public List<V> getRemoved() {
         return removed;
     }
 
-    public List<V> getModified(){
+    public List<V> getModified() {
         return modified;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricConsumer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricConsumer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricConsumer.java
index 1a6267b..caa59b3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricConsumer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricConsumer.java
@@ -16,29 +16,23 @@
  */
 package org.apache.eagle.alert.engine.runner;
 
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
 import org.apache.eagle.alert.metric.IMetricSystem;
 import org.apache.eagle.alert.metric.MetricSystem;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import backtype.storm.metric.api.IMetricsConsumer;
 import backtype.storm.task.IErrorReporter;
 import backtype.storm.task.TopologyContext;
-
 import com.codahale.metrics.Gauge;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 import com.typesafe.config.ConfigParseOptions;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
 
 /**
- * Share same metric system
+ * Share same metric system.
  */
 public class StormMetricConsumer implements IMetricsConsumer {
     public static final Logger LOG = LoggerFactory.getLogger(StormMetricConsumer.class);
@@ -46,49 +40,51 @@ public class StormMetricConsumer implements IMetricsConsumer {
     private IMetricSystem metricSystem;
     private String topologyId;
 
-    @SuppressWarnings({ "serial", "rawtypes" })
+    @SuppressWarnings( {"serial", "rawtypes"})
     @Override
     public void prepare(Map stormConf, Object registrationArgument, TopologyContext context, IErrorReporter errorReporter) {
         Config config = ConfigFactory.parseString((String) registrationArgument, ConfigParseOptions.defaults());
         topologyName = config.getString("topology.name");
         topologyId = context.getStormId();
         metricSystem = MetricSystem.load(config);
-        metricSystem.tags(new HashMap<String,Object>(){{
-            put("topologyName",topologyName);
-            put("topologyId",topologyId);
-        }});
+        metricSystem.tags(new HashMap<String, Object>() {
+            {
+                put("topologyName", topologyName);
+                put("topologyId", topologyId);
+            }
+        });
         metricSystem.start();
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+    @SuppressWarnings( {"unchecked", "rawtypes"})
     @Override
     public void handleDataPoints(TaskInfo taskInfo, Collection<DataPoint> dataPoints) {
         synchronized (metricSystem) {
             List<String> metricList = new LinkedList<>();
-            for(DataPoint dataPoint:dataPoints){
-                if(dataPoint.value instanceof Map) {
-                    Map<String,Object> values = (Map<String, Object>) dataPoint.value;
-                    for(Map.Entry<String,Object> entry:values.entrySet()){
+            for (DataPoint dataPoint : dataPoints) {
+                if (dataPoint.value instanceof Map) {
+                    Map<String, Object> values = (Map<String, Object>) dataPoint.value;
+                    for (Map.Entry<String, Object> entry : values.entrySet()) {
                         String metricName = buildMetricName(taskInfo, dataPoint.name, entry.getKey());
                         metricList.add(metricName);
                         Gauge gauge = metricSystem.registry().getGauges().get(metricName);
-                        if(gauge == null) {
+                        if (gauge == null) {
                             LOG.info("Register metric {}", metricName);
                             gauge = new DataPointGauge(entry.getValue());
-                            metricSystem.registry().register(metricName,gauge);
-                        }else{
+                            metricSystem.registry().register(metricName, gauge);
+                        } else {
                             ((DataPointGauge) gauge).setValue(entry.getValue());
                         }
                     }
                 } else {
                     String metricName = buildMetricName(taskInfo, dataPoint.name);
                     metricList.add(metricName);
-                    LOG.info("Register metric {}",metricName);
+                    LOG.info("Register metric {}", metricName);
                     Gauge gauge = metricSystem.registry().getGauges().get(metricName);
-                    if(gauge == null) {
+                    if (gauge == null) {
                         LOG.info("Register metric {}", metricName);
                         gauge = new DataPointGauge(dataPoint.value);
-                        metricSystem.registry().register(metricName,gauge);
+                        metricSystem.registry().register(metricName, gauge);
                     } else {
                         ((DataPointGauge) gauge).setValue(dataPoint.value);
                     }
@@ -97,17 +93,18 @@ public class StormMetricConsumer implements IMetricsConsumer {
             metricSystem.registry().removeMatching((name, metric) -> metricList.indexOf(name) < 0);
             metricSystem.report();
             metricSystem.registry().getGauges().values().forEach((gauge -> {
-                if(gauge instanceof DataPointGauge){
-                    ((DataPointGauge)gauge).reset();
+                if (gauge instanceof DataPointGauge) {
+                    ((DataPointGauge) gauge).reset();
                 }
             }));
-            LOG.info("Reported {} metric data points from {} [{}]",dataPoints.size(),taskInfo.srcComponentId,taskInfo.srcTaskId);
+            LOG.info("Reported {} metric data points from {} [{}]", dataPoints.size(), taskInfo.srcComponentId, taskInfo.srcTaskId);
         }
     }
 
     private class DataPointGauge implements Gauge<Object> {
         private Object value;
-        public DataPointGauge(Object initialValue){
+
+        public DataPointGauge(Object initialValue) {
             this.value = initialValue;
         }
 
@@ -116,17 +113,17 @@ public class StormMetricConsumer implements IMetricsConsumer {
             return value;
         }
 
-        public void setValue(Object value){
+        public void setValue(Object value) {
             this.value = value;
         }
 
-        public void reset(){
+        public void reset() {
             this.value = 0;
         }
     }
 
-    private String buildMetricName(TaskInfo taskInfo,String ... name ){
-        return String.join(".",StringUtils.join(name,".").replace("/","."),taskInfo.srcComponentId,taskInfo.srcTaskId+"");
+    private String buildMetricName(TaskInfo taskInfo, String... name) {
+        return String.join(".", StringUtils.join(name, ".").replace("/", "."), taskInfo.srcComponentId, taskInfo.srcTaskId + "");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricTaggedConsumer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricTaggedConsumer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricTaggedConsumer.java
index c18a44f..e060d1f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricTaggedConsumer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StormMetricTaggedConsumer.java
@@ -16,34 +16,28 @@
  */
 package org.apache.eagle.alert.engine.runner;
 
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
 import org.apache.eagle.alert.metric.IMetricSystem;
 import org.apache.eagle.alert.metric.MetricSystem;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import backtype.storm.metric.api.IMetricsConsumer;
 import backtype.storm.task.IErrorReporter;
 import backtype.storm.task.TopologyContext;
-
 import com.codahale.metrics.Gauge;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 import com.typesafe.config.ConfigParseOptions;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
 
 /**
- * Per MetricSystem instance per task
+ * Per MetricSystem instance per task.
  */
 public class StormMetricTaggedConsumer implements IMetricsConsumer {
     public static final Logger LOG = LoggerFactory.getLogger(StormMetricTaggedConsumer.class);
     private String topologyName;
-    private Map<String,MetricSystem> metricSystems;
+    private Map<String, MetricSystem> metricSystems;
     private String stormId;
     private Config config;
 
@@ -62,27 +56,29 @@ public class StormMetricTaggedConsumer implements IMetricsConsumer {
         synchronized (metricSystems) {
             String uniqueTaskKey = buildUniqueTaskKey(taskInfo);
             MetricSystem metricSystem = metricSystems.get(uniqueTaskKey);
-            if(metricSystem == null){
+            if (metricSystem == null) {
                 metricSystem = MetricSystem.load(config);
-                metricSystems.put(uniqueTaskKey,metricSystem);
-                metricSystem.tags(new HashMap<String,Object>(){{
-                    put("topology",topologyName);
-                    put("stormId",stormId);
-                    put("component",taskInfo.srcComponentId);
-                    put("task",taskInfo.srcTaskId);
-                }});
+                metricSystems.put(uniqueTaskKey, metricSystem);
+                metricSystem.tags(new HashMap<String, Object>() {
+                    {
+                        put("topology", topologyName);
+                        put("stormId", stormId);
+                        put("component", taskInfo.srcComponentId);
+                        put("task", taskInfo.srcTaskId);
+                    }
+                });
                 metricSystem.start();
-                LOG.info("Initialized metric reporter for {}",uniqueTaskKey);
+                LOG.info("Initialized metric reporter for {}", uniqueTaskKey);
             }
-            report(metricSystem,taskInfo,dataPoints);
-            if(LOG.isDebugEnabled()) {
+            report(metricSystem, taskInfo, dataPoints);
+            if (LOG.isDebugEnabled()) {
                 LOG.debug("Reported {} metric points from {}", dataPoints.size(), uniqueTaskKey);
             }
         }
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    private void report(MetricSystem metricSystem,TaskInfo taskInfo,Collection<DataPoint> dataPoints){
+    @SuppressWarnings( {"unchecked", "rawtypes"})
+    private void report(MetricSystem metricSystem, TaskInfo taskInfo, Collection<DataPoint> dataPoints) {
         List<String> metricList = new LinkedList<>();
         for (DataPoint dataPoint : dataPoints) {
             if (dataPoint.value instanceof Map) {
@@ -115,15 +111,16 @@ public class StormMetricTaggedConsumer implements IMetricsConsumer {
         metricSystem.registry().removeMatching((name, metric) -> metricList.indexOf(name) < 0);
         metricSystem.report();
         metricSystem.registry().getGauges().values().forEach((gauge -> {
-            if(gauge instanceof DataPointGauge){
-                ((DataPointGauge)gauge).reset();
+            if (gauge instanceof DataPointGauge) {
+                ((DataPointGauge) gauge).reset();
             }
         }));
     }
 
     private static class DataPointGauge implements Gauge<Object> {
         private Object value;
-        public DataPointGauge(Object initialValue){
+
+        public DataPointGauge(Object initialValue) {
             this.setValue(initialValue);
         }
 
@@ -132,21 +129,21 @@ public class StormMetricTaggedConsumer implements IMetricsConsumer {
             return value;
         }
 
-        public void setValue(Object value){
+        public void setValue(Object value) {
             this.value = value;
         }
 
-        public void reset(){
+        public void reset() {
             this.value = 0;
         }
     }
 
-    private static String buildUniqueTaskKey(TaskInfo taskInfo){
-        return String.format("%s[%s]",taskInfo.srcComponentId,taskInfo.srcTaskId);
+    private static String buildUniqueTaskKey(TaskInfo taskInfo) {
+        return String.format("%s[%s]", taskInfo.srcComponentId, taskInfo.srcTaskId);
     }
 
-    private static String buildSimpleMetricName(TaskInfo taskInfo,String ... name ){
-        return String.join(".",StringUtils.join(name,".").replace("/","."));
+    private static String buildSimpleMetricName(TaskInfo taskInfo, String... name) {
+        return String.join(".", StringUtils.join(name, ".").replace("/", "."));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StreamRouterBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StreamRouterBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StreamRouterBolt.java
index 0c1d12c..c85d183 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StreamRouterBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/StreamRouterBolt.java
@@ -16,12 +16,6 @@
  */
 package org.apache.eagle.alert.engine.runner;
 
-import backtype.storm.metric.api.MultiCountMetric;
-import backtype.storm.task.OutputCollector;
-import backtype.storm.task.TopologyContext;
-import backtype.storm.tuple.Tuple;
-import com.typesafe.config.Config;
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.eagle.alert.coordination.model.PolicyWorkerQueue;
 import org.apache.eagle.alert.coordination.model.RouterSpec;
 import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
@@ -33,13 +27,21 @@ import org.apache.eagle.alert.engine.router.impl.StreamRouterBoltOutputCollector
 import org.apache.eagle.alert.engine.router.impl.StreamRouterImpl;
 import org.apache.eagle.alert.engine.serialization.SerializationMetadataProvider;
 import org.apache.eagle.alert.utils.AlertConstants;
+
+import backtype.storm.metric.api.MultiCountMetric;
+import backtype.storm.task.OutputCollector;
+import backtype.storm.task.TopologyContext;
+import backtype.storm.tuple.Tuple;
+import com.typesafe.config.Config;
+import org.apache.commons.collections.CollectionUtils;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.*;
 
-public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouterBoltSpecListener, SerializationMetadataProvider{
-    private final static Logger LOG = LoggerFactory.getLogger(StreamRouterBolt.class);
+public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouterBoltSpecListener, SerializationMetadataProvider {
+    private static final Logger LOG = LoggerFactory.getLogger(StreamRouterBolt.class);
     private static final long serialVersionUID = -7611470889316430372L;
     private StreamRouter router;
     private StreamRouterBoltOutputCollector routeCollector;
@@ -56,8 +58,8 @@ public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouter
 
     @Override
     public void internalPrepare(OutputCollector collector, IMetadataChangeNotifyService changeNotifyService, Config config, TopologyContext context) {
-        streamContext = new StreamContextImpl(config,context.registerMetric("eagle.router",new MultiCountMetric(),60),context);
-        routeCollector = new StreamRouterBoltOutputCollector(getBoltId(),collector,this.getOutputStreamIds(),streamContext,serializer);
+        streamContext = new StreamContextImpl(config, context.registerMetric("eagle.router", new MultiCountMetric(), 60), context);
+        routeCollector = new StreamRouterBoltOutputCollector(getBoltId(), collector, this.getOutputStreamIds(), streamContext, serializer);
         router.prepare(streamContext, routeCollector);
         changeNotifyService.registerListener(this);
         changeNotifyService.init(config, MetadataType.STREAM_ROUTER_BOLT);
@@ -70,7 +72,7 @@ public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouter
             this.router.nextEvent(deserialize(input.getValueByField(AlertConstants.FIELD_0)).withAnchor(input));
         } catch (Exception ex) {
             this.streamContext.counter().scope("fail_count").incr();
-            LOG.error(ex.getMessage(),ex);
+            LOG.error(ex.getMessage(), ex);
             this.collector.fail(input);
         }
     }
@@ -83,6 +85,7 @@ public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouter
 
     /**
      * Compare with metadata snapshot cache to generate diff like added, removed and modified between different versions.
+     *
      * @param spec
      */
     @SuppressWarnings("unchecked")
@@ -92,7 +95,7 @@ public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouter
 
         // figure out added, removed, modified StreamSortSpec
         Map<StreamPartition, StreamSortSpec> newSSS = new HashMap<>();
-        spec.getRouterSpecs().forEach(t ->  {
+        spec.getRouterSpecs().forEach(t -> {
             if (t.getPartition().getSortSpec() != null) {
                 newSSS.put(t.getPartition(), t.getPartition().getSortSpec());
             }
@@ -110,11 +113,11 @@ public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouter
         addedStreamIds.forEach(s -> added.put(s, newSSS.get(s)));
         removedStreamIds.forEach(s -> removed.put(s, cachedSSS.get(s)));
         modifiedStreamIds.forEach(s -> {
-            if(!newSSS.get(s).equals(cachedSSS.get(s))){ // this means StreamSortSpec is changed for one specific streamId
+            if (!newSSS.get(s).equals(cachedSSS.get(s))) { // this means StreamSortSpec is changed for one specific streamId
                 modified.put(s, newSSS.get(s));
             }
         });
-        if(LOG.isDebugEnabled()) {
+        if (LOG.isDebugEnabled()) {
             LOG.debug("added StreamSortSpec " + added);
             LOG.debug("removed StreamSortSpec " + removed);
             LOG.debug("modified StreamSortSpec " + modified);
@@ -140,12 +143,12 @@ public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouter
         addedStreamPartitions.forEach(s -> addedRouterSpecs.add(newSRS.get(s)));
         removedStreamPartitions.forEach(s -> removedRouterSpecs.add(cachedSRS.get(s)));
         modifiedStreamPartitions.forEach(s -> {
-            if(!newSRS.get(s).equals(cachedSRS.get(s))){ // this means StreamRouterSpec is changed for one specific StreamPartition
+            if (!newSRS.get(s).equals(cachedSRS.get(s))) { // this means StreamRouterSpec is changed for one specific StreamPartition
                 modifiedRouterSpecs.add(newSRS.get(s));
             }
         });
 
-        if(LOG.isDebugEnabled()) {
+        if (LOG.isDebugEnabled()) {
             LOG.debug("added StreamRouterSpec " + addedRouterSpecs);
             LOG.debug("removed StreamRouterSpec " + removedRouterSpecs);
             LOG.debug("modified StreamRouterSpec " + modifiedRouterSpecs);
@@ -159,19 +162,20 @@ public class StreamRouterBolt extends AbstractStreamBolt implements StreamRouter
     }
 
     /**
-     * in correlation cases, multiple streams will go to the same queue for correlation policy
+     * in correlation cases, multiple streams will go to the same queue for correlation policy.
+     *
      * @param spec
      */
-    private void sanityCheck(RouterSpec spec){
+    private void sanityCheck(RouterSpec spec) {
         Set<String> totalRequestedSlots = new HashSet<>();
-        for(StreamRouterSpec s : spec.getRouterSpecs()){
-            for(PolicyWorkerQueue q : s.getTargetQueue()){
+        for (StreamRouterSpec s : spec.getRouterSpecs()) {
+            for (PolicyWorkerQueue q : s.getTargetQueue()) {
                 List<String> workers = new ArrayList<>();
                 q.getWorkers().forEach(w -> workers.add(w.getBoltId()));
                 totalRequestedSlots.addAll(workers);
             }
         }
-        if(totalRequestedSlots.size() > getOutputStreamIds().size()){
+        if (totalRequestedSlots.size() > getOutputStreamIds().size()) {
             String error = String.format("Requested slots are not consistent with provided slots, %s, %s", totalRequestedSlots, getOutputStreamIds());
             LOG.error(error);
             throw new IllegalStateException(error);


[05/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataAlert.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataAlert.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataAlert.java
index f50ad15..fe70630 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataAlert.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataAlert.java
@@ -28,20 +28,20 @@ import org.wso2.siddhi.core.util.EventPrinter;
  */
 public class TestNoDataAlert {
     @Test
-    public void test() throws Exception{
-        String[] expectHosts = new String[]{"host_1","host_2","host_3","host_4","host_5","host_6","host_7","host_8"};
+    public void test() throws Exception {
+        String[] expectHosts = new String[] {"host_1", "host_2", "host_3", "host_4", "host_5", "host_6", "host_7", "host_8"};
 //        String[] appearHosts = new String[]{"host_6","host_7","host_8"};
 //        String[] noDataHosts = new String[]{"host_1","host_2","host_3","host_4","host_5"};
 
         ExecutionPlanRuntime runtime = new SiddhiManager().createExecutionPlanRuntime(
-                "define stream appearStream (key string, src string);"+
-                        "define stream expectStream (key string, src string);"+
-                        "define table expectTable (key string, src string);"+
-                        "define trigger fiveSecTriggerStream at every 1 sec;"+
-                        "define trigger initAppearTriggerStream at 'start';"+
-                        "from expectStream insert into expectTable;"+
-                        "from fiveSecTriggerStream join expectTable insert into triggerExpectStream;"+
-                        "from initAppearTriggerStream join expectTable insert into initAppearStream;"
+            "define stream appearStream (key string, src string);" +
+                "define stream expectStream (key string, src string);" +
+                "define table expectTable (key string, src string);" +
+                "define trigger fiveSecTriggerStream at every 1 sec;" +
+                "define trigger initAppearTriggerStream at 'start';" +
+                "from expectStream insert into expectTable;" +
+                "from fiveSecTriggerStream join expectTable insert into triggerExpectStream;" +
+                "from initAppearTriggerStream join expectTable insert into initAppearStream;"
 //                        "from triggerExpectStream as l left outer join appearStream#window.time(5 sec) as r on l.key == r.key select l.key as k1,r.key as k2 insert current events into joinStream;" +
 //                        "from joinStream[k2 is null] select k1 insert current events into missingStream;"
         );
@@ -65,8 +65,8 @@ public class TestNoDataAlert {
         });
 
         runtime.start();
-        for(String host: expectHosts) {
-            runtime.getInputHandler("expectStream").send(System.currentTimeMillis(), new Object[]{host,"expectStream"});
+        for (String host : expectHosts) {
+            runtime.getInputHandler("expectStream").send(System.currentTimeMillis(), new Object[] {host, "expectStream"});
         }
 
 //        for(String host:appearHosts) {
@@ -83,17 +83,17 @@ public class TestNoDataAlert {
 
     /**
      * only alert when the successive 2 events has number of missing blocks changed
-     *from every a = hadoopJmxMetricEventStream[ component=="namenode" and metric == "hadoop.namenode.dfs.missingblocks"] -> b = hadoopJmxMetricEventStream[b.component==a.component and b.metric==a.metric and b.host==a.host and convert(b.value, "long") > convert(a.value, "long") ] select b.metric as metric, b.host as host, b.value as newNumOfMissingBlocks, a.value as oldNumOfMissingBlocks, b.timestamp as timestamp, b.component as component, b.site as site insert into tmp;
+     * from every a = hadoopJmxMetricEventStream[ component=="namenode" and metric == "hadoop.namenode.dfs.missingblocks"] -> b = hadoopJmxMetricEventStream[b.component==a.component and b.metric==a.metric and b.host==a.host and convert(b.value, "long") > convert(a.value, "long") ] select b.metric as metric, b.host as host, b.value as newNumOfMissingBlocks, a.value as oldNumOfMissingBlocks, b.timestamp as timestamp, b.component as component, b.site as site insert into tmp;
      */
     @Test
-    public void testMissingBlock() throws Exception{
+    public void testMissingBlock() throws Exception {
         ExecutionPlanRuntime runtime = new SiddhiManager().createExecutionPlanRuntime(
-                "define stream hadoopJmxMetricEventStream (component string, metric string, host string, site string, value double, timestamp long);"+
-                        "from every a = hadoopJmxMetricEventStream[ component==\"namenode\" and metric == \"hadoop.namenode.dfs.missingblocks\"] -> "+
-                        "b = hadoopJmxMetricEventStream[b.component==a.component and b.metric==a.metric and b.host==a.host and "+
-                        "convert(b.value, \"long\") > convert(a.value, \"long\") ] select b.metric as metric, b.host as host, "+
-                        "b.value as newNumOfMissingBlocks, a.value as oldNumOfMissingBlocks, b.timestamp as timestamp, b.component as component, " +
-                        "b.site as site insert into outputStream;"
+            "define stream hadoopJmxMetricEventStream (component string, metric string, host string, site string, value double, timestamp long);" +
+                "from every a = hadoopJmxMetricEventStream[ component==\"namenode\" and metric == \"hadoop.namenode.dfs.missingblocks\"] -> " +
+                "b = hadoopJmxMetricEventStream[b.component==a.component and b.metric==a.metric and b.host==a.host and " +
+                "convert(b.value, \"long\") > convert(a.value, \"long\") ] select b.metric as metric, b.host as host, " +
+                "b.value as newNumOfMissingBlocks, a.value as oldNumOfMissingBlocks, b.timestamp as timestamp, b.component as component, " +
+                "b.site as site insert into outputStream;"
         );
 
         runtime.addCallback("outputStream", new StreamCallback() {
@@ -104,9 +104,9 @@ public class TestNoDataAlert {
         });
 
         runtime.start();
-        runtime.getInputHandler("hadoopJmxMetricEventStream").send(System.currentTimeMillis(), new Object[]{"namenode", "hadoop.namenode.dfs.missingblocks", "host1", "site1", 12.0, 123000L});
-        runtime.getInputHandler("hadoopJmxMetricEventStream").send(System.currentTimeMillis(), new Object[]{"namenode", "hadoop.namenode.dfs.missingblocks", "host1", "site1", 13.0, 123100L});
-        runtime.getInputHandler("hadoopJmxMetricEventStream").send(System.currentTimeMillis(), new Object[]{"namenode", "hadoop.namenode.dfs.missingblocks", "host1", "site1", 16.0, 123200L});
+        runtime.getInputHandler("hadoopJmxMetricEventStream").send(System.currentTimeMillis(), new Object[] {"namenode", "hadoop.namenode.dfs.missingblocks", "host1", "site1", 12.0, 123000L});
+        runtime.getInputHandler("hadoopJmxMetricEventStream").send(System.currentTimeMillis(), new Object[] {"namenode", "hadoop.namenode.dfs.missingblocks", "host1", "site1", 13.0, 123100L});
+        runtime.getInputHandler("hadoopJmxMetricEventStream").send(System.currentTimeMillis(), new Object[] {"namenode", "hadoop.namenode.dfs.missingblocks", "host1", "site1", 16.0, 123200L});
 
 
         Thread.sleep(5000);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyHandler.java
index 6305da8..5564b90 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyHandler.java
@@ -16,10 +16,6 @@
  */
 package org.apache.eagle.alert.engine.nodata;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.eagle.alert.engine.Collector;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamColumn;
@@ -33,6 +29,10 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Since 6/29/16.
  */
@@ -42,13 +42,13 @@ public class TestNoDataPolicyHandler {
     private static final String outputStream = "testOutputStream";
 
     @Test
-    public void test() throws Exception{
+    public void test() throws Exception {
         test(buildPolicyDef_provided());
         test(buildPolicyDef_dynamic());
     }
 
     @SuppressWarnings("unchecked")
-    public void test(PolicyDefinition pd) throws Exception{
+    public void test(PolicyDefinition pd) throws Exception {
         Map<String, StreamDefinition> sds = new HashMap<>();
         StreamDefinition sd = buildStreamDef();
         sds.put("testInputStream", sd);
@@ -71,17 +71,17 @@ public class TestNoDataPolicyHandler {
     }
 
     @SuppressWarnings("rawtypes")
-    private static class TestCollector implements Collector{
+    private static class TestCollector implements Collector {
         @Override
         public void emit(Object o) {
-            AlertStreamEvent e = (AlertStreamEvent)o;
+            AlertStreamEvent e = (AlertStreamEvent) o;
             Object[] data = e.getData();
             Assert.assertEquals("host2", data[1]);
             LOG.info(e.toString());
         }
     }
 
-    private PolicyDefinition buildPolicyDef_provided(){
+    private PolicyDefinition buildPolicyDef_provided() {
         PolicyDefinition pd = new PolicyDefinition();
         PolicyDefinition.Definition def = new PolicyDefinition.Definition();
         def.setValue("PT1M,provided,1,host,host1,host2");
@@ -93,7 +93,7 @@ public class TestNoDataPolicyHandler {
         return pd;
     }
 
-    private PolicyDefinition buildPolicyDef_dynamic(){
+    private PolicyDefinition buildPolicyDef_dynamic() {
         PolicyDefinition pd = new PolicyDefinition();
         PolicyDefinition.Definition def = new PolicyDefinition.Definition();
         def.setValue("PT1M,dynamic,1,host");
@@ -104,7 +104,8 @@ public class TestNoDataPolicyHandler {
         pd.setName("nodataalert-test");
         return pd;
     }
-    private StreamDefinition buildStreamDef(){
+
+    private StreamDefinition buildStreamDef() {
         StreamDefinition sd = new StreamDefinition();
         StreamColumn tsColumn = new StreamColumn();
         tsColumn.setName("timestamp");
@@ -124,9 +125,9 @@ public class TestNoDataPolicyHandler {
         return sd;
     }
 
-    private StreamEvent buildStreamEvt(long ts, String host, double value){
+    private StreamEvent buildStreamEvt(long ts, String host, double value) {
         StreamEvent e = new StreamEvent();
-        e.setData(new Object[]{ts, host, value});
+        e.setData(new Object[] {ts, host, value});
         e.setStreamId(inputStream);
         e.setTimestamp(ts);
         return e;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyTimeBatchHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyTimeBatchHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyTimeBatchHandler.java
index 02d19b4..84844e7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyTimeBatchHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestNoDataPolicyTimeBatchHandler.java
@@ -16,10 +16,6 @@
  */
 package org.apache.eagle.alert.engine.nodata;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.eagle.alert.engine.Collector;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamColumn;
@@ -34,125 +30,129 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
 public class TestNoDataPolicyTimeBatchHandler {
 
-	private static final Logger LOG = LoggerFactory.getLogger(TestNoDataPolicyTimeBatchHandler.class);
-	
-	private static final String inputStream = "testInputStream";
-	private static final String outputStream = "testOutputStream";
-
-	@Before
-	public void setup() {
-	}
-
-	@SuppressWarnings("unchecked")
-	@Test
-	public void testDynamic1() throws Exception {
-		Map<String, StreamDefinition> sds = new HashMap<>();
-		sds.put("testInputStream", buildStreamDef());
-		sds.put("testOutputStream", buildOutputStreamDef());
-		NoDataPolicyTimeBatchHandler handler = new NoDataPolicyTimeBatchHandler(sds);
-
-		PolicyHandlerContext context = new PolicyHandlerContext();
-		context.setPolicyDefinition(buildPolicyDef_dynamic());
-		handler.prepare(new TestCollector(), context);
-
-		long now = System.currentTimeMillis();
-		
-		handler.send(buildStreamEvt(now, "host1", 12.5));
-		
-		Thread.sleep(2000);
-		
-		handler.send(buildStreamEvt(now, "host2", 12.6));
-		handler.send(buildStreamEvt(now, "host1", 20.9));
-		handler.send(buildStreamEvt(now, "host2", 22.1));
-		handler.send(buildStreamEvt(now, "host2", 22.1));
-		
-		Thread.sleep(5000);
-		
-		handler.send(buildStreamEvt(now, "host2", 22.1));
-		handler.send(buildStreamEvt(now, "host2", 22.3));
-		
-		Thread.sleep(5000);
-		
-		handler.send(buildStreamEvt(now, "host2", 22.9));
-		handler.send(buildStreamEvt(now, "host1", 41.6));
-		handler.send(buildStreamEvt(now, "host2", 45.6));
-		
-		Thread.sleep(1000);
-	}
-	
-	@SuppressWarnings("rawtypes")
-    private static class TestCollector implements Collector{
+    private static final Logger LOG = LoggerFactory.getLogger(TestNoDataPolicyTimeBatchHandler.class);
+
+    private static final String inputStream = "testInputStream";
+    private static final String outputStream = "testOutputStream";
+
+    @Before
+    public void setup() {
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testDynamic1() throws Exception {
+        Map<String, StreamDefinition> sds = new HashMap<>();
+        sds.put("testInputStream", buildStreamDef());
+        sds.put("testOutputStream", buildOutputStreamDef());
+        NoDataPolicyTimeBatchHandler handler = new NoDataPolicyTimeBatchHandler(sds);
+
+        PolicyHandlerContext context = new PolicyHandlerContext();
+        context.setPolicyDefinition(buildPolicyDef_dynamic());
+        handler.prepare(new TestCollector(), context);
+
+        long now = System.currentTimeMillis();
+
+        handler.send(buildStreamEvt(now, "host1", 12.5));
+
+        Thread.sleep(2000);
+
+        handler.send(buildStreamEvt(now, "host2", 12.6));
+        handler.send(buildStreamEvt(now, "host1", 20.9));
+        handler.send(buildStreamEvt(now, "host2", 22.1));
+        handler.send(buildStreamEvt(now, "host2", 22.1));
+
+        Thread.sleep(5000);
+
+        handler.send(buildStreamEvt(now, "host2", 22.1));
+        handler.send(buildStreamEvt(now, "host2", 22.3));
+
+        Thread.sleep(5000);
+
+        handler.send(buildStreamEvt(now, "host2", 22.9));
+        handler.send(buildStreamEvt(now, "host1", 41.6));
+        handler.send(buildStreamEvt(now, "host2", 45.6));
+
+        Thread.sleep(1000);
+    }
+
+    @SuppressWarnings("rawtypes")
+    private static class TestCollector implements Collector {
         @Override
         public void emit(Object o) {
-            AlertStreamEvent e = (AlertStreamEvent)o;
+            AlertStreamEvent e = (AlertStreamEvent) o;
             Object[] data = e.getData();
-            
+
             LOG.info("alert data: {}, {}", data[1], data[0]);
-            
+
             Assert.assertEquals("host1", data[1]);
         }
     }
 
-	private PolicyDefinition buildPolicyDef_dynamic() {
-		PolicyDefinition pd = new PolicyDefinition();
-		PolicyDefinition.Definition def = new PolicyDefinition.Definition();
-		def.setValue("PT5S,dynamic,1,host");
-		def.setType("nodataalert");
-		pd.setDefinition(def);
-		pd.setInputStreams(Arrays.asList(inputStream));
-		pd.setOutputStreams(Arrays.asList(outputStream));
-		pd.setName("nodataalert-test");
-		return pd;
-	}
-
-	private StreamDefinition buildStreamDef() {
-		StreamDefinition sd = new StreamDefinition();
-		StreamColumn tsColumn = new StreamColumn();
-		tsColumn.setName("timestamp");
-		tsColumn.setType(StreamColumn.Type.LONG);
-
-		StreamColumn hostColumn = new StreamColumn();
-		hostColumn.setName("host");
-		hostColumn.setType(StreamColumn.Type.STRING);
-
-		StreamColumn valueColumn = new StreamColumn();
-		valueColumn.setName("value");
-		valueColumn.setType(StreamColumn.Type.DOUBLE);
-
-		sd.setColumns(Arrays.asList(tsColumn, hostColumn, valueColumn));
-		sd.setDataSource("testDataSource");
-		sd.setStreamId("testInputStream");
-		return sd;
-	}
-	
-	private StreamDefinition buildOutputStreamDef() {
-		StreamDefinition sd = new StreamDefinition();
-		StreamColumn tsColumn = new StreamColumn();
-		tsColumn.setName("timestamp");
-		tsColumn.setType(StreamColumn.Type.LONG);
-
-		StreamColumn hostColumn = new StreamColumn();
-		hostColumn.setName("host");
-		hostColumn.setType(StreamColumn.Type.STRING);
-
-		StreamColumn valueColumn = new StreamColumn();
-		valueColumn.setName("originalStreamName");
-		valueColumn.setType(StreamColumn.Type.STRING);
-
-		sd.setColumns(Arrays.asList(tsColumn, hostColumn, valueColumn));
-		sd.setDataSource("testDataSource");
-		sd.setStreamId("testOutputStream");
-		return sd;
-	}
-
-	private StreamEvent buildStreamEvt(long ts, String host, double value) {
-		StreamEvent e = new StreamEvent();
-		e.setData(new Object[] { ts, host, value });
-		e.setStreamId(inputStream);
-		e.setTimestamp(ts);
-		return e;
-	}
+    private PolicyDefinition buildPolicyDef_dynamic() {
+        PolicyDefinition pd = new PolicyDefinition();
+        PolicyDefinition.Definition def = new PolicyDefinition.Definition();
+        def.setValue("PT5S,dynamic,1,host");
+        def.setType("nodataalert");
+        pd.setDefinition(def);
+        pd.setInputStreams(Arrays.asList(inputStream));
+        pd.setOutputStreams(Arrays.asList(outputStream));
+        pd.setName("nodataalert-test");
+        return pd;
+    }
+
+    private StreamDefinition buildStreamDef() {
+        StreamDefinition sd = new StreamDefinition();
+        StreamColumn tsColumn = new StreamColumn();
+        tsColumn.setName("timestamp");
+        tsColumn.setType(StreamColumn.Type.LONG);
+
+        StreamColumn hostColumn = new StreamColumn();
+        hostColumn.setName("host");
+        hostColumn.setType(StreamColumn.Type.STRING);
+
+        StreamColumn valueColumn = new StreamColumn();
+        valueColumn.setName("value");
+        valueColumn.setType(StreamColumn.Type.DOUBLE);
+
+        sd.setColumns(Arrays.asList(tsColumn, hostColumn, valueColumn));
+        sd.setDataSource("testDataSource");
+        sd.setStreamId("testInputStream");
+        return sd;
+    }
+
+    private StreamDefinition buildOutputStreamDef() {
+        StreamDefinition sd = new StreamDefinition();
+        StreamColumn tsColumn = new StreamColumn();
+        tsColumn.setName("timestamp");
+        tsColumn.setType(StreamColumn.Type.LONG);
+
+        StreamColumn hostColumn = new StreamColumn();
+        hostColumn.setName("host");
+        hostColumn.setType(StreamColumn.Type.STRING);
+
+        StreamColumn valueColumn = new StreamColumn();
+        valueColumn.setName("originalStreamName");
+        valueColumn.setType(StreamColumn.Type.STRING);
+
+        sd.setColumns(Arrays.asList(tsColumn, hostColumn, valueColumn));
+        sd.setDataSource("testDataSource");
+        sd.setStreamId("testOutputStream");
+        return sd;
+    }
+
+    private StreamEvent buildStreamEvt(long ts, String host, double value) {
+        StreamEvent e = new StreamEvent();
+        e.setData(new Object[] {ts, host, value});
+        e.setStreamId(inputStream);
+        e.setTimestamp(ts);
+        return e;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/perf/TestSerDeserPer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/perf/TestSerDeserPer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/perf/TestSerDeserPer.java
index f2027b2..77ab9c3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/perf/TestSerDeserPer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/perf/TestSerDeserPer.java
@@ -16,12 +16,9 @@
  */
 package org.apache.eagle.alert.engine.perf;
 
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
@@ -31,23 +28,26 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Since 5/13/16.
  */
 public class TestSerDeserPer {
     Object[] data = null;
+
     @Before
-    public void before(){
+    public void before() {
         int max = 100;
         StringBuilder sb = new StringBuilder();
-        for(int i=0; i<max; i++){
+        for (int i = 0; i < max; i++) {
             sb.append("a");
         }
-        data = new Object[]{sb.toString()};
+        data = new Object[] {sb.toString()};
     }
 
     private String getTmpPath() {
@@ -55,11 +55,11 @@ public class TestSerDeserPer {
     }
 
     @Test
-    public void testSerDeserPerf() throws Exception{
+    public void testSerDeserPerf() throws Exception {
         Kryo kryo = new Kryo();
         String outputPath = FilenameUtils.concat(getTmpPath(), "file.bin");
         Output output = new Output(new FileOutputStream(outputPath));
-        for(int i=0; i<1000; i++){
+        for (int i = 0; i < 1000; i++) {
             kryo.writeObject(output, constructPE());
         }
         output.close();
@@ -69,7 +69,7 @@ public class TestSerDeserPer {
         Assert.assertTrue(someObject.getData().length == 1);
     }
 
-    private PartitionedEvent constructPE(){
+    private PartitionedEvent constructPE() {
         StreamEvent e = new StreamEvent();
         e.setStreamId("testStreamId");
         e.setTimestamp(1463159382000L);
@@ -92,11 +92,11 @@ public class TestSerDeserPer {
     }
 
     @Test
-    public void testSerDeserPerf2() throws Exception{
+    public void testSerDeserPerf2() throws Exception {
         Kryo kryo = new Kryo();
         String outputPath = FilenameUtils.concat(getTmpPath(), "file2.bin");
         Output output = new Output(new FileOutputStream(outputPath));
-        for(int i=0; i<1000; i++){
+        for (int i = 0; i < 1000; i++) {
             kryo.writeObject(output, constructNewPE());
         }
         output.close();
@@ -106,7 +106,7 @@ public class TestSerDeserPer {
         Assert.assertTrue(someObject.getData().length == 1);
     }
 
-    private NewPartitionedEvent constructNewPE(){
+    private NewPartitionedEvent constructNewPE() {
         NewPartitionedEvent pe = new NewPartitionedEvent();
         pe.setStreamId("testStreamId");
         pe.setTimestamp(1463159382000L);
@@ -124,11 +124,11 @@ public class TestSerDeserPer {
     }
 
     @Test
-    public void testSerDeserPerf3() throws Exception{
+    public void testSerDeserPerf3() throws Exception {
         Kryo kryo = new Kryo();
         String outputPath = FilenameUtils.concat(getTmpPath(), "file3.bin");
         Output output = new Output(new FileOutputStream(outputPath));
-        for(int i=0; i<1000; i++){
+        for (int i = 0; i < 1000; i++) {
             kryo.writeObject(output, constructNewPE2());
         }
         output.close();
@@ -138,7 +138,7 @@ public class TestSerDeserPer {
         Assert.assertTrue(someObject.getData().length == 1);
     }
 
-    private NewPartitionedEvent2 constructNewPE2(){
+    private NewPartitionedEvent2 constructNewPE2() {
         NewPartitionedEvent2 pe = new NewPartitionedEvent2();
         pe.setStreamId(100);
         pe.setTimestamp(1463159382000L);
@@ -168,10 +168,10 @@ public class TestSerDeserPer {
         private long partitionKey;
 
         // sort spec
-        private String windowPeriod="";
+        private String windowPeriod = "";
         private long windowMargin = 30 * 1000;
 
-        public NewPartitionedEvent(){
+        public NewPartitionedEvent() {
         }
 
         public String getStreamId() {
@@ -255,7 +255,7 @@ public class TestSerDeserPer {
         private long windowPeriod;
         private long windowMargin = 30 * 1000;
 
-        public NewPartitionedEvent2(){
+        public NewPartitionedEvent2() {
         }
 
         public int getStreamId() {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertBolt.java
index f3548d8..4bec98d 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertBolt.java
@@ -58,7 +58,7 @@ import static org.mockito.Mockito.when;
 /**
  * Since 5/2/16.
  */
-@SuppressWarnings({"rawtypes", "unused"})
+@SuppressWarnings( {"rawtypes", "unused"})
 public class TestAlertBolt {
 
     public static final String TEST_STREAM = "test-stream";
@@ -66,22 +66,20 @@ public class TestAlertBolt {
     /**
      * Following knowledge is guaranteed in
      *
+     * @throws Exception Add test case: 2 alerts should be generated even if they are very close to each other in timestamp
      * @see org.apache.eagle.alert.engine.runner.AlertBolt#execute{
-     *    if(!routedStreamEvent.getRoute().getTargetComponentId().equals(this.policyGroupEvaluator.getName())){
-     *      throw new IllegalStateException("Got event targeted to "+ routedStreamEvent.getRoute().getTargetComponentId()+" in "+this.policyGroupEvaluator.getName());
-     *    }
+     * if(!routedStreamEvent.getRoute().getTargetComponentId().equals(this.policyGroupEvaluator.getName())){
+     * throw new IllegalStateException("Got event targeted to "+ routedStreamEvent.getRoute().getTargetComponentId()+" in "+this.policyGroupEvaluator.getName());
+     * }
      * }
-     *
-     * @throws Exception
-     *
-     * Add test case: 2 alerts should be generated even if they are very close to each other in timestamp
      */
     @Test
-    public void testAlertBolt() throws Exception{
+    public void testAlertBolt() throws Exception {
         final AtomicInteger alertCount = new AtomicInteger();
         final Semaphore mutex = new Semaphore(0);
-        OutputCollector collector = new OutputCollector(new IOutputCollector(){
+        OutputCollector collector = new OutputCollector(new IOutputCollector() {
             int count = 0;
+
             @Override
             public List<Integer> emit(String streamId, Collection<Tuple> anchors, List<Object> tuple) {
                 alertCount.incrementAndGet();
@@ -91,14 +89,22 @@ public class TestAlertBolt {
                 System.out.println(String.format("collector received: [streamId=[%s], tuple=[%s] ", streamId, tuple));
                 return null;
             }
+
             @Override
-            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {            }
+            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {
+            }
+
             @Override
-            public void ack(Tuple input) {            }
+            public void ack(Tuple input) {
+            }
+
             @Override
-            public void fail(Tuple input) {            }
+            public void fail(Tuple input) {
+            }
+
             @Override
-            public void reportError(Throwable error) {            }
+            public void reportError(Throwable error) {
+            }
         });
         AlertBolt bolt = createAlertBolt(collector);
 
@@ -143,27 +149,27 @@ public class TestAlertBolt {
 
         // construct event with "value1"
         StreamEvent event1 = new StreamEvent();
-        event1.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:00:00")*1000);
+        event1.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:00:00") * 1000);
         event1.setMetaVersion("version1");
-        Object[] data = new Object[]{"value1"};
+        Object[] data = new Object[] {"value1"};
         event1.setData(data);
         event1.setStreamId(streamId);
-        PartitionedEvent partitionedEvent1 = new PartitionedEvent(event1, sp,1001);
+        PartitionedEvent partitionedEvent1 = new PartitionedEvent(event1, sp, 1001);
 
         // construct another event with "value1"
         StreamEvent event2 = new StreamEvent();
-        event2.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:00:00")*1000);
+        event2.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:00:00") * 1000);
         event2.setMetaVersion("version1");
-        data = new Object[]{"value2"};
+        data = new Object[] {"value2"};
         event2.setData(data);
         event2.setStreamId(streamId);
-        PartitionedEvent partitionedEvent2 = new PartitionedEvent(event2, sp,1001);
+        PartitionedEvent partitionedEvent2 = new PartitionedEvent(event2, sp, 1001);
 
         Tuple input = new TupleImpl(context, Collections.singletonList(partitionedEvent1), taskId, "default");
         Tuple input2 = new TupleImpl(context, Collections.singletonList(partitionedEvent2), taskId, "default");
         bolt.execute(input);
         bolt.execute(input2);
-        Assert.assertTrue("Timeout to acquire mutex in 5s",mutex.tryAcquire(2, 5, TimeUnit.SECONDS));
+        Assert.assertTrue("Timeout to acquire mutex in 5s", mutex.tryAcquire(2, 5, TimeUnit.SECONDS));
         Assert.assertEquals(2, alertCount.get());
         bolt.cleanup();
     }
@@ -183,8 +189,9 @@ public class TestAlertBolt {
     @Test
     public void testMetadataMismatch() throws Exception {
         AtomicInteger failedCount = new AtomicInteger();
-        OutputCollector collector = new OutputCollector(new IOutputCollector(){
+        OutputCollector collector = new OutputCollector(new IOutputCollector() {
             int count = 0;
+
             @Override
             public List<Integer> emit(String streamId, Collection<Tuple> anchors, List<Object> tuple) {
                 Assert.assertEquals("testAlertStream", tuple.get(0));
@@ -192,14 +199,23 @@ public class TestAlertBolt {
                 System.out.println(String.format("collector received: [streamId=[%s], tuple=[%s] ", streamId, tuple));
                 return null;
             }
+
             @Override
-            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {            }
+            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {
+            }
+
             @Override
-            public void ack(Tuple input) {            }
+            public void ack(Tuple input) {
+            }
+
             @Override
-            public void fail(Tuple input) {      failedCount.incrementAndGet();      }
+            public void fail(Tuple input) {
+                failedCount.incrementAndGet();
+            }
+
             @Override
-            public void reportError(Throwable error) {            }
+            public void reportError(Throwable error) {
+            }
         });
         AlertBolt bolt = createAlertBolt(collector);
 
@@ -267,8 +283,9 @@ public class TestAlertBolt {
     @Test
     public void testMetaversionConflict() throws Exception {
         AtomicInteger failedCount = new AtomicInteger();
-        OutputCollector collector = new OutputCollector(new IOutputCollector(){
+        OutputCollector collector = new OutputCollector(new IOutputCollector() {
             int count = 0;
+
             @Override
             public List<Integer> emit(String streamId, Collection<Tuple> anchors, List<Object> tuple) {
                 Assert.assertEquals("testAlertStream", tuple.get(0));
@@ -276,14 +293,23 @@ public class TestAlertBolt {
                 System.out.println(String.format("collector received: [streamId=[%s], tuple=[%s] ", streamId, tuple));
                 return null;
             }
+
             @Override
-            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {            }
+            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {
+            }
+
             @Override
-            public void ack(Tuple input) {            }
+            public void ack(Tuple input) {
+            }
+
             @Override
-            public void fail(Tuple input) {      failedCount.incrementAndGet();      }
+            public void fail(Tuple input) {
+                failedCount.incrementAndGet();
+            }
+
             @Override
-            public void reportError(Throwable error) {            }
+            public void reportError(Throwable error) {
+            }
         });
         AlertBolt bolt = createAlertBolt(collector);
 
@@ -374,21 +400,25 @@ public class TestAlertBolt {
             }
 
             @Override
-            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {}
+            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {
+            }
 
             @Override
-            public void ack(Tuple input) {}
+            public void ack(Tuple input) {
+            }
 
             @Override
-            public void fail(Tuple input) {}
+            public void fail(Tuple input) {
+            }
 
             @Override
-            public void reportError(Throwable error) {}
+            public void reportError(Throwable error) {
+            }
         });
         AlertBolt bolt = createAlertBolt(collector);
 
         boltSpecs.getBoltPoliciesMap().put(bolt.getBoltId(), Arrays.asList(def));
-        boltSpecs.setVersion("spec_"+System.currentTimeMillis());
+        boltSpecs.setVersion("spec_" + System.currentTimeMillis());
         // stream def map
         Map<String, StreamDefinition> sds = new HashMap();
         StreamDefinition sdTest = new StreamDefinition();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertPublisherBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertPublisherBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertPublisherBolt.java
index 1e52036..61a0aba 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertPublisherBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/router/TestAlertPublisherBolt.java
@@ -66,13 +66,13 @@ public class TestAlertPublisherBolt {
         publisher.nextEvent(event1);
     }
 
-    private AlertStreamEvent create(String streamId){
+    private AlertStreamEvent create(String streamId) {
         AlertStreamEvent alert = new AlertStreamEvent();
         PolicyDefinition policy = new PolicyDefinition();
         policy.setName("policy1");
         alert.setPolicyId(policy.getName());
         alert.setCreatedTime(System.currentTimeMillis());
-        alert.setData(new Object[]{"field_1", 2, "field_3"});
+        alert.setData(new Object[] {"field_1", 2, "field_3"});
         alert.setStreamId(streamId);
         alert.setCreatedBy(this.toString());
         return alert;
@@ -165,13 +165,13 @@ public class TestAlertPublisherBolt {
         return l;
     }
 
-    private AlertStreamEvent createWithStreamDef(String hostname, String appName){
+    private AlertStreamEvent createWithStreamDef(String hostname, String appName) {
         AlertStreamEvent alert = new AlertStreamEvent();
         PolicyDefinition policy = new PolicyDefinition();
         policy.setName("perfmon_cpu_host_check");
         alert.setPolicyId(policy.getName());
         alert.setCreatedTime(System.currentTimeMillis());
-        alert.setData(new Object[]{appName, hostname});
+        alert.setData(new Object[] {appName, hostname});
         alert.setStreamId("testAlertStream");
         alert.setCreatedBy(this.toString());
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/runner/TestStreamRouterBolt.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/runner/TestStreamRouterBolt.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/runner/TestStreamRouterBolt.java
index 13550e1..830f1f7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/runner/TestStreamRouterBolt.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/runner/TestStreamRouterBolt.java
@@ -16,19 +16,16 @@
  */
 package org.apache.eagle.alert.engine.runner;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+import backtype.storm.metric.api.MultiCountMetric;
+import backtype.storm.task.GeneralTopologyContext;
+import backtype.storm.task.IOutputCollector;
+import backtype.storm.task.OutputCollector;
+import backtype.storm.task.TopologyContext;
+import backtype.storm.tuple.Fields;
+import backtype.storm.tuple.Tuple;
+import backtype.storm.tuple.TupleImpl;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.coordination.model.PolicyWorkerQueue;
 import org.apache.eagle.alert.coordination.model.RouterSpec;
 import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
@@ -40,7 +37,6 @@ import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
 import org.apache.eagle.alert.engine.coordinator.impl.AbstractMetadataChangeNotifyService;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
-import org.apache.eagle.alert.engine.router.impl.StreamRouterImpl;
 import org.apache.eagle.alert.utils.DateTimeUtil;
 import org.apache.eagle.alert.utils.StreamIdConversion;
 import org.joda.time.Period;
@@ -49,43 +45,39 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.metric.api.MultiCountMetric;
-import backtype.storm.task.GeneralTopologyContext;
-import backtype.storm.task.IOutputCollector;
-import backtype.storm.task.OutputCollector;
-import backtype.storm.task.TopologyContext;
-import backtype.storm.tuple.Fields;
-import backtype.storm.tuple.Tuple;
-import backtype.storm.tuple.TupleImpl;
+import java.io.IOException;
+import java.util.*;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public class TestStreamRouterBolt {
     private final static Logger LOG = LoggerFactory.getLogger(TestStreamRouterBolt.class);
 
     /**
      * Mocked 5 Events
-     *
+     * <p>
      * 1. Sent in random order:
      * "value1","value2","value3","value4","value5"
-     *
+     * <p>
      * 2. Received correct time order and value5 is thrown because too late: "value2","value1","value3","value4"
      *
      * @throws Exception
      */
     @SuppressWarnings("rawtypes")
     @Test
-    public void testRouterWithSortAndRouteSpec() throws Exception{
+    public void testRouterWithSortAndRouteSpec() throws Exception {
         Config config = ConfigFactory.load();
         MockChangeService mockChangeService = new MockChangeService();
         StreamRouterBolt routerBolt = new StreamRouterBolt("routerBolt1", config, mockChangeService);
 
-        final Map<String,List<PartitionedEvent>> streamCollected = new HashMap<>();
+        final Map<String, List<PartitionedEvent>> streamCollected = new HashMap<>();
         final List<PartitionedEvent> orderCollected = new ArrayList<>();
 
-        OutputCollector collector = new OutputCollector(new IOutputCollector(){
+        OutputCollector collector = new OutputCollector(new IOutputCollector() {
             int count = 0;
+
             @Override
             public List<Integer> emit(String streamId, Collection<Tuple> anchors, List<Object> tuple) {
                 PartitionedEvent event;
@@ -94,27 +86,37 @@ public class TestStreamRouterBolt {
                 } catch (IOException e) {
                     throw new RuntimeException(e);
                 }
-                if(count == 0) {
+                if (count == 0) {
                     count++;
                 }
                 LOG.info(String.format("Collector received: [streamId=[%s], tuple=[%s] ", streamId, tuple));
-                if(!streamCollected.containsKey(streamId)){
-                    streamCollected.put(streamId,new ArrayList<>());
+                if (!streamCollected.containsKey(streamId)) {
+                    streamCollected.put(streamId, new ArrayList<>());
                 }
                 streamCollected.get(streamId).add(event);
                 orderCollected.add(event);
                 return null;
             }
+
             @Override
-            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {            }
+            public void emitDirect(int taskId, String streamId, Collection<Tuple> anchors, List<Object> tuple) {
+            }
+
             @Override
-            public void ack(Tuple input) {            }
+            public void ack(Tuple input) {
+            }
+
             @Override
-            public void fail(Tuple input) {            }
+            public void fail(Tuple input) {
+            }
+
             @SuppressWarnings("unused")
-            public void resetTimeout(Tuple input) {            }
+            public void resetTimeout(Tuple input) {
+            }
+
             @Override
-            public void reportError(Throwable error) {            }
+            public void reportError(Throwable error) {
+            }
         });
 
         Map stormConf = new HashMap<>();
@@ -144,7 +146,7 @@ public class TestStreamRouterBolt {
         routerSpec.setStreamId(streamId);
         PolicyWorkerQueue queue = new PolicyWorkerQueue();
         queue.setPartition(sp);
-        queue.setWorkers(Arrays.asList(new WorkSlot("testTopology","alertBolt1"), new WorkSlot("testTopology","alertBolt2")));
+        queue.setWorkers(Arrays.asList(new WorkSlot("testTopology", "alertBolt1"), new WorkSlot("testTopology", "alertBolt2")));
         routerSpec.setTargetQueue(Collections.singletonList(queue));
         boltSpec.addRouterSpec(routerSpec);
         boltSpec.setVersion("version1");
@@ -178,8 +180,8 @@ public class TestStreamRouterBolt {
 
         // construct event with "value1"
         StreamEvent event = new StreamEvent();
-        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:01:30")*1000);
-        Object[] data = new Object[]{"value1"};
+        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:01:30") * 1000);
+        Object[] data = new Object[] {"value1"};
         event.setData(data);
         event.setStreamId(streamId);
         PartitionedEvent pEvent = new PartitionedEvent();
@@ -190,8 +192,8 @@ public class TestStreamRouterBolt {
 
         // construct another event with "value2"
         event = new StreamEvent();
-        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:01:10")*1000);
-        data = new Object[]{"value2"};
+        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:01:10") * 1000);
+        data = new Object[] {"value2"};
         event.setData(data);
         event.setStreamId(streamId);
         pEvent = new PartitionedEvent();
@@ -202,8 +204,8 @@ public class TestStreamRouterBolt {
 
         // construct another event with "value3"
         event = new StreamEvent();
-        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:01:40")*1000);
-        data = new Object[]{"value3"};
+        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:01:40") * 1000);
+        data = new Object[] {"value3"};
         event.setData(data);
         event.setStreamId(streamId);
         pEvent = new PartitionedEvent();
@@ -214,8 +216,8 @@ public class TestStreamRouterBolt {
 
         // construct another event with "value4"
         event = new StreamEvent();
-        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:02:10")*1000);
-        data = new Object[]{"value4"};
+        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:02:10") * 1000);
+        data = new Object[] {"value4"};
         event.setData(data);
         event.setStreamId(streamId);
         pEvent = new PartitionedEvent();
@@ -226,8 +228,8 @@ public class TestStreamRouterBolt {
 
         // construct another event with "value5", which will be thrown because two late
         event = new StreamEvent();
-        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:00:10")*1000);
-        data = new Object[]{"value5"};
+        event.setTimestamp(DateTimeUtil.humanDateToSeconds("2016-01-01 00:00:10") * 1000);
+        data = new Object[] {"value5"};
         event.setData(data);
         event.setStreamId(streamId);
         pEvent = new PartitionedEvent();
@@ -236,14 +238,14 @@ public class TestStreamRouterBolt {
         input = new TupleImpl(context, Collections.singletonList(pEvent), taskId, "default");
         routerBolt.execute(input);
 
-        Assert.assertEquals("Should finally collect two streams",2,streamCollected.size());
-        Assert.assertTrue("Should collect stream stream_routerBolt_to_alertBolt1",streamCollected.keySet().contains(
-                String.format(StreamIdConversion.generateStreamIdBetween(routerBolt.getBoltId(), "alertBolt1"))));
-        Assert.assertTrue("Should collect stream stream_routerBolt_to_alertBolt2",streamCollected.keySet().contains(
-                String.format(StreamIdConversion.generateStreamIdBetween(routerBolt.getBoltId(), "alertBolt2"))));
+        Assert.assertEquals("Should finally collect two streams", 2, streamCollected.size());
+        Assert.assertTrue("Should collect stream stream_routerBolt_to_alertBolt1", streamCollected.keySet().contains(
+            String.format(StreamIdConversion.generateStreamIdBetween(routerBolt.getBoltId(), "alertBolt1"))));
+        Assert.assertTrue("Should collect stream stream_routerBolt_to_alertBolt2", streamCollected.keySet().contains(
+            String.format(StreamIdConversion.generateStreamIdBetween(routerBolt.getBoltId(), "alertBolt2"))));
 
-        Assert.assertEquals("Should finally collect 3 events",3,orderCollected.size());
-        Assert.assertArrayEquals("Should sort 3 events in ASC order",new String[]{"value2","value1","value3"},orderCollected.stream().map((d)->d.getData()[0]).toArray());
+        Assert.assertEquals("Should finally collect 3 events", 3, orderCollected.size());
+        Assert.assertArrayEquals("Should sort 3 events in ASC order", new String[] {"value2", "value1", "value3"}, orderCollected.stream().map((d) -> d.getData()[0]).toArray());
 
         // The first 3 events are ticked automatically by window
 
@@ -252,14 +254,14 @@ public class TestStreamRouterBolt {
         // Close will flush all events in memory, so will receive the last event which is still in memory as window is not expired according to clock
         // The 5th event will be thrown because too late and out of margin
 
-        Assert.assertEquals("Should finally collect two streams",2,streamCollected.size());
-        Assert.assertEquals("Should finally collect 3 events",4,orderCollected.size());
-        Assert.assertArrayEquals("Should sort 4 events in ASC-ordered timestamp",new String[]{"value2","value1","value3","value4"},orderCollected.stream().map((d)->d.getData()[0]).toArray());
+        Assert.assertEquals("Should finally collect two streams", 2, streamCollected.size());
+        Assert.assertEquals("Should finally collect 3 events", 4, orderCollected.size());
+        Assert.assertArrayEquals("Should sort 4 events in ASC-ordered timestamp", new String[] {"value2", "value1", "value3", "value4"}, orderCollected.stream().map((d) -> d.getData()[0]).toArray());
 
     }
 
     @SuppressWarnings("serial")
-    public static class MockChangeService extends AbstractMetadataChangeNotifyService{
+    public static class MockChangeService extends AbstractMetadataChangeNotifyService {
         private final static Logger LOG = LoggerFactory.getLogger(MockChangeService.class);
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/JavaSerializationTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/JavaSerializationTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/JavaSerializationTest.java
index 13d1015..a3939cc 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/JavaSerializationTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/JavaSerializationTest.java
@@ -1,10 +1,5 @@
 package org.apache.eagle.alert.engine.serialization;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.eagle.alert.engine.coordinator.StreamColumn;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
@@ -17,6 +12,11 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -37,18 +37,18 @@ public class JavaSerializationTest {
     private final static Logger LOG = LoggerFactory.getLogger(JavaSerializationTest.class);
 
     @Test
-    public void testJavaSerialization(){
+    public void testJavaSerialization() {
         PartitionedEvent partitionedEvent = new PartitionedEvent();
         partitionedEvent.setPartitionKey(partitionedEvent.hashCode());
-        partitionedEvent.setPartition(createSampleStreamGroupbyPartition("sampleStream",Arrays.asList("name","host")));
+        partitionedEvent.setPartition(createSampleStreamGroupbyPartition("sampleStream", Arrays.asList("name", "host")));
         StreamEvent event = new StreamEvent();
         event.setStreamId("sampleStream");
         event.setTimestamp(System.currentTimeMillis());
-        event.setData(new Object[]{"CPU","LOCALHOST",true,Long.MAX_VALUE,60.0});
+        event.setData(new Object[] {"CPU", "LOCALHOST", true, Long.MAX_VALUE, 60.0});
         partitionedEvent.setEvent(event);
 
         int javaSerializationLength = SerializationUtils.serialize(partitionedEvent).length;
-        LOG.info("Java serialization length: {}, event: {}",javaSerializationLength,partitionedEvent);
+        LOG.info("Java serialization length: {}, event: {}", javaSerializationLength, partitionedEvent);
 
         int compactLength = 0;
         compactLength += "sampleStream".getBytes().length;
@@ -60,17 +60,17 @@ public class JavaSerializationTest {
         compactLength += ByteUtils.longToBytes(Long.MAX_VALUE).length;
         compactLength += ByteUtils.doubleToBytes(60.0).length;
 
-        LOG.info("Compact serialization length: {}, event: {}",compactLength,partitionedEvent);
+        LOG.info("Compact serialization length: {}, event: {}", compactLength, partitionedEvent);
         Assert.assertTrue(compactLength * 20 < javaSerializationLength);
     }
 
 
-    public static StreamDefinition createSampleStreamDefinition(String streamId){
+    public static StreamDefinition createSampleStreamDefinition(String streamId) {
         StreamDefinition sampleStreamDefinition = new StreamDefinition();
         sampleStreamDefinition.setStreamId(streamId);
         sampleStreamDefinition.setTimeseries(true);
         sampleStreamDefinition.setValidate(true);
-        sampleStreamDefinition.setDescription("Schema for "+streamId);
+        sampleStreamDefinition.setDescription("Schema for " + streamId);
         List<StreamColumn> streamColumns = new ArrayList<>();
 
         streamColumns.add(new StreamColumn.Builder().name("name").type(StreamColumn.Type.STRING).build());
@@ -82,7 +82,7 @@ public class JavaSerializationTest {
         return sampleStreamDefinition;
     }
 
-    public static StreamPartition createSampleStreamGroupbyPartition(String streamId, List<String> groupByField){
+    public static StreamPartition createSampleStreamGroupbyPartition(String streamId, List<String> groupByField) {
         StreamPartition streamPartition = new StreamPartition();
         streamPartition.setStreamId(streamId);
         streamPartition.setColumns(groupByField);
@@ -91,22 +91,22 @@ public class JavaSerializationTest {
     }
 
     @SuppressWarnings("serial")
-    public static PartitionedEvent createSimpleStreamEvent()  {
-        StreamEvent event = StreamEvent.Builder()
-                    .schema(createSampleStreamDefinition("sampleStream_1"))
-                    .streamId("sampleStream_1")
-                    .timestamep(System.currentTimeMillis())
-                    .attributes(new HashMap<String,Object>(){{
-                        put("name","cpu");
-                        put("host","localhost");
-                        put("flag",true);
-                        put("value",60.0);
-                        put("data",Long.MAX_VALUE);
-                        put("unknown","unknown column value");
-                    }}).build();
+    public static PartitionedEvent createSimpleStreamEvent() {
+        StreamEvent event = StreamEvent.builder()
+            .schema(createSampleStreamDefinition("sampleStream_1"))
+            .streamId("sampleStream_1")
+            .timestamep(System.currentTimeMillis())
+            .attributes(new HashMap<String, Object>() {{
+                put("name", "cpu");
+                put("host", "localhost");
+                put("flag", true);
+                put("value", 60.0);
+                put("data", Long.MAX_VALUE);
+                put("unknown", "unknown column value");
+            }}).build();
         PartitionedEvent pEvent = new PartitionedEvent();
         pEvent.setEvent(event);
-        pEvent.setPartition(createSampleStreamGroupbyPartition("sampleStream_1", Arrays.asList("name","host")));
+        pEvent.setPartition(createSampleStreamGroupbyPartition("sampleStream_1", Arrays.asList("name", "host")));
         return pEvent;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializerTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializerTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializerTest.java
index a756ebe..4241c3c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializerTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializerTest.java
@@ -16,9 +16,14 @@
  */
 package org.apache.eagle.alert.engine.serialization;
 
-import java.io.IOException;
-import java.util.BitSet;
-
+import backtype.storm.serialization.DefaultKryoFactory;
+import backtype.storm.serialization.DefaultSerializationDelegate;
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+import com.google.common.io.ByteArrayDataInput;
+import com.google.common.io.ByteArrayDataOutput;
+import com.google.common.io.ByteStreams;
 import org.apache.commons.lang.time.StopWatch;
 import org.apache.eagle.alert.engine.mock.MockSampleMetadataFactory;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
@@ -30,66 +35,63 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.serialization.DefaultKryoFactory;
-import backtype.storm.serialization.DefaultSerializationDelegate;
-
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
-import com.google.common.io.ByteArrayDataInput;
-import com.google.common.io.ByteArrayDataOutput;
-import com.google.common.io.ByteStreams;
+import java.io.IOException;
+import java.util.BitSet;
 
 
 public class PartitionedEventSerializerTest {
     private final static Logger LOG = LoggerFactory.getLogger(PartitionedEventSerializerTest.class);
+
     @SuppressWarnings("deprecation")
     @Test
     public void testPartitionEventSerialization() throws IOException {
-        PartitionedEvent partitionedEvent = MockSampleMetadataFactory.createPartitionedEventGroupedByName("sampleStream",System.currentTimeMillis());;
+        PartitionedEvent partitionedEvent = MockSampleMetadataFactory.createPartitionedEventGroupedByName("sampleStream", System.currentTimeMillis());
+        ;
         PartitionedEventSerializerImpl serializer = new PartitionedEventSerializerImpl(MockSampleMetadataFactory::createSampleStreamDefinition);
 
         ByteArrayDataOutput dataOutput1 = ByteStreams.newDataOutput();
-        serializer.serialize(partitionedEvent,dataOutput1);
+        serializer.serialize(partitionedEvent, dataOutput1);
         byte[] serializedBytes = dataOutput1.toByteArray();
         PartitionedEvent deserializedEvent = serializer.deserialize(ByteStreams.newDataInput(serializedBytes));
-        Assert.assertEquals(partitionedEvent,deserializedEvent);
+        Assert.assertEquals(partitionedEvent, deserializedEvent);
 
-        PartitionedEventSerializerImpl compressSerializer = new PartitionedEventSerializerImpl(MockSampleMetadataFactory::createSampleStreamDefinition,true);
+        PartitionedEventSerializerImpl compressSerializer = new PartitionedEventSerializerImpl(MockSampleMetadataFactory::createSampleStreamDefinition, true);
 
         byte[] serializedBytesCompressed = compressSerializer.serialize(partitionedEvent);
         PartitionedEvent deserializedEventCompressed = compressSerializer.deserialize(serializedBytesCompressed);
-        Assert.assertEquals(partitionedEvent,deserializedEventCompressed);
+        Assert.assertEquals(partitionedEvent, deserializedEventCompressed);
 
         PartitionedEventDigestSerializer serializer2 = new PartitionedEventDigestSerializer(MockSampleMetadataFactory::createSampleStreamDefinition);
         ByteArrayDataOutput dataOutput2 = ByteStreams.newDataOutput();
-        serializer2.serialize(partitionedEvent,dataOutput2);
+        serializer2.serialize(partitionedEvent, dataOutput2);
         byte[] serializedBytes2 = dataOutput2.toByteArray();
         ByteArrayDataInput dataInput2 = ByteStreams.newDataInput(serializedBytes2);
         PartitionedEvent deserializedEvent2 = serializer2.deserialize(dataInput2);
-        Assert.assertEquals(partitionedEvent,deserializedEvent2);
+        Assert.assertEquals(partitionedEvent, deserializedEvent2);
 
         byte[] javaSerialization = new DefaultSerializationDelegate().serialize(partitionedEvent);
         Kryo kryo = new DefaultKryoFactory.KryoSerializableDefault();
         Output output = new Output(10000);
-        kryo.writeClassAndObject(output,partitionedEvent);
+        kryo.writeClassAndObject(output, partitionedEvent);
         byte[] kryoBytes = output.toBytes();
         Input input = new Input(kryoBytes);
         PartitionedEvent kryoDeserializedEvent = (PartitionedEvent) kryo.readClassAndObject(input);
-        Assert.assertEquals(partitionedEvent,kryoDeserializedEvent);
-        LOG.info("\nCached Stream:{}\nCompressed Cached Stream :{}\nCached Stream + Cached Partition: {}\nJava Native: {}\nKryo: {}\nKryo + Cached Stream: {}\nKryo + Cached Stream + Cached Partition: {}",serializedBytes.length,serializedBytesCompressed.length,serializedBytes2.length,javaSerialization.length,kryoBytes.length,kryoSerialize(serializedBytes).length,kryoSerialize(serializedBytes2).length);
+        Assert.assertEquals(partitionedEvent, kryoDeserializedEvent);
+        LOG.info("\nCached Stream:{}\nCompressed Cached Stream :{}\nCached Stream + Cached Partition: {}\nJava Native: {}\nKryo: {}\nKryo + Cached Stream: {}\nKryo + Cached Stream + Cached Partition: {}", serializedBytes.length, serializedBytesCompressed.length, serializedBytes2.length, javaSerialization.length, kryoBytes.length, kryoSerialize(serializedBytes).length, kryoSerialize(serializedBytes2).length);
     }
+
     @SuppressWarnings("deprecation")
     @Test
     public void testPartitionEventSerializationEfficiency() throws IOException {
-        PartitionedEvent partitionedEvent = MockSampleMetadataFactory.createPartitionedEventGroupedByName("sampleStream",System.currentTimeMillis());;
+        PartitionedEvent partitionedEvent = MockSampleMetadataFactory.createPartitionedEventGroupedByName("sampleStream", System.currentTimeMillis());
+        ;
         PartitionedEventSerializerImpl serializer = new PartitionedEventSerializerImpl(MockSampleMetadataFactory::createSampleStreamDefinition);
 
         int count = 100000;
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
         int i = 0;
-        while(i<count) {
+        while (i < count) {
             ByteArrayDataOutput dataOutput1 = ByteStreams.newDataOutput();
             serializer.serialize(partitionedEvent, dataOutput1);
             byte[] serializedBytes = dataOutput1.toByteArray();
@@ -98,24 +100,24 @@ public class PartitionedEventSerializerTest {
             i++;
         }
         stopWatch.stop();
-        LOG.info("Cached Stream: {} ms",stopWatch.getTime());
+        LOG.info("Cached Stream: {} ms", stopWatch.getTime());
         stopWatch.reset();
-        PartitionedEventSerializerImpl compressSerializer = new PartitionedEventSerializerImpl(MockSampleMetadataFactory::createSampleStreamDefinition,true);
+        PartitionedEventSerializerImpl compressSerializer = new PartitionedEventSerializerImpl(MockSampleMetadataFactory::createSampleStreamDefinition, true);
         i = 0;
         stopWatch.start();
-        while(i<count) {
+        while (i < count) {
             byte[] serializedBytesCompressed = compressSerializer.serialize(partitionedEvent);
             PartitionedEvent deserializedEventCompressed = compressSerializer.deserialize(serializedBytesCompressed);
             Assert.assertEquals(partitionedEvent, deserializedEventCompressed);
             i++;
         }
         stopWatch.stop();
-        LOG.info("Compressed Cached Stream: {} ms",stopWatch.getTime());
+        LOG.info("Compressed Cached Stream: {} ms", stopWatch.getTime());
         stopWatch.reset();
 
         i = 0;
         stopWatch.start();
-        while(i<count) {
+        while (i < count) {
             PartitionedEventDigestSerializer serializer2 = new PartitionedEventDigestSerializer(MockSampleMetadataFactory::createSampleStreamDefinition);
             ByteArrayDataOutput dataOutput2 = ByteStreams.newDataOutput();
             serializer2.serialize(partitionedEvent, dataOutput2);
@@ -126,23 +128,23 @@ public class PartitionedEventSerializerTest {
             i++;
         }
         stopWatch.stop();
-        LOG.info("Cached Stream&Partition: {} ms",stopWatch.getTime());
+        LOG.info("Cached Stream&Partition: {} ms", stopWatch.getTime());
         stopWatch.reset();
         i = 0;
         stopWatch.start();
-        while(i<count) {
+        while (i < count) {
             byte[] javaSerialization = new DefaultSerializationDelegate().serialize(partitionedEvent);
             PartitionedEvent javaSerializedEvent = (PartitionedEvent) new DefaultSerializationDelegate().deserialize(javaSerialization);
             Assert.assertEquals(partitionedEvent, javaSerializedEvent);
             i++;
         }
         stopWatch.stop();
-        LOG.info("Java Native: {} ms",stopWatch.getTime());
+        LOG.info("Java Native: {} ms", stopWatch.getTime());
         stopWatch.reset();
         i = 0;
         stopWatch.start();
         Kryo kryo = new DefaultKryoFactory.KryoSerializableDefault();
-        while(i<count) {
+        while (i < count) {
             Output output = new Output(10000);
             kryo.writeClassAndObject(output, partitionedEvent);
             byte[] kryoBytes = output.toBytes();
@@ -152,73 +154,73 @@ public class PartitionedEventSerializerTest {
             i++;
         }
         stopWatch.stop();
-        LOG.info("Kryo: {} ms",stopWatch.getTime());
+        LOG.info("Kryo: {} ms", stopWatch.getTime());
     }
 
     /**
      * Kryo Serialization Length = Length of byte[] + 2
      */
     @Test
-    public void testKryoByteArraySerialization(){
+    public void testKryoByteArraySerialization() {
         Kryo kryo = new DefaultKryoFactory.KryoSerializableDefault();
-        byte[] bytes = new byte[]{0,1,2,3,4,5,6,7,8,9};
+        byte[] bytes = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
         Output output = new Output(1000);
-        kryo.writeObject(output,bytes);
-        Assert.assertEquals(bytes.length + 2,output.toBytes().length);
+        kryo.writeObject(output, bytes);
+        Assert.assertEquals(bytes.length + 2, output.toBytes().length);
     }
 
-    private byte[] kryoSerialize(Object object){
+    private byte[] kryoSerialize(Object object) {
         Kryo kryo = new DefaultKryoFactory.KryoSerializableDefault();
         Output output = new Output(100000);
-        kryo.writeClassAndObject(output,object);
+        kryo.writeClassAndObject(output, object);
         return output.toBytes();
     }
 
     @Test
-    public void testBitSet(){
+    public void testBitSet() {
         BitSet bitSet = new BitSet();
-        bitSet.set(0,true); // 1
-        bitSet.set(1,false); // 0
-        bitSet.set(2,true); // 1
-        LOG.info("Bit Set Size: {}",bitSet.size());
-        LOG.info("Bit Set Byte[]: {}",bitSet.toByteArray());
-        LOG.info("Bit Set Byte[]: {}",bitSet.toLongArray());
-        LOG.info("BitSet[0]: {}",bitSet.get(0));
-        LOG.info("BitSet[1]: {}",bitSet.get(1));
-        LOG.info("BitSet[1]: {}",bitSet.get(2));
+        bitSet.set(0, true); // 1
+        bitSet.set(1, false); // 0
+        bitSet.set(2, true); // 1
+        LOG.info("Bit Set Size: {}", bitSet.size());
+        LOG.info("Bit Set Byte[]: {}", bitSet.toByteArray());
+        LOG.info("Bit Set Byte[]: {}", bitSet.toLongArray());
+        LOG.info("BitSet[0]: {}", bitSet.get(0));
+        LOG.info("BitSet[1]: {}", bitSet.get(1));
+        LOG.info("BitSet[1]: {}", bitSet.get(2));
 
         byte[] bytes = bitSet.toByteArray();
 
         BitSet bitSet2 = BitSet.valueOf(bytes);
 
-        LOG.info("Bit Set Size: {}",bitSet2.size());
-        LOG.info("Bit Set Byte[]: {}",bitSet2.toByteArray());
-        LOG.info("Bit Set Byte[]: {}",bitSet2.toLongArray());
-        LOG.info("BitSet[0]: {}",bitSet2.get(0));
-        LOG.info("BitSet[1]: {}",bitSet2.get(1));
-        LOG.info("BitSet[1]: {}",bitSet2.get(2));
+        LOG.info("Bit Set Size: {}", bitSet2.size());
+        LOG.info("Bit Set Byte[]: {}", bitSet2.toByteArray());
+        LOG.info("Bit Set Byte[]: {}", bitSet2.toLongArray());
+        LOG.info("BitSet[0]: {}", bitSet2.get(0));
+        LOG.info("BitSet[1]: {}", bitSet2.get(1));
+        LOG.info("BitSet[1]: {}", bitSet2.get(2));
 
 
         BitSet bitSet3 = new BitSet();
-        bitSet3.set(0,true);
-        Assert.assertEquals(1,bitSet3.length());
+        bitSet3.set(0, true);
+        Assert.assertEquals(1, bitSet3.length());
 
         BitSet bitSet4 = new BitSet();
-        bitSet4.set(0,false);
-        Assert.assertEquals(0,bitSet4.length());
+        bitSet4.set(0, false);
+        Assert.assertEquals(0, bitSet4.length());
         Assert.assertFalse(bitSet4.get(1));
         Assert.assertFalse(bitSet4.get(2));
     }
 
     @Test
-    public void testPeriod(){
-        Assert.assertEquals(30*60*1000, TimePeriodUtils.getMillisecondsOfPeriod(Period.parse("PT30m")));
-        Assert.assertEquals(30*60*1000, TimePeriodUtils.getMillisecondsOfPeriod(Period.millis(30*60*1000)));
-        Assert.assertEquals("PT1800S", Period.millis(30*60*1000).toString());
+    public void testPeriod() {
+        Assert.assertEquals(30 * 60 * 1000, TimePeriodUtils.getMillisecondsOfPeriod(Period.parse("PT30m")));
+        Assert.assertEquals(30 * 60 * 1000, TimePeriodUtils.getMillisecondsOfPeriod(Period.millis(30 * 60 * 1000)));
+        Assert.assertEquals("PT1800S", Period.millis(30 * 60 * 1000).toString());
     }
 
     @Test
-    public void testPartitionType(){
+    public void testPartitionType() {
 
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/SiddhiPolicyTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/SiddhiPolicyTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/SiddhiPolicyTest.java
index 3d373b6..9520b62 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/SiddhiPolicyTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/SiddhiPolicyTest.java
@@ -32,32 +32,31 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * @since Jun 21, 2016
- *
  */
 public class SiddhiPolicyTest {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(SiddhiPolicyTest.class);
 
     private String streams = " define stream syslog_stream("
-            + "dims_facility string, "
-            + "dims_severity string, "
-            + "dims_hostname string, "
-            + "dims_msgid string, "
-            + "timestamp string, "
-            + "conn string, "
-            + "op string, "
-            + "msgId string, "
-            + "command string, "
-            + "name string, "
-            + "namespace string, "
-            + "epochMillis long); ";
+        + "dims_facility string, "
+        + "dims_severity string, "
+        + "dims_hostname string, "
+        + "dims_msgid string, "
+        + "timestamp string, "
+        + "conn string, "
+        + "op string, "
+        + "msgId string, "
+        + "command string, "
+        + "name string, "
+        + "namespace string, "
+        + "epochMillis long); ";
     private SiddhiManager sm;
-    
+
     @Before
     public void setup() {
         sm = new SiddhiManager();
     }
-    
+
     @After
     public void shutdown() {
         sm.shutdown();
@@ -70,7 +69,9 @@ public class SiddhiPolicyTest {
             @Override
             public void receive(Event[] arg0) {
 
-            };
+            }
+
+            ;
         };
 
         String executionPlan = streams + ql;
@@ -83,13 +84,13 @@ public class SiddhiPolicyTest {
     @Test
     public void testPolicy_agg() throws Exception {
         String sql = " from syslog_stream#window.time(1min) select "
-                + "name, "
-                + "namespace, "
-                + "timestamp, "
-                + "dims_hostname, "
-                + "count(*) as abortCount "
-                + "group by dims_hostname "
-                + "having abortCount > 3 insert into syslog_severity_check_output; ";
+            + "name, "
+            + "namespace, "
+            + "timestamp, "
+            + "dims_hostname, "
+            + "count(*) as abortCount "
+            + "group by dims_hostname "
+            + "having abortCount > 3 insert into syslog_severity_check_output; ";
 
         final AtomicBoolean checked = new AtomicBoolean(false);
         StreamCallback sc = new StreamCallback() {
@@ -107,7 +108,9 @@ public class SiddhiPolicyTest {
                 Assert.assertTrue(hosts.contains("HOSTNAME-" + 1));
                 Assert.assertTrue(hosts.contains("HOSTNAME-" + 2));
                 Assert.assertFalse(hosts.contains("HOSTNAME-" + 3));
-            };
+            }
+
+            ;
         };
 
         String executionPlan = streams + sql;
@@ -124,7 +127,7 @@ public class SiddhiPolicyTest {
 
         runtime.shutdown();
     }
-    
+
     /*
         + "dims_facility string, "
         + "dims_severity string, "
@@ -145,8 +148,8 @@ public class SiddhiPolicyTest {
         for (int i = 0; i < length; i++) {
             Event e = new Event(12);
             e.setTimestamp(System.currentTimeMillis());
-            e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + i%4 , "MSGID-...", "Timestamp", "conn-sss", "op-msg-Abort", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
-            
+            e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + i % 4, "MSGID-...", "Timestamp", "conn-sss", "op-msg-Abort", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
+
             events[i] = e;
         }
 
@@ -156,7 +159,7 @@ public class SiddhiPolicyTest {
 
         Event e = new Event(12);
         e.setTimestamp(System.currentTimeMillis());
-        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 11 , "MSGID-...", "Timestamp", "conn-sss", "op-msg", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
+        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 11, "MSGID-...", "Timestamp", "conn-sss", "op-msg", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
         handler.send(e);
     }
 
@@ -164,28 +167,30 @@ public class SiddhiPolicyTest {
     @Test
     public void testPolicy_regex() throws Exception {
         String sql = " from syslog_stream[regex:find(\"Abort\", op)]#window.time(1min) select timestamp, dims_hostname, count(*) as abortCount group by dims_hostname insert into syslog_severity_check_output; ";
-        
+
         AtomicBoolean checked = new AtomicBoolean();
         StreamCallback sc = new StreamCallback() {
             @Override
             public void receive(Event[] arg0) {
                 checked.set(true);
-            };
+            }
+
+            ;
         };
 
         String executionPlan = streams + sql;
         ExecutionPlanRuntime runtime = sm.createExecutionPlanRuntime(executionPlan);
-        runtime.addCallback("syslog_severity_check_output", sc); 
+        runtime.addCallback("syslog_severity_check_output", sc);
         runtime.start();
-        
+
         InputHandler handler = runtime.getInputHandler("syslog_stream");
-        
+
         sendInput(handler);
-        
+
         Thread.sleep(1000);
-        
+
         Assert.assertTrue(checked.get());
-        
+
         runtime.shutdown();
     }
 
@@ -193,17 +198,19 @@ public class SiddhiPolicyTest {
     @Test
     public void testPolicy_seq() throws Exception {
         String sql = ""
-                + " from every e1=syslog_stream[regex:find(\"UPDOWN\", op)] -> "
-                + " e2=syslog_stream[dims_hostname == e1.dims_hostname and regex:find(\"Abort\", op)] within 1 min "
-                + " select e1.timestamp as timestamp, e1.op as a_op, e2.op as b_op "
-                + " insert into syslog_severity_check_output; ";
+            + " from every e1=syslog_stream[regex:find(\"UPDOWN\", op)] -> "
+            + " e2=syslog_stream[dims_hostname == e1.dims_hostname and regex:find(\"Abort\", op)] within 1 min "
+            + " select e1.timestamp as timestamp, e1.op as a_op, e2.op as b_op "
+            + " insert into syslog_severity_check_output; ";
 
         AtomicBoolean checked = new AtomicBoolean();
         StreamCallback sc = new StreamCallback() {
             @Override
             public void receive(Event[] arg0) {
                 checked.set(true);
-            };
+            }
+
+            ;
         };
 
         String executionPlan = streams + sql;
@@ -224,21 +231,21 @@ public class SiddhiPolicyTest {
         // validate one
         Event e = new Event(12);
         e.setTimestamp(System.currentTimeMillis());
-        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 0 , "MSGID-...", "Timestamp", "conn-sss", "op-msg-UPDOWN", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
-            
+        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 0, "MSGID-...", "Timestamp", "conn-sss", "op-msg-UPDOWN", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
+
         e = new Event(12);
         e.setTimestamp(System.currentTimeMillis());
-        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 0 , "MSGID-...", "Timestamp", "conn-sss", "op-msg-nothing", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
-        
+        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 0, "MSGID-...", "Timestamp", "conn-sss", "op-msg-nothing", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
+
         e = new Event(12);
         e.setTimestamp(System.currentTimeMillis());
-        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 0 , "MSGID-...", "Timestamp", "conn-sss", "op-msg-Abort", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
+        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 0, "MSGID-...", "Timestamp", "conn-sss", "op-msg-Abort", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
 
         Thread.sleep(61 * 1000);
 
         e = new Event(12);
         e.setTimestamp(System.currentTimeMillis());
-        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 11 , "MSGID-...", "Timestamp", "conn-sss", "op-msg", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
+        e.setData(new Object[] {"facitliy", "SEVERITY_EMERG", "HOSTNAME-" + 11, "MSGID-...", "Timestamp", "conn-sss", "op-msg", "msgId..", "command-...", "name-", "namespace", System.currentTimeMillis()});
         handler.send(e);
     }
 
@@ -246,7 +253,7 @@ public class SiddhiPolicyTest {
     @Test
     public void testStrConcat() throws Exception {
         String ql = " define stream log(timestamp long, switchLabel string, port string, message string); " +
-                " from log select timestamp, str:concat(switchLabel, '===', port) as alertKey, message insert into output; ";
+            " from log select timestamp, str:concat(switchLabel, '===', port) as alertKey, message insert into output; ";
         SiddhiManager manager = new SiddhiManager();
         ExecutionPlanRuntime runtime = manager.createExecutionPlanRuntime(ql);
         runtime.addCallback("output", new StreamCallback() {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregatorTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregatorTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregatorTest.java
index f2f3b46..7694623 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregatorTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregatorTest.java
@@ -18,10 +18,6 @@
  */
 package org.apache.eagle.alert.engine.siddhi.extension;
 
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Random;
-
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,9 +27,12 @@ import org.wso2.siddhi.core.event.Event;
 import org.wso2.siddhi.core.stream.input.InputHandler;
 import org.wso2.siddhi.core.stream.output.StreamCallback;
 
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+
 /**
  * @since Apr 1, 2016
- *
  */
 public class AttributeCollectAggregatorTest {
 
@@ -85,59 +84,59 @@ public class AttributeCollectAggregatorTest {
         Event e = null;
         long base = System.currentTimeMillis();
         {
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "nova" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "nova"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "nova" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "nova"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "nova" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "nova"});
             base += 100;
             events.add(e);
         }
 
         {
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "neutron" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "neutron"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "neutron" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "neutron"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "neutron" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "neutron"});
             base += 100;
             events.add(e);
         }
 
         base += 10000;
         {
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "nova1" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "nova1"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "nova1" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "nova1"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "nova1" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "nova1"});
             base += 100;
             events.add(e);
         }
 
         {
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "neutron2" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "neutron2"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "neutron2" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "neutron2"});
             base += 100;
             events.add(e);
-            e = new Event(base, new Object[] { base, "host" + r.nextInt(), "neutron2" });
+            e = new Event(base, new Object[] {base, "host" + r.nextInt(), "neutron2"});
             base += 100;
             events.add(e);
         }
         base += 10000;
-        e = new Event(base, new Object[] { base, "host" + r.nextInt(), "mq" });
+        e = new Event(base, new Object[] {base, "host" + r.nextInt(), "mq"});
 
         return events.toArray(new Event[0]);
     }
-    
+
     @Test
     public void testQuery() {
         String ql = "define stream perfmon_input_stream_cpu ( host string,timestamp long,metric string,pool string,value double,colo string );";



[07/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CorrelationSpout.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CorrelationSpout.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CorrelationSpout.java
index 99c1fed..9c04fa4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CorrelationSpout.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CorrelationSpout.java
@@ -18,14 +18,6 @@
  */
 package org.apache.eagle.alert.engine.spout;
 
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
 import org.apache.eagle.alert.engine.coordinator.IMetadataChangeNotifyService;
@@ -37,33 +29,30 @@ import org.apache.eagle.alert.engine.serialization.SerializationMetadataProvider
 import org.apache.eagle.alert.engine.serialization.Serializers;
 import org.apache.eagle.alert.utils.AlertConstants;
 import org.apache.eagle.alert.utils.StreamIdConversion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import storm.kafka.BrokerHosts;
-import storm.kafka.KafkaSpoutMetric;
-import storm.kafka.KafkaSpoutWrapper;
-import storm.kafka.SpoutConfig;
-import storm.kafka.ZkHosts;
 import backtype.storm.spout.SchemeAsMultiScheme;
 import backtype.storm.spout.SpoutOutputCollector;
 import backtype.storm.task.TopologyContext;
 import backtype.storm.topology.OutputFieldsDeclarer;
 import backtype.storm.topology.base.BaseRichSpout;
 import backtype.storm.tuple.Fields;
-
 import com.typesafe.config.Config;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import storm.kafka.*;
+
+import java.text.MessageFormat;
+import java.util.*;
 
 /**
  * wrap KafkaSpout to provide parallel processing of messages for multiple Kafka topics
  *
- * 1. onNewConfig() is interface for outside to update new metadata. Upon new metadata, this class will calculate if there is any new topic, removed topic or
- *    updated topic
- *
+ * <p>1. onNewConfig() is interface for outside to update new metadata. Upon new metadata, this class will calculate if there is any new topic, removed topic or
+ * updated topic</p>
  */
-public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener,SerializationMetadataProvider {
+public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener, SerializationMetadataProvider {
     private static final long serialVersionUID = -5280723341236671580L;
-    private static final Logger LOG  = LoggerFactory.getLogger(CorrelationSpout.class);
+    private static final Logger LOG = LoggerFactory.getLogger(CorrelationSpout.class);
 
     public static final String DEFAULT_STORM_KAFKA_TRANSACTION_ZK_ROOT = "/consumers";
     public static final String DEFAULT_STORM_KAFKA_TRANSACTION_ZK_RELATIVE_PATH = "/eagle_consumer";
@@ -91,24 +80,25 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
     private volatile Map<String, StreamDefinition> sds;
 
     /**
-     * FIXME one single changeNotifyService may have issues as possibly multiple spout tasks will register themselves and initialize service
+     * FIXME one single changeNotifyService may have issues as possibly multiple spout tasks will register themselves and initialize service.
+     *
      * @param config
      * @param topologyId
      * @param changeNotifyService
      * @param numOfRouterBolts
      */
-    public CorrelationSpout(Config config, String topologyId, IMetadataChangeNotifyService changeNotifyService, int numOfRouterBolts){
+    public CorrelationSpout(Config config, String topologyId, IMetadataChangeNotifyService changeNotifyService, int numOfRouterBolts) {
         this(config, topologyId, changeNotifyService, numOfRouterBolts, AlertConstants.DEFAULT_SPOUT_NAME, AlertConstants.DEFAULT_ROUTERBOLT_NAME);
     }
+
     /**
-     *
      * @param config
-     * @param topologyId used for distinguishing kafka offset for different topologies
+     * @param topologyId       used for distinguishing kafka offset for different topologies
      * @param numOfRouterBolts used for generating streamId and routing
-     * @param spoutName used for generating streamId between spout and router bolt
-     * @param routerBoltName used for generating streamId between spout and router bolt
+     * @param spoutName        used for generating streamId between spout and router bolt
+     * @param routerBoltName   used for generating streamId between spout and router bolt.
      */
-    public CorrelationSpout(Config config, String topologyId, IMetadataChangeNotifyService changeNotifyService, int numOfRouterBolts, String spoutName, String routerBoltName){
+    public CorrelationSpout(Config config, String topologyId, IMetadataChangeNotifyService changeNotifyService, int numOfRouterBolts, String spoutName, String routerBoltName) {
         this.config = config;
         this.topologyId = topologyId;
         this.changeNotifyService = changeNotifyService;
@@ -117,16 +107,17 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
         this.routeBoltName = routerBoltName;
     }
 
-    public String getSpoutName(){
+    public String getSpoutName() {
         return spoutName;
     }
 
-    public String getRouteBoltName(){
+    public String getRouteBoltName() {
         return routeBoltName;
     }
 
     /**
-     * the only output field is for StreamEvent
+     * the only output field is for StreamEvent.
+     *
      * @param declarer
      */
     @Override
@@ -141,7 +132,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
     @SuppressWarnings("rawtypes")
     @Override
     public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
-        if(LOG.isDebugEnabled()) {
+        if (LOG.isDebugEnabled()) {
             LOG.debug("open method invoked");
         }
         this.conf = conf;
@@ -165,9 +156,9 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
     @Override
     public void onSpoutSpecChange(SpoutSpec spec, Map<String, StreamDefinition> sds) {
         LOG.info("new metadata is updated " + spec);
-        try{
+        try {
             onReload(spec, sds);
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error("error applying new SpoutSpec", ex);
         }
     }
@@ -181,7 +172,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
 
     /**
      * find the correct wrapper to do ack that means msgId should be mapped to
-     * wrapper
+     * wrapper.
      *
      * @param msgId
      */
@@ -217,7 +208,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
             wrapper.close();
         }
     }
-    
+
     private List<String> getTopics(SpoutSpec spoutSpec) {
         List<String> meta = new ArrayList<String>();
         for (Kafka2TupleMetadata entry : spoutSpec.getKafka2TupleMetadataMap().values()) {
@@ -246,7 +237,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
         // copy and swap
         Map<String, KafkaSpoutWrapper> newKafkaSpoutList = new HashMap<>(this.kafkaSpoutList);
         // iterate new topics and then create KafkaSpout
-        for(String topic : newTopics){
+        for (String topic : newTopics) {
             KafkaSpoutWrapper wrapper = newKafkaSpoutList.get(topic);
             if (wrapper != null) {
                 LOG.warn(MessageFormat.format("try to create new topic {0}, but found in the active spout list, this may indicate some inconsistency", topic));
@@ -256,7 +247,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
             newKafkaSpoutList.put(topic, newWrapper);
         }
         // iterate remove topics and then close KafkaSpout
-        for(String topic : removeTopics){
+        for (String topic : removeTopics) {
             KafkaSpoutWrapper wrapper = newKafkaSpoutList.get(topic);
             if (wrapper == null) {
                 LOG.warn(MessageFormat.format("try to remove topic {0}, but not found in the active spout list, this may indicate some inconsistency", topic));
@@ -267,7 +258,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
         }
 
         // iterate update topic and then update metadata
-        for(String topic : updateTopics){
+        for (String topic : updateTopics) {
             KafkaSpoutWrapper spoutWrapper = newKafkaSpoutList.get(topic);
             if (spoutWrapper == null) {
                 LOG.warn(MessageFormat.format("try to update topic {0}, but not found in the active spout list, this may indicate some inconsistency", topic));
@@ -291,7 +282,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
      * Note2: put topologyId as part of zkState because one topic by design can be consumed by multiple topologies so one topology needs to know
      * processed offset for itself
      *
-     * TODO: Should avoid use Config.get in deep calling stack, should generate config bean as early as possible
+     * <p>TODO: Should avoid use Config.get in deep calling stack, should generate config bean as early as possible
      *
      * @param conf
      * @param context
@@ -302,7 +293,7 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
      */
     @SuppressWarnings("rawtypes")
     protected KafkaSpoutWrapper createKafkaSpout(Map conf, TopologyContext context, SpoutOutputCollector collector, final String topic,
-                                                 String schemeClsName, SpoutSpec spoutSpec, Map<String, StreamDefinition> sds) throws Exception{
+                                                 String schemeClsName, SpoutSpec spoutSpec, Map<String, StreamDefinition> sds) throws Exception {
         String kafkaBrokerZkQuorum = config.getString("spout.kafkaBrokerZkQuorum");
         BrokerHosts hosts = null;
         if (config.hasPath("spout.kafkaBrokerZkBasePath")) {
@@ -311,22 +302,22 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
             hosts = new ZkHosts(kafkaBrokerZkQuorum);
         }
         String transactionZkRoot = DEFAULT_STORM_KAFKA_TRANSACTION_ZK_ROOT;
-        if(config.hasPath("spout.stormKafkaTransactionZkPath")) {
+        if (config.hasPath("spout.stormKafkaTransactionZkPath")) {
             transactionZkRoot = config.getString("spout.stormKafkaTransactionZkPath");
         }
         // write partition offset etc. into zkRoot+id, see PartitionManager.committedPath
         String zkStateTransactionRelPath = DEFAULT_STORM_KAFKA_TRANSACTION_ZK_RELATIVE_PATH;
-        if(config.hasPath("spout.stormKafkaEagleConsumer")){
+        if (config.hasPath("spout.stormKafkaEagleConsumer")) {
             zkStateTransactionRelPath = config.getString("spout.stormKafkaEagleConsumer");
         }
         SpoutConfig spoutConfig = new SpoutConfig(hosts, topic, transactionZkRoot, zkStateTransactionRelPath + "/" + topic + "/" + topologyId);
         // transaction zkServers
         boolean stormKafkaUseSameZkQuorumWithKafkaBroker = config.getBoolean("spout.stormKafkaUseSameZkQuorumWithKafkaBroker");
-        if(stormKafkaUseSameZkQuorumWithKafkaBroker){
+        if (stormKafkaUseSameZkQuorumWithKafkaBroker) {
             ZkServerPortUtils utils = new ZkServerPortUtils(kafkaBrokerZkQuorum);
             spoutConfig.zkServers = utils.getZkHosts();
             spoutConfig.zkPort = utils.getZkPort();
-        }else{
+        } else {
             ZkServerPortUtils utils = new ZkServerPortUtils(config.getString("spout.stormKafkaTransactionZkQuorum"));
             spoutConfig.zkServers = utils.getZkHosts();
             spoutConfig.zkPort = utils.getZkPort();
@@ -342,9 +333,9 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
 
         spoutConfig.scheme = new SchemeAsMultiScheme(SchemeBuilder.buildFromClsName(schemeClsName, topic, conf));
         KafkaSpoutWrapper wrapper = new KafkaSpoutWrapper(spoutConfig, kafkaSpoutMetric);
-        SpoutOutputCollectorWrapper collectorWrapper = new SpoutOutputCollectorWrapper(this, collector, topic, spoutSpec, numOfRouterBolts, sds,this.serializer);
+        SpoutOutputCollectorWrapper collectorWrapper = new SpoutOutputCollectorWrapper(this, collector, topic, spoutSpec, numOfRouterBolts, sds, this.serializer);
         wrapper.open(conf, context, collectorWrapper);
-        
+
         if (LOG.isInfoEnabled()) {
             LOG.info("create and open kafka wrapper: topic {}, scheme class{} ", topic, schemeClsName);
         }
@@ -359,10 +350,11 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
     /**
      * utility to get list of zkServers and zkPort.(It is assumed that zkPort is same for all zkServers as storm-kafka library requires this though it is not efficient)
      */
-    private static class ZkServerPortUtils{
+    private static class ZkServerPortUtils {
         private List<String> zkHosts = new ArrayList<>();
         private Integer zkPort;
-        public ZkServerPortUtils(String zkQuorum){
+
+        public ZkServerPortUtils(String zkQuorum) {
             String[] zkConnections = zkQuorum.split(",");
             for (String zkConnection : zkConnections) {
                 zkHosts.add(zkConnection.split(":")[0]);
@@ -370,16 +362,16 @@ public class CorrelationSpout extends BaseRichSpout implements SpoutSpecListener
             zkPort = Integer.valueOf(zkConnections[0].split(":")[1]);
         }
 
-        public List<String> getZkHosts(){
+        public List<String> getZkHosts() {
             return zkHosts;
         }
 
-        public Integer getZkPort(){
+        public Integer getZkPort() {
             return zkPort;
         }
     }
 
-    protected void removeKafkaSpout(KafkaSpoutWrapper wrapper){
+    protected void removeKafkaSpout(KafkaSpoutWrapper wrapper) {
         try {
             wrapper.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CreateTopicUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CreateTopicUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CreateTopicUtils.java
index 22993b3..5b7e542 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CreateTopicUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/CreateTopicUtils.java
@@ -21,7 +21,7 @@ package org.apache.eagle.alert.engine.spout;
 import org.slf4j.Logger;
 
 /**
- * normally this is used in unit test for convenience
+ * normally this is used in unit test for convenience.
  */
 public class CreateTopicUtils {
 
@@ -31,13 +31,13 @@ public class CreateTopicUtils {
     private static final int replicationFactor = 1;
 
     public static void ensureTopicReady(String zkQuorum, String topic) {
-//        ZkConnection zkConnection = new ZkConnection(zkQuorum);
-//        ZkClient zkClient = new ZkClient(zkQuorum, 10000, 10000, ZKStringSerializer$.MODULE$);
-////        ZkUtils zkUtils = new ZkUtils(zkClient, zkConnection, false);
-//        if (!AdminUtils.topicExists(zkClient, topic)) {
-//            LOG.info("create topic " + topic + " with partitions " + partitions + ", and replicationFactor "
-//                    + replicationFactor);
-//            AdminUtils.createTopic(zkClient, topic, partitions, replicationFactor, new Properties());
-//        }
+        //        ZkConnection zkConnection = new ZkConnection(zkQuorum);
+        //        ZkClient zkClient = new ZkClient(zkQuorum, 10000, 10000, ZKStringSerializer$.MODULE$);
+        ////        ZkUtils zkUtils = new ZkUtils(zkClient, zkConnection, false);
+        //        if (!AdminUtils.topicExists(zkClient, topic)) {
+        //            LOG.info("create topic " + topic + " with partitions " + partitions + ", and replicationFactor "
+        //                    + replicationFactor);
+        //            AdminUtils.createTopic(zkClient, topic, partitions, replicationFactor, new Properties());
+        //        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/ISpoutSpecLCM.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/ISpoutSpecLCM.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/ISpoutSpecLCM.java
index 23e94c3..3c8c99d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/ISpoutSpecLCM.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/ISpoutSpecLCM.java
@@ -19,22 +19,23 @@
 
 package org.apache.eagle.alert.engine.spout;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 
+import java.util.Map;
+
 /**
  * topic to stream metadata lifecycle method
  * one topic may spawn multiple streams, the metadata change includes
  * 1. add/remove stream
  * 2. for a specific stream, groupingstrategy is changed
- *    ex1, this stream has more alert bolts than before, then this spout would take more traffic
- *    ex2, this stream has less alert bolts than before, then this spout would take less traffic
+ * ex1, this stream has more alert bolts than before, then this spout would take more traffic
+ * ex2, this stream has less alert bolts than before, then this spout would take less traffic
  */
 public interface ISpoutSpecLCM {
     /**
      * stream metadata is used for SPOUT to filter traffic and route traffic to following groupby bolts.
+     *
      * @param metadata
      */
     void update(SpoutSpec metadata, Map<String, StreamDefinition> sds);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/KafkaMessageIdWrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/KafkaMessageIdWrapper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/KafkaMessageIdWrapper.java
index c786c01..ccd3493 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/KafkaMessageIdWrapper.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/KafkaMessageIdWrapper.java
@@ -26,13 +26,15 @@ import com.fasterxml.jackson.databind.ObjectMapper;
  */
 public class KafkaMessageIdWrapper {
     public Object id;
-    public KafkaMessageIdWrapper(Object o){
+
+    public KafkaMessageIdWrapper(Object o) {
         this.id = o;
     }
+
     public String topic;
-    private final static ObjectMapper objectMapper = new ObjectMapper();
+    private static final ObjectMapper objectMapper = new ObjectMapper();
 
-    public String toString(){
+    public String toString() {
         try {
             return String.format("KafkaMessageIdWrapper[topic=%s, id=%s]", topic, objectMapper.writeValueAsString(id));
         } catch (JsonProcessingException e) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SchemeBuilder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SchemeBuilder.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SchemeBuilder.java
index bfd5da7..f1945be 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SchemeBuilder.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SchemeBuilder.java
@@ -19,21 +19,21 @@
 
 package org.apache.eagle.alert.engine.spout;
 
-import java.util.Map;
-
 import backtype.storm.spout.Scheme;
 
+import java.util.Map;
+
 
 /**
  * All Scheme implementations should have the following conditions
  * 1) implement Scheme interface
- * 2) has one constructor with topic name as parameter
+ * 2) has one constructor with topic name as parameter.
  */
 public class SchemeBuilder {
 
     @SuppressWarnings("rawtypes")
-    public static Scheme buildFromClsName(String clsName, String topic, Map conf) throws Exception{
+    public static Scheme buildFromClsName(String clsName, String topic, Map conf) throws Exception {
         Object o = Class.forName(clsName).getConstructor(String.class, Map.class).newInstance(topic, conf);
-        return (Scheme)o;
+        return (Scheme) o;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SpoutOutputCollectorWrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SpoutOutputCollectorWrapper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SpoutOutputCollectorWrapper.java
index 2f7cc68..a8dcc0d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SpoutOutputCollectorWrapper.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/spout/SpoutOutputCollectorWrapper.java
@@ -18,11 +18,6 @@
  */
 package org.apache.eagle.alert.engine.spout;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
 import org.apache.eagle.alert.coordination.model.StreamRepartitionMetadata;
 import org.apache.eagle.alert.coordination.model.StreamRepartitionStrategy;
@@ -34,17 +29,21 @@ import org.apache.eagle.alert.engine.model.StreamEvent;
 import org.apache.eagle.alert.engine.serialization.PartitionedEventSerializer;
 import org.apache.eagle.alert.engine.serialization.SerializationMetadataProvider;
 import org.apache.eagle.alert.utils.StreamIdConversion;
+import backtype.storm.spout.ISpoutOutputCollector;
+import backtype.storm.spout.SpoutOutputCollector;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.spout.ISpoutOutputCollector;
-import backtype.storm.spout.SpoutOutputCollector;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 /**
  * intercept the message sent from within KafkaSpout and select downstream bolts based on meta-data
- * This is topic based. each topic will have one SpoutOutputCollectorWrapper
+ * This is topic based. each topic will have one SpoutOutputCollectorWrapper.
  */
-public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements ISpoutSpecLCM,SerializationMetadataProvider {
+public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements ISpoutSpecLCM, SerializationMetadataProvider {
     private static final Logger LOG = LoggerFactory.getLogger(SpoutOutputCollectorWrapper.class);
 
     private final ISpoutOutputCollector delegate;
@@ -58,9 +57,9 @@ public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements
     private volatile Map<String, StreamDefinition> sds;
 
     /**
-     * @param delegate   actual SpoutOutputCollector to send data to following bolts
-     * @param topic      topic for this KafkaSpout to handle
-     * @param numGroupbyBolts bolts following this spout
+     * @param delegate        actual SpoutOutputCollector to send data to following bolts
+     * @param topic           topic for this KafkaSpout to handle
+     * @param numGroupbyBolts bolts following this spout.
      * @param serializer
      */
     public SpoutOutputCollectorWrapper(CorrelationSpout spout,
@@ -83,31 +82,31 @@ public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements
     /**
      * How to assert that numTotalGroupbyBolts >= numOfRouterBolts, otherwise
      * there is runtime issue by default, tuple includes 2 fields field 1: topic
-     * name field 2: map of key/value
+     * name field 2: map of key/value.
      */
     @SuppressWarnings("rawtypes")
     @Override
     public List<Integer> emit(List<Object> tuple, Object messageId) {
         if (!sanityCheck()) {
             LOG.error(
-                    "spout collector for topic {} see monitored metadata invalid, is this data source removed! Trigger message id {} ",
-                    topic, messageId);
+                "spout collector for topic {} see monitored metadata invalid, is this data source removed! Trigger message id {} ",
+                topic, messageId);
             return null;
         }
 
         KafkaMessageIdWrapper newMessageId = new KafkaMessageIdWrapper(messageId);
         newMessageId.topic = topic;
         /**
-            phase 1: tuple to stream converter
-            if this topic multiplexes multiple streams, then retrieve the individual streams
-        */
+         phase 1: tuple to stream converter
+         if this topic multiplexes multiple streams, then retrieve the individual streams.
+         */
         List<Object> convertedTuple = converter.convert(tuple);
-        if(convertedTuple == null) {
+        if (convertedTuple == null) {
             LOG.warn("source data {} can't be converted to a stream, ignore this message", tuple);
             spout.ack(newMessageId);
             return null;
         }
-        Map m = (Map)convertedTuple.get(3);
+        Map m = (Map) convertedTuple.get(3);
         Object streamId = convertedTuple.get(1);
 
         StreamDefinition sd = sds.get(streamId);
@@ -117,24 +116,24 @@ public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements
             return null;
         }
 
-        StreamEvent event = convertToStreamEventByStreamDefinition((Long)convertedTuple.get(2), m, sds.get(streamId));
+        StreamEvent event = convertToStreamEventByStreamDefinition((Long) convertedTuple.get(2), m, sds.get(streamId));
         /*
             phase 2: stream repartition
         */
-        for(StreamRepartitionMetadata md : streamRepartitionMetadataList) {
+        for (StreamRepartitionMetadata md : streamRepartitionMetadataList) {
             // one stream may have multiple group-by strategies, each strategy is for a specific group-by
-            for(StreamRepartitionStrategy groupingStrategy : md.groupingStrategies){
+            for (StreamRepartitionStrategy groupingStrategy : md.groupingStrategies) {
                 int hash = 0;
-                if(groupingStrategy.getPartition().getType().equals(StreamPartition.Type.GROUPBY)) {
+                if (groupingStrategy.getPartition().getType().equals(StreamPartition.Type.GROUPBY)) {
                     hash = getRoutingHashByGroupingStrategy(m, groupingStrategy);
-                }else if(groupingStrategy.getPartition().getType().equals(StreamPartition.Type.SHUFFLE)){
-                    hash = Math.abs((int)System.currentTimeMillis());
+                } else if (groupingStrategy.getPartition().getType().equals(StreamPartition.Type.SHUFFLE)) {
+                    hash = Math.abs((int) System.currentTimeMillis());
                 }
                 int mod = hash % groupingStrategy.numTotalParticipatingRouterBolts;
                 // filter out message
                 if (mod >= groupingStrategy.startSequence && mod < groupingStrategy.startSequence + numOfRouterBolts) {
                     // framework takes care of field grouping instead of using storm internal field grouping
-                    String sid = StreamIdConversion.generateStreamIdBetween(spout.getSpoutName(), spout.getRouteBoltName()+ (hash % numOfRouterBolts));
+                    String sid = StreamIdConversion.generateStreamIdBetween(spout.getSpoutName(), spout.getRouteBoltName() + (hash % numOfRouterBolts));
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("Emitted tuple: {} with message Id: {}, with topic {}, to streamId {}", convertedTuple, messageId, topic, sid);
                     }
@@ -154,9 +153,9 @@ public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements
                     // ******* short-cut ack ********
                     // we should simply ack those messages which are not processed in this topology because KafkaSpout implementation requires _pending is empty
                     // before moving to next offsets.
-                    if(LOG.isDebugEnabled()){
+                    if (LOG.isDebugEnabled()) {
                         LOG.debug("Message filtered with mod {} not within range {} and {} for message {}", mod, groupingStrategy.startSequence,
-                                groupingStrategy.startSequence+ numOfRouterBolts, tuple);
+                            groupingStrategy.startSequence + numOfRouterBolts, tuple);
                     }
                     spout.ack(newMessageId);
                 }
@@ -167,11 +166,11 @@ public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements
     }
 
     @SuppressWarnings("rawtypes")
-    private int getRoutingHashByGroupingStrategy(Map data, StreamRepartitionStrategy gs){
+    private int getRoutingHashByGroupingStrategy(Map data, StreamRepartitionStrategy gs) {
         // calculate hash value for values from group-by fields
         HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
-        for(String groupingField : gs.partition.getColumns()) {
-            if(data.get(groupingField) != null){
+        for (String groupingField : gs.partition.getColumns()) {
+            if (data.get(groupingField) != null) {
                 hashCodeBuilder.append(data.get(groupingField));
             } else {
                 LOG.warn("Required GroupBy fields {} not found: {}", gs.partition.getColumns(), data);
@@ -195,13 +194,14 @@ public class SpoutOutputCollectorWrapper extends SpoutOutputCollector implements
         return isOk;
     }
 
-    @SuppressWarnings({ "rawtypes", "unchecked" })
-    private StreamEvent convertToStreamEventByStreamDefinition(long timestamp, Map m, StreamDefinition sd){
-        return StreamEvent.Builder().timestamep(timestamp).attributes(m,sd).build();
+    @SuppressWarnings( {"rawtypes", "unchecked"})
+    private StreamEvent convertToStreamEventByStreamDefinition(long timestamp, Map m, StreamDefinition sd) {
+        return StreamEvent.builder().timestamep(timestamp).attributes(m, sd).build();
     }
 
     /**
-     * SpoutSpec may be changed, this class will respond to changes on tuple2StreamMetadataMap and streamRepartitionMetadataMap
+     * SpoutSpec may be changed, this class will respond to changes on tuple2StreamMetadataMap and streamRepartitionMetadataMap.
+     *
      * @param spoutSpec
      * @param sds
      */

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/CompressionUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/CompressionUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/CompressionUtils.java
index 0fbe7b3..075d827 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/CompressionUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/CompressionUtils.java
@@ -16,6 +16,8 @@
  */
 package org.apache.eagle.alert.engine.utils;
 
+import com.google.common.io.ByteStreams;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -23,8 +25,6 @@ import java.io.OutputStream;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 
-import com.google.common.io.ByteStreams;
-
 
 public class CompressionUtils {
     public static byte[] compress(byte[] source) throws IOException {
@@ -45,7 +45,7 @@ public class CompressionUtils {
         }
     }
 
-    public static byte[] decompress(byte[] compressed) throws IOException{
+    public static byte[] decompress(byte[] compressed) throws IOException {
         if (compressed == null || compressed.length == 0) {
             return compressed;
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/MetadataSerDeser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/MetadataSerDeser.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/MetadataSerDeser.java
index 1060d32..f6da4a9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/MetadataSerDeser.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/MetadataSerDeser.java
@@ -19,14 +19,14 @@
 
 package org.apache.eagle.alert.engine.utils;
 
-import java.io.InputStream;
-
 import org.codehaus.jackson.JsonParser;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.type.TypeReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.InputStream;
+
 /**
  * Since 5/6/16.
  */
@@ -34,64 +34,69 @@ public class MetadataSerDeser {
     private static final Logger LOG = LoggerFactory.getLogger(MetadataSerDeser.class);
 
     @SuppressWarnings("rawtypes")
-    public static <K> K deserialize(InputStream is, TypeReference typeRef){
+    public static <K> K deserialize(InputStream is, TypeReference typeRef) {
         ObjectMapper mapper = new ObjectMapper();
         try {
             K spec = mapper.readValue(is, typeRef);
             return spec;
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error("error in deserializing metadata of type {} from input stream",
-                    new TypeReference<K>(){}.getType().getClass().getCanonicalName(), ex);
+                new TypeReference<K>() {
+                }.getType().getClass().getCanonicalName(), ex);
         }
         return null;
     }
 
-    public static <K> K deserialize(InputStream is, Class<K> cls){
+    public static <K> K deserialize(InputStream is, Class<K> cls) {
         ObjectMapper mapper = new ObjectMapper();
-        mapper.configure(JsonParser.Feature.ALLOW_COMMENTS,true);
+        mapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
         try {
             K spec = mapper.readValue(is, cls);
             return spec;
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error("Got error to deserialize metadata of type {} from input stream",
-                    new TypeReference<K>(){}.getType().getClass().getCanonicalName(), ex);
+                new TypeReference<K>() {
+                }.getType().getClass().getCanonicalName(), ex);
         }
         return null;
     }
 
     @SuppressWarnings("rawtypes")
-    public static <K> K deserialize(String json, TypeReference typeRef){
+    public static <K> K deserialize(String json, TypeReference typeRef) {
         ObjectMapper mapper = new ObjectMapper();
         try {
             K spec = mapper.readValue(json, typeRef);
             return spec;
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error("error in deserializing metadata of type {} from {}",
-                    new TypeReference<K>(){}.getType().getClass().getCanonicalName(), json, ex);
+                new TypeReference<K>() {
+                }.getType().getClass().getCanonicalName(), json, ex);
         }
         return null;
     }
 
-    public static <K> K deserialize(String json, Class<K> cls){
+    public static <K> K deserialize(String json, Class<K> cls) {
         ObjectMapper mapper = new ObjectMapper();
         try {
             K spec = mapper.readValue(json, cls);
             return spec;
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error("error in deserializing metadata of type {} from {}",
-                    new TypeReference<K>(){}.getType().getClass().getCanonicalName(), json, ex);
+                new TypeReference<K>() {
+                }.getType().getClass().getCanonicalName(), json, ex);
         }
         return null;
     }
 
-    public static <K> String serialize(K spec){
+    public static <K> String serialize(K spec) {
         ObjectMapper mapper = new ObjectMapper();
-        try{
+        try {
             String json = mapper.writeValueAsString(spec);
             return json;
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error("error in serializing object {} with type {}", spec,
-                    new TypeReference<K>(){}.getType().getClass().getCanonicalName(), ex);
+                new TypeReference<K>() {
+                }.getType().getClass().getCanonicalName(), ex);
         }
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/SerializableUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/SerializableUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/SerializableUtils.java
index 090d61c..509cbf4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/SerializableUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/utils/SerializableUtils.java
@@ -19,12 +19,7 @@ package org.apache.eagle.alert.engine.utils;
 import org.xerial.snappy.SnappyInputStream;
 import org.xerial.snappy.SnappyOutputStream;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
+import java.io.*;
 
 
 /**
@@ -46,8 +41,8 @@ public class SerializableUtils {
             return buffer.toByteArray();
         } catch (IOException exn) {
             throw new IllegalArgumentException(
-                    "unable to serialize " + value,
-                    exn);
+                "unable to serialize " + value,
+                exn);
         }
     }
 
@@ -84,8 +79,8 @@ public class SerializableUtils {
             }
         } catch (IOException | ClassNotFoundException exn) {
             throw new IllegalArgumentException(
-                    "unable to deserialize " + description,
-                    exn);
+                "unable to deserialize " + description,
+                exn);
         }
     }
 
@@ -101,27 +96,27 @@ public class SerializableUtils {
                                                             String description) {
         try {
             try (ObjectInputStream ois = new ObjectInputStream(
-                    new SnappyInputStream(new ByteArrayInputStream(encodedValue)))) {
+                new SnappyInputStream(new ByteArrayInputStream(encodedValue)))) {
                 return ois.readObject();
             }
         } catch (IOException | ClassNotFoundException exn) {
             throw new IllegalArgumentException(
-                    "unable to deserialize " + description,
-                    exn);
+                "unable to deserialize " + description,
+                exn);
         }
     }
 
     public static <T extends Serializable> T ensureSerializable(T value) {
         @SuppressWarnings("unchecked")
         T copy = (T) deserializeFromCompressedByteArray(serializeToCompressedByteArray(value),
-                value.toString());
+            value.toString());
         return copy;
     }
 
     public static <T extends Serializable> T clone(T value) {
         @SuppressWarnings("unchecked")
         T copy = (T) deserializeFromCompressedByteArray(serializeToCompressedByteArray(value),
-                value.toString());
+            value.toString());
         return copy;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutMetric.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutMetric.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutMetric.java
index dd58172..341e665 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutMetric.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutMetric.java
@@ -16,27 +16,22 @@
  */
 package storm.kafka;
 
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
+import backtype.storm.metric.api.IMetric;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.metric.api.IMetric;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Since 5/18/16.
  * The original storm.kafka.KafkaSpout has some issues like the following
  * 1) can only support one single topic
- * 2) can only be initialized at open(), can't dynamically support another topic
+ * 2) can only be initialized at open(), can't dynamically support another topic.
  */
 public class KafkaSpoutMetric implements IMetric {
     @SuppressWarnings("unused")
-    private final static Logger LOG = LoggerFactory.getLogger(KafkaSpoutMetric.class);
+    private static final Logger LOG = LoggerFactory.getLogger(KafkaSpoutMetric.class);
     private Map<String, KafkaSpoutMetricContext> metricContextMap = new ConcurrentHashMap<>();
     private Map<String, KafkaUtils.KafkaOffsetMetric> offsetMetricMap = new ConcurrentHashMap<>();
 
@@ -58,7 +53,7 @@ public class KafkaSpoutMetric implements IMetric {
         offsetMetricMap.remove(topic);
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+    @SuppressWarnings( {"unchecked", "rawtypes"})
     @Override
     public Object getValueAndReset() {
         HashMap spoutMetric = new HashMap();
@@ -76,16 +71,16 @@ public class KafkaSpoutMetric implements IMetric {
                 offsetMetric.setLatestEmittedOffset(pm.getPartition(), pm.lastCompletedOffset());
             }
             Object o = offsetMetric.getValueAndReset();
-            if(o != null) {
+            if (o != null) {
                 ((HashMap) o).forEach(
-                        (k, v) -> spoutMetric.put(k + "_" + entry.getKey(), v)
+                    (k, v) -> spoutMetric.put(k + "_" + entry.getKey(), v)
                 );
             }
 
             // construct partition metric
             for (PartitionManager pm : pms) {
                 pm.getMetricsDataMap().forEach(
-                        (k, v) -> spoutMetric.put(k + "_" + entry.getKey(), v)
+                    (k, v) -> spoutMetric.put(k + "_" + entry.getKey(), v)
                 );
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutWrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutWrapper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutWrapper.java
index 1cef187..7ed9193 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutWrapper.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/storm/kafka/KafkaSpoutWrapper.java
@@ -18,29 +18,29 @@
  */
 package storm.kafka;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.spout.ISpoutSpecLCM;
 import org.apache.eagle.alert.engine.spout.SpoutOutputCollectorWrapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import backtype.storm.Config;
 import backtype.storm.spout.SpoutOutputCollector;
 import backtype.storm.task.TopologyContext;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * NOTE!!!!! This class copy/paste some code from storm.kafka.KafkaSpout to make sure it can support one process to hold multiple
  * KafkaSpout
  *
- * this collectorWrapper provides the following capabilities:
+ * <p>this collectorWrapper provides the following capabilities:
  * 1. inject customized collector collectorWrapper, so framework can control traffic routing
  * 2. listen to topic to stream metadata change and pass that to customized collector collectorWrapper
- * 3. return current streams for this topic
+ * 3. return current streams for this topic</p>
  */
 public class KafkaSpoutWrapper extends KafkaSpout implements ISpoutSpecLCM {
     private static final long serialVersionUID = 5507693757424351306L;
@@ -55,7 +55,7 @@ public class KafkaSpoutWrapper extends KafkaSpout implements ISpoutSpecLCM {
 
     private SpoutOutputCollectorWrapper collectorWrapper;
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+    @SuppressWarnings( {"unchecked", "rawtypes"})
     @Override
     public void open(Map conf, final TopologyContext context, final SpoutOutputCollector collector) {
         String topologyInstanceId = context.getStormId();
@@ -95,16 +95,16 @@ public class KafkaSpoutWrapper extends KafkaSpout implements ISpoutSpecLCM {
         metricContext._spoutConfig = _spoutConfig;
         kafkaSpoutMetric.addTopic(_spoutConfig.topic, metricContext);
 
-        this.collectorWrapper = (SpoutOutputCollectorWrapper)collector;
+        this.collectorWrapper = (SpoutOutputCollectorWrapper) collector;
     }
 
     @Override
-    public void update(SpoutSpec metadata, Map<String, StreamDefinition> sds){
+    public void update(SpoutSpec metadata, Map<String, StreamDefinition> sds) {
         collectorWrapper.update(metadata, sds);
     }
 
     @Override
-    public void close(){
+    public void close() {
         super.close();
         kafkaSpoutMetric.removeTopic(_spoutConfig.topic);
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/ALERT_DEFAULT.vm
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/ALERT_DEFAULT.vm b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/ALERT_DEFAULT.vm
index 2da6288..965480e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/ALERT_DEFAULT.vm
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/ALERT_DEFAULT.vm
@@ -16,252 +16,264 @@
   -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-		<meta name="viewport" content="width=device-width"/>
-		<style>
-			body {
-				width:100% !important;
-				min-width: 100%;
-				-webkit-text-size-adjust:100%;
-				-ms-text-size-adjust:100%;
-				margin:0;
-				padding:0;
-			}
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="viewport" content="width=device-width"/>
+    <style>
+        body {
+            width: 100% !important;
+            min-width: 100%;
+            -webkit-text-size-adjust: 100%;
+            -ms-text-size-adjust: 100%;
+            margin: 0;
+            padding: 0;
+        }
 
-			table {
-				border-spacing: 0;
-				border-collapse: collapse;
-			}
+        table {
+            border-spacing: 0;
+            border-collapse: collapse;
+        }
 
-			table th,
-			table td {
-				padding: 3px 0 3px 0;
-			}
+        table th,
+        table td {
+            padding: 3px 0 3px 0;
+        }
 
-			.body {
-				width: 100%;
-			}
+        .body {
+            width: 100%;
+        }
 
-			p,a,h1,h2,h3,ul,ol,li {
-				font-family: Helvetica, Arial, sans-serif;
-				font-weight: normal;
-				margin: 0;
-				padding: 0;
-			}
-			p {
-				font-size: 14px;
-				line-height: 19px;
-			}
-			a {
-				color: #3294b1;
-			}
-			h1 {
-				font-size: 36px;
-				margin: 15px 0 5px 0;
-			}
-			h2 {
-				font-size: 32px;
-			}
-			h3 {
-				font-size: 28px;
-			}
+        p, a, h1, h2, h3, ul, ol, li {
+            font-family: Helvetica, Arial, sans-serif;
+            font-weight: normal;
+            margin: 0;
+            padding: 0;
+        }
 
-			ul,ol {
-				margin: 0 0 0 25px;
-				padding: 0;
-			}
+        p {
+            font-size: 14px;
+            line-height: 19px;
+        }
 
-			.btn {
-				background: #2ba6cb !important;
-				border: 1px solid #2284a1;
-				padding: 10px 20px 10px 20px;
-				text-align: center;
-			}
-			.btn:hover {
-				background: #2795b6 !important;
-			}
-			.btn a {
-				color: #FFFFFF;
-				text-decoration: none;
-				font-weight: bold;
-				padding: 10px 20px 10px 20px;
-			}
+        a {
+            color: #3294b1;
+        }
 
-			.tableBordered {
-				border-top: 1px solid #b9e5ff;
-			}
-			.tableBordered th {
-				background: #ECF8FF;
-			}
-			.tableBordered th p {
-				font-weight: bold;
-				color: #3294b1;
-			}
-			.tableBordered th,
-			.tableBordered td {
-				color: #333333;
-				border-bottom: 1px solid #b9e5ff;
-				text-align: center;
-				padding-bottom: 5px;
-			}
+        h1 {
+            font-size: 36px;
+            margin: 15px 0 5px 0;
+        }
 
-			.panel {
-				height: 100px;
-			}
-		</style>
-	</head>
-	<body>
-		#set ( $elem = $alertList[0] )
-		#set ( $alertUrl = $elem["alertDetailUrl"] )
-		#set ( $policyUrl = $elem["policyDetailUrl"] )
-		<table class="body">
-			<tr>
-				<td align="center" valign="top" style="background: #999999; padding: 0 0 0 0;">
-					<!-- Header -->
-					<table width="580">
-						<tr>
-							<td style="padding: 0 0 0 0;" align="left" >
-								<p style="color:#FFFFFF;font-weight: bold; font-size: 22px">UMP Alerts</p>
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
+        h2 {
+            font-size: 32px;
+        }
 
-			<tr>
-				<td align="center" valign="top">
-					<!-- Eagle Body -->
-					<table width="580">
-						<tr>
-							<!-- Title -->
-							<td align="center">
-								<h1>$elem["streamId"] Alert Detected</h1>
-							</td>
-						</tr>
-						<tr>
-							<!-- Time -->
-							<td>
-								<table width="580">
-									<tr>
-										<td>
-											<p><b>Detected Time: $elem["alertTime"]</b></p>
-										</td>
-										#set ( $severity = $elem["severity"] )
-										#if (!$severity || ("$severity" == ""))
-											#set ( $elem["severity"] = "WARNING")
-										#end
-										<td align="right">
-											<p><b>
-												Severity:
-									            #if ($elem["severity"] == "WARNING")
-													<span>$elem["severity"]</span>												
-    											#else
-													<span style="color: #FF0000;">$elem["severity"]</span>
-    											#end
-											</b></p>
-										</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-						<tr>
-							<!-- Description -->
-							<td valign="top" style="background: #ECF8FF; border: 1px solid #b9e5ff; padding: 10px 10px 12px 10px;">
-								<p>$elem["alertMessage"]</p>
-							</td>
-						</tr>
-						<tr>
-							<!-- View Detail -->
-							<td align="center" style="padding: 10px 0 0 0;">
-								<table width="580">
-									<tr>
-										<td class="btn">
-											<a href="$alertUrl">View Alert Details on Eagle Web</a>
-										</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-						<tr>
-							<!-- Basic Information -->
-							<td style="padding: 20px 0 0 0;">
-								<p><b>Basic Information:</b></p>
-							</td>
-						</tr>
-						<tr>
-							<!-- Basic Information Content -->
-							<td>
-								<table class="tableBordered" width="580">
-									<tr>
-										<th>
-											<p>Policy Name</p>
-										</th>
-										<th>
-											<p>Data Source</p>
-										</th>
-									</tr>
-									<tr>
-										<td>
-											<p>$elem["policyId"]</p>
-										</td>
-										<td>
-											<p>$elem["streamId"]</p>
-										</td>
-									</tr>
-									<tr>
+        h3 {
+            font-size: 28px;
+        }
 
-										<th>
-											<p>Creator</p>
-										</th>
-										<th>
-											<p>Severity</p>
-										</th>
-									</tr>
-									<tr>
-										<td>
-											<p>$elem["creator"]</p>
-										</td>
-										<td>
-											<p>$elem["severity"]</p>
-										</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-						<tr>
-							<!-- View Detail -->
-							<td align="center" style="padding: 10px 0 0 0;">
-								<table width="580">
-									<tr>
-										<td class="btn">
-											<a href="$policyUrl">View Policy Details on Eagle Web</a>
-										</td>
-									</tr>
-								</table>
-							</td>
-						</tr>						
-						<tr>
-							<!-- Actions Required -->
-							<td style="padding: 20px 0 0 0;">
-								<p><b>Actions Required:</b></p>
-							</td>
-						</tr>
-						<tr>
-							<!-- Possible Root Causes Content -->
-							<td class="panel" valign="top" style="background: #F4F4F4; border: 1px solid #AAAAAA; padding: 10px 10px 12px 10px;">
-								<p> $elem["streamId"] alert found, please check.</p>
-							</td>
-						</tr>
-						<tr>
-							<!-- Copyright -->
-							<td align="center">
-								<p><a href="<Eagle-Host>/alerts/alertlist.html">UMP Alert Engine</a></p>
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
+        ul, ol {
+            margin: 0 0 0 25px;
+            padding: 0;
+        }
+
+        .btn {
+            background: #2ba6cb !important;
+            border: 1px solid #2284a1;
+            padding: 10px 20px 10px 20px;
+            text-align: center;
+        }
+
+        .btn:hover {
+            background: #2795b6 !important;
+        }
+
+        .btn a {
+            color: #FFFFFF;
+            text-decoration: none;
+            font-weight: bold;
+            padding: 10px 20px 10px 20px;
+        }
+
+        .tableBordered {
+            border-top: 1px solid #b9e5ff;
+        }
+
+        .tableBordered th {
+            background: #ECF8FF;
+        }
+
+        .tableBordered th p {
+            font-weight: bold;
+            color: #3294b1;
+        }
+
+        .tableBordered th,
+        .tableBordered td {
+            color: #333333;
+            border-bottom: 1px solid #b9e5ff;
+            text-align: center;
+            padding-bottom: 5px;
+        }
+
+        .panel {
+            height: 100px;
+        }
+    </style>
+</head>
+<body>
+    #set ( $elem = $alertList[0] )
+    #set ( $alertUrl = $elem["alertDetailUrl"] )
+    #set ( $policyUrl = $elem["policyDetailUrl"] )
+<table class="body">
+    <tr>
+        <td align="center" valign="top" style="background: #999999; padding: 0 0 0 0;">
+            <!-- Header -->
+            <table width="580">
+                <tr>
+                    <td style="padding: 0 0 0 0;" align="left">
+                        <p style="color:#FFFFFF;font-weight: bold; font-size: 22px">UMP Alerts</p>
+                    </td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+
+    <tr>
+        <td align="center" valign="top">
+            <!-- Eagle Body -->
+            <table width="580">
+                <tr>
+                    <!-- Title -->
+                    <td align="center">
+                        <h1>$elem["streamId"] Alert Detected</h1>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- Time -->
+                    <td>
+                        <table width="580">
+                            <tr>
+                                <td>
+                                    <p><b>Detected Time: $elem["alertTime"]</b></p>
+                                </td>
+                                #set ( $severity = $elem["severity"] )
+                                #if (!$severity || ("$severity" == ""))
+                                    #set ( $elem["severity"] = "WARNING")
+                                #end
+                                <td align="right">
+                                    <p><b>
+                                        Severity:
+                                        #if ($elem["severity"] == "WARNING")
+                                            <span>$elem["severity"]</span>
+                                        #else
+                                            <span style="color: #FF0000;">$elem["severity"]</span>
+                                        #end
+                                    </b></p>
+                                </td>
+                            </tr>
+                        </table>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- Description -->
+                    <td valign="top"
+                        style="background: #ECF8FF; border: 1px solid #b9e5ff; padding: 10px 10px 12px 10px;">
+                        <p>$elem["alertMessage"]</p>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- View Detail -->
+                    <td align="center" style="padding: 10px 0 0 0;">
+                        <table width="580">
+                            <tr>
+                                <td class="btn">
+                                    <a href="$alertUrl">View Alert Details on Eagle Web</a>
+                                </td>
+                            </tr>
+                        </table>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- Basic Information -->
+                    <td style="padding: 20px 0 0 0;">
+                        <p><b>Basic Information:</b></p>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- Basic Information Content -->
+                    <td>
+                        <table class="tableBordered" width="580">
+                            <tr>
+                                <th>
+                                    <p>Policy Name</p>
+                                </th>
+                                <th>
+                                    <p>Data Source</p>
+                                </th>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <p>$elem["policyId"]</p>
+                                </td>
+                                <td>
+                                    <p>$elem["streamId"]</p>
+                                </td>
+                            </tr>
+                            <tr>
+
+                                <th>
+                                    <p>Creator</p>
+                                </th>
+                                <th>
+                                    <p>Severity</p>
+                                </th>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <p>$elem["creator"]</p>
+                                </td>
+                                <td>
+                                    <p>$elem["severity"]</p>
+                                </td>
+                            </tr>
+                        </table>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- View Detail -->
+                    <td align="center" style="padding: 10px 0 0 0;">
+                        <table width="580">
+                            <tr>
+                                <td class="btn">
+                                    <a href="$policyUrl">View Policy Details on Eagle Web</a>
+                                </td>
+                            </tr>
+                        </table>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- Actions Required -->
+                    <td style="padding: 20px 0 0 0;">
+                        <p><b>Actions Required:</b></p>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- Possible Root Causes Content -->
+                    <td class="panel" valign="top"
+                        style="background: #F4F4F4; border: 1px solid #AAAAAA; padding: 10px 10px 12px 10px;">
+                        <p> $elem["streamId"] alert found, please check.</p>
+                    </td>
+                </tr>
+                <tr>
+                    <!-- Copyright -->
+                    <td align="center">
+                        <p><a href="<Eagle-Host>/alerts/alertlist.html">UMP Alert Engine</a></p>
+                    </td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+</table>
+</body>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/application.conf b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/application.conf
index dac2f07..754c00b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/application.conf
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/application.conf
@@ -13,17 +13,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
-  "topology" : {
-    "name" : "alertUnitTopology_1",
-    "numOfTotalWorkers" : 2,
-    "numOfSpoutTasks" : 1,
-    "numOfRouterBolts" : 4,
-    "numOfAlertBolts" : 10,
-    "numOfPublishTasks" : 1,
+  "topology": {
+    "name": "alertUnitTopology_1",
+    "numOfTotalWorkers": 2,
+    "numOfSpoutTasks": 1,
+    "numOfRouterBolts": 4,
+    "numOfAlertBolts": 10,
+    "numOfPublishTasks": 1,
     "messageTimeoutSecs": 3600,
-    "localMode" : "true"
+    "localMode": "true"
   },
-  "spout" : {
+  "spout": {
     "kafkaBrokerZkQuorum": "server.eagle.apache.org:2181",
     "kafkaBrokerZkBasePath": "/kafka",
     "stormKafkaUseSameZkQuorumWithKafkaBroker": true,
@@ -31,16 +31,16 @@
     "stormKafkaTransactionZkPath": "/consumers",
     "stormKafkaEagleConsumer": "eagle_consumer"
   },
-  "zkConfig" : {
-    "zkQuorum" : "server.eagle.apache.org:2181",
-    "zkRoot" : "/alert"
+  "zkConfig": {
+    "zkQuorum": "server.eagle.apache.org:2181",
+    "zkRoot": "/alert"
   },
   "metadataService": {
-    "context" : "/rest",
-    "host" : "localhost",
-    "port" : 9090
+    "context": "/rest",
+    "host": "localhost",
+    "port": 9090
   },
-  "metric":{
+  "metric": {
     "sink": {
       // "kafka": {
       //  "topic": "alert_metric"

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/log4j.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/log4j.properties
index 5e3d3b1..47d476a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/log4j.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/resources/log4j.properties
@@ -12,14 +12,11 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 log4j.rootLogger=INFO, stdout
-
 # standard output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %p [%t] %c{2}[%L]: %m%n
-
 ##log4j.logger.org.apache.eagle.alert.engine.spout.CorrelationSpout=DEBUG
 log4j.logger.org.apache.eagle.alert.metric=ERROR
 log4j.logger.org.apache.eagle.alert.engine.spout.SpoutOutputCollectorWrapper=DEBUG

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceDriver.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceDriver.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceDriver.java
index ca5bfdf..24abae6 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceDriver.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceDriver.java
@@ -16,8 +16,8 @@
  */
 package org.apache.eagle.alert.engine.absence;
 
-import org.apache.eagle.alert.engine.evaluator.absence.AbsenceDailyRule;
 import org.apache.eagle.alert.engine.evaluator.absence.AbsenceAlertDriver;
+import org.apache.eagle.alert.engine.evaluator.absence.AbsenceDailyRule;
 import org.apache.eagle.alert.engine.evaluator.absence.AbsenceWindowGenerator;
 import org.junit.Test;
 
@@ -33,11 +33,11 @@ import java.util.TimeZone;
  */
 public class TestAbsenceDriver {
     @Test
-    public void testAbsence() throws Exception{
+    public void testAbsence() throws Exception {
         // from 2PM to 3PM each day
         AbsenceDailyRule rule = new AbsenceDailyRule();
-        rule.startOffset = 14*3600*1000;
-        rule.endOffset = 15*3600*1000;
+        rule.startOffset = 14 * 3600 * 1000;
+        rule.endOffset = 15 * 3600 * 1000;
         AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule);
         List<Object> expectAttrs = Arrays.asList("host1");
         AbsenceAlertDriver driver = new AbsenceAlertDriver(expectAttrs, generator);
@@ -52,23 +52,23 @@ public class TestAbsenceDriver {
         // first event
         driver.process(Arrays.asList("host2"), baseOccurTime);
         // event after 1 hour
-        driver.process(Arrays.asList("host2"), baseOccurTime + 3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 3600 * 1000);
         // event after 2 hour
-        driver.process(Arrays.asList("host2"), baseOccurTime + 2*3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 2 * 3600 * 1000);
         // event after 3 hour, enter this window
-        driver.process(Arrays.asList("host2"), baseOccurTime + 3*3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 3 * 3600 * 1000);
         // event after 3.5 hour, still in this window
-        driver.process(Arrays.asList("host2"), baseOccurTime + 3*3600*1000 + 1800*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 3 * 3600 * 1000 + 1800 * 1000);
         // event after 4 hour, exit this window
-        driver.process(Arrays.asList("host2"), baseOccurTime + 4*3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 4 * 3600 * 1000);
     }
 
     @Test
-    public void testOccurrence() throws Exception{
+    public void testOccurrence() throws Exception {
         // from 2PM to 3PM each day
         AbsenceDailyRule rule = new AbsenceDailyRule();
-        rule.startOffset = 14*3600*1000;
-        rule.endOffset = 15*3600*1000;
+        rule.startOffset = 14 * 3600 * 1000;
+        rule.endOffset = 15 * 3600 * 1000;
         AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule);
         List<Object> expectAttrs = Arrays.asList("host1");
         AbsenceAlertDriver driver = new AbsenceAlertDriver(expectAttrs, generator);
@@ -83,14 +83,14 @@ public class TestAbsenceDriver {
         // first event
         driver.process(Arrays.asList("host2"), baseOccurTime);
         // event after 1 hour
-        driver.process(Arrays.asList("host2"), baseOccurTime + 3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 3600 * 1000);
         // event after 2 hour
-        driver.process(Arrays.asList("host2"), baseOccurTime + 2*3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 2 * 3600 * 1000);
         // event after 3 hour, enter this window
-        driver.process(Arrays.asList("host2"), baseOccurTime + 3*3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 3 * 3600 * 1000);
         // event after 3.5 hour, still in this window
-        driver.process(Arrays.asList("host1"), baseOccurTime + 3*3600*1000 + 1800*1000);
+        driver.process(Arrays.asList("host1"), baseOccurTime + 3 * 3600 * 1000 + 1800 * 1000);
         // event after 4 hour, exit this window
-        driver.process(Arrays.asList("host2"), baseOccurTime + 4*3600*1000);
+        driver.process(Arrays.asList("host2"), baseOccurTime + 4 * 3600 * 1000);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsencePolicyHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsencePolicyHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsencePolicyHandler.java
index 7f325c4..7bce34d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsencePolicyHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsencePolicyHandler.java
@@ -42,11 +42,11 @@ public class TestAbsencePolicyHandler {
     private static final String outputStream = "testOutputStream";
 
     @Test
-    public void test() throws Exception{
+    public void test() throws Exception {
         test(buildPolicyDef_provided());
     }
 
-    public void test(PolicyDefinition pd) throws Exception{
+    public void test(PolicyDefinition pd) throws Exception {
         Map<String, StreamDefinition> sds = new HashMap<>();
         StreamDefinition sd = buildStreamDef();
         sds.put("testInputStream", sd);
@@ -62,14 +62,14 @@ public class TestAbsencePolicyHandler {
     private static class TestCollector implements Collector {
         @Override
         public void emit(Object o) {
-            AlertStreamEvent e = (AlertStreamEvent)o;
+            AlertStreamEvent e = (AlertStreamEvent) o;
             Object[] data = e.getData();
             Assert.assertEquals("host2", data[1]);
             LOG.info(e.toString());
         }
     }
 
-    private PolicyDefinition buildPolicyDef_provided(){
+    private PolicyDefinition buildPolicyDef_provided() {
         PolicyDefinition pd = new PolicyDefinition();
         PolicyDefinition.Definition def = new PolicyDefinition.Definition();
         def.setValue("1,jobID,job1,daily_rule,14:00:00,15:00:00");
@@ -81,7 +81,7 @@ public class TestAbsencePolicyHandler {
         return pd;
     }
 
-    private StreamDefinition buildStreamDef(){
+    private StreamDefinition buildStreamDef() {
         StreamDefinition sd = new StreamDefinition();
         StreamColumn tsColumn = new StreamColumn();
         tsColumn.setName("timestamp");
@@ -101,9 +101,9 @@ public class TestAbsencePolicyHandler {
         return sd;
     }
 
-    private StreamEvent buildStreamEvt(long ts, String jobID, String status){
+    private StreamEvent buildStreamEvt(long ts, String jobID, String status) {
         StreamEvent e = new StreamEvent();
-        e.setData(new Object[]{ts, jobID, status});
+        e.setData(new Object[] {ts, jobID, status});
         e.setStreamId(inputStream);
         e.setTimestamp(ts);
         return e;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowGenerator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowGenerator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowGenerator.java
index e2345c9..4eda2ed 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowGenerator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowGenerator.java
@@ -32,11 +32,11 @@ import java.util.TimeZone;
  */
 public class TestAbsenceWindowGenerator {
     @Test
-    public void testWindowInToday() throws Exception{
+    public void testWindowInToday() throws Exception {
         AbsenceDailyRule rule = new AbsenceDailyRule();
         // from 2PM to 3PM each day
-        rule.startOffset = 14*3600*1000;
-        rule.endOffset = 15*3600*1000;
+        rule.startOffset = 14 * 3600 * 1000;
+        rule.endOffset = 15 * 3600 * 1000;
         AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule);
 
         // get current time
@@ -51,15 +51,15 @@ public class TestAbsenceWindowGenerator {
         df.setTimeZone(TimeZone.getTimeZone("UTC"));
         d = df.parse(currDate);
         AbsenceWindow window = generator.nextWindow(d.getTime());
-        Assert.assertEquals(startTimeOfDay+rule.startOffset, window.startTime);
+        Assert.assertEquals(startTimeOfDay + rule.startOffset, window.startTime);
     }
 
     @Test
-    public void testWindowInTomorrow() throws Exception{
+    public void testWindowInTomorrow() throws Exception {
         AbsenceDailyRule rule = new AbsenceDailyRule();
         // from 2PM to 3PM each day
-        rule.startOffset = 14*3600*1000;
-        rule.endOffset = 15*3600*1000;
+        rule.startOffset = 14 * 3600 * 1000;
+        rule.endOffset = 15 * 3600 * 1000;
         AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule);
 
         // get current time
@@ -75,6 +75,6 @@ public class TestAbsenceWindowGenerator {
         d = df.parse(currDate);
         AbsenceWindow window = generator.nextWindow(d.getTime());
         // this needs adjustment for one day
-        Assert.assertEquals(startTimeOfDay+rule.startOffset + AbsenceDailyRule.DAY_MILLI_SECONDS, window.startTime);
+        Assert.assertEquals(startTimeOfDay + rule.startOffset + AbsenceDailyRule.DAY_MILLI_SECONDS, window.startTime);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowProcessor.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowProcessor.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowProcessor.java
index a47c7a4..32a614b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowProcessor.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/absence/TestAbsenceWindowProcessor.java
@@ -29,7 +29,7 @@ import java.util.List;
  */
 public class TestAbsenceWindowProcessor {
     @Test
-    public void testDataMissing(){
+    public void testDataMissing() {
         List<Object> expectedHosts = Arrays.asList("host1");
         AbsenceWindow window = new AbsenceWindow();
         window.startTime = 100L;
@@ -48,7 +48,7 @@ public class TestAbsenceWindowProcessor {
     }
 
     @Test(expected = IllegalStateException.class)
-    public void testDataExists(){
+    public void testDataExists() {
         List<Object> expectedHosts = Arrays.asList("host1");
         AbsenceWindow window = new AbsenceWindow();
         window.startTime = 100L;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/CoordinatorClient.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/CoordinatorClient.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/CoordinatorClient.java
index a85a5cd..3f5fc67 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/CoordinatorClient.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/CoordinatorClient.java
@@ -16,24 +16,22 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.io.Closeable;
-import java.io.IOException;
-
-import javax.ws.rs.core.MediaType;
 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.sun.jersey.api.client.Client;
 import com.sun.jersey.api.client.WebResource;
 import com.sun.jersey.api.client.config.ClientConfig;
 import com.sun.jersey.api.client.config.DefaultClientConfig;
 import com.sun.jersey.client.urlconnection.URLConnectionClientHandler;
 import com.typesafe.config.Config;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.core.MediaType;
+import java.io.Closeable;
+import java.io.IOException;
 
 /**
  * @since May 9, 2016
- *
  */
 public class CoordinatorClient implements Closeable {
 
@@ -53,7 +51,7 @@ public class CoordinatorClient implements Closeable {
 
     public CoordinatorClient(Config config) {
         this(config.getString(EAGLE_COORDINATOR_SERVICE_HOST), config.getInt(EAGLE_COORDINATOR_SERVICE_PORT), config
-                .getString(EAGLE_COORDINATOR_SERVICE_CONTEXT));
+            .getString(EAGLE_COORDINATOR_SERVICE_CONTEXT));
         basePath = buildBasePath();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration1.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration1.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration1.java
index db8e0a2..01e50a4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration1.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration1.java
@@ -44,9 +44,8 @@ import java.util.concurrent.ThreadFactory;
 
 /**
  * Case of simple
- * 
- * @since May 8, 2016
  *
+ * @since May 8, 2016
  */
 public class Integration1 {
     private static final String SIMPLE_CONFIG = "/simple/application-integration.conf";
@@ -61,7 +60,7 @@ public class Integration1 {
 
     private String[] args;
     private ExecutorService executors = Executors.newFixedThreadPool(5, new ThreadFactory() {
-        
+
         @Override
         public Thread newThread(Runnable r) {
             Thread t = new Thread(r);
@@ -98,7 +97,7 @@ public class Integration1 {
      * Create topic
      * liasu@xxx:~$ $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic perfmon_metrics
      * <p>
-     * 
+     *
      * @throws InterruptedException
      */
     @Test
@@ -112,12 +111,12 @@ public class Integration1 {
         System.out.println("loading metadatas done!");
 
         if (args == null) {
-            args = new String[] { "-c", "simple/application-integration.conf" };
+            args = new String[] {"-c", "simple/application-integration.conf"};
         }
 
         executors.submit(() -> SampleClient1.main(args));
 
-        executors.submit(() -> { 
+        executors.submit(() -> {
             try {
                 UnitTopologyMain.main(args);
             } catch (Exception e) {
@@ -190,7 +189,7 @@ public class Integration1 {
      * ],"pubBoltId":"xxx-pubBolt","spoutParallelism":1,"groupParallelism":1,
      * "alertParallelism":1}
      * <p>
-     * 
+     *
      * @throws Exception
      */
     @Ignore
@@ -199,7 +198,7 @@ public class Integration1 {
         {
             JavaType type = CollectionType.construct(List.class, SimpleType.construct(Topology.class));
             List<Topology> l = om.readValue(Integration1.class.getResourceAsStream("/simple/topologies.json"),
-                    type);
+                type);
             Topology t = (Topology) l.get(0);
 
             Assert.assertEquals(4, t.getGroupNodeIds().size());
@@ -213,7 +212,7 @@ public class Integration1 {
             Publishment p = l.get(0);
             Assert.assertEquals("KAFKA", p.getType());
         }
-        
+
         checkAll("/simple/");
         checkAll("/correlation/");
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration2.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration2.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration2.java
index a11cc66..5c2c404 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration2.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration2.java
@@ -16,9 +16,9 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
+import backtype.storm.utils.Utils;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.engine.UnitTopologyMain;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -29,26 +29,23 @@ import org.wso2.siddhi.core.stream.input.InputHandler;
 import org.wso2.siddhi.core.stream.output.StreamCallback;
 import org.wso2.siddhi.core.util.EventPrinter;
 
-import backtype.storm.utils.Utils;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * @since May 10, 2016
- *
  */
 public class Integration2 {
 
     private ExecutorService executors = Executors.newFixedThreadPool(5);
-    
+
     /**
      * <pre>
      * Create topic
      * liasu@xxxx:~$ $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic eslogs
      * liasu@xxxx:~$ $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic bootfailures
      * </pre>
-     * 
+     *
      * @param args
      */
     public static void main(String[] args) throws Exception {
@@ -72,7 +69,8 @@ public class Integration2 {
                 UnitTopologyMain.main(args);
             } catch (Exception e) {
                 e.printStackTrace();
-            }});
+            }
+        });
 
         executors.submit(() -> SampleClient2.main(args));
 
@@ -83,7 +81,8 @@ public class Integration2 {
         }
     }
 
-    @Test @Ignore
+    @Test
+    @Ignore
     public void test3() throws Exception {
         SiddhiManager sm = new SiddhiManager();
         String s1 = " define stream esStream(instanceUuid string, timestamp long, logLevel string, message string, reqId string, host string, component string); ";
@@ -103,14 +102,14 @@ public class Integration2 {
         InputHandler input2 = epr.getInputHandler("ifStream");
 
         epr.start();
-        
+
         long base = 1462880695837l;
-        
+
         while (true) {
             sendEvent(input1, input2, base);
-            
+
             base = base + 3000;
-            
+
             Utils.sleep(3000);
         }
 
@@ -121,25 +120,25 @@ public class Integration2 {
             Event e = new Event();
             e.setTimestamp(base);
             e.setData(new Object[] {
-                    "instance-guid-c2a1c926-b590-418e-bf57-41469d7891fa",
-                    base,
-                    "ERROR",
-                    "NullPointException",
-                    "req-id-82dab92c-9e45-4ad8-8793-96e912831f00",
-                    "nova.host",
-                    "NOVA"
+                "instance-guid-c2a1c926-b590-418e-bf57-41469d7891fa",
+                base,
+                "ERROR",
+                "NullPointException",
+                "req-id-82dab92c-9e45-4ad8-8793-96e912831f00",
+                "nova.host",
+                "NOVA"
             });
             input1.send(e);
         }
-        
+
         {
             Event e = new Event();
             e.setTimestamp(base);
             e.setData(new Object[] {"instance-guid-c2a1c926-b590-418e-bf57-41469d7891fa",
-                    base,
-                    "req-id-82dab92c-9e45-4ad8-8793-96e912831f00",
-                    "boot failure for when try start the given vm!",
-                    "boot-vm-data-center.corp.com"});
+                base,
+                "req-id-82dab92c-9e45-4ad8-8793-96e912831f00",
+                "boot failure for when try start the given vm!",
+                "boot-vm-data-center.corp.com"});
             input2.send(e);
         }
     }



[08/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClock.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClock.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClock.java
index 0881e35..13e60d6 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClock.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClock.java
@@ -17,29 +17,26 @@
 package org.apache.eagle.alert.engine.sorter;
 
 /**
- * The time clock per stream
- *
- * Should be thread-safe between getTime and moveForward
- *
- * By default, we currently simple support event timestamp now
+ * The time clock per stream should be thread-safe between getTime and moveForward.
+ * By default, we currently simple support event timestamp now.
  */
 public interface StreamTimeClock {
     /**
-     * Get stream id
+     * Get stream id.
      *
      * @return stream id
      */
     String getStreamId();
 
     /**
-     * Get current time
+     * Get current time.
      *
      * @return current timestamp value
      */
     long getTime();
 
     /**
-     * @param timestamp move forward current time to given timestamp
+     * @param timestamp move forward current time to given timestamp.
      */
     void moveForward(long timestamp);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockListener.java
index f7e463d..b88f66e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockListener.java
@@ -18,10 +18,11 @@ package org.apache.eagle.alert.engine.sorter;
 
 public interface StreamTimeClockListener {
     /**
-     * @see StreamWindow
+     * StreamTimeClockListener onTick callback.
      *
      * @param streamTime
      * @param globalSystemTime
+     * @see StreamWindow
      */
     void onTick(StreamTimeClock streamTime, long globalSystemTime);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockManager.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockManager.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockManager.java
index 29b13eb..08878fd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockManager.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockManager.java
@@ -19,27 +19,22 @@ package org.apache.eagle.alert.engine.sorter;
 import java.io.Serializable;
 
 /**
- *
  * By default, we could keep the current time clock in memory,
  * Eventually we may need to consider the global time synchronization across all nodes
  *
- * TODO: maybe need to synchronize time clock globally
+ * <p>TODO: maybe need to synchronize time clock globally</p>
  *
- * 1) When to initialize window according to start time
+ * <p>1) When to initialize window according to start time
  * 2) When to close expired window according to current time
- * 3) Automatically tick periodically as the single place for control lock
- *
+ * 3) Automatically tick periodically as the single place for control lock.</p>
  */
-public interface StreamTimeClockManager extends StreamTimeClockTrigger, Serializable{
+public interface StreamTimeClockManager extends StreamTimeClockTrigger, Serializable {
     /**
-     * @return StreamTimeClock instance
+     * @return StreamTimeClock instance.
      */
     StreamTimeClock createStreamTimeClock(String streamId);
 
     StreamTimeClock getStreamTimeClock(String streamId);
 
-    /**
-     * @param streamId
-     */
     void removeStreamTimeClock(String streamId);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockTrigger.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockTrigger.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockTrigger.java
index a0cd184..494ef05 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockTrigger.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamTimeClockTrigger.java
@@ -20,37 +20,32 @@ package org.apache.eagle.alert.engine.sorter;
 /**
  * Possible implementation:
  *
- * 1) EventTimeClockTrigger (by default)
- * 2) SystemTimeClockTrigger
+ * <p>1) EventTimeClockTrigger (by default).
+ * 2) SystemTimeClockTrigger.</p>
  */
 public interface StreamTimeClockTrigger {
     /**
-     * @param streamId stream id to listen to
-     * @param listener to watch on streamId
+     * @param streamId stream id to listen to.
+     * @param listener to watch on streamId.
      */
     void registerListener(String streamId, StreamTimeClockListener listener);
 
-    /**
-     *
-     * @param streamClock
-     * @param listener
-     */
     void registerListener(StreamTimeClock streamClock, StreamTimeClockListener listener);
 
     /**
-     * @param listener listener to remove
+     * @param listener listener to remove.
      */
     void removeListener(StreamTimeClockListener listener);
 
     /**
-     * Trigger tick of all listeners on certain stream
+     * Trigger tick of all listeners on certain stream.
      *
      * @param streamId stream id
      */
     void triggerTickOn(String streamId);
 
     /**
-     * Update time per new event time on stream
+     * Update time per new event time on stream.
      *
      * @param streamId
      * @param timestamp

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindow.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindow.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindow.java
index 2500122..c30f00f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindow.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindow.java
@@ -23,91 +23,81 @@ import org.apache.eagle.alert.engine.model.PartitionedEvent;
  * <h2>Tumbling Window instead Sliding Window</h2>
  * We could have time overlap to sort out-of-ordered stream,
  * but each window should never have events overlap, otherwise will have logic problem.
- *
- *
  * <h2>Ingestion Time Policy</h2>
  * Different notions of time, namely processing time, event time, and ingestion time.
- *
  * <ol>
  * <li>
- *  In processing time, windows are defined with respect to the wall clock of the machine that builds and processes a window, i.e., a one minute processing time window collects elements for exactly one minute.
+ * In processing time, windows are defined with respect to the wall clock of the machine that builds and processes a window,
+ * i.e., a one minute processing time window collects elements for exactly one minute.
  * </li>
  * <li>
- * In event time, windows are defined with respect to timestamps that are attached to each event record. This is common for many types of events, such as log entries, sensor data, etc, where the timestamp usually represents the time at which the event occurred. Event time has several benefits over processing time. First of all, it decouples the program semantics from the actual serving speed of the source and the processing performance of system. Hence you can process historic data, which is served at maximum speed, and continuously produced data with the same program. It also prevents semantically incorrect results in case of backpressure or delays due to failure recovery. Second, event time windows compute correct results, even if events arrive out-of-order of their timestamp which is common if a data stream gathers events from distributed sources.
+ * In event time, windows are defined with respect to timestamps that are attached to each event record. This is common for
+ * many types of events, such as log entries, sensor data, etc, where the timestamp usually represents the time at which the
+ * event occurred. Event time has several benefits over processing time. First of all, it decouples the program semantics
+ * from the actual serving speed of the source and the processing performance of system.
+ * Hence you can process historic data, which is served at maximum speed, and continuously produced data with the same program.
+ * It also prevents semantically incorrect results in case of backpressure or delays due to failure recovery.
+ *
+ * Second, event time windows compute correct results, even if events arrive out-of-order of their timestamp which is common
+ * if a data stream gathers events from distributed sources.
  * </li>
  * <li>
- * Ingestion time is a hybrid of processing and event time. It assigns wall clock timestamps to records as soon as they arrive in the system (at the source) and continues processing with event time semantics based on the attached timestamps.
+ * Ingestion time is a hybrid of processing and event time. It assigns wall clock timestamps to records as soon as they arrive
+ * in the system (at the source) and continues processing with event time semantics based on the attached timestamps.
  * </li>
  * </ol>
  */
 public interface StreamWindow extends StreamTimeClockListener {
     /**
-     * @return Created timestamp
+     * @return Created timestamp.
      */
     long createdTime();
 
     /**
-     * Get start time
-     *
-     * @return
+     * Get start time.
      */
     long startTime();
 
     long margin();
 
     /**
-     * @return reject timestamp < rejectTime()
+     * @return reject timestamp < rejectTime().
      */
     long rejectTime();
 
     /**
-     * Get end time
-     *
-     * @return
+     * Get end time.
      */
     long endTime();
 
     /**
-     * @param timestamp event time
-     * @return true/false in boolean
+     * @param timestamp event time.
+     * @return true/false in boolean.
      */
     boolean accept(long timestamp);
 
     /**
-     * Window is expired
+     * Window is expired.
      *
      * @return whether window is expired
      */
     boolean expired();
 
     /**
-     * @return whether window is alive
+     * @return whether window is alive.
      */
     boolean alive();
 
-    /**
-     *
-     * @param event
-     */
     boolean add(PartitionedEvent event);
 
-//    /**
-//     * @param collector Drain to output collector
-//     */
-//    void flush(PartitionedEventCollector collector);
-
     void flush();
 
     /**
-     * Close window
+     * Close window.
      */
     void close();
 
     void register(PartitionedEventCollector collector);
 
-    /**
-     *
-     * @return
-     */
     int size();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowManager.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowManager.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowManager.java
index a5f43aa..efa1014 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowManager.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowManager.java
@@ -21,43 +21,38 @@ import java.util.Collection;
 
 /**
  * TODO: Reuse existing expired window to avoid recreating new windows again and again
- *
- * Single stream window manager
+ * <p>Single stream window manager.</p>
  */
 public interface StreamWindowManager extends StreamTimeClockListener, Closeable {
 
     /**
-     * @param initialTime
-     * @return
+     * addNewWindow.
      */
     StreamWindow addNewWindow(long initialTime);
 
     /**
-     * @param window
+     * removeWindow.
      */
     void removeWindow(StreamWindow window);
 
     /**
-     * @param window
-     * @return
+     * hasWindow.
+     *
+     * @return if has window
      */
     boolean hasWindow(StreamWindow window);
 
     /**
-     * @param timestamp time
-     * @return whether window exists for time
+     * @param timestamp time.
+     * @return whether window exists for time.
      */
     boolean hasWindowFor(long timestamp);
 
     /**
-     * @return Internal collection for performance optimization
+     * @return Internal collection for performance optimization.
      */
     Collection<StreamWindow> getWindows();
 
-    /**
-     * @param timestamp
-     * @return
-     */
     StreamWindow getWindowFor(long timestamp);
 
     boolean reject(long timestamp);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowRepository.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowRepository.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowRepository.java
index 3e035c5..7a503e1 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowRepository.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/StreamWindowRepository.java
@@ -16,60 +16,58 @@
  */
 package org.apache.eagle.alert.engine.sorter;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
 import org.apache.eagle.alert.engine.sorter.impl.StreamSortedWindowInMapDB;
 import org.apache.eagle.alert.engine.sorter.impl.StreamSortedWindowOnHeap;
+import com.google.common.base.Preconditions;
 import org.mapdb.DB;
 import org.mapdb.DBMaker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Preconditions;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
 
 /**
- *
  * ===== Benchmark Result Report =====<br/><br/>
  *
- * Num. Operation   Type                            Time<br/>
+ * <p>Num. Operation   Type                            Time<br/>
  * ---- ---------   ----                            ----<br/>
- * 1000	FlushTime	DIRECT_MEMORY            	:	55<br/>
- * 1000	FlushTime	FILE_RAF                 	:	63<br/>
- * 1000	FlushTime	MEMORY                   	:	146<br/>
- * 1000	FlushTime	ONHEAP                   	:	17<br/>
- * 1000	InsertTime	DIRECT_MEMORY           	:	68<br/>
- * 1000	InsertTime	FILE_RAF                	:	223<br/>
- * 1000	InsertTime	MEMORY                  	:	273<br/>
- * 1000	InsertTime	ONHEAP                  	:	20<br/>
- * 10000	FlushTime	DIRECT_MEMORY           	:	551<br/>
- * 10000	FlushTime	FILE_RAF                	:	668<br/>
- * 10000	FlushTime	MEMORY                  	:	643<br/>
- * 10000	FlushTime	ONHEAP                  	:	5<br/>
- * 10000	InsertTime	DIRECT_MEMORY          	:	446<br/>
- * 10000	InsertTime	FILE_RAF               	:	2095<br/>
- * 10000	InsertTime	MEMORY                 	:	784<br/>
- * 10000	InsertTime	ONHEAP                 	:	29<br/>
- * 100000	FlushTime	DIRECT_MEMORY          	:	6139<br/>
- * 100000	FlushTime	FILE_RAF               	:	6237<br/>
- * 100000	FlushTime	MEMORY                 	:	6238<br/>
- * 100000	FlushTime	ONHEAP                 	:	18<br/>
- * 100000	InsertTime	DIRECT_MEMORY         	:	4499<br/>
- * 100000	InsertTime	FILE_RAF              	:	22343<br/>
- * 100000	InsertTime	MEMORY                	:	4962<br/>
- * 100000	InsertTime	ONHEAP                	:	107<br/>
- * 1000000	FlushTime	DIRECT_MEMORY         	:	61356<br/>
- * 1000000	FlushTime	FILE_RAF              	:	63025<br/>
- * 1000000	FlushTime	MEMORY                	:	61380<br/>
- * 1000000	FlushTime	ONHEAP                	:	47<br/>
- * 1000000	InsertTime	DIRECT_MEMORY        	:	43637<br/>
- * 1000000	InsertTime	FILE_RAF             	:	464481<br/>
- * 1000000	InsertTime	MEMORY               	:	44367<br/>
- * 1000000	InsertTime	ONHEAP               	:	2040<br/>
- *
+ * 1000    FlushTime    DIRECT_MEMORY                :    55<br/>
+ * 1000    FlushTime    FILE_RAF                     :    63<br/>
+ * 1000    FlushTime    MEMORY                       :    146<br/>
+ * 1000    FlushTime    ONHEAP                       :    17<br/>
+ * 1000    InsertTime    DIRECT_MEMORY               :    68<br/>
+ * 1000    InsertTime    FILE_RAF                    :    223<br/>
+ * 1000    InsertTime    MEMORY                      :    273<br/>
+ * 1000    InsertTime    ONHEAP                      :    20<br/>
+ * 10000    FlushTime    DIRECT_MEMORY               :    551<br/>
+ * 10000    FlushTime    FILE_RAF                    :    668<br/>
+ * 10000    FlushTime    MEMORY                      :    643<br/>
+ * 10000    FlushTime    ONHEAP                      :    5<br/>
+ * 10000    InsertTime    DIRECT_MEMORY              :    446<br/>
+ * 10000    InsertTime    FILE_RAF                   :    2095<br/>
+ * 10000    InsertTime    MEMORY                     :    784<br/>
+ * 10000    InsertTime    ONHEAP                     :    29<br/>
+ * 100000    FlushTime    DIRECT_MEMORY              :    6139<br/>
+ * 100000    FlushTime    FILE_RAF                   :    6237<br/>
+ * 100000    FlushTime    MEMORY                     :    6238<br/>
+ * 100000    FlushTime    ONHEAP                     :    18<br/>
+ * 100000    InsertTime    DIRECT_MEMORY             :    4499<br/>
+ * 100000    InsertTime    FILE_RAF                  :    22343<br/>
+ * 100000    InsertTime    MEMORY                    :    4962<br/>
+ * 100000    InsertTime    ONHEAP                    :    107<br/>
+ * 1000000    FlushTime    DIRECT_MEMORY             :    61356<br/>
+ * 1000000    FlushTime    FILE_RAF                  :    63025<br/>
+ * 1000000    FlushTime    MEMORY                    :    61380<br/>
+ * 1000000    FlushTime    ONHEAP                    :    47<br/>
+ * 1000000    InsertTime    DIRECT_MEMORY            :    43637<br/>
+ * 1000000    InsertTime    FILE_RAF                 :    464481<br/>
+ * 1000000    InsertTime    MEMORY                   :    44367<br/>
+ * 1000000    InsertTime    ONHEAP                   :    2040<br/>
+ * </p>
  * @see StreamSortedWindowOnHeap
  * @see org.mapdb.DBMaker
  */
@@ -105,20 +103,21 @@ public class StreamWindowRepository {
         FILE_RAF
     }
 
-    private final static Logger LOG = LoggerFactory.getLogger(StreamWindowRepository.class);
-    private final Map<StorageType,DB> dbPool;
-    private StreamWindowRepository(){
+    private static final Logger LOG = LoggerFactory.getLogger(StreamWindowRepository.class);
+    private final Map<StorageType, DB> dbPool;
+
+    private StreamWindowRepository() {
         dbPool = new HashMap<>();
     }
 
     private static StreamWindowRepository repository;
 
     /**
-     * Close automatically when JVM exists
+     * Close automatically when JVM exists.
      *
      * @return StreamWindowRepository singletonInstance
      */
-    public static StreamWindowRepository getSingletonInstance(){
+    public static StreamWindowRepository getSingletonInstance() {
         synchronized (StreamWindowRepository.class) {
             if (repository == null) {
                 repository = new StreamWindowRepository();
@@ -133,11 +132,11 @@ public class StreamWindowRepository {
         }
     }
 
-    private DB createMapDB(StorageType storageType){
+    private DB createMapDB(StorageType storageType) {
         synchronized (dbPool) {
-            if(!dbPool.containsKey(storageType)){
+            if (!dbPool.containsKey(storageType)) {
                 DB db;
-                switch (storageType){
+                switch (storageType) {
                     case ONHEAP:
                         db = DBMaker.heapDB().closeOnJvmShutdown().make();
                         LOG.info("Create ONHEAP mapdb");
@@ -157,22 +156,22 @@ public class StreamWindowRepository {
                             file.deleteOnExit();
                             Preconditions.checkNotNull(file, "file is null");
                             db = DBMaker.fileDB(file).deleteFilesAfterClose().make();
-                            LOG.info("Created FILE_RAF map file at {}",file.getAbsolutePath());
+                            LOG.info("Created FILE_RAF map file at {}", file.getAbsolutePath());
                         } catch (IOException e) {
                             throw new IllegalStateException(e);
                         }
                         break;
                     default:
-                        throw new IllegalArgumentException("Illegal storage type: "+storageType);
+                        throw new IllegalArgumentException("Illegal storage type: " + storageType);
                 }
-                dbPool.put(storageType,db);
+                dbPool.put(storageType, db);
                 return db;
             }
             return dbPool.get(storageType);
         }
     }
 
-    public StreamWindow createWindow(long start,long end, long margin, StorageType type){
+    public StreamWindow createWindow(long start, long end, long margin, StorageType type) {
         StreamWindow ret;
         switch (type) {
             case ONHEAP:
@@ -180,77 +179,73 @@ public class StreamWindowRepository {
                 break;
             default:
                 ret = new StreamSortedWindowInMapDB(
-                        start,end,margin,
-                        createMapDB(type),
-                        UUID.randomUUID().toString()
+                    start, end, margin,
+                    createMapDB(type),
+                    UUID.randomUUID().toString()
                 );
                 break;
         }
 
-        if(LOG.isDebugEnabled()) LOG.debug("Created new {}, type: {}",ret,type);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Created new {}, type: {}", ret, type);
+        }
         return ret;
     }
 
-    public StreamWindow createWindow(long start,long end, long margin, StreamWindowStrategy strategy){
-        return strategy.createWindow(start,end,margin,this);
+    public StreamWindow createWindow(long start, long end, long margin, StreamWindowStrategy strategy) {
+        return strategy.createWindow(start, end, margin, this);
     }
 
-    public StreamWindow createWindow(long start,long end, long margin){
-        return OnHeapStrategy.INSTANCE.createWindow(start,end,margin,this);
+    public StreamWindow createWindow(long start, long end, long margin) {
+        return OnHeapStrategy.INSTANCE.createWindow(start, end, margin, this);
     }
 
-    public void close(){
-        for(Map.Entry<StorageType,DB> entry:dbPool.entrySet()){
+    public void close() {
+        for (Map.Entry<StorageType, DB> entry : dbPool.entrySet()) {
             entry.getValue().close();
         }
         dbPool.clear();
     }
 
     public interface StreamWindowStrategy {
-        /**
-         *
-         * @param start
-         * @param end
-         * @param margin
-         * @return
-         */
-        StreamWindow createWindow(long start,long end, long margin,StreamWindowRepository repository);
+        StreamWindow createWindow(long start, long end, long margin, StreamWindowRepository repository);
     }
 
-    public static class OnHeapStrategy implements StreamWindowStrategy{
+    public static class OnHeapStrategy implements StreamWindowStrategy {
         public static final OnHeapStrategy INSTANCE = new OnHeapStrategy();
+
         @Override
-        public StreamWindow createWindow(long start, long end, long margin,StreamWindowRepository repository) {
-            return repository.createWindow(start,end,margin,StorageType.ONHEAP);
+        public StreamWindow createWindow(long start, long end, long margin, StreamWindowRepository repository) {
+            return repository.createWindow(start, end, margin, StorageType.ONHEAP);
         }
     }
 
     public static class WindowSizeStrategy implements StreamWindowStrategy {
-        private final static long ONE_HOUR = 3600 * 1000;
-        private final static long FIVE_HOURS = 5* 3600 * 1000;
+        private static final long ONE_HOUR = 3600 * 1000;
+        private static final long FIVE_HOURS = 5 * 3600 * 1000;
         private final long onheapWindowSizeLimit;
         private final long offheapWindowSizeLimit;
 
-        public static WindowSizeStrategy INSTANCE = new WindowSizeStrategy(ONE_HOUR,FIVE_HOURS);
+        public static WindowSizeStrategy INSTANCE = new WindowSizeStrategy(ONE_HOUR, FIVE_HOURS);
 
-        public WindowSizeStrategy(long onheapWindowSizeLimit, long offheapWindowSizeLimit){
+        public WindowSizeStrategy(long onheapWindowSizeLimit, long offheapWindowSizeLimit) {
             this.offheapWindowSizeLimit = offheapWindowSizeLimit;
             this.onheapWindowSizeLimit = onheapWindowSizeLimit;
 
-            if(this.offheapWindowSizeLimit <this.onheapWindowSizeLimit){
-                throw new IllegalStateException("offheapWindowSizeLimit "+this.offheapWindowSizeLimit +" < onheapWindowSizeLimit "+this.onheapWindowSizeLimit);
+            if (this.offheapWindowSizeLimit < this.onheapWindowSizeLimit) {
+                throw new IllegalStateException("offheapWindowSizeLimit " + this.offheapWindowSizeLimit + " < onheapWindowSizeLimit " + this.onheapWindowSizeLimit);
             }
         }
 
         @Override
-        public StreamWindow createWindow(long start, long end, long margin,StreamWindowRepository repository) {
+        public StreamWindow createWindow(long start, long end, long margin, StreamWindowRepository repository) {
             long windowLength = end - start;
-            if(windowLength <= onheapWindowSizeLimit){
-                return repository.createWindow(start,end,margin, StreamWindowRepository.StorageType.ONHEAP);
-            }else if(windowLength > onheapWindowSizeLimit & windowLength <= offheapWindowSizeLimit){
-                return repository.createWindow(start,end,margin, StreamWindowRepository.StorageType.DIRECT_MEMORY);
-            }else {
-                return repository.createWindow(start,end,margin, StreamWindowRepository.StorageType.FILE_RAF);
+            if (windowLength <= onheapWindowSizeLimit) {
+                return repository.createWindow(start, end, margin, StreamWindowRepository.StorageType.ONHEAP);
+            } else if (windowLength > onheapWindowSizeLimit & windowLength <= offheapWindowSizeLimit) {
+                return repository.createWindow(start, end, margin, StreamWindowRepository.StorageType.DIRECT_MEMORY);
+            } else {
+                return repository.createWindow(start, end, margin, StreamWindowRepository.StorageType.FILE_RAF);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/CachedEventGroupSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/CachedEventGroupSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/CachedEventGroupSerializer.java
index 6cdf8a0..73adee6 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/CachedEventGroupSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/CachedEventGroupSerializer.java
@@ -16,36 +16,37 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
 import org.apache.eagle.alert.engine.utils.SerializableUtils;
+import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.jetbrains.annotations.NotNull;
 import org.mapdb.DataInput2;
 import org.mapdb.DataOutput2;
 import org.mapdb.serializer.GroupSerializerObjectArray;
 
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
- * @deprecated performance is worse, should investigate
+ * @deprecated performance is worse, should investigate.
  */
 public class CachedEventGroupSerializer extends GroupSerializerObjectArray<PartitionedEvent[]> {
-    private Map<Integer,StreamPartition> hashCodePartitionDict = new HashMap<>();
-    private void writePartitionedEvent(DataOutput2 out,PartitionedEvent event) throws IOException {
+    private Map<Integer, StreamPartition> hashCodePartitionDict = new HashMap<>();
+
+    private void writePartitionedEvent(DataOutput2 out, PartitionedEvent event) throws IOException {
         out.packLong(event.getPartitionKey());
         int partitionHashCode = 0;
-        if(event.getPartition()!=null) {
+        if (event.getPartition() != null) {
             partitionHashCode = event.getPartition().hashCode();
             if (!hashCodePartitionDict.containsKey(partitionHashCode)) {
                 hashCodePartitionDict.put(partitionHashCode, event.getPartition());
             }
         }
         out.packInt(partitionHashCode);
-        if(event.getEvent()!=null) {
+        if (event.getEvent() != null) {
             byte[] eventBytes = SerializableUtils.serializeToCompressedByteArray(event.getEvent());
             out.packInt(eventBytes.length);
             out.write(eventBytes);
@@ -58,11 +59,11 @@ public class CachedEventGroupSerializer extends GroupSerializerObjectArray<Parti
         PartitionedEvent event = new PartitionedEvent();
         event.setPartitionKey(in.unpackLong());
         int partitionHashCode = in.unpackInt();
-        if(partitionHashCode!=0 && hashCodePartitionDict.containsKey(partitionHashCode)) {
+        if (partitionHashCode != 0 && hashCodePartitionDict.containsKey(partitionHashCode)) {
             event.setPartition(hashCodePartitionDict.get(partitionHashCode));
         }
         int eventBytesLen = in.unpackInt();
-        if(eventBytesLen > 0) {
+        if (eventBytesLen > 0) {
             byte[] eventBytes = new byte[eventBytesLen];
             in.readFully(eventBytes);
             event.setEvent((StreamEvent) SerializableUtils.deserializeFromCompressedByteArray(eventBytes, "Deserialize event from bytes"));
@@ -74,7 +75,7 @@ public class CachedEventGroupSerializer extends GroupSerializerObjectArray<Parti
     public void serialize(DataOutput2 out, PartitionedEvent[] value) throws IOException {
         out.packInt(value.length);
         for (PartitionedEvent event : value) {
-            writePartitionedEvent(out,event);
+            writePartitionedEvent(out, event);
         }
     }
 
@@ -105,9 +106,9 @@ public class CachedEventGroupSerializer extends GroupSerializerObjectArray<Parti
 
     @Override
     public int compare(PartitionedEvent[] o1, PartitionedEvent[] o2) {
-        if(o1.length>0 && o2.length>0) {
+        if (o1.length > 0 && o2.length > 0) {
             return (int) (o1[0].getTimestamp() - o2[0].getTimestamp());
-        }else{
+        } else {
             return 0;
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventGroupSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventGroupSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventGroupSerializer.java
index caa291e..55efcaf 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventGroupSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventGroupSerializer.java
@@ -16,9 +16,6 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.io.IOException;
-import java.util.Comparator;
-
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.utils.SerializableUtils;
 import org.jetbrains.annotations.NotNull;
@@ -27,42 +24,37 @@ import org.mapdb.DataOutput2;
 import org.mapdb.Serializer;
 import org.mapdb.serializer.GroupSerializer;
 
+import java.io.IOException;
+import java.util.Comparator;
+
 
 public class PartitionedEventGroupSerializer implements GroupSerializer<PartitionedEvent[]> {
     private static final GroupSerializer<byte[]> delegate = Serializer.BYTE_ARRAY;
 
-    private static PartitionedEvent[] deserialize(byte[] bytes){
-        return (PartitionedEvent[]) SerializableUtils.deserializeFromCompressedByteArray(bytes,"deserialize as stream event");
-    }
-
-    private static byte[] serialize(PartitionedEvent[] events){
-        return SerializableUtils.serializeToCompressedByteArray(events);
-    }
-
     @Override
     public int valueArraySearch(Object keys, PartitionedEvent[] key) {
-        return delegate.valueArraySearch(keys,serialize(key));
+        return delegate.valueArraySearch(keys, serialize(key));
     }
 
     @SuppressWarnings("rawtypes")
     @Override
     public int valueArraySearch(Object keys, PartitionedEvent[] key, Comparator comparator) {
-        return delegate.valueArraySearch(keys,serialize(key),comparator);
+        return delegate.valueArraySearch(keys, serialize(key), comparator);
     }
 
     @Override
     public void valueArraySerialize(DataOutput2 out, Object vals) throws IOException {
-        delegate.valueArraySerialize(out,vals);
+        delegate.valueArraySerialize(out, vals);
     }
 
     @Override
     public Object valueArrayDeserialize(DataInput2 in, int size) throws IOException {
-        return delegate.valueArrayDeserialize(in,size);
+        return delegate.valueArrayDeserialize(in, size);
     }
 
     @Override
     public PartitionedEvent[] valueArrayGet(Object vals, int pos) {
-        return deserialize(delegate.valueArrayGet(vals,pos));
+        return deserialize(delegate.valueArrayGet(vals, pos));
     }
 
     @Override
@@ -77,12 +69,12 @@ public class PartitionedEventGroupSerializer implements GroupSerializer<Partitio
 
     @Override
     public Object valueArrayPut(Object vals, int pos, PartitionedEvent[] newValue) {
-        return delegate.valueArrayPut(vals,pos,serialize(newValue));
+        return delegate.valueArrayPut(vals, pos, serialize(newValue));
     }
 
     @Override
     public Object valueArrayUpdateVal(Object vals, int pos, PartitionedEvent[] newValue) {
-        return delegate.valueArrayUpdateVal(vals,pos,serialize(newValue));
+        return delegate.valueArrayUpdateVal(vals, pos, serialize(newValue));
     }
 
     @Override
@@ -92,21 +84,30 @@ public class PartitionedEventGroupSerializer implements GroupSerializer<Partitio
 
     @Override
     public Object valueArrayCopyOfRange(Object vals, int from, int to) {
-        return delegate.valueArrayCopyOfRange(vals,from,to);
+        return delegate.valueArrayCopyOfRange(vals, from, to);
     }
 
     @Override
     public Object valueArrayDeleteValue(Object vals, int pos) {
-        return delegate.valueArrayDeleteValue(vals,pos);
+        return delegate.valueArrayDeleteValue(vals, pos);
     }
 
     @Override
     public void serialize(@NotNull DataOutput2 out, @NotNull PartitionedEvent[] value) throws IOException {
-        delegate.serialize(out,serialize(value));
+        delegate.serialize(out, serialize(value));
+    }
+
+    private static byte[] serialize(PartitionedEvent[] events) {
+        return SerializableUtils.serializeToCompressedByteArray(events);
     }
 
     @Override
     public PartitionedEvent[] deserialize(@NotNull DataInput2 input, int available) throws IOException {
-        return deserialize(delegate.deserialize(input,available));
+        return deserialize(delegate.deserialize(input, available));
+    }
+
+    private static PartitionedEvent[] deserialize(byte[] bytes) {
+        return (PartitionedEvent[]) SerializableUtils.deserializeFromCompressedByteArray(bytes, "deserialize as stream event");
     }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventTimeOrderingComparator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventTimeOrderingComparator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventTimeOrderingComparator.java
index a9f9f39..5378c67 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventTimeOrderingComparator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/PartitionedEventTimeOrderingComparator.java
@@ -16,31 +16,31 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
+import org.apache.eagle.alert.engine.model.PartitionedEvent;
+
 import java.util.Comparator;
 import java.util.Objects;
 
-import org.apache.eagle.alert.engine.model.PartitionedEvent;
-
 /**
- * TODO: Stable sorting algorithm for better performance to avoid event resorting with same timestamp?
+ * TODO: Stable sorting algorithm for better performance to avoid event resorting with same timestamp?.
  */
 public class PartitionedEventTimeOrderingComparator implements Comparator<PartitionedEvent> {
     public static final PartitionedEventTimeOrderingComparator INSTANCE = new PartitionedEventTimeOrderingComparator();
 
     @Override
     public int compare(PartitionedEvent o1, PartitionedEvent o2) {
-        if(Objects.equals(o1,o2)){
+        if (Objects.equals(o1, o2)) {
             return 0;
-        }else {
-            if(o1 == null && o2 == null){
+        } else {
+            if (o1 == null && o2 == null) {
                 return 0;
-            }else if(o1 != null && o2 == null){
+            } else if (o1 != null && o2 == null) {
                 return 1;
-            }else if(o1 == null){
+            } else if (o1 == null) {
                 return -1;
             }
             // Unstable Sorting Algorithm
-            if(o1.getTimestamp() <= o2.getTimestamp()){
+            if (o1.getTimestamp() <= o2.getTimestamp()) {
                 return -1;
             } else {
                 return 1;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortWindowHandlerImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortWindowHandlerImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortWindowHandlerImpl.java
index 7be69e1..0ae84b8 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortWindowHandlerImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortWindowHandlerImpl.java
@@ -16,8 +16,6 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.io.IOException;
-
 import org.apache.eagle.alert.engine.PartitionedEventCollector;
 import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
@@ -30,8 +28,10 @@ import org.joda.time.Period;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+
 public class StreamSortWindowHandlerImpl implements StreamSortHandler {
-    private final static Logger LOG = LoggerFactory.getLogger(StreamSortWindowHandlerImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(StreamSortWindowHandlerImpl.class);
     private StreamWindowManager windowManager;
     private StreamSortSpec streamSortSpecSpec;
     private PartitionedEventCollector outputCollector;
@@ -39,17 +39,17 @@ public class StreamSortWindowHandlerImpl implements StreamSortHandler {
 
     public void prepare(String streamId, StreamSortSpec streamSortSpecSpec, PartitionedEventCollector outputCollector) {
         this.windowManager = new StreamWindowManagerImpl(
-                Period.parse(streamSortSpecSpec.getWindowPeriod()),
-                streamSortSpecSpec.getWindowMargin(),
-                PartitionedEventTimeOrderingComparator.INSTANCE,
-                outputCollector);
+            Period.parse(streamSortSpecSpec.getWindowPeriod()),
+            streamSortSpecSpec.getWindowMargin(),
+            PartitionedEventTimeOrderingComparator.INSTANCE,
+            outputCollector);
         this.streamSortSpecSpec = streamSortSpecSpec;
         this.streamId = streamId;
         this.outputCollector = outputCollector;
     }
 
     /**
-     * Entry point to manage window lifecycle
+     * Entry point to manage window lifecycle.
      *
      * @param event StreamEvent
      */
@@ -57,7 +57,7 @@ public class StreamSortWindowHandlerImpl implements StreamSortHandler {
         final long eventTime = event.getEvent().getTimestamp();
         boolean handled = false;
 
-        synchronized (this.windowManager){
+        synchronized (this.windowManager) {
             for (StreamWindow window : this.windowManager.getWindows()) {
                 if (window.alive() && window.add(event)) {
                     handled = true;
@@ -75,8 +75,8 @@ public class StreamSortWindowHandlerImpl implements StreamSortHandler {
             }
         }
 
-        if(!handled){
-            if(LOG.isDebugEnabled()) {
+        if (!handled) {
+            if (LOG.isDebugEnabled()) {
                 LOG.debug("Drop expired event {}", event);
             }
             outputCollector.drop(event);
@@ -84,7 +84,7 @@ public class StreamSortWindowHandlerImpl implements StreamSortHandler {
     }
 
     @Override
-    public void onTick(StreamTimeClock clock,long globalSystemTime) {
+    public void onTick(StreamTimeClock clock, long globalSystemTime) {
         windowManager.onTick(clock, globalSystemTime);
     }
 
@@ -93,7 +93,7 @@ public class StreamSortWindowHandlerImpl implements StreamSortHandler {
         try {
             windowManager.close();
         } catch (IOException e) {
-            LOG.error("Got exception while closing window manager",e);
+            LOG.error("Got exception while closing window manager", e);
         }
     }
 
@@ -103,10 +103,10 @@ public class StreamSortWindowHandlerImpl implements StreamSortHandler {
     }
 
     @Override
-    public int hashCode(){
-        if(streamSortSpecSpec == null){
+    public int hashCode() {
+        if (streamSortSpecSpec == null) {
             throw new NullPointerException("streamSortSpec is null");
-        }else{
+        } else {
             return streamSortSpecSpec.hashCode();
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowInMapDB.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowInMapDB.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowInMapDB.java
index c1c289d..73a63b4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowInMapDB.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowInMapDB.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -16,65 +16,56 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.util.Arrays;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.commons.lang3.time.StopWatch;
 import org.apache.eagle.alert.engine.PartitionedEventCollector;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
 import org.apache.eagle.alert.engine.sorter.BaseStreamWindow;
+import org.apache.commons.lang3.time.StopWatch;
 import org.mapdb.BTreeMap;
 import org.mapdb.DB;
 import org.mapdb.Serializer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Arrays;
+import java.util.concurrent.atomic.AtomicInteger;
+
 /**
  * StreamSortedWindow based on MapDB to support off-heap or disk storage.
- *
  * Stable sorting algorithm
- *
- * <br/><br/>
- *
  * See <a href="http://www.mapdb.org">http://www.mapdb.org</a>
  */
 public class StreamSortedWindowInMapDB extends BaseStreamWindow {
     private final String mapId;
-    private BTreeMap<Long, PartitionedEvent[]> bTreeMap;
-    private final static Logger LOG = LoggerFactory.getLogger(StreamSortedWindowInMapDB.class);
+    private BTreeMap<Long, PartitionedEvent[]> btreeMap;
+    private static final Logger LOG = LoggerFactory.getLogger(StreamSortedWindowInMapDB.class);
     private final AtomicInteger size;
-    private  long replaceOpCount = 0;
-    private final static PartitionedEventGroupSerializer STREAM_EVENT_GROUP_SERIALIZER = new PartitionedEventGroupSerializer();
+    private long replaceOpCount = 0;
+    private static final PartitionedEventGroupSerializer STREAM_EVENT_GROUP_SERIALIZER = new PartitionedEventGroupSerializer();
 
     /**
-     * @param start
-     * @param end
-     * @param margin
-     * @param db
-     * @param mapId physical map id, used to decide whether to reuse or not
+     * @param mapId  physical map id, used to decide whether to reuse or not.
      */
     @SuppressWarnings("unused")
-    public StreamSortedWindowInMapDB(long start, long end, long margin,DB db,String mapId) {
+    public StreamSortedWindowInMapDB(long start, long end, long margin, DB db, String mapId) {
         super(start, end, margin);
         this.mapId = mapId;
         try {
-            bTreeMap = db.<Long, StreamEvent>treeMap(mapId).
-                    keySerializer(Serializer.LONG).
-                    valueSerializer(STREAM_EVENT_GROUP_SERIALIZER).
-                    createOrOpen();
-            LOG.debug("Created BTree map {}",mapId);
-        } catch (Error error){
-            LOG.info("Failed create BTree {}",mapId,error);
+            btreeMap = db.<Long, StreamEvent>treeMap(mapId)
+                .keySerializer(Serializer.LONG)
+                .valueSerializer(STREAM_EVENT_GROUP_SERIALIZER)
+                .createOrOpen();
+            LOG.debug("Created BTree map {}", mapId);
+        } catch (Error error) {
+            LOG.info("Failed create BTree {}", mapId, error);
         }
         size = new AtomicInteger(0);
     }
 
     /**
      * Assumed: most of adding operation will do putting only and few require replacing.
-     *
      * <ol>
- *     <li>
+     * <li>
      * First of all, always try to put with created event directly
      * </li>
      * <li>
@@ -82,31 +73,34 @@ public class StreamSortedWindowInMapDB extends BaseStreamWindow {
      * replace operation will cause more consumption
      * </li>
      * </ol>
+     *
      * @param event coming-in event
      * @return whether success
      */
     @Override
     public synchronized boolean add(PartitionedEvent event) {
         long timestamp = event.getEvent().getTimestamp();
-        if(accept(timestamp)) {
-            boolean absent = bTreeMap.putIfAbsentBoolean(timestamp, new PartitionedEvent[]{event});
+        if (accept(timestamp)) {
+            boolean absent = btreeMap.putIfAbsentBoolean(timestamp, new PartitionedEvent[] {event});
             if (!absent) {
                 size.incrementAndGet();
                 return true;
             } else {
-                if(LOG.isDebugEnabled()) LOG.debug("Duplicated timestamp {}, will reduce performance as replacing",timestamp);
-                PartitionedEvent[] oldValue = bTreeMap.get(timestamp);
-                PartitionedEvent[] newValue = oldValue == null ? new PartitionedEvent[1]: Arrays.copyOf(oldValue,oldValue.length+1);
-                newValue[newValue.length-1] = event;
-                PartitionedEvent[] removedValue = bTreeMap.replace(timestamp,newValue);
-                replaceOpCount ++;
-                if(replaceOpCount % 1000 == 0){
-                    LOG.warn("Too many events ({}) with overlap timestamp, may reduce insertion performance",replaceOpCount);
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Duplicated timestamp {}, will reduce performance as replacing", timestamp);
+                }
+                PartitionedEvent[] oldValue = btreeMap.get(timestamp);
+                PartitionedEvent[] newValue = oldValue == null ? new PartitionedEvent[1] : Arrays.copyOf(oldValue, oldValue.length + 1);
+                newValue[newValue.length - 1] = event;
+                PartitionedEvent[] removedValue = btreeMap.replace(timestamp, newValue);
+                replaceOpCount++;
+                if (replaceOpCount % 1000 == 0) {
+                    LOG.warn("Too many events ({}) with overlap timestamp, may reduce insertion performance", replaceOpCount);
                 }
-                if(removedValue!=null) {
+                if (removedValue != null) {
                     size.incrementAndGet();
                 } else {
-                    throw new IllegalStateException("Failed to replace key "+timestamp+" with "+newValue.length+" entities array to replace old "+oldValue.length+" entities array");
+                    throw new IllegalStateException("Failed to replace key " + timestamp + " with " + newValue.length + " entities array to replace old " + oldValue.length + " entities array");
                 }
                 return true;
             }
@@ -119,12 +113,12 @@ public class StreamSortedWindowInMapDB extends BaseStreamWindow {
     protected synchronized void flush(PartitionedEventCollector collector) {
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
-        bTreeMap.valueIterator().forEachRemaining((events)->{
-            for(PartitionedEvent event:events){
+        btreeMap.valueIterator().forEachRemaining((events) -> {
+            for (PartitionedEvent event : events) {
                 collector.emit(event);
             }
         });
-        bTreeMap.clear();
+        btreeMap.clear();
         replaceOpCount = 0;
         stopWatch.stop();
         LOG.info("Flushed {} events in {} ms", size, stopWatch.getTime());
@@ -132,10 +126,10 @@ public class StreamSortedWindowInMapDB extends BaseStreamWindow {
     }
 
     @Override
-    public synchronized void close(){
+    public synchronized void close() {
         super.close();
-        bTreeMap.close();
-        LOG.info("Closed {}",this.mapId);
+        btreeMap.close();
+        LOG.info("Closed {}", this.mapId);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowOnHeap.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowOnHeap.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowOnHeap.java
index d3b1d7d..ed000f1 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowOnHeap.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamSortedWindowOnHeap.java
@@ -16,33 +16,33 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.util.Comparator;
-
-import org.apache.commons.lang3.time.StopWatch;
 import org.apache.eagle.alert.engine.PartitionedEventCollector;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.sorter.BaseStreamWindow;
+
+import com.google.common.collect.TreeMultiset;
+import org.apache.commons.lang3.time.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.TreeMultiset;
+import java.util.Comparator;
 
 public class StreamSortedWindowOnHeap extends BaseStreamWindow {
-    private final static Logger LOG = LoggerFactory.getLogger(StreamSortedWindowOnHeap.class);
+    private static final Logger LOG = LoggerFactory.getLogger(StreamSortedWindowOnHeap.class);
     private final TreeMultiset<PartitionedEvent> treeMultisetCache;
 
     /**
-     * @param start start time
-     * @param end end time
-     * @param margin margin time
+     * @param start  start time.
+     * @param end    end time.
+     * @param margin margin time.
      */
-    public StreamSortedWindowOnHeap(long start, long end, long margin, Comparator<PartitionedEvent> comparator ){
-        super(start,end,margin);
+    public StreamSortedWindowOnHeap(long start, long end, long margin, Comparator<PartitionedEvent> comparator) {
+        super(start, end, margin);
         treeMultisetCache = TreeMultiset.create(comparator);
     }
 
-    public StreamSortedWindowOnHeap(long start, long end, long margin){
-        this(start,end,margin,new PartitionedEventTimeOrderingComparator());
+    public StreamSortedWindowOnHeap(long start, long end, long margin) {
+        this(start, end, margin, new PartitionedEventTimeOrderingComparator());
     }
 
     @Override
@@ -52,7 +52,9 @@ public class StreamSortedWindowOnHeap extends BaseStreamWindow {
                 treeMultisetCache.add(partitionedEvent);
                 return true;
             } else {
-                if(LOG.isDebugEnabled()) LOG.debug("{} is not acceptable, ignored", partitionedEvent);
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("{} is not acceptable, ignored", partitionedEvent);
+                }
                 return false;
             }
         }
@@ -67,7 +69,7 @@ public class StreamSortedWindowOnHeap extends BaseStreamWindow {
             int size = treeMultisetCache.size();
             treeMultisetCache.clear();
             stopWatch.stop();
-            LOG.info("Flushed {} events in {} ms from {}", size, stopWatch.getTime(),this.toString());
+            LOG.info("Flushed {} events in {} ms from {}", size, stopWatch.getTime(), this.toString());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockInLocalMemory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockInLocalMemory.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockInLocalMemory.java
index 91a4a37..0c44074 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockInLocalMemory.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockInLocalMemory.java
@@ -16,33 +16,33 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.util.concurrent.atomic.AtomicLong;
-
 import org.apache.eagle.alert.engine.sorter.StreamTimeClock;
 import org.apache.eagle.alert.utils.DateTimeUtil;
 
+import java.util.concurrent.atomic.AtomicLong;
+
 
 /**
- * In memory thread-safe time clock service
- *
+ * In memory thread-safe time clock service.
  * TODO: maybe need to synchronize time clock globally, how to?
  */
 public class StreamTimeClockInLocalMemory implements StreamTimeClock {
     private final AtomicLong currentTime;
     private final String streamId;
 
-    public StreamTimeClockInLocalMemory(String streamId,long initialTime){
+    public StreamTimeClockInLocalMemory(String streamId, long initialTime) {
         this.streamId = streamId;
         this.currentTime = new AtomicLong(initialTime);
     }
-    public StreamTimeClockInLocalMemory(String streamId){
-        this(streamId,0L);
+
+    public StreamTimeClockInLocalMemory(String streamId) {
+        this(streamId, 0L);
     }
 
     @Override
-    public void moveForward(long timestamp){
-        if(timestamp < currentTime.get()){
-            throw new IllegalArgumentException(timestamp +" < "+currentTime.get()+", should not move time back");
+    public void moveForward(long timestamp) {
+        if (timestamp < currentTime.get()) {
+            throw new IllegalArgumentException(timestamp + " < " + currentTime.get() + ", should not move time back");
         }
         this.currentTime.set(timestamp);
     }
@@ -59,6 +59,6 @@ public class StreamTimeClockInLocalMemory implements StreamTimeClock {
 
     @Override
     public String toString() {
-        return String.format("StreamClock[streamId=%s, now=%s]",streamId, DateTimeUtil.millisecondsToHumanDateWithMilliseconds(currentTime.get()));
+        return String.format("StreamClock[streamId=%s, now=%s]", streamId, DateTimeUtil.millisecondsToHumanDateWithMilliseconds(currentTime.get()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockManagerImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockManagerImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockManagerImpl.java
index 741d7f0..49378db 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockManagerImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamTimeClockManagerImpl.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -16,12 +16,6 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.atomic.AtomicInteger;
-
 import org.apache.eagle.alert.engine.sorter.StreamTimeClock;
 import org.apache.eagle.alert.engine.sorter.StreamTimeClockListener;
 import org.apache.eagle.alert.engine.sorter.StreamTimeClockManager;
@@ -29,56 +23,56 @@ import org.apache.eagle.alert.utils.DateTimeUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.atomic.AtomicInteger;
+
 public final class StreamTimeClockManagerImpl implements StreamTimeClockManager {
     private static final long serialVersionUID = -2770823821511195343L;
-    private final static Logger LOG = LoggerFactory.getLogger(StreamTimeClockManagerImpl.class);
-    private final Map<String,StreamTimeClock> streamIdTimeClockMap;
+    private static final Logger LOG = LoggerFactory.getLogger(StreamTimeClockManagerImpl.class);
+    private final Map<String, StreamTimeClock> streamIdTimeClockMap;
     private Timer timer;
 
-    private final Map<StreamTimeClockListener,String> listenerStreamIdMap;
-    private final static AtomicInteger num = new AtomicInteger();
+    private final Map<StreamTimeClockListener, String> listenerStreamIdMap;
+    private static final AtomicInteger num = new AtomicInteger();
 
-    public StreamTimeClockManagerImpl(){
+    public StreamTimeClockManagerImpl() {
         listenerStreamIdMap = new HashMap<>();
         streamIdTimeClockMap = new HashMap<>();
-        timer = new Timer("StreamScheduler-"+num.getAndIncrement());
+        timer = new Timer("StreamScheduler-" + num.getAndIncrement());
         timer.schedule(new TimerTask() {
             @Override
             public void run() {
                 // Make sure the timer tick happens one by one
-                    triggerTickOnAll();
+                triggerTickOnAll();
             }
-        },1000,1000);
+        }, 1000, 1000);
     }
 
     /**
-     *
      * By default, we could keep the current time clock in memory,
      * Eventually we may need to consider the global time synchronization across all nodes
-     *
      * 1) When to initialize window according to start time
      * 2) When to close expired window according to current time
      *
-     * @return StreamTimeClock instance
+     * @return StreamTimeClock instance.
      */
     @Override
-    public StreamTimeClock createStreamTimeClock(String streamId){
+    public StreamTimeClock createStreamTimeClock(String streamId) {
         synchronized (streamIdTimeClockMap) {
             if (!streamIdTimeClockMap.containsKey(streamId)) {
                 StreamTimeClock instance = new StreamTimeClockInLocalMemory(streamId);
                 LOG.info("Created {}", instance);
                 streamIdTimeClockMap.put(streamId, instance);
             } else {
-                LOG.warn("TimeClock for stream already existss: "+streamIdTimeClockMap.get(streamId));
+                LOG.warn("TimeClock for stream already existss: " + streamIdTimeClockMap.get(streamId));
             }
             return streamIdTimeClockMap.get(streamId);
         }
     }
 
-    /**
-     * @param streamId
-     * @return
-     */
     @Override
     public StreamTimeClock getStreamTimeClock(String streamId) {
         synchronized (streamIdTimeClockMap) {
@@ -90,11 +84,8 @@ public final class StreamTimeClockManagerImpl implements StreamTimeClockManager
         }
     }
 
-    /**
-     * @param streamId
-     */
     @Override
-    public void removeStreamTimeClock(String streamId){
+    public void removeStreamTimeClock(String streamId) {
         synchronized (streamIdTimeClockMap) {
             if (streamIdTimeClockMap.containsKey(streamId)) {
                 streamIdTimeClockMap.remove(streamId);
@@ -106,10 +97,11 @@ public final class StreamTimeClockManagerImpl implements StreamTimeClockManager
     }
 
     @Override
-    public void registerListener(String streamId,StreamTimeClockListener listener) {
+    public void registerListener(String streamId, StreamTimeClockListener listener) {
         synchronized (listenerStreamIdMap) {
-            if (listenerStreamIdMap.containsKey(listener))
+            if (listenerStreamIdMap.containsKey(listener)) {
                 throw new IllegalArgumentException("Duplicated listener: " + listener.toString());
+            }
             LOG.info("Register {} on {}", listener, streamId);
             listenerStreamIdMap.put(listener, streamId);
         }
@@ -117,7 +109,7 @@ public final class StreamTimeClockManagerImpl implements StreamTimeClockManager
 
     @Override
     public void registerListener(StreamTimeClock streamClock, StreamTimeClockListener listener) {
-        registerListener(streamClock.getStreamId(),listener);
+        registerListener(streamClock.getStreamId(), listener);
     }
 
     @Override
@@ -134,27 +126,32 @@ public final class StreamTimeClockManagerImpl implements StreamTimeClockManager
                 count++;
             }
         }
-        if (LOG.isDebugEnabled()) LOG.debug("Triggered {} time-clock listeners on stream {}", count, streamId);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Triggered {} time-clock listeners on stream {}", count, streamId);
+        }
     }
 
-    private static long getCurrentSystemTime(){
+    private static long getCurrentSystemTime() {
         return System.currentTimeMillis();
     }
 
     @Override
     public void onTimeUpdate(String streamId, long timestamp) {
         StreamTimeClock timeClock = getStreamTimeClock(streamId);
-        if(timeClock == null)
+        if (timeClock == null) {
             return;
+        }
         // Trigger time clock only when time moves forward
-        if(timestamp >= timeClock.getTime()) {
+        if (timestamp >= timeClock.getTime()) {
             timeClock.moveForward(timestamp);
-            if(LOG.isDebugEnabled()) LOG.debug("Tick on stream {} with latest time {}",streamId, DateTimeUtil.millisecondsToHumanDateWithMilliseconds(timeClock.getTime()));
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Tick on stream {} with latest time {}", streamId, DateTimeUtil.millisecondsToHumanDateWithMilliseconds(timeClock.getTime()));
+            }
             triggerTickOn(streamId);
         }
     }
 
-    private void triggerTickOnAll(){
+    private void triggerTickOnAll() {
         synchronized (listenerStreamIdMap) {
             for (Map.Entry<StreamTimeClockListener, String> entry : listenerStreamIdMap.entrySet()) {
                 triggerTickOn(entry.getValue());
@@ -166,6 +163,6 @@ public final class StreamTimeClockManagerImpl implements StreamTimeClockManager
     public void close() {
         timer.cancel();
         triggerTickOnAll();
-        LOG.info("Closed StreamTimeClockManager {}",this);
+        LOG.info("Closed StreamTimeClockManager {}", this);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamWindowManagerImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamWindowManagerImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamWindowManagerImpl.java
index 4e1212f..e8921a2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamWindowManagerImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/impl/StreamWindowManagerImpl.java
@@ -16,13 +16,6 @@
  */
 package org.apache.eagle.alert.engine.sorter.impl;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-import java.util.TreeMap;
-
-import org.apache.commons.lang3.time.StopWatch;
 import org.apache.eagle.alert.engine.PartitionedEventCollector;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.sorter.StreamTimeClock;
@@ -31,13 +24,17 @@ import org.apache.eagle.alert.engine.sorter.StreamWindowManager;
 import org.apache.eagle.alert.engine.sorter.StreamWindowRepository;
 import org.apache.eagle.alert.utils.DateTimeUtil;
 import org.apache.eagle.alert.utils.TimePeriodUtils;
+
+import org.apache.commons.lang3.time.StopWatch;
 import org.joda.time.Period;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.*;
+
 public class StreamWindowManagerImpl implements StreamWindowManager {
-    private final static Logger LOG = LoggerFactory.getLogger(StreamWindowManagerImpl.class);
-    private final TreeMap<Long,StreamWindow> windowBuckets;
+    private static final Logger LOG = LoggerFactory.getLogger(StreamWindowManagerImpl.class);
+    private final TreeMap<Long, StreamWindow> windowBuckets;
     private final PartitionedEventCollector collector;
     private final Period windowPeriod;
     private final long windowMargin;
@@ -45,7 +42,7 @@ public class StreamWindowManagerImpl implements StreamWindowManager {
     private final Comparator<PartitionedEvent> comparator;
     private long rejectTime;
 
-    public StreamWindowManagerImpl(Period windowPeriod, long windowMargin, Comparator<PartitionedEvent> comparator, PartitionedEventCollector collector){
+    public StreamWindowManagerImpl(Period windowPeriod, long windowMargin, Comparator<PartitionedEvent> comparator, PartitionedEventCollector collector) {
         this.windowBuckets = new TreeMap<>();
         this.windowPeriod = windowPeriod;
         this.windowMargin = windowMargin;
@@ -64,12 +61,14 @@ public class StreamWindowManagerImpl implements StreamWindowManager {
                 addWindow(window);
                 return window;
             } else {
-                throw new IllegalStateException("Failed to create new window, as " + DateTimeUtil.millisecondsToHumanDateWithMilliseconds(initialTime) + " is too late, only allow timestamp after " + DateTimeUtil.millisecondsToHumanDateWithMilliseconds(rejectTime));
+                throw new IllegalStateException("Failed to create new window, as "
+                    + DateTimeUtil.millisecondsToHumanDateWithMilliseconds(initialTime) + " is too late, only allow timestamp after "
+                    + DateTimeUtil.millisecondsToHumanDateWithMilliseconds(rejectTime));
             }
         }
     }
 
-    private void addWindow(StreamWindow window){
+    private void addWindow(StreamWindow window) {
         if (!windowBuckets.containsKey(window.startTime())) {
             windowBuckets.put(window.startTime(), window);
         } else {
@@ -121,37 +120,41 @@ public class StreamWindowManagerImpl implements StreamWindowManager {
     }
 
     @Override
-    public void onTick(StreamTimeClock clock,long globalSystemTime) {
+    public void onTick(StreamTimeClock clock, long globalSystemTime) {
         synchronized (windowBuckets) {
             List<StreamWindow> toRemoved = new ArrayList<>();
             List<StreamWindow> aliveWindow = new ArrayList<>();
 
             for (StreamWindow windowBucket : windowBuckets.values()) {
                 windowBucket.onTick(clock, globalSystemTime);
-                if (windowBucket.rejectTime() > rejectTime) rejectTime = windowBucket.rejectTime();
+                if (windowBucket.rejectTime() > rejectTime) {
+                    rejectTime = windowBucket.rejectTime();
+                }
             }
             for (StreamWindow windowBucket : windowBuckets.values()) {
-                if (windowBucket.expired() || windowBucket.endTime() <=rejectTime) {
+                if (windowBucket.expired() || windowBucket.endTime() <= rejectTime) {
                     toRemoved.add(windowBucket);
                 } else {
                     aliveWindow.add(windowBucket);
                 }
             }
-            toRemoved.forEach(this::CloseAndRemoveWindow);
-            if (toRemoved.size() > 0) LOG.info("Windows: {} alive = {}, {} expired = {}", aliveWindow.size(), aliveWindow, toRemoved.size(), toRemoved);
+            toRemoved.forEach(this::closeAndRemoveWindow);
+            if (toRemoved.size() > 0) {
+                LOG.info("Windows: {} alive = {}, {} expired = {}", aliveWindow.size(), aliveWindow, toRemoved.size(), toRemoved);
+            }
         }
     }
 
-    private void CloseAndRemoveWindow(StreamWindow windowBucket){
+    private void closeAndRemoveWindow(StreamWindow windowBucket) {
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
-        CloseWindow(windowBucket);
+        closeWindow(windowBucket);
         removeWindow(windowBucket);
         stopWatch.stop();
-        LOG.info("Removed {} in {} ms",windowBucket,stopWatch.getTime());
+        LOG.info("Removed {} in {} ms", windowBucket, stopWatch.getTime());
     }
 
-    private void CloseWindow(StreamWindow windowBucket){
+    private void closeWindow(StreamWindow windowBucket) {
         windowBucket.close();
     }
 
@@ -163,7 +166,7 @@ public class StreamWindowManagerImpl implements StreamWindowManager {
             int count = 0;
             for (StreamWindow windowBucket : getWindows()) {
                 count++;
-                CloseWindow(windowBucket);
+                closeWindow(windowBucket);
             }
             windowBuckets.clear();
             stopWatch.stop();


[12/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowProcessor.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowProcessor.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowProcessor.java
index 4e8d381..8f00b31 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowProcessor.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/absence/AbsenceWindowProcessor.java
@@ -33,65 +33,66 @@ public class AbsenceWindowProcessor {
     private boolean expired; // to mark if the time range has been went through
     private OccurStatus status = OccurStatus.not_sure;
 
-    public enum OccurStatus{
+    public enum OccurStatus {
         not_sure,
         occured,
         absent
     }
 
-    public AbsenceWindowProcessor(List<Object> expectAttrs, AbsenceWindow window){
+    public AbsenceWindowProcessor(List<Object> expectAttrs, AbsenceWindow window) {
         this.expectAttrs = expectAttrs;
         this.window = window;
         expired = false;
     }
 
     /**
-     * return true if it is certain that expected attributes don't occur during startTime and endTime, else return false
-     * @param appearAttrs
-     * @param occurTime
-     * @return
+     * return true if it is certain that expected attributes don't occur during startTime and endTime, else return false.
      */
-    public void process(List<Object> appearAttrs, long occurTime){
-        if(expired)
+    public void process(List<Object> appearAttrs, long occurTime) {
+        if (expired) {
             throw new IllegalStateException("Expired window can't recieve events");
-        switch(status) {
+        }
+        switch (status) {
             case not_sure:
-                if(occurTime < window.startTime) {
+                if (occurTime < window.startTime) {
                     break;
-                }else if(occurTime >= window.startTime &&
-                        occurTime <= window.endTime) {
-                    if(expectAttrs.equals(appearAttrs)) {
+                } else if (occurTime >= window.startTime
+                    && occurTime <= window.endTime) {
+                    if (expectAttrs.equals(appearAttrs)) {
                         status = OccurStatus.occured;
                     }
                     break;
-                }else{
+                } else {
                     status = OccurStatus.absent;
                     break;
                 }
             case occured:
-                if(occurTime > window.endTime)
+                if (occurTime > window.endTime) {
                     expired = true;
+                }
                 break;
             default:
                 break;
         }
         // reset status
-        if(status == OccurStatus.absent){
+        if (status == OccurStatus.absent) {
             expired = true;
         }
     }
 
-    public OccurStatus checkStatus(){
+    public OccurStatus checkStatus() {
         return status;
     }
-    public boolean checkExpired(){
+
+    public boolean checkExpired() {
         return expired;
     }
-    public AbsenceWindow currWindow(){
+
+    public AbsenceWindow currWindow() {
         return window;
     }
 
-    public String toString(){
+    public String toString() {
         return "expectAttrs=" + expectAttrs + ", status=" + status + ", expired=" + expired + ", window=[" + window + "]";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorThreadSafeWrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorThreadSafeWrapper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorThreadSafeWrapper.java
index ca1f622..33d502e 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorThreadSafeWrapper.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorThreadSafeWrapper.java
@@ -16,37 +16,36 @@
  */
 package org.apache.eagle.alert.engine.evaluator.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.atomic.AtomicLong;
-
 import org.apache.eagle.alert.engine.AlertStreamCollector;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
+import backtype.storm.task.OutputCollector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.task.OutputCollector;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.atomic.AtomicLong;
 
 /**
- * <h2>Thread Safe Mechanism</h2>
+ * <h2>Thread Safe Mechanism.</h2>
  * <ul>
  * <li>
- *     emit() method is thread-safe enough to be called anywhere asynchronously in multi-thread
+ * emit() method is thread-safe enough to be called anywhere asynchronously in multi-thread
  * </li>
  * <li>
- *     flush() method must be called synchronously, because Storm OutputCollector is not thread-safe
+ * flush() method must be called synchronously, because Storm OutputCollector is not thread-safe
  * </li>
  * </ul>
  */
 public class AlertBoltOutputCollectorThreadSafeWrapper implements AlertStreamCollector {
     private final OutputCollector delegate;
     private final LinkedBlockingQueue<AlertStreamEvent> queue;
-    private final static Logger LOG = LoggerFactory.getLogger(AlertBoltOutputCollectorThreadSafeWrapper.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AlertBoltOutputCollectorThreadSafeWrapper.class);
     private final AtomicLong lastFlushTime = new AtomicLong(System.currentTimeMillis());
     private final AutoAlertFlusher flusher;
-    private final static int MAX_ALERT_DELAY_SECS = 10;
+    private static final int MAX_ALERT_DELAY_SECS = 10;
 
     public AlertBoltOutputCollectorThreadSafeWrapper(OutputCollector outputCollector) {
         this.delegate = outputCollector;
@@ -59,7 +58,7 @@ public class AlertBoltOutputCollectorThreadSafeWrapper implements AlertStreamCol
     private static class AutoAlertFlusher extends Thread {
         private final AlertBoltOutputCollectorThreadSafeWrapper collector;
         private boolean stopped = false;
-        private final static Logger LOG = LoggerFactory.getLogger(AutoAlertFlusher.class);
+        private static final Logger LOG = LoggerFactory.getLogger(AutoAlertFlusher.class);
 
         private AutoAlertFlusher(AlertBoltOutputCollectorThreadSafeWrapper collector) {
             this.collector = collector;
@@ -75,6 +74,7 @@ public class AlertBoltOutputCollectorThreadSafeWrapper implements AlertStreamCol
                 try {
                     Thread.sleep(5000);
                 } catch (InterruptedException ignored) {
+                    // ignored
                 }
             }
             LOG.info("Stopped");
@@ -87,7 +87,8 @@ public class AlertBoltOutputCollectorThreadSafeWrapper implements AlertStreamCol
     }
 
     /**
-     * Emit method can be called in multi-thread
+     * Emit method can be called in multi-thread.
+     *
      * @param event
      */
     @Override
@@ -95,7 +96,7 @@ public class AlertBoltOutputCollectorThreadSafeWrapper implements AlertStreamCol
         try {
             queue.put(event);
         } catch (InterruptedException e) {
-            LOG.error(e.getMessage(),e);
+            LOG.error(e.getMessage(), e);
         }
     }
 
@@ -104,7 +105,7 @@ public class AlertBoltOutputCollectorThreadSafeWrapper implements AlertStreamCol
      */
     @Override
     public void flush() {
-        if(!queue.isEmpty()) {
+        if (!queue.isEmpty()) {
             List<AlertStreamEvent> events = new ArrayList<>();
             queue.drainTo(events);
             events.forEach((event) -> delegate.emit(Arrays.asList(event.getStreamId(), event)));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorWrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorWrapper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorWrapper.java
index 8d8a4d2..042fca7 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorWrapper.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertBoltOutputCollectorWrapper.java
@@ -16,20 +16,19 @@
  */
 package org.apache.eagle.alert.engine.evaluator.impl;
 
-import java.util.Arrays;
-
 import org.apache.eagle.alert.engine.AlertStreamCollector;
 import org.apache.eagle.alert.engine.StreamContext;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
-
 import backtype.storm.task.OutputCollector;
 
+import java.util.Arrays;
+
 public class AlertBoltOutputCollectorWrapper implements AlertStreamCollector {
     private final OutputCollector delegate;
     private final Object outputLock;
     private final StreamContext streamContext;
 
-    public AlertBoltOutputCollectorWrapper(OutputCollector outputCollector, Object outputLock, StreamContext streamContext){
+    public AlertBoltOutputCollectorWrapper(OutputCollector outputCollector, Object outputLock, StreamContext streamContext) {
         this.delegate = outputCollector;
         this.outputLock = outputLock;
         this.streamContext = streamContext;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertStreamCallback.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertStreamCallback.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertStreamCallback.java
index b9a109c..ee1853c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertStreamCallback.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/AlertStreamCallback.java
@@ -52,14 +52,12 @@ public class AlertStreamCallback extends StreamCallback {
     }
 
     /**
-     * Possibly more than one event will be triggered for alerting
-     *
-     * @param events
+     * Possibly more than one event will be triggered for alerting.
      */
     @Override
     public void receive(Event[] events) {
         String policyName = context.getPolicyDefinition().getName();
-        CompositePolicyHandler handler = ((PolicyGroupEvaluatorImpl)context.getPolicyEvaluator()).getPolicyHandler(policyName);
+        CompositePolicyHandler handler = ((PolicyGroupEvaluatorImpl) context.getPolicyEvaluator()).getPolicyHandler(policyName);
         if (LOG.isDebugEnabled()) {
             LOG.debug("Generated {} alerts from policy '{}' in {}, index of definiton {} ", events.length, policyName, context.getPolicyEvaluatorId(), currentIndex);
         }
@@ -75,18 +73,21 @@ public class AlertStreamCallback extends StreamCallback {
             event.setCreatedTime(System.currentTimeMillis());
             event.setSchema(definition);
 
-            if (LOG.isDebugEnabled())
+            if (LOG.isDebugEnabled()) {
                 LOG.debug("Generate new alert event: {}", event);
+            }
             try {
                 if (handler == null) {
                     // extreme case: the handler is removed from the evaluator. Just emit.
-                    if (LOG.isDebugEnabled()) LOG.debug(" handler not found when callback received event, directly emit. policy removed? ");
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug(" handler not found when callback received event, directly emit. policy removed? ");
+                    }
                     collector.emit(event);
                 } else {
                     handler.send(event, currentIndex + 1);
                 }
             } catch (Exception ex) {
-                LOG.error(String.format("send event %s to index %d failed with exception. ",event, currentIndex), ex);
+                LOG.error(String.format("send event %s to index %d failed with exception. ", event, currentIndex), ex);
             }
         }
         context.getPolicyCounter().scope(String.format("%s.%s", this.context.getPolicyDefinition().getName(), "alert_count")).incrBy(events.length);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
index 26ae19e..eed4b3b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
@@ -35,17 +35,17 @@ import java.util.Map;
 public class PolicyGroupEvaluatorImpl implements PolicyGroupEvaluator {
     private static final long serialVersionUID = -5499413193675985288L;
 
-    private final static Logger LOG = LoggerFactory.getLogger(PolicyGroupEvaluatorImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(PolicyGroupEvaluatorImpl.class);
 
     private AlertStreamCollector collector;
     // mapping from policy name to PolicyDefinition
-    private volatile Map<String,PolicyDefinition> policyDefinitionMap = new HashMap<>();
+    private volatile Map<String, PolicyDefinition> policyDefinitionMap = new HashMap<>();
     // mapping from policy name to PolicyStreamHandler
-    private volatile Map<String,CompositePolicyHandler> policyStreamHandlerMap = new HashMap<>();
+    private volatile Map<String, CompositePolicyHandler> policyStreamHandlerMap = new HashMap<>();
     private String policyEvaluatorId;
     private StreamContext context;
 
-    public PolicyGroupEvaluatorImpl(String policyEvaluatorId){
+    public PolicyGroupEvaluatorImpl(String policyEvaluatorId) {
         this.policyEvaluatorId = policyEvaluatorId;
     }
 
@@ -67,34 +67,35 @@ public class PolicyGroupEvaluatorImpl implements PolicyGroupEvaluator {
     }
 
     public void close() {
-        for(PolicyStreamHandler handler: policyStreamHandlerMap.values()){
+        for (PolicyStreamHandler handler : policyStreamHandlerMap.values()) {
             try {
                 handler.close();
             } catch (Exception e) {
-                LOG.error("Failed to close handler {}",handler.toString(),e);
+                LOG.error("Failed to close handler {}", handler.toString(), e);
             }
         }
     }
 
     /**
-     * fixme make selection of PolicyStreamHandler to be more efficient
+     * fixme make selection of PolicyStreamHandler to be more efficient.
+     *
      * @param partitionedEvent PartitionedEvent
      */
-    private void dispatch(PartitionedEvent partitionedEvent){
+    private void dispatch(PartitionedEvent partitionedEvent) {
         boolean handled = false;
-        for(Map.Entry<String,CompositePolicyHandler> policyStreamHandler: policyStreamHandlerMap.entrySet()){
-            if(isAcceptedByPolicy(partitionedEvent,policyDefinitionMap.get(policyStreamHandler.getKey()))){
+        for (Map.Entry<String, CompositePolicyHandler> policyStreamHandler : policyStreamHandlerMap.entrySet()) {
+            if (isAcceptedByPolicy(partitionedEvent, policyDefinitionMap.get(policyStreamHandler.getKey()))) {
                 try {
                     handled = true;
                     this.context.counter().scope("eval_count").incr();
                     policyStreamHandler.getValue().send(partitionedEvent.getEvent());
                 } catch (Exception e) {
                     this.context.counter().scope("fail_count").incr();
-                    LOG.error("{} failed to handle {}",policyStreamHandler.getValue(), partitionedEvent.getEvent(), e);
+                    LOG.error("{} failed to handle {}", policyStreamHandler.getValue(), partitionedEvent.getEvent(), e);
                 }
             }
         }
-        if(!handled){
+        if (!handled) {
             this.context.counter().scope("drop_count").incr();
             LOG.warn("Drop stream non-matched event {}, which should not be sent to evaluator", partitionedEvent);
         } else {
@@ -103,22 +104,22 @@ public class PolicyGroupEvaluatorImpl implements PolicyGroupEvaluator {
     }
 
     private static boolean isAcceptedByPolicy(PartitionedEvent event, PolicyDefinition policy) {
-        return policy.getPartitionSpec().contains(event.getPartition()) &&
-                ( policy.getInputStreams().contains(event.getEvent().getStreamId()) ||
-                    policy.getDefinition().getInputStreams().contains(event.getEvent().getStreamId()) );
+        return policy.getPartitionSpec().contains(event.getPartition())
+            && (policy.getInputStreams().contains(event.getEvent().getStreamId())
+            || policy.getDefinition().getInputStreams().contains(event.getEvent().getStreamId()));
     }
 
     @Override
     public void onPolicyChange(List<PolicyDefinition> added, List<PolicyDefinition> removed, List<PolicyDefinition> modified, Map<String, StreamDefinition> sds) {
-        Map<String,PolicyDefinition> copyPolicies = new HashMap<>(policyDefinitionMap);
-        Map<String,CompositePolicyHandler> copyHandlers = new HashMap<>(policyStreamHandlerMap);
-        for(PolicyDefinition pd : added){
+        Map<String, PolicyDefinition> copyPolicies = new HashMap<>(policyDefinitionMap);
+        Map<String, CompositePolicyHandler> copyHandlers = new HashMap<>(policyStreamHandlerMap);
+        for (PolicyDefinition pd : added) {
             inplaceAdd(copyPolicies, copyHandlers, pd, sds);
         }
-        for(PolicyDefinition pd : removed){
+        for (PolicyDefinition pd : removed) {
             inplaceRemove(copyPolicies, copyHandlers, pd);
         }
-        for(PolicyDefinition pd : modified){
+        for (PolicyDefinition pd : modified) {
             inplaceRemove(copyPolicies, copyHandlers, pd);
             inplaceAdd(copyPolicies, copyHandlers, pd, sds);
         }
@@ -132,9 +133,9 @@ public class PolicyGroupEvaluatorImpl implements PolicyGroupEvaluator {
     }
 
     private void inplaceAdd(Map<String, PolicyDefinition> policies, Map<String, CompositePolicyHandler> handlers, PolicyDefinition policy, Map<String, StreamDefinition> sds) {
-        if(handlers.containsKey(policy.getName())){
+        if (handlers.containsKey(policy.getName())) {
             LOG.error("metadata calculation error, try to add existing PolicyDefinition " + policy);
-        }else {
+        } else {
             policies.put(policy.getName(), policy);
             CompositePolicyHandler handler = new CompositePolicyHandler(sds);
             try {
@@ -154,20 +155,20 @@ public class PolicyGroupEvaluatorImpl implements PolicyGroupEvaluator {
         }
     }
 
-    private void inplaceRemove(Map<String, PolicyDefinition> policies, Map<String, CompositePolicyHandler> handlers, PolicyDefinition policy)  {
-        if(handlers.containsKey(policy.getName())) {
+    private void inplaceRemove(Map<String, PolicyDefinition> policies, Map<String, CompositePolicyHandler> handlers, PolicyDefinition policy) {
+        if (handlers.containsKey(policy.getName())) {
             PolicyStreamHandler handler = handlers.get(policy.getName());
             try {
                 handler.close();
             } catch (Exception e) {
-                LOG.error("Failed to close handler {}",handler,e);
-            }finally {
+                LOG.error("Failed to close handler {}", handler, e);
+            } finally {
                 policies.remove(policy.getName());
                 handlers.remove(policy.getName());
-                LOG.info("Removed policy: {}",policy);
+                LOG.info("Removed policy: {}", policy);
             }
         } else {
-            LOG.error("metadata calculation error, try to remove nonexisting PolicyDefinition: "+policy);
+            LOG.error("metadata calculation error, try to remove nonexisting PolicyDefinition: " + policy);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiDefinitionAdapter.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiDefinitionAdapter.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiDefinitionAdapter.java
index 5b83abb..9b9fcac 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiDefinitionAdapter.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiDefinitionAdapter.java
@@ -16,119 +16,118 @@
  */
 package org.apache.eagle.alert.engine.evaluator.impl;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
 import org.apache.eagle.alert.engine.coordinator.StreamColumn;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
+import com.google.common.base.Preconditions;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wso2.siddhi.query.api.definition.AbstractDefinition;
 import org.wso2.siddhi.query.api.definition.Attribute;
 
-import com.google.common.base.Preconditions;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 public class SiddhiDefinitionAdapter {
-    private final static Logger LOG = LoggerFactory.getLogger(SiddhiDefinitionAdapter.class);
-    public final static String DEFINE_STREAM_TEMPLATE =  "define stream %s ( %s );";
+    private static final Logger LOG = LoggerFactory.getLogger(SiddhiDefinitionAdapter.class);
+    public static final String DEFINE_STREAM_TEMPLATE = "define stream %s ( %s );";
 
-    public static String buildStreamDefinition(StreamDefinition streamDefinition){
+    public static String buildStreamDefinition(StreamDefinition streamDefinition) {
         List<String> columns = new ArrayList<>();
-        Preconditions.checkNotNull(streamDefinition,"StreamDefinition is null");
-        if(streamDefinition.getColumns()!=null) {
+        Preconditions.checkNotNull(streamDefinition, "StreamDefinition is null");
+        if (streamDefinition.getColumns() != null) {
             for (StreamColumn column : streamDefinition.getColumns()) {
                 columns.add(String.format("%s %s", column.getName(), convertToSiddhiAttributeType(column.getType()).toString().toLowerCase()));
             }
-        }else{
-            LOG.warn("No columns found for stream {}"+streamDefinition.getStreamId());
+        } else {
+            LOG.warn("No columns found for stream {}" + streamDefinition.getStreamId());
         }
-        return String.format(DEFINE_STREAM_TEMPLATE, streamDefinition.getStreamId(),StringUtils.join(columns,","));
+        return String.format(DEFINE_STREAM_TEMPLATE, streamDefinition.getStreamId(), StringUtils.join(columns, ","));
     }
 
-    public static Attribute.Type convertToSiddhiAttributeType(StreamColumn.Type type){
-        if(_EAGLE_SIDDHI_TYPE_MAPPING.containsKey(type)){
+    public static Attribute.Type convertToSiddhiAttributeType(StreamColumn.Type type) {
+        if (_EAGLE_SIDDHI_TYPE_MAPPING.containsKey(type)) {
             return _EAGLE_SIDDHI_TYPE_MAPPING.get(type);
         }
 
-        throw new IllegalArgumentException("Unknown stream type: "+type);
+        throw new IllegalArgumentException("Unknown stream type: " + type);
     }
 
-    public static Class<?> convertToJavaAttributeType(StreamColumn.Type type){
-        if(_EAGLE_JAVA_TYPE_MAPPING.containsKey(type)){
+    public static Class<?> convertToJavaAttributeType(StreamColumn.Type type) {
+        if (_EAGLE_JAVA_TYPE_MAPPING.containsKey(type)) {
             return _EAGLE_JAVA_TYPE_MAPPING.get(type);
         }
 
-        throw new IllegalArgumentException("Unknown stream type: "+type);
+        throw new IllegalArgumentException("Unknown stream type: " + type);
     }
 
-    public static StreamColumn.Type convertFromJavaAttributeType(Class<?> type){
-        if(_JAVA_EAGLE_TYPE_MAPPING.containsKey(type)){
+    public static StreamColumn.Type convertFromJavaAttributeType(Class<?> type) {
+        if (_JAVA_EAGLE_TYPE_MAPPING.containsKey(type)) {
             return _JAVA_EAGLE_TYPE_MAPPING.get(type);
         }
 
-        throw new IllegalArgumentException("Unknown stream type: "+type);
+        throw new IllegalArgumentException("Unknown stream type: " + type);
     }
 
-    public static StreamColumn.Type convertFromSiddhiAttributeType(Attribute.Type type){
-        if(_SIDDHI_EAGLE_TYPE_MAPPING.containsKey(type)){
+    public static StreamColumn.Type convertFromSiddhiAttributeType(Attribute.Type type) {
+        if (_SIDDHI_EAGLE_TYPE_MAPPING.containsKey(type)) {
             return _SIDDHI_EAGLE_TYPE_MAPPING.get(type);
         }
 
-        throw new IllegalArgumentException("Unknown siddhi type: "+type);
+        throw new IllegalArgumentException("Unknown siddhi type: " + type);
     }
 
     /**
      * public enum Type {
-     *   STRING, INT, LONG, FLOAT, DOUBLE, BOOL, OBJECT
-     * }
+     * STRING, INT, LONG, FLOAT, DOUBLE, BOOL, OBJECT
+     * }.
      */
-    private final static Map<StreamColumn.Type,Attribute.Type> _EAGLE_SIDDHI_TYPE_MAPPING = new HashMap<>();
-    private final static Map<StreamColumn.Type,Class<?>> _EAGLE_JAVA_TYPE_MAPPING = new HashMap<>();
-    private final static Map<Class<?>,StreamColumn.Type> _JAVA_EAGLE_TYPE_MAPPING = new HashMap<>();
-    private final static Map<Attribute.Type,StreamColumn.Type> _SIDDHI_EAGLE_TYPE_MAPPING = new HashMap<>();
+    private static final Map<StreamColumn.Type, Attribute.Type> _EAGLE_SIDDHI_TYPE_MAPPING = new HashMap<>();
+    private static final Map<StreamColumn.Type, Class<?>> _EAGLE_JAVA_TYPE_MAPPING = new HashMap<>();
+    private static final Map<Class<?>, StreamColumn.Type> _JAVA_EAGLE_TYPE_MAPPING = new HashMap<>();
+    private static final Map<Attribute.Type, StreamColumn.Type> _SIDDHI_EAGLE_TYPE_MAPPING = new HashMap<>();
 
     static {
-        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.STRING,Attribute.Type.STRING);
-        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.INT,Attribute.Type.INT);
-        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.LONG,Attribute.Type.LONG);
-        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.FLOAT,Attribute.Type.FLOAT);
-        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.DOUBLE,Attribute.Type.DOUBLE);
-        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.BOOL,Attribute.Type.BOOL);
-        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.OBJECT,Attribute.Type.OBJECT);
-
-        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.STRING,String.class);
-        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.INT,Integer.class);
-        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.LONG,Long.class);
-        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.FLOAT,Float.class);
-        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.DOUBLE,Double.class);
-        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.BOOL,Boolean.class);
-        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.OBJECT,Object.class);
-
-        _JAVA_EAGLE_TYPE_MAPPING.put(String.class,StreamColumn.Type.STRING);
-        _JAVA_EAGLE_TYPE_MAPPING.put(Integer.class,StreamColumn.Type.INT);
-        _JAVA_EAGLE_TYPE_MAPPING.put(Long.class,StreamColumn.Type.LONG);
-        _JAVA_EAGLE_TYPE_MAPPING.put(Float.class,StreamColumn.Type.FLOAT);
-        _JAVA_EAGLE_TYPE_MAPPING.put(Double.class,StreamColumn.Type.DOUBLE);
-        _JAVA_EAGLE_TYPE_MAPPING.put(Boolean.class,StreamColumn.Type.BOOL);
-        _JAVA_EAGLE_TYPE_MAPPING.put(Object.class,StreamColumn.Type.OBJECT);
-
-        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.STRING,StreamColumn.Type.STRING);
-        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.INT,StreamColumn.Type.INT);
-        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.LONG,StreamColumn.Type.LONG);
-        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.FLOAT,StreamColumn.Type.FLOAT);
-        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.DOUBLE,StreamColumn.Type.DOUBLE);
-        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.BOOL,StreamColumn.Type.BOOL);
-        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.OBJECT,StreamColumn.Type.OBJECT);
+        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.STRING, Attribute.Type.STRING);
+        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.INT, Attribute.Type.INT);
+        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.LONG, Attribute.Type.LONG);
+        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.FLOAT, Attribute.Type.FLOAT);
+        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.DOUBLE, Attribute.Type.DOUBLE);
+        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.BOOL, Attribute.Type.BOOL);
+        _EAGLE_SIDDHI_TYPE_MAPPING.put(StreamColumn.Type.OBJECT, Attribute.Type.OBJECT);
+
+        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.STRING, String.class);
+        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.INT, Integer.class);
+        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.LONG, Long.class);
+        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.FLOAT, Float.class);
+        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.DOUBLE, Double.class);
+        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.BOOL, Boolean.class);
+        _EAGLE_JAVA_TYPE_MAPPING.put(StreamColumn.Type.OBJECT, Object.class);
+
+        _JAVA_EAGLE_TYPE_MAPPING.put(String.class, StreamColumn.Type.STRING);
+        _JAVA_EAGLE_TYPE_MAPPING.put(Integer.class, StreamColumn.Type.INT);
+        _JAVA_EAGLE_TYPE_MAPPING.put(Long.class, StreamColumn.Type.LONG);
+        _JAVA_EAGLE_TYPE_MAPPING.put(Float.class, StreamColumn.Type.FLOAT);
+        _JAVA_EAGLE_TYPE_MAPPING.put(Double.class, StreamColumn.Type.DOUBLE);
+        _JAVA_EAGLE_TYPE_MAPPING.put(Boolean.class, StreamColumn.Type.BOOL);
+        _JAVA_EAGLE_TYPE_MAPPING.put(Object.class, StreamColumn.Type.OBJECT);
+
+        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.STRING, StreamColumn.Type.STRING);
+        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.INT, StreamColumn.Type.INT);
+        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.LONG, StreamColumn.Type.LONG);
+        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.FLOAT, StreamColumn.Type.FLOAT);
+        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.DOUBLE, StreamColumn.Type.DOUBLE);
+        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.BOOL, StreamColumn.Type.BOOL);
+        _SIDDHI_EAGLE_TYPE_MAPPING.put(Attribute.Type.OBJECT, StreamColumn.Type.OBJECT);
     }
 
-    public static StreamDefinition convertFromSiddiDefinition(AbstractDefinition siddhiDefinition){
+    public static StreamDefinition convertFromSiddiDefinition(AbstractDefinition siddhiDefinition) {
         StreamDefinition streamDefinition = new StreamDefinition();
         streamDefinition.setStreamId(siddhiDefinition.getId());
         List<StreamColumn> columns = new ArrayList<>(siddhiDefinition.getAttributeNameArray().length);
-        for(Attribute attribute:siddhiDefinition.getAttributeList()){
+        for (Attribute attribute : siddhiDefinition.getAttributeList()) {
             StreamColumn column = new StreamColumn();
             column.setType(convertFromSiddhiAttributeType(attribute.getType()));
             column.setName(attribute.getName());
@@ -136,7 +135,7 @@ public class SiddhiDefinitionAdapter {
         }
         streamDefinition.setColumns(columns);
         streamDefinition.setTimeseries(true);
-        streamDefinition.setDescription("Auto-generated stream schema from siddhi for "+siddhiDefinition.getId());
+        streamDefinition.setDescription("Auto-generated stream schema from siddhi for " + siddhiDefinition.getId());
         return streamDefinition;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyHandler.java
index 481e3af..e7ed56f 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyHandler.java
@@ -34,7 +34,7 @@ import java.util.List;
 import java.util.Map;
 
 public class SiddhiPolicyHandler implements PolicyStreamHandler {
-    private final static Logger LOG = LoggerFactory.getLogger(SiddhiPolicyHandler.class);
+    private static final Logger LOG = LoggerFactory.getLogger(SiddhiPolicyHandler.class);
     private ExecutionPlanRuntime executionRuntime;
     private SiddhiManager siddhiManager;
     private Map<String, StreamDefinition> sds;
@@ -43,7 +43,7 @@ public class SiddhiPolicyHandler implements PolicyStreamHandler {
 
     private int currentIndex = 0; // the index of current definition statement inside the policy definition
 
-    public SiddhiPolicyHandler(Map<String, StreamDefinition> sds, int index){
+    public SiddhiPolicyHandler(Map<String, StreamDefinition> sds, int index) {
         this.sds = sds;
         this.currentIndex = index;
     }
@@ -59,44 +59,46 @@ public class SiddhiPolicyHandler implements PolicyStreamHandler {
             coreDefinition.setOutputStreams(policyDefinition.getOutputStreams());
         }
 
-        for(String inputStream : coreDefinition.getInputStreams()) {
+        for (String inputStream : coreDefinition.getInputStreams()) {
             builder.append(SiddhiDefinitionAdapter.buildStreamDefinition(sds.get(inputStream)));
             builder.append("\n");
         }
         builder.append(coreDefinition.value);
-        if(LOG.isDebugEnabled()) LOG.debug("Generated siddhi execution plan: {} from definition: {}", builder.toString(), coreDefinition);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Generated siddhi execution plan: {} from definition: {}", builder.toString(), coreDefinition);
+        }
         return builder.toString();
     }
 
     @Override
     public void prepare(final Collector<AlertStreamEvent> collector, PolicyHandlerContext context) throws Exception {
-        LOG.info("Initializing handler for policy {}",context.getPolicyDefinition());
+        LOG.info("Initializing handler for policy {}", context.getPolicyDefinition());
         this.policy = context.getPolicyDefinition();
         this.siddhiManager = new SiddhiManager();
         String plan = generateExecutionPlan(policy, sds);
         try {
             this.executionRuntime = siddhiManager.createExecutionPlanRuntime(plan);
-            LOG.info("Created siddhi runtime {}",executionRuntime.getName());
-        }catch (Exception parserException){
-            LOG.error("Failed to create siddhi runtime for policy: {}, siddhi plan: \n\n{}\n",context.getPolicyDefinition().getName(),plan,parserException);
+            LOG.info("Created siddhi runtime {}", executionRuntime.getName());
+        } catch (Exception parserException) {
+            LOG.error("Failed to create siddhi runtime for policy: {}, siddhi plan: \n\n{}\n", context.getPolicyDefinition().getName(), plan, parserException);
             throw parserException;
         }
 
         // add output stream callback
         List<String> outputStreams = getOutputStreams(policy);
-        for(final String outputStream: outputStreams) {
+        for (final String outputStream : outputStreams) {
             if (executionRuntime.getStreamDefinitionMap().containsKey(outputStream)) {
                 this.executionRuntime.addCallback(outputStream,
-                        new AlertStreamCallback(
-                                outputStream, SiddhiDefinitionAdapter.convertFromSiddiDefinition(executionRuntime.getStreamDefinitionMap().get(outputStream))
-                                , collector, context, currentIndex));
+                    new AlertStreamCallback(
+                        outputStream, SiddhiDefinitionAdapter.convertFromSiddiDefinition(executionRuntime.getStreamDefinitionMap().get(outputStream)),
+                        collector, context, currentIndex));
             } else {
                 throw new IllegalStateException("Undefined output stream " + outputStream);
             }
         }
         this.executionRuntime.start();
         this.context = context;
-        LOG.info("Initialized policy handler for policy: {}",policy.getName());
+        LOG.info("Initialized policy handler for policy: {}", policy.getName());
     }
 
     protected List<String> getOutputStreams(PolicyDefinition policy) {
@@ -104,29 +106,29 @@ public class SiddhiPolicyHandler implements PolicyStreamHandler {
     }
 
     public void send(StreamEvent event) throws Exception {
-        context.getPolicyCounter().scope(String.format("%s.%s",this.context.getPolicyDefinition().getName(),"receive_count")).incr();
+        context.getPolicyCounter().scope(String.format("%s.%s", this.context.getPolicyDefinition().getName(), "receive_count")).incr();
         String streamId = event.getStreamId();
         InputHandler inputHandler = executionRuntime.getInputHandler(streamId);
-        if(inputHandler != null){
-            context.getPolicyCounter().scope(String.format("%s.%s",this.context.getPolicyDefinition().getName(),"eval_count")).incr();
-            inputHandler.send(event.getTimestamp(),event.getData());
-            
+        if (inputHandler != null) {
+            context.getPolicyCounter().scope(String.format("%s.%s", this.context.getPolicyDefinition().getName(), "eval_count")).incr();
+            inputHandler.send(event.getTimestamp(), event.getData());
+
             if (LOG.isDebugEnabled()) {
                 LOG.debug("sent event to siddhi stream {} ", streamId);
             }
-        }else{
-            context.getPolicyCounter().scope(String.format("%s.%s",this.context.getPolicyDefinition().getName(),"drop_count")).incr();
-            LOG.warn("No input handler found for stream {}",streamId);
+        } else {
+            context.getPolicyCounter().scope(String.format("%s.%s", this.context.getPolicyDefinition().getName(), "drop_count")).incr();
+            LOG.warn("No input handler found for stream {}", streamId);
         }
     }
 
     public void close() throws Exception {
-        LOG.info("Closing handler for policy {}",this.policy.getName());
+        LOG.info("Closing handler for policy {}", this.policy.getName());
         this.executionRuntime.shutdown();
-        LOG.info("Shutdown siddhi runtime {}",this.executionRuntime.getName());
+        LOG.info("Shutdown siddhi runtime {}", this.executionRuntime.getName());
         this.siddhiManager.shutdown();
-        LOG.info("Shutdown siddhi manager {}",this.siddhiManager);
-        LOG.info("Closed handler for policy {}",this.policy.getName());
+        LOG.info("Shutdown siddhi manager {}", this.siddhiManager);
+        LOG.info("Closed handler for policy {}", this.policy.getName());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyStateHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyStateHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyStateHandler.java
index 43b8f30..11f484d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyStateHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/SiddhiPolicyStateHandler.java
@@ -30,7 +30,7 @@ import java.util.Map;
  */
 public class SiddhiPolicyStateHandler extends SiddhiPolicyHandler {
 
-    private final static Logger LOG = LoggerFactory.getLogger(SiddhiPolicyStateHandler.class);
+    private static final Logger LOG = LoggerFactory.getLogger(SiddhiPolicyStateHandler.class);
 
     public SiddhiPolicyStateHandler(Map<String, StreamDefinition> sds, int index) {
         super(sds, index);
@@ -40,12 +40,14 @@ public class SiddhiPolicyStateHandler extends SiddhiPolicyHandler {
     protected String generateExecutionPlan(PolicyDefinition policyDefinition, Map<String, StreamDefinition> sds) throws StreamDefinitionNotFoundException {
         StringBuilder builder = new StringBuilder();
         PolicyDefinition.Definition stateDefiniton = policyDefinition.getStateDefinition();
-        for(String inputStream : stateDefiniton.getInputStreams()) { // the state stream follow the output stream of the policy definition
+        for (String inputStream : stateDefiniton.getInputStreams()) { // the state stream follow the output stream of the policy definition
             builder.append(SiddhiDefinitionAdapter.buildStreamDefinition(sds.get(inputStream)));
             builder.append("\n");
         }
         builder.append(stateDefiniton.value);
-        if(LOG.isDebugEnabled()) LOG.debug("Generated siddhi state execution plan: {} from definiton: {}", builder.toString(), stateDefiniton);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Generated siddhi state execution plan: {} from definiton: {}", builder.toString(), stateDefiniton);
+        }
         return builder.toString();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeBatchWindow.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeBatchWindow.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeBatchWindow.java
index 357504e..ef806fb 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeBatchWindow.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeBatchWindow.java
@@ -16,6 +16,10 @@
  */
 package org.apache.eagle.alert.engine.evaluator.nodata;
 
+import org.apache.eagle.alert.engine.model.StreamEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -24,105 +28,101 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.eagle.alert.engine.model.StreamEvent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 public class DistinctValuesInTimeBatchWindow {
 
-	private static final Logger LOG = LoggerFactory.getLogger(DistinctValuesInTimeBatchWindow.class);
-	
-	private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
-	
-	// wisb (what is should be) set for expected full set value of multiple columns
-	@SuppressWarnings("rawtypes")
-	private volatile Set wisb = new HashSet();
-	
-	private NoDataPolicyTimeBatchHandler handler;
-	
-	/**
-	 * map from value to max timestamp for this value
-	 */
-	private Map<Object, Long> valueMaxTimeMap = new HashMap<>();
-	
-	private long startTime = -1;
-	private long nextEmitTime = -1;
-	private long timeInMilliSeconds;
-
-	public DistinctValuesInTimeBatchWindow(NoDataPolicyTimeBatchHandler handler, 
-			long timeInMilliSeconds, @SuppressWarnings("rawtypes") Set wisb) {
-		this.handler = handler;
-		this.timeInMilliSeconds = timeInMilliSeconds;
-		if (wisb != null) {
-			this.wisb = wisb;
-		}
-	}
-
-	public Map<Object, Long> distinctValues() {
-		return valueMaxTimeMap;
-	}
-	
-	public void send(StreamEvent event, Object value, long timestamp) {
-		synchronized(this) {
-			if (startTime < 0) {
-				startTime = System.currentTimeMillis();
-				
-				scheduler.scheduleAtFixedRate(new Runnable() {
-
-					@SuppressWarnings({ "unchecked", "rawtypes" })
-					@Override
-					public void run() {
-						try {
-							LOG.info("{}/{}: {}", startTime, nextEmitTime, valueMaxTimeMap.keySet());
-							synchronized (valueMaxTimeMap) {
-								boolean sendAlerts = false;
-								
-								if (nextEmitTime < 0) {
-									nextEmitTime = startTime + timeInMilliSeconds;
-								}
-								
-								if (System.currentTimeMillis() > nextEmitTime) {
-									startTime = nextEmitTime;
-									nextEmitTime += timeInMilliSeconds;
-									sendAlerts = true;
-								} else {
-									sendAlerts = false;
-								}
-								
-								if (sendAlerts) {
-									// alert
-									handler.compareAndEmit(wisb, distinctValues().keySet(), event);
-									LOG.info("alert for wiri: {} compares to wisb: {}", distinctValues().keySet(), wisb);
-									
-									if (distinctValues().keySet().size() > 0) {
-										wisb = new HashSet(distinctValues().keySet());
-									}
-									valueMaxTimeMap.clear();
-									LOG.info("Clear wiri & update wisb to {}", wisb);
-								}
-							}
-						} catch (Throwable t) {
-							LOG.error("failed to run batch window for gap alert", t);
-						}
-					}
-					
-				}, 0, timeInMilliSeconds / 2, TimeUnit.MILLISECONDS);
-			}
-		}
-		
-		if (valueMaxTimeMap.containsKey(value)) {
-			// remove that entry with old timestamp in timeSortedMap
-			long oldTime = valueMaxTimeMap.get(value);
-			if (oldTime >= timestamp) {
-				// no any effect as the new timestamp is equal or even less than
-				// old timestamp
-				return;
-			}
-		}
-		// update new timestamp in valueMaxTimeMap
-		valueMaxTimeMap.put(value, timestamp);
-		
-		LOG.info("sent: {} with start: {}/next: {}", valueMaxTimeMap.keySet(), startTime, nextEmitTime);
-	}
+    private static final Logger LOG = LoggerFactory.getLogger(DistinctValuesInTimeBatchWindow.class);
+
+    private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+
+    // wisb (what is should be) set for expected full set value of multiple columns
+    @SuppressWarnings("rawtypes")
+    private volatile Set wisb = new HashSet();
+
+    private NoDataPolicyTimeBatchHandler handler;
+
+    /**
+     * map from value to max timestamp for this value.
+     */
+    private Map<Object, Long> valueMaxTimeMap = new HashMap<>();
+
+    private long startTime = -1;
+    private long nextEmitTime = -1;
+    private long timeInMilliSeconds;
+
+    public DistinctValuesInTimeBatchWindow(NoDataPolicyTimeBatchHandler handler,
+                                           long timeInMilliSeconds, @SuppressWarnings("rawtypes") Set wisb) {
+        this.handler = handler;
+        this.timeInMilliSeconds = timeInMilliSeconds;
+        if (wisb != null) {
+            this.wisb = wisb;
+        }
+    }
+
+    public Map<Object, Long> distinctValues() {
+        return valueMaxTimeMap;
+    }
+
+    public void send(StreamEvent event, Object value, long timestamp) {
+        synchronized (this) {
+            if (startTime < 0) {
+                startTime = System.currentTimeMillis();
+
+                scheduler.scheduleAtFixedRate(new Runnable() {
+
+                    @SuppressWarnings( {"unchecked", "rawtypes"})
+                    @Override
+                    public void run() {
+                        try {
+                            LOG.info("{}/{}: {}", startTime, nextEmitTime, valueMaxTimeMap.keySet());
+                            synchronized (valueMaxTimeMap) {
+                                boolean sendAlerts = false;
+
+                                if (nextEmitTime < 0) {
+                                    nextEmitTime = startTime + timeInMilliSeconds;
+                                }
+
+                                if (System.currentTimeMillis() > nextEmitTime) {
+                                    startTime = nextEmitTime;
+                                    nextEmitTime += timeInMilliSeconds;
+                                    sendAlerts = true;
+                                } else {
+                                    sendAlerts = false;
+                                }
+
+                                if (sendAlerts) {
+                                    // alert
+                                    handler.compareAndEmit(wisb, distinctValues().keySet(), event);
+                                    LOG.info("alert for wiri: {} compares to wisb: {}", distinctValues().keySet(), wisb);
+
+                                    if (distinctValues().keySet().size() > 0) {
+                                        wisb = new HashSet(distinctValues().keySet());
+                                    }
+                                    valueMaxTimeMap.clear();
+                                    LOG.info("Clear wiri & update wisb to {}", wisb);
+                                }
+                            }
+                        } catch (Throwable t) {
+                            LOG.error("failed to run batch window for gap alert", t);
+                        }
+                    }
+
+                }, 0, timeInMilliSeconds / 2, TimeUnit.MILLISECONDS);
+            }
+        }
+
+        if (valueMaxTimeMap.containsKey(value)) {
+            // remove that entry with old timestamp in timeSortedMap
+            long oldTime = valueMaxTimeMap.get(value);
+            if (oldTime >= timestamp) {
+                // no any effect as the new timestamp is equal or even less than
+                // old timestamp
+                return;
+            }
+        }
+        // update new timestamp in valueMaxTimeMap
+        valueMaxTimeMap.put(value, timestamp);
+
+        LOG.info("sent: {} with start: {}/next: {}", valueMaxTimeMap.keySet(), startTime, nextEmitTime);
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeWindow.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeWindow.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeWindow.java
index 676357a..4aae040 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeWindow.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/DistinctValuesInTimeWindow.java
@@ -16,70 +16,69 @@
  */
 package org.apache.eagle.alert.engine.evaluator.nodata;
 
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
+import java.util.*;
+
 /**
  * Since 6/28/16.
  * to get distinct values within a specified time window
  * valueMaxTimeMap : each distinct value is associated with max timestamp it ever had
  * timeSortedMap : map sorted by timestamp first and then value
- * With the above 2 data structure, we can get distinct values in LOG(N)
+ * With the above 2 data structure, we can get distinct values in LOG(N).
  */
 public class DistinctValuesInTimeWindow {
-    public static class ValueAndTime{
+    public static class ValueAndTime {
         Object value;
         long timestamp;
-        public ValueAndTime(Object value, long timestamp){
+
+        public ValueAndTime(Object value, long timestamp) {
             this.value = value;
             this.timestamp = timestamp;
         }
 
-        public String toString(){
+        public String toString() {
             return "[" + value + "," + timestamp + "]";
         }
 
-        public int hashCode(){
+        public int hashCode() {
             return new HashCodeBuilder().append(value).append(timestamp).toHashCode();
         }
 
-        public boolean equals(Object that){
-            if(!(that instanceof ValueAndTime))
+        public boolean equals(Object that) {
+            if (!(that instanceof ValueAndTime)) {
                 return false;
-            ValueAndTime another = (ValueAndTime)that;
+            }
+            ValueAndTime another = (ValueAndTime) that;
             return another.timestamp == this.timestamp && another.value.equals(this.value);
         }
     }
 
-    public static class ValueAndTimeComparator implements Comparator<ValueAndTime>{
+    public static class ValueAndTimeComparator implements Comparator<ValueAndTime> {
         @Override
         public int compare(ValueAndTime o1, ValueAndTime o2) {
-            if(o1.timestamp != o2.timestamp)
+            if (o1.timestamp != o2.timestamp) {
                 return (o1.timestamp > o2.timestamp) ? 1 : -1;
-            if(o1.value.equals(o2.value))
+            }
+            if (o1.value.equals(o2.value)) {
                 return 0;
-            else {
+            } else {
                 // this is not strictly correct, but I don't want to write too many comparators here :-)
-                if(o1.hashCode() > o2.hashCode())
+                if (o1.hashCode() > o2.hashCode()) {
                     return 1;
-                else
+                } else {
                     return -1;
+                }
             }
         }
     }
 
     /**
-     * map from value to max timestamp for this value
+     * map from value to max timestamp for this value.
      */
     private Map<Object, Long> valueMaxTimeMap = new HashMap<>();
     /**
-     * map sorted by time(max timestamp for the value) and then value
+     * map sorted by time(max timestamp for the value) and then value.
      */
     private SortedMap<ValueAndTime, ValueAndTime> timeSortedMap = new TreeMap<>(new ValueAndTimeComparator());
     private long maxTimestamp = 0L;
@@ -87,20 +86,20 @@ public class DistinctValuesInTimeWindow {
     private boolean windowSlided;
 
     /**
-     * @param window - milliseconds
+     * @param window - milliseconds.
      */
-    public DistinctValuesInTimeWindow(long window){
+    public DistinctValuesInTimeWindow(long window) {
         this.window = window;
     }
 
-    public void send(Object value, long timestamp){
+    public void send(Object value, long timestamp) {
         ValueAndTime vt = new ValueAndTime(value, timestamp);
 
         // todo think of time out of order
-        if(valueMaxTimeMap.containsKey(value)){
+        if (valueMaxTimeMap.containsKey(value)) {
             // remove that entry with old timestamp in timeSortedMap
             long oldTime = valueMaxTimeMap.get(value);
-            if(oldTime >= timestamp){
+            if (oldTime >= timestamp) {
                 // no any effect as the new timestamp is equal or even less than old timestamp
                 return;
             }
@@ -117,25 +116,25 @@ public class DistinctValuesInTimeWindow {
 
         // check if some values should be evicted because of time window
         Iterator<Map.Entry<ValueAndTime, ValueAndTime>> it = timeSortedMap.entrySet().iterator();
-        while(it.hasNext()){
+        while (it.hasNext()) {
             Map.Entry<ValueAndTime, ValueAndTime> entry = it.next();
-            if(entry.getKey().timestamp < maxTimestamp - window){
+            if (entry.getKey().timestamp < maxTimestamp - window) {
                 // should remove the entry in valueMaxTimeMap and timeSortedMap
                 valueMaxTimeMap.remove(entry.getKey().value);
                 windowSlided = true;
 
                 it.remove();
-            }else {
+            } else {
                 break;
             }
         }
     }
 
-    public Map<Object, Long> distinctValues(){
+    public Map<Object, Long> distinctValues() {
         return valueMaxTimeMap;
     }
 
-    public boolean windowSlided(){
+    public boolean windowSlided() {
         return windowSlided;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyHandler.java
index 8f37b93..ec6e6e9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyHandler.java
@@ -16,7 +16,6 @@
  */
 package org.apache.eagle.alert.engine.evaluator.nodata;
 
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.eagle.alert.engine.Collector;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
@@ -25,6 +24,7 @@ import org.apache.eagle.alert.engine.evaluator.PolicyStreamHandler;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
 import org.apache.eagle.alert.utils.TimePeriodUtils;
+import org.apache.commons.collections.CollectionUtils;
 import org.joda.time.Period;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -39,56 +39,54 @@ import java.util.*;
  * 2. timestamp field: timestamp column
  * 3. wiri safe time window: how long window is good for full set of wiri
  * 4. wisb: full set
- *
  * No data policy definition should include
  * fixed fields and dynamic fields
  * fixed fields are leading fields : windowPeriod, type, numOfFields, f1_name, f2_name
  * dynamic fields depend on wisb type.
- *
  * policy would be like:
  * {
- "name": "noDataAlertPolicy",
- "description": "noDataAlertPolicy",
- "inputStreams": [
- "noDataAlertStream"
- ],
- "outputStreams": [
- "noDataAlertStream_out"
- ],
- "definition": {
- "type": "nodataalert",
- "value": "PT1M,plain,1,host,host1,host2"   // or "value": "PT1M,dynamic,1,host"
- },
- "partitionSpec": [
- {
- "streamId": "noDataAlertStream",
- "type": "GROUPBY"
- }
- ],
- "parallelismHint": 2
- }
-     "name": "noDataAlertPolicy",
-     "description": "noDataAlertPolicy",
-     "inputStreams": [
-        "noDataAlertStream"
-     ],
-     "outputStreams": [
-        "noDataAlertStream_out"
-     ],
-     "definition": {
-        "type": "nodataalert",
-        "value": "PT1M,plain,1,host,host1,host2"   // or "value": "PT1M,dynamic,1,host"
-     },
-     "partitionSpec": [
-     {
-        "streamId": "noDataAlertStream",
-        "type": "GROUPBY"
-     }
-     ],
-     "parallelismHint": 2
-   }
+ * "name": "noDataAlertPolicy",
+ * "description": "noDataAlertPolicy",
+ * "inputStreams": [
+ * "noDataAlertStream"
+ * ],
+ * "outputStreams": [
+ * "noDataAlertStream_out"
+ * ],
+ * "definition": {
+ * "type": "nodataalert",
+ * "value": "PT1M,plain,1,host,host1,host2"   // or "value": "PT1M,dynamic,1,host"
+ * },
+ * "partitionSpec": [
+ * {
+ * "streamId": "noDataAlertStream",
+ * "type": "GROUPBY"
+ * }
+ * ],
+ * "parallelismHint": 2
+ * }
+ * "name": "noDataAlertPolicy",
+ * "description": "noDataAlertPolicy",
+ * "inputStreams": [
+ * "noDataAlertStream"
+ * ],
+ * "outputStreams": [
+ * "noDataAlertStream_out"
+ * ],
+ * "definition": {
+ * "type": "nodataalert",
+ * "value": "PT1M,plain,1,host,host1,host2"   // or "value": "PT1M,dynamic,1,host"
+ * },
+ * "partitionSpec": [
+ * {
+ * "streamId": "noDataAlertStream",
+ * "type": "GROUPBY"
+ * }
+ * ],
+ * "parallelismHint": 2
+ * }
  */
-public class NoDataPolicyHandler implements PolicyStreamHandler{
+public class NoDataPolicyHandler implements PolicyStreamHandler {
     private static final Logger LOG = LoggerFactory.getLogger(NoDataPolicyHandler.class);
     private Map<String, StreamDefinition> sds;
 
@@ -103,9 +101,10 @@ public class NoDataPolicyHandler implements PolicyStreamHandler{
     private volatile NoDataWisbType wisbType;
     private volatile DistinctValuesInTimeWindow distinctWindow;
 
-    public NoDataPolicyHandler(Map<String, StreamDefinition> sds){
+    public NoDataPolicyHandler(Map<String, StreamDefinition> sds) {
         this.sds = sds;
     }
+
     @Override
     public void prepare(Collector<AlertStreamEvent> collector, PolicyHandlerContext context) throws Exception {
         this.collector = collector;
@@ -113,11 +112,13 @@ public class NoDataPolicyHandler implements PolicyStreamHandler{
         this.policyDef = context.getPolicyDefinition();
         List<String> inputStreams = policyDef.getInputStreams();
         // validate inputStreams has to contain only one stream
-        if(inputStreams.size() != 1)
+        if (inputStreams.size() != 1) {
             throw new IllegalArgumentException("policy inputStream size has to be 1 for no data alert");
+        }
         // validate outputStream has to contain only one stream
-        if(policyDef.getOutputStreams().size() != 1)
+        if (policyDef.getOutputStreams().size() != 1) {
             throw new IllegalArgumentException("policy outputStream size has to be 1 for no data alert");
+        }
 
         String is = inputStreams.get(0);
         StreamDefinition sd = sds.get(is);
@@ -129,23 +130,23 @@ public class NoDataPolicyHandler implements PolicyStreamHandler{
         distinctWindow = new DistinctValuesInTimeWindow(windowPeriod);
         this.wisbType = NoDataWisbType.valueOf(segments[1]);
         // for provided wisb values, need to parse, for dynamic wisb values, it is computed through a window
-        if(wisbType == NoDataWisbType.provided) {
+        if (wisbType == NoDataWisbType.provided) {
             wisbValues = new NoDataWisbProvidedParser().parse(segments);
         }
         // populate wisb field names
         int numOfFields = Integer.parseInt(segments[2]);
-        for(int i = 3; i < 3+numOfFields; i++){
+        for (int i = 3; i < 3 + numOfFields; i++) {
             String fn = segments[i];
             wisbFieldIndices.add(sd.getColumnIndex(fn));
         }
     }
 
-    @SuppressWarnings({ "rawtypes", "unchecked" })
+    @SuppressWarnings( {"rawtypes", "unchecked"})
     @Override
     public void send(StreamEvent event) throws Exception {
         Object[] data = event.getData();
         List<Object> columnValues = new ArrayList<>();
-        for(int i=0; i<wisbFieldIndices.size(); i++){
+        for (int i = 0; i < wisbFieldIndices.size(); i++) {
             Object o = data[wisbFieldIndices.get(i)];
             // convert value to string
             columnValues.add(o.toString());
@@ -155,18 +156,18 @@ public class NoDataPolicyHandler implements PolicyStreamHandler{
 
         LOG.debug("window slided: {}, with wiri: {}", distinctWindow.windowSlided(), distinctWindow.distinctValues());
 
-        if(distinctWindow.windowSlided()) {
+        if (distinctWindow.windowSlided()) {
             compareAndEmit(wisbValues, wiriValues, event);
         }
 
-        if(wisbType == NoDataWisbType.dynamic) {
+        if (wisbType == NoDataWisbType.dynamic) {
             // deep copy
             wisbValues = new HashSet<>(wiriValues);
         }
     }
 
     @SuppressWarnings("rawtypes")
-    private void compareAndEmit(Set wisb, Set wiri, StreamEvent event){
+    private void compareAndEmit(Set wisb, Set wiri, StreamEvent event) {
         // compare with wisbValues if wisbValues are already there for dynamic type
         Collection noDataValues = CollectionUtils.subtract(wisb, wiri);
         LOG.debug("nodatavalues:" + noDataValues + ", wisb: " + wisb + ", wiri: " + wiri);
@@ -177,9 +178,9 @@ public class NoDataPolicyHandler implements PolicyStreamHandler{
         }
     }
 
-    private AlertStreamEvent createAlertEvent(long timestamp, Object[] triggerEvent){
+    private AlertStreamEvent createAlertEvent(long timestamp, Object[] triggerEvent) {
         String is = policyDef.getInputStreams().get(0);
-        StreamDefinition sd = sds.get(is);
+        final StreamDefinition sd = sds.get(is);
 
         AlertStreamEvent event = new AlertStreamEvent();
         event.setTimestamp(timestamp);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyTimeBatchHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyTimeBatchHandler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyTimeBatchHandler.java
index 53a7af0..73ee9b2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyTimeBatchHandler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataPolicyTimeBatchHandler.java
@@ -16,7 +16,6 @@
  */
 package org.apache.eagle.alert.engine.evaluator.nodata;
 
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.eagle.alert.engine.Collector;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
@@ -25,6 +24,7 @@ import org.apache.eagle.alert.engine.evaluator.PolicyStreamHandler;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
 import org.apache.eagle.alert.utils.TimePeriodUtils;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.storm.guava.base.Joiner;
 import org.joda.time.Period;
 import org.slf4j.Logger;
@@ -33,132 +33,134 @@ import org.slf4j.LoggerFactory;
 import java.util.*;
 
 public class NoDataPolicyTimeBatchHandler implements PolicyStreamHandler {
-	
-	private static final Logger LOG = LoggerFactory.getLogger(NoDataPolicyTimeBatchHandler.class);
-	private Map<String, StreamDefinition> sds;
-	
-	private volatile List<Integer> wisbFieldIndices = new ArrayList<>();
-	// reuse PolicyDefinition.defintion.value field to store full set of values
-	// separated by comma
-	private volatile PolicyDefinition policyDef;
-	private volatile Collector<AlertStreamEvent> collector;
-	private volatile PolicyHandlerContext context;
-	private volatile NoDataWisbType wisbType;
-	private volatile DistinctValuesInTimeBatchWindow distinctWindow;
-
-	public NoDataPolicyTimeBatchHandler(Map<String, StreamDefinition> sds){
+
+    private static final Logger LOG = LoggerFactory.getLogger(NoDataPolicyTimeBatchHandler.class);
+    private Map<String, StreamDefinition> sds;
+
+    private volatile List<Integer> wisbFieldIndices = new ArrayList<>();
+    // reuse PolicyDefinition.defintion.value field to store full set of values
+    // separated by comma
+    private volatile PolicyDefinition policyDef;
+    private volatile Collector<AlertStreamEvent> collector;
+    private volatile PolicyHandlerContext context;
+    private volatile NoDataWisbType wisbType;
+    private volatile DistinctValuesInTimeBatchWindow distinctWindow;
+
+    public NoDataPolicyTimeBatchHandler(Map<String, StreamDefinition> sds) {
         this.sds = sds;
     }
 
-	@Override
-	public void prepare(Collector<AlertStreamEvent> collector, PolicyHandlerContext context) throws Exception {
-		this.collector = collector;
-		this.context = context;
-		this.policyDef = context.getPolicyDefinition();
-		List<String> inputStreams = policyDef.getInputStreams();
-		// validate inputStreams has to contain only one stream
-		if (inputStreams.size() != 1)
-			throw new IllegalArgumentException("policy inputStream size has to be 1 for no data alert");
-		// validate outputStream has to contain only one stream
-		if (policyDef.getOutputStreams().size() != 1)
-			throw new IllegalArgumentException("policy outputStream size has to be 1 for no data alert");
-
-		String is = inputStreams.get(0);
-		StreamDefinition sd = sds.get(is);
-
-		String policyValue = policyDef.getDefinition().getValue();
-		// assume that no data alert policy value consists of "windowPeriod,
-		// type, numOfFields, f1_name, f2_name, f1_value, f2_value, f1_value,
-		// f2_value}
-		String[] segments = policyValue.split(",");
-		this.wisbType = NoDataWisbType.valueOf(segments[1]);
-		// for provided wisb values, need to parse, for dynamic wisb values, it
-		// is computed through a window
-		@SuppressWarnings("rawtypes")
-		Set wisbValues = null;
-		if (wisbType == NoDataWisbType.provided) {
-			wisbValues = new NoDataWisbProvidedParser().parse(segments);
-		}
-		long windowPeriod = TimePeriodUtils.getMillisecondsOfPeriod(Period.parse(segments[0]));
-		distinctWindow = new DistinctValuesInTimeBatchWindow(this, windowPeriod, wisbValues);
-		// populate wisb field names
-		int numOfFields = Integer.parseInt(segments[2]);
-		for (int i = 3; i < 3 + numOfFields; i++) {
-			String fn = segments[i];
-			wisbFieldIndices.add(sd.getColumnIndex(fn));
-		}
-	}
-
-	@Override
-	public void send(StreamEvent event) throws Exception {
-		Object[] data = event.getData();
-		
-		List<Object> columnValues = new ArrayList<>();
-		for (int i = 0; i < wisbFieldIndices.size(); i++) {
-			Object o = data[wisbFieldIndices.get(i)];
-			// convert value to string
-			columnValues.add(o.toString());
-		}
-		// use local timestamp rather than event timestamp
-		distinctWindow.send(event, columnValues, System.currentTimeMillis());
-		LOG.debug("event sent to window with wiri: {}", distinctWindow.distinctValues());
-	}
-	
-	@SuppressWarnings("rawtypes")
-	public void compareAndEmit(Set wisb, Set wiri, StreamEvent event) {
-		// compare with wisbValues if wisbValues are already there for dynamic
-		// type
-		Collection noDataValues = CollectionUtils.subtract(wisb, wiri);
-		LOG.debug("nodatavalues:" + noDataValues + ", wisb: " + wisb + ", wiri: " + wiri);
-		if (noDataValues != null && noDataValues.size() > 0) {
-			LOG.info("No data alert is triggered with no data values {} and wisb {}", noDataValues, wisb);
-			
-			String is = policyDef.getOutputStreams().get(0);
-			StreamDefinition sd = sds.get(is);
-			int timestampIndex = sd.getColumnIndex("timestamp");
-			int hostIndex = sd.getColumnIndex("host");
-			int originalStreamNameIndex = sd.getColumnIndex("originalStreamName");
-			
-			for (Object one : noDataValues) {
-				Object[] triggerEvent = new Object[sd.getColumns().size()];
-				for (int i = 0; i < sd.getColumns().size(); i ++) {
-					if (i == timestampIndex) {
-						triggerEvent[i] = System.currentTimeMillis();
-					} else if (i == hostIndex) {
-						triggerEvent[hostIndex] = ((List) one).get(0);
-					} else if (i == originalStreamNameIndex) {
-						triggerEvent[originalStreamNameIndex] = event.getStreamId();
-					} else if (sd.getColumns().size() < i) {
-						LOG.error("strema event data have different lenght compare to column definition!");
-					} else {
-						triggerEvent[i] = sd.getColumns().get(i).getDefaultValue();
-					}
-				}
-				AlertStreamEvent alertEvent = createAlertEvent(sd, event.getTimestamp(), triggerEvent);
-				LOG.info(String.format("Nodata alert %s generated and will be emitted", Joiner.on(",").join(triggerEvent)));
-				collector.emit(alertEvent);
-			}
-			
-		}
-	}
-
-	private AlertStreamEvent createAlertEvent(StreamDefinition sd, long timestamp, Object[] triggerEvent) {
-		AlertStreamEvent event = new AlertStreamEvent();
-		event.setTimestamp(timestamp);
-		event.setData(triggerEvent);
-		event.setStreamId(policyDef.getOutputStreams().get(0));
-		event.setPolicyId(context.getPolicyDefinition().getName());
-		if (this.context.getPolicyEvaluator() != null) {
-			event.setCreatedBy(context.getPolicyEvaluator().getName());
-		}
-		event.setCreatedTime(System.currentTimeMillis());
-		event.setSchema(sd);
-		return event;
-	}
-
-	@Override
-	public void close() throws Exception {
-
-	}
+    @Override
+    public void prepare(Collector<AlertStreamEvent> collector, PolicyHandlerContext context) throws Exception {
+        this.collector = collector;
+        this.context = context;
+        this.policyDef = context.getPolicyDefinition();
+        List<String> inputStreams = policyDef.getInputStreams();
+        // validate inputStreams has to contain only one stream
+        if (inputStreams.size() != 1) {
+            throw new IllegalArgumentException("policy inputStream size has to be 1 for no data alert");
+        }
+        // validate outputStream has to contain only one stream
+        if (policyDef.getOutputStreams().size() != 1) {
+            throw new IllegalArgumentException("policy outputStream size has to be 1 for no data alert");
+        }
+
+        String is = inputStreams.get(0);
+        StreamDefinition sd = sds.get(is);
+
+        String policyValue = policyDef.getDefinition().getValue();
+        // assume that no data alert policy value consists of "windowPeriod,
+        // type, numOfFields, f1_name, f2_name, f1_value, f2_value, f1_value,
+        // f2_value}
+        String[] segments = policyValue.split(",");
+        this.wisbType = NoDataWisbType.valueOf(segments[1]);
+        // for provided wisb values, need to parse, for dynamic wisb values, it
+        // is computed through a window
+        @SuppressWarnings("rawtypes")
+        Set wisbValues = null;
+        if (wisbType == NoDataWisbType.provided) {
+            wisbValues = new NoDataWisbProvidedParser().parse(segments);
+        }
+        long windowPeriod = TimePeriodUtils.getMillisecondsOfPeriod(Period.parse(segments[0]));
+        distinctWindow = new DistinctValuesInTimeBatchWindow(this, windowPeriod, wisbValues);
+        // populate wisb field names
+        int numOfFields = Integer.parseInt(segments[2]);
+        for (int i = 3; i < 3 + numOfFields; i++) {
+            String fn = segments[i];
+            wisbFieldIndices.add(sd.getColumnIndex(fn));
+        }
+    }
+
+    @Override
+    public void send(StreamEvent event) throws Exception {
+        Object[] data = event.getData();
+
+        List<Object> columnValues = new ArrayList<>();
+        for (int i = 0; i < wisbFieldIndices.size(); i++) {
+            Object o = data[wisbFieldIndices.get(i)];
+            // convert value to string
+            columnValues.add(o.toString());
+        }
+        // use local timestamp rather than event timestamp
+        distinctWindow.send(event, columnValues, System.currentTimeMillis());
+        LOG.debug("event sent to window with wiri: {}", distinctWindow.distinctValues());
+    }
+
+    @SuppressWarnings("rawtypes")
+    public void compareAndEmit(Set wisb, Set wiri, StreamEvent event) {
+        // compare with wisbValues if wisbValues are already there for dynamic
+        // type
+        Collection noDataValues = CollectionUtils.subtract(wisb, wiri);
+        LOG.debug("nodatavalues:" + noDataValues + ", wisb: " + wisb + ", wiri: " + wiri);
+        if (noDataValues != null && noDataValues.size() > 0) {
+            LOG.info("No data alert is triggered with no data values {} and wisb {}", noDataValues, wisb);
+
+            String is = policyDef.getOutputStreams().get(0);
+            StreamDefinition sd = sds.get(is);
+            int timestampIndex = sd.getColumnIndex("timestamp");
+            int hostIndex = sd.getColumnIndex("host");
+            int originalStreamNameIndex = sd.getColumnIndex("originalStreamName");
+
+            for (Object one : noDataValues) {
+                Object[] triggerEvent = new Object[sd.getColumns().size()];
+                for (int i = 0; i < sd.getColumns().size(); i++) {
+                    if (i == timestampIndex) {
+                        triggerEvent[i] = System.currentTimeMillis();
+                    } else if (i == hostIndex) {
+                        triggerEvent[hostIndex] = ((List) one).get(0);
+                    } else if (i == originalStreamNameIndex) {
+                        triggerEvent[originalStreamNameIndex] = event.getStreamId();
+                    } else if (sd.getColumns().size() < i) {
+                        LOG.error("strema event data have different lenght compare to column definition!");
+                    } else {
+                        triggerEvent[i] = sd.getColumns().get(i).getDefaultValue();
+                    }
+                }
+                AlertStreamEvent alertEvent = createAlertEvent(sd, event.getTimestamp(), triggerEvent);
+                LOG.info(String.format("Nodata alert %s generated and will be emitted", Joiner.on(",").join(triggerEvent)));
+                collector.emit(alertEvent);
+            }
+
+        }
+    }
+
+    private AlertStreamEvent createAlertEvent(StreamDefinition sd, long timestamp, Object[] triggerEvent) {
+        AlertStreamEvent event = new AlertStreamEvent();
+        event.setTimestamp(timestamp);
+        event.setData(triggerEvent);
+        event.setStreamId(policyDef.getOutputStreams().get(0));
+        event.setPolicyId(context.getPolicyDefinition().getName());
+        if (this.context.getPolicyEvaluator() != null) {
+            event.setCreatedBy(context.getPolicyEvaluator().getName());
+        }
+        event.setCreatedTime(System.currentTimeMillis());
+        event.setSchema(sd);
+        return event;
+    }
+
+    @Override
+    public void close() throws Exception {
+
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbParser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbParser.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbParser.java
index fe06067..fa27108 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbParser.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbParser.java
@@ -25,7 +25,8 @@ import java.util.Set;
 public interface NoDataWisbParser {
     /**
      * parse policy definition and return WISB values for one or multiple fields
-     * for example host and data center are 2 fields for no data alert, then WISB is a list of two values
+     * for example host and data center are 2 fields for no data alert, then WISB is a list of two values.
+     *
      * @param args some information parsed from policy defintion
      * @return list of list of field values
      */

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbProvidedParser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbProvidedParser.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbProvidedParser.java
index e13826a..4f54358 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbProvidedParser.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/nodata/NoDataWisbProvidedParser.java
@@ -24,19 +24,19 @@ import java.util.Set;
 /**
  * Since 6/29/16.
  */
-public class NoDataWisbProvidedParser implements NoDataWisbParser{
-    @Override
+public class NoDataWisbProvidedParser implements NoDataWisbParser {
     /**
-     * policy value consists of "windowPeriod, type, numOfFields, f1_name, f2_name, f1_value, f2_value, f1_value, f2_value"
+     * policy value consists of "windowPeriod, type, numOfFields, f1_name, f2_name, f1_value, f2_value, f1_value, f2_value".
      */
+    @Override
     public Set<List<String>> parse(String[] args) {
         int numOfFields = Integer.parseInt(args[2]);
         Set<List<String>> wisbValues = new HashSet<>();
         int i = 3 + numOfFields;
-        while(i<args.length){
+        while (i < args.length) {
             List<String> fields = new ArrayList<>();
-            for(int j=0; j<numOfFields; j++){
-                fields.add(args[i+j]);
+            for (int j = 0; j < numOfFields; j++) {
+                fields.add(args[i + j]);
             }
             wisbValues.add(fields);
             i += numOfFields;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertDeduplicator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertDeduplicator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertDeduplicator.java
index ed04d5a..2f71c7f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertDeduplicator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertDeduplicator.java
@@ -25,8 +25,8 @@ import org.apache.eagle.alert.engine.model.AlertStreamEvent;
  */
 public interface AlertDeduplicator {
 
-	AlertStreamEvent dedup(AlertStreamEvent event);
+    AlertStreamEvent dedup(AlertStreamEvent event);
 
-	void setDedupIntervalMin(String intervalMin);
+    void setDedupIntervalMin(String intervalMin);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishListener.java
index 8f1c248..fdb01a7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishListener.java
@@ -1,10 +1,4 @@
-package org.apache.eagle.alert.engine.publisher;
-
-import java.util.List;
-
-import org.apache.eagle.alert.engine.coordinator.Publishment;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -20,6 +14,12 @@ import org.apache.eagle.alert.engine.coordinator.Publishment;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.engine.publisher;
+
+import org.apache.eagle.alert.engine.coordinator.Publishment;
+
+import java.util.List;
+
 public interface AlertPublishListener {
     void onPublishChange(List<Publishment> added,
                          List<Publishment> removed,

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishPlugin.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishPlugin.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishPlugin.java
index d24bdb0..4c3a2ad 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishPlugin.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/publisher/AlertPublishPlugin.java
@@ -17,22 +17,22 @@
  */
 package org.apache.eagle.alert.engine.publisher;
 
-import java.io.Closeable;
-import java.util.Map;
-
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.apache.eagle.alert.engine.publisher.impl.PublishStatus;
-
 import com.typesafe.config.Config;
 
+import java.io.Closeable;
+import java.util.Map;
+
 /**
  * Created on 2/10/16.
  * Notification Plug-in interface which provide abstraction layer to notify to different system
  */
 public interface AlertPublishPlugin extends Closeable {
     /**
-     * 
+     * Init alert publish plugin.
+     *
      * @param config
      * @param publishment
      * @param configProperties - storm config that would be useful for some implementation



[15/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/log4j.properties b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/log4j.properties
index fb13ad5..ba06033 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/log4j.properties
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/log4j.properties
@@ -12,9 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 log4j.rootLogger=DEBUG, stdout
-
 # standard output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/streamDef.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/streamDef.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/streamDef.json
index 205905b..5a78b6a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/streamDef.json
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/test/resources/streamDef.json
@@ -1,42 +1,45 @@
 {
-	"streamId": "perfmon_cpu_stream",
-	"dataSource" : "perfmon_datasource",
-	"description":"the data stream for perfmon cpu metrics",
-	"validate": false,
-	"timeseries":false,
-	"columns": [
-		{
-			"name": "host",
-			"type" : "string",
-			"defaultValue": "",
-			"required":true
-		},
-		{
-			"name": "timestamp",
-			"type" : "long",
-			"defaultValue": 0,
-			"required":true
-		},{
-			"name": "floatField",
-			"type" : "float",
-			"defaultValue": "1.2",
-			"required": true
-		},{
-			"name": "intField",
-			"type" : "int",
-			"defaultValue": "3",
-			"required":true
-		},{
-			"name": "value",
-			"type" : "double",
-			"defaultValue": 0.0,
-			"required":true
-		},
-		{
-			"name": "boolField",
-			"type" : "bool",
-			"defaultValue": true,
-			"required":true
-		}
-	]
+  "streamId": "perfmon_cpu_stream",
+  "dataSource": "perfmon_datasource",
+  "description": "the data stream for perfmon cpu metrics",
+  "validate": false,
+  "timeseries": false,
+  "columns": [
+    {
+      "name": "host",
+      "type": "string",
+      "defaultValue": "",
+      "required": true
+    },
+    {
+      "name": "timestamp",
+      "type": "long",
+      "defaultValue": 0,
+      "required": true
+    },
+    {
+      "name": "floatField",
+      "type": "float",
+      "defaultValue": "1.2",
+      "required": true
+    },
+    {
+      "name": "intField",
+      "type": "int",
+      "defaultValue": "3",
+      "required": true
+    },
+    {
+      "name": "value",
+      "type": "double",
+      "defaultValue": 0.0,
+      "required": true
+    },
+    {
+      "name": "boolField",
+      "type": "bool",
+      "defaultValue": true,
+      "required": true
+    }
+  ]
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/pom.xml b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/pom.xml
index bd06919..4589e63 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/pom.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/pom.xml
@@ -50,16 +50,16 @@
             <artifactId>jersey-multipart</artifactId>
         </dependency>
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-mapper-asl</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-mapper-asl</artifactId>-->
         <!--</dependency>-->
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-jaxrs</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-jaxrs</artifactId>-->
         <!--</dependency>-->
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-xc</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-xc</artifactId>-->
         <!--</dependency>-->
         <dependency>
             <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/Coordinator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/Coordinator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/Coordinator.java
index 5c455f6..563db58 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/Coordinator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/Coordinator.java
@@ -16,15 +16,6 @@
  */
 package org.apache.eagle.alert.coordinator;
 
-import java.text.MessageFormat;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
 import org.apache.eagle.alert.config.ConfigBusProducer;
 import org.apache.eagle.alert.config.ConfigValue;
 import org.apache.eagle.alert.config.ZKConfig;
@@ -37,32 +28,43 @@ import org.apache.eagle.alert.coordinator.trigger.PolicyChangeListener;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.service.IMetadataServiceClient;
 import org.apache.eagle.alert.service.MetadataServiceClientImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.google.common.base.Stopwatch;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.MessageFormat;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * TODO: To simply avoid concurrent call of schdule, make the schedule as synchronized. This is not safe when multiple
  * instance, consider a distributed lock for prevent multiple schedule happen concurrently.
+ *
+ * <p>Coordinator is a standalone java application, which listens to policy changes and use schedule
+ * algorithm to distribute policies 1) reacting to shutdown events 2) start non-daemon thread to pull policies
+ * and figure out if polices are changed</p>
  * 
- * @since Mar 24, 2016 Coordinator is a standalone java application, which listens to policy changes and use schedule
- *        algorithm to distribute policies 1) reacting to shutdown events 2) start non-daemon thread to pull policies
- *        and figure out if polices are changed
+ * @since Mar 24, 2016 
  */
 public class Coordinator {
 
     private static final Logger LOG = LoggerFactory.getLogger(Coordinator.class);
 
     private static final String COORDINATOR = "coordinator";
+    
     /**
-     * {@link ZKMetadataChangeNotifyService}
-     *  /alert/{topologyName}/spout
-     *                  /router
-     *                  /alert
-     *                  /publisher
+     * /alert/{topologyName}/spout
+     * /router
+     * /alert
+     * /publisher
+     * .
      */
     private static final String ZK_ALERT_CONFIG_SPOUT = "{0}/spout";
     private static final String ZK_ALERT_CONFIG_ROUTER = "{0}/router";
@@ -70,16 +72,16 @@ public class Coordinator {
     private static final String ZK_ALERT_CONFIG_PUBLISHER = "{0}/publisher";
 
 
-    private final static String METADATA_SERVICE_HOST = "metadataService.host";
-    private final static String METADATA_SERVICE_PORT = "metadataService.port";
-    private final static String METADATA_SERVICE_CONTEXT = "metadataService.context";
-    private final static String DYNAMIC_POLICY_LOADER_INIT_MILLS = "metadataDynamicCheck.initDelayMillis";
-    private final static String DYNAMIC_POLICY_LOADER_DELAY_MILLS = "metadataDynamicCheck.delayMillis";
-    
-    private final static String GREEDY_SCHEDULER_ZK_PATH = "/alert/greedy/leader";
-    private final static String POLICY_SCHEDULER_ZK_PATH = "/alert/policy/leader";
-    private final static int ACQUIRE_LOCK_WAIT_INTERVAL_MS = 2000;
-    private final static int ACQUIRE_LOCK_MAX_RETRIES_TIMES = 90; //about 9 minutes
+    private static final String METADATA_SERVICE_HOST = "metadataService.host";
+    private static final String METADATA_SERVICE_PORT = "metadataService.port";
+    private static final String METADATA_SERVICE_CONTEXT = "metadataService.context";
+    private static final String DYNAMIC_POLICY_LOADER_INIT_MILLS = "metadataDynamicCheck.initDelayMillis";
+    private static final String DYNAMIC_POLICY_LOADER_DELAY_MILLS = "metadataDynamicCheck.delayMillis";
+
+    private static final String GREEDY_SCHEDULER_ZK_PATH = "/alert/greedy/leader";
+    private static final String POLICY_SCHEDULER_ZK_PATH = "/alert/policy/leader";
+    private static final int ACQUIRE_LOCK_WAIT_INTERVAL_MS = 2000;
+    private static final int ACQUIRE_LOCK_MAX_RETRIES_TIMES = 90; //about 9 minutes
 
     private volatile ScheduleState currentState = null;
     private final ConfigBusProducer producer;
@@ -103,58 +105,60 @@ public class Coordinator {
     }
 
     public synchronized ScheduleState schedule(ScheduleOption option) {
-    	ScheduleZkState scheduleZkState = new ScheduleZkState();
-    	ExclusiveExecutor.Runnable exclusiveRunnable = new ExclusiveExecutor.Runnable() {
-			@Override
-			public void run() throws Exception {
-				scheduleZkState.scheduleAcquired = true;
-				
-				while (!scheduleZkState.scheduleCompleted) {
-					Thread.sleep(ACQUIRE_LOCK_WAIT_INTERVAL_MS);
-				}
-			}
-    	};
-    	ExclusiveExecutor.execute(GREEDY_SCHEDULER_ZK_PATH, exclusiveRunnable);
-    	int waitMaxTimes = 0;
-    	while (waitMaxTimes < ACQUIRE_LOCK_MAX_RETRIES_TIMES) { //about 3 minutes waiting
-    		if (!scheduleZkState.scheduleAcquired) {
-    			waitMaxTimes ++;
-    			try {
-					Thread.sleep(ACQUIRE_LOCK_WAIT_INTERVAL_MS);
-				} catch (InterruptedException e) {}
-    			continue;
-    		}
-    		
-    		ScheduleState state = null;
-    		try {
-    			Stopwatch watch = Stopwatch.createStarted();
-    	        IScheduleContext context = new ScheduleContextBuilder(config, client).buildContext();
-    	        TopologyMgmtService mgmtService = new TopologyMgmtService();
-    	        IPolicyScheduler scheduler = PolicySchedulerFactory.createScheduler();
-    	
-    	        scheduler.init(context, mgmtService);
-    	        state = scheduler.schedule(option);
-    	        
-    	        long scheduleTime = watch.elapsed(TimeUnit.MILLISECONDS);
-    	        state.setScheduleTimeMillis((int) scheduleTime);// hardcode to integer
-    	        watch.reset();
-    	        watch.start();
-    	
-    	        // persist & notify
-    	        postSchedule(client, state, producer);
-    	
-    	        watch.stop();
-    	        long postTime = watch.elapsed(TimeUnit.MILLISECONDS);
-    	        LOG.info("Schedule result, schedule time {} ms, post schedule time {} ms !", scheduleTime, postTime);
-    	
-    	        currentState = state;
-    		} finally {
-    			//schedule completed
-    			scheduleZkState.scheduleCompleted = true;
-    		}
-	        return state;
-    	}
-    	throw new LockWebApplicationException("Acquire scheduler lock failed, please retry later");
+        ScheduleZkState scheduleZkState = new ScheduleZkState();
+        ExclusiveExecutor.Runnable exclusiveRunnable = new ExclusiveExecutor.Runnable() {
+            @Override
+            public void run() throws Exception {
+                scheduleZkState.scheduleAcquired = true;
+
+                while (!scheduleZkState.scheduleCompleted) {
+                    Thread.sleep(ACQUIRE_LOCK_WAIT_INTERVAL_MS);
+                }
+            }
+        };
+        ExclusiveExecutor.execute(GREEDY_SCHEDULER_ZK_PATH, exclusiveRunnable);
+        int waitMaxTimes = 0;
+        while (waitMaxTimes < ACQUIRE_LOCK_MAX_RETRIES_TIMES) { //about 3 minutes waiting
+            if (!scheduleZkState.scheduleAcquired) {
+                waitMaxTimes++;
+                try {
+                    Thread.sleep(ACQUIRE_LOCK_WAIT_INTERVAL_MS);
+                } catch (InterruptedException e) {
+                    // ignored
+                }
+                continue;
+            }
+
+            ScheduleState state = null;
+            try {
+                Stopwatch watch = Stopwatch.createStarted();
+                IScheduleContext context = new ScheduleContextBuilder(config, client).buildContext();
+                TopologyMgmtService mgmtService = new TopologyMgmtService();
+                IPolicyScheduler scheduler = PolicySchedulerFactory.createScheduler();
+
+                scheduler.init(context, mgmtService);
+                state = scheduler.schedule(option);
+
+                long scheduleTime = watch.elapsed(TimeUnit.MILLISECONDS);
+                state.setScheduleTimeMillis((int) scheduleTime);// hardcode to integer
+                watch.reset();
+                watch.start();
+
+                // persist & notify
+                postSchedule(client, state, producer);
+
+                watch.stop();
+                long postTime = watch.elapsed(TimeUnit.MILLISECONDS);
+                LOG.info("Schedule result, schedule time {} ms, post schedule time {} ms !", scheduleTime, postTime);
+
+                currentState = state;
+            } finally {
+                //schedule completed
+                scheduleZkState.scheduleCompleted = true;
+            }
+            return state;
+        }
+        throw new LockWebApplicationException("Acquire scheduler lock failed, please retry later");
     }
 
     public static void postSchedule(IMetadataServiceClient client, ScheduleState state, ConfigBusProducer producer) {
@@ -187,7 +191,7 @@ public class Coordinator {
     }
 
     /**
-     * shutdown background threads and release various resources
+     * shutdown background threads and release various resources.
      */
     private static class CoordinatorShutdownHook implements Runnable {
         private static final Logger LOG = LoggerFactory.getLogger(CoordinatorShutdownHook.class);
@@ -215,7 +219,7 @@ public class Coordinator {
     }
 
     private static class PolicyChangeHandler implements PolicyChangeListener {
-        private final static Logger LOG = LoggerFactory.getLogger(PolicyChangeHandler.class);
+        private static final Logger LOG = LoggerFactory.getLogger(PolicyChangeHandler.class);
         private Config config;
         private IMetadataServiceClient client;
 
@@ -226,11 +230,11 @@ public class Coordinator {
 
         @Override
         public void onPolicyChange(List<PolicyDefinition> allPolicies, Collection<String> addedPolicies,
-                Collection<String> removedPolicies, Collection<String> modifiedPolicies) {
+                                   Collection<String> removedPolicies, Collection<String> modifiedPolicies) {
             LOG.info("policy changed ... ");
             LOG.info("allPolicies: " + allPolicies + ", addedPolicies: " + addedPolicies + ", removedPolicies: "
-                    + removedPolicies + ", modifiedPolicies: " + modifiedPolicies);
-            
+                + removedPolicies + ", modifiedPolicies: " + modifiedPolicies);
+
             CoordinatorTrigger trigger = new CoordinatorTrigger(config, client);
             trigger.run();
 
@@ -239,48 +243,48 @@ public class Coordinator {
 
     public static void main(String[] args) throws Exception {
         startSchedule();
-        
+
         Thread.currentThread().join();
     }
 
     public static void startSchedule() {
-    	ExclusiveExecutor.execute(POLICY_SCHEDULER_ZK_PATH, new ExclusiveExecutor.Runnable() {
-			
-			@Override
-			public void run() throws Exception {
-		        Config config = ConfigFactory.load().getConfig(COORDINATOR);
-		        // build dynamic policy loader
-		        String host = config.getString(METADATA_SERVICE_HOST);
-		        int port = config.getInt(METADATA_SERVICE_PORT);
-		        String context = config.getString(METADATA_SERVICE_CONTEXT);
-		        IMetadataServiceClient client = new MetadataServiceClientImpl(host, port, context);
-		        DynamicPolicyLoader loader = new DynamicPolicyLoader(client);
-		        loader.addPolicyChangeListener(new PolicyChangeHandler(config, client));
-
-		        // schedule dynamic policy loader
-		        long initDelayMillis = config.getLong(DYNAMIC_POLICY_LOADER_INIT_MILLS);
-		        long delayMillis = config.getLong(DYNAMIC_POLICY_LOADER_DELAY_MILLS);
-		        ScheduledExecutorService scheduleSrv = Executors.newScheduledThreadPool(2, new ThreadFactory() {
-		            @Override
-		            public Thread newThread(Runnable r) {
-		                Thread t = new Thread(r);
-		                t.setDaemon(true);
-		                return t;
-		            }
-		        });
-		        scheduleSrv.scheduleAtFixedRate(loader, initDelayMillis, delayMillis, TimeUnit.MILLISECONDS);
-		        
-		        // 
-		        scheduleSrv.scheduleAtFixedRate(new CoordinatorTrigger(config, client), CoordinatorTrigger.INIT_PERIODICALLY_TRIGGER_DELAY,
-		                CoordinatorTrigger.INIT_PERIODICALLY_TRIGGER_INTERVAL, TimeUnit.MILLISECONDS);
-		        
-		        Runtime.getRuntime().addShutdownHook(new Thread(new CoordinatorShutdownHook(scheduleSrv)));
-		        LOG.info("Eagle Coordinator started ...");
-                
+        ExclusiveExecutor.execute(POLICY_SCHEDULER_ZK_PATH, new ExclusiveExecutor.Runnable() {
+
+            @Override
+            public void run() throws Exception {
+                Config config = ConfigFactory.load().getConfig(COORDINATOR);
+                // build dynamic policy loader
+                String host = config.getString(METADATA_SERVICE_HOST);
+                int port = config.getInt(METADATA_SERVICE_PORT);
+                String context = config.getString(METADATA_SERVICE_CONTEXT);
+                IMetadataServiceClient client = new MetadataServiceClientImpl(host, port, context);
+                DynamicPolicyLoader loader = new DynamicPolicyLoader(client);
+                loader.addPolicyChangeListener(new PolicyChangeHandler(config, client));
+
+                // schedule dynamic policy loader
+                long initDelayMillis = config.getLong(DYNAMIC_POLICY_LOADER_INIT_MILLS);
+                long delayMillis = config.getLong(DYNAMIC_POLICY_LOADER_DELAY_MILLS);
+                ScheduledExecutorService scheduleSrv = Executors.newScheduledThreadPool(2, new ThreadFactory() {
+                    @Override
+                    public Thread newThread(Runnable r) {
+                        Thread t = new Thread(r);
+                        t.setDaemon(true);
+                        return t;
+                    }
+                });
+                scheduleSrv.scheduleAtFixedRate(loader, initDelayMillis, delayMillis, TimeUnit.MILLISECONDS);
+
+                //
+                scheduleSrv.scheduleAtFixedRate(new CoordinatorTrigger(config, client), CoordinatorTrigger.INIT_PERIODICALLY_TRIGGER_DELAY,
+                    CoordinatorTrigger.INIT_PERIODICALLY_TRIGGER_INTERVAL, TimeUnit.MILLISECONDS);
+
+                Runtime.getRuntime().addShutdownHook(new Thread(new CoordinatorShutdownHook(scheduleSrv)));
+                LOG.info("Eagle Coordinator started ...");
+
                 Thread.currentThread().join();
-			}
-			
-		});
+            }
+
+        });
     }
 
     public void enforcePeriodicallyBuild() {
@@ -294,10 +298,10 @@ public class Coordinator {
     public static boolean isPeriodicallyForceBuildEnable() {
         return forcePeriodicallyBuild.get();
     }
-    
+
     public static class ScheduleZkState {
-    	volatile boolean scheduleAcquired = false;
+        volatile boolean scheduleAcquired = false;
         volatile boolean scheduleCompleted = false;
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorConstants.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorConstants.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorConstants.java
index 3458b3e..0a09de2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorConstants.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorConstants.java
@@ -16,10 +16,6 @@
  */
 package org.apache.eagle.alert.coordinator;
 
-/**
- * @since Apr 22, 2016
- *
- */
 public class CoordinatorConstants {
     public static final String CONFIG_ITEM_COORDINATOR = "coordinator";
     public static final String CONFIG_ITEM_TOPOLOGY_LOAD_UPBOUND = "topologyLoadUpbound";

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorListener.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorListener.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorListener.java
index c9bda16..7ebf26a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorListener.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/CoordinatorListener.java
@@ -16,29 +16,27 @@
  */
 package org.apache.eagle.alert.coordinator;
 
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
 
 /**
- * @since Jun 16, 2016
- *
+ * @since Jun 16, 2016.
  */
 public class CoordinatorListener implements ServletContextListener {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(CoordinatorListener.class);
-    
+
     public CoordinatorListener() {
     }
-    
+
     @Override
     public void contextInitialized(ServletContextEvent sce) {
-    	LOG.info("start coordinator background tasks..");
+        LOG.info("start coordinator background tasks..");
         Coordinator.startSchedule();
     }
-    
+
     @Override
     public void contextDestroyed(ServletContextEvent sce) {
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ExclusiveExecutor.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ExclusiveExecutor.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ExclusiveExecutor.java
index 96e6fce..74329e3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ExclusiveExecutor.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ExclusiveExecutor.java
@@ -16,6 +16,10 @@
  */
 package org.apache.eagle.alert.coordinator;
 
+import org.apache.eagle.alert.config.ZKConfig;
+import org.apache.eagle.alert.config.ZKConfigBuilder;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.curator.RetryPolicy;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
@@ -25,94 +29,88 @@ import org.apache.curator.framework.recipes.leader.LeaderSelectorListenerAdapter
 import org.apache.curator.framework.state.ConnectionState;
 import org.apache.curator.retry.ExponentialBackoffRetry;
 import org.apache.curator.utils.CloseableUtils;
-import org.apache.eagle.alert.config.ZKConfig;
-import org.apache.eagle.alert.config.ZKConfigBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
 public class ExclusiveExecutor {
 
-	private static final Logger LOG = LoggerFactory.getLogger(ExclusiveExecutor.class);
-
-	// private static final String PATH = "/alert/listener/leader";
-	private static final String COORDINATOR = "coordinator";
-	private static final int ZK_RETRYPOLICY_SLEEP_TIME_MS = 1000;
-	private static final int ZK_RETRYPOLICY_MAX_RETRIES = 3;
+    private static final Logger LOG = LoggerFactory.getLogger(ExclusiveExecutor.class);
 
-	private static final CuratorFramework client;
+    // private static final String PATH = "/alert/listener/leader";
+    private static final String COORDINATOR = "coordinator";
+    private static final int ZK_RETRYPOLICY_SLEEP_TIME_MS = 1000;
+    private static final int ZK_RETRYPOLICY_MAX_RETRIES = 3;
 
-	static {
-		Config config = ConfigFactory.load().getConfig(COORDINATOR);
-		RetryPolicy retryPolicy = new ExponentialBackoffRetry(ZK_RETRYPOLICY_SLEEP_TIME_MS, ZK_RETRYPOLICY_MAX_RETRIES);
-		ZKConfig zkConfig = ZKConfigBuilder.getZKConfig(config);
-		client = CuratorFrameworkFactory.newClient(zkConfig.zkQuorum, retryPolicy);
-		client.start();
-	}
+    private static final CuratorFramework client;
 
-	public static abstract class Runnable {
+    static {
+        Config config = ConfigFactory.load().getConfig(COORDINATOR);
+        RetryPolicy retryPolicy = new ExponentialBackoffRetry(ZK_RETRYPOLICY_SLEEP_TIME_MS, ZK_RETRYPOLICY_MAX_RETRIES);
+        ZKConfig zkConfig = ZKConfigBuilder.getZKConfig(config);
+        client = CuratorFrameworkFactory.newClient(zkConfig.zkQuorum, retryPolicy);
+        client.start();
+    }
 
-		boolean completed = false;
-		LeaderSelector selector;
+    public abstract static class Runnable {
+        boolean completed = false;
+        LeaderSelector selector;
 
-		public abstract void run() throws Exception;
+        public abstract void run() throws Exception;
 
-		public void registerResources(LeaderSelector selector) {
-			this.selector = selector;
-		}
+        public void registerResources(LeaderSelector selector) {
+            this.selector = selector;
+        }
 
-		public void runElegantly() throws Exception {
-			this.run();
+        public void runElegantly() throws Exception {
+            this.run();
 
-			LOG.info("Close selector resources {}", this.selector);
-			CloseableUtils.closeQuietly(this.selector);
+            LOG.info("Close selector resources {}", this.selector);
+            CloseableUtils.closeQuietly(this.selector);
 
-			completed = true;
-		}
+            completed = true;
+        }
 
-		public boolean isCompleted() {
-			return completed;
-		}
+        public boolean isCompleted() {
+            return completed;
+        }
 
-	}
+    }
 
-	public static void execute(String path, final Runnable runnable) {
-		LeaderSelectorListener listener = new LeaderSelectorListenerAdapter() {
+    public static void execute(String path, final Runnable runnable) {
+        LeaderSelectorListener listener = new LeaderSelectorListenerAdapter() {
 
-			@Override
-			public void takeLeadership(CuratorFramework client) throws Exception {
-				// this callback will get called when you are the leader
-				// do whatever leader work you need to and only exit
-				// this method when you want to relinquish leadership
-				LOG.info("this is leader node right now..");
-				runnable.runElegantly();
-			}
+            @Override
+            public void takeLeadership(CuratorFramework client) throws Exception {
+                // this callback will get called when you are the leader
+                // do whatever leader work you need to and only exit
+                // this method when you want to relinquish leadership
+                LOG.info("this is leader node right now..");
+                runnable.runElegantly();
+            }
 
-			@Override
-			public void stateChanged(CuratorFramework client, ConnectionState newState) {
-				LOG.info(String.format("leader selector state change listener, new state: %s", newState.toString()));
-			}
+            @Override
+            public void stateChanged(CuratorFramework client, ConnectionState newState) {
+                LOG.info(String.format("leader selector state change listener, new state: %s", newState.toString()));
+            }
 
-		};
+        };
 
-		LeaderSelector selector = new LeaderSelector(client, path, listener);
-		selector.autoRequeue(); // not required, but this is behavior that you
-								// will probably expect
-		selector.start();
+        LeaderSelector selector = new LeaderSelector(client, path, listener);
+        selector.autoRequeue(); // not required, but this is behavior that you
+        // will probably expect
+        selector.start();
 
-		runnable.registerResources(selector);
+        runnable.registerResources(selector);
 
-		Runtime.getRuntime().addShutdownHook(new Thread(new java.lang.Runnable() {
+        Runtime.getRuntime().addShutdownHook(new Thread(new java.lang.Runnable() {
 
-			@Override
-			public void run() {
-				LOG.info("Close zk client resources {}", ExclusiveExecutor.client);
-				CloseableUtils.closeQuietly(ExclusiveExecutor.client);
-			}
+            @Override
+            public void run() {
+                LOG.info("Close zk client resources {}", ExclusiveExecutor.client);
+                CloseableUtils.closeQuietly(ExclusiveExecutor.client);
+            }
 
-		}));
-	}
+        }));
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IPolicyScheduler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IPolicyScheduler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IPolicyScheduler.java
index 5e61443..0cf4a5d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IPolicyScheduler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IPolicyScheduler.java
@@ -19,8 +19,7 @@ package org.apache.eagle.alert.coordinator;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 
 /**
- * @since Mar 24, 2016
- *
+ * @since Mar 24, 2016.
  */
 public interface IPolicyScheduler {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IScheduleContext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IScheduleContext.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IScheduleContext.java
index 0cde22d..b21948b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IScheduleContext.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/IScheduleContext.java
@@ -16,8 +16,6 @@
  */
 package org.apache.eagle.alert.coordinator;
 
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
@@ -28,9 +26,10 @@ import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 
+import java.util.Map;
+
 /**
- * @since Mar 28, 2016
- *
+ * @since Mar 28, 2016.
  */
 public interface IScheduleContext {
 
@@ -48,7 +47,7 @@ public interface IScheduleContext {
     Map<String, PolicyAssignment> getPolicyAssignments();
 
     Map<StreamGroup, MonitoredStream> getMonitoredStreams();
-    
+
     Map<String, Publishment> getPublishments();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/LockWebApplicationException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/LockWebApplicationException.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/LockWebApplicationException.java
index 69e799f..29e8cac 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/LockWebApplicationException.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/LockWebApplicationException.java
@@ -21,14 +21,14 @@ import javax.ws.rs.core.Response;
 
 public class LockWebApplicationException extends WebApplicationException {
 
-	private static final long serialVersionUID = 3441072187262776401L;
+    private static final long serialVersionUID = 3441072187262776401L;
 
-	public LockWebApplicationException() {
-		super(Response.Status.INTERNAL_SERVER_ERROR);
-	}
+    public LockWebApplicationException() {
+        super(Response.Status.INTERNAL_SERVER_ERROR);
+    }
 
-	public LockWebApplicationException(String message) {
-		super(Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(message).type("text/plain").build());
-	}
+    public LockWebApplicationException(String message) {
+        super(Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(message).type("text/plain").build());
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/PolicySchedulerFactory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/PolicySchedulerFactory.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/PolicySchedulerFactory.java
index 8bccb53..c1bc726 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/PolicySchedulerFactory.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/PolicySchedulerFactory.java
@@ -19,8 +19,7 @@ package org.apache.eagle.alert.coordinator;
 import org.apache.eagle.alert.coordinator.impl.GreedyPolicyScheduler;
 
 /**
- * @since Mar 24, 2016
- *
+ * @since Mar 24, 2016.
  */
 public class PolicySchedulerFactory {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ScheduleOption.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ScheduleOption.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ScheduleOption.java
index 6c04e61..6fe27c5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ScheduleOption.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/ScheduleOption.java
@@ -18,11 +18,9 @@ package org.apache.eagle.alert.coordinator;
 
 /**
  * A runtime option for one schedule processing.
- * 
- * Could used for configuration override.
- * 
- * @since Apr 19, 2016
+ * <p>Could used for configuration override.</p>
  *
+ * @since Apr 19, 2016
  */
 public class ScheduleOption {
     private int policiesPerBolt;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/TopologyMgmtService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/TopologyMgmtService.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/TopologyMgmtService.java
index 4ae07f5..4ca9d5e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/TopologyMgmtService.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/TopologyMgmtService.java
@@ -19,18 +19,16 @@ package org.apache.eagle.alert.coordinator;
 import static org.apache.eagle.alert.coordinator.CoordinatorConstants.CONFIG_ITEM_COORDINATOR;
 import static org.apache.eagle.alert.coordinator.CoordinatorConstants.NUM_OF_ALERT_BOLTS_PER_TOPOLOGY;
 
-import java.util.Collections;
-import java.util.List;
-
 import org.apache.eagle.alert.coordination.model.internal.Topology;
 import org.apache.eagle.alert.coordinator.model.TopologyUsage;
 
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import java.util.Collections;
+import java.util.List;
 
 /**
- * @since Mar 29, 2016
- *
+ * @since Mar 29, 2016.
  */
 public class TopologyMgmtService {
 
@@ -61,21 +59,19 @@ public class TopologyMgmtService {
         boltParallelism = config.getInt(CoordinatorConstants.BOLT_PARALLELISM);
         numberOfBoltsPerTopology = config.getInt(NUM_OF_ALERT_BOLTS_PER_TOPOLOGY);
     }
-    
+
     public int getNumberOfAlertBoltsInTopology() {
         return numberOfBoltsPerTopology;
     }
 
     /**
-     * TODO: call topology mgmt API to create a topology
-     * 
-     * @return
+     * TODO: call topology mgmt API to create a topology.
      */
     public TopologyMeta creatTopology() {
         // TODO
         throw new UnsupportedOperationException("not supported yet!");
     }
-    
+
     public List<TopologyMeta> listTopologies() {
         // TODO
         return Collections.emptyList();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/GreedyPolicyScheduler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/GreedyPolicyScheduler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/GreedyPolicyScheduler.java
index ebc533e..49a16ff 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/GreedyPolicyScheduler.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/GreedyPolicyScheduler.java
@@ -16,24 +16,10 @@
  */
 package org.apache.eagle.alert.coordinator.impl;
 
-import static org.apache.eagle.alert.coordinator.CoordinatorConstants.CONFIG_ITEM_BOLT_LOAD_UPBOUND;
-import static org.apache.eagle.alert.coordinator.CoordinatorConstants.CONFIG_ITEM_COORDINATOR;
-import static org.apache.eagle.alert.coordinator.CoordinatorConstants.POLICIES_PER_BOLT;
-import static org.apache.eagle.alert.coordinator.CoordinatorConstants.POLICY_DEFAULT_PARALLELISM;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
+import static org.apache.eagle.alert.coordinator.CoordinatorConstants.*;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.WorkSlot;
-import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
-import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
-import org.apache.eagle.alert.coordination.model.internal.StreamGroup;
-import org.apache.eagle.alert.coordination.model.internal.StreamWorkSlotQueue;
-import org.apache.eagle.alert.coordination.model.internal.Topology;
+import org.apache.eagle.alert.coordination.model.internal.*;
 import org.apache.eagle.alert.coordinator.IPolicyScheduler;
 import org.apache.eagle.alert.coordinator.IScheduleContext;
 import org.apache.eagle.alert.coordinator.ScheduleOption;
@@ -44,31 +30,31 @@ import org.apache.eagle.alert.coordinator.provider.InMemScheduleConext;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.utils.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
 
 /**
  * A simple greedy assigner. <br/>
- * A greedy assigner simply loop the policies, find the most suitable topology
+ *
+ * <p>A greedy assigner simply loop the policies, find the most suitable topology
  * to locate the policy first, then assign the topics to corresponding
- * spouts/group-by bolts.
- * 
- * <br/>
- * For each given policy, the greedy steps are
+ * spouts/group-by bolts.</p>
+ *
+ * <p>For each given policy, the greedy steps are</p>
+ *
  * <ul>
  * <li>1. Find the same topology that already serve the policy without exceed the load</li>
  * <li>2. Find the topology that already take the source traffic without exceed the load</li>
  * <li>3. Find the topology that available to place source topic without exceed the load</li>
  * <li>4. Create a new topology and locate the policy</li>
  * <li>Route table generated after all policies assigned</li>
- * <ul>
- * <br/>
- * 
+ * </ul>
  * @since Mar 24, 2016
- *
  */
 public class GreedyPolicyScheduler implements IPolicyScheduler {
 
@@ -111,8 +97,8 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
          * Answer: two possible place: a global route table will be generated, those target not in current topology tuples will be dropped. This make the partition for tuple to alert
          * <li>How to support add topology on demand by evaluate the available topology bandwidth(need topology level load)?</li>
          * Answer: Use configured topology load up-bound, when topology load is available, will adopt
-         * <ul>
-         * <pre>
+         * </ul>
+         * </pre>
          */
         List<ScheduleResult> results = new ArrayList<ScheduleResult>();
         Map<String, PolicyAssignment> newAssignments = new HashMap<String, PolicyAssignment>();
@@ -152,13 +138,13 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
     }
 
     private ScheduleState generateMonitorMetadata(List<WorkItem> expandworkSets,
-            Map<String, PolicyAssignment> newAssignments) {
+                                                  Map<String, PolicyAssignment> newAssignments) {
         MonitorMetadataGenerator generator = new MonitorMetadataGenerator(context);
         return generator.generate(expandworkSets);
     }
 
     private void placePolicy(PolicyDefinition def, AlertBoltUsage alertBoltUsage, Topology targetTopology,
-            TopologyUsage usage) {
+                             TopologyUsage usage) {
         String policyName = def.getName();
 
         // topology usage update
@@ -169,26 +155,26 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
 
         // update source topics
         updateDataSource(usage, def);
-        
+
         // update group-by
         updateGrouping(usage, def);
     }
 
     private void updateGrouping(TopologyUsage usage, PolicyDefinition def) {
         // groupByMeta is removed since groupspec generate doesnt need it now. 
-//        List<StreamPartition> policyPartitionSpec = def.getPartitionSpec();
-//        Map<String, List<StreamPartition>> groupByMeta = usage.getGroupByMeta();
-//        for (StreamPartition par : policyPartitionSpec) {
-//            List<StreamPartition> partitions = groupByMeta.get(par.getStreamId());
-//            if (partitions == null) {
-//                partitions = new ArrayList<StreamPartition>();
-//                // de-dup of the partition on the list?
-//                groupByMeta.put(par.getStreamId(), partitions);
-//            }
-//            if (!partitions.contains(par)) {
-//                partitions.add(par);
-//            }
-//        }
+        //        List<StreamPartition> policyPartitionSpec = def.getPartitionSpec();
+        //        Map<String, List<StreamPartition>> groupByMeta = usage.getGroupByMeta();
+        //        for (StreamPartition par : policyPartitionSpec) {
+        //            List<StreamPartition> partitions = groupByMeta.get(par.getStreamId());
+        //            if (partitions == null) {
+        //                partitions = new ArrayList<StreamPartition>();
+        //                // de-dup of the partition on the list?
+        //                groupByMeta.put(par.getStreamId(), partitions);
+        //            }
+        //            if (!partitions.contains(par)) {
+        //                partitions.add(par);
+        //            }
+        //        }
     }
 
     private void updateDataSource(TopologyUsage usage, PolicyDefinition def) {
@@ -216,13 +202,13 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
      * <li>3. Find the topology that available to place source topic</li>
      * <li>4. Create a new topology and locate the policy</li>
      * <li>Route table generated after all policies assigned</li>
-     * <ul>
+     * </ul>
      * <br/>
-     * 
+     *
      * @param newAssignments
      */
     private ScheduleResult schedulePolicy(WorkItem item, Map<String, PolicyAssignment> newAssignments) {
-        LOG.info(" schedule for {}", item );
+        LOG.info(" schedule for {}", item);
 
         String policyName = item.def.getName();
         StreamGroup policyStreamPartition = new StreamGroup();
@@ -260,14 +246,14 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
     }
 
     private void placePolicyToQueue(PolicyDefinition def, StreamWorkSlotQueue queue,
-            Map<String, PolicyAssignment> newAssignments) {
+                                    Map<String, PolicyAssignment> newAssignments) {
         for (WorkSlot slot : queue.getWorkingSlots()) {
             Topology targetTopology = context.getTopologies().get(slot.getTopologyName());
             TopologyUsage usage = context.getTopologyUsages().get(slot.getTopologyName());
             AlertBoltUsage alertBoltUsage = usage.getAlertBoltUsage(slot.getBoltId());
             placePolicy(def, alertBoltUsage, targetTopology, usage);
         }
-//        queue.placePolicy(def);
+        // queue.placePolicy(def);
         PolicyAssignment assignment = new PolicyAssignment(def.getName(), queue.getQueueId());
         context.getPolicyAssignments().put(def.getName(), assignment);
         newAssignments.put(def.getName(), assignment);
@@ -286,22 +272,19 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
             WorkQueueBuilder builder = new WorkQueueBuilder(context, mgmtService);
             // TODO : get the properties from policy definiton
             targetQueue = builder.createQueue(targetdStream, false, getQueueSize(def.getParallelismHint()),
-                    new HashMap<String, Object>());
+                new HashMap<String, Object>());
         }
         return targetQueue;
     }
 
     /**
-     * Some strategy to generate correct size in Startegy of queue builder
-     * 
-     * @param hint
-     * @return
+     * Some strategy to generate correct size in Startegy of queue builder.
      */
     private int getQueueSize(int hint) {
-    	if (hint == 0) {
-    		// some policies require single bolt to execute
-    		return 1;
-    	}
+        if (hint == 0) {
+            // some policies require single bolt to execute
+            return 1;
+        }
         return initialQueueSize * ((hint + initialQueueSize - 1) / initialQueueSize);
     }
 
@@ -323,7 +306,7 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
     private boolean isBoltAvailable(AlertBoltUsage boltUsage, PolicyDefinition def) {
         // overload or over policy # or already contains
         if (boltUsage == null || boltUsage.getLoad() > boltLoadUpbound
-                || boltUsage.getPolicies().size() > policiesPerBolt || boltUsage.getPolicies().contains(def.getName())) {
+            || boltUsage.getPolicies().size() > policiesPerBolt || boltUsage.getPolicies().contains(def.getName())) {
             return false;
         }
         return true;
@@ -333,7 +316,7 @@ public class GreedyPolicyScheduler implements IPolicyScheduler {
         this.context = new InMemScheduleConext(context);
         this.mgmtService = mgmtService;
     }
-    
+
     public IScheduleContext getContext() {
         return context;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/MonitorMetadataGenerator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/MonitorMetadataGenerator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/MonitorMetadataGenerator.java
index 40f16e9..c5c992b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/MonitorMetadataGenerator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/MonitorMetadataGenerator.java
@@ -16,22 +16,7 @@
  */
 package org.apache.eagle.alert.coordinator.impl;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.eagle.alert.coordination.model.AlertBoltSpec;
-import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
-import org.apache.eagle.alert.coordination.model.PolicyWorkerQueue;
-import org.apache.eagle.alert.coordination.model.PublishSpec;
-import org.apache.eagle.alert.coordination.model.RouterSpec;
-import org.apache.eagle.alert.coordination.model.ScheduleState;
-import org.apache.eagle.alert.coordination.model.SpoutSpec;
-import org.apache.eagle.alert.coordination.model.StreamRepartitionMetadata;
-import org.apache.eagle.alert.coordination.model.StreamRepartitionStrategy;
-import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
-import org.apache.eagle.alert.coordination.model.Tuple2StreamMetadata;
+import org.apache.eagle.alert.coordination.model.*;
 import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
 import org.apache.eagle.alert.coordination.model.internal.StreamWorkSlotQueue;
@@ -46,12 +31,18 @@ import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
- * @since Apr 26, 2016
  * Given current policy placement, figure out monitor metadata
- * 
- * TODO: refactor to eliminate the duplicate of stupid if-notInMap-then-create....
- * FIXME: too many duplicated code logic : check null; add list to map; add to list.. 
+ *
+ * <p>TODO: refactor to eliminate the duplicate of stupid if-notInMap-then-create....
+ * FIXME: too many duplicated code logic : check null; add list to map; add to list..</p>
+ *
+ * @since Apr 26, 2016
  */
 public class MonitorMetadataGenerator {
 
@@ -76,15 +67,15 @@ public class MonitorMetadataGenerator {
         Map<String, PublishSpec> publishSpecsMap = generatePublishMetadata();
 
         String uniqueVersion = generateVersion();
-        ScheduleState status = new ScheduleState(uniqueVersion, 
-                topoSpoutSpecsMap, 
-                groupSpecsMap, 
-                alertSpecsMap,
-                publishSpecsMap, 
-                context.getPolicyAssignments().values(), 
-                context.getMonitoredStreams().values(),
-                context.getPolicies().values(),
-                context.getStreamSchemas().values());
+        ScheduleState status = new ScheduleState(uniqueVersion,
+            topoSpoutSpecsMap,
+            groupSpecsMap,
+            alertSpecsMap,
+            publishSpecsMap,
+            context.getPolicyAssignments().values(),
+            context.getMonitoredStreams().values(),
+            context.getPolicies().values(),
+            context.getStreamSchemas().values());
         return status;
     }
 
@@ -127,7 +118,7 @@ public class MonitorMetadataGenerator {
     }
 
     /**
-     * FIXME: add auto-increment version number?
+     * FIXME: add auto-increment version number?.
      */
     private String generateVersion() {
         return "spec_version_" + System.currentTimeMillis();
@@ -159,7 +150,7 @@ public class MonitorMetadataGenerator {
                 spec = new RouterSpec(u.getTopoName());
                 groupSpecsMap.put(u.getTopoName(), spec);
             }
-            
+
             for (MonitoredStream ms : u.getMonitoredStream()) {
                 // mutiple stream on the same policy group : for correlation group case:
                 for (StreamPartition partiton : ms.getStreamGroup().getStreamPartitions()) {
@@ -184,7 +175,7 @@ public class MonitorMetadataGenerator {
 
     private Map<String, SpoutSpec> generateSpoutMonitorMetadata() {
         Map<String, StreamWorkSlotQueue> queueMap = buildQueueMap();
-        
+
         Map<String, SpoutSpec> topoSpoutSpecsMap = new HashMap<String, SpoutSpec>();
         // streamName -> StreamDefinition
         Map<String, StreamDefinition> streamSchemaMap = context.getStreamSchemas();
@@ -207,7 +198,7 @@ public class MonitorMetadataGenerator {
             Map<String, List<StreamRepartitionMetadata>> streamsMap = new HashMap<String, List<StreamRepartitionMetadata>>();
             for (String policyName : usage.getPolicies()) {
                 PolicyDefinition def = context.getPolicies().get(policyName);
-                
+
                 PolicyAssignment assignment = context.getPolicyAssignments().get(policyName);
                 if (assignment == null) {
                     LOG.error(" can not find assignment for policy {} ! ", policyName);
@@ -245,9 +236,7 @@ public class MonitorMetadataGenerator {
 
     /**
      * Work queue not a root level object, thus we need to build a map from
-     * MonitoredStream for later quick lookup
-     * 
-     * @return
+     * MonitoredStream for later quick lookup.
      */
     private Map<String, StreamWorkSlotQueue> buildQueueMap() {
         Map<String, StreamWorkSlotQueue> queueMap = new HashMap<String, StreamWorkSlotQueue>();
@@ -260,7 +249,7 @@ public class MonitorMetadataGenerator {
     }
 
     private void addGroupingStrategy(Map<String, List<StreamRepartitionMetadata>> streamsMap, String stream,
-            StreamDefinition schema, String topicName, String datasourceName, StreamRepartitionStrategy gs) {
+                                     StreamDefinition schema, String topicName, String datasourceName, StreamRepartitionStrategy gs) {
         List<StreamRepartitionMetadata> dsStreamMeta;
         if (streamsMap.containsKey(topicName)) {
             dsStreamMeta = streamsMap.get(topicName);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/ScheduleResult.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/ScheduleResult.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/ScheduleResult.java
index ea96d79..a46537d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/ScheduleResult.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/ScheduleResult.java
@@ -16,17 +16,14 @@
  */
 package org.apache.eagle.alert.coordinator.impl;
 
-import java.util.List;
-
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import java.util.List;
 
 /**
- * Schedule result for one policy
- * 
- * 
- * @since Apr 26, 2016
+ * Schedule result for one policy.
  *
+ * @since Apr 26, 2016
  */
 public class ScheduleResult {
     int code;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/WorkQueueBuilder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/WorkQueueBuilder.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/WorkQueueBuilder.java
index a32b8fb..f44f80e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/WorkQueueBuilder.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/WorkQueueBuilder.java
@@ -16,10 +16,6 @@
  */
 package org.apache.eagle.alert.coordinator.impl;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.WorkSlot;
 import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
 import org.apache.eagle.alert.coordination.model.internal.StreamWorkSlotQueue;
@@ -32,9 +28,12 @@ import org.apache.eagle.alert.coordinator.model.TopologyUsage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
- * @since Apr 27, 2016
- *
+ * @since Apr 27, 2016.
  */
 public class WorkQueueBuilder {
 
@@ -49,7 +48,7 @@ public class WorkQueueBuilder {
     }
 
     public StreamWorkSlotQueue createQueue(MonitoredStream stream, boolean isDedicated, int size,
-            Map<String, Object> properties) {
+                                           Map<String, Object> properties) {
         // FIXME: make extensible and configurable
         IWorkSlotStrategy strategy = new SameTopologySlotStrategy(context, stream.getStreamGroup(), mgmtService);
         List<WorkSlot> slots = strategy.reserveWorkSlots(size, isDedicated, properties);
@@ -58,7 +57,7 @@ public class WorkQueueBuilder {
             return null;
         }
         StreamWorkSlotQueue queue = new StreamWorkSlotQueue(stream.getStreamGroup(), isDedicated, properties,
-                slots);
+            slots);
         calculateGroupIndexAndCount(queue);
         assignQueueSlots(stream, queue);// build reverse reference
         stream.addQueues(queue);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/IWorkSlotStrategy.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/IWorkSlotStrategy.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/IWorkSlotStrategy.java
index 28df3c4..8528606 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/IWorkSlotStrategy.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/IWorkSlotStrategy.java
@@ -16,14 +16,12 @@
  */
 package org.apache.eagle.alert.coordinator.impl.strategies;
 
+import org.apache.eagle.alert.coordination.model.WorkSlot;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.eagle.alert.coordination.model.WorkSlot;
-
 /**
- * @since Apr 27, 2016
- *
+ * @since Apr 27, 2016.
  */
 public interface IWorkSlotStrategy {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/SameTopologySlotStrategy.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/SameTopologySlotStrategy.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/SameTopologySlotStrategy.java
index e755237..823a548 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/SameTopologySlotStrategy.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/impl/strategies/SameTopologySlotStrategy.java
@@ -17,13 +17,6 @@
 package org.apache.eagle.alert.coordinator.impl.strategies;
 
 import static org.apache.eagle.alert.coordinator.CoordinatorConstants.CONFIG_ITEM_TOPOLOGY_LOAD_UPBOUND;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.WorkSlot;
 import org.apache.eagle.alert.coordination.model.internal.StreamGroup;
 import org.apache.eagle.alert.coordination.model.internal.Topology;
@@ -33,22 +26,22 @@ import org.apache.eagle.alert.coordinator.TopologyMgmtService;
 import org.apache.eagle.alert.coordinator.TopologyMgmtService.TopologyMeta;
 import org.apache.eagle.alert.coordinator.model.AlertBoltUsage;
 import org.apache.eagle.alert.coordinator.model.TopologyUsage;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.*;
 
 /**
  * A simple strategy that only find the bolts in the same topology as the
  * required work slots.
- * 
- * Invariant:<br/>
+ *
+ * <p>Invariant:<br/>
  * One slot queue only on the one topology.<br/>
- * One topology doesn't contains two same partition slot queues.
- * 
- * @since Apr 27, 2016
+ * One topology doesn't contains two same partition slot queues.</p>
  *
+ * @since Apr 27, 2016
  */
 public class SameTopologySlotStrategy implements IWorkSlotStrategy {
 
@@ -58,28 +51,27 @@ public class SameTopologySlotStrategy implements IWorkSlotStrategy {
     private final StreamGroup partitionGroup;
     private final TopologyMgmtService mgmtService;
 
-//    private final int numOfPoliciesBoundPerBolt;
+    //    private final int numOfPoliciesBoundPerBolt;
     private final double topoLoadUpbound;
 
     public SameTopologySlotStrategy(IScheduleContext context, StreamGroup streamPartitionGroup,
-            TopologyMgmtService mgmtService) {
+                                    TopologyMgmtService mgmtService) {
         this.context = context;
         this.partitionGroup = streamPartitionGroup;
         this.mgmtService = mgmtService;
 
         Config config = ConfigFactory.load().getConfig(CoordinatorConstants.CONFIG_ITEM_COORDINATOR);
-//        numOfPoliciesBoundPerBolt = config.getInt(CoordinatorConstants.POLICIES_PER_BOLT);
+        // numOfPoliciesBoundPerBolt = config.getInt(CoordinatorConstants.POLICIES_PER_BOLT);
         topoLoadUpbound = config.getDouble(CONFIG_ITEM_TOPOLOGY_LOAD_UPBOUND);
     }
 
     /**
-     * @param isDedicated
-     *            - not used yet!
+     * @param isDedicated - not used yet!.
      */
     @Override
     public List<WorkSlot> reserveWorkSlots(int size, boolean isDedicated, Map<String, Object> properties) {
         Iterator<Topology> it = context.getTopologies().values().stream().filter((t) -> t.getNumOfAlertBolt() >= size)
-                .iterator();
+            .iterator();
         // priority strategy first???
         List<WorkSlot> slots = new ArrayList<WorkSlot>();
         while (it.hasNext()) {
@@ -139,15 +131,15 @@ public class SameTopologySlotStrategy implements IWorkSlotStrategy {
     }
 
     private boolean isTopologyAvailable(TopologyUsage u) {
-//        for (MonitoredStream stream : u.getMonitoredStream()) {
-//            if (partition.equals(stream.getStreamParitition())) {
-//                return false;
-//            }
-//        }
+        //        for (MonitoredStream stream : u.getMonitoredStream()) {
+        //            if (partition.equals(stream.getStreamParitition())) {
+        //                return false;
+        //            }
+        //        }
         if (u == null || u.getLoad() > topoLoadUpbound) {
             return false;
         }
-        
+
         return true;
     }
 
@@ -158,7 +150,7 @@ public class SameTopologySlotStrategy implements IWorkSlotStrategy {
         }
         // actually it's now 0;
         return true;
-//        return alertUsage.getPolicies().size() < numOfPoliciesBoundPerBolt;
+        //  return alertUsage.getPolicies().size() < numOfPoliciesBoundPerBolt;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/AlertBoltUsage.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/AlertBoltUsage.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/AlertBoltUsage.java
index e9148f5..36c0bce 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/AlertBoltUsage.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/AlertBoltUsage.java
@@ -16,16 +16,14 @@
  */
 package org.apache.eagle.alert.coordinator.model;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.eagle.alert.coordination.model.internal.StreamGroup;
 import org.apache.eagle.alert.coordination.model.internal.StreamWorkSlotQueue;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
- * @since Mar 28, 2016
- *
+ * @since Mar 28, 2016.
  */
 public class AlertBoltUsage {
 
@@ -56,9 +54,9 @@ public class AlertBoltUsage {
     public void addPolicies(PolicyDefinition pd) {
         policies.add(pd.getName());
         // add first partition
-//        for (StreamPartition par : pd.getPartitionSpec()) {
-//            partitions.add(par);
-//        }
+        //        for (StreamPartition par : pd.getPartitionSpec()) {
+        //            partitions.add(par);
+        //        }
     }
 
     public double getLoad() {
@@ -76,7 +74,7 @@ public class AlertBoltUsage {
     public List<StreamWorkSlotQueue> getReferQueues() {
         return referQueues;
     }
-    
+
     public int getQueueSize() {
         return referQueues.size();
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/GroupBoltUsage.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/GroupBoltUsage.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/GroupBoltUsage.java
index 86238d1..39788d5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/GroupBoltUsage.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/GroupBoltUsage.java
@@ -16,24 +16,22 @@
  */
 package org.apache.eagle.alert.coordinator.model;
 
-
 /**
- * @since Mar 28, 2016
- *
+ * @since Mar 28, 2016.
  */
 public class GroupBoltUsage {
 
     private String boltId;
     private double load;
-    
+
     public GroupBoltUsage(String boltId) {
         this.boltId = boltId;
     }
 
-//    private final Set<String> streams = new HashSet<String>();
-//    private final Map<String, StreamFilter> filters = new HashMap<String, StreamFilter>();
+    //    private final Set<String> streams = new HashSet<String>();
+    //    private final Map<String, StreamFilter> filters = new HashMap<String, StreamFilter>();
 
-//    private final Map<String, List<StreamPartition>> groupByMeta;
+    //    private final Map<String, List<StreamPartition>> groupByMeta;
 
     public double getLoad() {
         return load;
@@ -43,18 +41,18 @@ public class GroupBoltUsage {
         this.load = load;
     }
 
-//    public Set<String> getStreams() {
-//        return streams;
-//    }
-//
-//
-//    public Map<String, StreamFilter> getFilters() {
-//        return filters;
-//    }
+    //    public Set<String> getStreams() {
+    //        return streams;
+    //    }
+    //
+    //
+    //    public Map<String, StreamFilter> getFilters() {
+    //        return filters;
+    //    }
 
-//    public Map<String, List<StreamPartition>> getGroupByMeta() {
-//        return groupByMeta;
-//    }
+    //    public Map<String, List<StreamPartition>> getGroupByMeta() {
+    //        return groupByMeta;
+    //    }
 
     public String getBoltId() {
         return boltId;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/TopologyUsage.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/TopologyUsage.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/TopologyUsage.java
index 6eb6195..3cfc505 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/TopologyUsage.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/model/TopologyUsage.java
@@ -16,6 +16,7 @@
  */
 package org.apache.eagle.alert.coordinator.model;
 
+import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -23,11 +24,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
-
 /**
- * @since Mar 27, 2016
- *
+ * @since Mar 27, 2016.
  */
 public class TopologyUsage {
     // topo info
@@ -48,11 +46,11 @@ public class TopologyUsage {
 
     public TopologyUsage() {
     }
-    
+
     public TopologyUsage(String name) {
         this.topoName = name;
     }
-    
+
     public String getTopoName() {
         return topoName;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/InMemScheduleConext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/InMemScheduleConext.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/InMemScheduleConext.java
index dea9419..8f6cbc6 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/InMemScheduleConext.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-coordinator/src/main/java/org/apache/eagle/alert/coordinator/provider/InMemScheduleConext.java
@@ -16,9 +16,6 @@
  */
 package org.apache.eagle.alert.coordinator.provider;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
 import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
@@ -29,10 +26,11 @@ import org.apache.eagle.alert.coordinator.model.TopologyUsage;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.Publishment;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
- * @since Mar 28, 2016
- *
+ * @since Mar 28, 2016.
  */
 public class InMemScheduleConext implements IScheduleContext {
 
@@ -60,9 +58,9 @@ public class InMemScheduleConext implements IScheduleContext {
     }
 
     public InMemScheduleConext(Map<String, Topology> topologies2, Map<String, PolicyAssignment> assignments,
-            Map<String, Kafka2TupleMetadata> kafkaSources, Map<String, PolicyDefinition> policies2,
-            Map<String, Publishment> publishments2, Map<String, StreamDefinition> streamDefinitions,
-            Map<StreamGroup, MonitoredStream> monitoredStreamMap, Map<String, TopologyUsage> usages2) {
+                               Map<String, Kafka2TupleMetadata> kafkaSources, Map<String, PolicyDefinition> policies2,
+                               Map<String, Publishment> publishments2, Map<String, StreamDefinition> streamDefinitions,
+                               Map<StreamGroup, MonitoredStream> monitoredStreamMap, Map<String, TopologyUsage> usages2) {
         this.topologies = topologies2;
         this.policyAssignments = assignments;
         this.datasources = kafkaSources;


[18/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
[EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

https://issues.apache.org/jira/browse/EAGLE-530

Author: Hao Chen <ha...@apache.org>

Closes #424 from haoch/EAGLE-530.


Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/a0fc8708
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/a0fc8708
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/a0fc8708

Branch: refs/heads/master
Commit: a0fc870849a5fa5d54c0980b21226977eef81920
Parents: 2958bc8
Author: Hao Chen <ha...@apache.org>
Authored: Thu Sep 8 15:13:33 2016 +0800
Committer: Hao Chen <ha...@apache.org>
Committed: Thu Sep 8 15:13:33 2016 +0800

----------------------------------------------------------------------
 .../eagle/alert/app/AlertUnitTopologyApp.java   |  10 +-
 .../alert/resolver/AttributeResolvable.java     |   8 +-
 .../resolver/AttributeResolveException.java     |  16 +-
 .../resolver/AttributeResolveResource.java      |  40 +-
 .../resolver/AttributeResolverFactory.java      |  22 +-
 .../BadAttributeResolveRequestException.java    |   6 +-
 .../GenericAttributeResolveRequest.java         |  10 +-
 .../resolver/impl/BooleanAttributeResolver.java |   4 +-
 .../resolver/impl/EntityAttributeResolver.java  |  63 +-
 .../eagle-alert/alert-common/pom.xml            |   4 +-
 .../eagle/alert/config/ConfigBusBase.java       |  23 +-
 .../eagle/alert/config/ConfigBusConsumer.java   |   8 +-
 .../eagle/alert/config/ConfigBusProducer.java   |  19 +-
 .../apache/eagle/alert/config/ConfigValue.java  |   4 +-
 .../org/apache/eagle/alert/config/ZKConfig.java |   4 +-
 .../eagle/alert/config/ZKConfigBuilder.java     |   2 +-
 .../alert/coordination/model/AlertBoltSpec.java |  35 +-
 .../coordination/model/Kafka2TupleMetadata.java |   9 +-
 .../coordination/model/PolicyWorkerQueue.java   |  29 +-
 .../alert/coordination/model/PublishSpec.java   |   8 +-
 .../alert/coordination/model/RouterSpec.java    |   4 -
 .../alert/coordination/model/ScheduleState.java |  34 +-
 .../alert/coordination/model/SpoutSpec.java     |  34 +-
 .../coordination/model/StreamNameSelector.java  |   6 +-
 .../model/StreamRepartitionMetadata.java        |  10 +-
 .../model/StreamRepartitionStrategy.java        |  14 +-
 .../coordination/model/StreamRouterSpec.java    |  19 +-
 .../model/Tuple2StreamConverter.java            |  52 +-
 .../model/Tuple2StreamMetadata.java             |  20 +-
 .../model/VersionedPolicyDefinition.java        |   4 -
 .../model/VersionedStreamDefinition.java        |   4 -
 .../alert/coordination/model/WorkSlot.java      |   4 +-
 .../model/internal/MonitoredStream.java         |  17 +-
 .../model/internal/PolicyAssignment.java        |   5 +-
 .../model/internal/ScheduleStateBase.java       |   7 +-
 .../model/internal/StreamGroup.java             |  15 +-
 .../model/internal/StreamWorkSlotQueue.java     |  32 +-
 .../coordination/model/internal/Topology.java   |  10 +-
 .../alert/engine/codec/IEventSerializer.java    |   3 +-
 .../engine/coordinator/PolicyDefinition.java    |  92 +--
 .../alert/engine/coordinator/Publishment.java   |  11 +-
 .../engine/coordinator/PublishmentType.java     |  32 +-
 .../alert/engine/coordinator/StreamColumn.java  |  32 +-
 .../engine/coordinator/StreamDefinition.java    |  34 +-
 .../engine/coordinator/StreamPartition.java     |  56 +-
 .../engine/coordinator/StreamSortSpec.java      |  49 +-
 .../engine/coordinator/StreamingCluster.java    |   8 +-
 .../alert/engine/model/AlertStreamEvent.java    |  14 +-
 .../alert/engine/model/PartitionedEvent.java    |  64 +-
 .../eagle/alert/engine/model/StreamEvent.java   |  55 +-
 .../alert/engine/model/StreamEventBuilder.java  |  39 +-
 .../eagle/alert/metric/IMetricSystem.java       |  39 +-
 .../apache/eagle/alert/metric/MetricSystem.java |  56 +-
 .../eagle/alert/metric/entity/MetricEvent.java  |  63 +-
 .../alert/metric/reporter/KafkaReporter.java    | 361 ++++++-----
 .../eagle/alert/metric/sink/ConsoleSink.java    |  21 +-
 .../alert/metric/sink/ElasticSearchSink.java    |  23 +-
 .../apache/eagle/alert/metric/sink/JmxSink.java |   5 +-
 .../eagle/alert/metric/sink/KafkaSink.java      |  36 +-
 .../eagle/alert/metric/sink/MetricSink.java     |   9 +-
 .../alert/metric/sink/MetricSinkRepository.java |  32 +-
 .../eagle/alert/metric/sink/Slf4jSink.java      |  52 +-
 .../alert/metric/source/JVMMetricSource.java    |  18 +-
 .../eagle/alert/metric/source/MetricSource.java |  11 +-
 .../metric/source/MetricSourceWrapper.java      |  12 +-
 .../eagle/alert/resource/SimpleCORSFiler.java   |   7 +-
 .../alert/service/IMetadataServiceClient.java   |  29 +-
 .../service/MetadataServiceClientImpl.java      |  33 +-
 .../eagle/alert/utils/AlertConstants.java       |  18 +-
 .../org/apache/eagle/alert/utils/ByteUtils.java | 304 ++++-----
 .../apache/eagle/alert/utils/ConfigUtils.java   |  23 +-
 .../apache/eagle/alert/utils/DateTimeUtil.java  | 199 +++---
 .../org/apache/eagle/alert/utils/HostUtils.java |   2 +-
 .../apache/eagle/alert/utils/KafkaEmbedded.java |  10 +-
 .../eagle/alert/utils/StreamIdConversion.java   |  25 +-
 .../eagle/alert/utils/TimePeriodUtils.java      |  27 +-
 .../eagle/alert/utils/ZookeeperEmbedded.java    |   9 +-
 .../src/main/resources/log4j.properties         |   2 -
 .../eagle/alert/config/TestConfigBus.java       |  18 +-
 .../eagle/alert/metric/MetricSystemTest.java    |  63 +-
 .../service/TestMetadataServiceClientImpl.java  |   6 +-
 .../src/test/resources/application.conf         |  24 +-
 .../src/test/resources/log4j.properties         |   2 -
 .../src/test/resources/streamDef.json           |  83 +--
 .../eagle-alert/alert-coordinator/pom.xml       |  12 +-
 .../eagle/alert/coordinator/Coordinator.java    | 258 ++++----
 .../alert/coordinator/CoordinatorConstants.java |   4 -
 .../alert/coordinator/CoordinatorListener.java  |  18 +-
 .../alert/coordinator/ExclusiveExecutor.java    | 126 ++--
 .../alert/coordinator/IPolicyScheduler.java     |   3 +-
 .../alert/coordinator/IScheduleContext.java     |   9 +-
 .../LockWebApplicationException.java            |  14 +-
 .../coordinator/PolicySchedulerFactory.java     |   3 +-
 .../eagle/alert/coordinator/ScheduleOption.java |   6 +-
 .../alert/coordinator/TopologyMgmtService.java  |  16 +-
 .../coordinator/impl/GreedyPolicyScheduler.java | 105 ++--
 .../impl/MonitorMetadataGenerator.java          |  63 +-
 .../alert/coordinator/impl/ScheduleResult.java  |   9 +-
 .../coordinator/impl/WorkQueueBuilder.java      |  15 +-
 .../impl/strategies/IWorkSlotStrategy.java      |   6 +-
 .../strategies/SameTopologySlotStrategy.java    |  46 +-
 .../alert/coordinator/model/AlertBoltUsage.java |  16 +-
 .../alert/coordinator/model/GroupBoltUsage.java |  34 +-
 .../alert/coordinator/model/TopologyUsage.java  |  10 +-
 .../provider/InMemScheduleConext.java           |  14 +-
 .../provider/NodataMetadataGenerator.java       | 617 +++++++++----------
 .../provider/ScheduleContextBuilder.java        |  82 ++-
 .../resource/CoordinatorResource.java           |  20 +-
 .../coordinator/trigger/CoordinatorTrigger.java |  19 +-
 .../trigger/DynamicPolicyLoader.java            |  29 +-
 .../trigger/PolicyChangeListener.java           |   3 +-
 .../alert/coordinator/CoordinatorTest.java      |   7 +-
 .../coordinator/DynamicPolicyLoaderTest.java    |   2 +-
 .../MetadataServiceClientImplTest.java          |   1 -
 .../NodataMetadataGeneratorTest.java            | 126 ++--
 .../coordinator/ScheduleContextBuilderTest.java |  59 +-
 .../apache/alert/coordinator/SchedulerTest.java |   6 +-
 .../coordinator/TestExclusiveExecutor.java      | 112 ++--
 .../TestGreedyScheduleCoordinator.java          | 208 ++++---
 .../alert/coordinator/WorkSlotStrategyTest.java |   6 +-
 .../mock/InMemMetadataServiceClient.java        |   5 +-
 .../mock/TestTopologyMgmtService.java           |   2 +-
 .../src/test/resources/application.conf         |  68 +-
 .../src/test/resources/log4j.properties         |   2 -
 .../src/test/resources/multi/datasources.json   |  34 +-
 .../src/test/resources/multi/publishments.json  |  52 +-
 .../test/resources/multi/streamdefinitions.json | 286 +++++----
 .../src/test/resources/multi/topologies.json    |  58 +-
 .../src/test/resources/test-application.conf    |  68 +-
 .../alert-devtools/conf/kafka-server.properties |  28 -
 .../alert/tools/KafkaConsumerOffsetFetcher.java |   7 +-
 .../alert/tools/KafkaLatestOffsetFetcher.java   |  22 +-
 .../eagle/contrib/kafka/ProducerTool.scala      |   4 +-
 .../eagle/alert/tools/TestKafkaOffset.java      |   8 +-
 .../kafka-offset-test.application.conf          |  16 +-
 .../src/test/resources/log4j.properties         |   2 -
 .../eagle-alert/alert-engine/pom.xml            |  13 +-
 .../alert/engine/AlertStreamCollector.java      |   3 +-
 .../apache/eagle/alert/engine/Collector.java    |   2 +-
 .../alert/engine/PartitionedEventCollector.java |   4 +-
 .../eagle/alert/engine/StreamContext.java       |   1 -
 .../eagle/alert/engine/StreamContextImpl.java   |   3 +-
 .../eagle/alert/engine/UnitTopologyMain.java    |  26 +-
 .../IMetadataChangeNotifyService.java           |  18 +-
 .../StreamDefinitionNotFoundException.java      |  10 +-
 .../AbstractMetadataChangeNotifyService.java    |  29 +-
 .../impl/ZKMetadataChangeNotifyService.java     | 122 ++--
 .../evaluator/CompositePolicyHandler.java       |   5 +-
 .../engine/evaluator/PolicyChangeListener.java  |  18 +-
 .../engine/evaluator/PolicyGroupEvaluator.java  |   8 +-
 .../engine/evaluator/PolicyHandlerContext.java  |  15 +-
 .../engine/evaluator/PolicyStreamHandler.java   |  16 +-
 .../engine/evaluator/PolicyStreamHandlers.java  |   8 +-
 .../evaluator/absence/AbsenceAlertDriver.java   |  11 +-
 .../evaluator/absence/AbsenceDailyRule.java     |   2 +-
 .../evaluator/absence/AbsencePolicyHandler.java |  60 +-
 .../engine/evaluator/absence/AbsenceWindow.java |   2 +-
 .../absence/AbsenceWindowGenerator.java         |  18 +-
 .../absence/AbsenceWindowProcessor.java         |  41 +-
 ...ertBoltOutputCollectorThreadSafeWrapper.java |  33 +-
 .../impl/AlertBoltOutputCollectorWrapper.java   |   7 +-
 .../evaluator/impl/AlertStreamCallback.java     |  15 +-
 .../impl/PolicyGroupEvaluatorImpl.java          |  57 +-
 .../evaluator/impl/SiddhiDefinitionAdapter.java | 133 ++--
 .../evaluator/impl/SiddhiPolicyHandler.java     |  52 +-
 .../impl/SiddhiPolicyStateHandler.java          |   8 +-
 .../nodata/DistinctValuesInTimeBatchWindow.java | 196 +++---
 .../nodata/DistinctValuesInTimeWindow.java      |  65 +-
 .../evaluator/nodata/NoDataPolicyHandler.java   | 113 ++--
 .../nodata/NoDataPolicyTimeBatchHandler.java    | 252 ++++----
 .../evaluator/nodata/NoDataWisbParser.java      |   3 +-
 .../nodata/NoDataWisbProvidedParser.java        |  12 +-
 .../engine/publisher/AlertDeduplicator.java     |   4 +-
 .../engine/publisher/AlertPublishListener.java  |  14 +-
 .../engine/publisher/AlertPublishPlugin.java    |  10 +-
 .../publisher/AlertPublishSpecListener.java     |  16 +-
 .../alert/engine/publisher/AlertPublisher.java  |  23 +-
 .../eagle/alert/engine/publisher/AlertSink.java |  18 +-
 .../publisher/email/AlertEmailContext.java      |  12 +-
 .../publisher/email/AlertEmailGenerator.java    |  28 +-
 .../email/AlertEmailGeneratorBuilder.java       |  22 +-
 .../publisher/email/AlertEmailSender.java       |  49 +-
 .../engine/publisher/email/EagleMailClient.java | 399 ++++++------
 .../publisher/impl/AbstractPublishPlugin.java   |  11 +-
 .../publisher/impl/AlertEmailPublisher.java     |  48 +-
 .../publisher/impl/AlertKafkaPublisher.java     |  19 +-
 .../impl/AlertPublishPluginsFactory.java        |   7 +-
 .../publisher/impl/AlertPublisherImpl.java      |  54 +-
 .../publisher/impl/DefaultDeduplicator.java     | 229 ++++---
 .../alert/engine/publisher/impl/EventUniq.java  |  80 +--
 .../publisher/impl/JsonEventSerializer.java     |   3 +-
 .../publisher/impl/KafkaProducerManager.java    |  16 +-
 .../engine/publisher/impl/PublishStatus.java    |   6 +-
 .../publisher/impl/StringEventSerializer.java   |   9 +-
 .../engine/router/AlertBoltSpecListener.java    |   4 +-
 .../alert/engine/router/SpoutSpecListener.java  |   4 +-
 .../eagle/alert/engine/router/StreamRoute.java  |  45 +-
 .../router/StreamRoutePartitionFactory.java     |   6 +-
 .../engine/router/StreamRoutePartitioner.java   |  10 +-
 .../engine/router/StreamRouteSpecListener.java  |  18 +-
 .../eagle/alert/engine/router/StreamRouter.java |  21 +-
 .../router/StreamRouterBoltSpecListener.java    |   8 +-
 .../alert/engine/router/StreamSortHandler.java  |  12 +-
 .../engine/router/StreamSortSpecListener.java   |  16 +-
 .../impl/BasicStreamRoutePartitioner.java       |  22 +-
 .../router/impl/RoutePhysicalGrouping.java      |  37 +-
 .../engine/router/impl/ShuffleGrouping.java     |  21 +-
 .../impl/StreamRouterBoltOutputCollector.java   |  78 ++-
 .../engine/router/impl/StreamRouterImpl.java    |  44 +-
 .../alert/engine/runner/AbstractStreamBolt.java |  43 +-
 .../eagle/alert/engine/runner/AlertBolt.java    |  72 +--
 .../alert/engine/runner/AlertPublisherBolt.java |  31 +-
 .../alert/engine/runner/MapComparator.java      |  21 +-
 .../engine/runner/StormMetricConsumer.java      |  69 +--
 .../runner/StormMetricTaggedConsumer.java       |  67 +-
 .../alert/engine/runner/StreamRouterBolt.java   |  46 +-
 .../alert/engine/runner/UnitTopologyRunner.java | 126 ++--
 .../eagle/alert/engine/scheme/JsonScheme.java   |  23 +-
 .../scheme/JsonStringStreamNameSelector.java    |  19 +-
 .../alert/engine/scheme/PlainStringScheme.java  |  19 +-
 .../scheme/PlainStringStreamNameSelector.java   |  14 +-
 .../PartitionedEventDigestSerializer.java       |  16 +-
 .../PartitionedEventSerializer.java             |  17 +-
 .../SerializationMetadataProvider.java          |   6 +-
 .../alert/engine/serialization/Serializer.java  |   3 +-
 .../alert/engine/serialization/Serializers.java |  47 +-
 .../serialization/impl/BooleanSerializer.java   |   4 +-
 .../serialization/impl/DoubleSerializer.java    |   4 +-
 .../serialization/impl/FloatSerializer.java     |   4 +-
 .../serialization/impl/IntegerSerializer.java   |   4 +-
 .../impl/JavaObjectSerializer.java              |   6 +-
 .../serialization/impl/LongSerializer.java      |   4 +-
 .../impl/PartitionedEventSerializerImpl.java    |  39 +-
 .../impl/StreamEventSerializer.java             |  53 +-
 .../impl/StreamPartitionDigestSerializer.java   |  38 +-
 .../impl/StreamPartitionSerializer.java         |  26 +-
 .../serialization/impl/StringSerializer.java    |   4 +-
 .../extension/AttributeCollectAggregator.java   |   8 +-
 .../AttributeCollectWithDistinctAggregator.java |  27 +-
 .../extension/ContainsIgnoreCaseExtension.java  |  18 +-
 .../extension/EqualsIgnoreCaseExtension.java    |  22 +-
 .../RegexpIgnoreCaseFunctionExtension.java      |  16 +-
 .../alert/engine/sorter/BaseStreamWindow.java   |  88 +--
 .../alert/engine/sorter/StreamTimeClock.java    |  13 +-
 .../engine/sorter/StreamTimeClockListener.java  |   3 +-
 .../engine/sorter/StreamTimeClockManager.java   |  15 +-
 .../engine/sorter/StreamTimeClockTrigger.java   |  19 +-
 .../eagle/alert/engine/sorter/StreamWindow.java |  54 +-
 .../engine/sorter/StreamWindowManager.java      |  23 +-
 .../engine/sorter/StreamWindowRepository.java   | 171 +++--
 .../sorter/impl/CachedEventGroupSerializer.java |  31 +-
 .../impl/PartitionedEventGroupSerializer.java   |  45 +-
 .../PartitionedEventTimeOrderingComparator.java |  18 +-
 .../impl/StreamSortWindowHandlerImpl.java       |  32 +-
 .../sorter/impl/StreamSortedWindowInMapDB.java  |  86 ++-
 .../sorter/impl/StreamSortedWindowOnHeap.java   |  30 +-
 .../impl/StreamTimeClockInLocalMemory.java      |  22 +-
 .../sorter/impl/StreamTimeClockManagerImpl.java |  73 ++-
 .../sorter/impl/StreamWindowManagerImpl.java    |  47 +-
 .../alert/engine/spout/CorrelationSpout.java    |  98 ++-
 .../alert/engine/spout/CreateTopicUtils.java    |  18 +-
 .../eagle/alert/engine/spout/ISpoutSpecLCM.java |   9 +-
 .../engine/spout/KafkaMessageIdWrapper.java     |   8 +-
 .../eagle/alert/engine/spout/SchemeBuilder.java |  10 +-
 .../spout/SpoutOutputCollectorWrapper.java      |  72 +--
 .../alert/engine/utils/CompressionUtils.java    |   6 +-
 .../alert/engine/utils/MetadataSerDeser.java    |  43 +-
 .../alert/engine/utils/SerializableUtils.java   |  25 +-
 .../main/java/storm/kafka/KafkaSpoutMetric.java |  23 +-
 .../java/storm/kafka/KafkaSpoutWrapper.java     |  26 +-
 .../src/main/resources/ALERT_DEFAULT.vm         | 488 ++++++++-------
 .../src/main/resources/application.conf         |  32 +-
 .../src/main/resources/log4j.properties         |   3 -
 .../alert/engine/absence/TestAbsenceDriver.java |  34 +-
 .../absence/TestAbsencePolicyHandler.java       |  14 +-
 .../absence/TestAbsenceWindowGenerator.java     |  16 +-
 .../absence/TestAbsenceWindowProcessor.java     |   4 +-
 .../alert/engine/e2e/CoordinatorClient.java     |  16 +-
 .../eagle/alert/engine/e2e/Integration1.java    |  17 +-
 .../eagle/alert/engine/e2e/Integration2.java    |  55 +-
 .../eagle/alert/engine/e2e/Integration3.java    |  17 +-
 .../engine/e2e/Integration4NoDataAlert.java     |  20 +-
 .../engine/e2e/Integration5AbsenceAlert.java    |   8 +-
 .../e2e/MetadataServiceClientImpTest.java       |  10 +-
 .../eagle/alert/engine/e2e/SampleClient1.java   |  17 +-
 .../eagle/alert/engine/e2e/SampleClient2.java   |  19 +-
 .../eagle/alert/engine/e2e/SampleClient3.java   |  17 +-
 .../engine/e2e/SampleClient4NoDataAlert.java    |  41 +-
 .../engine/e2e/SampleClient5AbsenceAlert.java   |  14 +-
 ...oltOutputCollectorThreadSafeWrapperTest.java |  49 +-
 .../engine/evaluator/PoilcyExtendedTest.java    |   2 +-
 .../SiddhiCEPPolicyEventHandlerTest.java        | 136 ++--
 .../integration/MockMetadataServiceClient.java  |  24 +-
 .../engine/metric/MemoryUsageGaugeSetTest.java  |  17 +-
 .../engine/mock/MockPartitionedCollector.java   |  15 +-
 .../engine/mock/MockSampleMetadataFactory.java  | 160 +++--
 .../alert/engine/mock/MockStreamCollector.java  |  15 +-
 .../engine/mock/MockStreamMetadataService.java  |  18 +-
 .../alert/engine/mock/MockStreamReceiver.java   |  41 +-
 .../TestDistinctValuesInTimeBatchWindow.java    |  86 ++-
 .../nodata/TestDistinctValuesInTimeWindow.java  |  20 +-
 .../alert/engine/nodata/TestEventTable.java     |  16 +-
 .../alert/engine/nodata/TestNoDataAlert.java    |  46 +-
 .../engine/nodata/TestNoDataPolicyHandler.java  |  27 +-
 .../TestNoDataPolicyTimeBatchHandler.java       | 228 +++----
 .../alert/engine/perf/TestSerDeserPer.java      |  48 +-
 .../alert/engine/router/TestAlertBolt.java      | 102 +--
 .../engine/router/TestAlertPublisherBolt.java   |   8 +-
 .../engine/runner/TestStreamRouterBolt.java     | 120 ++--
 .../serialization/JavaSerializationTest.java    |  54 +-
 .../PartitionedEventSerializerTest.java         | 132 ++--
 .../alert/engine/siddhi/SiddhiPolicyTest.java   | 105 ++--
 .../AttributeCollectAggregatorTest.java         |  37 +-
 .../alert/engine/sorter/MapDBTestSuite.java     |  20 +-
 .../engine/sorter/StreamSortHandlerTest.java    | 100 ++-
 .../sorter/StreamWindowBenchmarkTest.java       | 104 ++--
 .../engine/sorter/StreamWindowTestSuite.java    |  93 ++-
 .../sorter/TreeMultisetComparatorTest.java      |  37 +-
 .../engine/statecheck/TestStateCheckPolicy.java |  11 +-
 .../engine/topology/AlertTopologyTest.java      |  52 +-
 .../CoordinatorSpoutIntegrationTest.java        |  33 +-
 .../engine/topology/CorrelationSpoutTest.java   |  65 +-
 .../engine/topology/FastWordCountTopology.java  |  56 +-
 .../MockMetadataChangeNotifyService.java        |  28 +-
 .../engine/topology/SendData2KafkaTest.java     |  20 +-
 .../eagle/alert/engine/topology/TestBolt.java   |  16 +-
 .../alert/engine/topology/TestByteBuffer.java   |  10 +-
 .../topology/TestMetadataSpecSerDeser.java      |  61 +-
 .../TestStormCustomGroupingRouting.java         |  76 +--
 .../engine/topology/TestStormParallelism.java   |  57 +-
 .../topology/TestStormStreamIdRouting.java      |  41 +-
 .../topology/TestTuple2StreamConverter.java     |  14 +-
 .../engine/topology/TestUnitTopologyMain.java   |  19 +-
 .../engine/utils/CompressionUtilsTest.java      |  12 +-
 .../alert/engine/utils/TimePeriodUtilsTest.java |  26 +-
 .../resources/absence/application-absence.conf  |  48 +-
 .../src/test/resources/absence/datasources.json |  30 +-
 .../src/test/resources/absence/policies.json    |  46 +-
 .../test/resources/absence/publishments.json    |  36 +-
 .../resources/absence/streamdefinitions.json    |  54 +-
 .../src/test/resources/absence/topologies.json  |  58 +-
 .../test/resources/application-test-backup.conf |  58 +-
 .../src/test/resources/application-test.conf    |  54 +-
 .../correlation/application-integration-2.conf  |  48 +-
 .../test/resources/correlation/datasources.json |  69 +--
 .../test/resources/correlation/policies.json    |  74 +--
 .../resources/correlation/publishments.json     |  32 +-
 .../correlation/streamdefinitions.json          | 181 +++---
 .../test/resources/correlation/topologies.json  |  58 +-
 .../test/resources/correlation_spouttest.conf   |  42 +-
 .../src/test/resources/e2e/application-e2e.conf |  48 +-
 .../src/test/resources/e2e/datasources.json     |  36 +-
 .../src/test/resources/e2e/policies.json        |  50 +-
 .../src/test/resources/e2e/publishments.json    |  30 +-
 .../src/test/resources/e2e/sherlock.json        |   3 +-
 .../test/resources/e2e/streamdefinitions.json   | 155 ++---
 .../src/test/resources/e2e/topologies.json      |  58 +-
 .../src/test/resources/e2e/ump_demo_schema.json | 321 +++++-----
 .../src/test/resources/log4j.properties         |   3 -
 .../test/resources/loopback/publishments.json   |  27 +-
 .../resources/loopback/streamdefinitions.json   | 140 ++---
 .../resources/nodata/application-nodata.conf    |  48 +-
 .../src/test/resources/nodata/datasources.json  |  30 +-
 .../nodata/policies-provided-wisb.json          |  42 +-
 .../src/test/resources/nodata/policies.json     |  46 +-
 .../src/test/resources/nodata/publishments.json |  36 +-
 .../resources/nodata/streamdefinitions.json     |  54 +-
 .../src/test/resources/nodata/topologies.json   |  58 +-
 .../router/publishments-empty-dedup-field.json  |  17 +-
 .../src/test/resources/router/publishments.json |  43 +-
 .../src/test/resources/sample_perfmon_data.json |   9 +-
 .../simple/application-integration.conf         |  60 +-
 .../src/test/resources/simple/datasources.json  |  34 +-
 .../src/test/resources/simple/policies.json     | 158 ++---
 .../src/test/resources/simple/publishments.json |  59 +-
 .../resources/simple/streamdefinitions.json     |  87 +--
 .../src/test/resources/simple/topologies.json   |  78 +--
 .../statecheck/application-statecheck.conf      |  48 +-
 .../test/resources/statecheck/datasources.json  |  34 +-
 .../test/resources/statecheck/topologies.json   |  58 +-
 .../src/test/resources/testPublishForAdd0.json  |  20 +-
 .../src/test/resources/testPublishForAdd1.json  |  32 +-
 .../test/resources/testPublishForMdyValue.json  |  21 +-
 .../src/test/resources/testPublishSpec.json     |  28 +-
 .../src/test/resources/testPublishSpec2.json    |  26 +-
 .../alert-metadata-service/pom.xml              |  12 +-
 .../metadata/resource/MetadataResource.java     |  65 +-
 .../topology/resource/TopologyMgmtResource.java |   6 +-
 .../impl/TopologyMgmtResourceHelper.java        |   8 +-
 .../resource/impl/TopologyMgmtResourceImpl.java |  67 +-
 .../src/test/resources/application.conf         |   6 +-
 .../eagle/alert/metadata/IMetadataDao.java      |   8 +-
 .../eagle/alert/metadata/MetadataUtils.java     |   8 +-
 .../metadata/impl/InMemMetadataDaoImpl.java     |  34 +-
 .../metadata/impl/JdbcDatabaseHandler.java      |  32 +-
 .../metadata/impl/JdbcMetadataDaoImpl.java      |  44 +-
 .../alert/metadata/impl/JdbcSchemaManager.java  |  35 +-
 .../alert/metadata/impl/MetadataDaoFactory.java |  10 +-
 .../metadata/impl/MongoMetadataDaoImpl.java     | 126 ++--
 .../eagle/alert/metadata/resource/Models.java   |  13 +-
 .../eagle/alert/metadata/resource/OpResult.java |   3 +-
 .../alert/resource/impl/InMemoryTest.java       |  12 +-
 .../alert/resource/impl/JdbcImplTest.java       |  23 +-
 .../alert/resource/impl/MongoImplTest.java      |  15 +-
 .../src/test/resources/application-mongo.conf   |   8 +-
 .../src/test/resources/application.conf         |  12 +-
 .../eagle-alert/alert-metadata-parent/pom.xml   |  28 +-
 .../eagle-alert/alert-service/pom.xml           | 364 +++++------
 .../app/AlertDropWizardConfiguration.java       |   3 +-
 .../apache/eagle/service/app/ServiceApp.java    |  24 +-
 .../src/main/resources/application.conf         |  74 +--
 .../src/main/resources/log4j.properties         |   2 -
 .../src/main/webapp/WEB-INF/web.xml             |  49 +-
 .../eagle/service/app/TestServiceAppWithZk.java | 162 +++--
 eagle-core/eagle-alert-parent/pom.xml           |  18 +-
 415 files changed, 8790 insertions(+), 8965 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java b/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
index a80c3b8..63e92ff 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
@@ -15,12 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.eagle.alert.app;import backtype.storm.generated.StormTopology;
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+package org.apache.eagle.alert.app;
+
 import org.apache.eagle.alert.engine.UnitTopologyMain;
 import org.apache.eagle.app.StormApplication;
 import org.apache.eagle.app.environment.impl.StormEnvironment;
+import backtype.storm.generated.StormTopology;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 
 /**
  * since 8/25/16.
@@ -31,7 +33,7 @@ public class AlertUnitTopologyApp extends StormApplication {
         return UnitTopologyMain.createTopology(config);
     }
 
-    public static void main(String[] args){
+    public static void main(String[] args) {
         Config config = ConfigFactory.load();
         AlertUnitTopologyApp app = new AlertUnitTopologyApp();
         app.run(config);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolvable.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolvable.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolvable.java
index ecfd47f..86b78c1 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolvable.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolvable.java
@@ -21,24 +21,24 @@ import java.util.List;
 /**
  * @param <R>
  * @param <V>
- * @since 6/16/15
+ * @since 6/16/15.
  */
 public interface AttributeResolvable<R extends GenericAttributeResolveRequest, V> {
     /**
-     * @param request request type
+     * @param request request type.
      * @return List&lt;V&gt;
      * @throws AttributeResolveException
      */
     List<V> resolve(R request) throws AttributeResolveException;
 
     /**
-     * validate request
+     * validate request.
      * @throws BadAttributeResolveRequestException
      */
     void validateRequest(R request) throws BadAttributeResolveRequestException;
 
     /**
-     * @return Class&lt;R&gt;
+     * @return Class&lt;R&gt;.
      */
     Class<R> getRequestClass();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveException.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveException.java
index 56cd942..4c4f1dd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveException.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveException.java
@@ -17,10 +17,18 @@
 package org.apache.eagle.service.alert.resolver;
 
 /**
- * @since 6/16/15
+ * @since 6/16/15.
  */
 public class AttributeResolveException extends Exception {
-    public AttributeResolveException(String s, Exception e) { super(s,e); }
-    public AttributeResolveException(Exception e) { super(e); }
-    public AttributeResolveException(String s) { super(s); }
+    public AttributeResolveException(String s, Exception e) {
+        super(s, e);
+    }
+
+    public AttributeResolveException(Exception e) {
+        super(e);
+    }
+
+    public AttributeResolveException(String s) {
+        super(s);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveResource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveResource.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveResource.java
index 20207ab..9375b6a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveResource.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolveResource.java
@@ -16,18 +16,18 @@
  */
 package org.apache.eagle.service.alert.resolver;
 
-import com.google.inject.Inject;
-import com.typesafe.config.Config;
 import org.apache.eagle.log.entity.GenericServiceAPIResponseEntity;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.eagle.metadata.service.ApplicationEntityService;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.inject.Inject;
+import com.typesafe.config.Config;
 
-import javax.ws.rs.*;
 import java.io.InputStream;
 import java.util.List;
+import javax.ws.rs.*;
 
 /**
- * @since 6/17/15
+ * @since 6/17/15.
  */
 @Path("/stream")
 public class AttributeResolveResource {
@@ -35,24 +35,28 @@ public class AttributeResolveResource {
     private Config eagleServerConfig;
 
     @Inject
-    public AttributeResolveResource(ApplicationEntityService entityService, Config eagleServerConfig){
+    public AttributeResolveResource(ApplicationEntityService entityService, Config eagleServerConfig) {
         this.entityService = entityService;
         this.eagleServerConfig = eagleServerConfig;
     }
 
     @POST
     @Path("attributeresolve")
-    @Consumes({"application/json"})
-    @Produces({"application/json"})
+    @Consumes( {"application/json"})
+    @Produces( {"application/json"})
     public GenericServiceAPIResponseEntity attributeResolve(InputStream request,
-                                                            @QueryParam("resolver") String resolver){
+                                                            @QueryParam("resolver") String resolver) {
         GenericServiceAPIResponseEntity response = new GenericServiceAPIResponseEntity();
         try {
-            if(resolver == null) throw new AttributeResolveException("resolver is null");
+            if (resolver == null) {
+                throw new AttributeResolveException("resolver is null");
+            }
             AttributeResolvable resolvable = AttributeResolverFactory.getAttributeResolver(resolver, entityService, eagleServerConfig);
             ObjectMapper objectMapper = new ObjectMapper();
             Class<?> resolveRequestClass = resolvable.getRequestClass();
-            if(resolveRequestClass == null) throw new AttributeResolveException("Request class is null for resolver "+resolver);
+            if (resolveRequestClass == null) {
+                throw new AttributeResolveException("Request class is null for resolver " + resolver);
+            }
             GenericAttributeResolveRequest resolveRequest = (GenericAttributeResolveRequest) objectMapper.readValue(request, resolvable.getRequestClass());
             resolvable.validateRequest(resolveRequest);
             List result = resolvable.resolve(resolveRequest);
@@ -68,16 +72,20 @@ public class AttributeResolveResource {
 
     @GET
     @Path("attributeresolve")
-    @Produces({"application/json"})
+    @Produces( {"application/json"})
     public GenericServiceAPIResponseEntity attributeResolver(
-            @QueryParam("resolver") String resolver, @QueryParam("site") String site, @QueryParam("query") String query){
+        @QueryParam("resolver") String resolver, @QueryParam("site") String site, @QueryParam("query") String query) {
         GenericServiceAPIResponseEntity response = new GenericServiceAPIResponseEntity();
         try {
-            if(resolver == null) throw new AttributeResolveException("resolver is null");
+            if (resolver == null) {
+                throw new AttributeResolveException("resolver is null");
+            }
             AttributeResolvable resolvable = AttributeResolverFactory.getAttributeResolver(resolver, entityService, eagleServerConfig);
             Class<?> resolveRequestClass = resolvable.getRequestClass();
-            if(resolveRequestClass == null) throw new AttributeResolveException("Request class is null for resolver "+resolver);
-            GenericAttributeResolveRequest resolveRequest = new GenericAttributeResolveRequest(query,site);
+            if (resolveRequestClass == null) {
+                throw new AttributeResolveException("Request class is null for resolver " + resolver);
+            }
+            GenericAttributeResolveRequest resolveRequest = new GenericAttributeResolveRequest(query, site);
             resolvable.validateRequest(resolveRequest);
             List result = resolvable.resolve(resolveRequest);
             response.setSuccess(true);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolverFactory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolverFactory.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolverFactory.java
index a184aa0..010d8c3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolverFactory.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/AttributeResolverFactory.java
@@ -16,36 +16,36 @@
  */
 package org.apache.eagle.service.alert.resolver;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.metadata.service.ApplicationEntityService;
+import com.typesafe.config.Config;
 
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
-* @since 6/16/15
-*/
+ * @since 6/16/15.
+ */
 public final class AttributeResolverFactory {
-    private final static Map<String,AttributeResolvable> fieldResolvableCache = Collections.synchronizedMap(new HashMap<>());
+    private static final Map<String, AttributeResolvable> fieldResolvableCache = Collections.synchronizedMap(new HashMap<>());
+
     public static AttributeResolvable getAttributeResolver(String fieldResolverName,
                                                            ApplicationEntityService entityService,
                                                            Config eagleServerConfig) throws AttributeResolveException {
         AttributeResolvable instance;
-        if(fieldResolvableCache.containsKey(fieldResolverName)){
+        if (fieldResolvableCache.containsKey(fieldResolverName)) {
             instance = fieldResolvableCache.get(fieldResolverName);
         } else {
             try {
-                instance = (AttributeResolvable) Class.forName(fieldResolverName).
-                        getConstructor(ApplicationEntityService.class, Config.class).
-                        newInstance(entityService, eagleServerConfig);
+                instance = (AttributeResolvable) Class.forName(fieldResolverName)
+                    .getConstructor(ApplicationEntityService.class, Config.class)
+                    .newInstance(entityService, eagleServerConfig);
                 fieldResolvableCache.put(fieldResolverName, instance);
             } catch (ClassNotFoundException e) {
-                throw new AttributeResolveException("Attribute Resolver in type of "+fieldResolverName+" is not found",e);
+                throw new AttributeResolveException("Attribute Resolver in type of " + fieldResolverName + " is not found", e);
             } catch (InstantiationException | IllegalAccessException e) {
                 throw new AttributeResolveException(e);
-            } catch (Exception ex){
+            } catch (Exception ex) {
                 throw new AttributeResolveException(ex);
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/BadAttributeResolveRequestException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/BadAttributeResolveRequestException.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/BadAttributeResolveRequestException.java
index 5a2d7e6..741dd31 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/BadAttributeResolveRequestException.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/BadAttributeResolveRequestException.java
@@ -17,15 +17,15 @@
 package org.apache.eagle.service.alert.resolver;
 
 public class BadAttributeResolveRequestException extends Exception {
-    public BadAttributeResolveRequestException(Exception ex){
+    public BadAttributeResolveRequestException(Exception ex) {
         super(ex);
     }
 
-    public BadAttributeResolveRequestException(String msg){
+    public BadAttributeResolveRequestException(String msg) {
         super(msg);
     }
 
-    public BadAttributeResolveRequestException(String msg, Exception ex){
+    public BadAttributeResolveRequestException(String msg, Exception ex) {
         super(msg, ex);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/GenericAttributeResolveRequest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/GenericAttributeResolveRequest.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/GenericAttributeResolveRequest.java
index 97899b7..ee7ac99 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/GenericAttributeResolveRequest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/GenericAttributeResolveRequest.java
@@ -20,16 +20,16 @@ import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 /**
- * @since 6/16/15
+ * @since 6/16/15.
  */
 public class GenericAttributeResolveRequest {
     /**
-     * @param query whatever is in input box of attribute
-     * @param site which site this policy belongs to
+     * @param query whatever is in input box of attribute.
+     * @param site  which site this policy belongs to.
      */
     @JsonCreator
-    public GenericAttributeResolveRequest(@JsonProperty("query") String query, @JsonProperty("site") String site){
-        this.query  = query;
+    public GenericAttributeResolveRequest(@JsonProperty("query") String query, @JsonProperty("site") String site) {
+        this.query = query;
         this.site = site;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/BooleanAttributeResolver.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/BooleanAttributeResolver.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/BooleanAttributeResolver.java
index 3dc70e1..72bf056 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/BooleanAttributeResolver.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/BooleanAttributeResolver.java
@@ -16,15 +16,15 @@
  */
 package org.apache.eagle.service.alert.resolver.impl;
 
+import org.apache.eagle.service.alert.resolver.AttributeResolvable;
 import org.apache.eagle.service.alert.resolver.AttributeResolveException;
 import org.apache.eagle.service.alert.resolver.GenericAttributeResolveRequest;
-import org.apache.eagle.service.alert.resolver.AttributeResolvable;
 
 import java.util.Arrays;
 import java.util.List;
 
 /**
- * @since 6/16/15
+ * @since 6/16/15.
  */
 public class BooleanAttributeResolver implements AttributeResolvable<GenericAttributeResolveRequest,String> {
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/EntityAttributeResolver.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/EntityAttributeResolver.java b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/EntityAttributeResolver.java
index 9758863..affb54b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/EntityAttributeResolver.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert-service/src/main/java/org/apache/eagle/service/alert/resolver/impl/EntityAttributeResolver.java
@@ -16,8 +16,9 @@
  */
 package org.apache.eagle.service.alert.resolver.impl;
 
-import org.apache.eagle.log.entity.GenericServiceAPIResponseEntity;
+import org.apache.eagle.common.DateTimeUtil;
 import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
+import org.apache.eagle.log.entity.GenericServiceAPIResponseEntity;
 import org.apache.eagle.log.entity.meta.EntityDefinition;
 import org.apache.eagle.log.entity.meta.EntityDefinitionManager;
 import org.apache.eagle.service.alert.resolver.AttributeResolvable;
@@ -25,8 +26,6 @@ import org.apache.eagle.service.alert.resolver.AttributeResolveException;
 import org.apache.eagle.service.alert.resolver.BadAttributeResolveRequestException;
 import org.apache.eagle.service.alert.resolver.GenericAttributeResolveRequest;
 import org.apache.eagle.service.generic.GenericEntityServiceResource;
-import org.apache.eagle.common.DateTimeUtil;
-
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.commons.lang3.StringUtils;
@@ -36,42 +35,42 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * @since 6/16/15
+ * @since 6/16/15.
  */
-public class EntityAttributeResolver implements AttributeResolvable<EntityAttributeResolver.EntityAttributeResolveRequest,String> {
+public class EntityAttributeResolver implements AttributeResolvable<EntityAttributeResolver.EntityAttributeResolveRequest, String> {
 
-    private final static GenericEntityServiceResource entityServiceResource = new GenericEntityServiceResource();
+    private static final GenericEntityServiceResource entityServiceResource = new GenericEntityServiceResource();
 
     @Override
     public List<String> resolve(EntityAttributeResolveRequest request) throws AttributeResolveException {
-        if(request.getFieldName()==null){
+        if (request.getFieldName() == null) {
             throw new AttributeResolveException("fieldName is required");
         }
         String attributeName = request.getFieldName();
         EntityDefinition entityDefinition;
         try {
-            if(request.getServiceName()!=null){
+            if (request.getServiceName() != null) {
                 entityDefinition = EntityDefinitionManager.getEntityByServiceName(request.getServiceName());
-            }else if (request.getEntityClassName()!=null){
+            } else if (request.getEntityClassName() != null) {
                 Class<? extends TaggedLogAPIEntity> entityClass = (Class<? extends TaggedLogAPIEntity>) Class.forName(request.getEntityClassName());
                 entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(entityClass);
-            }else {
+            } else {
                 throw new AttributeResolveException("At least serviceName or entityClassName is required, but neither found");
             }
         } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
             throw new AttributeResolveException(e);
         }
         List<String> filterCondition = new ArrayList<>();
-        if(request.getTags()!=null){
-            for(Map.Entry<String,String> tag:request.getTags().entrySet()) {
+        if (request.getTags() != null) {
+            for (Map.Entry<String, String> tag : request.getTags().entrySet()) {
                 filterCondition.add("@" + tag.getKey() + " = \"" + tag.getValue() + "\"");
             }
         }
-        if(request.getQuery() != null) {
-            filterCondition.add("@" + attributeName + "~= \".*" + request.getQuery()+".*\"");
+        if (request.getQuery() != null) {
+            filterCondition.add("@" + attributeName + "~= \".*" + request.getQuery() + ".*\"");
         }
         String query = entityDefinition.getService() + "[" + StringUtils.join(filterCondition, " AND ") + "]<@" + attributeName + ">{count}";
-        return aggregateQuery(query, DateTimeUtil.millisecondsToHumanDateWithSeconds(0), DateTimeUtil.millisecondsToHumanDateWithSeconds(System.currentTimeMillis()),request.getMetricName());
+        return aggregateQuery(query, DateTimeUtil.millisecondsToHumanDateWithSeconds(0), DateTimeUtil.millisecondsToHumanDateWithSeconds(System.currentTimeMillis()), request.getMetricName());
     }
 
     @Override
@@ -84,16 +83,16 @@ public class EntityAttributeResolver implements AttributeResolvable<EntityAttrib
 
     }
 
-    private List<String> aggregateQuery(String query,String startTime,String endTime,String metricName) throws AttributeResolveException {
+    private List<String> aggregateQuery(String query, String startTime, String endTime, String metricName) throws AttributeResolveException {
         List<String> result = new ArrayList<>();
         GenericServiceAPIResponseEntity response = entityServiceResource.search(query, startTime, endTime, Integer.MAX_VALUE, null, false, false, 0, Integer.MAX_VALUE, true, 0, metricName, false);
-        if(response.isSuccess()){
+        if (response.isSuccess()) {
             List objs = response.getObj();
-            for(Object item:objs){
+            for (Object item : objs) {
                 // TODO: get keys as result
                 throw new IllegalArgumentException("not implemented yet");
             }
-        }else{
+        } else {
             throw new AttributeResolveException(response.getException());
         }
         return result;
@@ -103,39 +102,47 @@ public class EntityAttributeResolver implements AttributeResolvable<EntityAttrib
         public Map<String, String> getTags() {
             return tags;
         }
+
         private final Map<String, String> tags;
+
         public String getMetricName() {
             return metricName;
         }
+
         private final String metricName;
+
         @JsonCreator
         public EntityAttributeResolveRequest(
-                @JsonProperty("query") String query,
-                @JsonProperty("site") String site,
-                @JsonProperty("serviceName") String serviceName,
-                @JsonProperty("entityClassName") String entityClassName,
-                @JsonProperty("metricName") String metricName,
-                @JsonProperty("fieldName") String fieldName,
-                @JsonProperty("tags") Map<String, String> tags
-        ){
+            @JsonProperty("query") String query,
+            @JsonProperty("site") String site,
+            @JsonProperty("serviceName") String serviceName,
+            @JsonProperty("entityClassName") String entityClassName,
+            @JsonProperty("metricName") String metricName,
+            @JsonProperty("fieldName") String fieldName,
+            @JsonProperty("tags") Map<String, String> tags
+        ) {
             super(query, site);
             this.serviceName = serviceName;
             this.entityClassName = entityClassName;
             this.fieldName = fieldName;
             this.metricName = metricName;
-            this.tags =  tags;
+            this.tags = tags;
         }
 
         private final String serviceName;
+
         public String getEntityClassName() {
             return entityClassName;
         }
+
         public String getServiceName() {
             return serviceName;
         }
+
         public String getFieldName() {
             return fieldName;
         }
+
         private final String entityClassName;
         private final String fieldName;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/pom.xml b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/pom.xml
index 0fb2bb7..57a0157 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/pom.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/pom.xml
@@ -83,8 +83,8 @@
             <artifactId>jackson-jaxrs-json-provider</artifactId>
         </dependency>
         <!--<dependency>-->
-            <!--<groupId>org.codehaus.jackson</groupId>-->
-            <!--<artifactId>jackson-jaxrs</artifactId>-->
+        <!--<groupId>org.codehaus.jackson</groupId>-->
+        <!--<artifactId>jackson-jaxrs</artifactId>-->
         <!--</dependency>-->
         <dependency>
             <groupId>joda-time</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusBase.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusBase.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusBase.java
index 5cedba6..71f1d59 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusBase.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusBase.java
@@ -18,41 +18,38 @@
  */
 package org.apache.eagle.alert.config;
 
-import java.io.Closeable;
-
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.RetryNTimes;
-
+import java.io.Closeable;
 
 /**
  * Abstraction of asynchronized configuration management
  * This is used for config change notification between processes, without this one process has to pull changes triggered by another process
- *
- * Config bus is similar to message bus, config change producer can publish config change(message) to config bus,
- *  while config change consumer can subscribe config change and do business logic in callback
+ * <p>Config bus is similar to message bus, config change producer can publish config change(message) to config bus,
+ * while config change consumer can subscribe config change and do business logic in callback
+ * </p>
  * 1. use zookeeper as media to notify config consumer of config changes
  * 2. each type of config is represented by topic
  * 3. each config change can contain actual value or contain reference Id which consumer uses to retrieve actual value. This mechanism will reduce zookeeper overhed
- *
  */
-public class ConfigBusBase implements Closeable{
+public class ConfigBusBase implements Closeable {
     protected String zkRoot;
     protected CuratorFramework curator;
 
     public ConfigBusBase(ZKConfig config) {
         this.zkRoot = config.zkRoot;
         curator = CuratorFrameworkFactory.newClient(
-                config.zkQuorum,
-                config.zkSessionTimeoutMs,
-                config.connectionTimeoutMs,
-                new RetryNTimes(config.zkRetryTimes, config.zkRetryInterval)
+            config.zkQuorum,
+            config.zkSessionTimeoutMs,
+            config.connectionTimeoutMs,
+            new RetryNTimes(config.zkRetryTimes, config.zkRetryInterval)
         );
         curator.start();
     }
 
     @Override
-    public void close(){
+    public void close() {
         curator.close();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusConsumer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusConsumer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusConsumer.java
index 3db30e5..c2849a2 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusConsumer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusConsumer.java
@@ -22,8 +22,7 @@ import org.slf4j.Logger;
 
 /**
  * 1. When consumer is started, it always get notified of config
- * 2. When config is changed, consumer always get notified of config change
- *
+ * 2. When config is changed, consumer always get notified of config change.
  * Reliability issue:
  * TODO How to ensure config change message is always delivered to consumer
  */
@@ -31,12 +30,13 @@ public class ConfigBusConsumer extends ConfigBusBase {
     private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(ConfigBusConsumer.class);
 
     private NodeCache cache;
+
     public ConfigBusConsumer(ZKConfig config, String topic, ConfigChangeCallback callback) {
         super(config);
         String zkPath = zkRoot + "/" + topic;
         LOG.info("monitor change for zkPath " + zkPath);
         cache = new NodeCache(curator, zkPath);
-        cache.getListenable().addListener( () -> {
+        cache.getListenable().addListener(() -> {
                 // get node value and notify callback
                 byte[] value = curator.getData().forPath(zkPath);
                 ObjectMapper mapper = new ObjectMapper();
@@ -46,7 +46,7 @@ public class ConfigBusConsumer extends ConfigBusBase {
         );
         try {
             cache.start();
-        } catch(Exception ex) {
+        } catch (Exception ex) {
             LOG.error("error start NodeCache listener", ex);
             throw new RuntimeException(ex);
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusProducer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusProducer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusProducer.java
index c2b0165..8f30e5c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusProducer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigBusProducer.java
@@ -16,36 +16,31 @@
  */
 package org.apache.eagle.alert.config;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.zookeeper.CreateMode;
 import org.slf4j.Logger;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 public class ConfigBusProducer extends ConfigBusBase {
     private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(ConfigBusProducer.class);
 
-    public ConfigBusProducer(ZKConfig config){
+    public ConfigBusProducer(ZKConfig config) {
         super(config);
     }
 
-    /**
-     * @param topic
-     * @param config
-     */
-    public void send(String topic, ConfigValue config){
+    public void send(String topic, ConfigValue config) {
         // check if topic exists, create this topic if not existing
         String zkPath = zkRoot + "/" + topic;
         try {
             if (curator.checkExists().forPath(zkPath) == null) {
                 curator.create()
-                        .creatingParentsIfNeeded()
-                        .withMode(CreateMode.PERSISTENT)
-                        .forPath(zkPath);
+                    .creatingParentsIfNeeded()
+                    .withMode(CreateMode.PERSISTENT)
+                    .forPath(zkPath);
             }
             ObjectMapper mapper = new ObjectMapper();
             byte[] content = mapper.writeValueAsBytes(config);
             curator.setData().forPath(zkPath, content);
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error("error creating zkPath " + zkPath, ex);
             throw new RuntimeException(ex);
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigValue.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigValue.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigValue.java
index f47e1be..b4d6fc3 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigValue.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ConfigValue.java
@@ -23,7 +23,7 @@ package org.apache.eagle.alert.config;
  * Config body contains actual data for one topic
  * this is serialized with json format into zookeeper
  * value can be versionId which is used for referencing outside data
- * or value can be actual config value
+ * or value can be actual config value.
  */
 public class ConfigValue {
     private boolean isValueVersionId;
@@ -45,7 +45,7 @@ public class ConfigValue {
         this.value = value;
     }
 
-    public String toString(){
+    public String toString() {
         return "isValueVersionId: " + isValueVersionId + ", value: " + value;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfig.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfig.java
index 086210a..5e0c952 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfig.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfig.java
@@ -21,9 +21,9 @@ package org.apache.eagle.alert.config;
 import java.io.Serializable;
 
 /**
- * Memory representation of key zookeeper configurations
+ * Memory representation of key zookeeper configurations.
  */
-public class ZKConfig implements Serializable{
+public class ZKConfig implements Serializable {
     private static final long serialVersionUID = -1287231022807492775L;
 
     public String zkQuorum;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfigBuilder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfigBuilder.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfigBuilder.java
index d7b3232..97c0797 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfigBuilder.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/config/ZKConfigBuilder.java
@@ -25,7 +25,7 @@ import com.typesafe.config.Config;
  * Since 4/28/16.
  */
 public class ZKConfigBuilder {
-    public static ZKConfig getZKConfig(Config config){
+    public static ZKConfig getZKConfig(Config config) {
         ZKConfig zkConfig = new ZKConfig();
         zkConfig.zkQuorum = config.getString("zkConfig.zkQuorum");
         zkConfig.zkRoot = config.getString("zkConfig.zkRoot");

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/AlertBoltSpec.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/AlertBoltSpec.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/AlertBoltSpec.java
index 83d307c..b3adda5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/AlertBoltSpec.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/AlertBoltSpec.java
@@ -16,18 +16,17 @@
  */
 package org.apache.eagle.alert.coordination.model;
 
+import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
 /**
  * The alert specification for topology bolts.
- * 
+ *
  * @since Apr 29, 2016
  */
 public class AlertBoltSpec {
@@ -64,19 +63,19 @@ public class AlertBoltSpec {
         this.topologyName = topologyName;
     }
 
-//    public List<PolicyDefinition> getBoltPolicy(String boltId) {
-//        return boltPoliciesMap.get(boltId);
-//    }
-//
-//    public void addBoltPolicy(String boltId, PolicyDefinition pd) {
-//        if (boltPoliciesMap.containsKey(boltId)) {
-//            boltPoliciesMap.get(boltId).add(pd);
-//        } else {
-//            List<PolicyDefinition> list = new ArrayList<PolicyDefinition>();
-//            boltPoliciesMap.put(boltId, list);
-//            list.add(pd);
-//        }
-//    }
+    //    public List<PolicyDefinition> getBoltPolicy(String boltId) {
+    //        return boltPoliciesMap.get(boltId);
+    //    }
+    //
+    //    public void addBoltPolicy(String boltId, PolicyDefinition pd) {
+    //        if (boltPoliciesMap.containsKey(boltId)) {
+    //            boltPoliciesMap.get(boltId).add(pd);
+    //        } else {
+    //            List<PolicyDefinition> list = new ArrayList<PolicyDefinition>();
+    //            boltPoliciesMap.put(boltId, list);
+    //            list.add(pd);
+    //        }
+    //    }
 
     public void addBoltPolicy(String boltId, String policyName) {
         if (boltPolicyIdsMap.containsKey(boltId)) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Kafka2TupleMetadata.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Kafka2TupleMetadata.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Kafka2TupleMetadata.java
index 6c4f576..e3ec774 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Kafka2TupleMetadata.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Kafka2TupleMetadata.java
@@ -16,15 +16,13 @@
  */
 package org.apache.eagle.alert.coordination.model;
 
-import java.util.Map;
-
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-
 import com.google.common.base.Objects;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.Map;
 
 /**
+ * This metadata model controls how to convert kafka topic into tuple stream.
  * @since Apr 5, 2016
- * this metadata model controls how to convert kafka topic into tuple stream
  */
 public class Kafka2TupleMetadata {
     private String type;
@@ -78,6 +76,7 @@ public class Kafka2TupleMetadata {
     public String getTopic() {
         return this.topic;
     }
+
     public String getSchemeCls() {
         return this.schemeCls;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PolicyWorkerQueue.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PolicyWorkerQueue.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PolicyWorkerQueue.java
index e32d13c..44fad90 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PolicyWorkerQueue.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PolicyWorkerQueue.java
@@ -16,31 +16,14 @@
  */
 package org.apache.eagle.alert.coordination.model;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
+import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
 
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to You 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. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
 public class PolicyWorkerQueue {
 
     private StreamPartition partition;
@@ -85,8 +68,8 @@ public class PolicyWorkerQueue {
             return false;
         }
         PolicyWorkerQueue that = (PolicyWorkerQueue) other;
-        return Objects.equals(partition, that.partition) &&
-                CollectionUtils.isEqualCollection(workers, that.workers);
+        return Objects.equals(partition, that.partition)
+            && CollectionUtils.isEqualCollection(workers, that.workers);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PublishSpec.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PublishSpec.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PublishSpec.java
index 06e819a..c1f9b24 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PublishSpec.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/PublishSpec.java
@@ -16,16 +16,10 @@
  */
 package org.apache.eagle.alert.coordination.model;
 
+import org.apache.eagle.alert.engine.coordinator.Publishment;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.eagle.alert.engine.coordinator.Publishment;
-
-/**
- * 
- * @since May 1, 2016
- *
- */
 public class PublishSpec {
 
     private String topologyName;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/RouterSpec.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/RouterSpec.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/RouterSpec.java
index 9a576a3..fc13c56 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/RouterSpec.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/RouterSpec.java
@@ -22,10 +22,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 
-/**
- * @since Apr 29, 2016
- *
- */
 public class RouterSpec {
     private String version;
     private String topologyName;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/ScheduleState.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/ScheduleState.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/ScheduleState.java
index 93d038f..40ac85d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/ScheduleState.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/ScheduleState.java
@@ -14,8 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.eagle.alert.coordination.model;
 
+import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
+import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
+import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
+import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
@@ -23,11 +28,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.eagle.alert.coordination.model.internal.MonitoredStream;
-import org.apache.eagle.alert.coordination.model.internal.PolicyAssignment;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-
 /**
  * A global wise of schedule status <br/>
  * <br/>
@@ -36,10 +36,8 @@ import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
  * <br/>
  * The solution is in metadata resource, have specs/monitoredStreams/policy
  * assignments stored in different table/collections with tage version.
- * 
- * 
- * @since Apr 26, 2016
  *
+ * @since Apr 26, 2016
  */
 public class ScheduleState {
 
@@ -68,15 +66,15 @@ public class ScheduleState {
         this.generateTime = String.valueOf(new Date().getTime());
     }
 
-    public ScheduleState(String version, 
-            Map<String, SpoutSpec> topoSpoutSpecsMap,
-            Map<String, RouterSpec> groupSpecsMap, 
-            Map<String, AlertBoltSpec> alertSpecsMap,
-            Map<String, PublishSpec> pubMap, 
-            Collection<PolicyAssignment> assignments,
-            Collection<MonitoredStream> monitoredStreams, 
-            Collection<PolicyDefinition> definitions,
-            Collection<StreamDefinition> streams) {
+    public ScheduleState(String version,
+                         Map<String, SpoutSpec> topoSpoutSpecsMap,
+                         Map<String, RouterSpec> groupSpecsMap,
+                         Map<String, AlertBoltSpec> alertSpecsMap,
+                         Map<String, PublishSpec> pubMap,
+                         Collection<PolicyAssignment> assignments,
+                         Collection<MonitoredStream> monitoredStreams,
+                         Collection<PolicyDefinition> definitions,
+                         Collection<StreamDefinition> streams) {
         this.spoutSpecs = topoSpoutSpecsMap;
         this.groupSpecs = groupSpecsMap;
         this.alertSpecs = alertSpecsMap;
@@ -113,7 +111,7 @@ public class ScheduleState {
         for (PolicyDefinition def : definitions) {
             this.policySnapshots.add(new VersionedPolicyDefinition(version, def));
         }
-        for (StreamDefinition sd :streams) {
+        for (StreamDefinition sd : streams) {
             this.streamSnapshots.add(new VersionedStreamDefinition(version, sd));
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/SpoutSpec.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/SpoutSpec.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/SpoutSpec.java
index c0e8ec1..f5c7399 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/SpoutSpec.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/SpoutSpec.java
@@ -23,19 +23,18 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-
 /**
  * SpoutSpec metadata control 3 phases for data transformation for one specific topic
  * phase 1: kafka topic to tuple, controlled by Kafka2TupleMetadata, i.e. Scheme
  * phase 2: tuple to stream, controlled by Tuple2StreamMetadata, i.e. stream name selector etc.
  * phase 3: stream repartition, controlled by StreamRepartitionMetadata, i.e. groupby spec
- * @since Apr 18, 2016
  *
+ * @since Apr 18, 2016
  */
 public class SpoutSpec {
     private String version;
 
-//    private String spoutId;
+    //    private String spoutId;
     private String topologyId;
 
     // topicName -> kafka2TupleMetadata
@@ -45,27 +44,28 @@ public class SpoutSpec {
     // topicName -> list of StreamRepartitionMetadata, here it is list because one topic(data source) may spawn multiple streams.
     private Map<String, List<StreamRepartitionMetadata>> streamRepartitionMetadataMap = new HashMap<String, List<StreamRepartitionMetadata>>();
 
-    public SpoutSpec(){}
+    public SpoutSpec() {
+    }
 
     public SpoutSpec(
-            String topologyId,
-//            String spoutId,
-            Map<String, List<StreamRepartitionMetadata>>  streamRepartitionMetadataMap,
-            Map<String, Tuple2StreamMetadata> tuple2StreamMetadataMap,
-            Map<String, Kafka2TupleMetadata>  kafka2TupleMetadataMap) {
+        String topologyId,
+        //  String spoutId,
+        Map<String, List<StreamRepartitionMetadata>> streamRepartitionMetadataMap,
+        Map<String, Tuple2StreamMetadata> tuple2StreamMetadataMap,
+        Map<String, Kafka2TupleMetadata> kafka2TupleMetadataMap) {
         this.topologyId = topologyId;
-//        this.spoutId = spoutId;
+        //  this.spoutId = spoutId;
         this.streamRepartitionMetadataMap = streamRepartitionMetadataMap;
         this.tuple2StreamMetadataMap = tuple2StreamMetadataMap;
         this.kafka2TupleMetadataMap = kafka2TupleMetadataMap;
     }
 
-//    public String getSpoutId() {
-//        return spoutId;
-//    }
-//    public void setSpoutId(String spoutId) {
-//        this.spoutId = spoutId;
-//    }
+    //    public String getSpoutId() {
+    //        return spoutId;
+    //    }
+    //    public void setSpoutId(String spoutId) {
+    //        this.spoutId = spoutId;
+    //    }
 
     public String getTopologyId() {
         return topologyId;
@@ -75,7 +75,7 @@ public class SpoutSpec {
         return streamRepartitionMetadataMap;
     }
 
-    public Map<String, Tuple2StreamMetadata> getTuple2StreamMetadataMap(){
+    public Map<String, Tuple2StreamMetadata> getTuple2StreamMetadataMap() {
         return this.tuple2StreamMetadataMap;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamNameSelector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamNameSelector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamNameSelector.java
index bc7952c..f613b11 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamNameSelector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamNameSelector.java
@@ -19,13 +19,11 @@ package org.apache.eagle.alert.coordination.model;
 import java.util.Map;
 
 /**
- * This metadata controls how to figure out stream name from incoming tuple
+ * This metadata controls how to figure out stream name from incoming tuple.
  */
 public interface StreamNameSelector {
     /**
-     * field name to value mapping
-     * @param tuple
-     * @return
+     * field name to value mapping.
      */
     String getStreamName(Map<String, Object> tuple);
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionMetadata.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionMetadata.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionMetadata.java
index 86b1d27..d1ce9da 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionMetadata.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionMetadata.java
@@ -21,20 +21,20 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import java.util.ArrayList;
 import java.util.List;
 
-
 /**
+ * This meta-data controls how tuple streamId is repartitioned.
  * @since Apr 25, 2016
- * This meta-data controls how tuple streamId is repartitioned
  */
 public class StreamRepartitionMetadata {
     private String topicName;
     private String streamId;
     /**
-     * each stream may have multiple different grouping strategies,for example groupby some fields or even shuffling
+     * each stream may have multiple different grouping strategies,for example groupby some fields or even shuffling.
      */
     public List<StreamRepartitionStrategy> groupingStrategies = new ArrayList<StreamRepartitionStrategy>();
 
-    public StreamRepartitionMetadata(){}
+    public StreamRepartitionMetadata() {
+    }
 
     public StreamRepartitionMetadata(String topicName, String stream) {
         this.topicName = topicName;
@@ -44,6 +44,7 @@ public class StreamRepartitionMetadata {
     public String getStreamId() {
         return streamId;
     }
+
     public void setStreamId(String streamId) {
         this.streamId = streamId;
     }
@@ -51,6 +52,7 @@ public class StreamRepartitionMetadata {
     public String getTopicName() {
         return topicName;
     }
+
     public void setTopicName(String topicName) {
         this.topicName = topicName;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionStrategy.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionStrategy.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionStrategy.java
index 203114e..118347f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionStrategy.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRepartitionStrategy.java
@@ -16,19 +16,19 @@
  */
 package org.apache.eagle.alert.coordination.model;
 
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import java.util.ArrayList;
+import java.util.List;
 
 public class StreamRepartitionStrategy {
-    public StreamPartition partition ;
+    public StreamPartition partition;
 
     public int numTotalParticipatingRouterBolts = 0;      // how many group-by bolts participate policy evaluation
     public int startSequence = 0;            // what is the sequence for the first bolt in this topology among all bolts
     public List<String> totalTargetBoltIds = new ArrayList<String>();
-    
+
     public int hashCode() {
         int hashcode = 1 * 31;
         hashcode += partition.hashCode();
@@ -37,14 +37,14 @@ public class StreamRepartitionStrategy {
         }
         return hashcode;
     }
-    
+
     public boolean equals(Object obj) {
         if (!(obj instanceof StreamRepartitionStrategy)) {
             return false;
         }
         StreamRepartitionStrategy o = (StreamRepartitionStrategy) obj;
         return partition.equals(o.partition)
-                && CollectionUtils.isEqualCollection(totalTargetBoltIds, o.totalTargetBoltIds);
+            && CollectionUtils.isEqualCollection(totalTargetBoltIds, o.totalTargetBoltIds);
     }
 
     public StreamPartition getPartition() {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRouterSpec.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRouterSpec.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRouterSpec.java
index 195c8d9..96dfc59 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRouterSpec.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/StreamRouterSpec.java
@@ -16,24 +16,23 @@
  */
 package org.apache.eagle.alert.coordination.model;
 
+import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-
 /**
  * One RouteSpec means one rule mapping [streamId -> StreamPartition ->
  * PolicyExecutionQueue]
  *
- * Key is StreamPartition
+ * <p>Key is StreamPartition.
  */
 public class StreamRouterSpec {
     private String streamId;
     private StreamPartition partition; // The meta-data to build
-                                       // StreamPartitioner
+    // StreamPartitioner
     private List<PolicyWorkerQueue> targetQueue = new ArrayList<PolicyWorkerQueue>();
 
     public StreamPartition getPartition() {
@@ -72,7 +71,7 @@ public class StreamRouterSpec {
     @Override
     public String toString() {
         return String.format("StreamRouterSpec[streamId=%s,partition=%s, queue=[%s]]", this.getStreamId(),
-                this.getPartition(), this.getTargetQueue());
+            this.getPartition(), this.getTargetQueue());
     }
 
     @Override
@@ -84,8 +83,8 @@ public class StreamRouterSpec {
             return false;
         }
         StreamRouterSpec that = (StreamRouterSpec) other;
-        return Objects.equals(streamId, that.streamId) &&
-                Objects.equals(partition, that.partition) &&
-                CollectionUtils.isEqualCollection(targetQueue, that.targetQueue);
+        return Objects.equals(streamId, that.streamId)
+            && Objects.equals(partition, that.partition)
+            && CollectionUtils.isEqualCollection(targetQueue, that.targetQueue);
     }
 }
\ No newline at end of file



[09/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/UnitTopologyRunner.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/UnitTopologyRunner.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/UnitTopologyRunner.java
index 87faf82..7a93e72 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/UnitTopologyRunner.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/runner/UnitTopologyRunner.java
@@ -19,6 +19,12 @@
 
 package org.apache.eagle.alert.engine.runner;
 
+import org.apache.eagle.alert.engine.coordinator.IMetadataChangeNotifyService;
+import org.apache.eagle.alert.engine.coordinator.impl.ZKMetadataChangeNotifyService;
+import org.apache.eagle.alert.engine.spout.CorrelationSpout;
+import org.apache.eagle.alert.utils.AlertConstants;
+import org.apache.eagle.alert.utils.StreamIdConversion;
+
 import backtype.storm.LocalCluster;
 import backtype.storm.StormSubmitter;
 import backtype.storm.generated.StormTopology;
@@ -28,11 +34,7 @@ import backtype.storm.tuple.Fields;
 import backtype.storm.utils.Utils;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigRenderOptions;
-import org.apache.eagle.alert.engine.coordinator.IMetadataChangeNotifyService;
-import org.apache.eagle.alert.engine.coordinator.impl.ZKMetadataChangeNotifyService;
-import org.apache.eagle.alert.engine.spout.CorrelationSpout;
-import org.apache.eagle.alert.utils.AlertConstants;
-import org.apache.eagle.alert.utils.StreamIdConversion;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -48,24 +50,24 @@ import java.util.List;
  */
 public class UnitTopologyRunner {
     private static final Logger LOG = LoggerFactory.getLogger(UnitTopologyRunner.class);
-    public final static String spoutName = "alertEngineSpout";
-    private final static String streamRouterBoltNamePrefix = "streamRouterBolt";
-    private final static String alertBoltNamePrefix = "alertBolt";
-    public final static String alertPublishBoltName = "alertPublishBolt";
-
-    public final static String TOTAL_WORKER_NUM = "topology.numOfTotalWorkers";
-    public final static String SPOUT_TASK_NUM = "topology.numOfSpoutTasks";
-    public final static String ROUTER_TASK_NUM = "topology.numOfRouterBolts";
-    public final static String ALERT_TASK_NUM = "topology.numOfAlertBolts";
-    public final static String PUBLISH_TASK_NUM = "topology.numOfPublishTasks";
-    public final static String LOCAL_MODE = "topology.localMode";
-    public final static String MESSAGE_TIMEOUT_SECS = "topology.messageTimeoutSecs";
-    public final static int DEFAULT_MESSAGE_TIMEOUT_SECS = 3600;
+    public static final String spoutName = "alertEngineSpout";
+    private static final String streamRouterBoltNamePrefix = "streamRouterBolt";
+    private static final String alertBoltNamePrefix = "alertBolt";
+    public static final String alertPublishBoltName = "alertPublishBolt";
+
+    public static final String TOTAL_WORKER_NUM = "topology.numOfTotalWorkers";
+    public static final String SPOUT_TASK_NUM = "topology.numOfSpoutTasks";
+    public static final String ROUTER_TASK_NUM = "topology.numOfRouterBolts";
+    public static final String ALERT_TASK_NUM = "topology.numOfAlertBolts";
+    public static final String PUBLISH_TASK_NUM = "topology.numOfPublishTasks";
+    public static final String LOCAL_MODE = "topology.localMode";
+    public static final String MESSAGE_TIMEOUT_SECS = "topology.messageTimeoutSecs";
+    public static final int DEFAULT_MESSAGE_TIMEOUT_SECS = 3600;
 
     private final IMetadataChangeNotifyService metadataChangeNotifyService;
     private backtype.storm.Config givenStormConfig = null;
 
-    public UnitTopologyRunner(IMetadataChangeNotifyService metadataChangeNotifyService){
+    public UnitTopologyRunner(IMetadataChangeNotifyService metadataChangeNotifyService) {
         this.metadataChangeNotifyService = metadataChangeNotifyService;
     }
 
@@ -75,15 +77,15 @@ public class UnitTopologyRunner {
     }
 
     public StormTopology buildTopology(String topologyId,
-                              int numOfSpoutTasks,
-                              int numOfRouterBolts,
-                              int numOfAlertBolts,
-                              int numOfPublishTasks,
-                              Config config) {
+                                       int numOfSpoutTasks,
+                                       int numOfRouterBolts,
+                                       int numOfAlertBolts,
+                                       int numOfPublishTasks,
+                                       Config config) {
 
         StreamRouterBolt[] routerBolts = new StreamRouterBolt[numOfRouterBolts];
         AlertBolt[] alertBolts = new AlertBolt[numOfAlertBolts];
-        AlertPublisherBolt publisherBolt;
+
 
         TopologyBuilder builder = new TopologyBuilder();
 
@@ -93,27 +95,27 @@ public class UnitTopologyRunner {
         builder.setSpout(spoutName, spout, numOfSpoutTasks).setNumTasks(numOfSpoutTasks);
 
         // construct StreamRouterBolt objects
-        for(int i=0; i<numOfRouterBolts; i++){
+        for (int i = 0; i < numOfRouterBolts; i++) {
             routerBolts[i] = new StreamRouterBolt(streamRouterBoltNamePrefix + i, config, getMetadataChangeNotifyService());
         }
 
         // construct AlertBolt objects
-        for(int i=0; i<numOfAlertBolts; i++){
-            alertBolts[i] = new AlertBolt(alertBoltNamePrefix+i, config, getMetadataChangeNotifyService());
+        for (int i = 0; i < numOfAlertBolts; i++) {
+            alertBolts[i] = new AlertBolt(alertBoltNamePrefix + i, config, getMetadataChangeNotifyService());
         }
 
         // construct AlertPublishBolt object
-        publisherBolt = new AlertPublisherBolt(alertPublishBoltName, config, getMetadataChangeNotifyService());
+        AlertPublisherBolt publisherBolt = new AlertPublisherBolt(alertPublishBoltName, config, getMetadataChangeNotifyService());
 
         // connect spout and router bolt, also define output streams for downstreaming alert bolt
-        for(int i=0; i<numOfRouterBolts; i++){
+        for (int i = 0; i < numOfRouterBolts; i++) {
             String boltName = streamRouterBoltNamePrefix + i;
 
             // define output streams, which are based on
             String streamId = StreamIdConversion.generateStreamIdBetween(spoutName, boltName);
             List<String> outputStreamIds = new ArrayList<>(numOfAlertBolts);
-            for(int j=0; j<numOfAlertBolts; j++){
-                String sid = StreamIdConversion.generateStreamIdBetween(boltName, alertBoltNamePrefix+j);
+            for (int j = 0; j < numOfAlertBolts; j++) {
+                String sid = StreamIdConversion.generateStreamIdBetween(boltName, alertBoltNamePrefix + j);
                 outputStreamIds.add(sid);
             }
             routerBolts[i].declareOutputStreams(outputStreamIds);
@@ -126,79 +128,79 @@ public class UnitTopologyRunner {
         }
 
         // connect router bolt and alert bolt, also define output streams for downstreaming alert publish bolt
-        for(int i=0; i<numOfAlertBolts; i++){
+        for (int i = 0; i < numOfAlertBolts; i++) {
             String boltName = alertBoltNamePrefix + i;
             BoltDeclarer boltDeclarer = builder.setBolt(boltName, alertBolts[i]);
-            for(int j=0; j<numOfRouterBolts; j++) {
-                String streamId = StreamIdConversion.generateStreamIdBetween(streamRouterBoltNamePrefix+j, boltName);
-                boltDeclarer.fieldsGrouping(streamRouterBoltNamePrefix+j, streamId, new Fields());
+            for (int j = 0; j < numOfRouterBolts; j++) {
+                String streamId = StreamIdConversion.generateStreamIdBetween(streamRouterBoltNamePrefix + j, boltName);
+                boltDeclarer.fieldsGrouping(streamRouterBoltNamePrefix + j, streamId, new Fields());
             }
         }
 
         // connect alert bolt and alert publish bolt, this is the last bolt in the pipeline
         BoltDeclarer boltDeclarer = builder.setBolt(alertPublishBoltName, publisherBolt).setNumTasks(numOfPublishTasks);
-        for(int i=0; i<numOfAlertBolts; i++) {
-            boltDeclarer.fieldsGrouping(alertBoltNamePrefix+i, new Fields(AlertConstants.FIELD_0));
+        for (int i = 0; i < numOfAlertBolts; i++) {
+            boltDeclarer.fieldsGrouping(alertBoltNamePrefix + i, new Fields(AlertConstants.FIELD_0));
         }
 
         return builder.createTopology();
     }
 
+    public StormTopology buildTopology(String topologyId, Config config) {
+        int numOfSpoutTasks = config.getInt("topology.numOfSpoutTasks");
+        int numOfRouterBolts = config.getInt("topology.numOfRouterBolts");
+        int numOfAlertBolts = config.getInt("topology.numOfAlertBolts");
+        int numOfPublishTasks = config.getInt("topology.numOfPublishTasks");
+        return buildTopology(topologyId, numOfSpoutTasks, numOfRouterBolts, numOfAlertBolts, numOfPublishTasks, config);
+    }
+
     private void run(String topologyId,
-                    int numOfTotalWorkers,
-                    int numOfSpoutTasks,
-                    int numOfRouterBolts,
-                    int numOfAlertBolts,
-                    int numOfPublishTasks,
-                    Config config,
-                    boolean localMode) {
+                     int numOfTotalWorkers,
+                     int numOfSpoutTasks,
+                     int numOfRouterBolts,
+                     int numOfAlertBolts,
+                     int numOfPublishTasks,
+                     Config config,
+                     boolean localMode) {
 
         backtype.storm.Config stormConfig = givenStormConfig == null ? new backtype.storm.Config() : givenStormConfig;
         // TODO: Configurable metric consumer instance number
 
-        int messageTimeoutSecs = config.hasPath(MESSAGE_TIMEOUT_SECS)?config.getInt(MESSAGE_TIMEOUT_SECS) : DEFAULT_MESSAGE_TIMEOUT_SECS;
-        LOG.info("Set topology.message.timeout.secs as {}",messageTimeoutSecs);
+        int messageTimeoutSecs = config.hasPath(MESSAGE_TIMEOUT_SECS) ? config.getInt(MESSAGE_TIMEOUT_SECS) : DEFAULT_MESSAGE_TIMEOUT_SECS;
+        LOG.info("Set topology.message.timeout.secs as {}", messageTimeoutSecs);
         stormConfig.setMessageTimeoutSecs(messageTimeoutSecs);
 
-        if(config.hasPath("metric")) {
-            stormConfig.registerMetricsConsumer(StormMetricTaggedConsumer.class, config.root().render(ConfigRenderOptions.concise()),1);
+        if (config.hasPath("metric")) {
+            stormConfig.registerMetricsConsumer(StormMetricTaggedConsumer.class, config.root().render(ConfigRenderOptions.concise()), 1);
         }
 
         stormConfig.setNumWorkers(numOfTotalWorkers);
         StormTopology topology = buildTopology(topologyId, numOfSpoutTasks, numOfRouterBolts, numOfAlertBolts, numOfPublishTasks, config);
 
-        if(localMode) {
+        if (localMode) {
             LOG.info("Submitting as local mode");
             LocalCluster cluster = new LocalCluster();
             cluster.submitTopology(topologyId, stormConfig, topology);
             Utils.sleep(Long.MAX_VALUE);
-        }else{
+        } else {
             LOG.info("Submitting as cluster mode");
             try {
                 StormSubmitter.submitTopologyWithProgressBar(topologyId, stormConfig, topology);
-            } catch(Exception ex) {
+            } catch (Exception ex) {
                 LOG.error("fail submitting topology {}", topology, ex);
                 throw new IllegalStateException(ex);
             }
         }
     }
 
-    public void run(String topologyId,Config config) {
+    public void run(String topologyId, Config config) {
         int numOfSpoutTasks = config.getInt(SPOUT_TASK_NUM);
         int numOfRouterBolts = config.getInt(ROUTER_TASK_NUM);
         int numOfAlertBolts = config.getInt(ALERT_TASK_NUM);
         int numOfPublishTasks = config.getInt(PUBLISH_TASK_NUM);
         boolean localMode = config.getBoolean(LOCAL_MODE);
         int numOfTotalWorkers = config.getInt(TOTAL_WORKER_NUM);
-        run(topologyId,numOfTotalWorkers, numOfSpoutTasks,numOfRouterBolts,numOfAlertBolts,numOfPublishTasks,config, localMode);
-    }
-
-    public StormTopology buildTopology(String topologyId,Config config) {
-        int numOfSpoutTasks = config.getInt("topology.numOfSpoutTasks");
-        int numOfRouterBolts = config.getInt("topology.numOfRouterBolts");
-        int numOfAlertBolts = config.getInt("topology.numOfAlertBolts");
-        int numOfPublishTasks = config.getInt("topology.numOfPublishTasks");
-        return buildTopology(topologyId,numOfSpoutTasks,numOfRouterBolts,numOfAlertBolts,numOfPublishTasks,config);
+        run(topologyId, numOfTotalWorkers, numOfSpoutTasks, numOfRouterBolts, numOfAlertBolts, numOfPublishTasks, config, localMode);
     }
 
     public IMetadataChangeNotifyService getMetadataChangeNotifyService() {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonScheme.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonScheme.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonScheme.java
index c1da90f..43df203 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonScheme.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonScheme.java
@@ -19,19 +19,18 @@
 
 package org.apache.eagle.alert.engine.scheme;
 
+import backtype.storm.spout.Scheme;
+import backtype.storm.tuple.Fields;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.slf4j.Logger;
-
-import backtype.storm.spout.Scheme;
-import backtype.storm.tuple.Fields;
-
 /**
- * Expects flat Json scheme
+ * Expects flat Json scheme.
  */
 public class JsonScheme implements Scheme {
     private static final long serialVersionUID = -8352896475656975577L;
@@ -54,16 +53,18 @@ public class JsonScheme implements Scheme {
     @SuppressWarnings("rawtypes")
     public List<Object> deserialize(byte[] ser) {
         try {
-            if(ser != null ) {
+            if (ser != null) {
                 Map map = mapper.readValue(ser, Map.class);
                 return Arrays.asList(topic, map);
-            }else{
-                if(LOG.isDebugEnabled()) LOG.debug("Content is null, ignore");
+            } else {
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Content is null, ignore");
+                }
             }
         } catch (IOException e) {
             try {
                 LOG.error("Failed to deserialize as JSON: {}", new String(ser, "UTF-8"), e);
-            }catch(Exception ex){
+            } catch (Exception ex) {
                 LOG.error(ex.getMessage(), ex);
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonStringStreamNameSelector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonStringStreamNameSelector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonStringStreamNameSelector.java
index 226dd84..4e02edb 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonStringStreamNameSelector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/JsonStringStreamNameSelector.java
@@ -19,23 +19,22 @@
 
 package org.apache.eagle.alert.engine.scheme;
 
-import java.util.Map;
-import java.util.Properties;
-
 import org.apache.eagle.alert.coordination.model.StreamNameSelector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Map;
+import java.util.Properties;
+
 /**
  * A strategy to get stream name from message tuple.
- * 
- * Since 5/5/16.
+ * @since 5/5/16.
  */
 public class JsonStringStreamNameSelector implements StreamNameSelector {
-    private final static Logger LOG = LoggerFactory.getLogger(JsonStringStreamNameSelector.class);
-    public final static String USER_PROVIDED_STREAM_NAME_PROPERTY = "userProvidedStreamName";
-    public final static String FIELD_NAMES_TO_INFER_STREAM_NAME_PROPERTY = "fieldNamesToInferStreamName";
-    public final static String STREAM_NAME_FORMAT = "streamNameFormat";
+    private static final  Logger LOG = LoggerFactory.getLogger(JsonStringStreamNameSelector.class);
+    public static final  String USER_PROVIDED_STREAM_NAME_PROPERTY = "userProvidedStreamName";
+    public static final  String FIELD_NAMES_TO_INFER_STREAM_NAME_PROPERTY = "fieldNamesToInferStreamName";
+    public static final  String STREAM_NAME_FORMAT = "streamNameFormat";
 
     private String userProvidedStreamName;
     private String[] fieldNamesToInferStreamName;
@@ -70,5 +69,5 @@ public class JsonStringStreamNameSelector implements StreamNameSelector {
         }
         return "defaultStringStream";
     }
-    
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringScheme.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringScheme.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringScheme.java
index 194b0c2..57c8897 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringScheme.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringScheme.java
@@ -19,21 +19,20 @@
 
 package org.apache.eagle.alert.engine.scheme;
 
+import backtype.storm.spout.Scheme;
+import backtype.storm.tuple.Fields;
+import backtype.storm.tuple.Values;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import backtype.storm.spout.Scheme;
-import backtype.storm.tuple.Fields;
-import backtype.storm.tuple.Values;
-
 /**
- * used for parsing plain string
+ * used for parsing plain string.
  */
 public class PlainStringScheme implements Scheme {
     private static final long serialVersionUID = 5969724968671646310L;
@@ -42,7 +41,7 @@ public class PlainStringScheme implements Scheme {
     private String topic;
 
     @SuppressWarnings("rawtypes")
-    public PlainStringScheme(String topic, Map conf){
+    public PlainStringScheme(String topic, Map conf) {
         this.topic = topic;
     }
 
@@ -57,7 +56,7 @@ public class PlainStringScheme implements Scheme {
         return new Fields(STRING_SCHEME_KEY);
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+    @SuppressWarnings( {"unchecked", "rawtypes"})
     @Override
     public List<Object> deserialize(byte[] ser) {
         Map m = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringStreamNameSelector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringStreamNameSelector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringStreamNameSelector.java
index 61ec943..0b88483 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringStreamNameSelector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/scheme/PlainStringStreamNameSelector.java
@@ -19,29 +19,31 @@
 
 package org.apache.eagle.alert.engine.scheme;
 
-import java.util.Map;
-import java.util.Properties;
-
 import org.apache.eagle.alert.coordination.model.StreamNameSelector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Map;
+import java.util.Properties;
+
 /**
  * Since 5/3/16.
  */
 public class PlainStringStreamNameSelector implements StreamNameSelector {
     @SuppressWarnings("unused")
     private static final Logger LOG = LoggerFactory.getLogger(PlainStringStreamNameSelector.class);
-    private final static String USER_PROVIDED_STREAM_NAME_PROPERTY = "userProvidedStreamName";
+    private static final String USER_PROVIDED_STREAM_NAME_PROPERTY = "userProvidedStreamName";
     private static final String DEFAULT_STRING_STREAM_NAME = "defaultStringStream";
 
     private String streamName;
 
-    public PlainStringStreamNameSelector(Properties prop){
+    public PlainStringStreamNameSelector(Properties prop) {
         streamName = prop.getProperty(USER_PROVIDED_STREAM_NAME_PROPERTY);
-        if(streamName == null)
+        if (streamName == null) {
             streamName = DEFAULT_STRING_STREAM_NAME;
+        }
     }
+
     @Override
     public String getStreamName(Map<String, Object> tuple) {
         return streamName;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventDigestSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventDigestSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventDigestSerializer.java
index 03c1dfb..1e8f440 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventDigestSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventDigestSerializer.java
@@ -16,18 +16,18 @@
  */
 package org.apache.eagle.alert.engine.serialization;
 
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
 import org.apache.eagle.alert.engine.serialization.impl.StreamEventSerializer;
 import org.apache.eagle.alert.engine.serialization.impl.StreamPartitionDigestSerializer;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
 /**
- * TODO: Seams the complexity dosen't bring enough performance improve
+ * TODO: Seams the complexity dosen't bring enough performance improve.
  *
  * @see PartitionedEvent
  */
@@ -36,7 +36,7 @@ public class PartitionedEventDigestSerializer implements Serializer<PartitionedE
     private final Serializer<StreamEvent> streamEventSerializer;
     private final Serializer<StreamPartition> streamPartitionSerializer;
 
-    public PartitionedEventDigestSerializer(SerializationMetadataProvider serializationMetadataProvider){
+    public PartitionedEventDigestSerializer(SerializationMetadataProvider serializationMetadataProvider) {
         this.streamEventSerializer = new StreamEventSerializer(serializationMetadataProvider);
         this.streamPartitionSerializer = StreamPartitionDigestSerializer.INSTANCE;
     }
@@ -44,8 +44,8 @@ public class PartitionedEventDigestSerializer implements Serializer<PartitionedE
     @Override
     public void serialize(PartitionedEvent entity, DataOutput dataOutput) throws IOException {
         dataOutput.writeLong(entity.getPartitionKey());
-        streamEventSerializer.serialize(entity.getEvent(),dataOutput);
-        streamPartitionSerializer.serialize(entity.getPartition(),dataOutput);
+        streamEventSerializer.serialize(entity.getEvent(), dataOutput);
+        streamPartitionSerializer.serialize(entity.getPartition(), dataOutput);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializer.java
index f653361..428ad34 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/PartitionedEventSerializer.java
@@ -16,24 +16,13 @@
  */
 package org.apache.eagle.alert.engine.serialization;
 
-import java.io.IOException;
-
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 
+import java.io.IOException;
+
 public interface PartitionedEventSerializer {
-    /**
-     *
-     * @param entity
-     * @return
-     * @throws IOException
-     */
+
     byte[] serialize(PartitionedEvent entity) throws IOException;
 
-    /**
-     *
-     * @param bytes
-     * @return
-     * @throws IOException
-     */
     PartitionedEvent deserialize(byte[] bytes) throws IOException;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/SerializationMetadataProvider.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/SerializationMetadataProvider.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/SerializationMetadataProvider.java
index 69bb695..42f0559 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/SerializationMetadataProvider.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/SerializationMetadataProvider.java
@@ -19,15 +19,13 @@ package org.apache.eagle.alert.engine.serialization;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinitionNotFoundException;
 
-import java.io.IOException;
-
 /**
- * Integration interface to provide stream definition for serializer
+ * Integration interface to provide stream definition for serializer.
  */
 public interface SerializationMetadataProvider {
     /**
      * @param streamId
-     * @return StreamDefinition or null if not exist
+     * @return StreamDefinition or null if not exist.
      */
     StreamDefinition getStreamDefinition(String streamId) throws StreamDefinitionNotFoundException;
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializer.java
index c2f87d0..599152e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializer.java
@@ -21,6 +21,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 public interface Serializer<V> {
-    void serialize(V value,DataOutput dataOutput) throws IOException;
+    void serialize(V value, DataOutput dataOutput) throws IOException;
+
     V deserialize(DataInput dataInput) throws IOException;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializers.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializers.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializers.java
index 6be8f1a..a84b5dc 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializers.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/Serializers.java
@@ -16,49 +16,42 @@
  */
 package org.apache.eagle.alert.engine.serialization;
 
+import org.apache.eagle.alert.engine.coordinator.StreamColumn;
+import org.apache.eagle.alert.engine.serialization.impl.*;
+
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.eagle.alert.engine.coordinator.StreamColumn;
-import org.apache.eagle.alert.engine.serialization.impl.BooleanSerializer;
-import org.apache.eagle.alert.engine.serialization.impl.DoubleSerializer;
-import org.apache.eagle.alert.engine.serialization.impl.FloatSerializer;
-import org.apache.eagle.alert.engine.serialization.impl.IntegerSerializer;
-import org.apache.eagle.alert.engine.serialization.impl.JavaObjectSerializer;
-import org.apache.eagle.alert.engine.serialization.impl.LongSerializer;
-import org.apache.eagle.alert.engine.serialization.impl.PartitionedEventSerializerImpl;
-import org.apache.eagle.alert.engine.serialization.impl.StringSerializer;
-
 public class Serializers {
-    private final static Map<StreamColumn.Type,Serializer<?>> COLUMN_TYPE_SER_MAPPING = new HashMap<>();
+    private static final Map<StreamColumn.Type, Serializer<?>> COLUMN_TYPE_SER_MAPPING = new HashMap<>();
 
-    public static <T> void register(StreamColumn.Type type,Serializer<T> serializer){
-        if(COLUMN_TYPE_SER_MAPPING.containsKey(type)){
-            throw new IllegalArgumentException("Duplicated column type: "+type);
+    public static <T> void register(StreamColumn.Type type, Serializer<T> serializer) {
+        if (COLUMN_TYPE_SER_MAPPING.containsKey(type)) {
+            throw new IllegalArgumentException("Duplicated column type: " + type);
         }
-        COLUMN_TYPE_SER_MAPPING.put(type,serializer);
+        COLUMN_TYPE_SER_MAPPING.put(type, serializer);
     }
 
     @SuppressWarnings("unchecked")
-    public static <T> Serializer<T> getColumnSerializer(StreamColumn.Type type){
-        if(COLUMN_TYPE_SER_MAPPING.containsKey(type)){
+    public static <T> Serializer<T> getColumnSerializer(StreamColumn.Type type) {
+        if (COLUMN_TYPE_SER_MAPPING.containsKey(type)) {
             return (Serializer<T>) COLUMN_TYPE_SER_MAPPING.get(type);
-        }else{
-            throw new IllegalArgumentException("Serializer of type: "+type+" not found");
+        } else {
+            throw new IllegalArgumentException("Serializer of type: " + type + " not found");
         }
     }
 
-    public static PartitionedEventSerializer newPartitionedEventSerializer(SerializationMetadataProvider metadataProvider){
+    public static PartitionedEventSerializer newPartitionedEventSerializer(SerializationMetadataProvider metadataProvider) {
         return new PartitionedEventSerializerImpl(metadataProvider);
     }
 
     static {
-        register(StreamColumn.Type.STRING,new StringSerializer());
-        register(StreamColumn.Type.INT,new IntegerSerializer());
-        register(StreamColumn.Type.LONG,new LongSerializer());
-        register(StreamColumn.Type.FLOAT,new FloatSerializer());
-        register(StreamColumn.Type.DOUBLE,new DoubleSerializer());
-        register(StreamColumn.Type.BOOL,new BooleanSerializer());
-        register(StreamColumn.Type.OBJECT,new JavaObjectSerializer());
+        register(StreamColumn.Type.STRING, new StringSerializer());
+        register(StreamColumn.Type.INT, new IntegerSerializer());
+        register(StreamColumn.Type.LONG, new LongSerializer());
+        register(StreamColumn.Type.FLOAT, new FloatSerializer());
+        register(StreamColumn.Type.DOUBLE, new DoubleSerializer());
+        register(StreamColumn.Type.BOOL, new BooleanSerializer());
+        register(StreamColumn.Type.OBJECT, new JavaObjectSerializer());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/BooleanSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/BooleanSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/BooleanSerializer.java
index db91a70..1e90569 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/BooleanSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/BooleanSerializer.java
@@ -1,11 +1,11 @@
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/DoubleSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/DoubleSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/DoubleSerializer.java
index f2f5359..ad5f53c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/DoubleSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/DoubleSerializer.java
@@ -1,11 +1,11 @@
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/FloatSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/FloatSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/FloatSerializer.java
index e6b510a..18089a9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/FloatSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/FloatSerializer.java
@@ -1,11 +1,11 @@
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/IntegerSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/IntegerSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/IntegerSerializer.java
index f784456..d2473a9 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/IntegerSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/IntegerSerializer.java
@@ -1,11 +1,11 @@
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/JavaObjectSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/JavaObjectSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/JavaObjectSerializer.java
index 39baf2b..14d9ea5 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/JavaObjectSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/JavaObjectSerializer.java
@@ -16,14 +16,14 @@
  */
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.serialization.Serializer;
+import org.apache.commons.lang3.SerializationUtils;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.io.Serializable;
 
-import org.apache.commons.lang3.SerializationUtils;
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 public class JavaObjectSerializer implements Serializer<Object> {
     @Override
     public void serialize(Object value, DataOutput dataOutput) throws IOException {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/LongSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/LongSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/LongSerializer.java
index 116b275..8d85c76 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/LongSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/LongSerializer.java
@@ -1,11 +1,11 @@
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/PartitionedEventSerializerImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/PartitionedEventSerializerImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/PartitionedEventSerializerImpl.java
index 5a3d77d..2b0140f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/PartitionedEventSerializerImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/PartitionedEventSerializerImpl.java
@@ -16,10 +16,6 @@
  */
 package org.apache.eagle.alert.engine.serialization.impl;
 
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
@@ -27,23 +23,27 @@ import org.apache.eagle.alert.engine.serialization.PartitionedEventSerializer;
 import org.apache.eagle.alert.engine.serialization.SerializationMetadataProvider;
 import org.apache.eagle.alert.engine.serialization.Serializer;
 import org.apache.eagle.alert.engine.utils.CompressionUtils;
-
 import com.google.common.io.ByteArrayDataOutput;
 import com.google.common.io.ByteStreams;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
 /**
  * Stream Metadata Cached Serializer
  *
- * Performance:
+ * <p> Performance:
  *
  * 1) VS Kryo Direct: reduce 73.4% space (bytes) and 42.5 % time (ms).
  * 2) VS Java Native: reduce 92.5% space (bytes) and 94.2% time (ms)
+ * </p>
  *
- * Tips:
- *
+ * <p>Tips:
  * 1) Without-compression performs better than with compression for small event
+ * </p>
  *
- * TODO: Cache Partition would save little space but almost half of serialization time, how to balance the performance?
+ * <p>TODO: Cache Partition would save little space but almost half of serialization time, how to balance the performance?</p>
  *
  * @see PartitionedEvent
  */
@@ -53,10 +53,10 @@ public class PartitionedEventSerializerImpl implements Serializer<PartitionedEve
     private final boolean compress;
 
     /**
-     * @param serializationMetadataProvider metadata provider
-     * @param compress false by default
+     * @param serializationMetadataProvider metadata provider.
+     * @param compress                      false by default.
      */
-    public PartitionedEventSerializerImpl(SerializationMetadataProvider serializationMetadataProvider,boolean compress) {
+    public PartitionedEventSerializerImpl(SerializationMetadataProvider serializationMetadataProvider, boolean compress) {
         this.streamEventSerializer = new StreamEventSerializer(serializationMetadataProvider);
         this.streamPartitionSerializer = StreamPartitionSerializer.INSTANCE;
         this.compress = compress;
@@ -76,6 +76,13 @@ public class PartitionedEventSerializerImpl implements Serializer<PartitionedEve
     }
 
     @Override
+    public byte[] serialize(PartitionedEvent entity) throws IOException {
+        ByteArrayDataOutput dataOutput = ByteStreams.newDataOutput();
+        this.serialize(entity, dataOutput);
+        return compress ? CompressionUtils.compress(dataOutput.toByteArray()) : dataOutput.toByteArray();
+    }
+
+    @Override
     public PartitionedEvent deserialize(DataInput dataInput) throws IOException {
         PartitionedEvent event = new PartitionedEvent();
         event.setPartitionKey(dataInput.readLong());
@@ -87,15 +94,9 @@ public class PartitionedEventSerializerImpl implements Serializer<PartitionedEve
         return event;
     }
 
-    @Override
-    public byte[] serialize(PartitionedEvent entity) throws IOException {
-        ByteArrayDataOutput dataOutput = ByteStreams.newDataOutput();
-        this.serialize(entity,dataOutput);
-        return compress ? CompressionUtils.compress(dataOutput.toByteArray()):dataOutput.toByteArray();
-    }
 
     @Override
     public PartitionedEvent deserialize(byte[] bytes) throws IOException {
-        return this.deserialize(ByteStreams.newDataInput(compress ? CompressionUtils.decompress(bytes):bytes));
+        return this.deserialize(ByteStreams.newDataInput(compress ? CompressionUtils.decompress(bytes) : bytes));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamEventSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamEventSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamEventSerializer.java
index e13b23f..d7119db 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamEventSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamEventSerializer.java
@@ -29,25 +29,22 @@ import java.io.IOException;
 import java.util.BitSet;
 
 /**
+ * StreamEventSerializer.
+ *
  * @see StreamEvent
  */
 public class StreamEventSerializer implements Serializer<StreamEvent> {
     private final SerializationMetadataProvider serializationMetadataProvider;
 
-    public StreamEventSerializer(SerializationMetadataProvider serializationMetadataProvider){
+    public StreamEventSerializer(SerializationMetadataProvider serializationMetadataProvider) {
         this.serializationMetadataProvider = serializationMetadataProvider;
     }
 
-    /**
-     *
-     * @param objects
-     * @return
-     */
-    private BitSet isNullBitSet(Object[] objects){
+    private BitSet isNullBitSet(Object[] objects) {
         BitSet bitSet = new BitSet();
         int i = 0;
-        for(Object obj:objects){
-            bitSet.set(i,obj == null);
+        for (Object obj : objects) {
+            bitSet.set(i, obj == null);
             i++;
         }
         return bitSet;
@@ -58,28 +55,30 @@ public class StreamEventSerializer implements Serializer<StreamEvent> {
         // Bryant: here "metaVersion/streamId" writes to dataOutputUTF
         String metaVersion = event.getMetaVersion();
         String streamId = event.getStreamId();
-        String metaVersion_streamId = String.format("%s/%s", metaVersion, streamId);
+        String metaVersionStreamId = String.format("%s/%s", metaVersion, streamId);
 
-        dataOutput.writeUTF(metaVersion_streamId);
+        dataOutput.writeUTF(metaVersionStreamId);
         dataOutput.writeLong(event.getTimestamp());
-        if(event.getData() == null || event.getData().length == 0){
+        if (event.getData() == null || event.getData().length == 0) {
             dataOutput.writeInt(0);
-        }else{
+        } else {
             BitSet isNullIndex = isNullBitSet(event.getData());
             byte[] isNullBytes = isNullIndex.toByteArray();
             dataOutput.writeInt(isNullBytes.length);
             dataOutput.write(isNullBytes);
-            int i =0;
+            int i = 0;
             StreamDefinition definition = serializationMetadataProvider.getStreamDefinition(event.getStreamId());
-            if(definition == null) throw new IOException("StreamDefinition not found: "+event.getStreamId());
-            if(event.getData().length != definition.getColumns().size()){
-                throw new IOException("Event :"+event+" doesn't match with schema: "+definition);
+            if (definition == null) {
+                throw new IOException("StreamDefinition not found: " + event.getStreamId());
+            }
+            if (event.getData().length != definition.getColumns().size()) {
+                throw new IOException("Event :" + event + " doesn't match with schema: " + definition);
             }
-            for(StreamColumn column:definition.getColumns()){
-                if(!isNullIndex.get(i)) {
-                    Serializers.getColumnSerializer(column.getType()).serialize(event.getData()[i],dataOutput);
+            for (StreamColumn column : definition.getColumns()) {
+                if (!isNullIndex.get(i)) {
+                    Serializers.getColumnSerializer(column.getType()).serialize(event.getData()[i], dataOutput);
                 }
-                i ++;
+                i++;
             }
         }
     }
@@ -87,9 +86,9 @@ public class StreamEventSerializer implements Serializer<StreamEvent> {
     @Override
     public StreamEvent deserialize(DataInput dataInput) throws IOException {
         StreamEvent event = new StreamEvent();
-        String metaVersion_streamId = dataInput.readUTF();
-        String streamId = metaVersion_streamId.split("/")[1];
-        String metaVersion = metaVersion_streamId.split("/")[0];
+        String metaVersionStreamId = dataInput.readUTF();
+        String streamId = metaVersionStreamId.split("/")[1];
+        String metaVersion = metaVersionStreamId.split("/")[0];
         event.setStreamId(streamId);
         event.setMetaVersion(metaVersion);
 
@@ -101,11 +100,11 @@ public class StreamEventSerializer implements Serializer<StreamEvent> {
         BitSet isNullIndex = BitSet.valueOf(isNullBytes);
         Object[] attributes = new Object[definition.getColumns().size()];
         int i = 0;
-        for(StreamColumn column:definition.getColumns()){
-            if(!isNullIndex.get(i)) {
+        for (StreamColumn column : definition.getColumns()) {
+            if (!isNullIndex.get(i)) {
                 attributes[i] = Serializers.getColumnSerializer(column.getType()).deserialize(dataInput);
             }
-            i ++;
+            i++;
         }
         event.setData(attributes);
         return event;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionDigestSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionDigestSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionDigestSerializer.java
index f35da39..6a47f1e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionDigestSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionDigestSerializer.java
@@ -16,39 +16,35 @@
  */
 package org.apache.eagle.alert.engine.serialization.impl;
 
-import java.io.ByteArrayOutputStream;
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
+import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
+import java.io.*;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
- * Don't serialize streamId
+ * Don't serialize streamId.
  *
  * @see StreamPartition
  */
 public class StreamPartitionDigestSerializer implements Serializer<StreamPartition> {
-    public final static StreamPartitionDigestSerializer INSTANCE = new StreamPartitionDigestSerializer();
+    public static final StreamPartitionDigestSerializer INSTANCE = new StreamPartitionDigestSerializer();
 
-    private final Map<DigestBytes,StreamPartition> checkSumPartitionMap = new HashMap<>();
-    private final Map<StreamPartition,DigestBytes> partitionCheckSumMap = new HashMap<>();
+    private final Map<DigestBytes, StreamPartition> checkSumPartitionMap = new HashMap<>();
+    private final Map<StreamPartition, DigestBytes> partitionCheckSumMap = new HashMap<>();
 
     @Override
     public void serialize(StreamPartition partition, DataOutput dataOutput) throws IOException {
         DigestBytes checkSum = partitionCheckSumMap.get(partition);
-        if(checkSum == null){
+        if (checkSum == null) {
             try {
                 checkSum = digestCheckSum(partition);
-                partitionCheckSumMap.put(partition,checkSum);
-                checkSumPartitionMap.put(checkSum,partition);
+                partitionCheckSumMap.put(partition, checkSum);
+                checkSumPartitionMap.put(checkSum, partition);
             } catch (NoSuchAlgorithmException e) {
                 throw new IOException(e);
             }
@@ -63,8 +59,8 @@ public class StreamPartitionDigestSerializer implements Serializer<StreamPartiti
         byte[] checksum = new byte[checkSumLen];
         dataInput.readFully(checksum);
         StreamPartition partition = checkSumPartitionMap.get(new DigestBytes(checksum));
-        if(partition == null){
-            throw new IOException("Illegal partition checksum: "+checksum);
+        if (partition == null) {
+            throw new IOException("Illegal partition checksum: " + checksum);
         }
         return partition;
     }
@@ -72,7 +68,7 @@ public class StreamPartitionDigestSerializer implements Serializer<StreamPartiti
     private class DigestBytes {
         private final byte[] data;
 
-        public DigestBytes(byte[] bytes){
+        public DigestBytes(byte[] bytes) {
             this.data = bytes;
         }
 
@@ -85,10 +81,12 @@ public class StreamPartitionDigestSerializer implements Serializer<StreamPartiti
         public int hashCode() {
             return Arrays.hashCode(data);
         }
-        public int size(){
+
+        public int size() {
             return data.length;
         }
-        public byte[] toByteArray(){
+
+        public byte[] toByteArray() {
             return data;
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionSerializer.java
index 4105277..411368f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StreamPartitionSerializer.java
@@ -16,38 +16,38 @@
  */
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.coordinator.StreamPartition;
+import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
- * Don't serialize streamId
+ * Don't serialize streamId.
  *
  * @see StreamPartition
  */
 public class StreamPartitionSerializer implements Serializer<StreamPartition> {
-    public final static StreamPartitionSerializer INSTANCE = new StreamPartitionSerializer();
+    public static final StreamPartitionSerializer INSTANCE = new StreamPartitionSerializer();
 
     @Override
     public void serialize(StreamPartition partition, DataOutput dataOutput) throws IOException {
         dataOutput.writeUTF(partition.getType().toString());
-        if(partition.getColumns() == null || partition.getColumns().size() == 0){
+        if (partition.getColumns() == null || partition.getColumns().size() == 0) {
             dataOutput.writeInt(0);
         } else {
             dataOutput.writeInt(partition.getColumns().size());
-            for(String column:partition.getColumns()){
+            for (String column : partition.getColumns()) {
                 dataOutput.writeUTF(column);
             }
         }
-        if(partition.getSortSpec() == null){
+        if (partition.getSortSpec() == null) {
             dataOutput.writeByte(0);
-        }else {
+        } else {
             dataOutput.writeByte(1);
             dataOutput.writeUTF(partition.getSortSpec().getWindowPeriod());
             dataOutput.writeInt(partition.getSortSpec().getWindowMargin());
@@ -59,14 +59,14 @@ public class StreamPartitionSerializer implements Serializer<StreamPartition> {
         StreamPartition partition = new StreamPartition();
         partition.setType(StreamPartition.Type.locate(dataInput.readUTF()));
         int colSize = dataInput.readInt();
-        if(colSize>0){
+        if (colSize > 0) {
             List<String> columns = new ArrayList<>(colSize);
-            for(int i=0;i<colSize;i++){
+            for (int i = 0; i < colSize; i++) {
                 columns.add(dataInput.readUTF());
             }
             partition.setColumns(columns);
         }
-        if(dataInput.readByte() == 1){
+        if (dataInput.readByte() == 1) {
             String period = dataInput.readUTF();
             int margin = dataInput.readInt();
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StringSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StringSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StringSerializer.java
index 940024d..2a1541a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StringSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/serialization/impl/StringSerializer.java
@@ -1,11 +1,11 @@
 package org.apache.eagle.alert.engine.serialization.impl;
 
+import org.apache.eagle.alert.engine.serialization.Serializer;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.eagle.alert.engine.serialization.Serializer;
-
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregator.java
index b705564..599f349 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectAggregator.java
@@ -18,8 +18,7 @@
  */
 package org.apache.eagle.alert.engine.siddhi.extension;
 
-import java.util.LinkedList;
-
+import com.google.common.collect.ImmutableList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wso2.siddhi.core.config.ExecutionPlanContext;
@@ -28,11 +27,10 @@ import org.wso2.siddhi.core.query.selector.attribute.aggregator.AttributeAggrega
 import org.wso2.siddhi.query.api.definition.Attribute;
 import org.wso2.siddhi.query.api.definition.Attribute.Type;
 
-import com.google.common.collect.ImmutableList;
+import java.util.LinkedList;
 
 /**
- * @since Apr 1, 2016
- *
+ * @since Apr 1, 2016.
  */
 public class AttributeCollectAggregator extends AttributeAggregator {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectWithDistinctAggregator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectWithDistinctAggregator.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectWithDistinctAggregator.java
index 43400c7..101d05b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectWithDistinctAggregator.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/AttributeCollectWithDistinctAggregator.java
@@ -16,8 +16,7 @@
  */
 package org.apache.eagle.alert.engine.siddhi.extension;
 
-import java.util.LinkedList;
-
+import com.google.common.collect.ImmutableList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wso2.siddhi.core.config.ExecutionPlanContext;
@@ -26,7 +25,7 @@ import org.wso2.siddhi.core.query.selector.attribute.aggregator.AttributeAggrega
 import org.wso2.siddhi.query.api.definition.Attribute;
 import org.wso2.siddhi.query.api.definition.Attribute.Type;
 
-import com.google.common.collect.ImmutableList;
+import java.util.LinkedList;
 
 public class AttributeCollectWithDistinctAggregator extends AttributeAggregator {
 
@@ -73,11 +72,11 @@ public class AttributeCollectWithDistinctAggregator extends AttributeAggregator
 
     @Override
     public Object processAdd(Object arg0) {
-    	// AttributeAggregator.process is already synchronized
-    	if (value.contains(arg0)) {
-    		value.remove(arg0);
-    	}
-    	value.add(arg0);
+        // AttributeAggregator.process is already synchronized
+        if (value.contains(arg0)) {
+            value.remove(arg0);
+        }
+        value.add(arg0);
         if (LOG.isDebugEnabled()) {
             LOG.debug("processAdd: current values are : " + value);
         }
@@ -86,11 +85,11 @@ public class AttributeCollectWithDistinctAggregator extends AttributeAggregator
 
     @Override
     public Object processAdd(Object[] arg0) {
-    	// AttributeAggregator.process is already synchronized
-    	if (value.contains(arg0)) {
-    		value.remove(arg0);
-    	}
-    	value.add(arg0);
+        // AttributeAggregator.process is already synchronized
+        if (value.contains(arg0)) {
+            value.remove(arg0);
+        }
+        value.add(arg0);
         if (LOG.isDebugEnabled()) {
             LOG.debug("processAdd: current values are : " + value);
         }
@@ -120,5 +119,5 @@ public class AttributeCollectWithDistinctAggregator extends AttributeAggregator
         value.clear();
         return value;
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/ContainsIgnoreCaseExtension.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/ContainsIgnoreCaseExtension.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/ContainsIgnoreCaseExtension.java
index 1bd24ed..27df63b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/ContainsIgnoreCaseExtension.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/ContainsIgnoreCaseExtension.java
@@ -31,16 +31,16 @@ public class ContainsIgnoreCaseExtension extends FunctionExecutor {
     @Override
     protected void init(ExpressionExecutor[] attributeExpressionExecutors, ExecutionPlanContext executionPlanContext) {
         if (attributeExpressionExecutors.length != 2) {
-            throw new ExecutionPlanValidationException("Invalid no of arguments passed to str:containsIgnoreCase() function, required 2, " +
-                    "but found " + attributeExpressionExecutors.length);
+            throw new ExecutionPlanValidationException("Invalid no of arguments passed to str:containsIgnoreCase() function, required 2, "
+                + "but found " + attributeExpressionExecutors.length);
         }
         if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) {
-            throw new ExecutionPlanValidationException("Invalid parameter type found for the first argument of str:containsIgnoreCase() function, " +
-                    "required "+ Attribute.Type.STRING+", but found "+attributeExpressionExecutors[0].getReturnType().toString());
+            throw new ExecutionPlanValidationException("Invalid parameter type found for the first argument of str:containsIgnoreCase() function, "
+                + "required " + Attribute.Type.STRING + ", but found " + attributeExpressionExecutors[0].getReturnType().toString());
         }
         if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) {
-            throw new ExecutionPlanValidationException("Invalid parameter type found for the second argument of str:containsIgnoreCase() function, " +
-                    "required "+ Attribute.Type.STRING+", but found "+attributeExpressionExecutors[1].getReturnType().toString());
+            throw new ExecutionPlanValidationException("Invalid parameter type found for the second argument of str:containsIgnoreCase() function, "
+                + "required " + Attribute.Type.STRING + ", but found " + attributeExpressionExecutors[1].getReturnType().toString());
         }
     }
 
@@ -52,8 +52,8 @@ public class ContainsIgnoreCaseExtension extends FunctionExecutor {
         if (data[1] == null) {
             throw new ExecutionPlanRuntimeException("Invalid input given to str:containsIgnoreCase() function. Second argument cannot be null");
         }
-        String str1 = (String)data[0];
-        String str2 = (String)data[1];
+        String str1 = (String) data[0];
+        String str2 = (String) data[1];
         return str1.toUpperCase().contains(str2.toUpperCase());
     }
 
@@ -79,7 +79,7 @@ public class ContainsIgnoreCaseExtension extends FunctionExecutor {
 
     @Override
     public Object[] currentState() {
-        return new Object[]{};
+        return new Object[] {};
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/EqualsIgnoreCaseExtension.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/EqualsIgnoreCaseExtension.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/EqualsIgnoreCaseExtension.java
index e99c4b9..1292e05 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/EqualsIgnoreCaseExtension.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/EqualsIgnoreCaseExtension.java
@@ -19,15 +19,11 @@ package org.apache.eagle.alert.engine.siddhi.extension;
 
 import org.wso2.siddhi.core.config.ExecutionPlanContext;
 import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException;
-import org.wso2.siddhi.core.executor.ConstantExpressionExecutor;
 import org.wso2.siddhi.core.executor.ExpressionExecutor;
 import org.wso2.siddhi.core.executor.function.FunctionExecutor;
 import org.wso2.siddhi.query.api.definition.Attribute;
 import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 public class EqualsIgnoreCaseExtension extends FunctionExecutor {
 
     Attribute.Type returnType = Attribute.Type.BOOL;
@@ -35,16 +31,16 @@ public class EqualsIgnoreCaseExtension extends FunctionExecutor {
     @Override
     protected void init(ExpressionExecutor[] attributeExpressionExecutors, ExecutionPlanContext executionPlanContext) {
         if (attributeExpressionExecutors.length != 2) {
-            throw new ExecutionPlanValidationException("Invalid no of arguments passed to str:equalsIgnoreCase() function, required 2, " +
-                    "but found " + attributeExpressionExecutors.length);
+            throw new ExecutionPlanValidationException("Invalid no of arguments passed to str:equalsIgnoreCase() function, required 2, "
+                + "but found " + attributeExpressionExecutors.length);
         }
         if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) {
-            throw new ExecutionPlanValidationException("Invalid parameter type found for the first argument of str:equalsIgnoreCase() function, " +
-                    "required "+ Attribute.Type.STRING+", but found "+attributeExpressionExecutors[0].getReturnType().toString());
+            throw new ExecutionPlanValidationException("Invalid parameter type found for the first argument of str:equalsIgnoreCase() function, "
+                + "required " + Attribute.Type.STRING + ", but found " + attributeExpressionExecutors[0].getReturnType().toString());
         }
         if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) {
-            throw new ExecutionPlanValidationException("Invalid parameter type found for the second argument of str:equalsIgnoreCase() function, " +
-                    "required "+ Attribute.Type.STRING+", but found "+attributeExpressionExecutors[1].getReturnType().toString());
+            throw new ExecutionPlanValidationException("Invalid parameter type found for the second argument of str:equalsIgnoreCase() function, "
+                + "required " + Attribute.Type.STRING + ", but found " + attributeExpressionExecutors[1].getReturnType().toString());
         }
     }
 
@@ -56,8 +52,8 @@ public class EqualsIgnoreCaseExtension extends FunctionExecutor {
         if (data[1] == null) {
             throw new ExecutionPlanRuntimeException("Invalid input given to str:equalsIgnoreCase() function. Second argument cannot be null");
         }
-        String str1 = (String)data[0];
-        String str2 = (String)data[1];
+        String str1 = (String) data[0];
+        String str2 = (String) data[1];
         return str1.equalsIgnoreCase(str2);
     }
 
@@ -83,7 +79,7 @@ public class EqualsIgnoreCaseExtension extends FunctionExecutor {
 
     @Override
     public Object[] currentState() {
-        return new Object[]{};
+        return new Object[] {};
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/RegexpIgnoreCaseFunctionExtension.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/RegexpIgnoreCaseFunctionExtension.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/RegexpIgnoreCaseFunctionExtension.java
index d384d47..fe2280f 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/RegexpIgnoreCaseFunctionExtension.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/siddhi/extension/RegexpIgnoreCaseFunctionExtension.java
@@ -44,18 +44,18 @@ public class RegexpIgnoreCaseFunctionExtension extends RegexpFunctionExtension {
     @Override
     protected void init(ExpressionExecutor[] attributeExpressionExecutors, ExecutionPlanContext executionPlanContext) {
         if (attributeExpressionExecutors.length != 2) {
-            throw new ExecutionPlanValidationException("Invalid no of arguments passed to str:regexpIgnoreCase() function, required 2, " +
-                    "but found " + attributeExpressionExecutors.length);
+            throw new ExecutionPlanValidationException("Invalid no of arguments passed to str:regexpIgnoreCase() function, required 2, "
+                + "but found " + attributeExpressionExecutors.length);
         }
         if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) {
-            throw new ExecutionPlanValidationException("Invalid parameter type found for the first argument of str:regexpIgnoreCase() function, " +
-                    "required "+ Attribute.Type.STRING+", but found "+attributeExpressionExecutors[0].getReturnType().toString());
+            throw new ExecutionPlanValidationException("Invalid parameter type found for the first argument of str:regexpIgnoreCase() function, "
+                + "required " + Attribute.Type.STRING + ", but found " + attributeExpressionExecutors[0].getReturnType().toString());
         }
         if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) {
-            throw new ExecutionPlanValidationException("Invalid parameter type found for the second argument of str:regexpIgnoreCase() function, " +
-                    "required "+ Attribute.Type.STRING+", but found "+attributeExpressionExecutors[1].getReturnType().toString());
+            throw new ExecutionPlanValidationException("Invalid parameter type found for the second argument of str:regexpIgnoreCase() function, "
+                + "required " + Attribute.Type.STRING + ", but found " + attributeExpressionExecutors[1].getReturnType().toString());
         }
-        if(attributeExpressionExecutors[1] instanceof ConstantExpressionExecutor){
+        if (attributeExpressionExecutors[1] instanceof ConstantExpressionExecutor) {
             isRegexConstant = true;
             regexConstant = (String) ((ConstantExpressionExecutor) attributeExpressionExecutors[1]).getValue();
             patternConstant = Pattern.compile(regexConstant, Pattern.CASE_INSENSITIVE);
@@ -76,7 +76,7 @@ public class RegexpIgnoreCaseFunctionExtension extends RegexpFunctionExtension {
         }
         String source = (String) data[0];
 
-        if(!isRegexConstant){
+        if (!isRegexConstant) {
             regex = (String) data[1];
             pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
             matcher = pattern.matcher(source);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/BaseStreamWindow.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/BaseStreamWindow.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/BaseStreamWindow.java
index 38c5c30..0f75b6a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/BaseStreamWindow.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/sorter/BaseStreamWindow.java
@@ -16,18 +16,18 @@
  */
 package org.apache.eagle.alert.engine.sorter;
 
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.alert.engine.PartitionedEventCollector;
 import org.apache.eagle.alert.utils.DateTimeUtil;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
 /**
- * TODO: Make sure thread-safe
- * TODO: Leverage Off-Heap Memory to persist append-only events collection
+ * TODO: Make sure thread-safe.
+ * TODO: Leverage Off-Heap Memory to persist append-only events collection.
  */
 public abstract class BaseStreamWindow implements StreamWindow {
     private final long endTime;
@@ -35,22 +35,17 @@ public abstract class BaseStreamWindow implements StreamWindow {
     private final long margin;
     private final AtomicBoolean expired;
     private final long createdTime;
-    private final static Logger LOG = LoggerFactory.getLogger(BaseStreamWindow.class);
+    private static final Logger LOG = LoggerFactory.getLogger(BaseStreamWindow.class);
     private PartitionedEventCollector collector;
     private final AtomicLong lastFlushedStreamTime;
     private final AtomicLong lastFlushedSystemTime;
 
-    /**
-     * @param startTime
-     * @param endTime
-     * @param marginTime
-     */
-    public BaseStreamWindow(long startTime, long endTime, long marginTime){
-        if(startTime >= endTime){
-            throw new IllegalArgumentException("startTime: "+startTime+" >= endTime: "+endTime+", expected: startTime < endTime");
+    public BaseStreamWindow(long startTime, long endTime, long marginTime) {
+        if (startTime >= endTime) {
+            throw new IllegalArgumentException("startTime: " + startTime + " >= endTime: " + endTime + ", expected: startTime < endTime");
         }
-        if(marginTime > endTime - startTime){
-            throw new IllegalArgumentException("marginTime: "+marginTime+" > endTime: "+endTime+" - startTime "+startTime+", expected: marginTime < endTime - startTime");
+        if (marginTime > endTime - startTime) {
+            throw new IllegalArgumentException("marginTime: " + marginTime + " > endTime: " + endTime + " - startTime " + startTime + ", expected: marginTime < endTime - startTime");
         }
         this.startTime = startTime;
         this.endTime = endTime;
@@ -63,8 +58,9 @@ public abstract class BaseStreamWindow implements StreamWindow {
 
     @Override
     public void register(PartitionedEventCollector collector) {
-        if(this.collector!=null)
+        if (this.collector != null) {
             throw new IllegalArgumentException("Duplicated collector error");
+        }
         this.collector = collector;
     }
 
@@ -78,7 +74,7 @@ public abstract class BaseStreamWindow implements StreamWindow {
     }
 
     @Override
-    public long rejectTime(){
+    public long rejectTime() {
         return this.lastFlushedStreamTime.get();
     }
 
@@ -93,7 +89,7 @@ public abstract class BaseStreamWindow implements StreamWindow {
 
     public boolean accept(final long eventTime) {
         return !expired() && eventTime >= startTime && eventTime < endTime
-                && eventTime >= lastFlushedStreamTime.get(); // dropped
+            && eventTime >= lastFlushedStreamTime.get(); // dropped
     }
 
     public boolean expired() {
@@ -106,35 +102,38 @@ public abstract class BaseStreamWindow implements StreamWindow {
     }
 
     /**
-     *
-     *
      * Expire when
      * 1) If stream time >= endTime + marginTime, then flush and expire
      * 2) If systemTime - flushedTime > endTime - startTime + marginTime && streamTime >= endTime, then flush and expire.
      * 3) If systemTime - flushedTime > endTime - startTime + marginTime && streamTime < endTime, then flush but not expire.
      * 4) else do nothing
      *
-     *  @param clock stream time clock
-     *  @param globalSystemTime system time clock
+     * @param clock            stream time clock
+     * @param globalSystemTime system time clock
      */
     @Override
-    public synchronized void onTick(StreamTimeClock clock,long globalSystemTime) {
-        if(!expired()) {
-            if(clock.getTime() >= endTime + margin){
-                LOG.info("Expiring {} at stream time:{}, latency:{}, window: {}",clock.getStreamId(),DateTimeUtil.millisecondsToHumanDateWithMilliseconds(clock.getTime()),globalSystemTime - lastFlushedSystemTime.get(),this);
+    public synchronized void onTick(StreamTimeClock clock, long globalSystemTime) {
+        if (!expired()) {
+            if (clock.getTime() >= endTime + margin) {
+                LOG.info("Expiring {} at stream time:{}, latency:{}, window: {}", clock.getStreamId(),
+                    DateTimeUtil.millisecondsToHumanDateWithMilliseconds(clock.getTime()), globalSystemTime - lastFlushedSystemTime.get(), this);
                 lastFlushedStreamTime.set(clock.getTime());
                 lastFlushedSystemTime.set(globalSystemTime);
                 flush();
                 expired.set(true);
-            } else if(globalSystemTime - lastFlushedSystemTime.get() >=  endTime + margin - startTime && size() > 0){
-                LOG.info("Flushing {} at system time: {}, stream time: {}, latency: {}, window: {}",clock.getStreamId(),DateTimeUtil.millisecondsToHumanDateWithMilliseconds(globalSystemTime),DateTimeUtil.millisecondsToHumanDateWithMilliseconds(clock.getTime()),globalSystemTime - lastFlushedSystemTime.get(),this);
+            } else if (globalSystemTime - lastFlushedSystemTime.get() >= endTime + margin - startTime && size() > 0) {
+                LOG.info("Flushing {} at system time: {}, stream time: {}, latency: {}, window: {}", clock.getStreamId(),
+                    DateTimeUtil.millisecondsToHumanDateWithMilliseconds(globalSystemTime),
+                    DateTimeUtil.millisecondsToHumanDateWithMilliseconds(clock.getTime()), globalSystemTime - lastFlushedSystemTime.get(), this);
                 lastFlushedStreamTime.set(clock.getTime());
                 lastFlushedSystemTime.set(globalSystemTime);
                 flush();
-                if(lastFlushedStreamTime.get()>=this.endTime) expired.set(true);
+                if (lastFlushedStreamTime.get() >= this.endTime) {
+                    expired.set(true);
+                }
             }
         } else {
-            LOG.warn("Window has already expired, should not tick: {}",this.toString());
+            LOG.warn("Window has already expired, should not tick: {}", this.toString());
         }
     }
 
@@ -150,7 +149,7 @@ public abstract class BaseStreamWindow implements StreamWindow {
 
     @Override
     public boolean equals(Object obj) {
-        if(obj !=null && obj instanceof BaseStreamWindow) {
+        if (obj != null && obj instanceof BaseStreamWindow) {
             BaseStreamWindow another = (BaseStreamWindow) obj;
             return another.startTime == this.startTime && another.endTime == this.endTime && another.margin == this.margin;
         }
@@ -158,26 +157,27 @@ public abstract class BaseStreamWindow implements StreamWindow {
     }
 
     @Override
-    public void flush(){
-        if(this.collector == null) throw new NullPointerException("Collector is not given before window flush");
+    public void flush() {
+        if (this.collector == null) {
+            throw new NullPointerException("Collector is not given before window flush");
+        }
         this.flush(collector);
     }
 
     /**
-     *
-     * @param collector
-     * @return max timestamp
+     * @param collector PartitionedEventCollector.
+     * @return max timestamp.
      */
     protected abstract void flush(PartitionedEventCollector collector);
 
     @Override
     public String toString() {
         return String.format("StreamWindow[period=[%s,%s), margin=%s ms, size=%s, reject=%s]",
-                DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.startTime),
-                DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.endTime),
-                this.margin,
-                size(),
-                this.rejectTime() == 0 ? DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.startTime): DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.rejectTime())
-                );
+            DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.startTime),
+            DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.endTime),
+            this.margin,
+            size(),
+            this.rejectTime() == 0 ? DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.startTime) : DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.rejectTime())
+        );
     }
 }
\ No newline at end of file



[06/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration3.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration3.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration3.java
index cb8cda9..41dbe97 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration3.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration3.java
@@ -16,23 +16,20 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
+import backtype.storm.utils.Utils;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.engine.UnitTopologyMain;
 import org.apache.eagle.alert.utils.KafkaEmbedded;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import backtype.storm.utils.Utils;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * @since May 10, 2016
- *
  */
 public class Integration3 {
 
@@ -56,12 +53,12 @@ public class Integration3 {
      * Assumption:
      * <p>
      * start metadata service 8080 /rest
-     * 
+     * <p>
      * <pre>
      * user@kafka-host:~$ $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic syslog_events
      * </pre>
      * <p>
-     * 
+     *
      * @throws InterruptedException
      */
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration4NoDataAlert.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration4NoDataAlert.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration4NoDataAlert.java
index 667d241..59af759 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration4NoDataAlert.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration4NoDataAlert.java
@@ -16,19 +16,17 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
+import backtype.storm.utils.Utils;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.engine.UnitTopologyMain;
 import org.apache.eagle.alert.utils.KafkaEmbedded;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import backtype.storm.utils.Utils;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * Since 6/29/16.
@@ -51,8 +49,9 @@ public class Integration4NoDataAlert {
             kafka.shutdown();
         }
     }
+
     @Test
-    public void testTriggerNoData() throws Exception{
+    public void testTriggerNoData() throws Exception {
         System.setProperty("config.resource", "/nodata/application-nodata.conf");
         ConfigFactory.invalidateCaches();
         Config config = ConfigFactory.load();
@@ -71,9 +70,10 @@ public class Integration4NoDataAlert {
         });
 
         // wait 20 seconds for topology to bring up
-        try{
+        try {
             Thread.sleep(20000);
-        }catch(Exception ex){}
+        } catch (Exception ex) {
+        }
 
         // send mock data
         executors.submit(() -> {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration5AbsenceAlert.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration5AbsenceAlert.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration5AbsenceAlert.java
index 4d039d4..e656c31 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration5AbsenceAlert.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/Integration5AbsenceAlert.java
@@ -49,8 +49,9 @@ public class Integration5AbsenceAlert {
             kafka.shutdown();
         }
     }
+
     @Test
-    public void testTriggerAbsenceAlert() throws Exception{
+    public void testTriggerAbsenceAlert() throws Exception {
         System.setProperty("config.resource", "/absence/application-absence.conf");
         ConfigFactory.invalidateCaches();
         Config config = ConfigFactory.load();
@@ -69,9 +70,10 @@ public class Integration5AbsenceAlert {
         });
 
         // wait 20 seconds for topology to bring up
-        try{
+        try {
             Thread.sleep(20000);
-        }catch(Exception ex){}
+        } catch (Exception ex) {
+        }
 
         // send mock data
         executors.submit(() -> {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/MetadataServiceClientImpTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/MetadataServiceClientImpTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/MetadataServiceClientImpTest.java
index c044da0..86de439 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/MetadataServiceClientImpTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/MetadataServiceClientImpTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.List;
-
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.internal.Topology;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
@@ -30,12 +30,12 @@ import org.apache.eagle.alert.service.MetadataServiceClientImpl;
 import org.junit.Ignore;
 import org.junit.Test;
 
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.List;
 
 public class MetadataServiceClientImpTest {
 
-    @Test @Ignore
+    @Test
+    @Ignore
     public void test() {
         System.out.println("loading metadatas...");
         try {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient1.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient1.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient1.java
index 6bff94b..acb8ff8 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient1.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient1.java
@@ -16,9 +16,9 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.Properties;
-import java.util.concurrent.atomic.AtomicLong;
-
+import backtype.storm.utils.Utils;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.eagle.alert.utils.JsonUtils;
 import org.apache.kafka.clients.producer.KafkaProducer;
@@ -26,14 +26,11 @@ import org.apache.kafka.clients.producer.ProducerRecord;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.utils.Utils;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicLong;
 
 /**
  * @since May 9, 2016
- *
  */
 public class SampleClient1 {
     @SuppressWarnings("unused")
@@ -42,7 +39,7 @@ public class SampleClient1 {
     private static final String PERFMON_CPU_STREAM = "perfmon_cpu_stream";
     private static final String PERFMON_MEM_STREAM = "perfmon_mem_stream";
 
-//    private static int hostIndx = 1;
+    //    private static int hostIndx = 1;
     private static String hostTemp = "host-000%d.datacenter.corp.com";
 
     /**
@@ -88,7 +85,7 @@ public class SampleClient1 {
         Pair<Long, String> pair = createEntity(base, stream, hostIndex);
         base = pair.getKey();
         ProducerRecord<String, String> record = new ProducerRecord<String, String>("perfmon_metrics",
-                pair.getRight());
+            pair.getRight());
         proceduer.send(record);
         return base;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient2.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient2.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient2.java
index ad0079c..8a2a639 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient2.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient2.java
@@ -16,25 +16,22 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicLong;
-
+import backtype.storm.utils.Utils;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.eagle.alert.utils.JsonUtils;
 import org.apache.kafka.clients.producer.KafkaProducer;
 import org.apache.kafka.clients.producer.ProducerRecord;
 
-import backtype.storm.utils.Utils;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLong;
 
 /**
  * @since May 10, 2016
- *
  */
 public class SampleClient2 {
-    
+
 //    private static final Logger LOG = LoggerFactory.getLogger(SampleClient2.class);
 
     public static class LogEntity {
@@ -62,7 +59,7 @@ public class SampleClient2 {
         AtomicLong base1 = new AtomicLong(System.currentTimeMillis());
         AtomicLong base2 = new AtomicLong(System.currentTimeMillis());
         AtomicLong count = new AtomicLong();
-        
+
         Config config = ConfigFactory.load();
 
         try (KafkaProducer<String, String> proceduer = SampleClient1.createProceduer(config)) {
@@ -86,7 +83,7 @@ public class SampleClient2 {
     }
 
     private static void sendMetric(AtomicLong base1, AtomicLong base2, AtomicLong count,
-            KafkaProducer<String, String> proceduer, int i) {
+                                   KafkaProducer<String, String> proceduer, int i) {
         {
             Pair<Long, String> pair = createLogEntity(base1, i);
             ProducerRecord<String, String> logRecord = new ProducerRecord<>("eslogs", pair.getRight());

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient3.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient3.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient3.java
index 3f16d1b..80fac3d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient3.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient3.java
@@ -16,26 +16,23 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.Properties;
-
-import org.apache.kafka.clients.producer.KafkaProducer;
-
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.apache.kafka.clients.producer.KafkaProducer;
+
+import java.util.Properties;
 
 /**
  * @since Jun 12, 2016
- *
  */
 public class SampleClient3 {
-    
-    
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+
+    @SuppressWarnings( {"unchecked", "rawtypes"})
     public static void main(String[] args) throws Exception {
         System.setProperty("config.resource", "/e2e/application-e2e.conf");
         ConfigFactory.invalidateCaches();
-        
+
         Config config = ConfigFactory.load();
         KafkaProducer producer = createByteProceduer(config);
 
@@ -52,7 +49,7 @@ public class SampleClient3 {
 //        }
     }
 
-//    private static SherlockEvent createEvent(TimeSeriesDataSchemaManager manager) throws Exception {
+    //    private static SherlockEvent createEvent(TimeSeriesDataSchemaManager manager) throws Exception {
 //
 //        SherlockEventBuilder builder = SherlockEvent.newBuilder();
 //        builder.setEpochMillis(System.currentTimeMillis());

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient4NoDataAlert.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient4NoDataAlert.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient4NoDataAlert.java
index f0e0d80..2123571 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient4NoDataAlert.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient4NoDataAlert.java
@@ -16,30 +16,29 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import java.util.Properties;
-
-import org.apache.kafka.clients.producer.KafkaProducer;
-import org.apache.kafka.clients.producer.ProducerRecord;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import backtype.storm.utils.Utils;
-
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Properties;
 
 /**
  * Since 6/29/16.
  */
-@SuppressWarnings({ "rawtypes", "unchecked"})
+@SuppressWarnings( {"rawtypes", "unchecked"})
 public class SampleClient4NoDataAlert {
     private static final Logger LOG = LoggerFactory.getLogger(SampleClient4NoDataAlert.class);
     private static long currentTimestamp = 1467240000000L;
     private static long interval = 3000L;
     private static volatile boolean host1Muted = false;
     private static volatile boolean host2Muted = false;
+
     public static void main(String[] args) throws Exception {
         System.setProperty("config.resource", "/nodata/application-nodata.conf");
         ConfigFactory.invalidateCaches();
@@ -49,12 +48,12 @@ public class SampleClient4NoDataAlert {
         ProducerRecord record = null;
         Thread x = new MuteThread();
         x.start();
-        while(true) {
-            if(!host1Muted) {
+        while (true) {
+            if (!host1Muted) {
                 record = new ProducerRecord("noDataAlertTopic", createEvent("host1"));
                 producer.send(record);
             }
-            if(!host2Muted) {
+            if (!host2Muted) {
                 record = new ProducerRecord("noDataAlertTopic", createEvent("host2"));
                 producer.send(record);
             }
@@ -65,9 +64,9 @@ public class SampleClient4NoDataAlert {
         }
     }
 
-    private static class MuteThread extends Thread{
+    private static class MuteThread extends Thread {
         @Override
-        public void run(){
+        public void run() {
             try {
                 // sleep 10 seconds
                 Thread.sleep(10000);
@@ -89,13 +88,13 @@ public class SampleClient4NoDataAlert {
                 Thread.sleep(70000);
                 LOG.info("unmute host2");
                 host2Muted = false;
-            }catch(Exception ex){
+            } catch (Exception ex) {
                 ex.printStackTrace();
             }
         }
     }
 
-    private static class NoDataEvent{
+    private static class NoDataEvent {
         @JsonProperty
         long timestamp;
         @JsonProperty
@@ -103,20 +102,20 @@ public class SampleClient4NoDataAlert {
         @JsonProperty
         double value;
 
-        public String toString(){
+        public String toString() {
             return "timestamp=" + timestamp + ",host=" + host + ",value=" + value;
         }
     }
 
-    private static String createEvent(String host) throws Exception{
+    private static String createEvent(String host) throws Exception {
         NoDataEvent e = new NoDataEvent();
         long expectTS = currentTimestamp + interval;
         // adjust back 1 second random
-        long adjust = Math.round(2*Math.random());
-        e.timestamp = expectTS-adjust;
+        long adjust = Math.round(2 * Math.random());
+        e.timestamp = expectTS - adjust;
         e.host = host;
         e.value = 25.6;
-        LOG.info("sending event {} ",  e);
+        LOG.info("sending event {} ", e);
         ObjectMapper mapper = new ObjectMapper();
         String value = mapper.writeValueAsString(e);
         return value;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient5AbsenceAlert.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient5AbsenceAlert.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient5AbsenceAlert.java
index 0256324..533e486 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient5AbsenceAlert.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/e2e/SampleClient5AbsenceAlert.java
@@ -16,7 +16,6 @@
  */
 package org.apache.eagle.alert.engine.e2e;
 
-import backtype.storm.utils.Utils;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.typesafe.config.Config;
@@ -35,6 +34,7 @@ public class SampleClient5AbsenceAlert {
     private static final Logger LOG = LoggerFactory.getLogger(SampleClient5AbsenceAlert.class);
     private static long currentTimestamp = 1467240000000L;
     private static long interval = 3000L;
+
     public static void main(String[] args) throws Exception {
         System.setProperty("config.resource", "/absence/application-absence.conf");
         ConfigFactory.invalidateCaches();
@@ -50,7 +50,7 @@ public class SampleClient5AbsenceAlert {
         producer.send(record);
     }
 
-    private static class AbsenceEvent{
+    private static class AbsenceEvent {
         @JsonProperty
         long timestamp;
         @JsonProperty
@@ -58,20 +58,20 @@ public class SampleClient5AbsenceAlert {
         @JsonProperty
         String status;
 
-        public String toString(){
+        public String toString() {
             return "timestamp=" + timestamp + ",jobID=" + jobID + ",status=" + status;
         }
     }
 
-    private static String createEvent(String jobID) throws Exception{
+    private static String createEvent(String jobID) throws Exception {
         AbsenceEvent e = new AbsenceEvent();
         long expectTS = currentTimestamp + interval;
         // adjust back 1 second random
-        long adjust = Math.round(2*Math.random());
-        e.timestamp = expectTS-adjust;
+        long adjust = Math.round(2 * Math.random());
+        e.timestamp = expectTS - adjust;
         e.jobID = jobID;
         e.status = "running";
-        LOG.info("sending event {} ",  e);
+        LOG.info("sending event {} ", e);
         ObjectMapper mapper = new ObjectMapper();
         String value = mapper.writeValueAsString(e);
         return value;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/AlertBoltOutputCollectorThreadSafeWrapperTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/AlertBoltOutputCollectorThreadSafeWrapperTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/AlertBoltOutputCollectorThreadSafeWrapperTest.java
index 7bf4931..f356931 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/AlertBoltOutputCollectorThreadSafeWrapperTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/AlertBoltOutputCollectorThreadSafeWrapperTest.java
@@ -16,52 +16,52 @@
  */
 package org.apache.eagle.alert.engine.evaluator;
 
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
+import backtype.storm.task.IOutputCollector;
+import backtype.storm.task.OutputCollector;
 import org.apache.eagle.alert.engine.evaluator.impl.AlertBoltOutputCollectorThreadSafeWrapper;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.junit.Assert;
 import org.junit.Test;
 
-import backtype.storm.task.IOutputCollector;
-import backtype.storm.task.OutputCollector;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
 
 public class AlertBoltOutputCollectorThreadSafeWrapperTest {
     @Test
-    public void testThreadSafeAlertBoltOutputCollector(){
+    public void testThreadSafeAlertBoltOutputCollector() {
         MockedStormAlertOutputCollector stormOutputCollector = new MockedStormAlertOutputCollector(null);
         AlertBoltOutputCollectorThreadSafeWrapper alertBoltOutputCollectorWrapper = new AlertBoltOutputCollectorThreadSafeWrapper(stormOutputCollector);
         alertBoltOutputCollectorWrapper.emit(create("mockAlert_1"));
         alertBoltOutputCollectorWrapper.emit(create("mockAlert_2"));
-        Assert.assertEquals(0,stormOutputCollector.getCollected().size());
-        Assert.assertEquals(0,stormOutputCollector.getTupleSize());
+        Assert.assertEquals(0, stormOutputCollector.getCollected().size());
+        Assert.assertEquals(0, stormOutputCollector.getTupleSize());
         alertBoltOutputCollectorWrapper.flush();
-        Assert.assertEquals(2,stormOutputCollector.getCollected().size());
-        Assert.assertEquals(2,stormOutputCollector.getTupleSize());
+        Assert.assertEquals(2, stormOutputCollector.getCollected().size());
+        Assert.assertEquals(2, stormOutputCollector.getTupleSize());
         alertBoltOutputCollectorWrapper.emit(create("mockAlert_3"));
-        Assert.assertEquals(2,stormOutputCollector.getCollected().size());
-        Assert.assertEquals(2,stormOutputCollector.getTupleSize());
+        Assert.assertEquals(2, stormOutputCollector.getCollected().size());
+        Assert.assertEquals(2, stormOutputCollector.getTupleSize());
         alertBoltOutputCollectorWrapper.flush();
         alertBoltOutputCollectorWrapper.flush();
         alertBoltOutputCollectorWrapper.flush();
-        Assert.assertEquals(3,stormOutputCollector.getCollected().size());
-        Assert.assertEquals(3,stormOutputCollector.getTupleSize());
+        Assert.assertEquals(3, stormOutputCollector.getCollected().size());
+        Assert.assertEquals(3, stormOutputCollector.getTupleSize());
     }
 
-    private AlertStreamEvent create(String streamId){
+    private AlertStreamEvent create(String streamId) {
         AlertStreamEvent alert = new AlertStreamEvent();
         alert.setCreatedBy(this.toString());
         alert.setCreatedTime(System.currentTimeMillis());
-        alert.setData(new Object[]{"field_1",2,"field_3"});
+        alert.setData(new Object[] {"field_1", 2, "field_3"});
         alert.setStreamId(streamId);
         return alert;
     }
 
     private class MockedStormAlertOutputCollector extends OutputCollector {
-        private final Map<Object,List<Object>> collected;
+        private final Map<Object, List<Object>> collected;
+
         MockedStormAlertOutputCollector(IOutputCollector delegate) {
             super(delegate);
             collected = new HashMap<>();
@@ -69,19 +69,20 @@ public class AlertBoltOutputCollectorThreadSafeWrapperTest {
 
         @Override
         public List<Integer> emit(String streamId, List<Object> tuple) {
-            if(!collected.containsKey(tuple.get(0))){
-                collected.put(tuple.get(0),new LinkedList<>());
+            if (!collected.containsKey(tuple.get(0))) {
+                collected.put(tuple.get(0), new LinkedList<>());
             }
             collected.get(tuple.get(0)).add(tuple);
             return null;
         }
-        Map<Object,List<Object>> getCollected(){
+
+        Map<Object, List<Object>> getCollected() {
             return collected;
         }
 
-        int getTupleSize(){
+        int getTupleSize() {
             int size = 0;
-            for(List<Object> alerts:collected.values()){
+            for (List<Object> alerts : collected.values()) {
                 size += alerts.size();
             }
             return size;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java
index 3f653d4..b9e3385 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java
@@ -36,7 +36,7 @@ public class PoilcyExtendedTest {
     @Test
     public void test() throws Exception {
         ArrayNode arrayNode = (ArrayNode)
-                mapper.readTree(PoilcyExtendedTest.class.getResourceAsStream("/extend_policy.json"));
+            mapper.readTree(PoilcyExtendedTest.class.getResourceAsStream("/extend_policy.json"));
         Assert.assertEquals(1, arrayNode.size());
         for (JsonNode node : arrayNode) {
             PolicyDefinition definition = mapper.readValue(node, PolicyDefinition.class);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/SiddhiCEPPolicyEventHandlerTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/SiddhiCEPPolicyEventHandlerTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/SiddhiCEPPolicyEventHandlerTest.java
index 140b72d..476d71f 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/SiddhiCEPPolicyEventHandlerTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/SiddhiCEPPolicyEventHandlerTest.java
@@ -16,15 +16,7 @@
  */
 package org.apache.eagle.alert.engine.evaluator;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
+import backtype.storm.metric.api.MultiCountMetric;
 import org.apache.eagle.alert.engine.Collector;
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
@@ -39,14 +31,16 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import backtype.storm.metric.api.MultiCountMetric;
+import java.util.*;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 public class SiddhiCEPPolicyEventHandlerTest {
     private final static Logger LOG = LoggerFactory.getLogger(SiddhiCEPPolicyEventHandlerTest.class);
 
-    private Map<String, StreamDefinition> createDefinition(String ... streamIds) {
+    private Map<String, StreamDefinition> createDefinition(String... streamIds) {
         Map<String, StreamDefinition> sds = new HashMap<>();
-        for(String streamId:streamIds) {
+        for (String streamId : streamIds) {
             // construct StreamDefinition
             StreamDefinition sd = MockSampleMetadataFactory.createSampleStreamDefinition(streamId);
             sds.put(streamId, sd);
@@ -60,23 +54,23 @@ public class SiddhiCEPPolicyEventHandlerTest {
         SiddhiPolicyHandler handler;
         MockStreamCollector collector;
 
-        handler = new SiddhiPolicyHandler(createDefinition("sampleStream_1","sampleStream_2"), 0);
+        handler = new SiddhiPolicyHandler(createDefinition("sampleStream_1", "sampleStream_2"), 0);
         collector = new MockStreamCollector();
         PolicyDefinition policyDefinition = MockSampleMetadataFactory.createSingleMetricSamplePolicy();
         PolicyHandlerContext context = new PolicyHandlerContext();
         context.setPolicyDefinition(policyDefinition);
         context.setPolicyCounter(new MultiCountMetric());
         context.setPolicyEvaluator(new PolicyGroupEvaluatorImpl("evalutorId"));
-        handler.prepare(collector,context);
-        StreamEvent event = StreamEvent.Builder()
-                .schema(MockSampleMetadataFactory.createSampleStreamDefinition("sampleStream_1"))
-                .streamId("sampleStream_1")
-                .timestamep(System.currentTimeMillis())
-                .attributes(new HashMap<String,Object>(){{
-                    put("name","cpu");
-                    put("value",60.0);
-                    put("bad","bad column value");
-                }}).build();
+        handler.prepare(collector, context);
+        StreamEvent event = StreamEvent.builder()
+            .schema(MockSampleMetadataFactory.createSampleStreamDefinition("sampleStream_1"))
+            .streamId("sampleStream_1")
+            .timestamep(System.currentTimeMillis())
+            .attributes(new HashMap<String, Object>() {{
+                put("name", "cpu");
+                put("value", 60.0);
+                put("bad", "bad column value");
+            }}).build();
         handler.send(event);
         handler.close();
     }
@@ -84,24 +78,24 @@ public class SiddhiCEPPolicyEventHandlerTest {
     @SuppressWarnings("serial")
     @Test
     public void testWithTwoStreamJoinPolicy() throws Exception {
-        Map<String,StreamDefinition> ssd = createDefinition("sampleStream_1","sampleStream_2");
+        Map<String, StreamDefinition> ssd = createDefinition("sampleStream_1", "sampleStream_2");
 
         PolicyDefinition policyDefinition = new PolicyDefinition();
         policyDefinition.setName("SampleJoinPolicyForTest");
-        policyDefinition.setInputStreams(Arrays.asList("sampleStream_1","sampleStream_2"));
+        policyDefinition.setInputStreams(Arrays.asList("sampleStream_1", "sampleStream_2"));
         policyDefinition.setOutputStreams(Collections.singletonList("joinedStream"));
         policyDefinition.setDefinition(new PolicyDefinition.Definition(PolicyStreamHandlers.SIDDHI_ENGINE,
-                "from sampleStream_1#window.length(10) as left " +
+            "from sampleStream_1#window.length(10) as left " +
                 "join sampleStream_2#window.length(10) as right " +
                 "on left.name == right.name and left.value == right.value " +
-                "select left.timestamp,left.name,left.value "+
+                "select left.timestamp,left.name,left.value " +
                 "insert into joinedStream"));
         policyDefinition.setPartitionSpec(Collections.singletonList(MockSampleMetadataFactory.createSampleStreamGroupbyPartition("sampleStream_1", Collections.singletonList("name"))));
         SiddhiPolicyHandler handler;
         Semaphore mutex = new Semaphore(0);
         List<AlertStreamEvent> alerts = new ArrayList<>(0);
         Collector<AlertStreamEvent> collector = (event) -> {
-            LOG.info("Collected {}",event);
+            LOG.info("Collected {}", event);
             Assert.assertTrue(event != null);
             alerts.add(event);
             mutex.release();
@@ -112,54 +106,54 @@ public class SiddhiCEPPolicyEventHandlerTest {
         context.setPolicyDefinition(policyDefinition);
         context.setPolicyCounter(new MultiCountMetric());
         context.setPolicyEvaluator(new PolicyGroupEvaluatorImpl("evalutorId"));
-        handler.prepare(collector,context);
+        handler.prepare(collector, context);
 
 
         long ts_1 = System.currentTimeMillis();
-        long ts_2 = System.currentTimeMillis()+1;
-
-        handler.send(StreamEvent.Builder()
-                .schema(ssd.get("sampleStream_1"))
-                .streamId("sampleStream_1")
-                .timestamep(ts_1)
-                .attributes(new HashMap<String,Object>(){{
-                    put("name","cpu");
-                    put("value",60.0);
-                    put("bad","bad column value");
-                }}).build());
-
-        handler.send(StreamEvent.Builder()
-                .schema(ssd.get("sampleStream_2"))
-                .streamId("sampleStream_2")
-                .timestamep(ts_2)
-                .attributes(new HashMap<String,Object>(){{
-                    put("name","cpu");
-                    put("value",61.0);
-                }}).build());
-
-        handler.send(StreamEvent.Builder()
-                .schema(ssd.get("sampleStream_2"))
-                .streamId("sampleStream_2")
-                .timestamep(ts_2)
-                .attributes(new HashMap<String,Object>(){{
-                    put("name","disk");
-                    put("value",60.0);
-                }}).build());
-
-        handler.send(StreamEvent.Builder()
-                .schema(ssd.get("sampleStream_2"))
-                .streamId("sampleStream_2")
-                .timestamep(ts_2)
-                .attributes(new HashMap<String,Object>(){{
-                    put("name","cpu");
-                    put("value",60.0);
-                }}).build());
+        long ts_2 = System.currentTimeMillis() + 1;
+
+        handler.send(StreamEvent.builder()
+            .schema(ssd.get("sampleStream_1"))
+            .streamId("sampleStream_1")
+            .timestamep(ts_1)
+            .attributes(new HashMap<String, Object>() {{
+                put("name", "cpu");
+                put("value", 60.0);
+                put("bad", "bad column value");
+            }}).build());
+
+        handler.send(StreamEvent.builder()
+            .schema(ssd.get("sampleStream_2"))
+            .streamId("sampleStream_2")
+            .timestamep(ts_2)
+            .attributes(new HashMap<String, Object>() {{
+                put("name", "cpu");
+                put("value", 61.0);
+            }}).build());
+
+        handler.send(StreamEvent.builder()
+            .schema(ssd.get("sampleStream_2"))
+            .streamId("sampleStream_2")
+            .timestamep(ts_2)
+            .attributes(new HashMap<String, Object>() {{
+                put("name", "disk");
+                put("value", 60.0);
+            }}).build());
+
+        handler.send(StreamEvent.builder()
+            .schema(ssd.get("sampleStream_2"))
+            .streamId("sampleStream_2")
+            .timestamep(ts_2)
+            .attributes(new HashMap<String, Object>() {{
+                put("name", "cpu");
+                put("value", 60.0);
+            }}).build());
 
         handler.close();
 
-        Assert.assertTrue("Should get result in 5 s",mutex.tryAcquire(5, TimeUnit.SECONDS));
-        Assert.assertEquals(1,alerts.size());
-        Assert.assertEquals("joinedStream",alerts.get(0).getStreamId());
-        Assert.assertEquals("cpu",alerts.get(0).getData()[1]);
+        Assert.assertTrue("Should get result in 5 s", mutex.tryAcquire(5, TimeUnit.SECONDS));
+        Assert.assertEquals(1, alerts.size());
+        Assert.assertEquals("joinedStream", alerts.get(0).getStreamId());
+        Assert.assertEquals("cpu", alerts.get(0).getData()[1]);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/integration/MockMetadataServiceClient.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/integration/MockMetadataServiceClient.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/integration/MockMetadataServiceClient.java
index d127116..4efcc28 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/integration/MockMetadataServiceClient.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/integration/MockMetadataServiceClient.java
@@ -16,9 +16,6 @@
  */
 package org.apache.eagle.alert.engine.integration;
 
-import java.io.IOException;
-import java.util.List;
-
 import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata;
 import org.apache.eagle.alert.coordination.model.ScheduleState;
 import org.apache.eagle.alert.coordination.model.SpoutSpec;
@@ -29,11 +26,14 @@ import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamingCluster;
 import org.apache.eagle.alert.service.IMetadataServiceClient;
 
+import java.io.IOException;
+import java.util.List;
+
 @SuppressWarnings("serial")
 public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
-    public List<SpoutSpec>  listSpoutMetadata() {
+    public List<SpoutSpec> listSpoutMetadata() {
         return null;
     }
 
@@ -79,7 +79,7 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void addScheduleState(ScheduleState state) {
-        
+
     }
 
     @Override
@@ -89,7 +89,7 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void addStreamingCluster(StreamingCluster cluster) {
-        
+
     }
 
     @Override
@@ -99,7 +99,7 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void addTopology(Topology t) {
-        
+
     }
 
     @Override
@@ -109,7 +109,7 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void addPolicy(PolicyDefinition policy) {
-        
+
     }
 
     @Override
@@ -119,7 +119,7 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void addStreamDefinition(StreamDefinition streamDef) {
-        
+
     }
 
     @Override
@@ -129,7 +129,7 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void addDataSource(Kafka2TupleMetadata k2t) {
-        
+
     }
 
     @Override
@@ -139,7 +139,7 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void addPublishment(Publishment pub) {
-        
+
     }
 
     @Override
@@ -149,6 +149,6 @@ public class MockMetadataServiceClient implements IMetadataServiceClient {
 
     @Override
     public void clear() {
-        
+
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/metric/MemoryUsageGaugeSetTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/metric/MemoryUsageGaugeSetTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/metric/MemoryUsageGaugeSetTest.java
index 76aef7e..a1a9cdd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/metric/MemoryUsageGaugeSetTest.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/metric/MemoryUsageGaugeSetTest.java
@@ -1,15 +1,14 @@
 package org.apache.eagle.alert.engine.metric;
 
-import java.util.concurrent.TimeUnit;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.codahale.metrics.ConsoleReporter;
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.TimeUnit;
 
 
 /**
@@ -36,9 +35,9 @@ public class MemoryUsageGaugeSetTest {
         LOG.info("Starting testJVMMetrics");
         final MetricRegistry metrics = new MetricRegistry();
         ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
-                .convertRatesTo(TimeUnit.SECONDS)
-                .convertDurationsTo(TimeUnit.MILLISECONDS)
-                .build();
+            .convertRatesTo(TimeUnit.SECONDS)
+            .convertDurationsTo(TimeUnit.MILLISECONDS)
+            .build();
         metrics.registerAll(new MemoryUsageGaugeSet());
         metrics.register("sample", (Gauge<Double>) () -> 0.1234);
         reporter.start(1, TimeUnit.SECONDS);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockPartitionedCollector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockPartitionedCollector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockPartitionedCollector.java
index 74d11d2..09f01e4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockPartitionedCollector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockPartitionedCollector.java
@@ -1,13 +1,13 @@
 package org.apache.eagle.alert.engine.mock;
 
-import java.util.LinkedList;
-import java.util.List;
-
 import org.apache.eagle.alert.engine.PartitionedEventCollector;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.LinkedList;
+import java.util.List;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -28,7 +28,8 @@ public class MockPartitionedCollector implements PartitionedEventCollector {
     @SuppressWarnings("unused")
     private final static Logger LOG = LoggerFactory.getLogger(MockPartitionedCollector.class);
     private List<PartitionedEvent> cache;
-    public MockPartitionedCollector(){
+
+    public MockPartitionedCollector() {
         cache = new LinkedList<>();
     }
 
@@ -36,15 +37,15 @@ public class MockPartitionedCollector implements PartitionedEventCollector {
         cache.add(event);
     }
 
-    public void clear(){
+    public void clear() {
         cache.clear();
     }
 
-    public List<PartitionedEvent> get(){
+    public List<PartitionedEvent> get() {
         return cache;
     }
 
-    public int size(){
+    public int size() {
         return cache.size();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockSampleMetadataFactory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockSampleMetadataFactory.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockSampleMetadataFactory.java
index 22c13a2..9c9f1eb 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockSampleMetadataFactory.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockSampleMetadataFactory.java
@@ -16,46 +16,40 @@
  */
 package org.apache.eagle.alert.engine.mock;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.ThreadLocalRandom;
-
 import org.apache.eagle.alert.coordination.model.PolicyWorkerQueue;
 import org.apache.eagle.alert.coordination.model.StreamRouterSpec;
 import org.apache.eagle.alert.coordination.model.WorkSlot;
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamColumn;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-import org.apache.eagle.alert.engine.coordinator.StreamDefinitionNotFoundException;
-import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-import org.apache.eagle.alert.engine.coordinator.StreamSortSpec;
+import org.apache.eagle.alert.engine.coordinator.*;
 import org.apache.eagle.alert.engine.evaluator.PolicyStreamHandlers;
 import org.apache.eagle.alert.engine.model.PartitionedEvent;
 import org.apache.eagle.alert.engine.model.StreamEvent;
 
+import java.util.*;
+import java.util.concurrent.ThreadLocalRandom;
+
 @SuppressWarnings("serial")
 public class MockSampleMetadataFactory {
     private static MockStreamMetadataService mockStreamMetadataServiceInstance = null;
-    public static MockStreamMetadataService createSingletonMetadataServiceWithSample(){
-        if(mockStreamMetadataServiceInstance!=null) return mockStreamMetadataServiceInstance;
+
+    public static MockStreamMetadataService createSingletonMetadataServiceWithSample() {
+        if (mockStreamMetadataServiceInstance != null) {
+            return mockStreamMetadataServiceInstance;
+        }
         mockStreamMetadataServiceInstance = new MockStreamMetadataService();
-        mockStreamMetadataServiceInstance.registerStream("sampleStream",createSampleStreamDefinition("sampleStream"));
-        mockStreamMetadataServiceInstance.registerStream("sampleStream_1",createSampleStreamDefinition("sampleStream_1"));
-        mockStreamMetadataServiceInstance.registerStream("sampleStream_2",createSampleStreamDefinition("sampleStream_2"));
-        mockStreamMetadataServiceInstance.registerStream("sampleStream_3",createSampleStreamDefinition("sampleStream_3"));
-        mockStreamMetadataServiceInstance.registerStream("sampleStream_4",createSampleStreamDefinition("sampleStream_4"));
+        mockStreamMetadataServiceInstance.registerStream("sampleStream", createSampleStreamDefinition("sampleStream"));
+        mockStreamMetadataServiceInstance.registerStream("sampleStream_1", createSampleStreamDefinition("sampleStream_1"));
+        mockStreamMetadataServiceInstance.registerStream("sampleStream_2", createSampleStreamDefinition("sampleStream_2"));
+        mockStreamMetadataServiceInstance.registerStream("sampleStream_3", createSampleStreamDefinition("sampleStream_3"));
+        mockStreamMetadataServiceInstance.registerStream("sampleStream_4", createSampleStreamDefinition("sampleStream_4"));
         return mockStreamMetadataServiceInstance;
     }
 
-    public static StreamDefinition createSampleStreamDefinition(String streamId){
+    public static StreamDefinition createSampleStreamDefinition(String streamId) {
         StreamDefinition sampleStreamDefinition = new StreamDefinition();
         sampleStreamDefinition.setStreamId(streamId);
         sampleStreamDefinition.setTimeseries(true);
         sampleStreamDefinition.setValidate(true);
-        sampleStreamDefinition.setDescription("Schema for "+streamId);
+        sampleStreamDefinition.setDescription("Schema for " + streamId);
         List<StreamColumn> streamColumns = new ArrayList<>();
 
         streamColumns.add(new StreamColumn.Builder().name("name").type(StreamColumn.Type.STRING).build());
@@ -73,7 +67,7 @@ public class MockSampleMetadataFactory {
      * @param streamId
      * @return
      */
-    public static StreamSortSpec createSampleStreamSortSpec(String streamId){
+    public static StreamSortSpec createSampleStreamSortSpec(String streamId) {
         StreamSortSpec streamSortSpec = new StreamSortSpec();
 //        streamSortSpec.setColumn("timestamp");
 //        streamSortSpec.setStreamId(streamId);
@@ -82,7 +76,7 @@ public class MockSampleMetadataFactory {
         return streamSortSpec;
     }
 
-    public static StreamSortSpec createSampleStreamSortSpec(String streamId,String period,int margin){
+    public static StreamSortSpec createSampleStreamSortSpec(String streamId, String period, int margin) {
         StreamSortSpec streamSortSpec = new StreamSortSpec();
 //        streamSortSpec.setColumn("timestamp");
 //        streamSortSpec.setStreamId(streamId);
@@ -96,21 +90,21 @@ public class MockSampleMetadataFactory {
      *
      * @return PolicyDefinition[from sampleStream_1[name == "cpu" and value > 50.0] select name, host, flag, value insert into outputStream;]
      */
-    public static PolicyDefinition createSingleMetricSamplePolicy(){
+    public static PolicyDefinition createSingleMetricSamplePolicy() {
         String definePolicy = "from sampleStream_1[name == \"cpu\" and value > 50.0] select name, host, flag, value insert into outputStream;";
         PolicyDefinition policyDefinition = new PolicyDefinition();
         policyDefinition.setName("SamplePolicyForTest");
         policyDefinition.setInputStreams(Arrays.asList("sampleStream_1"));
         policyDefinition.setOutputStreams(Arrays.asList("outputStream"));
         policyDefinition.setDefinition(new PolicyDefinition.Definition(
-                PolicyStreamHandlers.SIDDHI_ENGINE,
-                definePolicy
+            PolicyStreamHandlers.SIDDHI_ENGINE,
+            definePolicy
         ));
-        policyDefinition.setPartitionSpec(Arrays.asList(createSampleStreamGroupbyPartition("sampleStream_1",Arrays.asList("name"))));
+        policyDefinition.setPartitionSpec(Arrays.asList(createSampleStreamGroupbyPartition("sampleStream_1", Arrays.asList("name"))));
         return policyDefinition;
     }
 
-    public static StreamPartition createSampleStreamGroupbyPartition(String streamId, List<String> groupByField){
+    public static StreamPartition createSampleStreamGroupbyPartition(String streamId, List<String> groupByField) {
         StreamPartition streamPartition = new StreamPartition();
         streamPartition.setStreamId(streamId);
         streamPartition.setColumns(new ArrayList<>(groupByField));
@@ -122,19 +116,19 @@ public class MockSampleMetadataFactory {
         return streamPartition;
     }
 
-    public static StreamRouterSpec createSampleStreamRouteSpec(String streamId, String groupByField, List<String> targetEvaluatorIds){
+    public static StreamRouterSpec createSampleStreamRouteSpec(String streamId, String groupByField, List<String> targetEvaluatorIds) {
         List<WorkSlot> slots = Arrays.asList(targetEvaluatorIds.stream().map((t) -> {
             return new WorkSlot("sampleTopology", t);
         }).toArray(WorkSlot[]::new));
         StreamRouterSpec streamRouteSpec = new StreamRouterSpec();
         streamRouteSpec.setStreamId(streamId);
-        streamRouteSpec.setPartition(createSampleStreamGroupbyPartition(streamId,Arrays.asList(groupByField)));
+        streamRouteSpec.setPartition(createSampleStreamGroupbyPartition(streamId, Arrays.asList(groupByField)));
         streamRouteSpec.setTargetQueue(Arrays.asList(new PolicyWorkerQueue(slots)));
         return streamRouteSpec;
     }
 
-    public static StreamRouterSpec createSampleStreamRouteSpec(List<String> targetEvaluatorIds){
-        return createSampleStreamRouteSpec("sampleStream_1","name",targetEvaluatorIds);
+    public static StreamRouterSpec createSampleStreamRouteSpec(List<String> targetEvaluatorIds) {
+        return createSampleStreamRouteSpec("sampleStream_1", "name", targetEvaluatorIds);
     }
 
     /**
@@ -143,25 +137,25 @@ public class MockSampleMetadataFactory {
      * @param targetEvaluatorIds
      * @return
      */
-    public static StreamRouterSpec createRouteSpec_GROUP_sampleStream_1_BY_name(List<String> targetEvaluatorIds){
-        return createSampleStreamRouteSpec("sampleStream_1","name",targetEvaluatorIds);
+    public static StreamRouterSpec createRouteSpec_GROUP_sampleStream_1_BY_name(List<String> targetEvaluatorIds) {
+        return createSampleStreamRouteSpec("sampleStream_1", "name", targetEvaluatorIds);
     }
 
-    public static StreamRouterSpec createRouteSpec_GROUP_sampleStream_2_BY_name(List<String> targetEvaluatorIds){
-        return createSampleStreamRouteSpec("sampleStream_2","name",targetEvaluatorIds);
+    public static StreamRouterSpec createRouteSpec_GROUP_sampleStream_2_BY_name(List<String> targetEvaluatorIds) {
+        return createSampleStreamRouteSpec("sampleStream_2", "name", targetEvaluatorIds);
     }
 
-    public static PartitionedEvent createSimpleStreamEvent()  {
+    public static PartitionedEvent createSimpleStreamEvent() {
         StreamEvent event = null;
         try {
-            event = StreamEvent.Builder()
+            event = StreamEvent.builder()
                 .schema(MockSampleMetadataFactory.createSingletonMetadataServiceWithSample().getStreamDefinition("sampleStream_1"))
                 .streamId("sampleStream_1")
                 .timestamep(System.currentTimeMillis())
-                .attributes(new HashMap<String,Object>(){{
-                    put("name","cpu");
-                    put("value",60.0);
-                    put("unknown","unknown column value");
+                .attributes(new HashMap<String, Object>() {{
+                    put("name", "cpu");
+                    put("value", 60.0);
+                    put("unknown", "unknown column value");
                 }}).build();
         } catch (StreamDefinitionNotFoundException e) {
             e.printStackTrace();
@@ -171,91 +165,91 @@ public class MockSampleMetadataFactory {
         return pEvent;
     }
 
-    private final static String[] SAMPLE_STREAM_NAME_OPTIONS=new String[]{
-            "cpu","memory","disk","network"
+    private final static String[] SAMPLE_STREAM_NAME_OPTIONS = new String[] {
+        "cpu", "memory", "disk", "network"
     };
 
-    private final static String[] SAMPLE_STREAM_HOST_OPTIONS =new String[]{
-            "localhost_1","localhost_2","localhost_3","localhost_4"
+    private final static String[] SAMPLE_STREAM_HOST_OPTIONS = new String[] {
+        "localhost_1", "localhost_2", "localhost_3", "localhost_4"
     };
 
-    private final static Boolean[] SAMPLE_STREAM_FLAG_OPTIONS=new Boolean[]{
-            true,false
+    private final static Boolean[] SAMPLE_STREAM_FLAG_OPTIONS = new Boolean[] {
+        true, false
     };
 
-    private final static Double[] SAMPLE_STREAM_VALUE_OPTIONS=new Double[]{
-            -0.20, 40.4,50.5,60.6,10000.1
+    private final static Double[] SAMPLE_STREAM_VALUE_OPTIONS = new Double[] {
+        -0.20, 40.4, 50.5, 60.6, 10000.1
     };
-    private final static String[] SAMPLE_STREAM_ID_OPTIONS=new String[]{
-            "sampleStream_1","sampleStream_2","sampleStream_3","sampleStream_4",
+    private final static String[] SAMPLE_STREAM_ID_OPTIONS = new String[] {
+        "sampleStream_1", "sampleStream_2", "sampleStream_3", "sampleStream_4",
     };
     private final static Random RANDOM = ThreadLocalRandom.current();
 
-    public static StreamEvent createRandomStreamEvent()  {
+    public static StreamEvent createRandomStreamEvent() {
         return createRandomStreamEvent(SAMPLE_STREAM_ID_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_ID_OPTIONS.length)]);
     }
 
-    public static StreamEvent createRandomStreamEvent(String streamId)  {
-        return createRandomStreamEvent(streamId,System.currentTimeMillis());
+    public static StreamEvent createRandomStreamEvent(String streamId) {
+        return createRandomStreamEvent(streamId, System.currentTimeMillis());
     }
 
-    private final static Long[] TIME_DELTA_OPTIONS = new Long[]{
-            -30000L, -10000L, -5000L, -1000L, 0L, 1000L, 5000L, 10000L, 30000L
+    private final static Long[] TIME_DELTA_OPTIONS = new Long[] {
+        -30000L, -10000L, -5000L, -1000L, 0L, 1000L, 5000L, 10000L, 30000L
     };
 
-    public static StreamEvent createRandomOutOfTimeOrderStreamEvent(String streamId)  {
+    public static StreamEvent createRandomOutOfTimeOrderStreamEvent(String streamId) {
         StreamEvent event = createRandomStreamEvent(streamId);
-        event.setTimestamp(System.currentTimeMillis()+TIME_DELTA_OPTIONS[RANDOM.nextInt(TIME_DELTA_OPTIONS.length)]);
+        event.setTimestamp(System.currentTimeMillis() + TIME_DELTA_OPTIONS[RANDOM.nextInt(TIME_DELTA_OPTIONS.length)]);
         return event;
     }
 
 
-    public static PartitionedEvent createRandomOutOfTimeOrderEventGroupedByName(String streamId)  {
+    public static PartitionedEvent createRandomOutOfTimeOrderEventGroupedByName(String streamId) {
         StreamEvent event = createRandomStreamEvent(streamId);
-        event.setTimestamp(System.currentTimeMillis()+TIME_DELTA_OPTIONS[RANDOM.nextInt(TIME_DELTA_OPTIONS.length)]);
-        return new PartitionedEvent(event,createSampleStreamGroupbyPartition(streamId,Arrays.asList("name")),event.getData()[0].hashCode());
+        event.setTimestamp(System.currentTimeMillis() + TIME_DELTA_OPTIONS[RANDOM.nextInt(TIME_DELTA_OPTIONS.length)]);
+        return new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode());
     }
 
-    public static PartitionedEvent createPartitionedEventGroupedByName(String streamId,long timestamp)  {
+    public static PartitionedEvent createPartitionedEventGroupedByName(String streamId, long timestamp) {
         StreamEvent event = createRandomStreamEvent(streamId);
         event.setTimestamp(timestamp);
-        return new PartitionedEvent(event,createSampleStreamGroupbyPartition(streamId,Arrays.asList("name")),event.getData()[0].hashCode());
+        return new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode());
     }
 
-    public static PartitionedEvent createRandomSortedEventGroupedByName(String streamId)  {
+    public static PartitionedEvent createRandomSortedEventGroupedByName(String streamId) {
         StreamEvent event = createRandomStreamEvent(streamId);
         event.setTimestamp(System.currentTimeMillis());
-        return new PartitionedEvent(event,createSampleStreamGroupbyPartition(streamId,Arrays.asList("name")),event.getData()[0].hashCode());
+        return new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode());
     }
 
-    public static StreamEvent createRandomStreamEvent(String streamId, long timestamp)  {
+    public static StreamEvent createRandomStreamEvent(String streamId, long timestamp) {
         StreamEvent event;
         try {
-            event = StreamEvent.Builder()
-                    .schema(MockSampleMetadataFactory.createSingletonMetadataServiceWithSample().getStreamDefinition(streamId))
-                    .streamId(streamId)
-                    .timestamep(timestamp)
-                    .attributes(new HashMap<String,Object>(){{
-                        put("name",SAMPLE_STREAM_NAME_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_NAME_OPTIONS.length)]);
-                        put("value", SAMPLE_STREAM_VALUE_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_VALUE_OPTIONS.length)]);
-                        put("host", SAMPLE_STREAM_HOST_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_HOST_OPTIONS.length)]);
-                        put("flag",SAMPLE_STREAM_FLAG_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_FLAG_OPTIONS.length)]);
+            event = StreamEvent.builder()
+                .schema(MockSampleMetadataFactory.createSingletonMetadataServiceWithSample().getStreamDefinition(streamId))
+                .streamId(streamId)
+                .timestamep(timestamp)
+                .attributes(new HashMap<String, Object>() {{
+                    put("name", SAMPLE_STREAM_NAME_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_NAME_OPTIONS.length)]);
+                    put("value", SAMPLE_STREAM_VALUE_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_VALUE_OPTIONS.length)]);
+                    put("host", SAMPLE_STREAM_HOST_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_HOST_OPTIONS.length)]);
+                    put("flag", SAMPLE_STREAM_FLAG_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_FLAG_OPTIONS.length)]);
 //                        put("value1", SAMPLE_STREAM_VALUE_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_VALUE_OPTIONS.length)]);
 //                        put("value2", SAMPLE_STREAM_VALUE_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_VALUE_OPTIONS.length)]);
 //                        put("value3", SAMPLE_STREAM_VALUE_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_VALUE_OPTIONS.length)]);
 //                        put("value4", SAMPLE_STREAM_VALUE_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_VALUE_OPTIONS.length)]);
 //                        put("value5", SAMPLE_STREAM_VALUE_OPTIONS[RANDOM.nextInt(SAMPLE_STREAM_VALUE_OPTIONS.length)]);
-                        put("unknown","unknown column value");
-                    }}).build();
+                    put("unknown", "unknown column value");
+                }}).build();
         } catch (StreamDefinitionNotFoundException e) {
-            throw new IllegalStateException(e.getMessage(),e);
+            throw new IllegalStateException(e.getMessage(), e);
         }
         return event;
     }
 
-    public static PartitionedEvent createRandomPartitionedEvent(String streamId, long timestamp)  {
-        StreamEvent event = createRandomStreamEvent(streamId,timestamp);
-        PartitionedEvent partitionedEvent = new PartitionedEvent(event,createSampleStreamGroupbyPartition(streamId,Arrays.asList("name")),event.getData()[0].hashCode());
+    public static PartitionedEvent createRandomPartitionedEvent(String streamId, long timestamp) {
+        StreamEvent event = createRandomStreamEvent(streamId, timestamp);
+        PartitionedEvent partitionedEvent = new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode());
         return partitionedEvent;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamCollector.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamCollector.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamCollector.java
index fa07701..b865422 100755
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamCollector.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamCollector.java
@@ -16,19 +16,20 @@
  */
 package org.apache.eagle.alert.engine.mock;
 
-import java.util.LinkedList;
-import java.util.List;
-
 import org.apache.eagle.alert.engine.Collector;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.LinkedList;
+import java.util.List;
+
 public class MockStreamCollector implements Collector<AlertStreamEvent> {
     @SuppressWarnings("unused")
     private final static Logger LOG = LoggerFactory.getLogger(MockStreamCollector.class);
     private List<AlertStreamEvent> cache;
-    public MockStreamCollector(){
+
+    public MockStreamCollector() {
         cache = new LinkedList<>();
     }
 
@@ -37,15 +38,15 @@ public class MockStreamCollector implements Collector<AlertStreamEvent> {
         // LOG.info("PartitionedEventCollector received: {}",event);
     }
 
-    public void clear(){
+    public void clear() {
         cache.clear();
     }
 
-    public List<AlertStreamEvent> get(){
+    public List<AlertStreamEvent> get() {
         return cache;
     }
 
-    public int size(){
+    public int size() {
         return cache.size();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamMetadataService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamMetadataService.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamMetadataService.java
index 2119ecd..86fb426 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamMetadataService.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamMetadataService.java
@@ -16,24 +16,24 @@
  */
 package org.apache.eagle.alert.engine.mock;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinitionNotFoundException;
 
-public class MockStreamMetadataService{
-    private final Map<String,StreamDefinition> streamSchemaMap = new HashMap<>();
+import java.util.HashMap;
+import java.util.Map;
+
+public class MockStreamMetadataService {
+    private final Map<String, StreamDefinition> streamSchemaMap = new HashMap<>();
 
     public StreamDefinition getStreamDefinition(String streamId) throws StreamDefinitionNotFoundException {
-        if(streamSchemaMap.containsKey(streamId)) {
+        if (streamSchemaMap.containsKey(streamId)) {
             return streamSchemaMap.get(streamId);
-        }else {
+        } else {
             throw new StreamDefinitionNotFoundException(streamId);
         }
     }
 
-    public void registerStream(String streamId, StreamDefinition schema){
-        streamSchemaMap.put(streamId,schema);
+    public void registerStream(String streamId, StreamDefinition schema) {
+        streamSchemaMap.put(streamId, schema);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamReceiver.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamReceiver.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamReceiver.java
index 1e44c2a..9ab4c24 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamReceiver.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/mock/MockStreamReceiver.java
@@ -1,22 +1,21 @@
 package org.apache.eagle.alert.engine.mock;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.eagle.alert.engine.model.PartitionedEvent;
-import org.apache.eagle.alert.utils.AlertConstants;
-import org.apache.eagle.alert.utils.StreamIdConversion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import backtype.storm.spout.SpoutOutputCollector;
 import backtype.storm.task.TopologyContext;
 import backtype.storm.topology.OutputFieldsDeclarer;
 import backtype.storm.topology.base.BaseRichSpout;
 import backtype.storm.tuple.Fields;
 import backtype.storm.utils.Utils;
+import org.apache.eagle.alert.engine.model.PartitionedEvent;
+import org.apache.eagle.alert.utils.AlertConstants;
+import org.apache.eagle.alert.utils.StreamIdConversion;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -39,9 +38,10 @@ public class MockStreamReceiver extends BaseRichSpout {
     private final static Logger LOG = LoggerFactory.getLogger(MockStreamReceiver.class);
     private SpoutOutputCollector collector;
     private List<String> outputStreamIds;
-    public MockStreamReceiver(int partition){
+
+    public MockStreamReceiver(int partition) {
         outputStreamIds = new ArrayList<>(partition);
-        for(int i=0;i<partition;i++){
+        for (int i = 0; i < partition; i++) {
             outputStreamIds.add(StreamIdConversion.generateStreamIdByPartition(i));
         }
     }
@@ -53,7 +53,8 @@ public class MockStreamReceiver extends BaseRichSpout {
     }
 
     @Override
-    public void close() {}
+    public void close() {
+    }
 
     /**
      * This unit test is not to mock the end2end logic of correlation spout,
@@ -62,18 +63,18 @@ public class MockStreamReceiver extends BaseRichSpout {
     @Override
     public void nextTuple() {
         PartitionedEvent event = MockSampleMetadataFactory.createRandomOutOfTimeOrderEventGroupedByName("sampleStream_1");
-        LOG.info("Receive {}",event);
+        LOG.info("Receive {}", event);
         collector.emit(outputStreamIds.get(
-                // group by the first field in event i.e. name
-                (int) (event.getPartitionKey() % outputStreamIds.size())),
-                Collections.singletonList(event));
+            // group by the first field in event i.e. name
+            (int) (event.getPartitionKey() % outputStreamIds.size())),
+            Collections.singletonList(event));
         Utils.sleep(500);
     }
 
     @Override
     public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        for(String streamId:outputStreamIds) {
-            declarer.declareStream(streamId,new Fields(AlertConstants.FIELD_0));
+        for (String streamId : outputStreamIds) {
+            declarer.declareStream(streamId, new Fields(AlertConstants.FIELD_0));
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeBatchWindow.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeBatchWindow.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeBatchWindow.java
index 72ef02b..5142b76 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeBatchWindow.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeBatchWindow.java
@@ -16,11 +16,6 @@
  */
 package org.apache.eagle.alert.engine.nodata;
 
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.times;
-
 import org.apache.eagle.alert.engine.evaluator.nodata.DistinctValuesInTimeBatchWindow;
 import org.apache.eagle.alert.engine.evaluator.nodata.NoDataPolicyTimeBatchHandler;
 import org.apache.eagle.alert.engine.model.StreamEvent;
@@ -28,62 +23,65 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.*;
+
 public class TestDistinctValuesInTimeBatchWindow {
 
-	private static final String inputStream = "testInputStream";
+    private static final String inputStream = "testInputStream";
+
+    private NoDataPolicyTimeBatchHandler handler;
 
-	private NoDataPolicyTimeBatchHandler handler;
+    @Before
+    public void setup() {
+        handler = mock(NoDataPolicyTimeBatchHandler.class);
+    }
 
-	@Before
-	public void setup() {
-		handler = mock(NoDataPolicyTimeBatchHandler.class);
-	}
+    @After
+    public void teardown() {
+    }
 
-	@After
-	public void teardown() {
-	}
+    @Test
+    public void testNormal() throws Exception {
+        // wisb is null since it is dynamic mode
+        DistinctValuesInTimeBatchWindow window = new DistinctValuesInTimeBatchWindow(handler, 5 * 1000, null);
 
-	@Test
-	public void testNormal() throws Exception {
-		// wisb is null since it is dynamic mode
-		DistinctValuesInTimeBatchWindow window = new DistinctValuesInTimeBatchWindow(handler, 5 * 1000, null);
+        long now = System.currentTimeMillis();
 
-		long now = System.currentTimeMillis();
+        // handler.compareAndEmit(anyObject(), anyObject(), anyObject());
 
-		// handler.compareAndEmit(anyObject(), anyObject(), anyObject());
+        // event time
+        sendEventToWindow(window, now, "host1", 95.5);
 
-		// event time
-		sendEventToWindow(window, now, "host1", 95.5);
+        Thread.sleep(6000);
 
-		Thread.sleep(6000);
+        sendEventToWindow(window, now, "host1", 91.0);
+        sendEventToWindow(window, now, "host2", 95.5);
+        sendEventToWindow(window, now, "host2", 97.1);
 
-		sendEventToWindow(window, now, "host1", 91.0);
-		sendEventToWindow(window, now, "host2", 95.5);
-		sendEventToWindow(window, now, "host2", 97.1);
+        Thread.sleep(3000);
 
-		Thread.sleep(3000);
+        sendEventToWindow(window, now, "host1", 90.7);
 
-		sendEventToWindow(window, now, "host1", 90.7);
+        Thread.sleep(4000);
 
-		Thread.sleep(4000);
+        sendEventToWindow(window, now, "host1", 90.7);
 
-		sendEventToWindow(window, now, "host1", 90.7);
-		
-		Thread.sleep(3000);
+        Thread.sleep(3000);
 
-		verify(handler, times(3)).compareAndEmit(anyObject(), anyObject(), anyObject());
-	}
+        verify(handler, times(3)).compareAndEmit(anyObject(), anyObject(), anyObject());
+    }
 
-	private void sendEventToWindow(DistinctValuesInTimeBatchWindow window, long ts, String host, double value) {
-		window.send(buildStreamEvent(ts, host, value), host, ts);
-	}
+    private void sendEventToWindow(DistinctValuesInTimeBatchWindow window, long ts, String host, double value) {
+        window.send(buildStreamEvent(ts, host, value), host, ts);
+    }
 
-	private StreamEvent buildStreamEvent(long ts, String host, double value) {
-		StreamEvent e = new StreamEvent();
-		e.setData(new Object[] { ts, host, value });
-		e.setStreamId(inputStream);
-		e.setTimestamp(ts);
-		return e;
-	}
+    private StreamEvent buildStreamEvent(long ts, String host, double value) {
+        StreamEvent e = new StreamEvent();
+        e.setData(new Object[] {ts, host, value});
+        e.setStreamId(inputStream);
+        e.setTimestamp(ts);
+        return e;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeWindow.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeWindow.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeWindow.java
index 27744a4..d23abcb 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeWindow.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestDistinctValuesInTimeWindow.java
@@ -16,21 +16,21 @@
  */
 package org.apache.eagle.alert.engine.nodata;
 
+import org.apache.eagle.alert.engine.evaluator.nodata.DistinctValuesInTimeWindow;
+import org.junit.Test;
+
 import java.util.Iterator;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
-import org.apache.eagle.alert.engine.evaluator.nodata.DistinctValuesInTimeWindow;
-import org.junit.Test;
-
 /**
  * Since 6/28/16.
  */
 public class TestDistinctValuesInTimeWindow {
     @Test
-    public void test(){
-        DistinctValuesInTimeWindow window = new DistinctValuesInTimeWindow(60*1000);
+    public void test() {
+        DistinctValuesInTimeWindow window = new DistinctValuesInTimeWindow(60 * 1000);
         window.send("1", 0);
         window.send("2", 1000);
         window.send("3", 1000);
@@ -42,9 +42,9 @@ public class TestDistinctValuesInTimeWindow {
     }
 
     @Test
-    public void testSort(){
+    public void testSort() {
         SortedMap<DistinctValuesInTimeWindow.ValueAndTime, DistinctValuesInTimeWindow.ValueAndTime> timeSortedMap =
-                new TreeMap<>(new DistinctValuesInTimeWindow.ValueAndTimeComparator());
+            new TreeMap<>(new DistinctValuesInTimeWindow.ValueAndTimeComparator());
         DistinctValuesInTimeWindow.ValueAndTime vt1 = new DistinctValuesInTimeWindow.ValueAndTime("1", 0);
         timeSortedMap.put(vt1, vt1);
         DistinctValuesInTimeWindow.ValueAndTime vt2 = new DistinctValuesInTimeWindow.ValueAndTime("2", 1000);
@@ -55,7 +55,7 @@ public class TestDistinctValuesInTimeWindow {
         DistinctValuesInTimeWindow.ValueAndTime vt4 = new DistinctValuesInTimeWindow.ValueAndTime("1", 30000);
         timeSortedMap.put(vt4, vt4);
         Iterator<?> it = timeSortedMap.entrySet().iterator();
-        while(it.hasNext()){
+        while (it.hasNext()) {
             System.out.println(it.next());
         }
         timeSortedMap.remove(new DistinctValuesInTimeWindow.ValueAndTime("2", 1000));
@@ -63,8 +63,8 @@ public class TestDistinctValuesInTimeWindow {
         timeSortedMap.put(vt5, vt5);
         DistinctValuesInTimeWindow.ValueAndTime vt6 = new DistinctValuesInTimeWindow.ValueAndTime("1", 62000);
         timeSortedMap.put(vt6, vt6);
-         it = timeSortedMap.entrySet().iterator();
-        while(it.hasNext()){
+        it = timeSortedMap.entrySet().iterator();
+        while (it.hasNext()) {
             System.out.println(it.next());
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestEventTable.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestEventTable.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestEventTable.java
index 4149e17..79b939c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestEventTable.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/nodata/TestEventTable.java
@@ -28,13 +28,13 @@ import org.wso2.siddhi.core.util.EventPrinter;
  */
 public class TestEventTable {
     @Test
-    public void test() throws Exception{
+    public void test() throws Exception {
         ExecutionPlanRuntime runtime = new SiddhiManager().createExecutionPlanRuntime(
-                        "define stream expectStream (key string, src string);"+
-                                "define stream appearStream (key string, src string);"+
-                                "define table expectTable (key string, src string);"+
-                        "from expectStream insert into expectTable;" +
-                                "from appearStream[(expectTable.key==key) in expectTable] insert into outputStream;"
+            "define stream expectStream (key string, src string);" +
+                "define stream appearStream (key string, src string);" +
+                "define table expectTable (key string, src string);" +
+                "from expectStream insert into expectTable;" +
+                "from appearStream[(expectTable.key==key) in expectTable] insert into outputStream;"
         );
 
         runtime.addCallback("outputStream", new StreamCallback() {
@@ -45,9 +45,9 @@ public class TestEventTable {
         });
 
         runtime.start();
-        runtime.getInputHandler("expectStream").send(System.currentTimeMillis(), new Object[]{"host1","expectStream"});
+        runtime.getInputHandler("expectStream").send(System.currentTimeMillis(), new Object[] {"host1", "expectStream"});
         Thread.sleep(2000);
-        runtime.getInputHandler("appearStream").send(System.currentTimeMillis(), new Object[]{"host2","expectStream"});
+        runtime.getInputHandler("appearStream").send(System.currentTimeMillis(), new Object[] {"host2", "expectStream"});
         Thread.sleep(2000);
     }
 }


[17/18] incubator-eagle git commit: [EAGLE-530] Fix checkstyle problems on eagle-alert module and enable failOnViolation

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamConverter.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamConverter.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamConverter.java
index 8867fd7..4627bef 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamConverter.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamConverter.java
@@ -16,49 +16,46 @@
  */
 package org.apache.eagle.alert.coordination.model;
 
+import com.google.common.base.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Strings;
-
 /**
  * Convert incoming tuple to stream
  * incoming tuple consists of 2 fields, topic and map of key/value
- * output stream consists of 3 fields, stream name, timestamp, and map of key/value
+ * output stream consists of 3 fields, stream name, timestamp, and map of key/value.
  */
 public class Tuple2StreamConverter {
     private static final Logger LOG = LoggerFactory.getLogger(Tuple2StreamConverter.class);
     private Tuple2StreamMetadata metadata;
     private StreamNameSelector cachedSelector;
-    public Tuple2StreamConverter(Tuple2StreamMetadata metadata){
+
+    public Tuple2StreamConverter(Tuple2StreamMetadata metadata) {
         this.metadata = metadata;
         try {
-            cachedSelector = (StreamNameSelector)Class.forName(metadata.getStreamNameSelectorCls()).
-                    getConstructor(Properties.class).
-                    newInstance(metadata.getStreamNameSelectorProp());
-        }catch(Exception ex){
+            cachedSelector = (StreamNameSelector) Class.forName(metadata.getStreamNameSelectorCls())
+                .getConstructor(Properties.class)
+                .newInstance(metadata.getStreamNameSelectorProp());
+        } catch (Exception ex) {
             LOG.error("error initializing StreamNameSelector object", ex);
             throw new IllegalStateException(ex);
         }
     }
 
     /**
-     * Assume tuple is composed of topic + map of key/value
-     * @param tuple
-     * @return
+     * Assume tuple is composed of topic + map of key/value.
      */
-    @SuppressWarnings({ "unchecked" })
-    public List<Object> convert(List<Object> tuple){
-        Map<String, Object> m = (Map<String, Object>)tuple.get(1);
+    @SuppressWarnings( {"unchecked"})
+    public List<Object> convert(List<Object> tuple) {
+        Map<String, Object> m = (Map<String, Object>) tuple.get(1);
         String streamName = cachedSelector.getStreamName(m);
-        if(!metadata.getActiveStreamNames().contains(streamName)) {
-            if(LOG.isDebugEnabled()) {
+        if (!metadata.getActiveStreamNames().contains(streamName)) {
+            if (LOG.isDebugEnabled()) {
                 LOG.debug("streamName {} is not within activeStreamNames {}", streamName, metadata.getActiveStreamNames());
             }
             return null;
@@ -81,14 +78,15 @@ public class Tuple2StreamConverter {
                     LOG.debug("continue with current timestamp becuase no data format sepcified! Metadata : {} ", metadata);
                 }
                 timestamp = System.currentTimeMillis();
-            } else 
-            
-            try {
-                SimpleDateFormat sdf = new SimpleDateFormat(metadata.getTimestampFormat());
-                timestamp = sdf.parse(timestampFieldValue).getTime();
-            } catch (Exception ex) {
-                LOG.error("continue with current timestamp because error happens while parsing timestamp column " + metadata.getTimestampColumn() + " with format " + metadata.getTimestampFormat());
-                timestamp = System.currentTimeMillis();
+            } else {
+                try {
+                    SimpleDateFormat sdf = new SimpleDateFormat(metadata.getTimestampFormat());
+                    timestamp = sdf.parse(timestampFieldValue).getTime();
+                } catch (Exception ex) {
+                    LOG.error("continue with current timestamp because error happens while parsing timestamp column "
+                        + metadata.getTimestampColumn() + " with format " + metadata.getTimestampFormat());
+                    timestamp = System.currentTimeMillis();
+                }
             }
         }
         return Arrays.asList(tuple.get(0), streamName, timestamp, tuple.get(1));

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamMetadata.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamMetadata.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamMetadata.java
index bde4fe3..788547d 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamMetadata.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/Tuple2StreamMetadata.java
@@ -21,21 +21,23 @@ import java.util.Properties;
 import java.util.Set;
 
 /**
- * @Since 4/25/16. This metadata controls how tuple is transformed to stream for
- *        example raw data consists of {"metric" : "cpuUsage", "host" :
- *        "xyz.com", "timestamp" : 1346846400, "value" : "0.9"} field "metric"
- *        is used for creating stream name, here "cpuUsage" is stream name
+ * This metadata controls how tuple is transformed to stream for
+ * example raw data consists of {"metric" : "cpuUsage", "host" :
+ * "xyz.com", "timestamp" : 1346846400, "value" : "0.9"} field "metric"
+ * is used for creating stream name, here "cpuUsage" is stream name
  *
- *        metric could be "cpuUsage", "diskUsage", "memUsage" etc, so
- *        activeStreamNames are subset of all metric names
+ * <p>metric could be "cpuUsage", "diskUsage", "memUsage" etc, so
+ * activeStreamNames are subset of all metric names</p>
  *
- *        All other messages which are not one of activeStreamNames will be
- *        filtered out
+ * <p>All other messages which are not one of activeStreamNames will be
+ * filtered out.</p>
+ *
+ * @since 4/25/16
  */
 public class Tuple2StreamMetadata {
     /**
      * only messages belonging to activeStreamNames will be kept while
-     * transforming tuple into stream
+     * transforming tuple into stream.
      */
     private Set<String> activeStreamNames = new HashSet<String>();
     // the specific stream name selector

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedPolicyDefinition.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedPolicyDefinition.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedPolicyDefinition.java
index f4b8ccb..bbd4178 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedPolicyDefinition.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedPolicyDefinition.java
@@ -18,10 +18,6 @@ package org.apache.eagle.alert.coordination.model;
 
 import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 
-/**
- * @since May 25, 2016
- *
- */
 public class VersionedPolicyDefinition {
     private String version;
     private PolicyDefinition definition;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedStreamDefinition.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedStreamDefinition.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedStreamDefinition.java
index 2770aa1..c9f830b 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedStreamDefinition.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/VersionedStreamDefinition.java
@@ -18,10 +18,6 @@ package org.apache.eagle.alert.coordination.model;
 
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 
-/**
- * @since May 25, 2016
- *
- */
 public class VersionedStreamDefinition {
     private String version;
     private StreamDefinition definition;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/WorkSlot.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/WorkSlot.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/WorkSlot.java
index 3f6f36d..9353dbd 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/WorkSlot.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/WorkSlot.java
@@ -63,8 +63,8 @@ public class WorkSlot {
             return false;
         }
         WorkSlot workSlot = (WorkSlot) other;
-        return Objects.equals(topologyName, workSlot.topologyName) &&
-                Objects.equals(boltId, workSlot.boltId);
+        return Objects.equals(topologyName, workSlot.topologyName)
+            && Objects.equals(boltId, workSlot.boltId);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/MonitoredStream.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/MonitoredStream.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/MonitoredStream.java
index beda896..e72836e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/MonitoredStream.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/MonitoredStream.java
@@ -16,22 +16,19 @@
  */
 package org.apache.eagle.alert.coordination.model.internal;
 
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-
 /**
  * A monitored stream is the unique data set in the system.
- * 
- * It's a combination of stream and the specific grp-by on it.
- * 
- * For correlation stream, it means multiple stream for a given monitored stream.
- * 
- * 
- * @since Apr 27, 2016
  *
+ * <p>It's a combination of stream and the specific grp-by on it.
+ *
+ * <p>For correlation stream, it means multiple stream for a given monitored stream.
+ *
+ * @since Apr 27, 2016
  */
 public class MonitoredStream {
 
@@ -40,7 +37,7 @@ public class MonitoredStream {
     // the stream group that this monitored stream stands for
     private StreamGroup streamGroup = new StreamGroup();
     private List<StreamWorkSlotQueue> queues = new ArrayList<StreamWorkSlotQueue>();
-    
+
     public MonitoredStream() {
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/PolicyAssignment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/PolicyAssignment.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/PolicyAssignment.java
index 3e956ca..7747d58 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/PolicyAssignment.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/PolicyAssignment.java
@@ -17,10 +17,9 @@
 package org.apache.eagle.alert.coordination.model.internal;
 
 /**
- * monitor metadata
- * 
- * @since Apr 27, 2016
+ * monitor metadata.
  *
+ * @since Apr 27, 2016
  */
 public class PolicyAssignment {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/ScheduleStateBase.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/ScheduleStateBase.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/ScheduleStateBase.java
index a1efbf9..2462119 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/ScheduleStateBase.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/ScheduleStateBase.java
@@ -17,12 +17,9 @@
 package org.apache.eagle.alert.coordination.model.internal;
 
 /**
- *
- * This is the Base part of ScheduleState, only contains version/generateTime/code/message/scheduleTimeMillis
- *
+ * This is the Base part of ScheduleState, only contains version/generateTime/code/message/scheduleTimeMillis.
  *
  * @since Aug 10, 2016
- *
  */
 public class ScheduleStateBase {
     private String version;
@@ -81,6 +78,4 @@ public class ScheduleStateBase {
     }
 
 
-
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamGroup.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamGroup.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamGroup.java
index d87d62b..7941b85 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamGroup.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamGroup.java
@@ -16,26 +16,23 @@
  */
 package org.apache.eagle.alert.coordination.model.internal;
 
-import java.util.ArrayList;
-import java.util.List;
 
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.google.common.base.Objects;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
+import java.util.ArrayList;
+import java.util.List;
 
-/**
- * @since May 6, 2016
- *
- */
 public class StreamGroup {
 
     private List<StreamPartition> streamPartitions = new ArrayList<StreamPartition>();
-    
+
     public StreamGroup() {
     }
-    
+
     public List<StreamPartition> getStreamPartitions() {
         return streamPartitions;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamWorkSlotQueue.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamWorkSlotQueue.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamWorkSlotQueue.java
index f4f6142..86b150c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamWorkSlotQueue.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/StreamWorkSlotQueue.java
@@ -16,22 +16,20 @@
  */
 package org.apache.eagle.alert.coordination.model.internal;
 
+import org.apache.eagle.alert.coordination.model.WorkSlot;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.eagle.alert.coordination.model.WorkSlot;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
 /**
  * A work queue for given one monitored stream.
- * 
- * Analog to storm's "tasks for given bolt".
- * 
- * @since Apr 27, 2016
  *
+ * <p>Analog to storm's "tasks for given bolt".
+ *
+ * @since Apr 27, 2016
  */
 public class StreamWorkSlotQueue {
     private String queueId;
@@ -40,15 +38,15 @@ public class StreamWorkSlotQueue {
     private boolean dedicated;
     // some dedicated option, like dedicated userId/tenantId/policyId.
     private Map<String, Object> dedicateOption;
-    
+
     private int numberOfGroupBolts;
-    private Map<String, Integer> topoGroupStartIndex = new HashMap<String, Integer>(); 
+    private Map<String, Integer> topoGroupStartIndex = new HashMap<String, Integer>();
 
     public StreamWorkSlotQueue() {
     }
-    
+
     public StreamWorkSlotQueue(StreamGroup par, boolean isDedicated, Map<String, Object> options,
-            List<WorkSlot> slots) {
+                               List<WorkSlot> slots) {
         this.queueId = par.getStreamId() + System.currentTimeMillis();// simply generate a queue
         this.dedicated = isDedicated;
         dedicateOption = new HashMap<String, Object>();
@@ -81,11 +79,11 @@ public class StreamWorkSlotQueue {
         return workingSlots.size();
     }
 
-//    @org.codehaus.jackson.annotate.JsonIgnore
-//    @JsonIgnore
-//    public void placePolicy(PolicyDefinition pd) {
-//        policies.add(pd.getName());
-//    }
+    //    @org.codehaus.jackson.annotate.JsonIgnore
+    //    @JsonIgnore
+    //    public void placePolicy(PolicyDefinition pd) {
+    //        policies.add(pd.getName());
+    //    }
 
     public int getNumberOfGroupBolts() {
         return numberOfGroupBolts;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/Topology.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/Topology.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/Topology.java
index 189e2a5..c41c867 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/Topology.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/coordination/model/internal/Topology.java
@@ -20,10 +20,12 @@ import java.util.HashSet;
 import java.util.Set;
 
 /**
- * @since Mar 24, 2016 Logically one unit topology consists of S spouts, G
- *        groupby bolts, A alertBolts normally S=1 Physically each spout is
- *        composed of s spout nodes, each groupby bolt is composed of g groupby
- *        nodes, and each alert bolt is composed of a alert nodes
+ * Logically one unit topology consists of S spouts, G
+ * groupby bolts, A alertBolts normally S=1 Physically each spout is
+ * composed of s spout nodes, each groupby bolt is composed of g groupby
+ * nodes, and each alert bolt is composed of a alert nodes.
+ *
+ * @since Mar 24, 2016
  */
 public class Topology {
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/codec/IEventSerializer.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/codec/IEventSerializer.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/codec/IEventSerializer.java
index dd26d20..ac375e1 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/codec/IEventSerializer.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/codec/IEventSerializer.java
@@ -19,8 +19,7 @@ package org.apache.eagle.alert.engine.codec;
 import org.apache.eagle.alert.engine.model.AlertStreamEvent;
 
 /**
- * @since Jun 3, 2016
- *
+ * @since Jun 3, 2016.
  */
 public interface IEventSerializer {
     Object serialize(AlertStreamEvent event);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PolicyDefinition.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PolicyDefinition.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PolicyDefinition.java
index c54955f..680b21a 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PolicyDefinition.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PolicyDefinition.java
@@ -25,11 +25,10 @@ import java.io.Serializable;
 import java.util.*;
 
 /**
- * @since Apr 5, 2016
- *
+ * @since Apr 5, 2016.
  */
 @JsonIgnoreProperties(ignoreUnknown = true)
-public class PolicyDefinition implements Serializable{
+public class PolicyDefinition implements Serializable {
     private static final long serialVersionUID = 377581499339572414L;
     // unique identifier
     private String name;
@@ -116,48 +115,50 @@ public class PolicyDefinition implements Serializable{
     }
 
     public PolicyStatus getPolicyStatus() {
-		return policyStatus;
-	}
+        return policyStatus;
+    }
 
-	public void setPolicyStatus(PolicyStatus policyStatus) {
-		this.policyStatus = policyStatus;
-	}
+    public void setPolicyStatus(PolicyStatus policyStatus) {
+        this.policyStatus = policyStatus;
+    }
 
-	@Override
+    @Override
     public int hashCode() {
-        return new HashCodeBuilder().
-                append(name).
-                append(inputStreams).
-                append(outputStreams).
-                append(definition).
-                append(partitionSpec).
-//                append(parallelismHint).
-                build();
+        return new HashCodeBuilder()
+            .append(name)
+            .append(inputStreams)
+            .append(outputStreams)
+            .append(definition)
+            .append(partitionSpec)
+            // .append(parallelismHint)
+            .build();
     }
 
     @Override
-    public boolean equals(Object that){
-        if(that == this)
+    public boolean equals(Object that) {
+        if (that == this) {
             return true;
-        if(! (that instanceof PolicyDefinition))
+        }
+        if (!(that instanceof PolicyDefinition)) {
             return false;
-        PolicyDefinition another = (PolicyDefinition)that;
-        if(Objects.equals(another.name, this.name) &&
-        		Objects.equals(another.description, this.description) &&
-                CollectionUtils.isEqualCollection(another.inputStreams, this.inputStreams) &&
-                CollectionUtils.isEqualCollection(another.outputStreams, this.outputStreams) &&
-                another.definition.equals(this.definition) &&
-                Objects.equals(this.definition, another.definition) &&
-                CollectionUtils.isEqualCollection(another.partitionSpec, this.partitionSpec) 
-//                && another.parallelismHint == this.parallelismHint
-                ) {
+        }
+        PolicyDefinition another = (PolicyDefinition) that;
+        if (Objects.equals(another.name, this.name)
+            && Objects.equals(another.description, this.description)
+            && CollectionUtils.isEqualCollection(another.inputStreams, this.inputStreams)
+            && CollectionUtils.isEqualCollection(another.outputStreams, this.outputStreams)
+            && another.definition.equals(this.definition)
+            && Objects.equals(this.definition, another.definition)
+            && CollectionUtils.isEqualCollection(another.partitionSpec, this.partitionSpec)
+            // && another.parallelismHint == this.parallelismHint
+            ) {
             return true;
         }
         return false;
     }
 
     @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class Definition implements Serializable{
+    public static class Definition implements Serializable {
         private static final long serialVersionUID = -622366527887848346L;
 
         public String type;
@@ -168,7 +169,7 @@ public class PolicyDefinition implements Serializable{
         private List<String> inputStreams = new ArrayList<String>();
         private List<String> outputStreams = new ArrayList<String>();
 
-        public Definition(String type,String value){
+        public Definition(String type, String value) {
             this.type = type;
             this.value = value;
         }
@@ -184,17 +185,20 @@ public class PolicyDefinition implements Serializable{
         }
 
         @Override
-        public boolean equals(Object that){
-            if(that == this)
+        public boolean equals(Object that) {
+            if (that == this) {
                 return true;
-            if(!(that instanceof Definition))
+            }
+            if (!(that instanceof Definition)) {
                 return false;
-            Definition another = (Definition)that;
-            if(another.type.equals(this.type)
-                    && another.value.equals(this.value)
-                    && ListUtils.isEqualList(another.inputStreams, this.inputStreams)
-                    && ListUtils.isEqualList(another.outputStreams, this.outputStreams))
+            }
+            Definition another = (Definition) that;
+            if (another.type.equals(this.type)
+                && another.value.equals(this.value)
+                && ListUtils.isEqualList(another.inputStreams, this.inputStreams)
+                && ListUtils.isEqualList(another.outputStreams, this.outputStreams)) {
                 return true;
+            }
             return false;
         }
 
@@ -248,16 +252,16 @@ public class PolicyDefinition implements Serializable{
 
         @Override
         public String toString() {
-            return String.format("{type=\"%s\",value=\"%s\", inputStreams=\"%s\", outputStreams=\"%s\" }",type,value, inputStreams, outputStreams);
+            return String.format("{type=\"%s\",value=\"%s\", inputStreams=\"%s\", outputStreams=\"%s\" }", type, value, inputStreams, outputStreams);
         }
     }
-    
+
     public static enum PolicyStatus {
-    	ENABLED, DISABLED
+        ENABLED, DISABLED
     }
 
     @Override
     public String toString() {
-        return String.format("{name=\"%s\",definition=%s}",this.getName(),this.getDefinition()==null?"null": this.getDefinition().toString());
+        return String.format("{name=\"%s\",definition=%s}", this.getName(), this.getDefinition() == null ? "null" : this.getDefinition().toString());
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/Publishment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/Publishment.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/Publishment.java
index e3b4e33..0bada4e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/Publishment.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/Publishment.java
@@ -24,8 +24,7 @@ import java.util.Map;
 import java.util.Objects;
 
 /**
- * @since Apr 11, 2016
- *
+ * @since Apr 11, 2016.
  */
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class Publishment {
@@ -100,8 +99,8 @@ public class Publishment {
         if (obj instanceof Publishment) {
             Publishment p = (Publishment) obj;
             return (Objects.equals(name, p.getName()) && Objects.equals(type, p.getType())
-                    && Objects.equals(dedupIntervalMin, p.getDedupIntervalMin())
-                    && Objects.equals(policyIds, p.getPolicyIds()) && properties.equals(p.getProperties()));
+                && Objects.equals(dedupIntervalMin, p.getDedupIntervalMin())
+                && Objects.equals(policyIds, p.getPolicyIds()) && properties.equals(p.getProperties()));
         }
         return false;
     }
@@ -109,14 +108,14 @@ public class Publishment {
     @Override
     public int hashCode() {
         return new HashCodeBuilder().append(name).append(type).append(dedupIntervalMin).append(policyIds)
-                .append(properties).build();
+            .append(properties).build();
     }
 
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("Publishment[name:").append(name).append(",type:").append(type).append(",policyId:")
-                .append(policyIds).append(",properties:").append(properties);
+            .append(policyIds).append(",properties:").append(properties);
         return sb.toString();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PublishmentType.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PublishmentType.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PublishmentType.java
index daecab4..5329dfa 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PublishmentType.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/PublishmentType.java
@@ -18,11 +18,11 @@
 
 package org.apache.eagle.alert.engine.coordinator;
 
-import java.util.Objects;
-
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 
+import java.util.Objects;
+
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class PublishmentType {
 
@@ -39,17 +39,19 @@ public class PublishmentType {
         this.type = type;
     }
 
-    public String getClassName(){
+    public String getClassName() {
         return className;
     }
-    public void setClassName(String className){
+
+    public void setClassName(String className) {
         this.className = className;
     }
 
-    public String getDescription(){
+    public String getDescription() {
         return description;
     }
-    public void setDescription(String description){
+
+    public void setDescription(String description) {
         this.description = description;
     }
 
@@ -65,10 +67,10 @@ public class PublishmentType {
     public boolean equals(Object obj) {
         if (obj instanceof PublishmentType) {
             PublishmentType p = (PublishmentType) obj;
-            return (Objects.equals(className, p.getClassName()) &&
-                    Objects.equals(type, p.type) && 
-                    Objects.equals(description, p.getDescription()) &&
-                    Objects.equals(fields, p.getFields()));
+            return (Objects.equals(className, p.getClassName())
+                && Objects.equals(type, p.type)
+                && Objects.equals(description, p.getDescription())
+                && Objects.equals(fields, p.getFields()));
         }
         return false;
     }
@@ -76,10 +78,10 @@ public class PublishmentType {
     @Override
     public int hashCode() {
         return new HashCodeBuilder()
-                .append(className)
-                .append(type)
-                .append(description)
-                .append(fields)
-                .build();
+            .append(className)
+            .append(type)
+            .append(description)
+            .append(fields)
+            .build();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamColumn.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamColumn.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamColumn.java
index 4483fe4..2be4936 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamColumn.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamColumn.java
@@ -16,16 +16,14 @@
  */
 package org.apache.eagle.alert.engine.coordinator;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.HashMap;
-
 import javax.xml.bind.annotation.adapters.XmlAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-
 public class StreamColumn implements Serializable {
     private static final long serialVersionUID = -5457861313624389106L;
     private String name;
@@ -36,19 +34,19 @@ public class StreamColumn implements Serializable {
     private String nodataExpression;
 
     public String toString() {
-        return String.format("StreamColumn=name[%s], type=[%s], defaultValue=[%s], required=[%s], nodataExpression=[%s]", 
-        		name, type, defaultValue, required, nodataExpression);
+        return String.format("StreamColumn=name[%s], type=[%s], defaultValue=[%s], required=[%s], nodataExpression=[%s]",
+            name, type, defaultValue, required, nodataExpression);
     }
 
     public String getNodataExpression() {
-		return nodataExpression;
-	}
+        return nodataExpression;
+    }
 
-	public void setNodataExpression(String nodataExpression) {
-		this.nodataExpression = nodataExpression;
-	}
+    public void setNodataExpression(String nodataExpression) {
+        this.nodataExpression = nodataExpression;
+    }
 
-	public String getName() {
+    public String getName() {
         return name;
     }
 
@@ -71,7 +69,7 @@ public class StreamColumn implements Serializable {
     }
 
     private void ensureDefaultValueType() {
-        if(this.getDefaultValue()!=null && (this.getDefaultValue() instanceof String) && this.getType() != Type.STRING){
+        if (this.getDefaultValue() != null && (this.getDefaultValue() instanceof String) && this.getType() != Type.STRING) {
             switch (this.getType()) {
                 case INT:
                     this.setDefaultValue(Integer.valueOf((String) this.getDefaultValue()));
@@ -90,11 +88,13 @@ public class StreamColumn implements Serializable {
                     break;
                 case OBJECT:
                     try {
-                        this.setDefaultValue(new ObjectMapper().readValue((String) this.getDefaultValue(),HashMap.class));
+                        this.setDefaultValue(new ObjectMapper().readValue((String) this.getDefaultValue(), HashMap.class));
                     } catch (IOException e) {
                         throw new IllegalArgumentException(e);
                     }
                     break;
+                default:
+                    throw new IllegalArgumentException("Illegal type: " + this.getType());
             }
         }
     }
@@ -145,7 +145,7 @@ public class StreamColumn implements Serializable {
         }
     }
 
-    public static class StreamColumnTypeAdapter extends XmlAdapter<String,Type>{
+    public static class StreamColumnTypeAdapter extends XmlAdapter<String, Type> {
 
         @Override
         public Type unmarshal(String v) throws Exception {
@@ -158,7 +158,7 @@ public class StreamColumn implements Serializable {
         }
     }
 
-    public static class DefaultValueAdapter extends XmlAdapter<String,Object>{
+    public static class DefaultValueAdapter extends XmlAdapter<String, Object> {
         @Override
         public Object unmarshal(String v) throws Exception {
             return v;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinition.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinition.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinition.java
index beb8491..9130951 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinition.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamDefinition.java
@@ -16,18 +16,18 @@
  */
 package org.apache.eagle.alert.engine.coordinator;
 
-import javax.xml.bind.annotation.*;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
 
 /**
  * This is actually a data source schema.
- * 
- * @since Apr 5, 2016
  *
+ * @since Apr 5, 2016
  */
-public class StreamDefinition implements Serializable{
+public class StreamDefinition implements Serializable {
     private static final long serialVersionUID = 2352202882328931825L;
     private String streamId;
     private String dataSource;
@@ -37,14 +37,14 @@ public class StreamDefinition implements Serializable{
 
     private List<StreamColumn> columns = new ArrayList<>();
 
-    public String toString(){
+    public String toString() {
         return String.format("StreamDefinition[streamId=%s, dataSource=%s, description=%s, validate=%s, timeseries=%s, columns=%s",
-                streamId,
-                dataSource,
-                description,
-                validate,
-                timeseries,
-                columns);
+            streamId,
+            dataSource,
+            description,
+            validate,
+            timeseries,
+            columns);
     }
 
     public String getStreamId() {
@@ -79,7 +79,7 @@ public class StreamDefinition implements Serializable{
         this.timeseries = timeseries;
     }
 
-    @XmlElementWrapper(name="columns")
+    @XmlElementWrapper(name = "columns")
     @XmlElement(name = "column")
     public List<StreamColumn> getColumns() {
         return columns;
@@ -97,10 +97,12 @@ public class StreamDefinition implements Serializable{
         this.dataSource = dataSource;
     }
 
-    public int getColumnIndex(String column){
-        int i=0;
-        for(StreamColumn col:this.getColumns()){
-            if(col.getName().equals(column)) return i;
+    public int getColumnIndex(String column) {
+        int i = 0;
+        for (StreamColumn col : this.getColumns()) {
+            if (col.getName().equals(column)) {
+                return i;
+            }
             i++;
         }
         return -1;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamPartition.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamPartition.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamPartition.java
index 47e15c0..0987463 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamPartition.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamPartition.java
@@ -16,20 +16,19 @@
  */
 package org.apache.eagle.alert.engine.coordinator;
 
-import java.io.Serializable;
-import java.util.*;
-
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.io.Serializable;
+import java.util.*;
 
 /**
  * StreamPartition defines how a data stream is partitioned and sorted
  * streamId is used for distinguishing different streams which are spawned from the same data source
  * type defines how to partition data among slots within one slotqueue
  * columns are fields based on which stream is grouped
- * sortSpec defines how data is sorted
+ * sortSpec defines how data is sorted.
  */
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class StreamPartition implements Serializable {
@@ -52,14 +51,15 @@ public class StreamPartition implements Serializable {
 
     @Override
     public boolean equals(Object other) {
-        if (other == this)
+        if (other == this) {
             return true;
+        }
         if (!(other instanceof StreamPartition)) {
             return false;
         }
         StreamPartition sp = (StreamPartition) other;
         return Objects.equals(streamId, sp.streamId) && Objects.equals(type, sp.type)
-                && CollectionUtils.isEqualCollection(columns, sp.columns) && Objects.equals(sortSpec, sp.sortSpec);
+            && CollectionUtils.isEqualCollection(columns, sp.columns) && Objects.equals(sortSpec, sp.sortSpec);
     }
 
     @Override
@@ -71,46 +71,52 @@ public class StreamPartition implements Serializable {
         this.type = type;
     }
 
-    public Type getType(){
+    public Type getType() {
         return this.type;
     }
 
-    public enum Type{
-        GLOBAL("GLOBAL",0), GROUPBY("GROUPBY",1), SHUFFLE("SHUFFLE",2);
+    public enum Type {
+        GLOBAL("GLOBAL", 0), GROUPBY("GROUPBY", 1), SHUFFLE("SHUFFLE", 2);
         private final String name;
         private final int index;
-        Type(String name, int index){
+
+        Type(String name, int index) {
             this.name = name;
             this.index = index;
         }
+
         @Override
         public String toString() {
             return this.name;
         }
-        public static Type locate(String type){
+
+        public static Type locate(String type) {
             Type _type = _NAME_TYPE.get(type.toUpperCase());
-            if(_type == null)
-                throw new IllegalStateException("Illegal type name: "+type);
+            if (_type == null) {
+                throw new IllegalStateException("Illegal type name: " + type);
+            }
             return _type;
         }
 
-        public static Type locate(int index){
+        public static Type locate(int index) {
             Type _type = _INDEX_TYPE.get(index);
-            if(_type == null)
-                throw new IllegalStateException("Illegal type index: "+index);
+            if (_type == null) {
+                throw new IllegalStateException("Illegal type index: " + index);
+            }
             return _type;
         }
 
-        private static final Map<String,Type> _NAME_TYPE = new HashMap<>();
-        private static final Map<Integer,Type> _INDEX_TYPE = new TreeMap<>();
+        private static final Map<String, Type> _NAME_TYPE = new HashMap<>();
+        private static final Map<Integer, Type> _INDEX_TYPE = new TreeMap<>();
+
         static {
-            _NAME_TYPE.put(GLOBAL.name,GLOBAL);
-            _NAME_TYPE.put(GROUPBY.name,GROUPBY);
-            _NAME_TYPE.put(SHUFFLE.name,SHUFFLE);
+            _NAME_TYPE.put(GLOBAL.name, GLOBAL);
+            _NAME_TYPE.put(GROUPBY.name, GROUPBY);
+            _NAME_TYPE.put(SHUFFLE.name, SHUFFLE);
 
-            _INDEX_TYPE.put(GLOBAL.index,GLOBAL);
-            _INDEX_TYPE.put(GROUPBY.index,GLOBAL);
-            _INDEX_TYPE.put(SHUFFLE.index,GLOBAL);
+            _INDEX_TYPE.put(GLOBAL.index, GLOBAL);
+            _INDEX_TYPE.put(GROUPBY.index, GLOBAL);
+            _INDEX_TYPE.put(SHUFFLE.index, GLOBAL);
         }
     }
 
@@ -140,6 +146,6 @@ public class StreamPartition implements Serializable {
 
     @Override
     public String toString() {
-        return String.format("StreamPartition[streamId=%s,type=%s,columns=[%s],sortSpec=[%s]]",this.getStreamId(),this.getType(), StringUtils.join(this.getColumns(),","), sortSpec);
+        return String.format("StreamPartition[streamId=%s,type=%s,columns=[%s],sortSpec=[%s]]", this.getStreamId(), this.getType(), StringUtils.join(this.getColumns(), ","), sortSpec);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamSortSpec.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamSortSpec.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamSortSpec.java
index 962a8ee..65b9151 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamSortSpec.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamSortSpec.java
@@ -16,24 +16,24 @@
  */
 package org.apache.eagle.alert.engine.coordinator;
 
-
+import org.apache.eagle.alert.utils.TimePeriodUtils;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.eagle.alert.utils.TimePeriodUtils;
 import org.joda.time.Period;
 
 import java.io.Serializable;
 
 /**
- * streamId is the key
+ * streamId is the key.
  */
 @JsonIgnoreProperties(ignoreUnknown = true)
-public class StreamSortSpec implements Serializable{
+public class StreamSortSpec implements Serializable {
     private static final long serialVersionUID = 3626506441441584937L;
-    private String windowPeriod="";
+    private String windowPeriod = "";
     private int windowMargin = 30 * 1000; // 30 seconds by default
 
-    public StreamSortSpec() {}
+    public StreamSortSpec() {
+    }
 
     public StreamSortSpec(StreamSortSpec spec) {
         this.windowPeriod = spec.windowPeriod;
@@ -45,14 +45,17 @@ public class StreamSortSpec implements Serializable{
     }
 
     public int getWindowPeriodMillis() {
-        if(windowPeriod!=null) {
+        if (windowPeriod != null) {
             return TimePeriodUtils.getMillisecondsOfPeriod(Period.parse(windowPeriod));
-        } else return 0;
+        } else {
+            return 0;
+        }
     }
 
     public void setWindowPeriod(String windowPeriod) {
         this.windowPeriod = windowPeriod;
     }
+
     public void setWindowPeriodMillis(int windowPeriodMillis) {
         this.windowPeriod = Period.millis(windowPeriodMillis).toString();
     }
@@ -71,30 +74,32 @@ public class StreamSortSpec implements Serializable{
     }
 
     @Override
-    public int hashCode(){
-        return new HashCodeBuilder().
-                append(windowPeriod).
-                append(windowMargin).toHashCode();
+    public int hashCode() {
+        return new HashCodeBuilder()
+            .append(windowPeriod)
+            .append(windowMargin)
+            .toHashCode();
     }
 
     @Override
-    public boolean equals(Object that){
-        if(this == that)
+    public boolean equals(Object that) {
+        if (this == that) {
             return true;
-        if(!(that instanceof StreamSortSpec)){
+        }
+        if (!(that instanceof StreamSortSpec)) {
             return false;
         }
 
-        StreamSortSpec another = (StreamSortSpec)that;
-        return 
-                another.windowPeriod.equals(this.windowPeriod) &&
-                another.windowMargin == this.windowMargin;
+        StreamSortSpec another = (StreamSortSpec) that;
+        return
+            another.windowPeriod.equals(this.windowPeriod)
+                && another.windowMargin == this.windowMargin;
     }
 
     @Override
-    public String toString(){
+    public String toString() {
         return String.format("StreamSortSpec[windowPeriod=%s,windowMargin=%d]",
-                this.getWindowPeriod(),
-                this.getWindowMargin());
+            this.getWindowPeriod(),
+            this.getWindowMargin());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamingCluster.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamingCluster.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamingCluster.java
index 6cafb16..1e40309 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamingCluster.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/coordinator/StreamingCluster.java
@@ -16,13 +16,11 @@
  */
 package org.apache.eagle.alert.engine.coordinator;
 
-import java.util.Map;
-
 import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
 
 /**
- * @since Apr 5, 2016
- *
+ * @since Apr 5, 2016.
  */
 public class StreamingCluster {
     public static enum StreamingType {
@@ -38,7 +36,7 @@ public class StreamingCluster {
     @JsonProperty
     private String description;
     /**
-     * key - nimbus for storm
+     * key - nimbus for storm.
      */
     @JsonProperty
     private Map<String, String> deployments;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/AlertStreamEvent.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/AlertStreamEvent.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/AlertStreamEvent.java
index 13881a1..a503dcf 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/AlertStreamEvent.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/AlertStreamEvent.java
@@ -16,15 +16,14 @@
  */
 package org.apache.eagle.alert.engine.model;
 
-import org.apache.commons.lang3.StringUtils;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.utils.DateTimeUtil;
-
+import org.apache.commons.lang3.StringUtils;
 import java.util.ArrayList;
 import java.util.List;
 
 /**
- * streamId stands for alert type instead of source event streamId
+ * streamId stands for alert type instead of source event streamId.
  */
 public class AlertStreamEvent extends StreamEvent {
     private static final long serialVersionUID = 2392131134670106397L;
@@ -45,15 +44,16 @@ public class AlertStreamEvent extends StreamEvent {
     @Override
     public String toString() {
         List<String> dataStrings = new ArrayList<>(this.getData().length);
-        for(Object obj: this.getData()){
-            if(obj!=null) {
+        for (Object obj : this.getData()) {
+            if (obj != null) {
                 dataStrings.add(obj.toString());
-            }else{
+            } else {
                 dataStrings.add(null);
             }
         }
         return String.format("AlertStreamEvent[stream=%S,timestamp=%s,data=[%s], policyId=%s, createdBy=%s, metaVersion=%s]",
-                this.getStreamId(), DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.getTimestamp()), StringUtils.join(dataStrings,","),this.getPolicyId(),this.getCreatedBy(),this.getMetaVersion());
+            this.getStreamId(), DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.getTimestamp()),
+            StringUtils.join(dataStrings, ","), this.getPolicyId(), this.getCreatedBy(), this.getMetaVersion());
     }
 
     public String getCreatedBy() {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/PartitionedEvent.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/PartitionedEvent.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/PartitionedEvent.java
index cfed3e2..51e4532 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/PartitionedEvent.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/PartitionedEvent.java
@@ -16,21 +16,19 @@
  */
 package org.apache.eagle.alert.engine.model;
 
-import java.io.Serializable;
-import java.util.Objects;
-
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.alert.engine.coordinator.StreamPartition;
-
 import backtype.storm.tuple.Tuple;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.io.Serializable;
+import java.util.Objects;
 
 /**
  * This is a critical data structure across spout, router bolt and alert bolt
  * partition[StreamPartition] defines how one incoming data stream is partitioned, sorted
  * partitionKey[long] is java hash value of groupby fields. The groupby fields are defined in StreamPartition
- * event[StreamEvent] is actual data
+ * event[StreamEvent] is actual data.
  */
-public class PartitionedEvent implements Serializable{
+public class PartitionedEvent implements Serializable {
     private static final long serialVersionUID = -3840016190614238593L;
     private StreamPartition partition;
     private long partitionKey;
@@ -38,11 +36,11 @@ public class PartitionedEvent implements Serializable{
 
     /**
      * Used for bolt-internal but not inter-bolts,
-     * will not pass across bolts
+     * will not pass across bolts.
      */
     private transient Tuple anchor;
 
-    public PartitionedEvent(){
+    public PartitionedEvent() {
         this.event = null;
         this.partition = null;
         this.partitionKey = 0L;
@@ -56,14 +54,18 @@ public class PartitionedEvent implements Serializable{
 
     @Override
     public boolean equals(Object obj) {
-        if(obj == this) return true;
-        if(obj == null) return false;
-        if(obj instanceof PartitionedEvent){
+        if (obj == this) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (obj instanceof PartitionedEvent) {
             PartitionedEvent another = (PartitionedEvent) obj;
             return !(this.partitionKey != another.getPartitionKey()
-                    || !Objects.equals(this.event, another.getEvent())
-                    || !Objects.equals(this.partition, another.getPartition())
-                    || !Objects.equals(this.anchor, another.anchor));
+                || !Objects.equals(this.event, another.getEvent())
+                || !Objects.equals(this.partition, another.getPartition())
+                || !Objects.equals(this.anchor, another.anchor));
         } else {
             return false;
         }
@@ -72,10 +74,10 @@ public class PartitionedEvent implements Serializable{
     @Override
     public int hashCode() {
         return new HashCodeBuilder()
-                .append(partitionKey)
-                .append(event)
-                .append(partition)
-                .build();
+            .append(partitionKey)
+            .append(event)
+            .append(partition)
+            .build();
     }
 
     public StreamEvent getEvent() {
@@ -94,36 +96,36 @@ public class PartitionedEvent implements Serializable{
         this.partition = partition;
     }
 
-    public void setPartitionKey(long partitionKey){
+    public void setPartitionKey(long partitionKey) {
         this.partitionKey = partitionKey;
     }
 
-    public long getPartitionKey(){
+    public long getPartitionKey() {
         return this.partitionKey;
     }
 
-    public String toString(){
-       return String.format("PartitionedEvent[partition=%s,event=%s,key=%s", partition, event,partitionKey);
+    public String toString() {
+        return String.format("PartitionedEvent[partition=%s,event=%s,key=%s", partition, event, partitionKey);
     }
 
     public long getTimestamp() {
         return (event != null) ? event.getTimestamp() : 0L;
     }
 
-    public String getStreamId(){
+    public String getStreamId() {
         return (event != null) ? event.getStreamId() : null;
     }
 
-    public Object[] getData(){
-        return event!=null ? event.getData() : null;
+    public Object[] getData() {
+        return event != null ? event.getData() : null;
     }
 
-    public boolean isSortRequired(){
-        return isPartitionRequired() && this.getPartition().getSortSpec()!=null;
+    public boolean isSortRequired() {
+        return isPartitionRequired() && this.getPartition().getSortSpec() != null;
     }
 
-    public boolean isPartitionRequired(){
-        return this.getPartition()!=null;
+    public boolean isPartitionRequired() {
+        return this.getPartition() != null;
     }
 
     public PartitionedEvent copy() {
@@ -142,7 +144,7 @@ public class PartitionedEvent implements Serializable{
         this.anchor = anchor;
     }
 
-    public PartitionedEvent withAnchor(Tuple tuple){
+    public PartitionedEvent withAnchor(Tuple tuple) {
         this.setAnchor(tuple);
         return this;
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEvent.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEvent.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEvent.java
index 5f59b1e..d91b001 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEvent.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEvent.java
@@ -16,11 +16,10 @@
  */
 package org.apache.eagle.alert.engine.model;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.alert.utils.DateTimeUtil;
-
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,8 +27,7 @@ import java.util.List;
 import java.util.Objects;
 
 /**
- * @since Apr 5, 2016
- *
+ * @since Apr 5, 2016.
  */
 public class StreamEvent implements Serializable {
     private static final long serialVersionUID = 2765116509856609763L;
@@ -39,15 +37,16 @@ public class StreamEvent implements Serializable {
     private long timestamp;
     private String metaVersion;
 
-    public StreamEvent(){}
+    public StreamEvent() {
+    }
 
-    public StreamEvent(String streamId,long timestamp,Object[] data){
+    public StreamEvent(String streamId, long timestamp, Object[] data) {
         this.setStreamId(streamId);
         this.setTimestamp(timestamp);
         this.setData(data);
     }
 
-    public StreamEvent(String streamId,long timestamp,Object[] data,String metaVersion){
+    public StreamEvent(String streamId, long timestamp, Object[] data, String metaVersion) {
         this.setStreamId(streamId);
         this.setTimestamp(timestamp);
         this.setData(data);
@@ -62,9 +61,6 @@ public class StreamEvent implements Serializable {
         this.streamId = streamId;
     }
 
-    public Object[] getData() {
-        return data;
-    }
 
     public void setData(Object[] data) {
         this.data = data;
@@ -93,10 +89,12 @@ public class StreamEvent implements Serializable {
 
     @Override
     public boolean equals(Object obj) {
-        if(obj == this) return true;
-        if(obj instanceof StreamEvent){
+        if (obj == this) {
+            return true;
+        }
+        if (obj instanceof StreamEvent) {
             StreamEvent another = (StreamEvent) obj;
-            return Objects.equals(this.streamId,another.streamId) && this.timestamp == another.timestamp && Arrays.deepEquals(this.data,another.data);
+            return Objects.equals(this.streamId, another.streamId) && this.timestamp == another.timestamp && Arrays.deepEquals(this.data, another.data);
         }
         return false;
     }
@@ -104,7 +102,7 @@ public class StreamEvent implements Serializable {
     @Override
     public String toString() {
         List<String> dataStrings = new ArrayList<>();
-        if(this.getData() != null) {
+        if (this.getData() != null) {
             for (Object obj : this.getData()) {
                 if (obj != null) {
                     dataStrings.add(obj.toString());
@@ -113,17 +111,21 @@ public class StreamEvent implements Serializable {
                 }
             }
         }
-        return String.format("StreamEvent[stream=%S,timestamp=%s,data=[%s],metaVersion=%s]",this.getStreamId(), DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.getTimestamp()), StringUtils.join(dataStrings,","), this.getMetaVersion());
+        return String.format("StreamEvent[stream=%S,timestamp=%s,data=[%s],metaVersion=%s]",
+            this.getStreamId(),
+            DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.getTimestamp()),
+            StringUtils.join(dataStrings, ","),
+            this.getMetaVersion());
     }
 
-    public static StreamEventBuilder Builder(){
+    public static StreamEventBuilder builder() {
         return new StreamEventBuilder();
     }
 
     /**
-     * @return cloned new event object
+     * @return cloned new event object.
      */
-    public StreamEvent copy(){
+    public StreamEvent copy() {
         StreamEvent newEvent = new StreamEvent();
         newEvent.setTimestamp(this.getTimestamp());
         newEvent.setData(this.getData());
@@ -132,19 +134,18 @@ public class StreamEvent implements Serializable {
         return newEvent;
     }
 
-    public void copyFrom(StreamEvent event){
+    public void copyFrom(StreamEvent event) {
         this.setTimestamp(event.getTimestamp());
         this.setData(event.getData());
         this.setStreamId(event.getStreamId());
         this.setMetaVersion(event.getMetaVersion());
     }
 
-    /**
-     * @param column
-     * @param streamDefinition
-     * @return
-     */
-    public Object[] getData(StreamDefinition streamDefinition,List<String> column) {
+    public Object[] getData() {
+        return data;
+    }
+
+    public Object[] getData(StreamDefinition streamDefinition, List<String> column) {
         ArrayList<Object> result = new ArrayList<>(column.size());
         for (String colName : column) {
             result.add(this.getData()[streamDefinition.getColumnIndex(colName)]);
@@ -152,7 +153,7 @@ public class StreamEvent implements Serializable {
         return result.toArray();
     }
 
-    public Object[] getData(StreamDefinition streamDefinition,String ... column) {
+    public Object[] getData(StreamDefinition streamDefinition, String... column) {
         ArrayList<Object> result = new ArrayList<>(column.length);
         for (String colName : column) {
             result.add(this.getData()[streamDefinition.getColumnIndex(colName)]);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEventBuilder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEventBuilder.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEventBuilder.java
index 1036ba2..53101ef 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEventBuilder.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/engine/model/StreamEventBuilder.java
@@ -25,62 +25,65 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-public class StreamEventBuilder{
-    private final static Logger LOG = LoggerFactory.getLogger(StreamEventBuilder.class);
+public class StreamEventBuilder {
+    private static final Logger LOG = LoggerFactory.getLogger(StreamEventBuilder.class);
 
     private StreamEvent instance;
     private StreamDefinition streamDefinition;
-    public StreamEventBuilder(){
+
+    public StreamEventBuilder() {
         instance = new StreamEvent();
     }
 
-    public StreamEventBuilder schema(StreamDefinition streamDefinition){
+    public StreamEventBuilder schema(StreamDefinition streamDefinition) {
         this.streamDefinition = streamDefinition;
-        if(instance.getStreamId() == null) instance.setStreamId(streamDefinition.getStreamId());
+        if (instance.getStreamId() == null) {
+            instance.setStreamId(streamDefinition.getStreamId());
+        }
         return this;
     }
 
-    public StreamEventBuilder streamId(String streamId){
+    public StreamEventBuilder streamId(String streamId) {
         instance.setStreamId(streamId);
         return this;
     }
 
-    public StreamEventBuilder attributes(Map<String,Object> data, StreamDefinition streamDefinition){
+    public StreamEventBuilder attributes(Map<String, Object> data, StreamDefinition streamDefinition) {
         this.schema(streamDefinition);
         List<StreamColumn> columnList = streamDefinition.getColumns();
-        if(columnList!=null && columnList.size() > 0){
+        if (columnList != null && columnList.size() > 0) {
             List<Object> values = new ArrayList<>(columnList.size());
             for (StreamColumn column : columnList) {
-                values.add(data.getOrDefault(column.getName(),column.getDefaultValue()));
+                values.add(data.getOrDefault(column.getName(), column.getDefaultValue()));
             }
             instance.setData(values.toArray());
-        } else if(LOG.isDebugEnabled()){
-            LOG.warn("All data [{}] are ignored as no columns defined in schema {}",data,streamDefinition);
+        } else if (LOG.isDebugEnabled()) {
+            LOG.warn("All data [{}] are ignored as no columns defined in schema {}", data, streamDefinition);
         }
         return this;
     }
 
-    public StreamEventBuilder attributes(Map<String,Object> data){
-        return attributes(data,this.streamDefinition);
+    public StreamEventBuilder attributes(Map<String, Object> data) {
+        return attributes(data, this.streamDefinition);
     }
 
-    public StreamEventBuilder attributes(Object ... data){
+    public StreamEventBuilder attributes(Object... data) {
         instance.setData(data);
         return this;
     }
 
-    public StreamEventBuilder timestamep(long timestamp){
+    public StreamEventBuilder timestamep(long timestamp) {
         instance.setTimestamp(timestamp);
         return this;
     }
 
-    public StreamEventBuilder metaVersion(String metaVersion){
+    public StreamEventBuilder metaVersion(String metaVersion) {
         instance.setMetaVersion(metaVersion);
         return this;
     }
 
-    public StreamEvent build(){
-        if(instance.getStreamId() == null){
+    public StreamEvent build() {
+        if (instance.getStreamId() == null) {
             throw new IllegalArgumentException("streamId is null of event: " + instance);
         }
         return instance;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/IMetricSystem.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/IMetricSystem.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/IMetricSystem.java
index 06a99f4..461a23c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/IMetricSystem.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/IMetricSystem.java
@@ -1,14 +1,4 @@
-package org.apache.eagle.alert.metric;
-
-import java.util.Map;
-
-import org.apache.eagle.alert.metric.sink.MetricSink;
-import org.apache.eagle.alert.metric.source.MetricSource;
-
-import com.codahale.metrics.MetricRegistry;
-import com.typesafe.config.Config;
-
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -24,41 +14,48 @@ import com.typesafe.config.Config;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.eagle.alert.metric;
+
+import org.apache.eagle.alert.metric.sink.MetricSink;
+import org.apache.eagle.alert.metric.source.MetricSource;
+
+import com.codahale.metrics.MetricRegistry;
+import com.typesafe.config.Config;
+import java.util.Map;
+
 public interface IMetricSystem {
 
     /**
-     * Initialize
+     * Initialize.
      */
     void start();
 
     /**
-     * Schedule reporter
+     * Schedule reporter.
      */
     void schedule();
 
     /**
-     * Close and stop all resources and services
+     * Close and stop all resources and services.
      */
     void stop();
 
     /**
-     * Manual report metric
+     * Manual report metric.
      */
     void report();
 
     /**
-     *
-     * @param sink metric sink
+     * @param sink metric sink.
      */
-    void register(MetricSink sink,Config config);
+    void register(MetricSink sink, Config config);
 
     /**
-     *
-     * @param source metric source
+     * @param source metric source.
      */
     void register(MetricSource source);
 
-    void tags(Map<String,Object> metricTags);
+    void tags(Map<String, Object> metricTags);
 
     MetricRegistry registry();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java
index b91c606..555c4ec 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -16,74 +16,74 @@
  */
 package org.apache.eagle.alert.metric;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
 import org.apache.eagle.alert.metric.sink.MetricSink;
 import org.apache.eagle.alert.metric.sink.MetricSinkRepository;
 import org.apache.eagle.alert.metric.source.MetricSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.codahale.metrics.MetricRegistry;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 public class MetricSystem implements IMetricSystem {
     private final Config config;
-    private Map<MetricSink,Config> sinks = new HashMap<>();
-//    private Map<String,MetricSource> sources = new HashMap<>();
+    private Map<MetricSink, Config> sinks = new HashMap<>();
+    //    private Map<String,MetricSource> sources = new HashMap<>();
     private MetricRegistry registry = new MetricRegistry();
     private boolean running;
     private boolean initialized;
-    private final static Logger LOG = LoggerFactory.getLogger(MetricSystem.class);
+    private static final Logger LOG = LoggerFactory.getLogger(MetricSystem.class);
     private final Map<String, Object> metricTags = new HashMap<>();
 
-    public MetricSystem(Config config){
+    public MetricSystem(Config config) {
         this.config = config;
     }
 
-    public static MetricSystem load(Config config){
+    public static MetricSystem load(Config config) {
         MetricSystem instance = new MetricSystem(config);
         instance.loadFromConfig();
         return instance;
     }
 
     @Override
-    public void tags(Map<String,Object> metricTags){
+    public void tags(Map<String, Object> metricTags) {
         this.metricTags.putAll(metricTags);
     }
 
     @Override
     public void start() {
-        if(initialized)
+        if (initialized) {
             throw new IllegalStateException("Attempting to initialize a MetricsSystem that is already intialized");
-        sinks.forEach((sink,conf) -> sink.prepare(conf.withValue("tags",ConfigFactory.parseMap(metricTags).root()),registry));
+        }
+        sinks.forEach((sink, conf) -> sink.prepare(conf.withValue("tags", ConfigFactory.parseMap(metricTags).root()), registry));
         initialized = true;
     }
 
     @Override
     public void schedule() {
-        if(running){
-           throw  new IllegalStateException("Attempting to start a MetricsSystem that is already running");
+        if (running) {
+            throw new IllegalStateException("Attempting to start a MetricsSystem that is already running");
         }
 
-        sinks.keySet().forEach((sink)->sink.start(5, TimeUnit.SECONDS));
+        sinks.keySet().forEach((sink) -> sink.start(5, TimeUnit.SECONDS));
         running = true;
     }
 
-    public void loadFromConfig(){
+    public void loadFromConfig() {
         loadSinksFromConfig();
     }
 
-    private void loadSinksFromConfig(){
+    private void loadSinksFromConfig() {
         Config sinkCls = config.hasPath("metric.sink") ? config.getConfig("metric.sink") : null;
-        if(sinkCls == null){
+        if (sinkCls == null) {
             // do nothing
-        }else{
-            for(String sinkType:sinkCls.root().unwrapped().keySet()){
-                register(MetricSinkRepository.createSink(sinkType),config.getConfig("metric.sink."+sinkType));
+        } else {
+            for (String sinkType : sinkCls.root().unwrapped().keySet()) {
+                register(MetricSinkRepository.createSink(sinkType), config.getConfig("metric.sink." + sinkType));
             }
         }
     }
@@ -99,9 +99,9 @@ public class MetricSystem implements IMetricSystem {
     }
 
     @Override
-    public void register(MetricSink sink,Config config) {
-        LOG.debug("Register {}",sink);
-        sinks.put(sink,config);
+    public void register(MetricSink sink, Config config) {
+        LOG.debug("Register {}", sink);
+        sinks.put(sink, config);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/a0fc8708/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java
index b5e6c63..f1262c7 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java
@@ -16,55 +16,54 @@
  */
 package org.apache.eagle.alert.metric.entity;
 
-import java.util.Map;
-import java.util.TreeMap;
-
 import org.apache.eagle.alert.utils.DateTimeUtil;
-
 import com.codahale.metrics.Counter;
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.Histogram;
 import com.codahale.metrics.Meter;
 import com.codahale.metrics.Snapshot;
 import com.codahale.metrics.Timer;
+import java.util.Map;
+import java.util.TreeMap;
 
-public class MetricEvent extends TreeMap<String,Object>{
+public class MetricEvent extends TreeMap<String, Object> {
 
     private static final long serialVersionUID = 6862373651636342744L;
 
-    public static Builder of(String name){
+    public static Builder of(String name) {
         return new Builder(name);
     }
 
     /**
-     * TODO: Refactor according to ConsoleReporter
+     * TODO: Refactor according to ConsoleReporter.
      */
-    public static class Builder{
+    public static class Builder {
         private final String name;
         private MetricEvent instance;
-        public Builder(String name){
+
+        public Builder(String name) {
             this.instance = new MetricEvent();
             this.name = name;
         }
 
-        public Builder from(Counter value) {
-//            this.instance.put("type","counter");
-            this.instance.put("count",value.getCount());
-            return this;
-        }
-
-        public MetricEvent build(){
-            this.instance.put("name",name);
-            if(!this.instance.containsKey("timestamp")){
+        public MetricEvent build() {
+            this.instance.put("name", name);
+            if (!this.instance.containsKey("timestamp")) {
                 this.instance.put("timestamp", DateTimeUtil.getCurrentTimestamp());
             }
             return this.instance;
         }
 
-        @SuppressWarnings({ "rawtypes", "unchecked" })
+        public Builder from(Counter value) {
+            // this.instance.put("type","counter");
+            this.instance.put("count", value.getCount());
+            return this;
+        }
+
+        @SuppressWarnings( {"rawtypes", "unchecked"})
         public Builder from(Gauge gauge) {
             Object value = gauge.getValue();
-            if( value instanceof Map){
+            if (value instanceof Map) {
                 Map<? extends String, ?> map = (Map<? extends String, ?>) value;
                 this.instance.putAll(map);
             } else {
@@ -74,7 +73,7 @@ public class MetricEvent extends TreeMap<String,Object>{
         }
 
         public Builder from(Histogram value) {
-            this.instance.put("count",value.getCount());
+            this.instance.put("count", value.getCount());
             Snapshot snapshot = value.getSnapshot();
             this.instance.put("min", snapshot.getMin());
             this.instance.put("max", snapshot.getMax());
@@ -90,21 +89,21 @@ public class MetricEvent extends TreeMap<String,Object>{
         }
 
         public Builder from(Meter value) {
-            this.instance.put("value",value.getCount());
-            this.instance.put("15MinRate",value.getFifteenMinuteRate());
-            this.instance.put("5MinRate",value.getFiveMinuteRate());
-            this.instance.put("mean",value.getMeanRate());
-            this.instance.put("1MinRate",value.getOneMinuteRate());
+            this.instance.put("value", value.getCount());
+            this.instance.put("15MinRate", value.getFifteenMinuteRate());
+            this.instance.put("5MinRate", value.getFiveMinuteRate());
+            this.instance.put("mean", value.getMeanRate());
+            this.instance.put("1MinRate", value.getOneMinuteRate());
             return this;
         }
 
         public Builder from(Timer value) {
-//            this.instance.put("type","timer");
-            this.instance.put("value",value.getCount());
-            this.instance.put("15MinRate",value.getFifteenMinuteRate());
-            this.instance.put("5MinRate",value.getFiveMinuteRate());
-            this.instance.put("mean",value.getMeanRate());
-            this.instance.put("1MinRate",value.getOneMinuteRate());
+            // this.instance.put("type","timer");
+            this.instance.put("value", value.getCount());
+            this.instance.put("15MinRate", value.getFifteenMinuteRate());
+            this.instance.put("5MinRate", value.getFiveMinuteRate());
+            this.instance.put("mean", value.getMeanRate());
+            this.instance.put("1MinRate", value.getOneMinuteRate());
             return this;
         }
     }