You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/06/05 05:23:32 UTC

[44/67] [abbrv] kylin git commit: KYLIN-2632 Refactor error msg

KYLIN-2632 Refactor error msg


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/99f08a97
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/99f08a97
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/99f08a97

Branch: refs/heads/master
Commit: 99f08a97a70b207a16a05671f5f611e3f31623b4
Parents: 1008bd2
Author: Luwei-Chen <ch...@apache.org>
Authored: Sat May 27 20:45:10 2017 +0800
Committer: liyang-gmt8 <li...@apache.org>
Committed: Sat May 27 22:39:07 2017 +0800

----------------------------------------------------------------------
 .../rest/controller2/AccessControllerV2.java    |  29 +-
 .../rest/controller2/AdminControllerV2.java     |  31 +-
 .../rest/controller2/CacheControllerV2.java     |  22 +-
 .../rest/controller2/CubeControllerV2.java      | 183 +++++----
 .../rest/controller2/CubeDescControllerV2.java  |  13 +-
 .../rest/controller2/DiagnosisControllerV2.java |  25 +-
 .../rest/controller2/EncodingControllerV2.java  |  10 +-
 .../controller2/ExternalFilterControllerV2.java |  24 +-
 .../rest/controller2/HybridControllerV2.java    |  27 +-
 .../kylin/rest/controller2/JobControllerV2.java |  54 ++-
 .../rest/controller2/ModelControllerV2.java     |  55 +--
 .../rest/controller2/ModelDescControllerV2.java |   7 +-
 .../rest/controller2/ProjectControllerV2.java   |  32 +-
 .../rest/controller2/QueryControllerV2.java     |  54 +--
 .../rest/controller2/StreamingControllerV2.java |  41 +-
 .../rest/controller2/TableControllerV2.java     |  51 +--
 .../rest/controller2/UserControllerV2.java      |  20 +-
 .../org/apache/kylin/rest/msg/CnMessage.java    | 378 +++++++++++++++++-
 .../java/org/apache/kylin/rest/msg/Message.java | 381 +++++--------------
 19 files changed, 840 insertions(+), 597 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/AccessControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/AccessControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/AccessControllerV2.java
