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 2015/11/19 11:47:33 UTC

[26/55] [abbrv] [partial] incubator-eagle git commit: [EAGLE-46] Rename package name as "org.apache.eagle"

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/client/TestJackson.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/client/TestJackson.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/client/TestJackson.java
deleted file mode 100644
index 941635d..0000000
--- a/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/client/TestJackson.java
+++ /dev/null
@@ -1,63 +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 eagle.service.client;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Assert;
-
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.junit.Test;
-
-// http://wiki.fasterxml.com/JacksonPolymorphicDeserialization
-public class TestJackson {
-
-	@Test
-	public void testBase() throws JsonGenerationException, JsonMappingException, IOException {
-		List<Base> objs = new ArrayList<Base>();
-		ClassA a = new ClassA();
-		a.setA(1);
-		ClassB b = new ClassB();
-		b.setB("2");
-		
-		objs.add(a);
-		objs.add(b);
-		
-		ObjectMapper om = new ObjectMapper();
-		om.enableDefaultTyping();
-//		om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-		String value = om.writeValueAsString(objs);
-		
-		System.out.println("value = " + value);
-		
-		@SuppressWarnings("rawtypes")
-		List result = om.readValue(value, ArrayList.class);
-		System.out.println("size = " + result.size());
-		Object obj1 = result.get(0);
-		Object obj2 = result.get(1);
-		
-		Assert.assertEquals("ClassA", obj1.getClass().getSimpleName());
-		Assert.assertEquals(1, ((ClassA)obj1).getA());
-		Assert.assertEquals("ClassB", obj2.getClass().getSimpleName());
-		Assert.assertEquals("2", ((ClassB)obj2).getB());
-		
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonMarshalling.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonMarshalling.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonMarshalling.java
deleted file mode 100644
index b9c3f41..0000000
--- a/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonMarshalling.java
+++ /dev/null
@@ -1,149 +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 eagle.service.jackson;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.Assert;
-
-import org.codehaus.jackson.JsonFactory;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TestJacksonMarshalling {
-	private static Logger LOG = LoggerFactory.getLogger(TestJacksonMarshalling.class);
-
-	
-	
-	@Test
-	public void testJSonArrayMarshalling(){
-		String[] array = {"cluster", "datacenter", "rack", "hostname"};
-		JsonFactory factory = new JsonFactory(); 
-	    ObjectMapper mapper = new ObjectMapper(factory);
-	    String result = null;
-	    try{
-	    	result = mapper.writeValueAsString(array);
-	    }catch(Exception ex){
-	    	LOG.error("Cannot marshall", ex);
-	    	Assert.fail("cannot marshall an String array");
-	    }
-	    Assert.assertEquals("[\"cluster\",\"datacenter\",\"rack\",\"hostname\"]", result);
-	}
-	
-
-	static class Pojo{
-		private String field1;
-		private String field2;
-		public String getField1() {
-			return field1;
-		}
-		public void setField1(String field1) {
-			this.field1 = field1;
-		}
-		public String getField2() {
-			return field2;
-		}
-		public void setField2(String field2) {
-			this.field2 = field2;
-		}
-	}
-	
-	@Test
-	public void testPojoMarshalling(){
-		Pojo p = new Pojo();
-		p.setField1("field1");
-		p.setField2("field2");
-		
-		JsonFactory factory = new JsonFactory(); 
-	    ObjectMapper mapper = new ObjectMapper(factory);
-	    String result = null;
-	    try{
-	    	result = mapper.writeValueAsString(p);
-	    }catch(Exception ex){
-	    	LOG.error("Cannot marshall", ex);
-	    	Assert.fail("Cannot marshall a Pojo");
-	    }
-	    System.out.println(result);
-	    Assert.assertEquals("{\"field1\":\"field1\",\"field2\":\"field2\"}", result);
-	}
-	
-	@Test
-	public void testPojoArrayMashalling(){
-		Pojo[] ps = new Pojo[2];
-		ps[0] = new Pojo();
-		ps[0].setField1("0_field1");
-		ps[0].setField2("0_field2");
-		ps[1] = new Pojo();
-		ps[1].setField1("1_field1");
-		ps[1].setField2("1_field2");
-		
-		JsonFactory factory = new JsonFactory(); 
-	    ObjectMapper mapper = new ObjectMapper(factory);
-	    String result = null;
-	    try{
-	    	result = mapper.writeValueAsString(ps);
-	    }catch(Exception ex){
-	    	LOG.error("Cannot marshall", ex);
-	    	Assert.fail("Cannot marshall a Pojo array");
-	    }
-	    System.out.println(result);
-	    Assert.assertEquals("[{\"field1\":\"0_field1\",\"field2\":\"0_field2\"},{\"field1\":\"1_field1\",\"field2\":\"1_field2\"}]", result);
-	}
-	
-	@Test
-	public void testComplexMapMarshalling(){
-		Map<List<String>, String> map = new HashMap<List<String>, String>();
-		map.put(Arrays.asList("cluster1","dc1"), "123");
-		map.put(Arrays.asList("cluster1","dc1"), "456");
-		
-		JsonFactory factory = new JsonFactory(); 
-	    ObjectMapper mapper = new ObjectMapper(factory);
-	    String result = null;
-	    try{
-	    	result = mapper.writeValueAsString(map);
-	    }catch(Exception ex){
-	    	LOG.error("Cannot marshall", ex);
-	    	Assert.fail("Cannot marshall a complex map");
-	    }
-	    System.out.println(result);
-	}
-	
-	@Test
-	public void testMapMapMarshalling(){
-		Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
-		Map<String, String> childmap1 = new HashMap<String, String>();
-		childmap1.put("dc1", "123");
-		childmap1.put("dc1", "456");
-		map.put("cluster1", childmap1);
-		
-		JsonFactory factory = new JsonFactory(); 
-	    ObjectMapper mapper = new ObjectMapper(factory);
-	    String result = null;
-	    try{
-	    	result = mapper.writeValueAsString(map);
-	    }catch(Exception ex){
-	    	LOG.error("Cannot marshall", ex);
-	    	Assert.fail("Cannot marshall a complex map");
-	    }
-	    System.out.println(result);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonUnmashalling.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonUnmashalling.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonUnmashalling.java
deleted file mode 100644
index dc16905..0000000
--- a/eagle-core/eagle-query/eagle-client-base/src/test/java/eagle/service/jackson/TestJacksonUnmashalling.java
+++ /dev/null
@@ -1,149 +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 eagle.service.jackson;
-
-import java.io.File;
-import java.util.Map;
-
-import junit.framework.Assert;
-
-import org.codehaus.jackson.JsonFactory;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TestJacksonUnmashalling {
-	private static Logger LOG = LoggerFactory.getLogger(TestJacksonUnmashalling.class);
-	private static File arrayJson;
-	private static File mapJson;
-	private static File pojoJson;
-	private static File pojoArrayJson;
-	@SuppressWarnings("unused")
-	private static File complexPojoJson;
-	
-	@BeforeClass
-	public static void prepare(){ 
-		try{
-			arrayJson = new File(TestJacksonUnmashalling.class.getResource("/arrayJson.txt").getPath());
-			mapJson = new File(TestJacksonUnmashalling.class.getResource("/mapJson.txt").getPath());
-			pojoJson = new File(TestJacksonUnmashalling.class.getResource("/pojoJson.txt").getPath());
-			pojoArrayJson = new File(TestJacksonUnmashalling.class.getResource("/pojoArrayJson.txt").getPath());
-			complexPojoJson = new File(TestJacksonUnmashalling.class.getResource("/complexPojoJson.txt").getPath());
-		}catch(Exception ex){
-			LOG.error("Cannot read json files", ex);
-			Assert.fail("Cannot read json files");
-		}
-	}
-	
-	@AfterClass
-	public static void end(){
-	}
-	
-	@Test
-	public void testArrayJsonUnmashalling(){
-		try{
-			JsonFactory factory = new JsonFactory(); 
-			ObjectMapper mapper = new ObjectMapper(factory);
-			TypeReference<String[]> type = new TypeReference<String[]>() {};
-			String[] array = mapper.readValue(arrayJson, type);
-			StringBuffer sb = new StringBuffer();
-			for(String str : array){
-				sb.append(str);
-				sb.append(",");
-			}
-			LOG.info(sb.toString());
-		}catch(Exception ex){
-			LOG.error("Cannot unmashall an array json file", ex);
-			Assert.fail("Cannot unmashall an array json file arrayJson.txt");
-		}
-	}
-	
-	@Test
-	public void testMapJsonUnmashalling(){
-		try{
-			JsonFactory factory = new JsonFactory(); 
-			ObjectMapper mapper = new ObjectMapper(factory);
-			TypeReference<Map<String, String>> type = new TypeReference<Map<String, String>>() {};
-			Map<String, String> map = mapper.readValue(mapJson, type);
-			StringBuffer sb = new StringBuffer();
-			for(Map.Entry<String, String> entry : map.entrySet()){
-				sb.append(entry.getKey());
-				sb.append(":");
-				sb.append(entry.getValue());
-				sb.append(",");
-			}
-			LOG.info(sb.toString());
-		}catch(Exception ex){
-			LOG.error("Cannot unmashall a map json file", ex);
-			Assert.fail("Cannot unmashall a map json file arrayJson.txt");
-		}
-	}
-	
-	static class Pojo{
-		private String field1;
-		private String field2;
-		public String getField1() {
-			return field1;
-		}
-		public void setField1(String field1) {
-			this.field1 = field1;
-		}
-		public String getField2() {
-			return field2;
-		}
-		public void setField2(String field2) {
-			this.field2 = field2;
-		}
-	}
-	
-	@Test
-	public void testPojoJsonUnmashalling(){
-		try{
-			JsonFactory factory = new JsonFactory(); 
-			ObjectMapper mapper = new ObjectMapper(factory);
-			TypeReference<Pojo> type = new TypeReference<Pojo>() {};
-			Pojo p = mapper.readValue(pojoJson, type);
-			LOG.info(p.getField1() + "," + p.getField2());
-		}catch(Exception ex){
-			LOG.error("Cannot unmashall a map json file", ex);
-			Assert.fail("Cannot unmashall a map json file arrayJson.txt");
-		}
-	}
-	
-	@Test
-	public void testPojoArrayJsonUnmashalling(){
-		try{
-			JsonFactory factory = new JsonFactory(); 
-			ObjectMapper mapper = new ObjectMapper(factory);
-			TypeReference<Pojo[]> type = new TypeReference<Pojo[]>() {};
-			Pojo[] ps = mapper.readValue(pojoArrayJson, type);
-			for(Pojo p : ps){
-				LOG.info(p.getField1() + "," + p.getField2());
-			}
-		}catch(Exception ex){
-			LOG.error("Cannot unmashall a map json file", ex);
-			Assert.fail("Cannot unmashall a map json file arrayJson.txt");
-		}
-	}
-	
-}
-
-

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/Base.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/Base.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/Base.java
new file mode 100644
index 0000000..1f54f00
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/Base.java
@@ -0,0 +1,31 @@
+/*
+ * 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.service.client;
+
+import org.codehaus.jackson.annotate.JsonSubTypes;
+import org.codehaus.jackson.annotate.JsonTypeInfo;
+
+
+//@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
+@JsonTypeInfo(use=JsonTypeInfo.Id.NAME )
+@JsonSubTypes({
+    @JsonSubTypes.Type(value=ClassA.class, name="ClassA"),
+    @JsonSubTypes.Type(value=ClassB.class, name="ClassB")
+})
+public abstract class Base {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassA.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassA.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassA.java
new file mode 100644
index 0000000..60158fc
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassA.java
@@ -0,0 +1,35 @@
+/*
+ * 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.service.client;
+
+import org.codehaus.jackson.annotate.JsonTypeName;
+
+
+@JsonTypeName("ClassA")
+public class ClassA extends Base {
+
+	private int a;
+
+	public int getA() {
+		return a;
+	}
+
+	public void setA(int a) {
+		this.a = a;
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassB.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassB.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassB.java
new file mode 100644
index 0000000..faa20ba
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClassB.java
@@ -0,0 +1,34 @@
+/*
+ * 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.service.client;
+
+import org.codehaus.jackson.annotate.JsonTypeName;
+
+@JsonTypeName("ClassB")
+public class ClassB extends Base {
+
+	private String b;
+
+	public String getB() {
+		return b;
+	}
+
+	public void setB(String b) {
+		this.b = b;
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClientTestBase.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClientTestBase.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClientTestBase.java
new file mode 100644
index 0000000..ac16b93
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/ClientTestBase.java
@@ -0,0 +1,32 @@
+/*
+ * 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.service.client;
+
+import org.apache.eagle.service.hbase.EmbeddedHbase;
+
+public class ClientTestBase {
+	
+	//protected static EmbeddedServer server;
+	protected static EmbeddedHbase hbase;
+
+	//@BeforeClass
+	public static void startup() throws Exception {
+		//hbase = EmbeddedHbase.getInstance();
+		//String webappDirLocation = "../../../eagle-webservice/target/eagle-service";
+		//server = EmbeddedServer.getInstance(webappDirLocation);
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestEagleServiceClientImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestEagleServiceClientImpl.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestEagleServiceClientImpl.java
new file mode 100644
index 0000000..0625145
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestEagleServiceClientImpl.java
@@ -0,0 +1,339 @@
+/*
+ * 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.service.client;
+
+import org.apache.eagle.log.entity.GenericMetricEntity;
+import org.apache.eagle.log.entity.GenericServiceAPIResponseEntity;
+import org.apache.eagle.log.entity.test.TestTimeSeriesAPIEntity;
+import org.apache.eagle.service.client.impl.EagleServiceClientImpl;
+import org.apache.eagle.service.client.impl.ConcurrentSender;
+import junit.framework.Assert;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+public class TestEagleServiceClientImpl extends ClientTestBase {
+
+    IEagleServiceClient client = new EagleServiceClientImpl("localhost",38080);
+
+    //@Before
+    public void setUp() {
+        hbase.createTable("unittest", "f");
+    }
+
+    //After
+    public void cleanUp() {
+        hbase.deleteTable("unittest");
+    }
+
+    //@Test
+    public void testCreateAndSearch() throws IOException, EagleServiceClientException, IllegalAccessException, InstantiationException {
+        List<TestTimeSeriesAPIEntity> entities = new ArrayList<TestTimeSeriesAPIEntity>();
+
+        for(int i=0;i<100;i++){
+            TestTimeSeriesAPIEntity entity = new TestTimeSeriesAPIEntity();
+            entity.setTimestamp(System.currentTimeMillis());
+            entity.setTags(new HashMap<String, String>() {{
+                put("cluster", "cluster4ut");
+                put("datacenter", "datacenter4ut");
+                put("timestampStr",System.currentTimeMillis()+"");
+            }});
+            entity.setField1(1);
+            entity.setField2(1);
+            entity.setField3(1);
+            entity.setField4(1l);
+            entity.setField5(1l);
+            entity.setField5(1.2);
+            entity.setField6(-1.2);
+            entity.setField7("test unit string attribute");
+            entities.add(entity);
+        }
+
+        GenericServiceAPIResponseEntity response = client.create(entities);
+        assert response.isSuccess();
+        response = client.create(entities,TestTimeSeriesAPIEntity.class);
+        assert response.isSuccess();
+        response = client.create(entities,"TestTimeSeriesAPIEntity");
+        assert response.isSuccess();
+
+        response = client.search("TestTimeSeriesAPIEntity[]{*}")
+                .startTime(0)
+                .endTime(System.currentTimeMillis() + 25 * 3600 * 1000)
+                .pageSize(1000)
+                .send();
+
+        assert  response.isSuccess();
+        assert response.getObj().size() > 0;
+    }
+
+    private TestTimeSeriesAPIEntity newEntity(){
+        TestTimeSeriesAPIEntity entity = new TestTimeSeriesAPIEntity();
+        entity.setTimestamp(System.currentTimeMillis());
+        entity.setTags(new HashMap<String, String>() {{
+            put("cluster", "cluster4ut");
+            put("datacenter", "datacenter4ut");
+        }});
+        entity.setField1(1);
+        entity.setField2(1);
+        entity.setField3(1);
+        entity.setField4(1l);
+        entity.setField5(1l);
+        entity.setField5(1.2);
+        entity.setField6(-1.2);
+        entity.setField7("test unit string attribute");
+        return entity;
+    }
+
+    //@Test
+    public void testUpdate() throws IOException, EagleServiceClientException, IllegalAccessException, InstantiationException {
+        List<TestTimeSeriesAPIEntity> entities = new ArrayList<TestTimeSeriesAPIEntity>();
+        for(int i=0;i<100;i++){
+            TestTimeSeriesAPIEntity entity = new TestTimeSeriesAPIEntity();
+            entity.setTimestamp(System.currentTimeMillis());
+            entity.setTags(new HashMap<String, String>() {{
+                put("cluster", "cluster4ut");
+                put("datacenter", "datacenter4ut");
+            }});
+            entity.setField1(1);
+            entity.setField2(1);
+            entity.setField3(1);
+            entity.setField4(1l);
+            entity.setField5(1l);
+            entity.setField5(1.2);
+            entity.setField6(-1.2);
+            entity.setField7("updated");
+            entities.add(entity);
+        }
+
+        GenericServiceAPIResponseEntity response = client.update(entities);
+        assert response.isSuccess();
+        response = client.update(entities, TestTimeSeriesAPIEntity.class);
+        assert response.isSuccess();
+        response = client.update(entities, "TestTimeSeriesAPIEntity");
+        assert response.isSuccess();
+
+        response = client.search("TestTimeSeriesAPIEntity[]{*}")
+                .startTime(0)
+                .endTime(System.currentTimeMillis() + 25 * 3600 * 1000)
+                .pageSize(1000)
+                .send();
+
+        assert response.isSuccess();
+        assert response.getObj().size() > 0;
+    }
+
+    //@Test
+    public void testDelete() throws IOException, EagleServiceClientException {
+        List<TestTimeSeriesAPIEntity> entities = new ArrayList<TestTimeSeriesAPIEntity>();
+        for(int i=0;i<100;i++){
+            TestTimeSeriesAPIEntity entity = new TestTimeSeriesAPIEntity();
+            entity.setTimestamp(System.currentTimeMillis());
+            entity.setTags(new HashMap<String, String>() {{
+                put("cluster", "cluster4ut");
+                put("datacenter", "datacenter4ut");
+            }});
+
+            entity.setField1(1);
+            entity.setField2(1);
+            entity.setField3(1);
+            entity.setField4(1l);
+            entity.setField5(1l);
+            entity.setField5(1.2);
+            entity.setField6(-1.2);
+            entity.setField7(" unit test oriented string attribute");
+            entities.add(entity);
+        }
+
+        GenericServiceAPIResponseEntity response = client.delete(entities);
+        assert response.isSuccess();
+        response = client.delete(entities, TestTimeSeriesAPIEntity.class);
+        assert response.isSuccess();
+        response = client.delete(entities, "TestTimeSeriesAPIEntity");
+        assert response.isSuccess();
+
+        response = client.delete()
+                .byId(Arrays.asList("30RR1H___rOqxUr5M_sR-g5RxZlmldR_9eQ49A"))
+                .serviceName("TestTimeSeriesAPIEntity")
+                .send();
+
+        assert response.isSuccess();
+
+        response = client.delete()
+                .byQuery("TestTimeSeriesAPIEntity[]{*}")
+                .startTime(0)
+                .endTime(System.currentTimeMillis())
+                .pageSize(1000)
+                .send();
+
+        assert response.isSuccess();
+    }
+
+    //@Test
+    public void testMetricsSender() throws IOException, EagleServiceClientException {
+        List<GenericMetricEntity> entities = new ArrayList<GenericMetricEntity>();
+
+        Map<String,String> tags = new HashMap<String, String>() {{
+            put("cluster", "cluster4ut");
+            put("datacenter", "datacenter4ut");
+        }};
+
+        for(int i=0;i<100;i++){
+            GenericMetricEntity entity = new GenericMetricEntity();
+            entity.setTimestamp(System.currentTimeMillis());
+            entity.setTags(tags);
+            entity.setValue(new double[]{1.234});
+            entity.setPrefix("unit.test.metrics");
+            entities.add(entity);
+        }
+
+        GenericServiceAPIResponseEntity response = client.create(entities);
+        assert response.isSuccess();
+        response = client.create(entities,GenericMetricEntity.class);
+        assert response.isSuccess();
+        response = client.create(entities,GenericMetricEntity.GENERIC_METRIC_SERVICE);
+        assert response.isSuccess();
+
+        client.metric("unit.test.metrics")
+                .batch(5)
+                .tags(tags)
+                .send("unit.test.anothermetrics", System.currentTimeMillis(), tags, 0.1, 0.2, 0.3)
+                .send(System.currentTimeMillis(), 0.1)
+                .send(System.currentTimeMillis(),0.1,0.2)
+                .send(System.currentTimeMillis(),0.1,0.2,0.3)
+                .send(System.currentTimeMillis(),tags,0.1,0.2,0.3)
+                .send("unit.test.anothermetrics",System.currentTimeMillis(),tags,0.1,0.2,0.3)
+                .flush();
+
+        GenericServiceAPIResponseEntity<GenericMetricEntity> metricResponse = client.search("GenericMetricService[@cluster=\"cluster4ut\" AND @datacenter = \"datacenter4ut\"]{*}")
+                .startTime(0)
+                .endTime(System.currentTimeMillis()+24 * 3600 * 1000)
+                .metricName("unit.test.metrics")
+                .pageSize(1000)
+                .send();
+        List<GenericMetricEntity> metricEntities = metricResponse.getObj();
+        assert metricEntities != null;
+        assert metricResponse.isSuccess();
+
+        GenericServiceAPIResponseEntity<Map> metricAggResponse = client.search("GenericMetricService[@cluster=\"cluster4ut\" AND @datacenter = \"datacenter4ut\"]<@cluster>{sum(value)}")
+                .startTime(0)
+                .endTime(System.currentTimeMillis()+24 * 3600 * 1000)
+                .metricName("unit.test.metrics")
+                .pageSize(1000)
+                .send();
+        List<Map> aggResult = metricAggResponse.getObj();
+        assert aggResult != null;
+        assert metricAggResponse.isSuccess();
+
+        client.close();
+    }
+
+    //@Test
+    public void testBatchSender() throws IOException, EagleServiceClientException {
+        client.batch(2)
+                .send(newEntity())
+                .send(newEntity())
+                .send(newEntity());
+        client.close();
+    }
+
+    //@Test
+    public void testAsyncSender() throws IOException, EagleServiceClientException, ExecutionException, InterruptedException {
+        EagleServiceAsyncClient asyncClient = client.async();
+
+        Future<GenericServiceAPIResponseEntity<String>> future1 =
+                asyncClient.create(Arrays.asList(newEntity()));
+
+        GenericServiceAPIResponseEntity<String> response1 = future1.get();
+
+        Assert.assertTrue(response1.isSuccess());
+
+        Future<GenericServiceAPIResponseEntity<String>> future2 =
+                asyncClient.update(Arrays.asList(newEntity()));
+
+        GenericServiceAPIResponseEntity<String> response2 = future2.get();
+
+        Assert.assertTrue(response2.isSuccess());
+
+        Future<GenericServiceAPIResponseEntity<String>> future3 =
+                asyncClient.delete(Arrays.asList(newEntity()));
+
+        GenericServiceAPIResponseEntity<String> response3 = future3.get();
+
+        Assert.assertTrue(response3.isSuccess());
+
+        client.close();
+    }
+
+    //@Test
+    public void testParallelSender() throws IOException, EagleServiceClientException, InterruptedException {
+        // Case #1:
+        ConcurrentSender concurrentSender = client
+                .parallel(10)
+                .batchSize(30)
+                .batchInterval(1000);
+
+        int num = 1000;
+
+        for(int i=0; i< num;i++) {
+            concurrentSender.send(Arrays.asList(newEntity()));
+        }
+
+        // Case #2:
+        ConcurrentSender concurrentSender2 = client
+                .parallel(10)
+                .batchSize(20)
+                .batchInterval(3);
+
+        int num2 = 50;
+
+        for(int i=0; i< num2;i++) {
+            concurrentSender2.send(Arrays.asList(newEntity()));
+            Thread.sleep(1);
+        }
+        client.close();
+    }
+
+    //@Test
+    public void testSearch() throws EagleServiceClientException, IOException {
+        hbase.createTable("eagle_metric", "f");
+
+        GenericServiceAPIResponseEntity<TestTimeSeriesAPIEntity> response =
+                client.search("TestTimeSeriesAPIEntity[]{*}").startTime(0).endTime(System.currentTimeMillis()+1000).pageSize(1000).send();
+
+        Assert.assertTrue(response.isSuccess());
+
+        GenericServiceAPIResponseEntity<Map> response2 =
+                client.search("TestTimeSeriesAPIEntity[]<@cluster>{count}").startTime(0).endTime(System.currentTimeMillis()+1000).pageSize(1000).send();
+
+        Assert.assertTrue(response2.isSuccess());
+
+        GenericServiceAPIResponseEntity<GenericMetricEntity> response3 =
+                client.search("GenericMetricService[@cluster = \"cluster4ut\" AND @datacenter = \"datacenter4ut\"]{*}").metricName("unit.test.metrics").startTime(0).endTime(System.currentTimeMillis()+1000).pageSize(1000).send();
+
+        Assert.assertTrue(response3.isSuccess());
+        hbase.deleteTable("eagle_metric");
+    }
+
+    @Test
+    public void test() {
+
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestIEagleServiceClient.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestIEagleServiceClient.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestIEagleServiceClient.java
new file mode 100644
index 0000000..a144118
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestIEagleServiceClient.java
@@ -0,0 +1,64 @@
+/*
+ * 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.service.client;
+
+import org.apache.eagle.common.config.EagleConfigFactory;
+import org.apache.eagle.log.entity.GenericMetricEntity;
+import org.apache.eagle.log.entity.GenericServiceAPIResponseEntity;
+import org.apache.eagle.log.entity.meta.EntityDefinition;
+import org.apache.eagle.log.entity.meta.EntityDefinitionManager;
+import org.apache.eagle.service.client.impl.EagleServiceClientImpl;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestIEagleServiceClient extends ClientTestBase {
+    IEagleServiceClient client;
+    //@Before
+    public void setUp(){
+        client = new EagleServiceClientImpl("localhost", EagleConfigFactory.load().getServicePort());
+    }
+
+    /**
+     * Just compiling passed is ok
+     */
+    //@Test
+    @SuppressWarnings("unused")
+    public void testCreate() throws IOException, EagleServiceClientException, IllegalAccessException, InstantiationException {
+        EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(GenericMetricEntity.class);
+        hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
+
+        client = new EagleServiceClientImpl("localhost", EagleConfigFactory.load().getServicePort());
+        List<GenericMetricEntity> metricEntityList = new ArrayList<GenericMetricEntity>();
+        GenericServiceAPIResponseEntity<String> unTypedResponse = client.create(metricEntityList);
+        GenericServiceAPIResponseEntity<String> weakTypedResponse = client.create(metricEntityList,GenericMetricEntity.GENERIC_METRIC_SERVICE);
+        GenericServiceAPIResponseEntity<String> strongTypedResponse = client.create(metricEntityList,GenericMetricEntity.class);
+
+        GenericServiceAPIResponseEntity<GenericMetricEntity> weakTypedSearchResponse = client.search("").send();
+        if(weakTypedSearchResponse!=null) {
+            Class<GenericMetricEntity> typedClazz = weakTypedSearchResponse.getType();
+            List<GenericMetricEntity> typedEntities = weakTypedSearchResponse.getObj();
+        }
+    }
+
+    @Test
+    public void test() {
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestJackson.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestJackson.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestJackson.java
new file mode 100644
index 0000000..73d28be
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/client/TestJackson.java
@@ -0,0 +1,63 @@
+/*
+ * 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.service.client;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.junit.Test;
+
+// http://wiki.fasterxml.com/JacksonPolymorphicDeserialization
+public class TestJackson {
+
+	@Test
+	public void testBase() throws JsonGenerationException, JsonMappingException, IOException {
+		List<Base> objs = new ArrayList<Base>();
+		ClassA a = new ClassA();
+		a.setA(1);
+		ClassB b = new ClassB();
+		b.setB("2");
+		
+		objs.add(a);
+		objs.add(b);
+		
+		ObjectMapper om = new ObjectMapper();
+		om.enableDefaultTyping();
+//		om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+		String value = om.writeValueAsString(objs);
+		
+		System.out.println("value = " + value);
+		
+		@SuppressWarnings("rawtypes")
+		List result = om.readValue(value, ArrayList.class);
+		System.out.println("size = " + result.size());
+		Object obj1 = result.get(0);
+		Object obj2 = result.get(1);
+		
+		Assert.assertEquals("ClassA", obj1.getClass().getSimpleName());
+		Assert.assertEquals(1, ((ClassA)obj1).getA());
+		Assert.assertEquals("ClassB", obj2.getClass().getSimpleName());
+		Assert.assertEquals("2", ((ClassB)obj2).getB());
+		
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonMarshalling.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonMarshalling.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonMarshalling.java
new file mode 100644
index 0000000..808ee9a
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonMarshalling.java
@@ -0,0 +1,149 @@
+/*
+ * 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.service.jackson;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.codehaus.jackson.JsonFactory;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TestJacksonMarshalling {
+	private static Logger LOG = LoggerFactory.getLogger(TestJacksonMarshalling.class);
+
+	
+	
+	@Test
+	public void testJSonArrayMarshalling(){
+		String[] array = {"cluster", "datacenter", "rack", "hostname"};
+		JsonFactory factory = new JsonFactory(); 
+	    ObjectMapper mapper = new ObjectMapper(factory);
+	    String result = null;
+	    try{
+	    	result = mapper.writeValueAsString(array);
+	    }catch(Exception ex){
+	    	LOG.error("Cannot marshall", ex);
+	    	Assert.fail("cannot marshall an String array");
+	    }
+	    Assert.assertEquals("[\"cluster\",\"datacenter\",\"rack\",\"hostname\"]", result);
+	}
+	
+
+	static class Pojo{
+		private String field1;
+		private String field2;
+		public String getField1() {
+			return field1;
+		}
+		public void setField1(String field1) {
+			this.field1 = field1;
+		}
+		public String getField2() {
+			return field2;
+		}
+		public void setField2(String field2) {
+			this.field2 = field2;
+		}
+	}
+	
+	@Test
+	public void testPojoMarshalling(){
+		Pojo p = new Pojo();
+		p.setField1("field1");
+		p.setField2("field2");
+		
+		JsonFactory factory = new JsonFactory(); 
+	    ObjectMapper mapper = new ObjectMapper(factory);
+	    String result = null;
+	    try{
+	    	result = mapper.writeValueAsString(p);
+	    }catch(Exception ex){
+	    	LOG.error("Cannot marshall", ex);
+	    	Assert.fail("Cannot marshall a Pojo");
+	    }
+	    System.out.println(result);
+	    Assert.assertEquals("{\"field1\":\"field1\",\"field2\":\"field2\"}", result);
+	}
+	
+	@Test
+	public void testPojoArrayMashalling(){
+		Pojo[] ps = new Pojo[2];
+		ps[0] = new Pojo();
+		ps[0].setField1("0_field1");
+		ps[0].setField2("0_field2");
+		ps[1] = new Pojo();
+		ps[1].setField1("1_field1");
+		ps[1].setField2("1_field2");
+		
+		JsonFactory factory = new JsonFactory(); 
+	    ObjectMapper mapper = new ObjectMapper(factory);
+	    String result = null;
+	    try{
+	    	result = mapper.writeValueAsString(ps);
+	    }catch(Exception ex){
+	    	LOG.error("Cannot marshall", ex);
+	    	Assert.fail("Cannot marshall a Pojo array");
+	    }
+	    System.out.println(result);
+	    Assert.assertEquals("[{\"field1\":\"0_field1\",\"field2\":\"0_field2\"},{\"field1\":\"1_field1\",\"field2\":\"1_field2\"}]", result);
+	}
+	
+	@Test
+	public void testComplexMapMarshalling(){
+		Map<List<String>, String> map = new HashMap<List<String>, String>();
+		map.put(Arrays.asList("cluster1","dc1"), "123");
+		map.put(Arrays.asList("cluster1","dc1"), "456");
+		
+		JsonFactory factory = new JsonFactory(); 
+	    ObjectMapper mapper = new ObjectMapper(factory);
+	    String result = null;
+	    try{
+	    	result = mapper.writeValueAsString(map);
+	    }catch(Exception ex){
+	    	LOG.error("Cannot marshall", ex);
+	    	Assert.fail("Cannot marshall a complex map");
+	    }
+	    System.out.println(result);
+	}
+	
+	@Test
+	public void testMapMapMarshalling(){
+		Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
+		Map<String, String> childmap1 = new HashMap<String, String>();
+		childmap1.put("dc1", "123");
+		childmap1.put("dc1", "456");
+		map.put("cluster1", childmap1);
+		
+		JsonFactory factory = new JsonFactory(); 
+	    ObjectMapper mapper = new ObjectMapper(factory);
+	    String result = null;
+	    try{
+	    	result = mapper.writeValueAsString(map);
+	    }catch(Exception ex){
+	    	LOG.error("Cannot marshall", ex);
+	    	Assert.fail("Cannot marshall a complex map");
+	    }
+	    System.out.println(result);
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonUnmashalling.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonUnmashalling.java b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonUnmashalling.java
new file mode 100644
index 0000000..09e04ac
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-client-base/src/test/java/org/apache/eagle/service/jackson/TestJacksonUnmashalling.java
@@ -0,0 +1,149 @@
+/*
+ * 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.service.jackson;
+
+import java.io.File;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.codehaus.jackson.JsonFactory;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TestJacksonUnmashalling {
+	private static Logger LOG = LoggerFactory.getLogger(TestJacksonUnmashalling.class);
+	private static File arrayJson;
+	private static File mapJson;
+	private static File pojoJson;
+	private static File pojoArrayJson;
+	@SuppressWarnings("unused")
+	private static File complexPojoJson;
+	
+	@BeforeClass
+	public static void prepare(){ 
+		try{
+			arrayJson = new File(TestJacksonUnmashalling.class.getResource("/arrayJson.txt").getPath());
+			mapJson = new File(TestJacksonUnmashalling.class.getResource("/mapJson.txt").getPath());
+			pojoJson = new File(TestJacksonUnmashalling.class.getResource("/pojoJson.txt").getPath());
+			pojoArrayJson = new File(TestJacksonUnmashalling.class.getResource("/pojoArrayJson.txt").getPath());
+			complexPojoJson = new File(TestJacksonUnmashalling.class.getResource("/complexPojoJson.txt").getPath());
+		}catch(Exception ex){
+			LOG.error("Cannot read json files", ex);
+			Assert.fail("Cannot read json files");
+		}
+	}
+	
+	@AfterClass
+	public static void end(){
+	}
+	
+	@Test
+	public void testArrayJsonUnmashalling(){
+		try{
+			JsonFactory factory = new JsonFactory(); 
+			ObjectMapper mapper = new ObjectMapper(factory);
+			TypeReference<String[]> type = new TypeReference<String[]>() {};
+			String[] array = mapper.readValue(arrayJson, type);
+			StringBuffer sb = new StringBuffer();
+			for(String str : array){
+				sb.append(str);
+				sb.append(",");
+			}
+			LOG.info(sb.toString());
+		}catch(Exception ex){
+			LOG.error("Cannot unmashall an array json file", ex);
+			Assert.fail("Cannot unmashall an array json file arrayJson.txt");
+		}
+	}
+	
+	@Test
+	public void testMapJsonUnmashalling(){
+		try{
+			JsonFactory factory = new JsonFactory(); 
+			ObjectMapper mapper = new ObjectMapper(factory);
+			TypeReference<Map<String, String>> type = new TypeReference<Map<String, String>>() {};
+			Map<String, String> map = mapper.readValue(mapJson, type);
+			StringBuffer sb = new StringBuffer();
+			for(Map.Entry<String, String> entry : map.entrySet()){
+				sb.append(entry.getKey());
+				sb.append(":");
+				sb.append(entry.getValue());
+				sb.append(",");
+			}
+			LOG.info(sb.toString());
+		}catch(Exception ex){
+			LOG.error("Cannot unmashall a map json file", ex);
+			Assert.fail("Cannot unmashall a map json file arrayJson.txt");
+		}
+	}
+	
+	static class Pojo{
+		private String field1;
+		private String field2;
+		public String getField1() {
+			return field1;
+		}
+		public void setField1(String field1) {
+			this.field1 = field1;
+		}
+		public String getField2() {
+			return field2;
+		}
+		public void setField2(String field2) {
+			this.field2 = field2;
+		}
+	}
+	
+	@Test
+	public void testPojoJsonUnmashalling(){
+		try{
+			JsonFactory factory = new JsonFactory(); 
+			ObjectMapper mapper = new ObjectMapper(factory);
+			TypeReference<Pojo> type = new TypeReference<Pojo>() {};
+			Pojo p = mapper.readValue(pojoJson, type);
+			LOG.info(p.getField1() + "," + p.getField2());
+		}catch(Exception ex){
+			LOG.error("Cannot unmashall a map json file", ex);
+			Assert.fail("Cannot unmashall a map json file arrayJson.txt");
+		}
+	}
+	
+	@Test
+	public void testPojoArrayJsonUnmashalling(){
+		try{
+			JsonFactory factory = new JsonFactory(); 
+			ObjectMapper mapper = new ObjectMapper(factory);
+			TypeReference<Pojo[]> type = new TypeReference<Pojo[]>() {};
+			Pojo[] ps = mapper.readValue(pojoArrayJson, type);
+			for(Pojo p : ps){
+				LOG.info(p.getField1() + "," + p.getField2());
+			}
+		}catch(Exception ex){
+			LOG.error("Cannot unmashall a map json file", ex);
+			Assert.fail("Cannot unmashall a map json file arrayJson.txt");
+		}
+	}
+	
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Base64.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Base64.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Base64.java
deleted file mode 100644
index d468090..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Base64.java
+++ /dev/null
@@ -1,44 +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 eagle.common;
-
-import java.io.UnsupportedEncodingException;
-
-import javax.xml.bind.DatatypeConverter;
-
-public class Base64 {
-
-	public static String decode(String salted) {
-		try {
-			return new String(DatatypeConverter.parseBase64Binary(salted), "UTF-8");
-		} catch (UnsupportedEncodingException e) {
-			throw new RuntimeException("UTF-8 must be supported", e);
-		}
-	}
-
-	public static String encode(String plain) {
-		try {
-			return DatatypeConverter.printBase64Binary(plain.getBytes("UTF-8"));
-		} catch (UnsupportedEncodingException e) {
-			throw new RuntimeException("UTF-8 must be supported", e);
-		}
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/ByteUtil.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/ByteUtil.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/ByteUtil.java
deleted file mode 100644
index b97f316..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/ByteUtil.java
+++ /dev/null
@@ -1,178 +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 eagle.common;
-
-public class ByteUtil {
-	
-	public static double bytesToDouble(byte[] bytes, int offset){
-		return Double.longBitsToDouble(bytesToLong(bytes, offset));
-	}
-	
-	public static double bytesToDouble(byte[] bytes){
-		return Double.longBitsToDouble(bytesToLong(bytes));
-	}
-	
-	public static void doubleToBytes(double v, byte[] bytes){
-		doubleToBytes(v, bytes, 0);
-	}
-	
-	public static void doubleToBytes(double v, byte[] bytes, int offset){
-		longToBytes(Double.doubleToLongBits(v), bytes, offset);
-	}
-	
-	public static byte[] doubleToBytes(double v){
-		return longToBytes(Double.doubleToLongBits(v));
-	}
-	
-	public static long bytesToLong(byte[] bytes){
-		return bytesToLong(bytes, 0);
-	}
-	
-	public static long bytesToLong(byte[] bytes, int offset){
-		long value = 0;
-		for(int i=0; i<8; i++){
-			value <<= 8;
-			value |= (bytes[i+offset] & 0xFF);
-		}
-		return value;
-	}
-	
-	public static void longToBytes(long v, byte[] bytes){
-		longToBytes(v, bytes, 0);
-	}
-	
-	public static void longToBytes(long v, byte[] bytes, int offset){
-		long tmp = v;
-		for(int i=0; i<8; i++){
-			bytes[offset + 7 - i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-	}
-	
-	public static byte[] longToBytes(long v){
-		long tmp = v;
-		byte[] b = new byte[8];
-		for(int i=0; i<8; i++){
-			b[7-i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-		return b;
-	}
-	
-	public static int bytesToInt(byte[] bytes){
-		return bytesToInt(bytes, 0);
-	}
-	
-	public static int bytesToInt(byte[] bytes, int offset){
-		int value = 0;
-		for(int i=0; i<4; i++){
-			value <<= 8;
-			value |= (bytes[i+offset] & 0xFF);
-		}
-		return value;
-	}
-	
-	public static void intToBytes(int v, byte[] bytes){
-		intToBytes(v, bytes, 0);
-	}
-	
-	public static void intToBytes(int v, byte[] bytes, int offset){
-		int tmp = v;
-		for(int i=0; i<4; i++){
-			bytes[offset + 3 - i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-	}
-
-	public static byte[] intToBytes(int v){
-		int tmp = v;
-		byte[] b = new byte[4];
-		for(int i=0; i<4; i++){
-			b[3-i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-		return b;
-	}
-
-	//////
-	
-	public static short bytesToShort(byte[] bytes){
-		return bytesToShort(bytes, 0);
-	}
-	
-	public static short bytesToShort(byte[] bytes, int offset){
-		short value = 0;
-		for(int i=0; i < 2; i++){
-			value <<= 8;
-			value |= (bytes[i+offset] & 0xFF);
-		}
-		return value;
-	}
-	
-	public static void shortToBytes(short v, byte[] bytes){
-		shortToBytes(v, bytes, 0);
-	}
-	
-	public static void shortToBytes(short v, byte[] bytes, int offset){
-		int tmp = v;
-		for(int i=0; i < 2; i++){
-			bytes[offset + 1 - i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-	}
-
-	public static byte[] shortToBytes(short v){
-		int tmp = v;
-		byte[] b = new byte[2];
-		for(int i=0; i<2; i++){
-			b[1-i] = (byte)(tmp & 0xFF);
-			tmp >>= 8;
-		}
-		return b;
-	}
-
-	public static byte[] concat(byte[]... arrays) {
-        int length = 0;
-        for (byte[] array : arrays) {
-            length += array.length;
-        }
-        byte[] result = new byte[length];
-        int pos = 0;
-        for (byte[] array : arrays) {
-            System.arraycopy(array, 0, result, pos, array.length);
-            pos += array.length;
-        }
-        return result;
-    }
-	
-//    public static void main(String[] args){ 
-//    	int a = "ThreadName".hashCode();
-//    	byte[] b = intToBytes(a);
-//    	byte[] c = intToBytes(1676687583);
-//    	String s = new String(b);
-//    	System.out.println(s);
-    	
-//    	byte[] d = intToBytes(8652353);
-//    	System.out.println(bytesToInt(d));
-    	
-//    	byte[] e = longToBytes(12131513513l);
-//    	System.out.println(bytesToLong(e));
-//    	if(12131513513l == bytesToLong(e)){
-//    		System.out.println("yes");
-//    	}
-//    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayList.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayList.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayList.java
deleted file mode 100644
index 8fea29c..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayList.java
+++ /dev/null
@@ -1,149 +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 eagle.common;
-
-import java.util.AbstractList;
-import java.util.RandomAccess;
-
-/**
- * Circular array implementation
- *
- * @param <E>
- */
-public class CircularArrayList<E> extends AbstractList<E> implements RandomAccess {
-  
-    private final E[] buf; // a List implementing RandomAccess
-    private int head = 0;
-    private int tail = 0;
-    private boolean full = false;
-  
-    public CircularArrayList(E[] array) {
-        buf = array;
-        full = (buf.length == 0);
-    }
-  
-    public int capacity() {
-        return buf.length;
-    }
-    
-    public int head() {
-    	return head;
-    }
-    
-    public int tail() {
-    	return tail;
-    }
-    
-    public boolean isFull() {
-    	return full;
-    }
-    
-    @Override
-    public void clear() {
-        head = 0;
-        tail = 0;
-        full = false;
-        for (int i = 0; i < buf.length; ++i) {
-        	buf[i] = null;
-        }
-    }
-
-    private int wrapIndex(int i) {
-        int m = i % buf.length;
-        if (m < 0) { // java modulus can be negative
-            throw new IndexOutOfBoundsException();
-        }
-        return m;
-    }
-  
-    // This method is O(n) but will never be called if the
-    // CircularArrayList is used in its typical/intended role.
-    private void shiftBlock(int startIndex, int endIndex) {
-        assert (endIndex > startIndex);
-        for (int i = endIndex - 1; i >= startIndex; i--) {
-            set(i + 1, get(i));
-        }
-    }
-    
-    public int find(E e) {
-    	final int size = size();
-    	for (int i = 0; i < size; ++i) {
-    		if (e.equals(get(i))) {
-    			return i;
-    		}
-    	}
-    	return -1;
-    }
-  
-    @Override
-    public int size() {
-    	if (full) {
-    		return buf.length;
-    	}
-        return tail - head + (tail < head ? buf.length : 0);
-    }
-  
-    @Override
-    public E get(int i) {
-        if (i < 0 || i >= size()) {
-            throw new IndexOutOfBoundsException();
-        }
-        return buf[wrapIndex(head + i)];
-    }
-  
-    @Override
-    public E set(int i, E e) {
-        if (i < 0 || i >= size()) {
-            throw new IndexOutOfBoundsException();
-        }
-        return buf[wrapIndex(head + i)] =  e;
-    }
-  
-    @Override
-    public void add(int i, E e) {
-        int s = size();
-        if (s == buf.length) {
-            throw new IllegalStateException("Cannot add element."
-                    + " CircularArrayList is filled to capacity.");
-        }
-        full = (s + 1 == buf.length);
-        if (i < 0 || i > s) {
-            throw new IndexOutOfBoundsException();
-        }
-        tail = wrapIndex(tail + 1);
-        if (i < s) {
-            shiftBlock(i, s);
-        }
-        set(i, e);
-    }
-  
-    @Override
-    public E remove(int i) {
-        int s = size();
-        if (i < 0 || i >= s) {
-            throw new IndexOutOfBoundsException();
-        }
-        final E e = get(i);
-        if (i > 0) {
-            shiftBlock(0, i);
-        }
-    	buf[head] = null;
-        head = wrapIndex(head + 1);
-        full = false;
-        return e;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayListSortedSet.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayListSortedSet.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayListSortedSet.java
deleted file mode 100644
index 18b54c0..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/CircularArrayListSortedSet.java
+++ /dev/null
@@ -1,106 +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 eagle.common;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-public class CircularArrayListSortedSet<E> {
-
-	private final CircularArrayList<E> list;
-    private final Comparator<? super E> comparator;
-
-	public CircularArrayListSortedSet(E[] array) {
-		this.list = new CircularArrayList<E>(array);
-		this.comparator = null;
-	}
-	
-	public CircularArrayListSortedSet(E[] array, Comparator<? super E> comparator) {
-		this.list = new CircularArrayList<E>(array);
-		this.comparator = comparator;
-	}
-	
-    public int capacity() {
-        return list.capacity();
-    }
-    
-    public int head() {
-    	return list.head();
-    }
-    
-    public int tail() {
-    	return list.tail();
-    }
-    
-    public boolean isFull() {
-    	return list.isFull();
-    }
-  
-    public void clear() {
-    	list.clear();
-    }
-    
-    public int size() {
-    	return list.size();
-    }
-  
-    public E get(int i) {
-        return list.get(i);
-    }
-    
-    @SuppressWarnings("unchecked")
-	public int binarySearch(E e) {
-    	if (comparator != null) {
-    		return Collections.binarySearch(list, e, comparator);
-    	} else {
-    		return Collections.binarySearch((List<? extends Comparable<? super E>>)list, e);
-    	}
-    }
-    
-    public int replace(E e) {
-    	int index = binarySearch(e);
-    	if (index < 0) {
-    		return -1;
-    	}
-    	list.set(index, e);
-    	return index;
-    }
-  
-    public int insert(E e) {
-    	int index = binarySearch(e);
-    	if (index > 0) {
-    		return -1;
-    	}
-    	index = 0 - index - 1;
-    	list.add(index, e);
-    	return index;
-    }
-  
-    public E remove(int i) {
-    	return list.remove(i);
-    }
-    
-    public int remove(E e) {
-    	final int index = binarySearch(e);
-    	if (index > 0) {
-        	list.remove(index);
-        	return index;
-    	}
-    	return -1;
-    }
-}

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

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleBase64Wrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleBase64Wrapper.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleBase64Wrapper.java
deleted file mode 100644
index de92305..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleBase64Wrapper.java
+++ /dev/null
@@ -1,32 +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 eagle.common;
-
-import org.apache.commons.net.util.Base64;
-
-/**
- * wrap base64 encoding and decoding, so reduce the confuse of using many Base64 methods. 
- */
-public class EagleBase64Wrapper {
-	public static String encodeByteArray2URLSafeString(byte[] bytes){
-		return Base64.encodeBase64URLSafeString(bytes);
-	}
-	
-	public static byte[] decode(String input){
-		return Base64.decodeBase64(input);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleExceptionWrapper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleExceptionWrapper.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleExceptionWrapper.java
deleted file mode 100644
index 1f7d040..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/EagleExceptionWrapper.java
+++ /dev/null
@@ -1,42 +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 eagle.common;
-
-public class EagleExceptionWrapper {
-	private final static int MAX_DEPTH = 10;
-	
-	public static String wrap(Exception ex){
-		return wrap(ex, EagleExceptionWrapper.MAX_DEPTH);
-	}
-	
-	public static String wrap(Exception ex, int maxdepth){
-		int d = maxdepth;
-		if(d <= 0)
-			d = EagleExceptionWrapper.MAX_DEPTH;
-		int index = 0;
-		StringBuffer sb = new StringBuffer();
-		sb.append(ex);
-		sb.append(System.getProperty("line.separator"));
-		for(StackTraceElement element : ex.getStackTrace()){
-			sb.append(element.toString());
-			sb.append(System.getProperty("line.separator"));
-			if(++index >= d)
-				break;
-		}
-		return sb.toString();
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Environment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Environment.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Environment.java
deleted file mode 100644
index 1c8ff42..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/Environment.java
+++ /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.
- */
-package eagle.common;
-
-public enum Environment {
-	dev,
-	test,
-	prod,
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/OS.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/OS.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/OS.java
deleted file mode 100644
index b831b97..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/OS.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
- *
- *    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 eagle.common;
-
-public class OS {
-
-	private final static String os = System.getProperty("os.name")
-			.toLowerCase();
-
-	public static boolean isWindows() {
-		return (os.indexOf("win") >= 0);
-	}
-
-	public static boolean isMac() {
-		return (os.indexOf("mac") >= 0);
-	}
-
-	public static boolean isUnix() {
-		return (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0 || os
-				.indexOf("aix") > 0);
-	}
-
-	public static boolean isSolaris() {
-		return (os.indexOf("sunos") >= 0);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfig.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfig.java
deleted file mode 100755
index 3be47d9..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfig.java
+++ /dev/null
@@ -1,55 +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 eagle.common.config;
-
-import com.typesafe.config.Config;
-import org.apache.hadoop.hbase.client.HTableInterface;
-
-import java.util.TimeZone;
-import java.util.concurrent.ThreadPoolExecutor;
-
-public interface EagleConfig {
-
-    boolean isCoprocessorEnabled();
-
-	HTableInterface getHTable(String tableName);
-
-    String getStorageType();
-
-    ThreadPoolExecutor getExecutor();
-
-	String getZKQuorum();
-
-	String getZKPort();
-
-	String getServiceHost();
-
-	int getServicePort();
-
-    String getEnv();
-
-    boolean isTableNamePrefixedWithEnvironment();
-	
-    int getHBaseClientScanCacheSize();
-
-    TimeZone getTimeZone();
-
-    /**
-     * @return root config
-     */
-    Config getConfig();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfigConstants.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfigConstants.java b/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfigConstants.java
deleted file mode 100644
index 589c992..0000000
--- a/eagle-core/eagle-query/eagle-common/src/main/java/eagle/common/config/EagleConfigConstants.java
+++ /dev/null
@@ -1,55 +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 eagle.common.config;
-
-public final class EagleConfigConstants {
-    public final static String SERVICE_ENV = "eagle.service.env";
-    public final static String SERVICE_HOST = "eagle.service.host";
-    public final static String SERVICE_PORT = "eagle.service.port";
-    public final static String SERVICE_HBASE_ZOOKEEPER_QUORUM = "eagle.service.hbase-zookeeper-quorum";
-    public final static String SERVICE_HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT = "eagle.service.hbase-zookeeper-property-clientPort";
-    public final static String SERVICE_ZOOKEEPER_ZNODE_PARENT = "eagle.service.zookeeper-znode-parent";
-    public final static String SERVICE_HBASE_CLIENT_IPC_POOL_SIZE = "eagle.service.hbase-client-ipc-pool-size";
-    public final static String SERVICE_STORAGE_TYPE = "eagle.service.storage-type";
-    public final static String SERVICE_COPROCESSOR_ENABLED = "eagle.service.coprocessor-enabled";
-    public final static String SERVICE_TABLE_NAME_PREFIXED_WITH_ENVIRONMENT = "eagle.service.table-name-prefixed-with-environment";
-    public final static String SERVICE_HBASE_CLIENT_SCAN_CACHE_SIZE = "eagle.service.hbase-client-scan-cache-size";
-    public final static String SERVICE_THREADPOOL_CORE_SIZE = "eagle.service.threadpool-core-size";
-    public final static String SERVICE_THREADPOOL_MAX_SIZE = "eagle.service.threadpool-max-size";
-    public final static String SERVICE_THREADPOOL_SHRINK_SIZE = "eagle.service.threadpool-shrink-size";
-
-    public final static String EAGLE_TIME_ZONE = "eagle.timezone";
-    public final static 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 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 final static String SITE = "site";
-    public final static String DATA_SOURCE = "dataSource";
-}
\ No newline at end of file