KYLIN-2854 Remove duplicated controllers

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

Branch: refs/heads/ranger
Commit: 9230663940177f0d4ef87d24ebeb67f0ee1a50e6
Parents: 8edc901
Author: Li Yang <liy...@apache.org>
Authored: Thu Sep 7 13:23:43 2017 +0800
Committer: Roger Shi <rogershijich...@gmail.com>
Committed: Thu Sep 7 13:32:42 2017 +0800

----------------------------------------------------------------------
 .../rest/controller2/AccessControllerV2.java    | 166 -----
 .../rest/controller2/AdminControllerV2.java     | 105 ----
 .../rest/controller2/CacheControllerV2.java     |  91 ---
 .../rest/controller2/CubeControllerV2.java      | 612 -------------------
 .../rest/controller2/CubeDescControllerV2.java  |  85 ---
 .../rest/controller2/DiagnosisControllerV2.java | 137 -----
 .../rest/controller2/EncodingControllerV2.java  |  76 ---
 .../controller2/ExternalFilterControllerV2.java |  99 ---
 .../rest/controller2/HybridControllerV2.java    |  94 ---
 .../kylin/rest/controller2/JobControllerV2.java | 298 ---------
 .../rest/controller2/ModelControllerV2.java     | 335 ----------
 .../rest/controller2/ModelDescControllerV2.java | 113 ----
 .../rest/controller2/ProjectControllerV2.java   | 180 ------
 .../rest/controller2/QueryControllerV2.java     | 212 -------
 .../rest/controller2/StreamingControllerV2.java | 297 ---------
 .../rest/controller2/TableAclControllerV2.java  |  99 ---
 .../rest/controller2/TableControllerV2.java     | 164 -----
 .../rest/controller2/UserControllerV2.java      | 104 ----
 .../apache/kylin/rest/service/ModelService.java |   5 +-
 19 files changed, 3 insertions(+), 3269 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index bd7d897..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/AccessControllerV2.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-import java.io.IOException;