index 3258de9..255e312 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/AccessControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/AccessControllerV2.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 
 import org.apache.kylin.common.persistence.AclEntity;
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.request.AccessRequest;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.ResponseCode;
@@ -36,7 +35,6 @@ import org.springframework.security.acls.model.Sid;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -61,10 +59,10 @@ public class AccessControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getAccessEntitiesV2(@RequestHeader("Accept-Language") String lang, @PathVariable String type, @PathVariable String uuid) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getAccessEntitiesV2(@PathVariable String type, @PathVariable String uuid) {
 
         AclEntity ae = accessService.getAclEntity(type, uuid);
         Acl acl = accessService.getAcl(ae);
@@ -77,10 +75,11 @@ public class AccessControllerV2 extends BasicController {
      * @param accessRequest
      */
 
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.POST }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.POST }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse grantV2(@RequestHeader("Accept-Language") String lang, @PathVariable String type, @PathVariable String uuid, @RequestBody AccessRequest accessRequest) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse grantV2(@PathVariable String type, @PathVariable String uuid,
+            @RequestBody AccessRequest accessRequest) {
 
         AclEntity ae = accessService.getAclEntity(type, uuid);
         Sid sid = accessService.getSid(accessRequest.getSid(), accessRequest.isPrincipal());
@@ -96,10 +95,11 @@ public class AccessControllerV2 extends BasicController {
      * @param accessRequest
      */
 
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse updateV2(@RequestHeader("Accept-Language") String lang, @PathVariable String type, @PathVariable String uuid, @RequestBody AccessRequest accessRequest) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse updateV2(@PathVariable String type, @PathVariable String uuid,
+            @RequestBody AccessRequest accessRequest) {
 
         AclEntity ae = accessService.getAclEntity(type, uuid);
         Permission permission = AclPermissionFactory.getPermission(accessRequest.getPermission());
@@ -114,10 +114,11 @@ public class AccessControllerV2 extends BasicController {
      * @param accessRequest
      */
 
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse revokeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String type, @PathVariable String uuid, AccessRequest accessRequest) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse revokeV2(@PathVariable String type, @PathVariable String uuid,
+            AccessRequest accessRequest) {
 
         AclEntity ae = accessService.getAclEntity(type, uuid);
         Acl acl = accessService.revoke(ae, accessRequest.getAccessEntryId());

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/AdminControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/AdminControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/AdminControllerV2.java
index 01176d0..a1028d7 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/AdminControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/AdminControllerV2.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.request.MetricsRequest;
 import org.apache.kylin.rest.request.UpdateConfigRequest;
 import org.apache.kylin.rest.response.EnvelopeResponse;
@@ -34,7 +33,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -57,40 +55,41 @@ public class AdminControllerV2 extends BasicController {
     @Qualifier("cubeMgmtService")
     private CubeService cubeMgmtService;
 
-    @RequestMapping(value = "/env", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/env", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getEnvV2(@RequestHeader("Accept-Language") String lang) throws ConfigurationException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getEnvV2() throws ConfigurationException {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, adminService.getEnv(), "");
     }
 
-    @RequestMapping(value = "/config", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/config", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getConfigV2(@RequestHeader("Accept-Language") String lang) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getConfigV2() throws IOException {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, adminService.getConfigAsString(), "");
     }
 
-    @RequestMapping(value = "/metrics/cubes", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/metrics/cubes", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse cubeMetricsV2(@RequestHeader("Accept-Language") String lang, MetricsRequest request) {
+    public EnvelopeResponse cubeMetricsV2(MetricsRequest request) {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, cubeMgmtService.calculateMetrics(request), "");
     }
 
-    @RequestMapping(value = "/storage", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/storage", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void cleanupStorageV2(@RequestHeader("Accept-Language") String lang) {
-        MsgPicker.setMsg(lang);
+    public void cleanupStorageV2() {
 
         adminService.cleanupStorage();
     }
 
-    @RequestMapping(value = "/config", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/config", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void updateKylinConfigV2(@RequestHeader("Accept-Language") String lang, @RequestBody UpdateConfigRequest updateConfigRequest) {
-        MsgPicker.setMsg(lang);
+    public void updateKylinConfigV2(@RequestBody UpdateConfigRequest updateConfigRequest) {
 
         KylinConfig.getInstanceFromEnv().setProperty(updateConfigRequest.getKey(), updateConfigRequest.getValue());
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/CacheControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/CacheControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/CacheControllerV2.java
index 3cd5abd..fa786b6 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/CacheControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/CacheControllerV2.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.metadata.cachesync.Broadcaster;
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.service.CacheService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,7 +30,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -56,10 +54,11 @@ public class CacheControllerV2 extends BasicController {
      * Announce wipe cache to all cluster nodes
      */
 
-    @RequestMapping(value = "/announce/{entity}/{cacheKey}/{event}", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/announce/{entity}/{cacheKey}/{event}", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void announceWipeCacheV2(@RequestHeader("Accept-Language") String lang, @PathVariable String entity, @PathVariable String event, @PathVariable String cacheKey) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void announceWipeCacheV2(@PathVariable String entity, @PathVariable String event,
+            @PathVariable String cacheKey) throws IOException {
 
         cacheService.annouceWipeCache(entity, event, cacheKey);
     }
@@ -68,18 +67,19 @@ public class CacheControllerV2 extends BasicController {
      * Wipe cache on this node
      */
 
-    @RequestMapping(value = "/{entity}/{cacheKey}/{event}", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{entity}/{cacheKey}/{event}", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void wipeCacheV2(@RequestHeader("Accept-Language") String lang, @PathVariable String entity, @PathVariable String event, @PathVariable String cacheKey) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void wipeCacheV2(@PathVariable String entity, @PathVariable String event, @PathVariable String cacheKey)
+            throws IOException {
 
         cacheService.notifyMetadataChange(entity, Broadcaster.Event.getEvent(event), cacheKey);
     }
 
-    @RequestMapping(value = "/announce/config", method = { RequestMethod.POST }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/announce/config", method = { RequestMethod.POST }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void hotLoadKylinConfigV2(@RequestHeader("Accept-Language") String lang) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void hotLoadKylinConfigV2() throws IOException {
 
         KylinConfig.getInstanceFromEnv().hotLoadKylinProperties();
         cacheService.notifyMetadataChange(Broadcaster.SYNC_ALL, Broadcaster.Event.UPDATE, Broadcaster.SYNC_ALL);

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
index 386aad2..8179bc8 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
@@ -69,7 +69,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -87,7 +86,8 @@ import com.google.common.collect.Lists;
 public class CubeControllerV2 extends BasicController {
     private static final Logger logger = LoggerFactory.getLogger(CubeControllerV2.class);
 
-    public static final char[] VALID_CUBENAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_".toCharArray();
+    public static final char[] VALID_CUBENAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"
+            .toCharArray();
 
     @Autowired
     @Qualifier("cubeMgmtService")
@@ -107,8 +107,11 @@ public class CubeControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getCubesPaging(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "cubeName", required = false) String cubeName, @RequestParam(value = "modelName", required = false) String modelName, @RequestParam(value = "projectName", required = false) String projectName, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getCubesPaging(@RequestParam(value = "cubeName", required = false) String cubeName,
+            @RequestParam(value = "modelName", required = false) String modelName,
+            @RequestParam(value = "projectName", required = false) String projectName,
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
 
         HashMap<String, Object> data = new HashMap<String, Object>();
         List<CubeInstanceResponse> cubeInstanceResponses = new ArrayList<CubeInstanceResponse>();
@@ -136,7 +139,8 @@ public class CubeControllerV2 extends BasicController {
             DataModelDesc getModel = modelService.getMetadataManager().getDataModelDesc(getModelName);
             cubeInstanceResponse.setPartitionDateColumn(getModel.getPartitionDesc().getPartitionDateColumn());
 
-            cubeInstanceResponse.setIs_streaming(getModel.getRootFactTable().getTableDesc().getSourceType() == ISourceAware.ID_STREAMING);
+            cubeInstanceResponse.setIs_streaming(
+                    getModel.getRootFactTable().getTableDesc().getSourceType() == ISourceAware.ID_STREAMING);
 
             if (projectName != null)
                 cubeInstanceResponse.setProject(projectName);
@@ -158,19 +162,19 @@ public class CubeControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
     }
 
-    @RequestMapping(value = "validEncodings", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "validEncodings", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getValidEncodingsV2(@RequestHeader("Accept-Language") String lang) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getValidEncodingsV2() {
 
         Map<String, Integer> encodings = DimensionEncodingFactory.getValidEncodings();
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, encodings, "");
     }
 
-    @RequestMapping(value = "/{cubeName}", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getCubeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getCubeV2(@PathVariable String cubeName) {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -187,7 +191,8 @@ public class CubeControllerV2 extends BasicController {
         DataModelDesc model = modelService.getMetadataManager().getDataModelDesc(modelName);
         cubeInstanceResponse.setPartitionDateColumn(model.getPartitionDesc().getPartitionDateColumn());
 
-        cubeInstanceResponse.setIs_streaming(model.getRootFactTable().getTableDesc().getSourceType() == ISourceAware.ID_STREAMING);
+        cubeInstanceResponse
+                .setIs_streaming(model.getRootFactTable().getTableDesc().getSourceType() == ISourceAware.ID_STREAMING);
 
         List<ProjectInstance> projectInstances = projectService.listProjects(null, null);
         for (ProjectInstance projectInstance : projectInstances) {
@@ -207,10 +212,10 @@ public class CubeControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/sql", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/sql", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getSqlV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getSqlV2(@PathVariable String cubeName) {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -233,10 +238,11 @@ public class CubeControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/notify_list", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/notify_list", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void updateNotifyListV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @RequestBody List<String> notifyList) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void updateNotifyListV2(@PathVariable String cubeName, @RequestBody List<String> notifyList)
+            throws IOException {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -249,10 +255,11 @@ public class CubeControllerV2 extends BasicController {
 
     }
 
-    @RequestMapping(value = "/{cubeName}/cost", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/cost", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse updateCubeCostV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @RequestBody Integer cost) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse updateCubeCostV2(@PathVariable String cubeName, @RequestBody Integer cost)
+            throws IOException {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -268,10 +275,11 @@ public class CubeControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/segs/{segmentName}/refresh_lookup", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/segs/{segmentName}/refresh_lookup", method = {
+            RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse rebuildLookupSnapshotV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @PathVariable String segmentName, @RequestBody String lookupTable) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse rebuildLookupSnapshotV2(@PathVariable String cubeName, @PathVariable String segmentName,
+            @RequestBody String lookupTable) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         final CubeManager cubeMgr = cubeService.getCubeManager();
@@ -279,7 +287,8 @@ public class CubeControllerV2 extends BasicController {
         if (cube == null) {
             throw new BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
         }
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, cubeService.rebuildLookupSnapshot(cube, segmentName, lookupTable), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
+                cubeService.rebuildLookupSnapshot(cube, segmentName, lookupTable), "");
     }
 
     /**
@@ -288,10 +297,11 @@ public class CubeControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/segs/{segmentName}", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/segs/{segmentName}", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse deleteSegmentV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @PathVariable String segmentName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse deleteSegmentV2(@PathVariable String cubeName, @PathVariable String segmentName)
+            throws IOException {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -310,28 +320,35 @@ public class CubeControllerV2 extends BasicController {
     /** Build/Rebuild a cube segment */
 
     /** Build/Rebuild a cube segment */
-    @RequestMapping(value = "/{cubeName}/build", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/build", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse buildV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @RequestBody JobBuildRequest req) throws IOException {
-        return rebuildV2(lang, cubeName, req);
+    public EnvelopeResponse buildV2(@PathVariable String cubeName, @RequestBody JobBuildRequest req)
+            throws IOException {
+        return rebuildV2(cubeName, req);
     }
 
     /** Build/Rebuild a cube segment */
 
-    @RequestMapping(value = "/{cubeName}/rebuild", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/rebuild", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse rebuildV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @RequestBody JobBuildRequest req) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse rebuildV2(@PathVariable String cubeName, @RequestBody JobBuildRequest req)
+            throws IOException {
 
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, buildInternalV2(cubeName, req.getStartTime(), req.getEndTime(), 0, 0, null, null, req.getBuildType(), req.isForce() || req.isForceMergeEmptySegment()), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
+                buildInternalV2(cubeName, req.getStartTime(), req.getEndTime(), 0, 0, null, null, req.getBuildType(),
+                        req.isForce() || req.isForceMergeEmptySegment()),
+                "");
     }
 
     /** Build/Rebuild a cube segment by source offset */
 
-    @RequestMapping(value = "/{cubeName}/build_streaming", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/build_streaming", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse build2V2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @RequestBody JobBuildRequest2 req) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse build2V2(@PathVariable String cubeName, @RequestBody JobBuildRequest2 req)
+            throws IOException {
         Message msg = MsgPicker.getMsg();
 
         boolean existKafkaClient = false;
@@ -346,20 +363,26 @@ public class CubeControllerV2 extends BasicController {
         if (!existKafkaClient) {
             throw new BadRequestException(msg.getKAFKA_DEP_NOT_FOUND());
         }
-        return rebuild2V2(lang, cubeName, req);
+        return rebuild2V2(cubeName, req);
     }
 
     /** Build/Rebuild a cube segment by source offset */
-    @RequestMapping(value = "/{cubeName}/rebuild_streaming", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/rebuild_streaming", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse rebuild2V2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @RequestBody JobBuildRequest2 req) throws IOException {
-        MsgPicker.setMsg(lang);
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, buildInternalV2(cubeName, 0, 0, req.getSourceOffsetStart(), req.getSourceOffsetEnd(), req.getSourcePartitionOffsetStart(), req.getSourcePartitionOffsetEnd(), req.getBuildType(), req.isForce()), "");
+    public EnvelopeResponse rebuild2V2(@PathVariable String cubeName, @RequestBody JobBuildRequest2 req)
+            throws IOException {
+
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
+                buildInternalV2(cubeName, 0, 0, req.getSourceOffsetStart(), req.getSourceOffsetEnd(),
+                        req.getSourcePartitionOffsetStart(), req.getSourcePartitionOffsetEnd(), req.getBuildType(),
+                        req.isForce()),
+                "");
     }
 
     private JobInstance buildInternalV2(String cubeName, long startTime, long endTime, //
-            long startOffset, long endOffset, Map<Integer, Long> sourcePartitionOffsetStart, Map<Integer, Long> sourcePartitionOffsetEnd, String buildType, boolean force) throws IOException {
+            long startOffset, long endOffset, Map<Integer, Long> sourcePartitionOffsetStart,
+            Map<Integer, Long> sourcePartitionOffsetEnd, String buildType, boolean force) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         String submitter = SecurityContextHolder.getContext().getAuthentication().getName();
@@ -372,13 +395,14 @@ public class CubeControllerV2 extends BasicController {
             throw new BadRequestException(msg.getBUILD_DRAFT_CUBE());
         }
         return jobService.submitJob(cube, startTime, endTime, startOffset, endOffset, //
-                sourcePartitionOffsetStart, sourcePartitionOffsetEnd, CubeBuildTypeEnum.valueOf(buildType), force, submitter);
+                sourcePartitionOffsetStart, sourcePartitionOffsetEnd, CubeBuildTypeEnum.valueOf(buildType), force,
+                submitter);
     }
 
-    @RequestMapping(value = "/{cubeName}/disable", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/disable", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse disableCubeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse disableCubeV2(@PathVariable String cubeName) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -391,10 +415,10 @@ public class CubeControllerV2 extends BasicController {
 
     }
 
-    @RequestMapping(value = "/{cubeName}/purge", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/purge", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse purgeCubeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse purgeCubeV2(@PathVariable String cubeName) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -405,10 +429,11 @@ public class CubeControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, cubeService.purgeCube(cube), "");
     }
 
-    @RequestMapping(value = "/{cubeName}/clone", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/clone", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse cloneCubeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName, @RequestBody CubeRequest cubeRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse cloneCubeV2(@PathVariable String cubeName, @RequestBody CubeRequest cubeRequest)
+            throws IOException {
         Message msg = MsgPicker.getMsg();
 
         String newCubeName = cubeRequest.getCubeName();
@@ -440,10 +465,10 @@ public class CubeControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, newCube, "");
     }
 
-    @RequestMapping(value = "/{cubeName}/enable", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/enable", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse enableCubeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse enableCubeV2(@PathVariable String cubeName) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -454,10 +479,10 @@ public class CubeControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, cubeService.enableCube(cube), "");
     }
 
-    @RequestMapping(value = "/{cubeName}", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void deleteCubeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void deleteCubeV2(@PathVariable String cubeName) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
@@ -477,10 +502,10 @@ public class CubeControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/hbase", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/hbase", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getHBaseInfoV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getHBaseInfoV2(@PathVariable String cubeName) {
         Message msg = MsgPicker.getMsg();
 
         List<HBaseResponse> hbase = new ArrayList<HBaseResponse>();
@@ -531,13 +556,14 @@ public class CubeControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/holes", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/holes", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getHolesV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getHolesV2(@PathVariable String cubeName) {
 
         checkCubeNameV2(cubeName);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, cubeService.getCubeManager().calculateHoles(cubeName), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, cubeService.getCubeManager().calculateHoles(cubeName),
+                "");
     }
 
     /**
@@ -547,10 +573,10 @@ public class CubeControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/holes", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/holes", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse fillHolesV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse fillHolesV2(@PathVariable String cubeName) {
 
         checkCubeNameV2(cubeName);
 
@@ -572,7 +598,7 @@ public class CubeControllerV2 extends BasicController {
                 request.setSourceOffsetEnd(hole.getSourceOffsetEnd());
                 request.setSourcePartitionOffsetEnd(hole.getSourcePartitionOffsetEnd());
                 try {
-                    JobInstance job = (JobInstance) build2V2(lang, cubeName, request).data;
+                    JobInstance job = (JobInstance) build2V2(cubeName, request).data;
                     jobs.add(job);
                 } catch (Exception e) {
                     // it may exceed the max allowed job number
@@ -586,7 +612,7 @@ public class CubeControllerV2 extends BasicController {
                 request.setEndTime(hole.getDateRangeEnd());
 
                 try {
-                    JobInstance job = (JobInstance) buildV2(lang, cubeName, request).data;
+                    JobInstance job = (JobInstance) buildV2(cubeName, request).data;
                     jobs.add(job);
                 } catch (Exception e) {
                     // it may exceed the max allowed job number
@@ -606,10 +632,10 @@ public class CubeControllerV2 extends BasicController {
      * @return
      */
 
-    @RequestMapping(value = "/{cubeName}/init_start_offsets", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/init_start_offsets", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse initStartOffsetsV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse initStartOffsetsV2(@PathVariable String cubeName) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         checkCubeNameV2(cubeName);
@@ -629,9 +655,10 @@ public class CubeControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, response, "");
     }
 
-    @RequestMapping(value = "/checkNameAvailability/{cubeName}", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/checkNameAvailability/{cubeName}", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse checkNameAvailabilityV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
+    public EnvelopeResponse checkNameAvailabilityV2(@PathVariable String cubeName) {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, cubeService.checkNameAvailability(cubeName), "");
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeDescControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeDescControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeDescControllerV2.java
index da429f5..fb90790 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeDescControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeDescControllerV2.java
@@ -34,7 +34,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -60,10 +59,10 @@ public class CubeDescControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getCubeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getCubeV2(@PathVariable String cubeName) {
         Message msg = MsgPicker.getMsg();
 
         CubeInstance cubeInstance = cubeService.getCubeManager().getCube(cubeName);
@@ -88,10 +87,10 @@ public class CubeDescControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{cubeName}/desc", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{cubeName}/desc", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getDescV2(@RequestHeader("Accept-Language") String lang, @PathVariable String cubeName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getDescV2(@PathVariable String cubeName) {
         Message msg = MsgPicker.getMsg();
 
         HashMap<String, CubeDesc> data = new HashMap<String, CubeDesc>();

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/DiagnosisControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/DiagnosisControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/DiagnosisControllerV2.java
index 636e81c..eb4b078 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/DiagnosisControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/DiagnosisControllerV2.java
@@ -30,7 +30,6 @@ import org.apache.kylin.metadata.badquery.BadQueryEntry;
 import org.apache.kylin.metadata.badquery.BadQueryHistory;
 import org.apache.kylin.metadata.project.ProjectInstance;
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.ResponseCode;
 import org.apache.kylin.rest.service.DiagnosisService;
@@ -41,7 +40,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -67,10 +65,13 @@ public class DiagnosisControllerV2 extends BasicController {
      * Get bad query history
      */
 
-    @RequestMapping(value = "/sql", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/sql", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getBadQuerySqlV2(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "project", required = false) String project, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getBadQuerySqlV2(@RequestParam(value = "project", required = false) String project,
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize)
+            throws IOException {
 
         HashMap<String, Object> data = new HashMap<String, Object>();
         List<BadQueryEntry> badEntry = Lists.newArrayList();
@@ -106,10 +107,11 @@ public class DiagnosisControllerV2 extends BasicController {
      * Get diagnosis information for project
      */
 
-    @RequestMapping(value = "/project/{project}/download", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/project/{project}/download", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void dumpProjectDiagnosisInfoV2(@RequestHeader("Accept-Language") String lang, @PathVariable String project, final HttpServletRequest request, final HttpServletResponse response) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void dumpProjectDiagnosisInfoV2(@PathVariable String project, final HttpServletRequest request,
+            final HttpServletResponse response) throws IOException {
 
         String filePath;
         filePath = dgService.dumpProjectDiagnosisInfo(project);
@@ -121,10 +123,11 @@ public class DiagnosisControllerV2 extends BasicController {
      * Get diagnosis information for job
      */
 
-    @RequestMapping(value = "/job/{jobId}/download", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/job/{jobId}/download", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void dumpJobDiagnosisInfoV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId, final HttpServletRequest request, final HttpServletResponse response) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void dumpJobDiagnosisInfoV2(@PathVariable String jobId, final HttpServletRequest request,
+            final HttpServletResponse response) throws IOException {
 
         String filePath;
         filePath = dgService.dumpJobDiagnosisInfo(jobId);

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/EncodingControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/EncodingControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/EncodingControllerV2.java
index edb58b4..f509913 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/EncodingControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/EncodingControllerV2.java
@@ -24,8 +24,6 @@ import java.util.Set;
 
 import org.apache.kylin.metadata.datatype.DataType;
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.Message;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.ResponseCode;
 import org.apache.kylin.rest.service.EncodingService;
@@ -34,7 +32,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -58,11 +55,10 @@ public class EncodingControllerV2 extends BasicController {
      * @return suggestion map
      */
 
-    @RequestMapping(value = "valid_encodings", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "valid_encodings", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getValidEncodingsV2(@RequestHeader("Accept-Language") String lang) {
-        MsgPicker.setMsg(lang);
-        Message msg = MsgPicker.getMsg();
+    public EnvelopeResponse getValidEncodingsV2() {
 
         Set<String> allDatatypes = Sets.newHashSet();
         allDatatypes.addAll(DataType.DATETIME_FAMILY);

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/ExternalFilterControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/ExternalFilterControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/ExternalFilterControllerV2.java
index 4e82b41..37dc6e3 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/ExternalFilterControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/ExternalFilterControllerV2.java
@@ -25,7 +25,6 @@ import java.util.UUID;
 import org.apache.kylin.common.util.JsonUtil;
 import org.apache.kylin.metadata.model.ExternalFilterDesc;
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.request.ExternalFilterRequest;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.ResponseCode;
@@ -37,7 +36,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -57,10 +55,10 @@ public class ExternalFilterControllerV2 extends BasicController {
     @Qualifier("extFilterService")
     private ExtFilterService extFilterService;
 
-    @RequestMapping(value = "/saveExtFilter", method = { RequestMethod.POST }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/saveExtFilter", method = { RequestMethod.POST }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void saveExternalFilterV2(@RequestHeader("Accept-Language") String lang, @RequestBody ExternalFilterRequest request) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void saveExternalFilterV2(@RequestBody ExternalFilterRequest request) throws IOException {
 
         String filterProject = request.getProject();
         ExternalFilterDesc desc = JsonUtil.readValue(request.getExtFilter(), ExternalFilterDesc.class);
@@ -69,20 +67,20 @@ public class ExternalFilterControllerV2 extends BasicController {
         extFilterService.syncExtFilterToProject(new String[] { desc.getName() }, filterProject);
     }
 
-    @RequestMapping(value = "/updateExtFilter", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/updateExtFilter", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void updateExternalFilterV2(@RequestHeader("Accept-Language") String lang, @RequestBody ExternalFilterRequest request) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void updateExternalFilterV2(@RequestBody ExternalFilterRequest request) throws IOException {
 
         ExternalFilterDesc desc = JsonUtil.readValue(request.getExtFilter(), ExternalFilterDesc.class);
         extFilterService.updateExternalFilter(desc);
         extFilterService.syncExtFilterToProject(new String[] { desc.getName() }, request.getProject());
     }
 
-    @RequestMapping(value = "/{filter}/{project}", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{filter}/{project}", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void removeFilterV2(@RequestHeader("Accept-Language") String lang, @PathVariable String filter, @PathVariable String project) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void removeFilterV2(@PathVariable String filter, @PathVariable String project) throws IOException {
 
         extFilterService.removeExtFilterFromProject(filter, project);
         extFilterService.removeExternalFilter(filter);
@@ -90,8 +88,8 @@ public class ExternalFilterControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getExternalFiltersV2(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "project", required = true) String project) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getExternalFiltersV2(@RequestParam(value = "project", required = true) String project)
+            throws IOException {
 
         List<ExternalFilterDesc> filterDescs = Lists.newArrayList();
         filterDescs.addAll(extFilterService.getProjectManager().listExternalFilterDescs(project).values());

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
index ddf745a..e6d41f8 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
@@ -19,7 +19,6 @@
 package org.apache.kylin.rest.controller2;
 
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.request.HybridRequest;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.ResponseCode;
@@ -29,7 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -44,34 +42,33 @@ public class HybridControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = RequestMethod.POST, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse createV2(@RequestHeader("Accept-Language") String lang, @RequestBody HybridRequest request) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse createV2(@RequestBody HybridRequest request) {
 
         checkRequiredArg("hybrid", request.getHybrid());
         checkRequiredArg("project", request.getProject());
         checkRequiredArg("model", request.getModel());
         checkRequiredArg("cubes", request.getCubes());
-        HybridInstance instance = hybridService.createHybridCube(request.getHybrid(), request.getProject(), request.getModel(), request.getCubes());
+        HybridInstance instance = hybridService.createHybridCube(request.getHybrid(), request.getProject(),
+                request.getModel(), request.getCubes());
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, "");
     }
 
     @RequestMapping(value = "", method = RequestMethod.PUT, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse updateV2(@RequestHeader("Accept-Language") String lang, @RequestBody HybridRequest request) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse updateV2(@RequestBody HybridRequest request) {
 
         checkRequiredArg("hybrid", request.getHybrid());
         checkRequiredArg("project", request.getProject());
         checkRequiredArg("model", request.getModel());
         checkRequiredArg("cubes", request.getCubes());
-        HybridInstance instance = hybridService.updateHybridCube(request.getHybrid(), request.getProject(), request.getModel(), request.getCubes());
+        HybridInstance instance = hybridService.updateHybridCube(request.getHybrid(), request.getProject(),
+                request.getModel(), request.getCubes());
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, "");
     }
 
     @RequestMapping(value = "", method = RequestMethod.DELETE, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void deleteV2(@RequestHeader("Accept-Language") String lang, @RequestBody HybridRequest request) {
-        MsgPicker.setMsg(lang);
+    public void deleteV2(@RequestBody HybridRequest request) {
 
         checkRequiredArg("hybrid", request.getHybrid());
         checkRequiredArg("project", request.getProject());
@@ -81,16 +78,16 @@ public class HybridControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse listV2(@RequestHeader("Accept-Language") String lang, @RequestParam(required = false) String project, @RequestParam(required = false) String model) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse listV2(@RequestParam(required = false) String project,
+            @RequestParam(required = false) String model) {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, hybridService.listHybrids(project, model), "");
     }
 
-    @RequestMapping(value = "{hybrid}", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "{hybrid}", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getV2(@RequestHeader("Accept-Language") String lang, @PathVariable String hybrid) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getV2(@PathVariable String hybrid) {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, hybridService.getHybridInstance(hybrid), "");
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/JobControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/JobControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/JobControllerV2.java
index 2bcc11b..27126b6 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/JobControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/JobControllerV2.java
@@ -31,7 +31,6 @@ import org.apache.kylin.job.constant.JobStatusEnum;
 import org.apache.kylin.job.constant.JobTimeFilterEnum;
 import org.apache.kylin.job.exception.JobException;
 import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.ResponseCode;
 import org.apache.kylin.rest.service.JobService;
@@ -41,7 +40,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -107,15 +105,14 @@ public class JobControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse listV2(@RequestHeader("Accept-Language") String lang, //
-            @RequestParam(value = "status", required = false) Integer[] status, //
+    public EnvelopeResponse listV2(@RequestParam(value = "status", required = false) Integer[] status, //
             @RequestParam(value = "timeFilter", required = true) Integer timeFilter, //
             @RequestParam(value = "cubeName", required = false) String cubeName, //
             @RequestParam(value = "projectName", required = false) String projectName, //
             @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, //
             @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize, //
-            @RequestParam(value = "sortby", required = false, defaultValue = "last_modify") String sortby, @RequestParam(value = "reverse", required = false, defaultValue = "true") Boolean reverse) {
-        MsgPicker.setMsg(lang);
+            @RequestParam(value = "sortby", required = false, defaultValue = "last_modify") String sortby,
+            @RequestParam(value = "reverse", required = false, defaultValue = "true") Boolean reverse) {
 
         HashMap<String, Object> data = new HashMap<String, Object>();
         List<JobStatusEnum> statusList = new ArrayList<JobStatusEnum>();
@@ -126,7 +123,8 @@ public class JobControllerV2 extends BasicController {
             }
         }
 
-        List<JobInstance> jobInstanceList = jobService.searchJobs(cubeName, projectName, statusList, JobTimeFilterEnum.getByCode(timeFilter));
+        List<JobInstance> jobInstanceList = jobService.searchJobs(cubeName, projectName, statusList,
+                JobTimeFilterEnum.getByCode(timeFilter));
 
         if (sortby.equals("last_modify")) {
             if (reverse) {
@@ -174,10 +172,10 @@ public class JobControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{jobId}", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{jobId}", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getV2(@PathVariable String jobId) {
 
         JobInstance jobInstance = jobService.getJobInstance(jobId);
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, jobInstance, "");
@@ -190,10 +188,10 @@ public class JobControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{jobId}/steps/{stepId}/output", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{jobId}/steps/{stepId}/output", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getStepOutputV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId, @PathVariable String stepId) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getStepOutputV2(@PathVariable String jobId, @PathVariable String stepId) {
 
         Map<String, String> result = new HashMap<String, String>();
         result.put("jobId", jobId);
@@ -209,10 +207,10 @@ public class JobControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{jobId}/resume", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{jobId}/resume", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse resumeV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse resumeV2(@PathVariable String jobId) {
 
         final JobInstance jobInstance = jobService.getJobInstance(jobId);
         jobService.resumeJob(jobInstance);
@@ -226,10 +224,10 @@ public class JobControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{jobId}/cancel", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{jobId}/cancel", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse cancelV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse cancelV2(@PathVariable String jobId) throws IOException {
 
         final JobInstance jobInstance = jobService.getJobInstance(jobId);
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, jobService.cancelJob(jobInstance), "");
@@ -242,10 +240,10 @@ public class JobControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{jobId}/pause", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{jobId}/pause", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse pauseV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse pauseV2(@PathVariable String jobId) {
 
         final JobInstance jobInstance = jobService.getJobInstance(jobId);
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, jobService.pauseJob(jobInstance), "");
@@ -258,10 +256,10 @@ public class JobControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{jobId}/steps/{stepId}/rollback", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{jobId}/steps/{stepId}/rollback", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse rollbackV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId, @PathVariable String stepId) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse rollbackV2(@PathVariable String jobId, @PathVariable String stepId) {
 
         final JobInstance jobInstance = jobService.getJobInstance(jobId);
         jobService.rollbackJob(jobInstance, stepId);
@@ -275,10 +273,10 @@ public class JobControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{jobId}/drop", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{jobId}/drop", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse dropJobV2(@RequestHeader("Accept-Language") String lang, @PathVariable String jobId) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse dropJobV2(@PathVariable String jobId) throws IOException {
 
         JobInstance jobInstance = jobService.getJobInstance(jobId);
         jobService.dropJob(jobInstance);

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
index aa907a6..9e47790 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
@@ -56,7 +56,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -76,7 +75,8 @@ import com.google.common.collect.Sets;
 public class ModelControllerV2 extends BasicController {
     private static final Logger logger = LoggerFactory.getLogger(ModelControllerV2.class);
 
-    public static final char[] VALID_MODELNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_".toCharArray();
+    public static final char[] VALID_MODELNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"
+            .toCharArray();
 
     @Autowired
     @Qualifier("modelMgmtService")
@@ -92,9 +92,11 @@ public class ModelControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getModelsPaging(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "modelName", required = false) String modelName, @RequestParam(value = "projectName", required = false) String projectName, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) throws IOException {
-        MsgPicker.setMsg(lang);
-
+    public EnvelopeResponse getModelsPaging(@RequestParam(value = "modelName", required = false) String modelName,
+            @RequestParam(value = "projectName", required = false) String projectName,
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize)
+            throws IOException {
         HashMap<String, Object> data = new HashMap<String, Object>();
         List<DataModelDesc> models = modelService.listAllModels(modelName, projectName);
 
@@ -131,13 +133,13 @@ public class ModelControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse updateModelDescV2(@RequestHeader("Accept-Language") String lang, @RequestBody ModelRequest modelRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse updateModelDescV2(@RequestBody ModelRequest modelRequest) throws IOException {
 
         DataModelDesc modelDesc = deserializeDataModelDescV2(modelRequest);
         modelService.validateModelDesc(modelDesc);
 
-        String projectName = (null == modelRequest.getProject()) ? ProjectInstance.DEFAULT_PROJECT_NAME : modelRequest.getProject();
+        String projectName = (null == modelRequest.getProject()) ? ProjectInstance.DEFAULT_PROJECT_NAME
+                : modelRequest.getProject();
 
         ResourceStore store = ResourceStore.getStore(KylinConfig.getInstanceFromEnv());
         Checkpoint cp = store.checkpoint();
@@ -160,15 +162,16 @@ public class ModelControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
     }
 
-    @RequestMapping(value = "/draft", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/draft", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse updateModelDescDraftV2(@RequestHeader("Accept-Language") String lang, @RequestBody ModelRequest modelRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse updateModelDescDraftV2(@RequestBody ModelRequest modelRequest) throws IOException {
 
         DataModelDesc modelDesc = deserializeDataModelDescV2(modelRequest);
         modelService.validateModelDesc(modelDesc);
 
-        String projectName = (null == modelRequest.getProject()) ? ProjectInstance.DEFAULT_PROJECT_NAME : modelRequest.getProject();
+        String projectName = (null == modelRequest.getProject()) ? ProjectInstance.DEFAULT_PROJECT_NAME
+                : modelRequest.getProject();
 
         ResourceStore store = ResourceStore.getStore(KylinConfig.getInstanceFromEnv());
         Checkpoint cp = store.checkpoint();
@@ -191,10 +194,10 @@ public class ModelControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
     }
 
-    @RequestMapping(value = "/{modelName}", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{modelName}", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void deleteModelV2(@RequestHeader("Accept-Language") String lang, @PathVariable String modelName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void deleteModelV2(@PathVariable String modelName) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         DataModelDesc desc = modelService.getMetadataManager().getDataModelDesc(modelName);
@@ -204,10 +207,11 @@ public class ModelControllerV2 extends BasicController {
         modelService.dropModel(desc);
     }
 
-    @RequestMapping(value = "/{modelName}/clone", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{modelName}/clone", method = { RequestMethod.PUT }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse cloneModelV2(@RequestHeader("Accept-Language") String lang, @PathVariable String modelName, @RequestBody ModelRequest modelRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse cloneModelV2(@PathVariable String modelName, @RequestBody ModelRequest modelRequest)
+            throws IOException {
         Message msg = MsgPicker.getMsg();
 
         String project = modelRequest.getProject();
@@ -266,19 +270,19 @@ public class ModelControllerV2 extends BasicController {
         return desc;
     }
 
-    @RequestMapping(value = "/checkNameAvailability/{modelName}", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/checkNameAvailability/{modelName}", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse checkNameAvailabilityV2(@RequestHeader("Accept-Language") String lang, @PathVariable String modelName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse checkNameAvailabilityV2(@PathVariable String modelName) throws IOException {
 
         boolean ret = modelService.checkNameAvailability(modelName);
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, ret, "");
     }
 
-    @RequestMapping(value = "/{modelName}/usedCols", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{modelName}/usedCols", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getUsedColsV2(@RequestHeader("Accept-Language") String lang, @PathVariable String modelName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getUsedColsV2(@PathVariable String modelName) {
 
         Map<String, Set<String>> data = new HashMap<>();
 
@@ -293,7 +297,8 @@ public class ModelControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
     }
 
-    private void populateUsedColResponse(TblColRef tblColRef, Set<CubeInstance> cubeInstances, Map<String, Set<String>> ret) {
+    private void populateUsedColResponse(TblColRef tblColRef, Set<CubeInstance> cubeInstances,
+            Map<String, Set<String>> ret) {
         String columnIdentity = tblColRef.getIdentity();
         if (!ret.containsKey(columnIdentity)) {
             ret.put(columnIdentity, Sets.<String> newHashSet());

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelDescControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelDescControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelDescControllerV2.java
index 47aa902..56291ed 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelDescControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelDescControllerV2.java
@@ -36,7 +36,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -61,10 +60,10 @@ public class ModelDescControllerV2 extends BasicController {
      * @return
      * @throws IOException
      */
-    @RequestMapping(value = "/{modelName}", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{modelName}", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getModelV2(@RequestHeader("Accept-Language") String lang, @PathVariable String modelName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getModelV2(@PathVariable String modelName) {
         Message msg = MsgPicker.getMsg();
 
         HashMap<String, DataModelDescResponse> data = new HashMap<String, DataModelDescResponse>();

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
index 4c43b61..8ce9ee5 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
@@ -40,7 +40,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -54,7 +53,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 public class ProjectControllerV2 extends BasicController {
     private static final Logger logger = LoggerFactory.getLogger(ProjectControllerV2.class);
 
-    private static final char[] VALID_PROJECTNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_".toCharArray();
+    private static final char[] VALID_PROJECTNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"
+            .toCharArray();
 
     @Autowired
     @Qualifier("projectService")
@@ -62,8 +62,9 @@ public class ProjectControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getProjectsV2(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getProjectsV2(
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
 
         int offset = pageOffset * pageSize;
         int limit = pageSize;
@@ -71,10 +72,12 @@ public class ProjectControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, projectService.listProjects(limit, offset), "");
     }
 
-    @RequestMapping(value = "/readable", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/readable", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getReadableProjectsV2(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getReadableProjectsV2(
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
 
         HashMap<String, Object> data = new HashMap<String, Object>();
 
@@ -98,8 +101,7 @@ public class ProjectControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.POST }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse saveProjectV2(@RequestHeader("Accept-Language") String lang, @RequestBody ProjectRequest projectRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse saveProjectV2(@RequestBody ProjectRequest projectRequest) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         ProjectInstance projectDesc = deserializeProjectDescV2(projectRequest);
@@ -109,7 +111,8 @@ public class ProjectControllerV2 extends BasicController {
         }
 
         if (!StringUtils.containsOnly(projectDesc.getName(), VALID_PROJECTNAME)) {
-            logger.info("Invalid Project name {}, only letters, numbers and underline supported.", projectDesc.getName());
+            logger.info("Invalid Project name {}, only letters, numbers and underline supported.",
+                    projectDesc.getName());
             throw new BadRequestException(String.format(msg.getINVALID_PROJECT_NAME(), projectDesc.getName()));
         }
 
@@ -121,8 +124,7 @@ public class ProjectControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse updateProjectV2(@RequestHeader("Accept-Language") String lang, @RequestBody ProjectRequest projectRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse updateProjectV2(@RequestBody ProjectRequest projectRequest) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         String formerProjectName = projectRequest.getFormerProjectName();
@@ -150,10 +152,10 @@ public class ProjectControllerV2 extends BasicController {
         return projectDesc;
     }
 
-    @RequestMapping(value = "/{projectName}", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{projectName}", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void deleteProjectV2(@RequestHeader("Accept-Language") String lang, @PathVariable String projectName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void deleteProjectV2(@PathVariable String projectName) throws IOException {
 
         ProjectInstance project = projectService.getProjectManager().getProject(projectName);
         projectService.deleteProject(projectName, project);