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 12:24:39 UTC

[1/3] incubator-eagle git commit: [EAGLE-533] Fix storage configuration and remove AppJUnitRunner

Repository: incubator-eagle
Updated Branches:
  refs/heads/master 3db5cdbac -> c752ed868


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-common/src/test/resources/test-service-config.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-common/src/test/resources/test-service-config.conf b/eagle-core/eagle-common/src/test/resources/test-service-config.conf
deleted file mode 100644
index c4fcffe..0000000
--- a/eagle-core/eagle-common/src/test/resources/test-service-config.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-# 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
-#
-#    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.
-
-
-service {
-	timezone = "UTC"
-	env = "test"
-	host = "localhost"
-	port = 9090
-}
-
-storage{
-	storage-type = "hbase"
-	table-name-prefixed-with-environment = true
-	hbase-zookeeper-quorum = "localhost"
-	hbase-zookeeper-property-clientPort = 2181
-	zookeeper-znode-parent = "/hbase-unsecure"
-	coprocessor-enabled = false
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-entity-base/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/resources/application.conf b/eagle-core/eagle-query/eagle-entity-base/src/test/resources/application.conf
index 25257c5..acf538f 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/resources/application.conf
+++ b/eagle-core/eagle-query/eagle-entity-base/src/test/resources/application.conf
@@ -13,16 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-eagle{
-	service{
-		env="dev"
-		host="localhost"
-		port=8080
-		storage-type="hbase"
-		table-name-prefixed-with-environment=false
-		coprocessor-enabled=false
-		hbase-zookeeper-quorum="localhost"
-		hbase-zookeeper-property-clientPort=2181
-		zookeeper-znode-parent="/hbase-unsecure"
+service {
+	env = "dev"
+	host = "localhost"
+	port = 8080
+}
+
+storage {
+	type = "hbase"
+	hbase {
+		tableNamePrefixedWithEnvironment = false
+		coprocessorEnabled = false
+		zookeeperQuorum = "localhost"
+		zookeeperPropertyClientPort = 2181
+		zookeeperZnodeParent = "/hbase-unsecure"
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/DataStorageManager.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/DataStorageManager.java b/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/DataStorageManager.java
index 6b22e95..a47af9f 100644
--- a/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/DataStorageManager.java
+++ b/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/DataStorageManager.java
@@ -16,11 +16,11 @@
  */
 package org.apache.eagle.storage;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.eagle.common.config.EagleConfigFactory;
-import org.apache.eagle.storage.spi.DataStorageServiceLoader;
 import org.apache.eagle.storage.exception.IllegalDataStorageTypeException;
+import org.apache.eagle.storage.spi.DataStorageServiceLoader;
 import org.apache.eagle.storage.spi.DataStorageServiceProvider;
-import org.apache.commons.configuration.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,35 +44,36 @@ public class DataStorageManager {
      */
     public static DataStorage newDataStorage(String type) throws IllegalDataStorageTypeException {
         DataStorageServiceProvider serviceProvider = DataStorageServiceLoader.getInstance().getStorageProviderByType(type);
-        if(serviceProvider == null){
-            throw new IllegalDataStorageTypeException("data storage provider of type: "+type+" is null");
+        if (serviceProvider == null) {
+            throw new IllegalDataStorageTypeException("data storage provider of type: " + type + " is null");
         }
-        DataStorage dataStorage =  serviceProvider.getStorage();
+        DataStorage dataStorage = serviceProvider.getStorage();
         try {
-            LOG.info("Initializing data storage engine: "+dataStorage);
+            LOG.info("Initializing data storage engine: " + dataStorage);
             dataStorage.init();
         } catch (IOException e) {
-            LOG.error("Failed to initialize data storage engine "+dataStorage,e);
+            LOG.error("Failed to initialize data storage engine " + dataStorage, e);
             throw new IllegalStateException(e);
         }
         return dataStorage;
     }
 
     private static DataStorage singletonStorageInstance;
+
     /**
      * get storage class by type configured as eagle.storage.type from eagle configuration: config.properties
      *
      * @return DataStorage instance
-     *
      * @throws IllegalDataStorageTypeException
      */
-    public synchronized static DataStorage getDataStorageByEagleConfig(boolean cache) throws IllegalDataStorageTypeException{
+    public synchronized static DataStorage getDataStorageByEagleConfig(boolean cache) throws IllegalDataStorageTypeException {
         String storageType = EagleConfigFactory.load().getStorageType();
 
-        if(!cache)
+        if (!cache) {
             return newDataStorage(storageType);
+        }
 
-        if(singletonStorageInstance == null) {
+        if (singletonStorageInstance == null) {
             if (storageType == null) {
                 LOG.error(EAGLE_STORAGE_TYPE + " is null, trying default data storage: " + DEFAULT_DATA_STORAGE_TYPE);
                 storageType = DEFAULT_DATA_STORAGE_TYPE;
@@ -84,10 +85,9 @@ public class DataStorageManager {
 
     /**
      * @return DataStorage instance by singleton pattern
-     *
      * @throws IllegalDataStorageTypeException
      */
-    public synchronized static DataStorage getDataStorageByEagleConfig() throws IllegalDataStorageTypeException{
+    public synchronized static DataStorage getDataStorageByEagleConfig() throws IllegalDataStorageTypeException {
         return getDataStorageByEagleConfig(true);
     }
 
@@ -100,8 +100,8 @@ public class DataStorageManager {
      */
     public static DataStorage newDataStorage(Configuration configuration) throws IllegalDataStorageTypeException {
         String storageType = configuration.getString(EAGLE_STORAGE_TYPE);
-        if(storageType == null){
-            throw new IllegalDataStorageTypeException(EAGLE_STORAGE_TYPE+" is null");
+        if (storageType == null) {
+            throw new IllegalDataStorageTypeException(EAGLE_STORAGE_TYPE + " is null");
         }
         return newDataStorage(storageType);
     }
@@ -115,9 +115,9 @@ public class DataStorageManager {
      */
     public static DataStorage newDataStorage(Properties properties) throws IllegalDataStorageTypeException {
         String storageType = (String) properties.get(EAGLE_STORAGE_TYPE);
-        if(storageType == null){
-            LOG.error(EAGLE_STORAGE_TYPE+" is null");
-            throw new IllegalDataStorageTypeException(EAGLE_STORAGE_TYPE+" is null");
+        if (storageType == null) {
+            LOG.error(EAGLE_STORAGE_TYPE + " is null");
+            throw new IllegalDataStorageTypeException(EAGLE_STORAGE_TYPE + " is null");
         }
         return newDataStorage(storageType);
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/spi/DataStorageServiceLoader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/spi/DataStorageServiceLoader.java b/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/spi/DataStorageServiceLoader.java
index da59a18..2d747ab 100644
--- a/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/spi/DataStorageServiceLoader.java
+++ b/eagle-core/eagle-query/eagle-storage-base/src/main/java/org/apache/eagle/storage/spi/DataStorageServiceLoader.java
@@ -28,42 +28,43 @@ import java.util.*;
 public class DataStorageServiceLoader {
     private final Logger LOG = LoggerFactory.getLogger(DataStorageServiceLoader.class);
     private final ServiceLoader<DataStorageServiceProvider> serviceLoader;
-    private final Map<String,DataStorageServiceProvider> storageServiceProviders;
+    private final Map<String, DataStorageServiceProvider> storageServiceProviders;
 
-    private DataStorageServiceLoader(){
+    private DataStorageServiceLoader() {
         serviceLoader = ServiceLoader.load(DataStorageServiceProvider.class);
-        storageServiceProviders = new HashMap<String,DataStorageServiceProvider>();
+        storageServiceProviders = new HashMap<String, DataStorageServiceProvider>();
 
         // Load storage providers
         load();
     }
 
     private static DataStorageServiceLoader instance;
-    public static DataStorageServiceLoader getInstance(){
-        if(instance == null){
+
+    public static DataStorageServiceLoader getInstance() {
+        if (instance == null) {
             instance = new DataStorageServiceLoader();
         }
         return instance;
     }
 
-    private void load(){
-        Iterator<DataStorageServiceProvider> dataStorageServiceLoaders =  serviceLoader.iterator();
-        while(dataStorageServiceLoaders.hasNext()){
+    private void load() {
+        Iterator<DataStorageServiceProvider> dataStorageServiceLoaders = serviceLoader.iterator();
+        while (dataStorageServiceLoaders.hasNext()) {
             DataStorageServiceProvider provider = dataStorageServiceLoaders.next();
             String storageType = provider.getType();
 
-            if(storageServiceProviders.containsKey(storageType)) {
+            if (storageServiceProviders.containsKey(storageType)) {
                 LOG.warn("Overrode storage provider: type =" + storageType + ",  provider =  " + provider);
-            }else if(storageType == null){
+            } else if (storageType == null) {
                 LOG.error("Loaded storage provider: type = null , provider = " + provider);
-                throw new IllegalArgumentException("storage type is null from provider: "+provider);
-            }else{
+                throw new IllegalArgumentException("storage type is null from provider: " + provider);
+            } else {
                 LOG.info("Loaded storage provider: type = " + storageType + ", provider = " + provider);
             }
             this.storageServiceProviders.put(storageType, provider);
         }
 
-        LOG.info("Successfully loaded storage engines: "+this.getStorageTypes());
+        LOG.info("Successfully loaded storage engines: " + this.getStorageTypes());
     }
 
     /**
@@ -71,7 +72,7 @@ public class DataStorageServiceLoader {
      *
      * @return supported storage types
      */
-    public Set<String> getStorageTypes(){
+    public Set<String> getStorageTypes() {
         return this.storageServiceProviders.keySet();
     }
 
@@ -79,15 +80,15 @@ public class DataStorageServiceLoader {
      * Reload storage providers
      */
     @SuppressWarnings("unused")
-    public void reload(){
+    public void reload() {
         serviceLoader.reload();
         storageServiceProviders.clear();
         load();
     }
 
     public DataStorageServiceProvider getStorageProviderByType(String type) throws IllegalDataStorageTypeException {
-        if(!storageServiceProviders.containsKey(type)){
-            throw new IllegalDataStorageTypeException("unknown storage type: "+type+", support: "+this.getStorageTypes());
+        if (!storageServiceProviders.containsKey(type)) {
+            throw new IllegalDataStorageTypeException("unknown storage type: " + type + ", support: " + this.getStorageTypes());
         }
         return storageServiceProviders.get(type);
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-base/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-base/src/test/resources/application.conf b/eagle-core/eagle-query/eagle-storage-base/src/test/resources/application.conf
index 77093bc..a3e58c1 100644
--- a/eagle-core/eagle-query/eagle-storage-base/src/test/resources/application.conf
+++ b/eagle-core/eagle-query/eagle-storage-base/src/test/resources/application.conf
@@ -13,14 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+service {
+  env = "dev"
+  host = "localhost"
+  port = 8080
+}
+
 storage {
-		env="dev"
-		host="localhost"
-		port=8080
-		storage-type="test"
-		table-name-prefixed-with-environment=false
-		coprocessor-enabled=false
-		hbase-zookeeper-quorum="localhost"
-		hbase-zookeeper-property-clientPort=2181
-		zookeeper-znode-parent="/hbase-unsecure"
+  type = "test"
+  hbase {
+    tableNamePrefixedWithEnvironment = false
+    coprocessorEnabled = false
+    zookeeperQuorum = "localhost"
+    zookeeperPropertyClientPort = 2181
+    zookeeperZnodeParent = "/hbase-unsecure"
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorITSuite.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorITSuite.java b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorITSuite.java
deleted file mode 100644
index d380418..0000000
--- a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorITSuite.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * 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
- *
- *    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.storage.hbase.integrationtest;
-
-import org.apache.eagle.common.config.EagleConfigFactory;
-import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
-import org.apache.eagle.log.entity.GenericEntityWriter;
-import org.apache.eagle.log.entity.meta.EntityDefinition;
-import org.apache.eagle.log.entity.meta.EntityDefinitionManager;
-import org.apache.eagle.log.entity.test.TestLogAPIEntity;
-import org.apache.eagle.query.ListQueryCompiler;
-import org.apache.eagle.query.aggregate.AggregateFunctionType;
-import org.apache.eagle.query.aggregate.raw.GroupbyKey;
-import org.apache.eagle.query.aggregate.raw.GroupbyKeyValue;
-import org.apache.eagle.query.aggregate.raw.GroupbyValue;
-import org.apache.eagle.storage.hbase.query.coprocessor.AggregateClient;
-import org.apache.eagle.storage.hbase.query.coprocessor.impl.AggregateClientImpl;
-import org.apache.hadoop.hbase.client.HTableInterface;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.DoubleWritable;
-import org.junit.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-
-@Ignore("Coprocessor Aggregate Client Integration Test.")
-public class CoprocessorITSuite {
-    private HTableInterface table;
-    private long startTime;
-    private long endTime;
-    private List<String> rowkeys;
-    private AggregateClient client;
-    private Scan scan;
-    private int num = 200;
-
-    private static final Logger LOG = LoggerFactory.getLogger(CoprocessorITSuite.class);
-
-    @BeforeClass
-    public static void before() {
-        System.setProperty("config.resource", "/application-sandbox.conf");
-    }
-
-    @Before
-    public void setUp() {
-        startTime = System.currentTimeMillis();
-        try {
-            rowkeys = prepareData(num);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Assert.fail(e.getMessage());
-        }
-        endTime = System.currentTimeMillis();
-        table = EagleConfigFactory.load().getHTable("unittest");
-        client = new AggregateClientImpl();
-        scan = new Scan();
-        scan.setCaching(200);
-
-        ListQueryCompiler compiler = null;
-        try {
-            compiler = new ListQueryCompiler("TestLogAPIEntity[@cluster=\"test4UT\" and @datacenter=\"dc1\"]{@field1,@field2}");
-        } catch (Exception e) {
-            Assert.fail(e.getMessage());
-        }
-        scan.setFilter(compiler.filter());
-    }
-
-    private List<String> prepareData(int count) throws Exception {
-        List<TaggedLogAPIEntity> list = new ArrayList<TaggedLogAPIEntity>();
-        EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
-
-        if (ed == null) {
-            EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
-            ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
-        }
-        ed.setTimeSeries(true);
-        for (int i = 0; i < count; i++) {
-            TestLogAPIEntity e = new TestLogAPIEntity();
-            e.setTags(new HashMap<String, String>());
-            e.getTags().put("cluster", "test4UT");
-            e.getTags().put("datacenter", "dc1");
-            e.getTags().put("index", "" + i);
-            e.getTags().put("jobId", "job_" + System.currentTimeMillis());
-            e.setTimestamp(System.currentTimeMillis());
-            e.setField1(1);
-            e.setField2(2);
-            e.setField3(3);
-            e.setField4(4L);
-            e.setField5(5.0);
-            e.setField6(5.0);
-            e.setField7("7");
-            list.add(e);
-        }
-        GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
-        LOG.info("Writing {} TestLogAPIEntity entities", list.size());
-        List<String> result = writer.write(list);
-        LOG.info("Finish writing test entities");
-        return result;
-    }
-
-    @Test
-    public void testGroupAggregateCountClient() {
-        try {
-            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
-            final List<GroupbyKeyValue> result = client.aggregate(table, ed,
-                    scan, Arrays.asList("cluster", "datacenter"),
-                    Collections.singletonList(AggregateFunctionType.count),
-                    Collections.singletonList("field2")).getKeyValues();
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("COUNT");
-            }
-            logGroupbyKeyValue(result);
-            Assert.assertNotNull(result);
-            Assert.assertTrue(result.size() > 0);
-        } catch (Exception e) {
-            Assert.fail(e.getMessage());
-        }
-    }
-
-    @Test
-    public void testGroupAggregateAvgClient() {
-        try {
-            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
-            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.avg), Arrays.asList("field2")).getKeyValues();
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("AVG");
-            }
-            logGroupbyKeyValue(result);
-            Assert.assertNotNull(result);
-            Assert.assertTrue(result.size() > 0);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Assert.fail(e.getMessage());
-        }
-    }
-
-    @Test
-    public void testGroupAggregateMaxClient() {
-        try {
-            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
-            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.max), Arrays.asList("field1")).getKeyValues();
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("MAX");
-            }
-            logGroupbyKeyValue(result);
-            Assert.assertNotNull(result);
-            Assert.assertTrue(result.size() > 0);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Assert.fail(e.getMessage());
-        }
-    }
-
-    @Test
-    public void testGroupAggregateSumClient() {
-        try {
-            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
-            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.sum), Arrays.asList("field2")).getKeyValues();
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("MAX");
-            }
-            logGroupbyKeyValue(result);
-            Assert.assertNotNull(result);
-            Assert.assertTrue(result.size() > 0);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Assert.fail(e.getMessage());
-        }
-    }
-
-    @Test
-    public void testGroupAggregateMinClient() {
-
-        try {
-            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
-            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.min), Arrays.asList("field2")).getKeyValues();
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("MIN");
-            }
-            logGroupbyKeyValue(result);
-            Assert.assertNotNull(result);
-            Assert.assertTrue(result.size() > 0);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Assert.fail(e.getMessage());
-        }
-    }
-
-    @Test
-    public void testGroupAggregateMultipleClient() {
-        try {
-            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
-            final List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"),
-                    Arrays.asList(AggregateFunctionType.min,
-                            AggregateFunctionType.max,
-                            AggregateFunctionType.avg,
-                            AggregateFunctionType.count,
-                            AggregateFunctionType.sum),
-                    Arrays.asList("field2", "field2", "field2", "field2", "field2")).getKeyValues();
-            logGroupbyKeyValue(result);
-            Assert.assertNotNull(result);
-            Assert.assertTrue(result.size() > 0);
-            Assert.assertEquals(2.0, result.get(0).getValue().get(0).get(), 0.00001);
-            Assert.assertEquals(2.0, result.get(0).getValue().get(1).get(), 0.00001);
-            Assert.assertEquals(2.0, result.get(0).getValue().get(2).get(), 0.00001);
-            Assert.assertTrue(num <= result.get(0).getValue().get(3).get());
-            Assert.assertTrue(2.0 * num <= result.get(0).getValue().get(4).get());
-            Assert.assertEquals("test4UT", new String(result.get(0).getKey().getValue().get(0).copyBytes()));
-            Assert.assertEquals("dc1", new String(result.get(0).getKey().getValue().get(1).copyBytes()));
-        } catch (Exception e) {
-            e.printStackTrace();
-            Assert.fail(e.getMessage());
-        }
-    }
-
-    private void logGroupbyKeyValue(List<GroupbyKeyValue> keyValues) {
-        for (GroupbyKeyValue keyValue : keyValues) {
-            GroupbyKey key = keyValue.getKey();
-            List<String> keys = new ArrayList<>();
-            for (BytesWritable bytes : key.getValue()) {
-                keys.add(new String(bytes.copyBytes()));
-            }
-            List<Double> vals = new ArrayList<>();
-            GroupbyValue val = keyValue.getValue();
-            for (DoubleWritable dw : val.getValue()) {
-                vals.add(dw.get());
-            }
-            if (LOG.isDebugEnabled()) LOG.debug("KEY: " + keys + ", VALUE: " + vals);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorJarUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorJarUtils.java b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorJarUtils.java
deleted file mode 100644
index bc7a022..0000000
--- a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorJarUtils.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.
- */
-package org.apache.eagle.storage.hbase.integrationtest;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.filefilter.TrueFileFilter;
-import org.apache.commons.io.filefilter.WildcardFileFilter;
-
-import java.io.File;
-import java.util.Collection;
-
-public class CoprocessorJarUtils {
-    public static File getCoprocessorJarFile() {
-        String projectRootDir = System.getProperty("user.dir");
-        String targetDirPath = projectRootDir + "/target/";
-        File targetDirFile = new File(targetDirPath);
-        if (!targetDirFile.exists()) {
-            throw new IllegalStateException(targetDirPath + " not found, please execute 'mvn install -DskipTests' under " + projectRootDir + " to build the project firstly and retry");
-        }
-        String jarFileNameWildCard = "eagle-storage-hbase-*-coprocessor.jar";
-        Collection<File> jarFiles = FileUtils.listFiles(targetDirFile, new WildcardFileFilter(jarFileNameWildCard), TrueFileFilter.INSTANCE);
-        if (jarFiles.size() == 0) {
-            throw new IllegalStateException("jar is not found, please execute 'mvn package -DskipTests' from project root firstly and retry");
-        }
-        return jarFiles.iterator().next();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorToolITSuite.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorToolITSuite.java b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorToolITSuite.java
deleted file mode 100644
index 8e7497b..0000000
--- a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/integrationtest/CoprocessorToolITSuite.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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.
- */
-package org.apache.eagle.storage.hbase.integrationtest;
-
-import org.apache.eagle.storage.hbase.tools.CoprocessorTool;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.junit.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-@Ignore("Coprocessor CLI Tool Integration Test.")
-public class CoprocessorToolITSuite {
-    private static final String remoteJarPath = "/tmp/eagle-storage-hbase-latest-coprocessor.jar";
-    private static String localJarPath = null;
-    private static final Logger LOGGER = LoggerFactory.getLogger(CoprocessorToolITSuite.class);
-    private static final String toolITTableName = "coprocessor_it_table";
-
-    static {
-        Configuration.addDefaultResource("hbase-site-sandbox.xml");
-        localJarPath = CoprocessorJarUtils.getCoprocessorJarFile().getPath();
-    }
-
-    private void testRegisterCoprocessor(String tableName) throws Exception {
-        CoprocessorTool.main(new String[]{
-                "--register",
-                "--config", "hbase-site-sandbox.xml",
-                "--table", tableName,
-                "--jar", remoteJarPath,
-                "--localJar", localJarPath});
-    }
-
-    private void testUnregisterCoprocessor(String tableName) throws Exception {
-        CoprocessorTool.main(new String[]{
-                "--unregister",
-                "--config", "hbase-site-sandbox.xml",
-                "--table", tableName
-        });
-    }
-
-    private void ensureTable() throws IOException {
-        LOGGER.info("Creating table {}", toolITTableName);
-        HBaseAdmin admin = new HBaseAdmin(new Configuration());
-        HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(toolITTableName));
-        hTableDescriptor.addFamily(new HColumnDescriptor("f"));
-        admin.createTable(hTableDescriptor);
-        admin.close();
-        LOGGER.info("Created table {}", toolITTableName);
-    }
-
-    @Test
-    public void testRegisterAndUnregisterCoprocessor() throws Exception {
-        try {
-            ensureTable();
-            testRegisterCoprocessor(toolITTableName);
-            testUnregisterCoprocessor(toolITTableName);
-        } finally {
-            deleteTable();
-        }
-    }
-
-    private void deleteTable() throws IOException {
-        HBaseAdmin admin = new HBaseAdmin(new Configuration());
-        admin.disableTable(TableName.valueOf(toolITTableName));
-        admin.deleteTable(TableName.valueOf(toolITTableName));
-        admin.close();
-    }
-
-    @Test
-    public void testRegisterCoprocessor() throws Exception {
-        testRegisterCoprocessor("unittest");
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorITSuite.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorITSuite.java b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorITSuite.java
new file mode 100644
index 0000000..15de0a0
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorITSuite.java
@@ -0,0 +1,246 @@
+/*
+ * 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
+ *
+ *    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.storage.hbase.it;
+
+import org.apache.eagle.common.config.EagleConfigFactory;
+import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
+import org.apache.eagle.log.entity.GenericEntityWriter;
+import org.apache.eagle.log.entity.meta.EntityDefinition;
+import org.apache.eagle.log.entity.meta.EntityDefinitionManager;
+import org.apache.eagle.log.entity.test.TestLogAPIEntity;
+import org.apache.eagle.query.ListQueryCompiler;
+import org.apache.eagle.query.aggregate.AggregateFunctionType;
+import org.apache.eagle.query.aggregate.raw.GroupbyKey;
+import org.apache.eagle.query.aggregate.raw.GroupbyKeyValue;
+import org.apache.eagle.query.aggregate.raw.GroupbyValue;
+import org.apache.eagle.storage.hbase.query.coprocessor.AggregateClient;
+import org.apache.eagle.storage.hbase.query.coprocessor.impl.AggregateClientImpl;
+import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.io.DoubleWritable;
+import org.junit.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+
+@Ignore("Coprocessor Aggregate Client Integration Test.")
+public class CoprocessorITSuite {
+    private HTableInterface table;
+    private long startTime;
+    private long endTime;
+    private List<String> rowkeys;
+    private AggregateClient client;
+    private Scan scan;
+    private int num = 200;
+
+    private static final Logger LOG = LoggerFactory.getLogger(CoprocessorITSuite.class);
+
+    @BeforeClass
+    public static void before() {
+        System.setProperty("config.resource", "/application-it.conf");
+    }
+
+    @Before
+    public void setUp() {
+        startTime = System.currentTimeMillis();
+        try {
+            rowkeys = prepareData(num);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail(e.getMessage());
+        }
+        endTime = System.currentTimeMillis();
+        table = EagleConfigFactory.load().getHTable("unittest");
+        client = new AggregateClientImpl();
+        scan = new Scan();
+        scan.setCaching(200);
+
+        ListQueryCompiler compiler = null;
+        try {
+            compiler = new ListQueryCompiler("TestLogAPIEntity[@cluster=\"test4UT\" and @datacenter=\"dc1\"]{@field1,@field2}");
+        } catch (Exception e) {
+            Assert.fail(e.getMessage());
+        }
+        scan.setFilter(compiler.filter());
+    }
+
+    private List<String> prepareData(int count) throws Exception {
+        List<TaggedLogAPIEntity> list = new ArrayList<TaggedLogAPIEntity>();
+        EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+
+        if (ed == null) {
+            EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
+            ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+        }
+        ed.setTimeSeries(true);
+        for (int i = 0; i < count; i++) {
+            TestLogAPIEntity e = new TestLogAPIEntity();
+            e.setTags(new HashMap<String, String>());
+            e.getTags().put("cluster", "test4UT");
+            e.getTags().put("datacenter", "dc1");
+            e.getTags().put("index", "" + i);
+            e.getTags().put("jobId", "job_" + System.currentTimeMillis());
+            e.setTimestamp(System.currentTimeMillis());
+            e.setField1(1);
+            e.setField2(2);
+            e.setField3(3);
+            e.setField4(4L);
+            e.setField5(5.0);
+            e.setField6(5.0);
+            e.setField7("7");
+            list.add(e);
+        }
+        GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
+        LOG.info("Writing {} TestLogAPIEntity entities", list.size());
+        List<String> result = writer.write(list);
+        LOG.info("Finish writing test entities");
+        return result;
+    }
+
+    @Test
+    public void testGroupAggregateCountClient() {
+        try {
+            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
+            final List<GroupbyKeyValue> result = client.aggregate(table, ed,
+                    scan, Arrays.asList("cluster", "datacenter"),
+                    Collections.singletonList(AggregateFunctionType.count),
+                    Collections.singletonList("field2")).getKeyValues();
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("COUNT");
+            }
+            logGroupbyKeyValue(result);
+            Assert.assertNotNull(result);
+            Assert.assertTrue(result.size() > 0);
+        } catch (Exception e) {
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testGroupAggregateAvgClient() {
+        try {
+            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
+            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.avg), Arrays.asList("field2")).getKeyValues();
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("AVG");
+            }
+            logGroupbyKeyValue(result);
+            Assert.assertNotNull(result);
+            Assert.assertTrue(result.size() > 0);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testGroupAggregateMaxClient() {
+        try {
+            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
+            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.max), Arrays.asList("field1")).getKeyValues();
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("MAX");
+            }
+            logGroupbyKeyValue(result);
+            Assert.assertNotNull(result);
+            Assert.assertTrue(result.size() > 0);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testGroupAggregateSumClient() {
+        try {
+            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
+            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.sum), Arrays.asList("field2")).getKeyValues();
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("MAX");
+            }
+            logGroupbyKeyValue(result);
+            Assert.assertNotNull(result);
+            Assert.assertTrue(result.size() > 0);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testGroupAggregateMinClient() {
+
+        try {
+            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
+            List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.min), Arrays.asList("field2")).getKeyValues();
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("MIN");
+            }
+            logGroupbyKeyValue(result);
+            Assert.assertNotNull(result);
+            Assert.assertTrue(result.size() > 0);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testGroupAggregateMultipleClient() {
+        try {
+            EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
+            final List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"),
+                    Arrays.asList(AggregateFunctionType.min,
+                            AggregateFunctionType.max,
+                            AggregateFunctionType.avg,
+                            AggregateFunctionType.count,
+                            AggregateFunctionType.sum),
+                    Arrays.asList("field2", "field2", "field2", "field2", "field2")).getKeyValues();
+            logGroupbyKeyValue(result);
+            Assert.assertNotNull(result);
+            Assert.assertTrue(result.size() > 0);
+            Assert.assertEquals(2.0, result.get(0).getValue().get(0).get(), 0.00001);
+            Assert.assertEquals(2.0, result.get(0).getValue().get(1).get(), 0.00001);
+            Assert.assertEquals(2.0, result.get(0).getValue().get(2).get(), 0.00001);
+            Assert.assertTrue(num <= result.get(0).getValue().get(3).get());
+            Assert.assertTrue(2.0 * num <= result.get(0).getValue().get(4).get());
+            Assert.assertEquals("test4UT", new String(result.get(0).getKey().getValue().get(0).copyBytes()));
+            Assert.assertEquals("dc1", new String(result.get(0).getKey().getValue().get(1).copyBytes()));
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    private void logGroupbyKeyValue(List<GroupbyKeyValue> keyValues) {
+        for (GroupbyKeyValue keyValue : keyValues) {
+            GroupbyKey key = keyValue.getKey();
+            List<String> keys = new ArrayList<>();
+            for (BytesWritable bytes : key.getValue()) {
+                keys.add(new String(bytes.copyBytes()));
+            }
+            List<Double> vals = new ArrayList<>();
+            GroupbyValue val = keyValue.getValue();
+            for (DoubleWritable dw : val.getValue()) {
+                vals.add(dw.get());
+            }
+            if (LOG.isDebugEnabled()) LOG.debug("KEY: " + keys + ", VALUE: " + vals);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorJarUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorJarUtils.java b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorJarUtils.java
new file mode 100644
index 0000000..3126474
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorJarUtils.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.eagle.storage.hbase.it;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.filefilter.TrueFileFilter;
+import org.apache.commons.io.filefilter.WildcardFileFilter;
+
+import java.io.File;
+import java.util.Collection;
+
+public class CoprocessorJarUtils {
+    public static File getCoprocessorJarFile() {
+        String projectRootDir = System.getProperty("user.dir");
+        String targetDirPath = projectRootDir + "/target/";
+        File targetDirFile = new File(targetDirPath);
+        if (!targetDirFile.exists()) {
+            throw new IllegalStateException(targetDirPath + " not found, please execute 'mvn install -DskipTests' under " + projectRootDir + " to build the project firstly and retry");
+        }
+        String jarFileNameWildCard = "eagle-storage-hbase-*-coprocessor.jar";
+        Collection<File> jarFiles = FileUtils.listFiles(targetDirFile, new WildcardFileFilter(jarFileNameWildCard), TrueFileFilter.INSTANCE);
+        if (jarFiles.size() == 0) {
+            throw new IllegalStateException("jar is not found, please execute 'mvn package -DskipTests' from project root firstly and retry");
+        }
+        return jarFiles.iterator().next();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorToolITSuite.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorToolITSuite.java b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorToolITSuite.java
new file mode 100644
index 0000000..790c1eb
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-storage-hbase/src/test/java/org/apache/eagle/storage/hbase/it/CoprocessorToolITSuite.java
@@ -0,0 +1,92 @@
+/*
+ * 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.
+ */
+package org.apache.eagle.storage.hbase.it;
+
+import org.apache.eagle.storage.hbase.tools.CoprocessorTool;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.junit.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+@Ignore("Coprocessor CLI Tool Integration Test.")
+public class CoprocessorToolITSuite {
+    private static final String remoteJarPath = "/tmp/eagle-storage-hbase-latest-coprocessor.jar";
+    private static String localJarPath = null;
+    private static final Logger LOGGER = LoggerFactory.getLogger(CoprocessorToolITSuite.class);
+    private static final String toolITTableName = "coprocessor_it_table";
+
+    static {
+        Configuration.addDefaultResource("hbase-site-sandbox.xml");
+        localJarPath = CoprocessorJarUtils.getCoprocessorJarFile().getPath();
+    }
+
+    private void testRegisterCoprocessor(String tableName) throws Exception {
+        CoprocessorTool.main(new String[]{
+                "--register",
+                "--config", "hbase-site-sandbox.xml",
+                "--table", tableName,
+                "--jar", remoteJarPath,
+                "--localJar", localJarPath});
+    }
+
+    private void testUnregisterCoprocessor(String tableName) throws Exception {
+        CoprocessorTool.main(new String[]{
+                "--unregister",
+                "--config", "hbase-site-sandbox.xml",
+                "--table", tableName
+        });
+    }
+
+    private void ensureTable() throws IOException {
+        LOGGER.info("Creating table {}", toolITTableName);
+        HBaseAdmin admin = new HBaseAdmin(new Configuration());
+        HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(toolITTableName));
+        hTableDescriptor.addFamily(new HColumnDescriptor("f"));
+        admin.createTable(hTableDescriptor);
+        admin.close();
+        LOGGER.info("Created table {}", toolITTableName);
+    }
+
+    @Test
+    public void testRegisterAndUnregisterCoprocessor() throws Exception {
+        try {
+            ensureTable();
+            testRegisterCoprocessor(toolITTableName);
+            testUnregisterCoprocessor(toolITTableName);
+        } finally {
+            deleteTable();
+        }
+    }
+
+    private void deleteTable() throws IOException {
+        HBaseAdmin admin = new HBaseAdmin(new Configuration());
+        admin.disableTable(TableName.valueOf(toolITTableName));
+        admin.deleteTable(TableName.valueOf(toolITTableName));
+        admin.close();
+    }
+
+    @Test
+    public void testRegisterCoprocessor() throws Exception {
+        testRegisterCoprocessor("unittest");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-it.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-it.conf b/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-it.conf
new file mode 100644
index 0000000..92ed09a
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-it.conf
@@ -0,0 +1,27 @@
+# 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
+#
+#    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.
+
+
+storage {
+  type = "hbase"
+
+  hbase {
+    tableNamePrefixedWithEnvironment = false
+    coprocessorEnabled = true
+    zookeeperQuorum = "sandbox.hortonworks.com"
+    zookeeperPropertyClientPort = 2181
+    zookeeperZnodeParent = "/hbase-unsecure"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-sandbox.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-sandbox.conf b/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-sandbox.conf
deleted file mode 100644
index 9ef869c..0000000
--- a/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application-sandbox.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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
-#
-#    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.
-
-storage {
-  storage-type = "hbase"
-  table-name-prefixed-with-environment = false
-  coprocessor-enabled = true
-  hbase-zookeeper-quorum = "sandbox.hortonworks.com"
-  hbase-zookeeper-property-clientPort = 2181
-  zookeeper-znode-parent = "/hbase-unsecure"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application.conf b/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application.conf
index d51e3f4..ed0996d 100644
--- a/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application.conf
+++ b/eagle-core/eagle-query/eagle-storage-hbase/src/test/resources/application.conf
@@ -13,14 +13,20 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-storage {
+service {
   env = "dev"
   host = "localhost"
   port = 8080
-  storage-type = "hbase"
-  table-name-prefixed-with-environment = false
-  coprocessor-enabled = false
-  hbase-zookeeper-quorum = "localhost"
-  hbase-zookeeper-property-clientPort = 2181
-  zookeeper-znode-parent = "/hbase-unsecure"
+}
+
+storage {
+  type = "hbase"
+
+  hbase {
+    tableNamePrefixedWithEnvironment = false
+    coprocessorEnabled = false
+    zookeeperQuorum = "localhost"
+    zookeeperPropertyClientPort = 2181
+    zookeeperZnodeParent = "/hbase-unsecure"
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/JdbcConstants.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/JdbcConstants.java b/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/JdbcConstants.java
index 84bf86e..80009ee 100644
--- a/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/JdbcConstants.java
+++ b/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/JdbcConstants.java
@@ -28,19 +28,19 @@ public class JdbcConstants {
     public static final String ROW_KEY_COLUMN_NAME = "uuid";
 
     public static final int DEFAULT_TYPE_FOR_COMPLEX_TYPE = Types.BLOB;
-    public static final int DEFAULT_VARCHAR_SIZE =30000;
+    public static final int DEFAULT_VARCHAR_SIZE = 30000;
 
     // Eagle JDBC Storage Configuration
-    public final static String EAGLE_DB_USERNAME = "storage.storage-username";
-    public final static String EAGLE_DB_PASSWORD = "storage.storage-password";
-    public final static String EAGLE_CONN_URL= "storage.storage-connection-url";
-    public final static String EAGLE_CONN_PROPS= "storage.storage-connection-props";
-    public final static String EAGLE_ADAPTER= "storage.storage-adapter";
-    public final static String EAGLE_DATABASE= "storage.storage-database";
-    public final static String EAGLE_DRIVER_CLASS= "storage.storage-driver-class";
-    public final static String EAGLE_CONN_MAX_SIZE= "storage.storage-connection-max";
+    public static final String EAGLE_DB_USERNAME = "storage.jdbc.username";
+    public static final String EAGLE_DB_PASSWORD = "storage.jdbc.password";
+    public static final String EAGLE_CONN_URL = "storage.jdbc.connectionUrl";
+    public static final String EAGLE_CONN_PROPS = "storage.jdbc.connectionProps";
+    public static final String EAGLE_ADAPTER = "storage.jdbc.adapter";
+    public static final String EAGLE_DATABASE = "storage.jdbc.database";
+    public static final String EAGLE_DRIVER_CLASS = "storage.jdbc.driverClass";
+    public static final String EAGLE_CONN_MAX_SIZE = "storage.jdbc.connectionMax";
 
-    public static final boolean isReservedField(String columnName){
+    public static final boolean isReservedField(String columnName) {
         return TIMESTAMP_COLUMN_NAME.equals(columnName) || METRIC_NAME_COLUMN_NAME.equals(columnName) || ROW_KEY_COLUMN_NAME.equals(columnName);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-derby.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-derby.conf b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-derby.conf
index 6b4aad1..d906188 100644
--- a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-derby.conf
+++ b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-derby.conf
@@ -14,13 +14,16 @@
 # limitations under the License.
 
 storage {
-		storage-type="jdbc"
-		storage-adapter="derby"
-		storage-username="eagle"
-		storage-password=eagle
-		storage-database=eagle
-		storage-connection-url="jdbc:derby:memory:eagle;create=true"
-		storage-connection-props="encoding=UTF-8"
-		storage-driver-class="org.apache.derby.jdbc.EmbeddedDriver"
-		storage-connection-max=8
+  type = "jdbc"
+  jdbc {
+    type = "jdbc"
+    adapter = "derby"
+    username = "eagle"
+    password = eagle
+    database = eagle
+    connectionUrl = "jdbc:derby:memory:eagle;create=true"
+    connectionProps = "encoding=UTF-8"
+    driverClass = "org.apache.derby.jdbc.EmbeddedDriver"
+    connectionMax = 8
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-mysql.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-mysql.conf b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-mysql.conf
index 565c42b..3ff1f96 100644
--- a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-mysql.conf
+++ b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application-mysql.conf
@@ -13,14 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-storage{
-		storage-type="jdbc"
-		storage-adapter="mysql"
-		storage-username="eagle"
-		storage-password=eagle
-		storage-database=eagle
-		storage-connection-url="jdbc:mysql://localhost:3306/eagle"
-		storage-connection-props="encoding=UTF-8"
-		storage-driver-class="com.mysql.jdbc.Driver"
-		storage-connection-max=8
+storage {
+  type = "jdbc"
+  jdbc {
+    adapter = "mysql"
+    username = "eagle"
+    password = eagle
+    database = eagle
+    connectionUrl = "jdbc:mysql://localhost:3306/eagle"
+    connectionProps = "encoding=UTF-8"
+    driverClass = "com.mysql.jdbc.Driver"
+    connectionMax = 8
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application.conf b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application.conf
index 6b4aad1..02bd0db 100644
--- a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application.conf
+++ b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/application.conf
@@ -14,13 +14,15 @@
 # limitations under the License.
 
 storage {
-		storage-type="jdbc"
-		storage-adapter="derby"
-		storage-username="eagle"
-		storage-password=eagle
-		storage-database=eagle
-		storage-connection-url="jdbc:derby:memory:eagle;create=true"
-		storage-connection-props="encoding=UTF-8"
-		storage-driver-class="org.apache.derby.jdbc.EmbeddedDriver"
-		storage-connection-max=8
+  type = "jdbc"
+  jdbc {
+    adapter = "derby"
+    username = "eagle"
+    password = eagle
+    database = eagle
+    connectionUrl = "jdbc:derby:memory:eagle;create=true"
+    connectionProps = "encoding=UTF-8"
+    driverClass = "org.apache.derby.jdbc.EmbeddedDriver"
+    connectionMax = 8
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/unittest.application.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/unittest.application.conf b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/unittest.application.conf
index 846d2c3..8bd249c 100644
--- a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/unittest.application.conf
+++ b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/resources/unittest.application.conf
@@ -13,16 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-eagle {
-	service {
-		storage-type="jdbc"
-		storage-adapter="h2"
-		storage-username="eagle"
-		storage-password=eagle
-		storage-database=eagle
-		storage-connection-url="jdbc:h2:tcp//localhost/eagle"
-		storage-connection-props="encoding=UTF-8"
-		storage-driver-class="org.h2.Driver"
-		storage-connection-max=8
-	}
+storage {
+		type="jdbc"
+		jdbc{
+			adapter="h2"
+			username="eagle"
+			password=eagle
+			database=eagle
+			connectionUrl="jdbc:h2:tcp//localhost/eagle"
+			connectionProps="encoding=UTF-8"
+			driverClass="org.h2.Driver"
+			connectionMax=8
+		}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java
----------------------------------------------------------------------
diff --git a/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java b/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java
index 1c801bd..4a54edc 100644
--- a/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java
+++ b/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java
@@ -22,7 +22,7 @@ import org.apache.eagle.app.example.extensions.ExampleResource;
 import org.apache.eagle.app.resource.ApplicationResource;
 import org.apache.eagle.app.service.ApplicationOperations;
 import org.apache.eagle.app.test.ApplicationSimulator;
-import org.apache.eagle.app.test.AppJUnitRunner;
+import org.apache.eagle.app.test.ApplicationTestBase;
 import org.apache.eagle.common.module.GlobalScope;
 import org.apache.eagle.metadata.model.ApplicationDesc;
 import org.apache.eagle.metadata.model.ApplicationEntity;
@@ -30,15 +30,13 @@ import org.apache.eagle.metadata.model.SiteEntity;
 import org.apache.eagle.metadata.resource.SiteResource;
 import org.junit.Assert;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@RunWith(AppJUnitRunner.class)
-public class ExampleApplicationProviderTest {
+public class ExampleApplicationProviderTest extends ApplicationTestBase{
     @Inject private SiteResource siteResource;
     @Inject private ApplicationResource applicationResource;
     @Inject private ApplicationSimulator simulator;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-jpm/eagle-jpm-app/src/test/java/org/apache/eagle/app/jpm/JPMApplicationTest.java
----------------------------------------------------------------------
diff --git a/eagle-jpm/eagle-jpm-app/src/test/java/org/apache/eagle/app/jpm/JPMApplicationTest.java b/eagle-jpm/eagle-jpm-app/src/test/java/org/apache/eagle/app/jpm/JPMApplicationTest.java
index 9c0ae2a..330af73 100644
--- a/eagle-jpm/eagle-jpm-app/src/test/java/org/apache/eagle/app/jpm/JPMApplicationTest.java
+++ b/eagle-jpm/eagle-jpm-app/src/test/java/org/apache/eagle/app/jpm/JPMApplicationTest.java
@@ -19,19 +19,17 @@ package org.apache.eagle.app.jpm;
 import com.google.inject.Inject;
 import org.apache.eagle.app.resource.ApplicationResource;
 import org.apache.eagle.app.service.ApplicationOperations;
-import org.apache.eagle.app.test.AppJUnitRunner;
+import org.apache.eagle.app.test.ApplicationTestBase;
 import org.apache.eagle.metadata.model.ApplicationEntity;
 import org.apache.eagle.metadata.model.SiteEntity;
 import org.apache.eagle.metadata.resource.SiteResource;
 import org.junit.Assert;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@RunWith(AppJUnitRunner.class)
-public class JPMApplicationTest {
+public class JPMApplicationTest extends ApplicationTestBase{
     @Inject
     private SiteResource siteResource;
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-jpm/eagle-jpm-mr-history/src/test/java/org/apache/eagle/jpm/mr/history/MRHistoryJobApplicationProviderTest.java
----------------------------------------------------------------------
diff --git a/eagle-jpm/eagle-jpm-mr-history/src/test/java/org/apache/eagle/jpm/mr/history/MRHistoryJobApplicationProviderTest.java b/eagle-jpm/eagle-jpm-mr-history/src/test/java/org/apache/eagle/jpm/mr/history/MRHistoryJobApplicationProviderTest.java
index 0a3a3a1..0001986 100644
--- a/eagle-jpm/eagle-jpm-mr-history/src/test/java/org/apache/eagle/jpm/mr/history/MRHistoryJobApplicationProviderTest.java
+++ b/eagle-jpm/eagle-jpm-mr-history/src/test/java/org/apache/eagle/jpm/mr/history/MRHistoryJobApplicationProviderTest.java
@@ -17,17 +17,16 @@
 package org.apache.eagle.jpm.mr.history;
 
 import com.google.inject.Inject;
-import org.apache.eagle.app.test.AppJUnitRunner;
 import org.apache.eagle.app.test.ApplicationSimulator;
+import org.apache.eagle.app.test.ApplicationTestBase;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
-@RunWith(AppJUnitRunner.class)
-public class MRHistoryJobApplicationProviderTest {
-    @Inject private ApplicationSimulator simulator;
+public class MRHistoryJobApplicationProviderTest extends ApplicationTestBase {
+    @Inject
+    private ApplicationSimulator simulator;
 
     @Test
-    public void testRunAsManagedApplicationWithSimulator(){
+    public void testRunAsManagedApplicationWithSimulator() {
         simulator.start(MRHistoryJobApplicationProvider.class);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-jpm/eagle-jpm-mr-running/src/test/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplicationProviderTest.java
----------------------------------------------------------------------
diff --git a/eagle-jpm/eagle-jpm-mr-running/src/test/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplicationProviderTest.java b/eagle-jpm/eagle-jpm-mr-running/src/test/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplicationProviderTest.java
index 2b7d429..5403c9a 100644
--- a/eagle-jpm/eagle-jpm-mr-running/src/test/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplicationProviderTest.java
+++ b/eagle-jpm/eagle-jpm-mr-running/src/test/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplicationProviderTest.java
@@ -17,13 +17,11 @@
 package org.apache.eagle.jpm.mr.running;
 
 import com.google.inject.Inject;
-import org.apache.eagle.app.test.AppJUnitRunner;
 import org.apache.eagle.app.test.ApplicationSimulator;
+import org.apache.eagle.app.test.ApplicationTestBase;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
-@RunWith(AppJUnitRunner.class)
-public class MRRunningJobApplicationProviderTest {
+public class MRRunningJobApplicationProviderTest extends ApplicationTestBase{
     @Inject
     private
     ApplicationSimulator simulator;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-security/eagle-security-maprfs-auditlog/src/test/java/org/apache/eagle/security/auditlog/MapRFSAuditLogAppProviderTest.java
----------------------------------------------------------------------
diff --git a/eagle-security/eagle-security-maprfs-auditlog/src/test/java/org/apache/eagle/security/auditlog/MapRFSAuditLogAppProviderTest.java b/eagle-security/eagle-security-maprfs-auditlog/src/test/java/org/apache/eagle/security/auditlog/MapRFSAuditLogAppProviderTest.java
index 5f0d903..61d03f6 100644
--- a/eagle-security/eagle-security-maprfs-auditlog/src/test/java/org/apache/eagle/security/auditlog/MapRFSAuditLogAppProviderTest.java
+++ b/eagle-security/eagle-security-maprfs-auditlog/src/test/java/org/apache/eagle/security/auditlog/MapRFSAuditLogAppProviderTest.java
@@ -17,13 +17,11 @@
 package org.apache.eagle.security.auditlog;
 
 import com.google.inject.Inject;
-import org.apache.eagle.app.test.AppJUnitRunner;
 import org.apache.eagle.app.test.ApplicationSimulator;
+import org.apache.eagle.app.test.ApplicationTestBase;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
-@RunWith(AppJUnitRunner.class)
-public class MapRFSAuditLogAppProviderTest {
+public class MapRFSAuditLogAppProviderTest extends ApplicationTestBase {
     @Inject
     private
     ApplicationSimulator simulator;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-server-assembly/src/main/conf/application.conf
----------------------------------------------------------------------
diff --git a/eagle-server-assembly/src/main/conf/application.conf b/eagle-server-assembly/src/main/conf/application.conf
index ff2d331..0a3352e 100644
--- a/eagle-server-assembly/src/main/conf/application.conf
+++ b/eagle-server-assembly/src/main/conf/application.conf
@@ -13,46 +13,102 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{
-	"coordinator" : {
-		"policiesPerBolt" : 5,
-		"boltParallelism" : 5,
-		"policyDefaultParallelism" : 5,
-		"boltLoadUpbound": 0.8,
-		"topologyLoadUpbound" : 0.8,
-		"numOfAlertBoltsPerTopology" : 5,
-		"zkConfig" : {
-			"zkQuorum" : "server.eagle.apache.org:2181",
-			"zkRoot" : "/alert",
-			"zkSessionTimeoutMs" : 10000,
-			"connectionTimeoutMs" : 10000,
-			"zkRetryTimes" : 3,
-			"zkRetryInterval" : 3000
-		},
-		"metadataService" : {
-			"host" : "localhost",
-			"port" : 9090,
-			"context" : "/rest"
-		},
-		"metadataDynamicCheck" : {
-			"initDelayMillis" : 1000,
-			"delayMillis" : 30000
-		}
-	},
-	"metadata":{
-		"store": "org.apache.eagle.metadata.service.memory.MemoryMetadataStore"
-	},
-	"connection":"jdbc:mysql://server.eagle.apache.org:3306/eagle",
-	"application":{
-		"sink":{
-			"type": "org.apache.eagle.app.sink.KafkaStreamSink"
-		},
-		"storm": {
-			"nimbusHost": "localhost"
-			"nimbusThriftPort": 6627
-		},
-		"provider" : {
-//			"dir" : "/tmp/eagle"
-		}
+# ---------------------------------------------
+# Eagle REST Web Service Configuration
+# ---------------------------------------------
+service {
+	env = "testing"
+	host = "localhost"
+	port = 9090
+	context = "/rest"
+	timezone = "UTC"
+}
+
+# ---------------------------------------------
+# Eagle Deep Storage Configuration
+# ---------------------------------------------
+
+storage {
+	# storage type: ["hbase","jdbc"]
+	# default is "hbase"
+	type = "hbase"
+
+	hbase {
+		# hbase configuration: hbase.zookeeper.quorum
+		# default is "localhost"
+		zookeeperQuorum = "localhost"
+
+		# hbase configuration: hbase.zookeeper.property.clientPort
+		# default is 2181
+		zookeeperPropertyClientPort = 2181
+
+		# hbase configuration: zookeeper.znode.parent
+		# default is "/hbase"
+		zookeeperZnodeParent = "/hbase-unsecure"
+
+		# eagle web login profile: [sandbox, default]
+		# default is sandbox
+		tableNamePrefixedWithEnvironment = false
+
+		# eagle coprocessor enabled or not: [true, false]
+		# default is false
+		coprocessorEnabled = false
+	}
+}
+
+# ---------------------------------------------
+# Eagle Metadata Store Configuration
+# ---------------------------------------------
+metadata {
+	store = org.apache.eagle.metadata.service.memory.MemoryMetadataStore
+	jdbc {
+		username = "root"
+		password = ""
+		driverClassName = com.mysql.jdbc.Driver
+		url = "jdbc:mysql://server.eagle.apache.org:3306/eagle"
+	}
+}
+
+# ---------------------------------------------
+# Eagle Application Configuration
+# ---------------------------------------------
+application {
+	sink {
+		type = org.apache.eagle.app.sink.KafkaStreamSink
+	}
+	storm {
+		nimbusHost = "server.eagle.apache.org"
+		nimbusThriftPort = 6627
 	}
 }
+
+# ---------------------------------------------
+# Eagle Alert Engine Configuration
+# ---------------------------------------------
+
+# Coordinator Configuration
+coordinator {
+	policiesPerBolt = 5
+	boltParallelism = 5
+	policyDefaultParallelism = 5
+	boltLoadUpbound = 0.8
+	topologyLoadUpbound = 0.8
+	numOfAlertBoltsPerTopology = 5
+	zkConfig {
+		zkQuorum = "server.eagle.apache.org:2181"
+		zkRoot = "/alert"
+		zkSessionTimeoutMs = 10000
+		connectionTimeoutMs = 10000
+		zkRetryTimes = 3
+		zkRetryInterval = 3000
+	}
+	metadataService {
+		host = "localhost",
+		port = 9090,
+		context = "/rest"
+	}
+	metadataDynamicCheck {
+		initDelayMillis = 1000
+		delayMillis = 30000
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-server/src/main/resources/application.conf
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/resources/application.conf b/eagle-server/src/main/resources/application.conf
index 2c076af..df482ac 100644
--- a/eagle-server/src/main/resources/application.conf
+++ b/eagle-server/src/main/resources/application.conf
@@ -17,23 +17,44 @@
 # Eagle REST Web Service Configuration
 # ---------------------------------------------
 service {
+  env = "testing"
   host = "localhost"
   port = 9090
   context = "/rest"
+  timezone = "UTC"
 }
 
 # ---------------------------------------------
 # Eagle Deep Storage Configuration
 # ---------------------------------------------
+
 storage {
-  storage-type = "hbase"
-  table-name-prefixed-with-environment = false
-  coprocessor-enabled = false
-  hbase-zookeeper-quorum = "localhost"
-  hbase-zookeeper-property-clientPort = 2181
-  zookeeper-znode-parent = "/hbase-unsecure"
-}
+  # storage type: ["hbase","jdbc"]
+  # default is "hbase"
+  type = "hbase"
+
+  hbase {
+    # hbase configuration: hbase.zookeeper.quorum
+    # default is "localhost"
+    zookeeperQuorum = "localhost"
+
+    # hbase configuration: hbase.zookeeper.property.clientPort
+    # default is 2181
+    zookeeperPropertyClientPort = 2181
 
+    # hbase configuration: zookeeper.znode.parent
+    # default is "/hbase"
+    zookeeperZnodeParent = "/hbase-unsecure"
+
+    # eagle web login profile: [sandbox, default]
+    # default is sandbox
+    tableNamePrefixedWithEnvironment = false
+
+    # eagle coprocessor enabled or not: [true, false]
+    # default is false
+    coprocessorEnabled = false
+  }
+}
 
 # ---------------------------------------------
 # Eagle Metadata Store Configuration

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-server/src/test/java/org/apache/eagle/server/ServerDebug.java
----------------------------------------------------------------------
diff --git a/eagle-server/src/test/java/org/apache/eagle/server/ServerDebug.java b/eagle-server/src/test/java/org/apache/eagle/server/ServerDebug.java
new file mode 100644
index 0000000..f870f2a
--- /dev/null
+++ b/eagle-server/src/test/java/org/apache/eagle/server/ServerDebug.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.eagle.server;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ServerDebug {
+    private static final Logger LOGGER = LoggerFactory.getLogger(ServerDebug.class);
+    private static String serverConf = null;
+
+    static {
+        // Set application.conf
+        if (ServerDebug.class.getResourceAsStream("/application-debug.conf") != null
+            || ServerDebug.class.getResourceAsStream("application-debug.conf") != null) {
+            LOGGER.info("config.resource = application-debug.conf");
+            System.setProperty("config.resource", "application-debug.conf");
+        } else {
+            LOGGER.info("config.resource = application.conf");
+            System.setProperty("config.resource","application.conf");
+        }
+
+        //
+        String userDir = System.getProperty("user.dir");
+        LOGGER.info("user.dir = {}", userDir);
+        serverConf = userDir + "/eagle-server/src/test/resources/configuration.yml";
+    }
+
+    public static void main(String[] args) {
+        LOGGER.info("java {} server {}",ServerDebug.class.getName(),serverConf);
+        ServerMain.main(new String[] {
+            "server", serverConf
+        });
+    }
+}


[2/3] incubator-eagle git commit: [EAGLE-533] Fix storage configuration and remove AppJUnitRunner

Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderConfigLoader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderConfigLoader.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderConfigLoader.java
index 3b2bca9..2f613c1 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderConfigLoader.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderConfigLoader.java
@@ -16,25 +16,26 @@
  */
 package org.apache.eagle.app.service.impl;
 
-import com.google.common.base.Preconditions;
-import com.typesafe.config.Config;
 import org.apache.eagle.app.config.ApplicationProviderConfig;
 import org.apache.eagle.app.config.ApplicationProvidersConfig;
 import org.apache.eagle.app.service.ApplicationProviderLoader;
 import org.apache.eagle.app.spi.ApplicationProvider;
+import com.google.common.base.Preconditions;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Unmarshaller;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
 
 public class ApplicationProviderConfigLoader extends ApplicationProviderLoader {
-    public final static String DEFAULT_APPLICATIONS_CONFIG_FILE = "providers.xml";
-    private final static String APPLICATIONS_CONFIG_PROPS_KEY = "application.provider.config";
-    private final static Logger LOG = LoggerFactory.getLogger(ApplicationProviderConfigLoader.class);
+    public static final String DEFAULT_APPLICATIONS_CONFIG_FILE = "providers.xml";
+    private static final String APPLICATIONS_CONFIG_PROPS_KEY = "application.provider.config";
+    private static final Logger LOG = LoggerFactory.getLogger(ApplicationProviderConfigLoader.class);
+
     public ApplicationProviderConfigLoader(Config config) {
         super(config);
     }
@@ -43,26 +44,27 @@ public class ApplicationProviderConfigLoader extends ApplicationProviderLoader {
     public void load() {
         List<ApplicationProviderConfig> applicationProviderConfigs = loadProvidersFromProvidersConf();
         int totalCount = applicationProviderConfigs.size();
-        int loadedCount = 0,failedCount = 0;
-        for(ApplicationProviderConfig providerConfig: applicationProviderConfigs){
+        int loadedCount = 0;
+        int failedCount = 0;
+        for (ApplicationProviderConfig providerConfig : applicationProviderConfigs) {
             try {
                 initializeProvider(providerConfig);
-                loadedCount ++;
-            }catch (Throwable ex){
-                LOG.warn("Failed to initialized {}, ignored",providerConfig,ex);
-                failedCount ++;
+                loadedCount++;
+            } catch (Throwable ex) {
+                LOG.warn("Failed to initialized {}, ignored", providerConfig, ex);
+                failedCount++;
             }
         }
-        LOG.info("Loaded {} app providers (total: {}, failed: {})",loadedCount,totalCount,failedCount);
+        LOG.info("Loaded {} app providers (total: {}, failed: {})", loadedCount, totalCount, failedCount);
     }
 
-    public static boolean appProviderConfExists(String applicationConfFile){
+    public static boolean appProviderConfExists(String applicationConfFile) {
         InputStream is = ApplicationProviderConfigLoader.class.getResourceAsStream(applicationConfFile);
-        if(is == null){
-            is = ApplicationProviderConfigLoader.class.getResourceAsStream("/"+applicationConfFile);
+        if (is == null) {
+            is = ApplicationProviderConfigLoader.class.getResourceAsStream("/" + applicationConfFile);
         }
 
-        if(is != null){
+        if (is != null) {
             try {
                 return true;
             } finally {
@@ -78,50 +80,56 @@ public class ApplicationProviderConfigLoader extends ApplicationProviderLoader {
     }
 
     private void initializeProvider(ApplicationProviderConfig providerConfig) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
-        LOG.info("Loading application provider {} from {}",providerConfig.getClassName(),providerConfig.getJarPath());
+        LOG.info("Loading application provider {} from {}", providerConfig.getClassName(), providerConfig.getJarPath());
         String providerClassName = providerConfig.getClassName();
-        if(providerClassName == null) throw new RuntimeException("provider.classname is null: "+providerConfig);
-        if(providerConfig.getJarPath() == null) throw new RuntimeException("provider.jarpath is null: "+providerConfig);
+        if (providerClassName == null) {
+            throw new RuntimeException("provider.classname is null: " + providerConfig);
+        }
+        if (providerConfig.getJarPath() == null) {
+            throw new RuntimeException("provider.jarpath is null: " + providerConfig);
+        }
 
         Class<?> providerClass = Class.forName(providerClassName);
 
-        if(!ApplicationProvider.class.isAssignableFrom(providerClass)){
-            throw new RuntimeException("providerClassName is not implementation of "+ApplicationProvider.class.getCanonicalName());
+        if (!ApplicationProvider.class.isAssignableFrom(providerClass)) {
+            throw new RuntimeException("providerClassName is not implementation of " + ApplicationProvider.class.getCanonicalName());
         }
         ApplicationProvider provider = (ApplicationProvider) providerClass.newInstance();
-        provider.prepare(providerConfig,this.getConfig());
-        Preconditions.checkNotNull(provider.getApplicationDesc(),"appDesc is null");
-        Preconditions.checkNotNull(provider.getApplicationDesc().getType(),"type is null");
+        provider.prepare(providerConfig, this.getConfig());
+        Preconditions.checkNotNull(provider.getApplicationDesc(), "appDesc is null");
+        Preconditions.checkNotNull(provider.getApplicationDesc().getType(), "type is null");
         registerProvider(provider);
     }
 
     private List<ApplicationProviderConfig> loadProvidersFromProvidersConf() {
         String providerConfigFile = DEFAULT_APPLICATIONS_CONFIG_FILE;
-        if(getConfig().hasPath(APPLICATIONS_CONFIG_PROPS_KEY)){
+        if (getConfig().hasPath(APPLICATIONS_CONFIG_PROPS_KEY)) {
             providerConfigFile = getConfig().getString(APPLICATIONS_CONFIG_PROPS_KEY);
-            LOG.info("Set {} = {}",APPLICATIONS_CONFIG_PROPS_KEY,providerConfigFile);
+            LOG.info("Set {} = {}", APPLICATIONS_CONFIG_PROPS_KEY, providerConfigFile);
         }
         InputStream is = null;
         try {
             JAXBContext jc = JAXBContext.newInstance(ApplicationProvidersConfig.class);
-            Unmarshaller unmarshaller = jc.createUnmarshaller();
+            final Unmarshaller unmarshaller = jc.createUnmarshaller();
             is = ApplicationProviderConfigLoader.class.getResourceAsStream(providerConfigFile);
-            if(is == null){
-                is = ApplicationProviderConfigLoader.class.getResourceAsStream("/"+providerConfigFile);
+            if (is == null) {
+                is = ApplicationProviderConfigLoader.class.getResourceAsStream("/" + providerConfigFile);
             }
-            if(is == null){
-                LOG.error("Application provider configuration {} is not found",providerConfigFile);
+            if (is == null) {
+                LOG.error("Application provider configuration {} is not found", providerConfigFile);
             }
-            Preconditions.checkNotNull(is,providerConfigFile+" is not found");
+            Preconditions.checkNotNull(is, providerConfigFile + " is not found");
             return ((ApplicationProvidersConfig) unmarshaller.unmarshal(is)).getProviders();
-        }catch (Exception ex){
-            LOG.error("Failed to load application provider configuration: {}",providerConfigFile,ex);
-            throw new RuntimeException("Failed to load application provider configuration: "+providerConfigFile,ex);
+        } catch (Exception ex) {
+            LOG.error("Failed to load application provider configuration: {}", providerConfigFile, ex);
+            throw new RuntimeException("Failed to load application provider configuration: " + providerConfigFile, ex);
         } finally {
-            if(is != null) try {
-                is.close();
-            } catch (IOException e) {
-                LOG.error(e.getMessage(),e);
+            if (is != null) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    LOG.error(e.getMessage(), e);
+                }
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java
index c7bc4f6..8b73865 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderSPILoader.java
@@ -16,11 +16,11 @@
  */
 package org.apache.eagle.app.service.impl;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.config.ApplicationProviderConfig;
 import org.apache.eagle.app.service.ApplicationProviderLoader;
 import org.apache.eagle.app.spi.ApplicationProvider;
 import org.apache.eagle.app.utils.DynamicJarPathFinder;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,24 +30,24 @@ import java.net.URLClassLoader;
 import java.util.ServiceLoader;
 import java.util.function.Function;
 
-public class ApplicationProviderSPILoader extends ApplicationProviderLoader{
+public class ApplicationProviderSPILoader extends ApplicationProviderLoader {
     private final String appProviderExtDir;
-    private final static Logger LOG = LoggerFactory.getLogger(ApplicationProviderSPILoader.class);
-    private final static String APPLICATIONS_DIR_PROPS_KEY = "application.provider.dir";
+    private static final Logger LOG = LoggerFactory.getLogger(ApplicationProviderSPILoader.class);
+    private static final String APPLICATIONS_DIR_PROPS_KEY = "application.provider.dir";
 
     public ApplicationProviderSPILoader(Config config) {
         super(config);
-        if(config.hasPath(APPLICATIONS_DIR_PROPS_KEY)) {
+        if (config.hasPath(APPLICATIONS_DIR_PROPS_KEY)) {
             this.appProviderExtDir = config.getString(APPLICATIONS_DIR_PROPS_KEY);
-            LOG.warn("Using {}: {}",APPLICATIONS_DIR_PROPS_KEY,this.appProviderExtDir);
-        }else{
+            LOG.warn("Using {}: {}", APPLICATIONS_DIR_PROPS_KEY, this.appProviderExtDir);
+        } else {
             this.appProviderExtDir = null;
         }
     }
 
     @Override
     public void load() {
-        if(appProviderExtDir != null) {
+        if (appProviderExtDir != null) {
             LOG.warn("Loading application providers from class loader of jars in {}", appProviderExtDir);
             File loc = new File(appProviderExtDir);
             File[] jarFiles = loc.listFiles(file -> file.getPath().toLowerCase().endsWith(".jar"));
@@ -56,21 +56,21 @@ public class ApplicationProviderSPILoader extends ApplicationProviderLoader{
                     try {
                         URL jarFileUrl = jarFile.toURI().toURL();
                         LOG.debug("Loading ApplicationProvider from jar: {}", jarFileUrl.toString());
-                        URLClassLoader jarFileClassLoader = new URLClassLoader(new URL[]{jarFileUrl});
+                        URLClassLoader jarFileClassLoader = new URLClassLoader(new URL[] {jarFileUrl});
                         loadProviderFromClassLoader(jarFileClassLoader, (applicationProviderConfig) -> jarFileUrl.getPath());
                     } catch (Exception e) {
-                        LOG.warn("Failed to load application provider from jar {}", jarFile,e);
+                        LOG.warn("Failed to load application provider from jar {}", jarFile, e);
                     }
                 }
             }
         } else {
             LOG.warn("Loading application providers from context class loader");
             ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-            loadProviderFromClassLoader(classLoader,(applicationProvider) -> DynamicJarPathFinder.findPath(applicationProvider.getClass()));
+            loadProviderFromClassLoader(classLoader, (applicationProvider) -> DynamicJarPathFinder.findPath(applicationProvider.getClass()));
         }
     }
 
-    private void loadProviderFromClassLoader(ClassLoader jarFileClassLoader, Function<ApplicationProvider,String> jarFileSupplier){
+    private void loadProviderFromClassLoader(ClassLoader jarFileClassLoader, Function<ApplicationProvider, String> jarFileSupplier) {
         ServiceLoader<ApplicationProvider> serviceLoader = ServiceLoader.load(ApplicationProvider.class);
         try {
             for (ApplicationProvider applicationProvider : serviceLoader) {
@@ -80,8 +80,8 @@ public class ApplicationProviderSPILoader extends ApplicationProviderLoader{
                 applicationProvider.prepare(providerConfig, getConfig());
                 registerProvider(applicationProvider);
             }
-        }catch (Throwable ex){
-            LOG.warn("Failed to register application provider",ex);
+        } catch (Throwable ex) {
+            LOG.warn("Failed to register application provider", ex);
             throw new IllegalStateException(ex);
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java
index ec2ad6c..3cb31f9 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationProviderServiceImpl.java
@@ -16,65 +16,64 @@
  */
 package org.apache.eagle.app.service.impl;
 
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import com.typesafe.config.Config;
 import org.apache.eagle.app.service.ApplicationProviderLoader;
 import org.apache.eagle.app.service.ApplicationProviderService;
 import org.apache.eagle.app.spi.ApplicationProvider;
 import org.apache.eagle.metadata.model.ApplicationDesc;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.*;
+import java.util.Collection;
 import java.util.stream.Collectors;
 
 /**
  * Support to load application provider from application.provider.config = "providers.xml" configuration file
  * or application.provider.dir = "lib/apps" with SPI Class loader
- *
- * TODO: hot-manage application provider loading
+ * <p>TODO: hot-manage application provider loading</p>
  */
 @Singleton
 public class ApplicationProviderServiceImpl implements ApplicationProviderService {
     private final Config config;
-    private final static Logger LOG = LoggerFactory.getLogger(ApplicationProviderServiceImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ApplicationProviderServiceImpl.class);
     private final ApplicationProviderLoader appProviderLoader;
-    public final static String APP_PROVIDER_LOADER_CLASS_KEY = "application.provider.loader";
+    public static final String APP_PROVIDER_LOADER_CLASS_KEY = "application.provider.loader";
 
     @Inject
-    public ApplicationProviderServiceImpl(Config config){
-        LOG.warn("Initializing {}",this.getClass().getCanonicalName());
+    public ApplicationProviderServiceImpl(Config config) {
+        LOG.warn("Initializing {}", this.getClass().getCanonicalName());
         this.config = config;
-        String appProviderLoaderClass = this.config.hasPath(APP_PROVIDER_LOADER_CLASS_KEY)?
-                this.config.getString(APP_PROVIDER_LOADER_CLASS_KEY):ApplicationProviderLoader.getDefaultAppProviderLoader();
-        LOG.warn("Initializing {} = {}",APP_PROVIDER_LOADER_CLASS_KEY,appProviderLoaderClass);
+        String appProviderLoaderClass = this.config.hasPath(APP_PROVIDER_LOADER_CLASS_KEY)
+            ? this.config.getString(APP_PROVIDER_LOADER_CLASS_KEY) : ApplicationProviderLoader.getDefaultAppProviderLoader();
+        LOG.warn("Initializing {} = {}", APP_PROVIDER_LOADER_CLASS_KEY, appProviderLoaderClass);
         appProviderLoader = initializeAppProviderLoader(appProviderLoaderClass);
-        LOG.warn("Initialized {}",appProviderLoader);
+        LOG.warn("Initialized {}", appProviderLoader);
         reload();
     }
 
-    private ApplicationProviderLoader initializeAppProviderLoader(String appProviderLoaderClass){
+    private ApplicationProviderLoader initializeAppProviderLoader(String appProviderLoaderClass) {
         try {
             return (ApplicationProviderLoader) Class.forName(appProviderLoaderClass).getConstructor(Config.class).newInstance(this.config);
         } catch (Throwable e) {
-            LOG.error("Failed to initialize ApplicationProviderLoader: "+appProviderLoaderClass,e);
-            throw new IllegalStateException("Failed to initialize ApplicationProviderLoader: "+appProviderLoaderClass,e);
+            LOG.error("Failed to initialize ApplicationProviderLoader: " + appProviderLoaderClass, e);
+            throw new IllegalStateException("Failed to initialize ApplicationProviderLoader: " + appProviderLoaderClass, e);
         }
     }
 
-    public synchronized void reload(){
+    public synchronized void reload() {
         appProviderLoader.reset();
         LOG.warn("Loading application providers ...");
         appProviderLoader.load();
-        LOG.warn("Loaded {} application providers",appProviderLoader.getProviders().size());
+        LOG.warn("Loaded {} application providers", appProviderLoader.getProviders().size());
     }
 
-    public Collection<ApplicationProvider> getProviders(){
+    public Collection<ApplicationProvider> getProviders() {
         return appProviderLoader.getProviders();
     }
 
-    public Collection<ApplicationDesc> getApplicationDescs(){
+    public Collection<ApplicationDesc> getApplicationDescs() {
         return getProviders().stream().map(ApplicationProvider::getApplicationDesc).collect(Collectors.toList());
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/DefaultStreamSinkConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/DefaultStreamSinkConfig.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/DefaultStreamSinkConfig.java
index 4a20e2b..b3d984e 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/DefaultStreamSinkConfig.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/DefaultStreamSinkConfig.java
@@ -20,9 +20,9 @@ import org.apache.eagle.metadata.model.StreamSinkConfig;
 
 public class DefaultStreamSinkConfig implements StreamSinkConfig {
     private final Class<?> streamPersistClass;
-    private final static String NONE_STORAGE_TYPE = "NONE";
+    private static final String NONE_STORAGE_TYPE = "NONE";
 
-    public DefaultStreamSinkConfig(Class<?> streamPersistClass){
+    public DefaultStreamSinkConfig(Class<?> streamPersistClass) {
         this.streamPersistClass = streamPersistClass;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/FlattenEventMapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/FlattenEventMapper.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/FlattenEventMapper.java
index fe3562b..3649d72 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/FlattenEventMapper.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/FlattenEventMapper.java
@@ -16,39 +16,39 @@
  */
 package org.apache.eagle.app.sink;
 
-import backtype.storm.tuple.Tuple;
 import org.apache.eagle.alert.engine.model.StreamEvent;
+import backtype.storm.tuple.Tuple;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Collections;
 import java.util.List;
 
-public class FlattenEventMapper  implements StreamEventMapper{
+public class FlattenEventMapper implements StreamEventMapper {
     private final String streamId;
-    private final static String TIMESTAMP_FIELD = "timestamp";
-    private final static Logger LOGGER = LoggerFactory.getLogger(FlattenEventMapper.class);
+    private static final String TIMESTAMP_FIELD = "timestamp";
+    private static final Logger LOGGER = LoggerFactory.getLogger(FlattenEventMapper.class);
 
-    public FlattenEventMapper(String streamId){
+    public FlattenEventMapper(String streamId) {
         this.streamId = streamId;
     }
 
     @Override
     public List<StreamEvent> map(Tuple tuple) throws Exception {
         long timestamp;
-        if(tuple.getFields().contains(TIMESTAMP_FIELD)) {
+        if (tuple.getFields().contains(TIMESTAMP_FIELD)) {
             try {
                 timestamp = tuple.getLongByField("timestamp");
             } catch (Exception ex) {
                 // if timestamp is not null
-                LOGGER.error(ex.getMessage(),ex);
+                LOGGER.error(ex.getMessage(), ex);
                 timestamp = 0;
             }
         } else {
             timestamp = System.currentTimeMillis();
         }
         Object[] values = new Object[tuple.getFields().size()];
-        for(int i=0;i<tuple.getFields().size();i++){
+        for (int i = 0; i < tuple.getFields().size(); i++) {
             values[i] = tuple.getValue(i);
         }
         StreamEvent event = new StreamEvent();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/KafkaStreamSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/KafkaStreamSink.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/KafkaStreamSink.java
index 27848d9..2a03275 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/KafkaStreamSink.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/KafkaStreamSink.java
@@ -30,7 +30,7 @@ import java.util.Map;
 import java.util.Properties;
 
 public class KafkaStreamSink extends StormStreamSink<KafkaStreamSinkConfig> {
-    private final static Logger LOG = LoggerFactory.getLogger(KafkaStreamSink.class);
+    private static final Logger LOG = LoggerFactory.getLogger(KafkaStreamSink.class);
     private String topicId;
     private Producer producer;
     private KafkaStreamSinkConfig config;
@@ -54,11 +54,11 @@ public class KafkaStreamSink extends StormStreamSink<KafkaStreamSinkConfig> {
     }
 
     @Override
-    protected void execute(Object key, Map event,BasicOutputCollector collector) {
+    protected void execute(Object key, Map event, BasicOutputCollector collector) {
         try {
             String output = new ObjectMapper().writeValueAsString(event);
             producer.send(new KeyedMessage(this.topicId, key, output));
-        }catch(Exception ex){
+        } catch (Exception ex) {
             LOG.error(ex.getMessage(), ex);
             collector.reportError(ex);
         }
@@ -69,17 +69,17 @@ public class KafkaStreamSink extends StormStreamSink<KafkaStreamSinkConfig> {
         ensureTopicCreated();
     }
 
-    private void ensureTopicCreated(){
-        LOG.info("TODO: ensure kafka topic {} created",this.topicId);
+    private void ensureTopicCreated() {
+        LOG.info("TODO: ensure kafka topic {} created", this.topicId);
     }
 
-    private void ensureTopicDeleted(){
-        LOG.info("TODO: ensure kafka topic {} deleted",this.topicId);
+    private void ensureTopicDeleted() {
+        LOG.info("TODO: ensure kafka topic {} deleted", this.topicId);
     }
 
     @Override
     public void cleanup() {
-        if(this.producer != null){
+        if (this.producer != null) {
             this.producer.close();
         }
     }
@@ -89,7 +89,7 @@ public class KafkaStreamSink extends StormStreamSink<KafkaStreamSinkConfig> {
         ensureTopicDeleted();
     }
 
-    public static class Provider implements StreamSinkProvider<KafkaStreamSink,KafkaStreamSinkConfig> {
+    public static class Provider implements StreamSinkProvider<KafkaStreamSink, KafkaStreamSinkConfig> {
         @Override
         public KafkaStreamSinkConfig getSinkConfig(String streamId, Config config) {
             KafkaStreamSinkConfig desc = new KafkaStreamSinkConfig();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/LoggingStreamSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/LoggingStreamSink.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/LoggingStreamSink.java
index 787fc99..61a6836 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/LoggingStreamSink.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/LoggingStreamSink.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.
@@ -24,7 +24,7 @@ import org.slf4j.LoggerFactory;
 import java.util.Map;
 
 public class LoggingStreamSink extends StormStreamSink<DefaultStreamSinkConfig> {
-    private final static Logger LOGGER = LoggerFactory.getLogger(KafkaStreamSink.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(KafkaStreamSink.class);
 
     @Override
     public void onInstall() {
@@ -38,10 +38,10 @@ public class LoggingStreamSink extends StormStreamSink<DefaultStreamSinkConfig>
 
     @Override
     protected void execute(Object key, Map event, BasicOutputCollector collector) {
-        LOGGER.info("Receiving {}",event);
+        LOGGER.info("Receiving {}", event);
     }
 
-    public static class Provider implements StreamSinkProvider<LoggingStreamSink,DefaultStreamSinkConfig> {
+    public static class Provider implements StreamSinkProvider<LoggingStreamSink, DefaultStreamSinkConfig> {
         @Override
         public DefaultStreamSinkConfig getSinkConfig(String streamId, Config config) {
             return new DefaultStreamSinkConfig(LoggingStreamSink.class);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StormStreamSink.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StormStreamSink.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StormStreamSink.java
index d152e76..7ea234a 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StormStreamSink.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StormStreamSink.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,26 +16,20 @@
  */
 package org.apache.eagle.app.sink;
 
+import org.apache.eagle.metadata.model.StreamSinkConfig;
 import backtype.storm.task.TopologyContext;
 import backtype.storm.topology.BasicOutputCollector;
 import backtype.storm.topology.OutputFieldsDeclarer;
 import backtype.storm.topology.base.BaseBasicBolt;
-import backtype.storm.tuple.Fields;
 import backtype.storm.tuple.Tuple;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Preconditions;
-import kafka.producer.KeyedMessage;
-import org.apache.eagle.alert.engine.model.StreamEvent;
-import org.apache.eagle.metadata.model.StreamSinkConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 public abstract class StormStreamSink<K extends StreamSinkConfig> extends BaseBasicBolt implements StreamSink<K> {
-    private final static Logger LOG = LoggerFactory.getLogger(StormStreamSink.class);
+    private static final Logger LOG = LoggerFactory.getLogger(StormStreamSink.class);
     private String streamId;
 
     @Override
@@ -49,14 +43,14 @@ public abstract class StormStreamSink<K extends StreamSinkConfig> extends BaseBa
     }
 
     /**
-     * Implicitly hides the Tuple protocol inside code as Tuple[Key,Map]
+     * Implicitly hides the Tuple protocol inside code as Tuple[Key,Map].
      */
     @Override
     public void execute(Tuple input, BasicOutputCollector collector) {
         try {
             Map event = null;
             Object key = input.getValue(0);
-            if(input.size()<2){
+            if (input.size() < 2) {
                 event = tupleAsMap(input);
             } else {
                 Object value = input.getValue(1);
@@ -68,23 +62,23 @@ public abstract class StormStreamSink<K extends StreamSinkConfig> extends BaseBa
                     }
                 }
             }
-            execute(key,event,collector);
-        }catch(Exception ex){
+            execute(key, event, collector);
+        } catch (Exception ex) {
             LOG.error(ex.getMessage(), ex);
             collector.reportError(ex);
         }
     }
 
-    private Map tupleAsMap(Tuple tuple){
+    protected abstract void execute(Object key, Map event, BasicOutputCollector collector);
+
+    private Map tupleAsMap(Tuple tuple) {
         Map values = new HashMap<>();
-        for(String field:tuple.getFields()){
-            values.put(field,tuple.getValueByField(field));
+        for (String field : tuple.getFields()) {
+            values.put(field, tuple.getValueByField(field));
         }
         return values;
     }
 
-    protected abstract void execute(Object key,Map event,BasicOutputCollector collector);
-
     @Override
     public void declareOutputFields(OutputFieldsDeclarer declarer) {
     }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamEventMapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamEventMapper.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamEventMapper.java
index 350e274..710e4d2 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamEventMapper.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamEventMapper.java
@@ -16,15 +16,17 @@
  */
 package org.apache.eagle.app.sink;
 
-import backtype.storm.tuple.Tuple;
 import org.apache.eagle.alert.engine.model.StreamEvent;
+import backtype.storm.tuple.Tuple;
 
 import java.io.Serializable;
 import java.util.List;
 
 @FunctionalInterface
-public interface StreamEventMapper extends Serializable{
+public interface StreamEventMapper extends Serializable {
     /**
+     * Map from storm tuple to Stream Event.
+     *
      * @param tuple
      * @return
      * @throws Exception

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamSinkProvider.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamSinkProvider.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamSinkProvider.java
index 6fce77b..0425fa6 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamSinkProvider.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/sink/StreamSinkProvider.java
@@ -16,31 +16,27 @@
  */
 package org.apache.eagle.app.sink;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.metadata.model.StreamSinkConfig;
+import com.typesafe.config.Config;
 
 import java.lang.reflect.ParameterizedType;
 
-public interface StreamSinkProvider<S extends StreamSink<D>,D extends StreamSinkConfig>{
-    /**
-     * @param streamId
-     * @param config
-     * @return
-     */
+public interface StreamSinkProvider<S extends StreamSink<D>, D extends StreamSinkConfig> {
     D getSinkConfig(String streamId, Config config);
+
     S getSink();
 
-    default S getSink(String streamId, Config config){
+    default S getSink(String streamId, Config config) {
         S s = getSink();
-        s.init(streamId,getSinkConfig(streamId,config));
+        s.init(streamId, getSinkConfig(streamId, config));
         return s;
     }
 
-    default Class<? extends S> getSinkType(){
+    default Class<? extends S> getSinkType() {
         return (Class<S>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
     }
 
-    default Class<? extends D> getSinkConfigType(){
+    default Class<? extends D> getSinkConfigType() {
         return (Class<D>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1];
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/AbstractApplicationProvider.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/AbstractApplicationProvider.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/AbstractApplicationProvider.java
index 6975b6b..4a9c1ff 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/AbstractApplicationProvider.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/AbstractApplicationProvider.java
@@ -16,7 +16,6 @@
  */
 package org.apache.eagle.app.spi;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
 import org.apache.eagle.app.Application;
 import org.apache.eagle.app.config.ApplicationProviderConfig;
@@ -25,11 +24,12 @@ import org.apache.eagle.common.module.ModuleRegistry;
 import org.apache.eagle.metadata.model.ApplicationDesc;
 import org.apache.eagle.metadata.model.ApplicationDocs;
 import org.apache.eagle.metadata.model.Configuration;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.xml.bind.JAXBException;
 import java.util.List;
+import javax.xml.bind.JAXBException;
 
 /**
  * Default metadata path is:  /META-INF/providers/${ApplicationProviderClassName}.xml
@@ -37,20 +37,20 @@ import java.util.List;
  * @param <T>
  */
 public abstract class AbstractApplicationProvider<T extends Application> implements ApplicationProvider<T> {
-    private final static Logger LOG = LoggerFactory.getLogger(AbstractApplicationProvider.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractApplicationProvider.class);
     private final ApplicationDesc applicationDesc;
 
-    private final static String METADATA_RESOURCE_PATH="/META-INF/providers/%s.xml";
+    private static final String METADATA_RESOURCE_PATH = "/META-INF/providers/%s.xml";
 
     /**
      * Default metadata path is:  /META-INF/providers/${ApplicationProviderClassName}.xml
      *
-     * You are not recommended to override this method except you could make sure the path is universal unique
+     * <p>You are not recommended to override this method except you could make sure the path is universal unique</p>
      *
      * @return metadata file path
      */
-    protected final String getMetadata(){
-        return String.format(METADATA_RESOURCE_PATH,this.getClass().getName());
+    protected final String getMetadata() {
+        return String.format(METADATA_RESOURCE_PATH, this.getClass().getName());
     }
 
     protected AbstractApplicationProvider() {
@@ -64,7 +64,7 @@ public abstract class AbstractApplicationProvider<T extends Application> impleme
         setDocs(descWrapperConfig.getDocs());
         try {
             if (descWrapperConfig.getAppClass() != null) {
-//                setAppClass((Class<T>) Class.forName(descWrapperConfig.getAppClass()));
+                // setAppClass((Class<T>) Class.forName(descWrapperConfig.getAppClass()));
                 setAppClass((Class<T>) Class.forName(descWrapperConfig.getAppClass(), true, this.getClass().getClassLoader()));
                 if (!Application.class.isAssignableFrom(applicationDesc.getAppClass())) {
                     throw new IllegalStateException(descWrapperConfig.getAppClass() + " is not sub-class of " + Application.class.getCanonicalName());
@@ -107,16 +107,16 @@ public abstract class AbstractApplicationProvider<T extends Application> impleme
         try {
             applicationDesc.setConfiguration(Configuration.fromResource(resourceName));
         } catch (JAXBException e) {
-            LOG.error("Failed to load configuration template from "+resourceName,e);
-            throw new RuntimeException("Failed to load configuration template from "+resourceName,e);
+            LOG.error("Failed to load configuration template from " + resourceName, e);
+            throw new RuntimeException("Failed to load configuration template from " + resourceName, e);
         }
     }
 
     @Override
     public String toString() {
         return String.format(
-                "%s[name=%s, type=%s, version=%s, viewPath=%s, appClass=%s, configuration= %s properties]", getClass().getSimpleName(),
-                applicationDesc.getName(),applicationDesc.getType(),applicationDesc.getVersion(), applicationDesc.getViewPath(), applicationDesc.getAppClass(), applicationDesc.getConfiguration().size()
+            "%s[name=%s, type=%s, version=%s, viewPath=%s, appClass=%s, configuration= %s properties]", getClass().getSimpleName(),
+            applicationDesc.getName(), applicationDesc.getType(), applicationDesc.getVersion(), applicationDesc.getViewPath(), applicationDesc.getAppClass(), applicationDesc.getConfiguration().size()
         );
     }
 
@@ -140,6 +140,6 @@ public abstract class AbstractApplicationProvider<T extends Application> impleme
 
     @Override
     public void register(ModuleRegistry registry) {
-        LOG.debug("Registering modules {}",this.getClass().getName());
+        LOG.debug("Registering modules {}", this.getClass().getName());
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationProvider.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationProvider.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationProvider.java
index 0c68cfc..761cfbb 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationProvider.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/spi/ApplicationProvider.java
@@ -16,23 +16,23 @@
  */
 package org.apache.eagle.app.spi;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.Application;
 import org.apache.eagle.app.config.ApplicationProviderConfig;
-import org.apache.eagle.metadata.model.ApplicationDesc;
 import org.apache.eagle.common.module.ModuleRegistry;
+import org.apache.eagle.metadata.model.ApplicationDesc;
+import com.typesafe.config.Config;
 
 public interface ApplicationProvider<T extends Application> {
 
     void prepare(ApplicationProviderConfig providerConfig,Config envConfig);
 
     /**
-     * @return application descriptor
+     * @return application descriptor.
      */
     ApplicationDesc getApplicationDesc();
 
     /**
-     * @return application instance
+     * @return application instance.
      */
     T getApplication();
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/AppJUnitRunner.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/AppJUnitRunner.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/AppJUnitRunner.java
deleted file mode 100644
index b8174bb..0000000
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/AppJUnitRunner.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.
- */
-package org.apache.eagle.app.test;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import org.apache.eagle.common.module.Modules;
-import org.junit.runners.BlockJUnit4ClassRunner;
-import org.junit.runners.model.InitializationError;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class AppJUnitRunner extends BlockJUnit4ClassRunner {
-    private final Injector injector;
-    public AppJUnitRunner(Class<?> klass) throws InitializationError {
-        super(klass);
-        injector = createInjectorFor(getModulesFor(klass));
-    }
-
-    @Override
-    protected Object createTest() throws Exception {
-        final Object obj = super.createTest();
-        injector.injectMembers(this);
-        this.injector.injectMembers(obj);
-        return obj;
-    }
-
-    /**
-     * Create a Guice Injector for the class under test.
-     * @param classes Guice Modules
-     * @return A Guice Injector instance.
-     * @throws InitializationError If couldn't instantiate a module.
-     */
-    private Injector createInjectorFor(final Class<?>[] classes)
-            throws InitializationError {
-        final List<Module> modules = new ArrayList<>();
-
-        ApplicationTestGuiceModule testGuiceModule = new ApplicationTestGuiceModule();
-
-        // Add default modules
-        modules.add(testGuiceModule);
-
-        if(classes!= null) {
-            for (final Class<?> module : Arrays.asList(classes)) {
-                try {
-                    modules.add((Module) module.newInstance());
-                } catch (final ReflectiveOperationException exception) {
-                    throw new InitializationError(exception);
-                }
-            }
-        }
-        return Guice.createInjector(modules);
-    }
-
-    /**
-     * Get the list of Guice Modules request by GuiceModules annotation in the
-     * class under test.
-     * @param klass Class under test.
-     * @return A Class Array of Guice Modules required by this class.
-     * @throws InitializationError If the annotation is not present.
-     */
-    private Class<?>[] getModulesFor(final Class<?> klass)
-            throws InitializationError {
-        final Modules annotation = klass.getAnnotation(Modules.class);
-        if (annotation == null) {
-            return null;
-        }
-        return annotation.value();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulator.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulator.java
index 3e4aa21..d8f342f 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulator.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulator.java
@@ -16,53 +16,35 @@
  */
 package org.apache.eagle.app.test;
 
+import org.apache.eagle.app.spi.ApplicationProvider;
 import com.google.inject.Guice;
 import com.google.inject.Module;
-import org.apache.eagle.app.spi.ApplicationProvider;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
 /**
- * Application test simulator for developer to quickly run application without diving into application lifecycle
+ * Application test simulator for developer to quickly run application without diving into application lifecycle.
  */
 public abstract class ApplicationSimulator {
-    /**
-     *
-     * @param appType
-     */
     public abstract void start(String appType);
 
-    /**
-     *
-     * @param appType
-     * @param appConfig
-     */
-    public abstract void start(String appType, Map<String,Object> appConfig);
+    public abstract void start(String appType, Map<String, Object> appConfig);
 
-    /**
-     *
-     * @param appProviderClass
-     */
     public abstract void start(Class<? extends ApplicationProvider> appProviderClass);
 
-    /**
-     *
-     * @param appProviderClass
-     * @param appConfig
-     */
-    public abstract void start(Class<? extends ApplicationProvider> appProviderClass, Map<String,Object> appConfig) throws Exception;
+    public abstract void start(Class<? extends ApplicationProvider> appProviderClass, Map<String, Object> appConfig) throws Exception;
 
-    public static ApplicationSimulator getInstance(){
+    public static ApplicationSimulator getInstance() {
         return Guice.createInjector(new ApplicationTestGuiceModule()).getInstance(ApplicationSimulator.class);
     }
 
     /**
-     * @param modules additional modules
-     * @return ApplicationSimulator instance
+     * @param modules additional modules.
+     * @return ApplicationSimulator instance.
      */
-    public static ApplicationSimulator getInstance(Module ... modules){
+    public static ApplicationSimulator getInstance(Module... modules) {
         List<Module> contextModules = Arrays.asList(modules);
         contextModules.add(new ApplicationTestGuiceModule());
         return Guice.createInjector(contextModules).getInstance(ApplicationSimulator.class);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulatorImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulatorImpl.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulatorImpl.java
index 35dead2..2094d74 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulatorImpl.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationSimulatorImpl.java
@@ -16,8 +16,6 @@
  */
 package org.apache.eagle.app.test;
 
-import com.google.inject.Inject;
-import com.typesafe.config.Config;
 import org.apache.eagle.app.config.ApplicationProviderConfig;
 import org.apache.eagle.app.resource.ApplicationResource;
 import org.apache.eagle.app.service.ApplicationOperations;
@@ -26,6 +24,8 @@ import org.apache.eagle.app.utils.DynamicJarPathFinder;
 import org.apache.eagle.metadata.model.ApplicationEntity;
 import org.apache.eagle.metadata.model.SiteEntity;
 import org.apache.eagle.metadata.resource.SiteResource;
+import com.google.inject.Inject;
+import com.typesafe.config.Config;
 import org.junit.Assert;
 
 import java.util.HashMap;
@@ -38,12 +38,23 @@ public class ApplicationSimulatorImpl extends ApplicationSimulator {
     private final ApplicationResource applicationResource;
 
     @Inject
-    public ApplicationSimulatorImpl(Config config, SiteResource siteResource, ApplicationResource applicationResource){
+    public ApplicationSimulatorImpl(Config config, SiteResource siteResource, ApplicationResource applicationResource) {
         this.config = config;
         this.siteResource = siteResource;
         this.applicationResource = applicationResource;
     }
 
+    private static final AtomicInteger incr = new AtomicInteger();
+
+    private SiteEntity getUniqueSite() {
+        // Create local site
+        SiteEntity siteEntity = new SiteEntity();
+        siteEntity.setSiteId("SIMULATED_SITE_" + incr.incrementAndGet());
+        siteEntity.setSiteName(siteEntity.getSiteId());
+        siteEntity.setDescription("Automatically generated unique simulation site " + siteEntity.getSiteId() + " (simulator: " + this + ")");
+        return siteEntity;
+    }
+
     @Override
     public void start(String appType) {
         start(appType, new HashMap<>());
@@ -54,26 +65,15 @@ public class ApplicationSimulatorImpl extends ApplicationSimulator {
         SiteEntity siteEntity = getUniqueSite();
         siteResource.createSite(siteEntity);
         Assert.assertNotNull(siteEntity.getUuid());
-        ApplicationOperations.InstallOperation installOperation = new ApplicationOperations.InstallOperation(siteEntity.getSiteId(),appType, ApplicationEntity.Mode.LOCAL);
+        ApplicationOperations.InstallOperation installOperation = new ApplicationOperations.InstallOperation(siteEntity.getSiteId(), appType, ApplicationEntity.Mode.LOCAL);
         installOperation.setConfiguration(appConfig);
         // Install application
         ApplicationEntity applicationEntity =
-                applicationResource.installApplication(installOperation).getData();
+            applicationResource.installApplication(installOperation).getData();
         // Start application
         applicationResource.startApplication(new ApplicationOperations.StartOperation(applicationEntity.getUuid()));
     }
 
-    private final static AtomicInteger incr = new AtomicInteger();
-
-    private SiteEntity getUniqueSite(){
-        // Create local site
-        SiteEntity siteEntity = new SiteEntity();
-        siteEntity.setSiteId("SIMULATED_SITE_"+incr.incrementAndGet());
-        siteEntity.setSiteName(siteEntity.getSiteId());
-        siteEntity.setDescription("Automatically generated unique simulation site "+siteEntity.getSiteId()+" (simulator: "+this+")");
-        return siteEntity;
-    }
-
     @Override
     public void start(Class<? extends ApplicationProvider> appProviderClass) {
         start(appProviderClass, new HashMap<>());
@@ -83,10 +83,10 @@ public class ApplicationSimulatorImpl extends ApplicationSimulator {
     public void start(Class<? extends ApplicationProvider> appProviderClass, Map<String, Object> appConfig) {
         try {
             ApplicationProvider applicationProvider = appProviderClass.newInstance();
-            applicationProvider.prepare(new ApplicationProviderConfig(DynamicJarPathFinder.findPath(appProviderClass),appProviderClass),config);
-            start(applicationProvider.getApplicationDesc().getType(),appConfig);
+            applicationProvider.prepare(new ApplicationProviderConfig(DynamicJarPathFinder.findPath(appProviderClass), appProviderClass), config);
+            start(applicationProvider.getApplicationDesc().getType(), appConfig);
         } catch (InstantiationException | IllegalAccessException e) {
-            throw new IllegalStateException(e.getMessage(),e);
+            throw new IllegalStateException(e.getMessage(), e);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java
index 1c7d6be..67e93a8 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java
@@ -17,27 +17,19 @@
 package org.apache.eagle.app.test;
 
 import com.google.inject.Guice;
-import com.google.inject.Inject;
 import com.google.inject.Injector;
-import org.apache.commons.dbcp.BasicDataSource;
-import org.apache.eagle.common.module.CommonGuiceModule;
-import org.apache.eagle.metadata.service.memory.MemoryMetadataStore;
-import org.junit.After;
 import org.junit.Before;
 
-import javax.sql.DataSource;
-import java.sql.SQLException;
-
 public class ApplicationTestBase {
     private Injector injector;
 
     @Before
-    public void setUp(){
+    public void setUp() {
         injector = Guice.createInjector(new ApplicationTestGuiceModule());
         injector.injectMembers(this);
     }
 
-    public Injector injector(){
+    public Injector injector() {
         return injector;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestGuiceModule.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestGuiceModule.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestGuiceModule.java
index b50a661..3e2ba2c 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestGuiceModule.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestGuiceModule.java
@@ -16,20 +16,19 @@
  */
 package org.apache.eagle.app.test;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
-import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.app.module.ApplicationExtensionLoader;
 import org.apache.eagle.app.module.ApplicationGuiceModule;
 import org.apache.eagle.app.service.ApplicationProviderService;
 import org.apache.eagle.app.service.impl.ApplicationProviderServiceImpl;
-import org.apache.eagle.app.spi.ApplicationProvider;
 import org.apache.eagle.common.module.CommonGuiceModule;
 import org.apache.eagle.common.module.GlobalScope;
 import org.apache.eagle.common.module.ModuleRegistry;
 import org.apache.eagle.metadata.service.memory.MemoryMetadataStore;
+import com.google.inject.AbstractModule;
+import com.google.inject.Singleton;
+import com.typesafe.config.ConfigFactory;
 
-public class ApplicationTestGuiceModule extends AbstractModule{
+public class ApplicationTestGuiceModule extends AbstractModule {
     @Override
     protected void configure() {
         CommonGuiceModule common = new CommonGuiceModule();
@@ -39,7 +38,7 @@ public class ApplicationTestGuiceModule extends AbstractModule{
         install(common);
         install(app);
         install(store);
-        ModuleRegistry registry =ApplicationExtensionLoader.load(common,app,store);
+        ModuleRegistry registry = ApplicationExtensionLoader.load(common, app, store);
         registry.getModules(store.getClass()).forEach(this::install);
         registry.getModules(GlobalScope.class).forEach(this::install);
         bind(ApplicationSimulator.class).to(ApplicationSimulatorImpl.class).in(Singleton.class);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/DynamicJarPathFinder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/DynamicJarPathFinder.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/DynamicJarPathFinder.java
index a0a7d50..5e20b25 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/DynamicJarPathFinder.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/DynamicJarPathFinder.java
@@ -30,7 +30,8 @@ import java.nio.charset.Charset;
  * https://github.com/rzwitserloot/lombok.patcher/blob/master/src/lombok/patcher/inject/LiveInjector.java
  */
 public class DynamicJarPathFinder {
-    private final static Logger LOG = LoggerFactory.getLogger(DynamicJarPathFinder.class);
+    private static final Logger LOG = LoggerFactory.getLogger(DynamicJarPathFinder.class);
+
     /**
      * If the provided class has been loaded from a jar file that is on the local file system, will find the absolute path to that jar file.
      *
@@ -40,12 +41,15 @@ public class DynamicJarPathFinder {
      *                               other custom classloading device).
      */
     public static String findPathJar(Class<?> context) throws IllegalStateException {
-        if (context == null) context = DynamicJarPathFinder.class;
+        if (context == null) {
+            context = DynamicJarPathFinder.class;
+        }
         String rawName = context.getName();
         String classFileName;
-    /* rawName is something like package.name.ContainingClass$ClassName. We need to turn this into ContainingClass$ClassName.class. */ {
+        /* rawName is something like package.name.ContainingClass$ClassName. We need to turn this into ContainingClass$ClassName.class. */
+        {
             int idx = rawName.lastIndexOf('.');
-            classFileName = (idx == -1 ? rawName : rawName.substring(idx+1)) + ".class";
+            classFileName = (idx == -1 ? rawName : rawName.substring(idx + 1)) + ".class";
         }
 
         String uri = context.getResource(classFileName).toString();
@@ -55,13 +59,15 @@ public class DynamicJarPathFinder {
         if (!uri.startsWith("jar:file:")) {
             int idx = uri.indexOf(':');
             String protocol = idx == -1 ? "(unknown)" : uri.substring(0, idx);
-            throw new IllegalStateException("This class has been loaded remotely via the " + protocol +
-                    " protocol. Only loading from a jar on the local file system is supported.");
+            throw new IllegalStateException("This class has been loaded remotely via the " + protocol
+                + " protocol. Only loading from a jar on the local file system is supported.");
         }
 
         int idx = uri.indexOf('!');
         //As far as I know, the if statement below can't ever trigger, so it's more of a sanity check thing.
-        if (idx == -1) throw new IllegalStateException("You appear to have loaded this class from a local jar file, but I can't make sense of the URL!");
+        if (idx == -1) {
+            throw new IllegalStateException("You appear to have loaded this class from a local jar file, but I can't make sense of the URL!");
+        }
 
         try {
             String fileName = URLDecoder.decode(uri.substring("jar:file:".length(), idx), Charset.defaultCharset().name());
@@ -74,21 +80,24 @@ public class DynamicJarPathFinder {
     /**
      * Similar to JarPathFinder, but not make sure the path must valid jar.
      *
-     * @see DynamicJarPathFinder#findPathJar(Class)
      * @return the class path contains the context class
+     * @see DynamicJarPathFinder#findPathJar(Class)
      */
     public static String findPath(Class<?> context) throws IllegalStateException {
-        if (context == null) context = DynamicJarPathFinder.class;
+        if (context == null) {
+            context = DynamicJarPathFinder.class;
+        }
         String rawName = context.getName();
         String classFileName;
-    /* rawName is something like package.name.ContainingClass$ClassName. We need to turn this into ContainingClass$ClassName.class. */ {
+        /* rawName is something like package.name.ContainingClass$ClassName. We need to turn this into ContainingClass$ClassName.class. */
+        {
             int idx = rawName.lastIndexOf('.');
-            classFileName = (idx == -1 ? rawName : rawName.substring(idx+1)) + ".class";
+            classFileName = (idx == -1 ? rawName : rawName.substring(idx + 1)) + ".class";
         }
 
         String uri = context.getResource(classFileName).toString();
         if (uri.startsWith("file:")) {
-            LOG.warn("This class has been loaded from a directory and not from a jar file: {}",uri);
+            LOG.warn("This class has been loaded from a directory and not from a jar file: {}", uri);
             String fileName = null;
             try {
                 fileName = URLDecoder.decode(uri.substring("file:".length(), uri.length()), Charset.defaultCharset().name());
@@ -101,8 +110,8 @@ public class DynamicJarPathFinder {
         if (!uri.startsWith("jar:file:")) {
             int idx = uri.indexOf(':');
             String protocol = idx == -1 ? "(unknown)" : uri.substring(0, idx);
-            throw new IllegalStateException("This class has been loaded remotely via the " + protocol +
-                    " protocol. Only loading from a jar on the local file system is supported.");
+            throw new IllegalStateException("This class has been loaded remotely via the " + protocol
+                + " protocol. Only loading from a jar on the local file system is supported.");
         }
 
         int idx = uri.indexOf('!');

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/pom.xml b/eagle-core/eagle-app/pom.xml
index c2bfd97..5aff6a6 100644
--- a/eagle-core/eagle-app/pom.xml
+++ b/eagle-core/eagle-app/pom.xml
@@ -34,4 +34,17 @@
     <modules>
         <module>eagle-app-base</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>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfig.java b/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfig.java
index 6226057..8b4b959 100755
--- a/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfig.java
+++ b/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfig.java
@@ -16,9 +16,9 @@
  */
 package org.apache.eagle.common.config;
 
-import com.typesafe.config.Config;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.client.HTableInterface;
+import com.typesafe.config.Config;
 
 import java.util.TimeZone;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -27,7 +27,7 @@ public interface EagleConfig {
 
     boolean isCoprocessorEnabled();
 
-	HTableInterface getHTable(String tableName);
+    HTableInterface getHTable(String tableName);
 
     Configuration getHbaseConf();
 
@@ -35,26 +35,26 @@ public interface EagleConfig {
 
     ThreadPoolExecutor getExecutor();
 
-	String getZKQuorum();
+    String getZKQuorum();
 
-	String getZKPort();
+    String getZKPort();
 
-	String getServiceHost();
+    String getServiceHost();
 
-	int getServicePort();
+    int getServicePort();
 
     String getEnv();
 
     boolean isTableNamePrefixedWithEnvironment();
-	
+
     int getHBaseClientScanCacheSize();
 
     TimeZone getTimeZone();
-    
+
     boolean isServiceAuditingEnabled();
 
     /**
-     * @return root config
+     * @return root config.
      */
     Config getConfig();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigConstants.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigConstants.java b/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigConstants.java
index 7829728..693041d 100644
--- a/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigConstants.java
+++ b/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigConstants.java
@@ -17,49 +17,49 @@
 package org.apache.eagle.common.config;
 
 public final class EagleConfigConstants {
-    public final static String SERVICE_ENV = "service.env";
-    public final static String SERVICE_HOST = "service.host";
-    public final static String SERVICE_PORT = "service.port";
-    public final static String SERVICE_HBASE_ZOOKEEPER_QUORUM = "storage.hbase.hbase-zookeeper-quorum";
-    public final static String SERVICE_HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT = "storage.hbase-zookeeper-property-clientPort";
-    public final static String SERVICE_ZOOKEEPER_ZNODE_PARENT = "storage.zookeeper-znode-parent";
-    public final static String SERVICE_HBASE_CLIENT_IPC_POOL_SIZE = "storage.hbase-client-ipc-pool-size";
-    public final static String SERVICE_STORAGE_TYPE = "storage.storage-type";
-    public final static String SERVICE_COPROCESSOR_ENABLED = "storage.coprocessor-enabled";
-    public final static String SERVICE_TABLE_NAME_PREFIXED_WITH_ENVIRONMENT = "storage.table-name-prefixed-with-environment";
-    public final static String SERVICE_HBASE_CLIENT_SCAN_CACHE_SIZE = "storage.hbase-client-scan-cache-size";
-    public final static String SERVICE_THREADPOOL_CORE_SIZE = "storage.threadpool-core-size";
-    public final static String SERVICE_THREADPOOL_MAX_SIZE = "storage.threadpool-max-size";
-    public final static String SERVICE_THREADPOOL_SHRINK_SIZE = "storage.threadpool-shrink-size";
-    public final static String SERVICE_AUDITING_ENABLED = "storage.audit-enabled";
+    public static final String SERVICE_ENV = "service.env";
+    public static final String SERVICE_HOST = "service.host";
+    public static final String SERVICE_PORT = "service.port";
+    public static final String SERVICE_HBASE_ZOOKEEPER_QUORUM = "storage.hbase.zookeeperQuorum";
+    public static final String SERVICE_HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT = "storage.hbase.zookeeperPropertyClientPort";
+    public static final String SERVICE_ZOOKEEPER_ZNODE_PARENT = "storage.hbase.zookeeperZnodeParent";
+    public static final String SERVICE_HBASE_CLIENT_IPC_POOL_SIZE = "storage.hbase.clientIpcPoolSize";
+    public static final String SERVICE_STORAGE_TYPE = "storage.type";
+    public static final String SERVICE_COPROCESSOR_ENABLED = "storage.hbase.coprocessorEnabled";
+    public static final String SERVICE_TABLE_NAME_PREFIXED_WITH_ENVIRONMENT = "storage.hbase.tableNamePrefixedWithEnvironment";
+    public static final String SERVICE_HBASE_CLIENT_SCAN_CACHE_SIZE = "storage.hbase.clientScanCacheSize";
+    public static final String SERVICE_THREADPOOL_CORE_SIZE = "storage.hbase.threadpoolCoreSize";
+    public static final String SERVICE_THREADPOOL_MAX_SIZE = "storage.hbase.threadpoolMaxSize";
+    public static final String SERVICE_THREADPOOL_SHRINK_SIZE = "storage.hbase.threadpoolShrinkSize";
+    public static final String SERVICE_AUDITING_ENABLED = "storage.hbase.auditEnabled";
 
-    public final static String EAGLE_TIME_ZONE = "eagle.timezone";
-    public final static String DEFAULT_EAGLE_TIME_ZONE = "UTC";
+    public static final String EAGLE_TIME_ZONE = "service.timezone";
+    public static final String DEFAULT_EAGLE_TIME_ZONE = "UTC";
 
-    public final static int DEFAULT_THREAD_POOL_CORE_SIZE = 10;
-    public final static int DEFAULT_THREAD_POOL_MAX_SIZE = 20;
-    public final static long DEFAULT_THREAD_POOL_SHRINK_TIME = 60000L;
-    public final static String DEFAULT_SERVICE_HOST = "localhost";
-    public final static String DEFAULT_STORAGE_TYPE = "hbase";
-    public final static int DEFAULT_SERVICE_PORT = 8080;
-    public final static String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase-unsecure";
+    public static final int DEFAULT_THREAD_POOL_CORE_SIZE = 10;
+    public static final int DEFAULT_THREAD_POOL_MAX_SIZE = 20;
+    public static final long DEFAULT_THREAD_POOL_SHRINK_TIME = 60000L;
+    public static final String DEFAULT_SERVICE_HOST = "localhost";
+    public static final String DEFAULT_STORAGE_TYPE = "hbase";
+    public static final int DEFAULT_SERVICE_PORT = 8080;
+    public static final String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase-unsecure";
 
-    public final static String EAGLE_PROPS="eagleProps";
-    public final static String EAGLE_SERVICE = "eagleService";
-    public final static String HOST = "host";
-    public final static String PORT = "port";
-    public final static String USERNAME = "username";
-    public final static String PASSWORD = "password";
+    public static final String EAGLE_PROPS="eagleProps";
+    public static final String EAGLE_SERVICE = "eagleService";
+    public static final String HOST = "host";
+    public static final String PORT = "port";
+    public static final String USERNAME = "username";
+    public static final String PASSWORD = "password";
 
-    public final static String SITE = "site";
+    public static final String SITE = "site";
     @Deprecated
-    public final static String DATA_SOURCE = "dataSource";
-    public final static String APPLICATION = "application";
+    public static final String DATA_SOURCE = "dataSource";
+    public static final String APPLICATION = "application";
 
-    public final static String WEB_CONFIG = "web";
-    public final static String APP_CONFIG = "app";
-    public final static String CLASSIFICATION_CONFIG = "classification";
+    public static final String WEB_CONFIG = "web";
+    public static final String APP_CONFIG = "app";
+    public static final String CLASSIFICATION_CONFIG = "classification";
 
-    public final static String LOCAL_MODE = "local";
-    public final static String CLUSTER_MODE = "cluster";
+    public static final String LOCAL_MODE = "local";
+    public static final String CLUSTER_MODE = "cluster";
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigFactory.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigFactory.java b/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigFactory.java
index 0d73743..2bd144d 100755
--- a/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigFactory.java
+++ b/eagle-core/eagle-common/src/main/java/org/apache/eagle/common/config/EagleConfigFactory.java
@@ -31,53 +31,53 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 public class EagleConfigFactory implements EagleConfig {
-	private static final Logger LOG = LoggerFactory.getLogger(EagleConfigFactory.class);
+    private static final Logger LOG = LoggerFactory.getLogger(EagleConfigFactory.class);
 
-	private String env;
-	private String zkQuorum;
-	private String zkPort;
+    private String env;
+    private String zkQuorum;
+    private String zkPort;
 
     private Configuration hbaseConf;
-	private String eagleServiceHost;
-	private int eagleServicePort;
+    private String eagleServiceHost;
+    private int eagleServicePort;
     private String storageType;
     private Config config;
     private TimeZone timeZone;
 
     public boolean isCoprocessorEnabled() {
-		return isCoprocessorEnabled;
-	}
+        return isCoprocessorEnabled;
+    }
+
+    private boolean isCoprocessorEnabled;
+
+    private boolean tableNamePrefixedWithEnv;
 
-	private boolean isCoprocessorEnabled;
+    private HTablePool pool;
+    private int hbaseClientScanCacheSize = 1000;
 
-	private boolean tableNamePrefixedWithEnv;
+    private ThreadPoolExecutor executor = null;
 
-	private HTablePool pool;
-	private int hbaseClientScanCacheSize = 1000;
+    private static EagleConfigFactory manager = new EagleConfigFactory();
 
-	private ThreadPoolExecutor executor = null;
+    private EagleConfigFactory() {
+        init();
+        if (this.getStorageType() == null || this.getStorageType().equalsIgnoreCase("hbase")) {
+            this.pool = new HTablePool(this.hbaseConf, 10);
+        }
+    }
 
-	private static EagleConfigFactory manager = new EagleConfigFactory();
+    public static EagleConfig load() {
+        return manager;
+    }
 
-	private EagleConfigFactory(){
-		init();
-		if(this.getStorageType() == null || this.getStorageType().equalsIgnoreCase("hbase")) {
-			this.pool = new HTablePool(this.hbaseConf, 10);
-		}
-	}
-	
-	public static EagleConfig load(){
-		return manager;
-	}
-	
-	public HTableInterface getHTable(String tableName){
+    public HTableInterface getHTable(String tableName) {
         return pool.getTable(tableName);
     }
 
-    private String getString(Config config,String path,String defaultValue){
-        if(config.hasPath(path)){
+    private String getString(Config config, String path, String defaultValue) {
+        if (config.hasPath(path)) {
             return config.getString(path);
-        }else{
+        } else {
             return defaultValue;
         }
     }
@@ -90,93 +90,100 @@ public class EagleConfigFactory implements EagleConfig {
         return executor;
     }
 
-    private void init(){
+    private void init() {
         this.config = ConfigFactory.load();
-        this.timeZone = TimeZone.getTimeZone((config.hasPath(EagleConfigConstants.EAGLE_TIME_ZONE)? config.getString(EagleConfigConstants.EAGLE_TIME_ZONE): EagleConfigConstants.DEFAULT_EAGLE_TIME_ZONE));
-        this.env = config.hasPath(EagleConfigConstants.SERVICE_ENV) ? config.getString(EagleConfigConstants.SERVICE_ENV):"dev";
-		this.zkQuorum = config.hasPath(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_QUORUM) ? config.getString(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_QUORUM):null;
-		this.zkPort = config.hasPath(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT) ? config.getString(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT): null;
-        String zkZnodeParent = config.hasPath(EagleConfigConstants.SERVICE_ZOOKEEPER_ZNODE_PARENT)? config.getString(EagleConfigConstants.SERVICE_ZOOKEEPER_ZNODE_PARENT): EagleConfigConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT;
-		String clientIPCPoolSize = getString(config, EagleConfigConstants.SERVICE_HBASE_CLIENT_IPC_POOL_SIZE, "10");
-		this.hbaseConf = HBaseConfiguration.create();
-
-        if (this.zkQuorum != null)
+        this.timeZone = TimeZone.getTimeZone((config.hasPath(EagleConfigConstants.EAGLE_TIME_ZONE)
+            ? config.getString(EagleConfigConstants.EAGLE_TIME_ZONE) : EagleConfigConstants.DEFAULT_EAGLE_TIME_ZONE));
+        this.env = config.hasPath(EagleConfigConstants.SERVICE_ENV) ? config.getString(EagleConfigConstants.SERVICE_ENV) : "dev";
+        this.zkQuorum = config.hasPath(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_QUORUM)
+            ? config.getString(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_QUORUM) : null;
+        this.zkPort = config.hasPath(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT)
+            ? config.getString(EagleConfigConstants.SERVICE_HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT) : null;
+        final String zkZnodeParent = config.hasPath(EagleConfigConstants.SERVICE_ZOOKEEPER_ZNODE_PARENT)
+            ? config.getString(EagleConfigConstants.SERVICE_ZOOKEEPER_ZNODE_PARENT) : EagleConfigConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT;
+        String clientIPCPoolSize = getString(config, EagleConfigConstants.SERVICE_HBASE_CLIENT_IPC_POOL_SIZE, "10");
+        this.hbaseConf = HBaseConfiguration.create();
+
+        if (this.zkQuorum != null) {
             this.hbaseConf.set("hbase.zookeeper.quorum", this.zkQuorum);
+        }
 
-		if (this.zkPort != null)
+        if (this.zkPort != null) {
             this.hbaseConf.set("hbase.zookeeper.property.clientPort", this.zkPort);
+        }
 
-        if(zkZnodeParent != null)
+        if (zkZnodeParent != null) {
             this.hbaseConf.set("zookeeper.znode.parent", zkZnodeParent);
-        else
+        } else {
             this.hbaseConf.set("zookeeper.znode.parent", EagleConfigConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);
+        }
 
         this.hbaseConf.set("hbase.client.ipc.pool.size", clientIPCPoolSize);
 
-		this.eagleServiceHost = config.hasPath(EagleConfigConstants.SERVICE_HOST) ? config.getString(EagleConfigConstants.SERVICE_HOST) : EagleConfigConstants.DEFAULT_SERVICE_HOST;
+        this.eagleServiceHost = config.hasPath(EagleConfigConstants.SERVICE_HOST) ? config.getString(EagleConfigConstants.SERVICE_HOST) : EagleConfigConstants.DEFAULT_SERVICE_HOST;
         this.storageType = config.hasPath(EagleConfigConstants.SERVICE_STORAGE_TYPE) ? config.getString(EagleConfigConstants.SERVICE_STORAGE_TYPE) : EagleConfigConstants.DEFAULT_STORAGE_TYPE;
         this.isCoprocessorEnabled = config.hasPath(EagleConfigConstants.SERVICE_COPROCESSOR_ENABLED) && config.getBoolean(EagleConfigConstants.SERVICE_COPROCESSOR_ENABLED);
-		this.eagleServicePort = config.hasPath(EagleConfigConstants.SERVICE_PORT) ? config.getInt(EagleConfigConstants.SERVICE_PORT) : EagleConfigConstants.DEFAULT_SERVICE_PORT;
+        this.eagleServicePort = config.hasPath(EagleConfigConstants.SERVICE_PORT) ? config.getInt(EagleConfigConstants.SERVICE_PORT) : EagleConfigConstants.DEFAULT_SERVICE_PORT;
         this.tableNamePrefixedWithEnv = config.hasPath(EagleConfigConstants.SERVICE_TABLE_NAME_PREFIXED_WITH_ENVIRONMENT) && config.getBoolean(EagleConfigConstants.SERVICE_TABLE_NAME_PREFIXED_WITH_ENVIRONMENT);
-        this.hbaseClientScanCacheSize = config.hasPath(EagleConfigConstants.SERVICE_HBASE_CLIENT_SCAN_CACHE_SIZE)? config.getInt(EagleConfigConstants.SERVICE_HBASE_CLIENT_SCAN_CACHE_SIZE) : hbaseClientScanCacheSize;
+        this.hbaseClientScanCacheSize = config.hasPath(EagleConfigConstants.SERVICE_HBASE_CLIENT_SCAN_CACHE_SIZE) ? config.getInt(EagleConfigConstants.SERVICE_HBASE_CLIENT_SCAN_CACHE_SIZE) : hbaseClientScanCacheSize;
         // initilize eagle service thread pool for parallel execution of hbase scan etc.
-		int threadPoolCoreSize = config.hasPath(EagleConfigConstants.SERVICE_THREADPOOL_CORE_SIZE)? config.getInt(EagleConfigConstants.SERVICE_THREADPOOL_CORE_SIZE): EagleConfigConstants.DEFAULT_THREAD_POOL_CORE_SIZE;
-		int threadPoolMaxSize = config.hasPath(EagleConfigConstants.SERVICE_THREADPOOL_MAX_SIZE) ? config.getInt(EagleConfigConstants.SERVICE_THREADPOOL_MAX_SIZE) : EagleConfigConstants.DEFAULT_THREAD_POOL_MAX_SIZE;
-		long threadPoolShrinkTime = config.hasPath(EagleConfigConstants.SERVICE_THREADPOOL_SHRINK_SIZE) ? config.getLong(EagleConfigConstants.SERVICE_THREADPOOL_SHRINK_SIZE) : EagleConfigConstants.DEFAULT_THREAD_POOL_SHRINK_TIME;
-		this.isServiceAuditingEnabled = config.hasPath(EagleConfigConstants.SERVICE_AUDITING_ENABLED) && config.getBoolean(EagleConfigConstants.SERVICE_AUDITING_ENABLED);
-		
-		this.executor = new ThreadPoolExecutor(threadPoolCoreSize, threadPoolMaxSize, threadPoolShrinkTime, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-
-		LOG.info("Successfully initialized config");
-
-		if(LOG.isDebugEnabled()) {
-			if(this.isCoprocessorEnabled){
-				LOG.debug("Eagle HBase Coprocessor is enabled");
-			}else{
-				LOG.debug("Eagle HBase Coprocessor is disabled");
-			}
-		}
-	}
+        int threadPoolCoreSize = config.hasPath(EagleConfigConstants.SERVICE_THREADPOOL_CORE_SIZE) ? config.getInt(EagleConfigConstants.SERVICE_THREADPOOL_CORE_SIZE) : EagleConfigConstants.DEFAULT_THREAD_POOL_CORE_SIZE;
+        int threadPoolMaxSize = config.hasPath(EagleConfigConstants.SERVICE_THREADPOOL_MAX_SIZE) ? config.getInt(EagleConfigConstants.SERVICE_THREADPOOL_MAX_SIZE) : EagleConfigConstants.DEFAULT_THREAD_POOL_MAX_SIZE;
+        long threadPoolShrinkTime = config.hasPath(EagleConfigConstants.SERVICE_THREADPOOL_SHRINK_SIZE) ? config.getLong(EagleConfigConstants.SERVICE_THREADPOOL_SHRINK_SIZE) : EagleConfigConstants.DEFAULT_THREAD_POOL_SHRINK_TIME;
+        this.isServiceAuditingEnabled = config.hasPath(EagleConfigConstants.SERVICE_AUDITING_ENABLED) && config.getBoolean(EagleConfigConstants.SERVICE_AUDITING_ENABLED);
+
+        this.executor = new ThreadPoolExecutor(threadPoolCoreSize, threadPoolMaxSize, threadPoolShrinkTime, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
+
+        LOG.info("Successfully initialized config");
+
+        if (LOG.isDebugEnabled()) {
+            if (this.isCoprocessorEnabled) {
+                LOG.debug("Eagle HBase Coprocessor is enabled");
+            } else {
+                LOG.debug("Eagle HBase Coprocessor is disabled");
+            }
+        }
+    }
 
     @Override
-	public Configuration getHbaseConf() {
-		return hbaseConf;
-	}
+    public Configuration getHbaseConf() {
+        return hbaseConf;
+    }
 
     @Override
-	public String getZKQuorum(){
-		return this.zkQuorum;
+    public String getZKQuorum() {
+        return this.zkQuorum;
     }
 
     @Override
-	public String getZKPort(){
-		return this.zkPort;
-	}
+    public String getZKPort() {
+        return this.zkPort;
+    }
 
     @Override
-	public String getServiceHost() {
-		return eagleServiceHost;
-	}
+    public String getServiceHost() {
+        return eagleServiceHost;
+    }
 
     @Override
-	public int getServicePort() {
-		return eagleServicePort;
-	}
+    public int getServicePort() {
+        return eagleServicePort;
+    }
 
     @Override
-	public String getEnv() {
-		return env;
-	}
+    public String getEnv() {
+        return env;
+    }
 
     @Override
-	public boolean isTableNamePrefixedWithEnvironment(){
-		return this.tableNamePrefixedWithEnv;
-	}
+    public boolean isTableNamePrefixedWithEnvironment() {
+        return this.tableNamePrefixedWithEnv;
+    }
 
     @Override
-	public int getHBaseClientScanCacheSize(){
-		return this.hbaseClientScanCacheSize;
-	}
+    public int getHBaseClientScanCacheSize() {
+        return this.hbaseClientScanCacheSize;
+    }
 
     @Override
     public TimeZone getTimeZone() {
@@ -187,12 +194,12 @@ public class EagleConfigFactory implements EagleConfig {
     public Config getConfig() {
         return this.config;
     }
-    
+
     // added for jira EAGLE-47
     boolean isServiceAuditingEnabled;
-    
+
     @Override
-	public boolean isServiceAuditingEnabled() {
-		return isServiceAuditingEnabled;
-	}
+    public boolean isServiceAuditingEnabled() {
+        return isServiceAuditingEnabled;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-common/src/test/java/org/apache/eagle/common/config/TestEagleConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-common/src/test/java/org/apache/eagle/common/config/TestEagleConfig.java b/eagle-core/eagle-common/src/test/java/org/apache/eagle/common/config/TestEagleConfig.java
index 892db0c..7e96433 100644
--- a/eagle-core/eagle-common/src/test/java/org/apache/eagle/common/config/TestEagleConfig.java
+++ b/eagle-core/eagle-common/src/test/java/org/apache/eagle/common/config/TestEagleConfig.java
@@ -17,27 +17,26 @@
 package org.apache.eagle.common.config;
 
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 
+import java.util.TimeZone;
+
 /**
  * @since 9/22/15
  */
 public class TestEagleConfig {
-    private EagleConfig config;
-
-    @Before
-    public void setUp(){
-        System.setProperty("config.resource","test-service-config.conf");
-        config = EagleConfigFactory.load();
-    }
 
     @Test
-    public void testInit(){
+    public void testLoadConfig(){
+        System.setProperty("config.resource", "application-test.conf");
+        EagleConfig config = EagleConfigFactory.load();
         Assert.assertEquals("test",config.getEnv());
-        Assert.assertEquals("localhost",config.getServiceHost());
-        Assert.assertEquals(9090,config.getServicePort());
+        Assert.assertEquals("localhost-for-test",config.getZKQuorum());
+        Assert.assertEquals("1234",config.getZKPort());
         Assert.assertEquals("hbase",config.getStorageType());
-        Assert.assertEquals(false,config.isCoprocessorEnabled());
+        Assert.assertEquals(true,config.isCoprocessorEnabled());
+        Assert.assertEquals(9090,config.getServicePort());
+        Assert.assertEquals("localhost",config.getServiceHost());
+        Assert.assertEquals(TimeZone.getTimeZone("UTC"),config.getTimeZone());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-common/src/test/resources/application-test.conf
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-common/src/test/resources/application-test.conf b/eagle-core/eagle-common/src/test/resources/application-test.conf
new file mode 100644
index 0000000..587ec90
--- /dev/null
+++ b/eagle-core/eagle-common/src/test/resources/application-test.conf
@@ -0,0 +1,33 @@
+# 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
+#
+#    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.
+
+
+service {
+	timezone = "UTC"
+	env = "test"
+	host = "localhost"
+	port = 9090
+}
+
+storage{
+	type = "hbase"
+	hbase {
+		tableNamePrefixedwithEnvironment = true
+		zookeeperQuorum = "localhost-for-test"
+		zookeeperPropertyClientPort = 1234
+		zookeeperZnodeParent = "/hbase-for-test"
+		coprocessorEnabled = true
+	}
+}
\ No newline at end of file



[3/3] incubator-eagle git commit: [EAGLE-533] Fix storage configuration and remove AppJUnitRunner

Posted by ha...@apache.org.
[EAGLE-533] Fix storage configuration and remove AppJUnitRunner

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

* Fix storage configuration
* Remove `AppJUnitRunner` to avoid junit dependency conflict during runtime.
* Add `ServerDebug` tool

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

Closes #427 from haoch/FixStorageConfig.


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

Branch: refs/heads/master
Commit: c752ed868cbb7d93306e66f890c291c621411a33
Parents: 3db5cdb
Author: Hao Chen <ha...@apache.org>
Authored: Thu Sep 8 20:24:23 2016 +0800
Committer: Hao Chen <ha...@apache.org>
Committed: Thu Sep 8 20:24:23 2016 +0800

----------------------------------------------------------------------
 .gitignore                                      |   5 +-
 eagle-core/eagle-app/eagle-app-base/pom.xml     |   7 +-
 .../apache/eagle/app/AbstractApplication.java   |   6 +-
 .../java/org/apache/eagle/app/Application.java  |  33 ++-
 .../org/apache/eagle/app/ApplicationCLI.java    |  14 +-
 .../apache/eagle/app/ApplicationLifecycle.java  |  20 +-
 .../org/apache/eagle/app/ApplicationTool.java   |  12 +-
 .../org/apache/eagle/app/StormApplication.java  |   4 +-
 .../app/config/ApplicationProviderConfig.java   |  12 +-
 .../config/ApplicationProviderDescConfig.java   |  31 ++-
 .../app/config/ApplicationProvidersConfig.java  |   2 +-
 .../app/environment/AbstractEnvironment.java    |  34 +--
 .../eagle/app/environment/Environment.java      |   7 +-
 .../eagle/app/environment/ExecutionRuntime.java |  27 +-
 .../environment/ExecutionRuntimeManager.java    |  49 ++--
 .../environment/ExecutionRuntimeProvider.java   |   4 +-
 .../app/environment/impl/SparkEnvironment.java  |   6 +-
 .../environment/impl/SparkExecutionRuntime.java |   2 +-
 .../app/environment/impl/StormEnvironment.java  |   4 +-
 .../environment/impl/StormExecutionRuntime.java |  10 +-
 .../app/module/ApplicationExtensionLoader.java  |  14 +-
 .../app/module/ApplicationGuiceModule.java      |  14 +-
 .../eagle/app/resource/ApplicationResource.java |  62 ++---
 .../eagle/app/service/ApplicationContext.java   |  47 ++--
 .../service/ApplicationManagementService.java   |   4 +
 .../app/service/ApplicationOperations.java      |  83 ++++---
 .../app/service/ApplicationProviderLoader.java  |  33 +--
 .../app/service/ApplicationProviderService.java |   3 +-
 .../impl/ApplicationManagementServiceImpl.java  |  65 +++--
 .../impl/ApplicationProviderConfigLoader.java   |  90 +++----
 .../impl/ApplicationProviderSPILoader.java      |  28 +--
 .../impl/ApplicationProviderServiceImpl.java    |  41 ++--
 .../eagle/app/sink/DefaultStreamSinkConfig.java |   4 +-
 .../eagle/app/sink/FlattenEventMapper.java      |  16 +-
 .../apache/eagle/app/sink/KafkaStreamSink.java  |  18 +-
 .../eagle/app/sink/LoggingStreamSink.java       |   8 +-
 .../apache/eagle/app/sink/StormStreamSink.java  |  30 +--
 .../eagle/app/sink/StreamEventMapper.java       |   6 +-
 .../eagle/app/sink/StreamSinkProvider.java      |  18 +-
 .../app/spi/AbstractApplicationProvider.java    |  26 +-
 .../eagle/app/spi/ApplicationProvider.java      |   8 +-
 .../apache/eagle/app/test/AppJUnitRunner.java   |  87 -------
 .../eagle/app/test/ApplicationSimulator.java    |  34 +--
 .../app/test/ApplicationSimulatorImpl.java      |  38 +--
 .../eagle/app/test/ApplicationTestBase.java     |  12 +-
 .../app/test/ApplicationTestGuiceModule.java    |  11 +-
 .../eagle/app/utils/DynamicJarPathFinder.java   |  37 +--
 eagle-core/eagle-app/pom.xml                    |  13 +
 .../apache/eagle/common/config/EagleConfig.java |  18 +-
 .../common/config/EagleConfigConstants.java     |  76 +++---
 .../eagle/common/config/EagleConfigFactory.java | 187 +++++++-------
 .../eagle/common/config/TestEagleConfig.java    |  23 +-
 .../src/test/resources/application-test.conf    |  33 +++
 .../src/test/resources/test-service-config.conf |  31 ---
 .../src/test/resources/application.conf         |  25 +-
 .../eagle/storage/DataStorageManager.java       |  36 +--
 .../storage/spi/DataStorageServiceLoader.java   |  35 +--
 .../src/test/resources/application.conf         |  23 +-
 .../integrationtest/CoprocessorITSuite.java     | 246 -------------------
 .../integrationtest/CoprocessorJarUtils.java    |  41 ----
 .../integrationtest/CoprocessorToolITSuite.java |  92 -------
 .../storage/hbase/it/CoprocessorITSuite.java    | 246 +++++++++++++++++++
 .../storage/hbase/it/CoprocessorJarUtils.java   |  41 ++++
 .../hbase/it/CoprocessorToolITSuite.java        |  92 +++++++
 .../src/test/resources/application-it.conf      |  27 ++
 .../src/test/resources/application-sandbox.conf |  23 --
 .../src/test/resources/application.conf         |  20 +-
 .../eagle/storage/jdbc/JdbcConstants.java       |  20 +-
 .../src/test/resources/application-derby.conf   |  21 +-
 .../src/test/resources/application-mysql.conf   |  22 +-
 .../src/test/resources/application.conf         |  20 +-
 .../test/resources/unittest.application.conf    |  24 +-
 .../example/ExampleApplicationProviderTest.java |   6 +-
 .../eagle/app/jpm/JPMApplicationTest.java       |   6 +-
 .../MRHistoryJobApplicationProviderTest.java    |  11 +-
 .../MRRunningJobApplicationProviderTest.java    |   6 +-
 .../auditlog/MapRFSAuditLogAppProviderTest.java |   6 +-
 .../src/main/conf/application.conf              | 138 +++++++----
 .../src/main/resources/application.conf         |  35 ++-
 .../org/apache/eagle/server/ServerDebug.java    |  49 ++++
 80 files changed, 1456 insertions(+), 1362 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index f6d9234..3a925f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -77,10 +77,11 @@ logs/
 .DS_Store
 
 *.cache-tests
-application-local.conf
+**/application-local.conf
+**/application-debug.conf
 
 *.orig
 **/*.pyc
 
 site/
-**/*.db
+**/*.db
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/pom.xml b/eagle-core/eagle-app/eagle-app-base/pom.xml
index 12b056c..9b0b29e 100644
--- a/eagle-core/eagle-app/eagle-app-base/pom.xml
+++ b/eagle-core/eagle-app/eagle-app-base/pom.xml
@@ -53,11 +53,6 @@
             <artifactId>slf4j-log4j12</artifactId>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>com.google.inject.extensions</groupId>
             <artifactId>guice-servlet</artifactId>
         </dependency>
@@ -100,7 +95,7 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <scope>compile</scope>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/AbstractApplication.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/AbstractApplication.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/AbstractApplication.java
index a80ab11..8943df3 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/AbstractApplication.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/AbstractApplication.java
@@ -16,13 +16,13 @@
  */
 package org.apache.eagle.app;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.environment.Environment;
 import org.apache.eagle.app.environment.ExecutionRuntimeManager;
+import com.typesafe.config.Config;
 
-public abstract class AbstractApplication<Env extends Environment,Proc> implements Application<Env,Proc>, ApplicationTool {
+public abstract class AbstractApplication<E extends Environment, P> implements Application<E, P>, ApplicationTool {
     @Override
     public void run(Config config) {
-        ExecutionRuntimeManager.getInstance().getRuntime(getEnvironmentType(),config).start(this,config);
+        ExecutionRuntimeManager.getInstance().getRuntime(getEnvironmentType(), config).start(this, config);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/Application.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/Application.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/Application.java
index a64869e..84398b1 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/Application.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/Application.java
@@ -16,41 +16,40 @@
  */
 package org.apache.eagle.app;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.environment.Environment;
+import com.typesafe.config.Config;
 
 import java.io.Serializable;
 
 /**
- * Application Execution Interface
- *
+ * Application Execution Interface.
  * <h1>Design Principle</h1>
  * <ul>
- *  <li>Easy to develop and extend </li>
- *  <li>Easy to test and run locally</li>
- *  <li>Easy to manage lifecycle through framework</li>
+ * <li>Easy to develop and extend </li>
+ * <li>Easy to test and run locally</li>
+ * <li>Easy to manage lifecycle through framework</li>
  * </ul>
  *
- * @param <Proc>
- * @param <Env>
+ * @param <P>
+ * @param <E>
  */
-public interface Application <
-    Env extends Environment,        // Application Environment
-    Proc                            // Application Process
-> extends Serializable {
+public interface Application<
+    E extends Environment,        // Application Environment
+    P                            // Application Process
+    > extends Serializable {
     /**
-     * Execute with application configuration
+     * Execute with application configuration.
      *
-     * @param config application configuration
+     * @param config      application configuration
      * @param environment execution environment
      * @return execution process
      */
-    Proc execute(Config config, Env environment);
+    P execute(Config config, E environment);
 
     /**
-     * Execution Environment type
+     * Execution Environment type.
      *
      * @return application environment type
      */
-    Class<? extends Env> getEnvironmentType();
+    Class<? extends E> getEnvironmentType();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationCLI.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationCLI.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationCLI.java
index bee2bed..d9b0e44 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationCLI.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationCLI.java
@@ -17,23 +17,17 @@
 package org.apache.eagle.app;
 
 /**
- * Usage: java org.apache.eagle.app.ApplicationCLI [APPLICATION_CLASS] [APPLICATION_OPTIONS: -D Key=Value]
+ * Usage: java org.apache.eagle.app.ApplicationCLI [APPLICATION_CLASS] [APPLICATION_OPTIONS: -D Key=Value].
  */
 public class ApplicationCLI {
-    /**
-     * @param args
-     * @throws ClassNotFoundException
-     * @throws IllegalAccessException
-     * @throws InstantiationException
-     */
     public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
-        if(args.length < 1){
-            System.err.println("Usage: java "+ApplicationCLI.class.getName()+" [APPLICATION_CLASS] [APPLICATION_OPTIONS: -D Key=Value]");
+        if (args.length < 1) {
+            System.err.println("Usage: java " + ApplicationCLI.class.getName() + " [APPLICATION_CLASS] [APPLICATION_OPTIONS: -D Key=Value]");
             System.exit(1);
         } else {
             String appClassName = args[0];
             Class<? extends ApplicationTool> appClass = (Class<? extends ApplicationTool>) Class.forName(appClassName);
-            String[] appArgs = new String[args.length-1];
+            String[] appArgs = new String[args.length - 1];
             System.arraycopy(args, 1, appArgs, 0, args.length - 1);
             appClass.newInstance().run(appArgs);
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationLifecycle.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationLifecycle.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationLifecycle.java
index 9e3d992..94b6195 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationLifecycle.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationLifecycle.java
@@ -18,22 +18,26 @@ package org.apache.eagle.app;
 
 public interface ApplicationLifecycle {
     /**
-     * on application installed
+     * on application installed.
      */
-    default void onInstall(){}
+    default void onInstall() {
+    }
 
     /**
-     * on application uninstalled
+     * on application uninstalled.
      */
-    default void onUninstall(){}
+    default void onUninstall() {
+    }
 
     /**
-     *
+     * onStart.
      */
-    default void onStart(){}
+    default void onStart() {
+    }
 
     /**
-     *
+     * onStop.
      */
-    default void onStop(){}
+    default void onStop() {
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationTool.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationTool.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationTool.java
index 2b1448e..bb3bcfe 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationTool.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/ApplicationTool.java
@@ -16,18 +16,18 @@
  */
 package org.apache.eagle.app;
 
+import org.apache.eagle.common.config.ConfigOptionParser;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 import org.apache.commons.cli.ParseException;
-import org.apache.eagle.common.config.ConfigOptionParser;
 
 public interface ApplicationTool {
     /**
-     * Run application through CLI
+     * Run application through CLI.
      *
      * @param args application arguments
      */
-    default void run(String[] args){
+    default void run(String[] args) {
         try {
             run(new ConfigOptionParser().load(args));
         } catch (ParseException e) {
@@ -36,13 +36,9 @@ public interface ApplicationTool {
         }
     }
 
-    /**
-     *
-     * @param config
-     */
     void run(Config config);
 
-    default void run(){
+    default void run() {
         run(ConfigFactory.load());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StormApplication.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StormApplication.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StormApplication.java
index 821e5cd..7e70cde 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StormApplication.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StormApplication.java
@@ -16,10 +16,10 @@
  */
 package org.apache.eagle.app;
 
-import backtype.storm.generated.StormTopology;
 import org.apache.eagle.app.environment.impl.StormEnvironment;
+import backtype.storm.generated.StormTopology;
 
-public abstract class StormApplication extends AbstractApplication<StormEnvironment,StormTopology>{
+public abstract class StormApplication extends AbstractApplication<StormEnvironment, StormTopology> {
     @Override
     public Class<? extends StormEnvironment> getEnvironmentType() {
         return StormEnvironment.class;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderConfig.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderConfig.java
index e3cd9e7..b787885 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderConfig.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderConfig.java
@@ -23,18 +23,22 @@ public class ApplicationProviderConfig {
     private String jarPath;
     private String className;
 
-    public ApplicationProviderConfig(){}
-    public ApplicationProviderConfig(String jarPath, Class<? extends ApplicationProvider> className){
+    public ApplicationProviderConfig() {
+    }
+
+    public ApplicationProviderConfig(String jarPath, Class<? extends ApplicationProvider> className) {
         this.jarPath = jarPath;
         this.className = className.getCanonicalName();
     }
-    public ApplicationProviderConfig(String jarPath, String className){
+
+    public ApplicationProviderConfig(String jarPath, String className) {
         this.jarPath = jarPath;
         this.className = className;
     }
+
     @Override
     public String toString() {
-        return String.format("ApplicationProviderConfig[jarPath=%s,className=%s]",this.getJarPath(),this.getClassName());
+        return String.format("ApplicationProviderConfig[jarPath=%s,className=%s]", this.getJarPath(), this.getClassName());
     }
 
     public String getJarPath() {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
index 77ad848..7f0dbb0 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
@@ -18,17 +18,16 @@ package org.apache.eagle.app.config;
 
 
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
-import org.apache.eagle.app.spi.AbstractApplicationProvider;
 import org.apache.eagle.metadata.model.ApplicationDocs;
 import org.apache.eagle.metadata.model.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.InputStream;
+import java.util.List;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.annotation.*;
-import java.io.InputStream;
-import java.util.List;
 
 @XmlRootElement(name = "application")
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -42,7 +41,7 @@ public class ApplicationProviderDescConfig {
     private Configuration configuration;
     private ApplicationDocs docs;
 
-    @XmlElementWrapper(name="streams")
+    @XmlElementWrapper(name = "streams")
     @XmlElement(name = "stream")
     private List<StreamDefinition> streams;
 
@@ -93,7 +92,7 @@ public class ApplicationProviderDescConfig {
     @Override
     public String toString() {
         return String.format("ApplicationDesc [type=%s, name=%s, version=%s, appClass=%s, viewPath=%s, configuration= %s properties, description=%s",
-                getType(),getName(),getVersion(),getAppClass(), getViewPath(), getConfiguration() == null ? 0: getConfiguration().size(),getDescription());
+            getType(), getName(), getVersion(), getAppClass(), getViewPath(), getConfiguration() == null ? 0 : getConfiguration().size(), getDescription());
     }
 
     public void setConfiguration(Configuration configuration) {
@@ -109,25 +108,25 @@ public class ApplicationProviderDescConfig {
         this.streams = streams;
     }
 
-    private final static Logger LOG = LoggerFactory.getLogger(ApplicationProviderDescConfig.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ApplicationProviderDescConfig.class);
 
-    public static ApplicationProviderDescConfig loadFromXML(Class<?> classLoader, String configXmlFile){
+    public static ApplicationProviderDescConfig loadFromXML(Class<?> classLoader, String configXmlFile) {
         try {
             JAXBContext jc = JAXBContext.newInstance(ApplicationProviderDescConfig.class);
             Unmarshaller unmarshaller = jc.createUnmarshaller();
-//            InputStream is = ApplicationProviderDescConfig.class.getResourceAsStream(configXmlFile);
+            // InputStream is = ApplicationProviderDescConfig.class.getResourceAsStream(configXmlFile);
             InputStream is = classLoader.getResourceAsStream(configXmlFile);
-            if(is == null){
-                is = ApplicationProviderDescConfig.class.getResourceAsStream("/"+configXmlFile);
+            if (is == null) {
+                is = ApplicationProviderDescConfig.class.getResourceAsStream("/" + configXmlFile);
             }
-            if(is == null){
-                LOG.error("Application descriptor configuration {} is not found",configXmlFile);
-                throw new IllegalStateException("Application descriptor configuration "+configXmlFile+" is not found");
+            if (is == null) {
+                LOG.error("Application descriptor configuration {} is not found", configXmlFile);
+                throw new IllegalStateException("Application descriptor configuration " + configXmlFile + " is not found");
             }
             return (ApplicationProviderDescConfig) unmarshaller.unmarshal(is);
-        }catch (Exception ex){
-            LOG.error("Failed to load application descriptor configuration: {}",configXmlFile,ex);
-            throw new RuntimeException("Failed to load application descriptor configuration: "+configXmlFile,ex);
+        } catch (Exception ex) {
+            LOG.error("Failed to load application descriptor configuration: {}", configXmlFile, ex);
+            throw new RuntimeException("Failed to load application descriptor configuration: " + configXmlFile, ex);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProvidersConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProvidersConfig.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProvidersConfig.java
index f5aaa9f..903a15f 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProvidersConfig.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProvidersConfig.java
@@ -16,11 +16,11 @@
  */
 package org.apache.eagle.app.config;
 
+import java.util.List;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
-import java.util.List;
 
 @XmlRootElement(name = "providers")
 @XmlAccessorType(XmlAccessType.FIELD)

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
index 6f7fd97..45de7b9 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
@@ -16,47 +16,47 @@
  */
 package org.apache.eagle.app.environment;
 
-import com.typesafe.config.Config;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.eagle.app.sink.KafkaStreamSink;
 import org.apache.eagle.app.sink.StreamSinkProvider;
+import com.typesafe.config.Config;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public abstract class AbstractEnvironment implements Environment {
     private final Config config;
     private final StreamSinkProvider sinkProvider;
-    private final static String APPLICATIONS_SINK_TYPE_PROPS_KEY = "application.sink.provider";
-    private final static String DEFAULT_APPLICATIONS_SINK_TYPE = KafkaStreamSink.Provider.class.getName();
-    private final static Logger LOGGER = LoggerFactory.getLogger(AbstractEnvironment.class);
+    private static final String APPLICATIONS_SINK_TYPE_PROPS_KEY = "application.sink.provider";
+    private static final String DEFAULT_APPLICATIONS_SINK_TYPE = KafkaStreamSink.Provider.class.getName();
+    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractEnvironment.class);
 
-    public AbstractEnvironment(Config config){
+    public AbstractEnvironment(Config config) {
         this.config = config;
         this.sinkProvider = loadStreamSinkProvider();
     }
 
-    private StreamSinkProvider loadStreamSinkProvider(){
-        String sinkProviderClassName = config.hasPath(APPLICATIONS_SINK_TYPE_PROPS_KEY) ?
-                config.getString(APPLICATIONS_SINK_TYPE_PROPS_KEY) : DEFAULT_APPLICATIONS_SINK_TYPE;
+    private StreamSinkProvider loadStreamSinkProvider() {
+        String sinkProviderClassName = config.hasPath(APPLICATIONS_SINK_TYPE_PROPS_KEY)
+            ? config.getString(APPLICATIONS_SINK_TYPE_PROPS_KEY) : DEFAULT_APPLICATIONS_SINK_TYPE;
         try {
             Class<?> sinkProviderClass = Class.forName(sinkProviderClassName);
-            if(!StreamSinkProvider.class.isAssignableFrom(sinkProviderClass)){
-                throw new IllegalStateException(sinkProviderClassName+ "is not assignable from "+StreamSinkProvider.class.getCanonicalName());
+            if (!StreamSinkProvider.class.isAssignableFrom(sinkProviderClass)) {
+                throw new IllegalStateException(sinkProviderClassName + "is not assignable from " + StreamSinkProvider.class.getCanonicalName());
             }
-            StreamSinkProvider instance =  (StreamSinkProvider) sinkProviderClass.newInstance();
-            LOGGER.info("Loaded {}",instance);
+            StreamSinkProvider instance = (StreamSinkProvider) sinkProviderClass.newInstance();
+            LOGGER.info("Loaded {}", instance);
             return instance;
         } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
-            LOGGER.error(e.getMessage(),e);
-            throw new IllegalStateException(e.getMessage(),e.getCause());
+            LOGGER.error(e.getMessage(), e);
+            throw new IllegalStateException(e.getMessage(), e.getCause());
         }
     }
 
     @Override
     public int hashCode() {
         return new HashCodeBuilder()
-                .append(this.getClass())
-                .append(this.config()).build();
+            .append(this.getClass())
+            .append(this.config()).build();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/Environment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/Environment.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/Environment.java
index 56ce14a..9569c5f 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/Environment.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/Environment.java
@@ -16,15 +16,16 @@
  */
 package org.apache.eagle.app.environment;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.sink.StreamSinkProvider;
+import com.typesafe.config.Config;
 
 import java.io.Serializable;
 
 /**
- * Execution Environment Context
+ * Execution Environment Context.
  */
-public interface Environment extends Serializable{
+public interface Environment extends Serializable {
     Config config();
+
     StreamSinkProvider streamSink();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntime.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntime.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntime.java
index 2cc5e78..e9a6366 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntime.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntime.java
@@ -16,35 +16,44 @@
  */
 package org.apache.eagle.app.environment;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.Application;
+import com.typesafe.config.Config;
 
 /**
- * Execution Runtime Adapter
+ * Execution Runtime Adapter.
  */
-public interface ExecutionRuntime<Env extends Environment, Proc> {
+public interface ExecutionRuntime<E extends Environment, P> {
+
     /**
-     * @param environment
+     * Prepare runtime.
+     *
+     * @param environment environment context
      */
-    void prepare(Env environment);
+    void prepare(E environment);
 
-    Env environment();
+    E environment();
 
     /**
+     * Start application process.
+     *
      * @param executor
      * @param config
      */
-    void start(Application<Env, Proc> executor, Config config);
+    void start(Application<E, P> executor, Config config);
 
     /**
+     * Stop application process.
+     *
      * @param executor
      * @param config
      */
-    void stop(Application<Env, Proc> executor, Config config);
+    void stop(Application<E, P> executor, Config config);
 
     /**
+     * Check application process status.
+     *
      * @param executor
      * @param config
      */
-    void status(Application<Env, Proc> executor, Config config);
+    void status(Application<E, P> executor, Config config);
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeManager.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeManager.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeManager.java
index 9804d48..fc1e632 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeManager.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeManager.java
@@ -16,12 +16,12 @@
  */
 package org.apache.eagle.app.environment;
 
-import com.google.common.base.Preconditions;
-import com.typesafe.config.Config;
 import org.apache.eagle.app.environment.impl.SparkEnvironment;
 import org.apache.eagle.app.environment.impl.SparkExecutionRuntime;
 import org.apache.eagle.app.environment.impl.StormEnvironment;
 import org.apache.eagle.app.environment.impl.StormExecutionRuntime;
+import com.google.common.base.Preconditions;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,46 +30,47 @@ import java.util.HashMap;
 import java.util.Map;
 
 /**
- * Manage execution runtime corresponding to Environment
+ * Manage execution runtime corresponding to Environment.
  *
  * @see Environment
  * @see ExecutionRuntime
  */
 public class ExecutionRuntimeManager {
-    private final static ExecutionRuntimeManager INSTANCE = new ExecutionRuntimeManager();
-    private final static Logger LOGGER = LoggerFactory.getLogger(ExecutionRuntimeManager.class);
+    private static final ExecutionRuntimeManager INSTANCE = new ExecutionRuntimeManager();
+    private static final Logger LOGGER = LoggerFactory.getLogger(ExecutionRuntimeManager.class);
 
     static {
-        getInstance().register(StormEnvironment.class,new StormExecutionRuntime.Provider());
-        getInstance().register(SparkEnvironment.class,new SparkExecutionRuntime.Provider());
+        getInstance().register(StormEnvironment.class, new StormExecutionRuntime.Provider());
+        getInstance().register(SparkEnvironment.class, new SparkExecutionRuntime.Provider());
     }
 
     private final Map<Class<? extends Environment>, ExecutionRuntimeProvider> executionRuntimeProviders;
     private final Map<Environment, ExecutionRuntime> executionRuntimeCache;
 
-    private ExecutionRuntimeManager(){
+    private ExecutionRuntimeManager() {
         executionRuntimeProviders = new HashMap<>();
         executionRuntimeCache = new HashMap<>();
     }
 
-    public static ExecutionRuntimeManager getInstance(){
+    public static ExecutionRuntimeManager getInstance() {
         return INSTANCE;
     }
 
-    public <E extends Environment,P> ExecutionRuntime getRuntime(E environment) {
-        Preconditions.checkNotNull(environment,"Failed to create execution runtime as environment is null");
-        if(executionRuntimeCache.containsKey(environment))
+    public <E extends Environment, P> ExecutionRuntime getRuntime(E environment) {
+        Preconditions.checkNotNull(environment, "Failed to create execution runtime as environment is null");
+        if (executionRuntimeCache.containsKey(environment)) {
             return executionRuntimeCache.get(environment);
+        }
 
-        if(executionRuntimeProviders.containsKey(environment.getClass())){
-            ExecutionRuntime<E,P> runtime = ((ExecutionRuntimeProvider<E,P>)executionRuntimeProviders.get(environment.getClass())).get();
+        if (executionRuntimeProviders.containsKey(environment.getClass())) {
+            ExecutionRuntime<E, P> runtime = ((ExecutionRuntimeProvider<E, P>) executionRuntimeProviders.get(environment.getClass())).get();
             runtime.prepare(environment);
-            executionRuntimeCache.put(environment,runtime);
-            LOGGER.info("Created new execution runtime {} for environment: {}",runtime,environment);
+            executionRuntimeCache.put(environment, runtime);
+            LOGGER.info("Created new execution runtime {} for environment: {}", runtime, environment);
             return runtime;
         } else {
-            LOGGER.error("No matched execution runtime found for environment: "+environment);
-            throw new IllegalStateException("No matched execution runtime found for environment: "+environment);
+            LOGGER.error("No matched execution runtime found for environment: " + environment);
+            throw new IllegalStateException("No matched execution runtime found for environment: " + environment);
         }
     }
 
@@ -78,15 +79,15 @@ public class ExecutionRuntimeManager {
             E environment = environmentClass.getConstructor(Config.class).newInstance(config);
             return getRuntime(environment);
         } catch (InstantiationException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
-            LOGGER.error("Failed to create environment instance of type: "+environmentClass,e);
-            throw new RuntimeException("Failed to create environment instance of type: "+environmentClass,e);
+            LOGGER.error("Failed to create environment instance of type: " + environmentClass, e);
+            throw new RuntimeException("Failed to create environment instance of type: " + environmentClass, e);
         }
     }
 
-    public void register(Class<? extends Environment> appSuperClass,ExecutionRuntimeProvider executionRuntimeProvider){
-        if(executionRuntimeProviders.containsKey(appSuperClass)){
-            throw new IllegalStateException("Duplicated application type registered: "+appSuperClass.getCanonicalName());
+    public void register(Class<? extends Environment> appSuperClass, ExecutionRuntimeProvider executionRuntimeProvider) {
+        if (executionRuntimeProviders.containsKey(appSuperClass)) {
+            throw new IllegalStateException("Duplicated application type registered: " + appSuperClass.getCanonicalName());
         }
-        executionRuntimeProviders.put(appSuperClass,executionRuntimeProvider);
+        executionRuntimeProviders.put(appSuperClass, executionRuntimeProvider);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeProvider.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeProvider.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeProvider.java
index 5728eb5..44be0f0 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeProvider.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/ExecutionRuntimeProvider.java
@@ -16,6 +16,6 @@
  */
 package org.apache.eagle.app.environment;
 
-public interface ExecutionRuntimeProvider<Env extends Environment, Proc>{
-    ExecutionRuntime<Env,Proc> get();
+public interface ExecutionRuntimeProvider<E extends Environment, P> {
+    ExecutionRuntime<E, P> get();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkEnvironment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkEnvironment.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkEnvironment.java
index 07113db..1f9d6fa 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkEnvironment.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkEnvironment.java
@@ -16,14 +16,14 @@
  */
 package org.apache.eagle.app.environment.impl;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.environment.AbstractEnvironment;
+import com.typesafe.config.Config;
 
 /**
- * Storm Execution Environment Context
+ * Storm Execution Environment Context.
  */
 public class SparkEnvironment extends AbstractEnvironment {
-    public SparkEnvironment(Config config){
+    public SparkEnvironment(Config config) {
         super(config);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkExecutionRuntime.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkExecutionRuntime.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkExecutionRuntime.java
index 23aaa67..e2fc7d5 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkExecutionRuntime.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/SparkExecutionRuntime.java
@@ -16,10 +16,10 @@
  */
 package org.apache.eagle.app.environment.impl;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.Application;
 import org.apache.eagle.app.environment.ExecutionRuntime;
 import org.apache.eagle.app.environment.ExecutionRuntimeProvider;
+import com.typesafe.config.Config;
 
 public class SparkExecutionRuntime implements ExecutionRuntime<SparkEnvironment,Object> {
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormEnvironment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormEnvironment.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormEnvironment.java
index 6715a2b..18675a6 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormEnvironment.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormEnvironment.java
@@ -16,12 +16,12 @@
  */
 package org.apache.eagle.app.environment.impl;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.environment.AbstractEnvironment;
 import org.apache.eagle.app.sink.StormStreamSink;
+import com.typesafe.config.Config;
 
 /**
- * Storm Execution Environment Context
+ * Storm Execution Environment Context.
  */
 public class StormEnvironment extends AbstractEnvironment {
     public StormEnvironment(Config envConfig) {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
index 99dbed8..7acfc62 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
@@ -16,17 +16,17 @@
  */
 package org.apache.eagle.app.environment.impl;
 
+import org.apache.eagle.app.Application;
+import org.apache.eagle.app.environment.ExecutionRuntime;
+import org.apache.eagle.app.environment.ExecutionRuntimeProvider;
+import org.apache.eagle.app.utils.DynamicJarPathFinder;
+import org.apache.eagle.metadata.model.ApplicationEntity;
 import backtype.storm.Config;
 import backtype.storm.LocalCluster;
 import backtype.storm.StormSubmitter;
 import backtype.storm.generated.*;
 import backtype.storm.utils.NimbusClient;
 import com.google.common.base.Preconditions;
-import org.apache.eagle.app.Application;
-import org.apache.eagle.app.environment.ExecutionRuntime;
-import org.apache.eagle.app.environment.ExecutionRuntimeProvider;
-import org.apache.eagle.app.utils.DynamicJarPathFinder;
-import org.apache.eagle.metadata.model.ApplicationEntity;
 import org.apache.thrift7.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationExtensionLoader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationExtensionLoader.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationExtensionLoader.java
index 762b5fe..a74b6f2 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationExtensionLoader.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationExtensionLoader.java
@@ -16,22 +16,22 @@
  */
 package org.apache.eagle.app.module;
 
-import com.google.inject.Guice;
-import com.google.inject.Module;
-import com.google.inject.Stage;
 import org.apache.eagle.app.service.ApplicationProviderService;
 import org.apache.eagle.common.module.ModuleRegistry;
 import org.apache.eagle.common.module.ModuleRegistryImpl;
+import com.google.inject.Guice;
+import com.google.inject.Module;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class ApplicationExtensionLoader {
-    private final static Logger LOGGER = LoggerFactory.getLogger(ApplicationExtensionLoader.class);
-    public static ModuleRegistry load(Module ... context){
+    private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationExtensionLoader.class);
+
+    public static ModuleRegistry load(Module... context) {
         LOGGER.warn("Loading application extension modules");
         ModuleRegistry registry = new ModuleRegistryImpl();
-        Guice.createInjector(context).getInstance(ApplicationProviderService.class).getProviders().forEach((provider)->{
-            LOGGER.warn("Registering modules from {}",provider);
+        Guice.createInjector(context).getInstance(ApplicationProviderService.class).getProviders().forEach((provider) -> {
+            LOGGER.warn("Registering modules from {}", provider);
             provider.register(registry);
         });
         return registry;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationGuiceModule.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationGuiceModule.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationGuiceModule.java
index 757a428..d4a176d 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationGuiceModule.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/module/ApplicationGuiceModule.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,18 +16,18 @@
  */
 package org.apache.eagle.app.module;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
-import com.google.inject.util.Providers;
 import org.apache.eagle.app.service.ApplicationManagementService;
-import org.apache.eagle.app.service.impl.ApplicationManagementServiceImpl;
 import org.apache.eagle.app.service.ApplicationProviderService;
+import org.apache.eagle.app.service.impl.ApplicationManagementServiceImpl;
 import org.apache.eagle.metadata.service.ApplicationDescService;
-
+import com.google.inject.AbstractModule;
+import com.google.inject.Singleton;
+import com.google.inject.util.Providers;
 
 public class ApplicationGuiceModule extends AbstractModule {
     private ApplicationProviderService appProviderInst;
-    public ApplicationGuiceModule(ApplicationProviderService appProviderInst){
+
+    public ApplicationGuiceModule(ApplicationProviderService appProviderInst) {
         this.appProviderInst = appProviderInst;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/resource/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/resource/ApplicationResource.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/resource/ApplicationResource.java
index 12d2d2d..713ced5 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/resource/ApplicationResource.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/resource/ApplicationResource.java
@@ -17,7 +17,6 @@
 package org.apache.eagle.app.resource;
 
 
-import com.google.inject.Inject;
 import org.apache.eagle.app.service.ApplicationManagementService;
 import org.apache.eagle.app.service.ApplicationOperations;
 import org.apache.eagle.app.service.ApplicationProviderService;
@@ -25,10 +24,11 @@ import org.apache.eagle.metadata.model.ApplicationDesc;
 import org.apache.eagle.metadata.model.ApplicationEntity;
 import org.apache.eagle.metadata.resource.RESTResponse;
 import org.apache.eagle.metadata.service.ApplicationEntityService;
+import com.google.inject.Inject;
 
+import java.util.Collection;
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
-import java.util.Collection;
 
 @Path("/apps")
 public class ApplicationResource {
@@ -38,9 +38,9 @@ public class ApplicationResource {
 
     @Inject
     public ApplicationResource(
-            ApplicationProviderService providerService,
-            ApplicationManagementService applicationManagementService,
-            ApplicationEntityService entityService){
+        ApplicationProviderService providerService,
+        ApplicationManagementService applicationManagementService,
+        ApplicationEntityService entityService) {
         this.providerService = providerService;
         this.applicationManagementService = applicationManagementService;
         this.entityService = entityService;
@@ -49,22 +49,22 @@ public class ApplicationResource {
     @GET
     @Path("/providers")
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<Collection<ApplicationDesc>> getApplicationDescs(){
+    public RESTResponse<Collection<ApplicationDesc>> getApplicationDescs() {
         return RESTResponse.async(providerService::getApplicationDescs).get();
     }
 
     @GET
     @Path("/providers/{type}")
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<ApplicationDesc> getApplicationDescByType(@PathParam("type") String type){
-        return RESTResponse.async(()->providerService.getApplicationDescByType(type)).get();
+    public RESTResponse<ApplicationDesc> getApplicationDescByType(@PathParam("type") String type) {
+        return RESTResponse.async(() -> providerService.getApplicationDescByType(type)).get();
     }
 
     @PUT
     @Path("/providers/reload")
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<Collection<ApplicationDesc>> reloadApplicationDescs(){
-        return RESTResponse.<Collection<ApplicationDesc>>async((response)-> {
+    public RESTResponse<Collection<ApplicationDesc>> reloadApplicationDescs() {
+        return RESTResponse.<Collection<ApplicationDesc>>async((response) -> {
             providerService.reload();
             response.message("Successfully reload application providers");
             response.data(providerService.getApplicationDescs());
@@ -73,8 +73,8 @@ public class ApplicationResource {
 
     @GET
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<Collection<ApplicationEntity>> getApplicationEntities(@QueryParam("siteId") String siteId){
-        return RESTResponse.async(()-> {
+    public RESTResponse<Collection<ApplicationEntity>> getApplicationEntities(@QueryParam("siteId") String siteId) {
+        return RESTResponse.async(() -> {
             if (siteId == null) {
                 return entityService.findAll();
             } else {
@@ -86,8 +86,8 @@ public class ApplicationResource {
     @GET
     @Path("/{appUuid}")
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<ApplicationEntity> getApplicationEntityByUUID(@PathParam("appUuid") String appUuid){
-        return RESTResponse.async(()->entityService.getByUUID(appUuid)).get();
+    public RESTResponse<ApplicationEntity> getApplicationEntityByUUID(@PathParam("appUuid") String appUuid) {
+        return RESTResponse.async(() -> entityService.getByUUID(appUuid)).get();
     }
 
     /**
@@ -96,16 +96,16 @@ public class ApplicationResource {
      * {
      *      uuid: APPLICATION_UUID
      * }
-     * </pre>
+     * </pre>.
      */
     @POST
     @Path("/install")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<ApplicationEntity> installApplication(ApplicationOperations.InstallOperation operation){
-        return RESTResponse.<ApplicationEntity>async((response)-> {
+    public RESTResponse<ApplicationEntity> installApplication(ApplicationOperations.InstallOperation operation) {
+        return RESTResponse.<ApplicationEntity>async((response) -> {
             ApplicationEntity entity = applicationManagementService.install(operation);
-            response.message("Successfully installed application "+operation.getAppType()+" onto site "+operation.getSiteId());
+            response.message("Successfully installed application " + operation.getAppType() + " onto site " + operation.getSiteId());
             response.data(entity);
         }).get();
     }
@@ -116,7 +116,7 @@ public class ApplicationResource {
      * {
      *      uuid: APPLICATION_UUID
      * }
-     * </pre>
+     * </pre>.
      *
      * @param operation
      */
@@ -124,10 +124,10 @@ public class ApplicationResource {
     @Path("/uninstall")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<Void> uninstallApplication(ApplicationOperations.UninstallOperation operation){
-        return RESTResponse.<Void>async((response)-> {
+    public RESTResponse<Void> uninstallApplication(ApplicationOperations.UninstallOperation operation) {
+        return RESTResponse.<Void>async((response) -> {
             ApplicationEntity entity = applicationManagementService.uninstall(operation);
-            response.success(true).message("Successfully uninstalled application "+entity.getUuid());
+            response.success(true).message("Successfully uninstalled application " + entity.getUuid());
         }).get();
     }
 
@@ -137,17 +137,18 @@ public class ApplicationResource {
      * {
      *      uuid: APPLICATION_UUID
      * }
-     *operation
+     * </pre>
+     * operation.
      * @param operation
      */
     @POST
     @Path("/start")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<Void> startApplication(ApplicationOperations.StartOperation operation){
-        return RESTResponse.<Void>async((response)-> {
+    public RESTResponse<Void> startApplication(ApplicationOperations.StartOperation operation) {
+        return RESTResponse.<Void>async((response) -> {
             ApplicationEntity entity = applicationManagementService.start(operation);
-            response.success(true).message("Successfully started application "+entity.getUuid());
+            response.success(true).message("Successfully started application " + entity.getUuid());
         }).get();
     }
 
@@ -157,17 +158,18 @@ public class ApplicationResource {
      * {
      *      uuid: APPLICATION_UUID
      * }
-     * </pre>
+     * </pre>.
+     *
      * @param operation
      */
     @POST
     @Path("/stop")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public RESTResponse<Void> stopApplication(ApplicationOperations.StopOperation operation){
-        return RESTResponse.<Void>async((response)-> {
+    public RESTResponse<Void> stopApplication(ApplicationOperations.StopOperation operation) {
+        return RESTResponse.<Void>async((response) -> {
             ApplicationEntity entity = applicationManagementService.stop(operation);
-            response.success(true).message("Successfully stopped application "+entity.getUuid());
+            response.success(true).message("Successfully stopped application " + entity.getUuid());
         }).get();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
index 1a80b78..f7f895e 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
@@ -16,9 +16,6 @@
  */
 package org.apache.eagle.app.service;
 
-import com.google.common.base.Preconditions;
-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.Tuple2StreamMetadata;
 import org.apache.eagle.alert.engine.coordinator.StreamDefinition;
@@ -33,18 +30,23 @@ import org.apache.eagle.app.sink.KafkaStreamSinkConfig;
 import org.apache.eagle.metadata.model.ApplicationEntity;
 import org.apache.eagle.metadata.model.StreamDesc;
 import org.apache.eagle.metadata.model.StreamSinkConfig;
+import com.google.common.base.Preconditions;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 import java.util.stream.Collectors;
 
 /**
  * Managed Application Interface: org.apache.eagle.app.service.ApplicationContext
- *
  * <ul>
- *     <li>Application Metadata Entity (Persistence): org.apache.eagle.metadata.model.ApplicationEntity</li>
- *     <li>Application Processing Logic (Execution): org.apache.eagle.app.Application</li>
- *     <li>Application Lifecycle Listener (Installation): org.apache.eagle.app.ApplicationLifecycle</li>
+ * <li>Application Metadata Entity (Persistence): org.apache.eagle.metadata.model.ApplicationEntity</li>
+ * <li>Application Processing Logic (Execution): org.apache.eagle.app.Application</li>
+ * <li>Application Lifecycle Listener (Installation): org.apache.eagle.app.ApplicationLifecycle</li>
  * </ul>
  */
 public class ApplicationContext implements Serializable, ApplicationLifecycle {
@@ -55,17 +57,17 @@ public class ApplicationContext implements Serializable, ApplicationLifecycle {
     private final IMetadataDao alertMetadataService;
 
     /**
-     * @param metadata ApplicationEntity
-     * @param application Application
+     * @param metadata    ApplicationEntity.
+     * @param application Application.
      */
-    public ApplicationContext(Application application, ApplicationEntity metadata, Config envConfig, IMetadataDao alertMetadataService){
-        Preconditions.checkNotNull(application,"Application is null");
-        Preconditions.checkNotNull(metadata,"ApplicationEntity is null");
+    public ApplicationContext(Application application, ApplicationEntity metadata, Config envConfig, IMetadataDao alertMetadataService) {
+        Preconditions.checkNotNull(application, "Application is null");
+        Preconditions.checkNotNull(metadata, "ApplicationEntity is null");
         this.application = application;
         this.metadata = metadata;
-        this.runtime = ExecutionRuntimeManager.getInstance().getRuntime(application.getEnvironmentType(),envConfig);
-        Map<String,Object> executionConfig = metadata.getConfiguration();
-        if(executionConfig == null) {
+        this.runtime = ExecutionRuntimeManager.getInstance().getRuntime(application.getEnvironmentType(), envConfig);
+        Map<String, Object> executionConfig = metadata.getConfiguration();
+        if (executionConfig == null) {
             executionConfig = Collections.emptyMap();
         }
 
@@ -80,7 +82,7 @@ public class ApplicationContext implements Serializable, ApplicationLifecycle {
 
     @Override
     public void onInstall() {
-        if(metadata.getDescriptor().getStreams()!=null) {
+        if (metadata.getDescriptor().getStreams() != null) {
             List<StreamDesc> streamDescCollection = metadata.getDescriptor().getStreams().stream().map((streamDefinition -> {
                 StreamSinkConfig streamSinkConfig = this.runtime.environment().streamSink().getSinkConfig(streamDefinition.getStreamId(), this.config);
                 StreamDesc streamDesc = new StreamDesc();
@@ -92,7 +94,7 @@ public class ApplicationContext implements Serializable, ApplicationLifecycle {
             metadata.setStreams(streamDescCollection);
 
             // iterate each stream descriptor and create alert datasource for each
-            for(StreamDesc streamDesc : streamDescCollection) {
+            for (StreamDesc streamDesc : streamDescCollection) {
                 // only take care of Kafka sink
                 if (streamDesc.getSink() instanceof KafkaStreamSinkConfig) {
                     KafkaStreamSinkConfig kafkaCfg = (KafkaStreamSinkConfig) streamDesc.getSink();
@@ -121,10 +123,11 @@ public class ApplicationContext implements Serializable, ApplicationLifecycle {
     @Override
     public void onUninstall() {
         // we should remove alert data source and stream definition while we do uninstall
-        if(metadata.getStreams() == null)
+        if (metadata.getStreams() == null) {
             return;
+        }
         // iterate each stream descriptor and create alert datasource for each
-        for(StreamDesc streamDesc : metadata.getStreams()) {
+        for (StreamDesc streamDesc : metadata.getStreams()) {
             alertMetadataService.removeDataSource(metadata.getAppId());
             alertMetadataService.removeStream(streamDesc.getStreamId());
         }
@@ -132,12 +135,12 @@ public class ApplicationContext implements Serializable, ApplicationLifecycle {
 
     @Override
     public void onStart() {
-        this.runtime.start(this.application,this.config);
+        this.runtime.start(this.application, this.config);
     }
 
     @Override
     public void onStop() {
-        this.runtime.stop(this.application,this.config);
+        this.runtime.stop(this.application, this.config);
     }
 
     public ApplicationEntity getMetadata() {

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationManagementService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationManagementService.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationManagementService.java
index 82c441a..b93bb77 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationManagementService.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationManagementService.java
@@ -21,6 +21,7 @@ import org.apache.eagle.metadata.model.ApplicationEntity;
 
 public interface ApplicationManagementService {
     /**
+     * Install application.
      *
      * @param operation
      * @return
@@ -28,6 +29,7 @@ public interface ApplicationManagementService {
     ApplicationEntity install(ApplicationOperations.InstallOperation operation) throws EntityNotFoundException;
 
     /**
+     * Uninstall application.
      *
      * @param operation
      * @return
@@ -35,6 +37,7 @@ public interface ApplicationManagementService {
     ApplicationEntity uninstall(ApplicationOperations.UninstallOperation operation);
 
     /**
+     * Start application.
      *
      * @param operation
      * @return
@@ -42,6 +45,7 @@ public interface ApplicationManagementService {
     ApplicationEntity start(ApplicationOperations.StartOperation operation);
 
     /**
+     * Stop application.
      *
      * @param operation
      * @return

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationOperations.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationOperations.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationOperations.java
index 4815a90..8717f83 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationOperations.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationOperations.java
@@ -26,29 +26,33 @@ public final class ApplicationOperations {
         String getType();
     }
 
-    private final static String INSTALL = "INSTALL";
-    private final static String UNINSTALL = "UNINSTALL";
-    private final static String START = "START";
-    private final static String STOP = "STOP";
+    private static final String INSTALL = "INSTALL";
+    private static final String UNINSTALL = "UNINSTALL";
+    private static final String START = "START";
+    private static final String STOP = "STOP";
 
-    public static class InstallOperation implements Operation{
+    public static class InstallOperation implements Operation {
         private String siteId;
         private String appType;
         private ApplicationEntity.Mode mode = ApplicationEntity.Mode.LOCAL;
         private String jarPath;
-        private Map<String,Object> configuration;
+        private Map<String, Object> configuration;
 
-        public InstallOperation(){}
-        public InstallOperation(String siteId,String appType){
+        public InstallOperation() {
+        }
+
+        public InstallOperation(String siteId, String appType) {
             this.setSiteId(siteId);
             this.setAppType(appType);
         }
-        public InstallOperation(String siteId,String appType,ApplicationEntity.Mode mode){
+
+        public InstallOperation(String siteId, String appType, ApplicationEntity.Mode mode) {
             this.setSiteId(siteId);
             this.setAppType(appType);
             this.setMode(mode);
         }
-        public InstallOperation(String siteId,String appType,ApplicationEntity.Mode mode,Map<String,Object> configuration){
+
+        public InstallOperation(String siteId, String appType, ApplicationEntity.Mode mode, Map<String, Object> configuration) {
             this.setSiteId(siteId);
             this.setAppType(appType);
             this.setMode(mode);
@@ -56,17 +60,20 @@ public final class ApplicationOperations {
         }
 
         public String getSiteId() {
-           return siteId;
-       }
+            return siteId;
+        }
+
         public void setSiteId(String siteId) {
-           this.siteId = siteId;
-       }
+            this.siteId = siteId;
+        }
+
         public String getAppType() {
-           return appType;
-       }
+            return appType;
+        }
+
         public void setAppType(String appType) {
-           this.appType = appType;
-       }
+            this.appType = appType;
+        }
 
         public Map<String, Object> getConfiguration() {
             return configuration;
@@ -98,14 +105,18 @@ public final class ApplicationOperations {
         }
     }
 
-    public static class UninstallOperation implements Operation{
+    public static class UninstallOperation implements Operation {
         private String uuid;
         private String appId;
-        public UninstallOperation(){}
-        public UninstallOperation(String uuid){
+
+        public UninstallOperation() {
+        }
+
+        public UninstallOperation(String uuid) {
             this.setUuid(uuid);
         }
-        public UninstallOperation(String uuid,String appId){
+
+        public UninstallOperation(String uuid, String appId) {
             this.setUuid(uuid);
             this.setAppId(appId);
         }
@@ -113,6 +124,7 @@ public final class ApplicationOperations {
         public String getUuid() {
             return uuid;
         }
+
         public void setUuid(String uuid) {
             this.uuid = uuid;
         }
@@ -131,20 +143,26 @@ public final class ApplicationOperations {
         }
     }
 
-    public static class StartOperation implements Operation{
+    public static class StartOperation implements Operation {
         private String uuid;
         private String appId;
-        public StartOperation(){}
-        public StartOperation(String uuid){
+
+        public StartOperation() {
+        }
+
+        public StartOperation(String uuid) {
             this.setUuid(uuid);
         }
-        public StartOperation(String uuid,String appId){
+
+        public StartOperation(String uuid, String appId) {
             this.setUuid(uuid);
             this.setAppId(appId);
         }
+
         public String getUuid() {
             return uuid;
         }
+
         public void setUuid(String uuid) {
             this.uuid = uuid;
         }
@@ -163,21 +181,26 @@ public final class ApplicationOperations {
         }
     }
 
-    public static class StopOperation implements Operation{
+    public static class StopOperation implements Operation {
         private String uuid;
         private String appId;
 
-        public StopOperation(){}
-        public StopOperation(String uuid){
+        public StopOperation() {
+        }
+
+        public StopOperation(String uuid) {
             this.setUuid(uuid);
         }
-        public StopOperation(String uuid,String appId){
+
+        public StopOperation(String uuid, String appId) {
             this.setUuid(uuid);
             this.setAppId(appId);
         }
+
         public String getUuid() {
             return uuid;
         }
+
         public void setUuid(String uuid) {
             this.uuid = uuid;
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderLoader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderLoader.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderLoader.java
index 0c895a3..d526bd4 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderLoader.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderLoader.java
@@ -16,10 +16,10 @@
  */
 package org.apache.eagle.app.service;
 
-import com.typesafe.config.Config;
 import org.apache.eagle.app.service.impl.ApplicationProviderConfigLoader;
 import org.apache.eagle.app.service.impl.ApplicationProviderSPILoader;
 import org.apache.eagle.app.spi.ApplicationProvider;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -29,8 +29,8 @@ import java.util.Map;
 
 public abstract class ApplicationProviderLoader {
     private final Config config;
-    private final Map<String,ApplicationProvider> providers;
-    private final static Logger LOG = LoggerFactory.getLogger(ApplicationProviderLoader.class);
+    private final Map<String, ApplicationProvider> providers;
+    private static final Logger LOG = LoggerFactory.getLogger(ApplicationProviderLoader.class);
 
     public ApplicationProviderLoader(Config config) {
         this.config = config;
@@ -43,33 +43,34 @@ public abstract class ApplicationProviderLoader {
         return config;
     }
 
-    protected void registerProvider(ApplicationProvider provider){
-        if(providers.containsKey(provider.getApplicationDesc().getType())){
-            throw new RuntimeException("Duplicated APPLICATION_TYPE: "+provider.getApplicationDesc().getType()+", was already registered by provider: "+providers.get(provider.getApplicationDesc().getType()));
+    protected void registerProvider(ApplicationProvider provider) {
+        if (providers.containsKey(provider.getApplicationDesc().getType())) {
+            throw new RuntimeException("Duplicated APPLICATION_TYPE: " + provider.getApplicationDesc().getType()
+                + ", was already registered by provider: " + providers.get(provider.getApplicationDesc().getType()));
         }
-        providers.put(provider.getApplicationDesc().getType(),provider);
-        LOG.info("Initialized application provider: {}",provider);
+        providers.put(provider.getApplicationDesc().getType(), provider);
+        LOG.info("Initialized application provider: {}", provider);
     }
 
-    public Collection<ApplicationProvider> getProviders(){
+    public Collection<ApplicationProvider> getProviders() {
         return providers.values();
     }
 
     public ApplicationProvider<?> getApplicationProviderByType(String type) {
-        if(providers.containsKey(type)) {
+        if (providers.containsKey(type)) {
             return providers.get(type);
-        }else{
-            throw new IllegalArgumentException("Unknown Application Type: "+type);
+        } else {
+            throw new IllegalArgumentException("Unknown Application Type: " + type);
         }
     }
 
-    public void reset(){
+    public void reset() {
         providers.clear();
     }
 
-    public static String getDefaultAppProviderLoader(){
-        if(ApplicationProviderConfigLoader
-                .appProviderConfExists(ApplicationProviderConfigLoader.DEFAULT_APPLICATIONS_CONFIG_FILE)){
+    public static String getDefaultAppProviderLoader() {
+        if (ApplicationProviderConfigLoader
+            .appProviderConfExists(ApplicationProviderConfigLoader.DEFAULT_APPLICATIONS_CONFIG_FILE)) {
             return ApplicationProviderConfigLoader.class.getCanonicalName();
         } else {
             return ApplicationProviderSPILoader.class.getCanonicalName();

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderService.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderService.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderService.java
index 52dfb5c..71e7eb0 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderService.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationProviderService.java
@@ -19,13 +19,14 @@ package org.apache.eagle.app.service;
 
 import org.apache.eagle.app.Application;
 import org.apache.eagle.app.spi.ApplicationProvider;
-import org.apache.eagle.app.config.ApplicationProviderConfig;
 import org.apache.eagle.metadata.service.ApplicationDescService;
 
 import java.util.Collection;
 
 public interface ApplicationProviderService extends ApplicationDescService {
     void reload();
+
     Collection<ApplicationProvider> getProviders();
+
     <T extends Application> ApplicationProvider<T> getApplicationProviderByType(String type);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c752ed86/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationManagementServiceImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationManagementServiceImpl.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationManagementServiceImpl.java
index c355a10..14abbc3 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationManagementServiceImpl.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/impl/ApplicationManagementServiceImpl.java
@@ -16,15 +16,10 @@
  */
 package org.apache.eagle.app.service.impl;
 
-import com.google.common.base.Preconditions;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
 import org.apache.eagle.alert.metadata.IMetadataDao;
 import org.apache.eagle.app.service.ApplicationContext;
-import org.apache.eagle.app.service.ApplicationOperations;
 import org.apache.eagle.app.service.ApplicationManagementService;
+import org.apache.eagle.app.service.ApplicationOperations;
 import org.apache.eagle.app.service.ApplicationProviderService;
 import org.apache.eagle.app.spi.ApplicationProvider;
 import org.apache.eagle.metadata.exceptions.EntityNotFoundException;
@@ -34,6 +29,10 @@ import org.apache.eagle.metadata.model.Property;
 import org.apache.eagle.metadata.model.SiteEntity;
 import org.apache.eagle.metadata.service.ApplicationEntityService;
 import org.apache.eagle.metadata.service.SiteEntityService;
+import com.google.common.base.Preconditions;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -48,15 +47,15 @@ public class ApplicationManagementServiceImpl implements ApplicationManagementSe
     private final ApplicationEntityService applicationEntityService;
     private final IMetadataDao alertMetadataService;
     private final Config config;
-    private final static Logger LOGGER = LoggerFactory.getLogger(ApplicationManagementServiceImpl.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationManagementServiceImpl.class);
 
     @Inject
     public ApplicationManagementServiceImpl(
-            Config config,
-            SiteEntityService siteEntityService,
-            ApplicationProviderService applicationProviderService,
-            ApplicationEntityService applicationEntityService,
-            IMetadataDao alertMetadataService){
+        Config config,
+        SiteEntityService siteEntityService,
+        ApplicationProviderService applicationProviderService,
+        ApplicationEntityService applicationEntityService,
+        IMetadataDao alertMetadataService) {
         this.config = config;
         this.siteEntityService = siteEntityService;
         this.applicationProviderService = applicationProviderService;
@@ -66,15 +65,15 @@ public class ApplicationManagementServiceImpl implements ApplicationManagementSe
 
     @Override
     public ApplicationEntity install(ApplicationOperations.InstallOperation operation) throws EntityNotFoundException {
-        Preconditions.checkNotNull(operation.getSiteId(),"siteId is null");
-        Preconditions.checkNotNull(operation.getAppType(),"appType is null");
-        if(operation.getMode().equals(ApplicationEntity.Mode.CLUSTER)){
-            Preconditions.checkNotNull(operation.getJarPath(),"jarPath is null when mode is CLUSTER");
+        Preconditions.checkNotNull(operation.getSiteId(), "siteId is null");
+        Preconditions.checkNotNull(operation.getAppType(), "appType is null");
+        if (operation.getMode().equals(ApplicationEntity.Mode.CLUSTER)) {
+            Preconditions.checkNotNull(operation.getJarPath(), "jarPath is null when mode is CLUSTER");
         }
         SiteEntity siteEntity = siteEntityService.getBySiteId(operation.getSiteId());
-        Preconditions.checkNotNull(siteEntity,"Site with ID: "+operation.getSiteId()+" is not found");
+        Preconditions.checkNotNull(siteEntity, "Site with ID: " + operation.getSiteId() + " is not found");
         ApplicationDesc appDesc = applicationProviderService.getApplicationDescByType(operation.getAppType());
-        Preconditions.checkNotNull("Application with TYPE: "+operation.getAppType()+" is not found");
+        Preconditions.checkNotNull("Application with TYPE: " + operation.getAppType() + " is not found");
         ApplicationEntity applicationEntity = new ApplicationEntity();
         applicationEntity.setDescriptor(appDesc);
         applicationEntity.setSite(siteEntity);
@@ -92,31 +91,31 @@ public class ApplicationManagementServiceImpl implements ApplicationManagementSe
         ApplicationProvider provider = applicationProviderService.getApplicationProviderByType(operation.getAppType());
 
         List<Property> propertyList = provider.getApplicationDesc().getConfiguration().getProperties();
-        for(Property p : propertyList){
+        for (Property p : propertyList) {
             appConfig.put(p.getName(), p.getValue());
         }
-        if(operation.getConfiguration() != null) {
+        if (operation.getConfiguration() != null) {
             appConfig.putAll(operation.getConfiguration());
         }
         applicationEntity.setConfiguration(appConfig);
         ApplicationContext applicationContext = new ApplicationContext(
-                applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
-                applicationEntity,config, alertMetadataService);
+            applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
+            applicationEntity, config, alertMetadataService);
         applicationContext.onInstall();
         return applicationEntityService.create(applicationEntity);
     }
 
     @Override
     public ApplicationEntity uninstall(ApplicationOperations.UninstallOperation operation) {
-        ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(),operation.getAppId());
+        ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(), operation.getAppId());
         ApplicationContext applicationContext = new ApplicationContext(
-                applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
-                applicationEntity,config, alertMetadataService);
+            applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
+            applicationEntity, config, alertMetadataService);
         // TODO: Check status, skip stop if already STOPPED
         try {
             applicationContext.onStop();
-        }catch (Throwable throwable){
-            LOGGER.error(throwable.getMessage(),throwable);
+        } catch (Throwable throwable) {
+            LOGGER.error(throwable.getMessage(), throwable);
         }
         applicationContext.onUninstall();
         return applicationEntityService.delete(applicationEntity);
@@ -124,20 +123,20 @@ public class ApplicationManagementServiceImpl implements ApplicationManagementSe
 
     @Override
     public ApplicationEntity start(ApplicationOperations.StartOperation operation) {
-        ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(),operation.getAppId());
+        ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(), operation.getAppId());
         ApplicationContext applicationContext = new ApplicationContext(
-                applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
-                applicationEntity,config, alertMetadataService);
+            applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
+            applicationEntity, config, alertMetadataService);
         applicationContext.onStart();
         return applicationEntity;
     }
 
     @Override
     public ApplicationEntity stop(ApplicationOperations.StopOperation operation) {
-        ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(),operation.getAppId());
+        ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(), operation.getAppId());
         ApplicationContext applicationContext = new ApplicationContext(
-                applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
-                applicationEntity,config, alertMetadataService);
+            applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(),
+            applicationEntity, config, alertMetadataService);
         applicationContext.onStop();
         return applicationEntity;
     }