-
-import org.apache.kylin.common.persistence.AclEntity;
-import org.apache.kylin.cube.CubeInstance;
-import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.request.AccessRequest;
-import org.apache.kylin.rest.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.security.AclEntityType;
-import org.apache.kylin.rest.security.AclPermissionFactory;
-import org.apache.kylin.rest.service.AccessService;
-import org.apache.kylin.rest.service.CubeService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.security.acls.model.Acl;
-import org.springframework.security.acls.model.Permission;
-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.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-/**
- * @author xduo
- * 
- */
-@Controller
-@RequestMapping(value = "/access")
-public class AccessControllerV2 extends BasicController {
-
-    @Autowired
-    @Qualifier("accessService")
-    private AccessService accessService;
-
-    @Autowired
-    @Qualifier("cubeMgmtService")
-    private CubeService cubeService;
-
-    /**
-     * Get access entry list of a domain object
-     * 
-     * @param uuid
-     * @return
-     * @throws IOException
-     */
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.GET }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getAccessEntitiesV2(@PathVariable String type, 
@PathVariable String uuid) {
-
-        AclEntity ae = accessService.getAclEntity(type, uuid);
-        Acl acl = accessService.getAcl(ae);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
accessService.generateAceResponses(acl), "");
-    }
-
-    /**
-     * List access entry list of a domain object including its parent
-     * @param type
-     * @param uuid
-     * @return
-     */
-    @RequestMapping(value = "all/{type}/{uuid}", method = { RequestMethod.GET 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse listAccessEntitiesV2(@PathVariable String type, 
@PathVariable String uuid) {
-        AclEntity ae = accessService.getAclEntity(type, uuid);
-        Acl acl = accessService.getAcl(ae);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
accessService.generateAllAceResponses(acl), "");
-    }
-
-    /**
-     * Grant a new access on a domain object to a user/role
-     * 
-     * @param accessRequest
-     */
-
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.POST }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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());
-        Permission permission = 
AclPermissionFactory.getPermission(accessRequest.getPermission());
-        Acl acl = accessService.grant(ae, permission, sid);
-
-        if (AclEntityType.CUBE_INSTANCE.equals(type)) {
-            CubeInstance instance = 
cubeService.getCubeManager().getCubeByUuid(uuid);
-            if (instance != null) {
-                AclEntity model = 
accessService.getAclEntity(AclEntityType.DATA_MODEL_DESC, 
instance.getModel().getUuid());
-                // FIXME: should not always grant
-                accessService.grant(model, permission, sid);
-            }
-        }
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
accessService.generateAceResponses(acl), "");
-    }
-
-    /**
-     * Update a access on a domain object
-     * 
-     * @param accessRequest
-     */
-
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.PUT }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse updateV2(@PathVariable String type, @PathVariable 
String uuid,
-            @RequestBody AccessRequest accessRequest) {
-
-        AclEntity ae = accessService.getAclEntity(type, uuid);
-        Permission permission = 
AclPermissionFactory.getPermission(accessRequest.getPermission());
-        Acl acl = accessService.update(ae, accessRequest.getAccessEntryId(), 
permission);
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
accessService.generateAceResponses(acl), "");
-    }
-
-    /**
-     * Revoke access on a domain object from a user/role
-     * 
-     * @param accessRequest
-     */
-
-    @RequestMapping(value = "/{type}/{uuid}", method = { RequestMethod.DELETE 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse revokeV2(@PathVariable String type, @PathVariable 
String uuid,
-            AccessRequest accessRequest) {
-
-        AclEntity ae = accessService.getAclEntity(type, uuid);
-        Acl acl = accessService.revoke(ae, accessRequest.getAccessEntryId());
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
accessService.generateAceResponses(acl), "");
-    }
-
-    /**
-     * @param accessService
-     */
-    public void setAccessService(AccessService accessService) {
-        this.accessService = accessService;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index 9395fb6..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/AdminControllerV2.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-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.request.MetricsRequest;
-import org.apache.kylin.rest.request.UpdateConfigRequest;
-import org.apache.kylin.rest.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.service.AdminService;
-import org.apache.kylin.rest.service.CubeService;
-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.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-/**
- * Admin Controller is defined as Restful API entrance for UI.
- * 
- * @author jianliu
- * 
- */
-@Controller
-@RequestMapping(value = "/admin")
-public class AdminControllerV2 extends BasicController {
-
-    @Autowired
-    @Qualifier("adminService")
-    private AdminService adminService;
-
-    @Autowired
-    @Qualifier("cubeMgmtService")
-    private CubeService cubeMgmtService;
-
-    @RequestMapping(value = "/env", method = { RequestMethod.GET }, produces = 
{
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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" })
-    @ResponseBody
-    public EnvelopeResponse getConfigV2() throws IOException {
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
adminService.exportToString(), "");
-    }
-
-    @RequestMapping(value = "/metrics/cubes", method = { RequestMethod.GET }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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" })
-    @ResponseBody
-    public void cleanupStorageV2() {
-
-        adminService.cleanupStorage();
-    }
-
-    @RequestMapping(value = "/config", method = { RequestMethod.PUT }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public void updateKylinConfigV2(@RequestBody UpdateConfigRequest 
updateConfigRequest) {
-
-        
KylinConfig.getInstanceFromEnv().setProperty(updateConfigRequest.getKey(), 
updateConfigRequest.getValue());
-    }
-
-    public void setAdminService(AdminService adminService) {
-        this.adminService = adminService;
-    }
-
-    public void setCubeMgmtService(CubeService cubeMgmtService) {
-        this.cubeMgmtService = cubeMgmtService;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index 73d6a4f..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/CacheControllerV2.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-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.service.CacheService;
-import org.slf4j.Logger;
-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.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-/**
- * CubeController is defined as Restful API entrance for UI.
- *
- * @author jianliu
- */
-@Controller
-@RequestMapping(value = "/cache")
-public class CacheControllerV2 extends BasicController {
-
-    @SuppressWarnings("unused")
-    private static final Logger logger = 
LoggerFactory.getLogger(CacheControllerV2.class);
-
-    @Autowired
-    @Qualifier("cacheService")
-    private CacheService cacheService;
-
-    /**
-     * Announce wipe cache to all cluster nodes
-     */
-
-    @RequestMapping(value = "/announce/{entity}/{cacheKey}/{event}", method = 
{ RequestMethod.PUT }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public void announceWipeCacheV2(@PathVariable String entity, @PathVariable 
String event,
-            @PathVariable String cacheKey) throws IOException {
-
-        cacheService.annouceWipeCache(entity, event, cacheKey);
-    }
-
-    /**
-     * Wipe cache on this node
-     */
-
-    @RequestMapping(value = "/{entity}/{cacheKey}/{event}", method = { 
RequestMethod.PUT }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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" })
-    @ResponseBody
-    public void hotLoadKylinConfigV2() throws IOException {
-
-        KylinConfig.getInstanceFromEnv().reloadFromSiteProperties();
-        cacheService.notifyMetadataChange(Broadcaster.SYNC_ALL, 
Broadcaster.Event.UPDATE, Broadcaster.SYNC_ALL);
-    }
-
-    public void setCacheService(CacheService cacheService) {
-        this.cacheService = cacheService;
-    }
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index e8337ab..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
+++ /dev/null
@@ -1,612 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-import java.io.IOException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.kylin.cube.CubeInstance;
-import org.apache.kylin.cube.CubeManager;
-import org.apache.kylin.cube.CubeSegment;
-import org.apache.kylin.cube.model.CubeBuildTypeEnum;
-import org.apache.kylin.cube.model.CubeDesc;
-import org.apache.kylin.dimension.DimensionEncodingFactory;
-import org.apache.kylin.engine.EngineFactory;
-import org.apache.kylin.job.JobInstance;
-import org.apache.kylin.job.JoinedFlatTable;
-import org.apache.kylin.metadata.draft.Draft;
-import org.apache.kylin.metadata.model.IJoinedFlatTableDesc;
-import org.apache.kylin.metadata.model.ISourceAware;
-import org.apache.kylin.metadata.model.SegmentRange;
-import org.apache.kylin.metadata.model.SegmentRange.TSRange;
-import org.apache.kylin.metadata.realization.RealizationStatusEnum;
-import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.exception.BadRequestException;
-import org.apache.kylin.rest.msg.Message;
-import org.apache.kylin.rest.msg.MsgPicker;
-import org.apache.kylin.rest.request.JobBuildRequest;
-import org.apache.kylin.rest.request.JobBuildRequest2;
-import org.apache.kylin.rest.response.CubeInstanceResponse;
-import org.apache.kylin.rest.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.GeneralResponse;
-import org.apache.kylin.rest.response.HBaseResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.service.CubeService;
-import org.apache.kylin.rest.service.JobService;
-import org.apache.kylin.rest.service.ModelService;
-import org.apache.kylin.rest.service.ProjectService;
-import org.apache.kylin.source.kafka.util.KafkaClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-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.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
-/**
- * CubeController is defined as Restful API entrance for UI.
- */
-@Controller
-@RequestMapping(value = "/cubes")
-public class CubeControllerV2 extends BasicController {
-    private static final Logger logger = 
LoggerFactory.getLogger(CubeControllerV2.class);
-
-    @Autowired
-    @Qualifier("cubeMgmtService")
-    private CubeService cubeService;
-
-    @Autowired
-    @Qualifier("jobService")
-    private JobService jobService;
-
-    @Autowired
-    @Qualifier("projectService")
-    private ProjectService projectService;
-
-    @Autowired
-    @Qualifier("modelMgmtService")
-    private ModelService modelService;
-
-    @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getCubesPaging(@RequestParam(value = "cubeName", 
required = false) String cubeName,
-            @RequestParam(value = "exactMatch", required = false, defaultValue 
= "true") boolean exactMatch,
-            @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<CubeInstanceResponse> response = new 
ArrayList<CubeInstanceResponse>();
-        List<CubeInstance> cubes = cubeService.listAllCubes(cubeName, 
projectName, modelName, exactMatch);
-
-        // official cubes
-        for (CubeInstance cube : cubes) {
-            try {
-                response.add(createCubeInstanceResponse(cube));
-            } catch (Exception e) {
-                logger.error("Error creating cube instance response, 
skipping.", e);
-            }
-        }
-
-        // draft cubes
-        for (Draft d : cubeService.listCubeDrafts(cubeName, modelName, 
projectName, exactMatch)) {
-            CubeDesc c = (CubeDesc) d.getEntity();
-            if (contains(response, c.getName()) == false) {
-                CubeInstanceResponse r = 
createCubeInstanceResponseFromDraft(d);
-                r.setProject(d.getProject());
-                response.add(r);
-            }
-        }
-
-        int offset = pageOffset * pageSize;
-        int limit = pageSize;
-        int size = response.size();
-
-        if (size <= offset) {
-            offset = size;
-            limit = 0;
-        }
-
-        if ((size - offset) < limit) {
-            limit = size - offset;
-        }
-
-        data.put("cubes", response.subList(offset, offset + limit));
-        data.put("size", size);
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
-    }
-
-    private boolean contains(List<CubeInstanceResponse> response, String name) 
{
-        for (CubeInstanceResponse r : response) {
-            if (r.getName().equals(name))
-                return true;
-        }
-        return false;
-    }
-
-    private CubeInstanceResponse createCubeInstanceResponseFromDraft(Draft d) {
-        CubeDesc desc = (CubeDesc) d.getEntity();
-        Preconditions.checkState(desc.isDraft());
-
-        CubeInstance mock = new CubeInstance();
-        mock.setName(desc.getName());
-        mock.setDescName(desc.getName());
-        mock.setStatus(RealizationStatusEnum.DISABLED);
-
-        CubeInstanceResponse r = new CubeInstanceResponse(mock);
-
-        r.setModel(desc.getModelName());
-        r.setProject(d.getProject());
-        r.setDraft(true);
-
-        return r;
-    }
-
-    private CubeInstanceResponse createCubeInstanceResponse(CubeInstance cube) 
{
-        Preconditions.checkState(!cube.getDescriptor().isDraft());
-
-        CubeInstanceResponse r = new CubeInstanceResponse(cube);
-
-        r.setModel(cube.getDescriptor().getModelName());
-        r.setPartitionDateStart(cube.getDescriptor().getPartitionDateStart());
-        // cuz model doesn't have a state the label a model is broken,
-        // so in some case the model can not be loaded due to some check 
failed,
-        // but the cube in this model can still be loaded.
-        if (cube.getModel() != null) {
-            
r.setPartitionDateColumn(cube.getModel().getPartitionDesc().getPartitionDateColumn());
-            r.setIs_streaming(
-                    
cube.getModel().getRootFactTable().getTableDesc().getSourceType() == 
ISourceAware.ID_STREAMING);
-        }
-        r.setProject(projectService.getProjectOfCube(cube.getName()));
-
-        return r;
-    }
-
-    @RequestMapping(value = "validEncodings", method = { RequestMethod.GET }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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" })
-    @ResponseBody
-    public EnvelopeResponse getCubeV2(@PathVariable String cubeName) {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-
-        CubeInstanceResponse r;
-        try {
-            r = createCubeInstanceResponse(cube);
-        } catch (Exception e) {
-            throw new BadRequestException("Error getting cube instance 
response.", ResponseCode.CODE_UNDEFINED, e);
-        }
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, r, "");
-    }
-
-    /**
-     * Get hive SQL of the cube
-     *
-     * @param cubeName Cube Name
-     * @return
-     * @throws UnknownHostException
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{cubeName}/sql", method = { RequestMethod.GET }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getSqlV2(@PathVariable String cubeName) {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-        IJoinedFlatTableDesc flatTableDesc = 
EngineFactory.getJoinedFlatTableDesc(cube.getDescriptor());
-        String sql = 
JoinedFlatTable.generateSelectDataStatement(flatTableDesc);
-
-        GeneralResponse response = new GeneralResponse();
-        response.setProperty("sql", sql);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, response, "");
-    }
-
-    /**
-     * Update cube notify list
-     *
-     * @param cubeName
-     * @param notifyList
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{cubeName}/notify_list", method = { 
RequestMethod.PUT }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public void updateNotifyListV2(@PathVariable String cubeName, @RequestBody 
List<String> notifyList)
-            throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-
-        cubeService.updateCubeNotifyList(cube, notifyList);
-
-    }
-
-    @RequestMapping(value = "/{cubeName}/cost", method = { RequestMethod.PUT 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse updateCubeCostV2(@PathVariable String cubeName, 
@RequestBody Integer cost)
-            throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
cubeService.updateCubeCost(cube, cost), "");
-    }
-
-    /**
-     * Force rebuild a cube's lookup table snapshot
-     *
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{cubeName}/segs/{segmentName}/refresh_lookup", 
method = {
-            RequestMethod.PUT }, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse rebuildLookupSnapshotV2(@PathVariable String 
cubeName, @PathVariable String segmentName,
-            @RequestBody String lookupTable) throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        final CubeManager cubeMgr = cubeService.getCubeManager();
-        final CubeInstance cube = cubeMgr.getCube(cubeName);
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
-                cubeService.rebuildLookupSnapshot(cube, segmentName, 
lookupTable), "");
-    }
-
-    /**
-     * Delete a cube segment
-     *
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{cubeName}/segs/{segmentName}", method = { 
RequestMethod.DELETE }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse deleteSegmentV2(@PathVariable String cubeName, 
@PathVariable String segmentName)
-            throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-
-        CubeSegment segment = cube.getSegment(segmentName, null);
-        if (segment == null) {
-            throw new 
BadRequestException(String.format(msg.getSEG_NOT_FOUND(), segmentName));
-        }
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
cubeService.deleteSegment(cube, segmentName), "");
-    }
-
-    /** Build/Rebuild a cube segment */
-
-    /** Build/Rebuild a cube segment */
-    @RequestMapping(value = "/{cubeName}/build", method = { RequestMethod.PUT 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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" })
-    @ResponseBody
-    public EnvelopeResponse rebuildV2(@PathVariable String cubeName, 
@RequestBody JobBuildRequest req)
-            throws IOException {
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
-                buildInternalV2(cubeName, new TSRange(req.getStartTime(), 
req.getEndTime()), null, 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" })
-    @ResponseBody
-    public EnvelopeResponse build2V2(@PathVariable String cubeName, 
@RequestBody JobBuildRequest2 req)
-            throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        boolean existKafkaClient = false;
-        try {
-            Class<?> clazz = 
Class.forName("org.apache.kafka.clients.consumer.KafkaConsumer");
-            if (clazz != null) {
-                existKafkaClient = true;
-            }
-        } catch (ClassNotFoundException e) {
-            existKafkaClient = false;
-        }
-        if (!existKafkaClient) {
-            throw new BadRequestException(msg.getKAFKA_DEP_NOT_FOUND());
-        }
-        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" })
-    @ResponseBody
-    public EnvelopeResponse rebuild2V2(@PathVariable String cubeName, 
@RequestBody JobBuildRequest2 req)
-            throws IOException {
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
-                buildInternalV2(cubeName, null, new 
SegmentRange(req.getSourceOffsetStart(), req.getSourceOffsetEnd()),
-                        req.getSourcePartitionOffsetStart(), 
req.getSourcePartitionOffsetEnd(), req.getBuildType(),
-                        req.isForce()),
-                "");
-    }
-
-    private JobInstance buildInternalV2(String cubeName, TSRange tsRange, 
SegmentRange segRange, //
-            Map<Integer, Long> sourcePartitionOffsetStart, Map<Integer, Long> 
sourcePartitionOffsetEnd,
-            String buildType, boolean force) throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        String submitter = 
SecurityContextHolder.getContext().getAuthentication().getName();
-        CubeInstance cube = jobService.getCubeManager().getCube(cubeName);
-
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-        if (cube.getDescriptor().isDraft()) {
-            throw new BadRequestException(msg.getBUILD_DRAFT_CUBE());
-        }
-        return jobService.submitJob(cube, tsRange, segRange, 
sourcePartitionOffsetStart, sourcePartitionOffsetEnd,
-                CubeBuildTypeEnum.valueOf(buildType), force, submitter);
-    }
-
-    @RequestMapping(value = "/{cubeName}/purge", method = { RequestMethod.PUT 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse purgeCubeV2(@PathVariable String cubeName) throws 
IOException {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
cubeService.purgeCube(cube), "");
-    }
-
-    /**
-     * get Hbase Info
-     *
-     * @return true
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{cubeName}/hbase", method = { RequestMethod.GET 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getHBaseInfoV2(@PathVariable String cubeName) {
-        Message msg = MsgPicker.getMsg();
-
-        List<HBaseResponse> hbase = new ArrayList<HBaseResponse>();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-        if (cube == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-
-        List<CubeSegment> segments = cube.getSegments();
-
-        for (CubeSegment segment : segments) {
-            String tableName = segment.getStorageLocationIdentifier();
-            HBaseResponse hr = null;
-
-            // Get info of given table.
-            try {
-                hr = cubeService.getHTableInfo(cubeName, tableName);
-            } catch (IOException e) {
-                logger.error("Failed to calculate size of HTable \"" + 
tableName + "\".", e);
-            }
-
-            if (null == hr) {
-                logger.info("Failed to calculate size of HTable \"" + 
tableName + "\".");
-                hr = new HBaseResponse();
-            }
-
-            hr.setTableName(tableName);
-            hr.setDateRangeStart(segment.getTSRange().start.v);
-            hr.setDateRangeEnd(segment.getTSRange().end.v);
-            hr.setSegmentName(segment.getName());
-            hr.setSegmentUUID(segment.getUuid());
-            hr.setSegmentStatus(segment.getStatus().toString());
-            hr.setSourceCount(segment.getInputRecords());
-            if (segment.isOffsetCube()) {
-                hr.setSourceOffsetStart((Long) segment.getSegRange().start.v);
-                hr.setSourceOffsetEnd((Long) segment.getSegRange().end.v);
-            }
-            hbase.add(hr);
-        }
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, hbase, "");
-    }
-
-    /**
-     * get cube segment holes
-     *
-     * @return a list of CubeSegment, each representing a hole
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{cubeName}/holes", method = { RequestMethod.GET 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getHolesV2(@PathVariable String cubeName) {
-
-        checkCubeNameV2(cubeName);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
cubeService.getCubeManager().calculateHoles(cubeName),
-                "");
-    }
-
-    /**
-     * fill cube segment holes
-     *
-     * @return a list of JobInstances to fill the holes
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{cubeName}/holes", method = { RequestMethod.PUT 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse fillHolesV2(@PathVariable String cubeName) {
-
-        checkCubeNameV2(cubeName);
-
-        List<JobInstance> jobs = Lists.newArrayList();
-        List<CubeSegment> holes = 
cubeService.getCubeManager().calculateHoles(cubeName);
-
-        if (holes.size() == 0) {
-            logger.info("No hole detected for cube '" + cubeName + "'");
-            return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, jobs, "");
-        }
-
-        for (CubeSegment hole : holes) {
-            if (hole.isOffsetCube()) {
-                JobBuildRequest2 request = new JobBuildRequest2();
-                request.setBuildType(CubeBuildTypeEnum.BUILD.toString());
-                request.setSourceOffsetStart((Long) 
hole.getSegRange().start.v);
-                request.setSourceOffsetEnd((Long) hole.getSegRange().end.v);
-                
request.setSourcePartitionOffsetStart(hole.getSourcePartitionOffsetStart());
-                
request.setSourcePartitionOffsetEnd(hole.getSourcePartitionOffsetEnd());
-                try {
-                    JobInstance job = (JobInstance) build2V2(cubeName, 
request).data;
-                    jobs.add(job);
-                } catch (Exception e) {
-                    // it may exceed the max allowed job number
-                    logger.info("Error to submit job for hole '" + 
hole.toString() + "', skip it now.", e);
-                    continue;
-                }
-            } else {
-                JobBuildRequest request = new JobBuildRequest();
-                request.setBuildType(CubeBuildTypeEnum.BUILD.toString());
-                request.setStartTime(hole.getTSRange().start.v);
-                request.setEndTime(hole.getTSRange().end.v);
-
-                try {
-                    JobInstance job = (JobInstance) buildV2(cubeName, 
request).data;
-                    jobs.add(job);
-                } catch (Exception e) {
-                    // it may exceed the max allowed job number
-                    logger.info("Error to submit job for hole '" + 
hole.toString() + "', skip it now.", e);
-                    continue;
-                }
-            }
-        }
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, jobs, "");
-    }
-
-    /**
-     * Initiate the very beginning of a streaming cube. Will seek the latest 
offests of each partition from streaming
-     * source (kafka) and record in the cube descriptor; In the first build 
job, it will use these offests as the start point.
-     * @param cubeName
-     * @return
-     */
-
-    @RequestMapping(value = "/{cubeName}/init_start_offsets", method = { 
RequestMethod.PUT }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse initStartOffsetsV2(@PathVariable String cubeName) 
throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        checkCubeNameV2(cubeName);
-        CubeInstance cubeInstance = 
cubeService.getCubeManager().getCube(cubeName);
-        if (cubeInstance.getSourceType() != ISourceAware.ID_STREAMING) {
-            throw new 
BadRequestException(String.format(msg.getNOT_STREAMING_CUBE(), cubeName));
-        }
-
-        final GeneralResponse response = new GeneralResponse();
-        final Map<Integer, Long> startOffsets = 
KafkaClient.getLatestOffsets(cubeInstance);
-        CubeDesc desc = cubeInstance.getDescriptor();
-        desc.setPartitionOffsetStart(startOffsets);
-        cubeService.getCubeDescManager().updateCubeDesc(desc);
-        response.setProperty("result", "success");
-        response.setProperty("offsets", startOffsets.toString());
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, response, "");
-    }
-
-    private void checkCubeNameV2(String cubeName) {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cubeInstance = 
cubeService.getCubeManager().getCube(cubeName);
-
-        if (cubeInstance == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-    }
-
-    public void setCubeService(CubeService cubeService) {
-        this.cubeService = cubeService;
-    }
-
-    public void setJobService(JobService jobService) {
-        this.jobService = jobService;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index 5e2eb34..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeDescControllerV2.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-import java.io.IOException;
-import java.util.HashMap;
-
-import org.apache.kylin.cube.CubeInstance;
-import org.apache.kylin.cube.model.CubeDesc;
-import org.apache.kylin.metadata.draft.Draft;
-import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.exception.BadRequestException;
-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.CubeService;
-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.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.google.common.base.Preconditions;
-
-/**
- */
-@Controller
-@RequestMapping(value = "/cube_desc")
-public class CubeDescControllerV2 extends BasicController {
-
-    @Autowired
-    @Qualifier("cubeMgmtService")
-    private CubeService cubeService;
-
-    @RequestMapping(value = "/{projectName}/{cubeName}", method = 
{RequestMethod.GET}, produces = {
-            "application/vnd.apache.kylin-v2+json"})
-    @ResponseBody
-    public EnvelopeResponse getDescV2(@PathVariable String projectName, 
@PathVariable String cubeName) throws IOException {
-        Message msg = MsgPicker.getMsg();
-
-        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
-        Draft draft = cubeService.getCubeDraft(cubeName, projectName);
-
-        if (cube == null && draft == null) {
-            throw new 
BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
-        }
-
-        HashMap<String, CubeDesc> result = new HashMap<>();
-        if (cube != null) {
-            Preconditions.checkState(!cube.getDescriptor().isDraft());
-            result.put("cube", cube.getDescriptor());
-        }
-        if (draft != null) {
-            CubeDesc dc = (CubeDesc) draft.getEntity();
-            Preconditions.checkState(dc.isDraft());
-            result.put("draft", dc);
-        }
-        
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, result, "");
-    }
-
-    public void setCubeService(CubeService cubeService) {
-        this.cubeService = cubeService;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index eb4b078..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/DiagnosisControllerV2.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.kylin.rest.controller2;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-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.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.service.DiagnosisService;
-import org.apache.kylin.rest.service.ProjectService;
-import org.slf4j.Logger;
-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.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.google.common.collect.Lists;
-
-@Controller
-@RequestMapping(value = "/diag")
-public class DiagnosisControllerV2 extends BasicController {
-
-    private static final Logger logger = 
LoggerFactory.getLogger(DiagnosisControllerV2.class);
-
-    @Autowired
-    @Qualifier("diagnosisService")
-    private DiagnosisService dgService;
-
-    @Autowired
-    @Qualifier("projectService")
-    private ProjectService projectService;
-
-    /**
-     * Get bad query history
-     */
-
-    @RequestMapping(value = "/sql", method = { RequestMethod.GET }, produces = 
{
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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();
-        if (project != null) {
-            BadQueryHistory badQueryHistory = 
dgService.getProjectBadQueryHistory(project);
-            badEntry.addAll(badQueryHistory.getEntries());
-        } else {
-            for (ProjectInstance projectInstance : 
projectService.getReadableProjects()) {
-                BadQueryHistory badQueryHistory = 
dgService.getProjectBadQueryHistory(projectInstance.getName());
-                badEntry.addAll(badQueryHistory.getEntries());
-            }
-        }
-
-        int offset = pageOffset * pageSize;
-        int limit = pageSize;
-
-        if (badEntry.size() <= offset) {
-            offset = badEntry.size();
-            limit = 0;
-        }
-
-        if ((badEntry.size() - offset) < limit) {
-            limit = badEntry.size() - offset;
-        }
-
-        data.put("badQueries", badEntry.subList(offset, offset + limit));
-        data.put("size", badEntry.size());
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
-    }
-
-    /**
-     * Get diagnosis information for project
-     */
-
-    @RequestMapping(value = "/project/{project}/download", method = { 
RequestMethod.GET }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public void dumpProjectDiagnosisInfoV2(@PathVariable String project, final 
HttpServletRequest request,
-            final HttpServletResponse response) throws IOException {
-
-        String filePath;
-        filePath = dgService.dumpProjectDiagnosisInfo(project);
-
-        setDownloadResponse(filePath, response);
-    }
-
-    /**
-     * Get diagnosis information for job
-     */
-
-    @RequestMapping(value = "/job/{jobId}/download", method = { 
RequestMethod.GET }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public void dumpJobDiagnosisInfoV2(@PathVariable String jobId, final 
HttpServletRequest request,
-            final HttpServletResponse response) throws IOException {
-
-        String filePath;
-        filePath = dgService.dumpJobDiagnosisInfo(jobId);
-
-        setDownloadResponse(filePath, response);
-    }
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index f509913..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/EncodingControllerV2.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.kylin.metadata.datatype.DataType;
-import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.service.EncodingService;
-import org.slf4j.Logger;
-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.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-@Controller
-@RequestMapping(value = "/encodings")
-public class EncodingControllerV2 extends BasicController {
-
-    private static final Logger logger = 
LoggerFactory.getLogger(EncodingControllerV2.class);
-
-    @Autowired
-    @Qualifier("encodingService")
-    private EncodingService encodingService;
-
-    /**
-     * Get valid encodings for the datatype, if no datatype parameter, return 
all encodings.
-     *
-     * @return suggestion map
-     */
-
-    @RequestMapping(value = "valid_encodings", method = { RequestMethod.GET }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getValidEncodingsV2() {
-
-        Set<String> allDatatypes = Sets.newHashSet();
-        allDatatypes.addAll(DataType.DATETIME_FAMILY);
-        allDatatypes.addAll(DataType.INTEGER_FAMILY);
-        allDatatypes.addAll(DataType.NUMBER_FAMILY);
-        allDatatypes.addAll(DataType.STRING_FAMILY);
-
-        Map<String, List<String>> datatypeValidEncodings = Maps.newHashMap();
-        for (String dataTypeStr : allDatatypes) {
-            datatypeValidEncodings.put(dataTypeStr, 
encodingService.getValidEncodings(DataType.getType(dataTypeStr)));
-        }
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
datatypeValidEncodings, "");
-    }
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index 37dc6e3..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/ExternalFilterControllerV2.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-import java.io.IOException;
-import java.util.List;
-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.request.ExternalFilterRequest;
-import org.apache.kylin.rest.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.service.ExtFilterService;
-import org.slf4j.Logger;
-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.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.google.common.collect.Lists;
-
-/**
- * @author jiazhong
- */
-@Controller
-@RequestMapping(value = "/extFilter")
-public class ExternalFilterControllerV2 extends BasicController {
-    private static final Logger logger = 
LoggerFactory.getLogger(ExternalFilterControllerV2.class);
-
-    @Autowired
-    @Qualifier("extFilterService")
-    private ExtFilterService extFilterService;
-
-    @RequestMapping(value = "/saveExtFilter", method = { RequestMethod.POST }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public void saveExternalFilterV2(@RequestBody ExternalFilterRequest 
request) throws IOException {
-
-        String filterProject = request.getProject();
-        ExternalFilterDesc desc = JsonUtil.readValue(request.getExtFilter(), 
ExternalFilterDesc.class);
-        desc.setUuid(UUID.randomUUID().toString());
-        extFilterService.saveExternalFilter(desc);
-        extFilterService.syncExtFilterToProject(new String[] { desc.getName() 
}, filterProject);
-    }
-
-    @RequestMapping(value = "/updateExtFilter", method = { RequestMethod.PUT 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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" })
-    @ResponseBody
-    public void removeFilterV2(@PathVariable String filter, @PathVariable 
String project) throws IOException {
-
-        extFilterService.removeExtFilterFromProject(filter, project);
-        extFilterService.removeExternalFilter(filter);
-    }
-
-    @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getExternalFiltersV2(@RequestParam(value = 
"project", required = true) String project)
-            throws IOException {
-
-        List<ExternalFilterDesc> filterDescs = Lists.newArrayList();
-        
filterDescs.addAll(extFilterService.getProjectManager().listExternalFilterDescs(project).values());
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, filterDescs, 
"");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/92306639/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
deleted file mode 100644
index e6d41f8..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-import org.apache.kylin.rest.controller.BasicController;
-import org.apache.kylin.rest.request.HybridRequest;
-import org.apache.kylin.rest.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.service.HybridService;
-import org.apache.kylin.storage.hybrid.HybridInstance;
-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.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@Controller
-@RequestMapping(value = "/hybrids")
-public class HybridControllerV2 extends BasicController {
-
-    @Autowired
-    private HybridService hybridService;
-
-    @RequestMapping(value = "", method = RequestMethod.POST, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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());
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, "");
-    }
-
-    @RequestMapping(value = "", method = RequestMethod.PUT, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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());
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, "");
-    }
-
-    @RequestMapping(value = "", method = RequestMethod.DELETE, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public void deleteV2(@RequestBody HybridRequest request) {
-
-        checkRequiredArg("hybrid", request.getHybrid());
-        checkRequiredArg("project", request.getProject());
-        checkRequiredArg("model", request.getModel());
-        hybridService.deleteHybridCube(request.getHybrid(), 
request.getProject(), request.getModel());
-    }
-
-    @RequestMapping(value = "", method = RequestMethod.GET, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    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" })
-    @ResponseBody
-    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/92306639/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
deleted file mode 100644
index 5a18e66..0000000
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/JobControllerV2.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.rest.controller2;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.kylin.job.JobInstance;
-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.exception.BadRequestException;
-import org.apache.kylin.rest.response.EnvelopeResponse;
-import org.apache.kylin.rest.response.ResponseCode;
-import org.apache.kylin.rest.service.JobService;
-import org.slf4j.Logger;
-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.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@Controller
-@RequestMapping(value = "jobs")
-public class JobControllerV2 extends BasicController {
-    private static final Logger logger = 
LoggerFactory.getLogger(JobControllerV2.class);
-
-    @Autowired
-    @Qualifier("jobService")
-    private JobService jobService;
-
-    private Comparator<JobInstance> lastModifyComparator = new 
Comparator<JobInstance>() {
-        @Override
-        public int compare(JobInstance o1, JobInstance o2) {
-            return new 
Long(o1.getLastModified()).compareTo(o2.getLastModified());
-        }
-    };
-
-    private Comparator<JobInstance> lastModifyComparatorReverse = new 
Comparator<JobInstance>() {
-        @Override
-        public int compare(JobInstance o1, JobInstance o2) {
-            return 0 - new 
Long(o1.getLastModified()).compareTo(o2.getLastModified());
-        }
-    };
-
-    private Comparator<JobInstance> jobNameComparator = new 
Comparator<JobInstance>() {
-        @Override
-        public int compare(JobInstance o1, JobInstance o2) {
-            return o1.getName().compareTo(o2.getName());
-        }
-    };
-
-    private Comparator<JobInstance> jobNameComparatorReverse = new 
Comparator<JobInstance>() {
-        @Override
-        public int compare(JobInstance o1, JobInstance o2) {
-            return 0 - o1.getName().compareTo(o2.getName());
-        }
-    };
-
-    private Comparator<JobInstance> cubeNameComparator = new 
Comparator<JobInstance>() {
-        @Override
-        public int compare(JobInstance o1, JobInstance o2) {
-            return o1.getRelatedCube().compareTo(o2.getRelatedCube());
-        }
-    };
-
-    private Comparator<JobInstance> cubeNameComparatorReverse = new 
Comparator<JobInstance>() {
-        @Override
-        public int compare(JobInstance o1, JobInstance o2) {
-            return 0 - o1.getRelatedCube().compareTo(o2.getRelatedCube());
-        }
-    };
-
-    /**
-     * get all cube jobs
-     * 
-     * @return
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { 
"application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse listV2(@RequestParam(value = "status", required = 
false) Integer[] status, //
-            @RequestParam(value = "timeFilter") Integer timeFilter, //
-            @RequestParam(value = "jobName", required = false) String jobName, 
//
-            @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) {
-
-        HashMap<String, Object> data = new HashMap<String, Object>();
-        List<JobStatusEnum> statusList = new ArrayList<JobStatusEnum>();
-
-        if (null != status) {
-            for (int sta : status) {
-                statusList.add(JobStatusEnum.getByCode(sta));
-            }
-        }
-
-        List<JobInstance> jobInstanceList = 
jobService.searchJobsByJobName(jobName, projectName, statusList,
-                JobTimeFilterEnum.getByCode(timeFilter));
-
-        if (sortby.equals("last_modify")) {
-            if (reverse) {
-                Collections.sort(jobInstanceList, lastModifyComparatorReverse);
-            } else {
-                Collections.sort(jobInstanceList, lastModifyComparator);
-            }
-        } else if (sortby.equals("job_name")) {
-            if (reverse) {
-                Collections.sort(jobInstanceList, jobNameComparatorReverse);
-            } else {
-                Collections.sort(jobInstanceList, jobNameComparator);
-            }
-        } else if (sortby.equals("cube_name")) {
-            if (reverse) {
-                Collections.sort(jobInstanceList, cubeNameComparatorReverse);
-            } else {
-                Collections.sort(jobInstanceList, cubeNameComparator);
-            }
-        }
-
-        int offset = pageOffset * pageSize;
-        int limit = pageSize;
-
-        if (jobInstanceList.size() <= offset) {
-            offset = jobInstanceList.size();
-            limit = 0;
-        }
-
-        if ((jobInstanceList.size() - offset) < limit) {
-            limit = jobInstanceList.size() - offset;
-        }
-
-        data.put("jobs", jobInstanceList.subList(offset, offset + limit));
-        data.put("size", jobInstanceList.size());
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
-    }
-
-    /**
-     * Get a cube job
-     * 
-     * @return
-     * @throws JobException 
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{jobId}", method = { RequestMethod.GET }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getV2(@PathVariable String jobId) {
-
-        JobInstance jobInstance = jobService.getJobInstance(jobId);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, jobInstance, 
"");
-    }
-
-    /**
-     * Get a job step output
-     * 
-     * @return
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{jobId}/steps/{stepId}/output", method = { 
RequestMethod.GET }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse getStepOutputV2(@PathVariable String jobId, 
@PathVariable String stepId) {
-
-        Map<String, String> result = new HashMap<String, String>();
-        result.put("jobId", jobId);
-        result.put("stepId", String.valueOf(stepId));
-        result.put("cmd_output", 
jobService.getExecutableManager().getOutput(stepId).getVerboseMsg());
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, result, "");
-    }
-
-    /**
-     * Resume a cube job
-     * 
-     * @return
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{jobId}/resume", method = { RequestMethod.PUT }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse resumeV2(@PathVariable String jobId) {
-
-        final JobInstance jobInstance = jobService.getJobInstance(jobId);
-        jobService.resumeJob(jobInstance);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
jobService.getJobInstance(jobId), "");
-    }
-
-    /**
-     * Cancel/discard a job
-     * 
-     * @return
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{jobId}/cancel", method = { RequestMethod.PUT }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse cancelV2(@PathVariable String jobId) throws 
IOException {
-
-        final JobInstance jobInstance = jobService.getJobInstance(jobId);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
jobService.cancelJob(jobInstance), "");
-    }
-
-    /**
-     * Pause a job
-     *
-     * @return
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{jobId}/pause", method = { RequestMethod.PUT }, 
produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse pauseV2(@PathVariable String jobId) {
-
-        final JobInstance jobInstance = jobService.getJobInstance(jobId);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
jobService.pauseJob(jobInstance), "");
-    }
-
-    /**
-     * Rollback a job to the given step
-     *
-     * @return
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{jobId}/steps/{stepId}/rollback", method = { 
RequestMethod.PUT }, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse rollbackV2(@PathVariable String jobId, 
@PathVariable String stepId) {
-
-        final JobInstance jobInstance = jobService.getJobInstance(jobId);
-        jobService.rollbackJob(jobInstance, stepId);
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, 
jobService.getJobInstance(jobId), "");
-    }
-
-    /**
-     * Drop a cube job
-     *
-     * @return
-     * @throws IOException
-     */
-
-    @RequestMapping(value = "/{jobId}/drop", method = { RequestMethod.DELETE 
}, produces = {
-            "application/vnd.apache.kylin-v2+json" })
-    @ResponseBody
-    public EnvelopeResponse dropJobV2(@PathVariable String jobId) throws 
IOException {
-
-        JobInstance jobInstance = jobService.getJobInstance(jobId);
-        JobStatusEnum status = jobInstance.getStatus();
-
-        if (status != JobStatusEnum.FINISHED && status != 
JobStatusEnum.DISCARDED) {
-            throw new BadRequestException(
-                    "Cannot drop running job " + jobInstance.getName() + ", 
please discard it first.");
-        }
-        jobService.dropJob(jobInstance);
-
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, jobInstance, 
"");
-    }
-
-    public void setJobService(JobService jobService) {
-        this.jobService = jobService;
-    }
-
-}

Reply via email to