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 2018/01/25 08:42:16 UTC

kylin git commit: KYLIN-3193 prevent cloning models across projects

Repository: kylin
Updated Branches:
  refs/heads/master e03c76a40 -> d7aab19d3


KYLIN-3193 prevent cloning models across projects

Signed-off-by: lidongsjtu <li...@apache.org>


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

Branch: refs/heads/master
Commit: d7aab19d3c918fcce062e1b4b7d2475bbbcb090c
Parents: e03c76a
Author: etherge <et...@163.com>
Authored: Thu Jan 25 14:51:10 2018 +0800
Committer: lidongsjtu <li...@apache.org>
Committed: Thu Jan 25 16:39:32 2018 +0800

----------------------------------------------------------------------
 .../kylin/rest/controller/ModelController.java  | 25 ++++++++++++--------
 1 file changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/d7aab19d/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
index cc4b736..3b22948 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
@@ -65,7 +65,8 @@ import com.fasterxml.jackson.databind.JsonMappingException;
 public class ModelController extends BasicController {
     private static final Logger logger = LoggerFactory.getLogger(ModelController.class);
 
-    private static final char[] VALID_MODELNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_".toCharArray();
+    private static final char[] VALID_MODELNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"
+            .toCharArray();
 
     @Autowired
     @Qualifier("modelMgmtService")
@@ -83,7 +84,10 @@ public class ModelController extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { "application/json" })
     @ResponseBody
-    public List<DataModelDesc> getModels(@RequestParam(value = "modelName", required = false) String modelName, @RequestParam(value = "projectName", required = false) String projectName, @RequestParam(value = "limit", required = false) Integer limit, @RequestParam(value = "offset", required = false) Integer offset) {
+    public List<DataModelDesc> getModels(@RequestParam(value = "modelName", required = false) String modelName,
+            @RequestParam(value = "projectName", required = false) String projectName,
+            @RequestParam(value = "limit", required = false) Integer limit,
+            @RequestParam(value = "offset", required = false) Integer offset) {
         try {
             return modelService.getModels(modelName, projectName, limit, offset);
         } catch (IOException e) {
@@ -117,7 +121,8 @@ public class ModelController extends BasicController {
 
         try {
             modelDesc.setUuid(UUID.randomUUID().toString());
-            String projectName = (null == modelRequest.getProject()) ? ProjectInstance.DEFAULT_PROJECT_NAME : modelRequest.getProject();
+            String projectName = (null == modelRequest.getProject()) ? ProjectInstance.DEFAULT_PROJECT_NAME
+                    : modelRequest.getProject();
 
             modelService.createModelDesc(projectName, modelDesc);
         } catch (IOException e) {
@@ -176,27 +181,27 @@ public class ModelController extends BasicController {
     @RequestMapping(value = "/{modelName}/clone", method = { RequestMethod.PUT }, produces = { "application/json" })
     @ResponseBody
     public ModelRequest cloneModel(@PathVariable String modelName, @RequestBody ModelRequest modelRequest) {
-        String project = modelRequest.getProject();
+        String project = StringUtils.trimToNull(modelRequest.getProject());
         DataModelManager metaManager = DataModelManager.getInstance(KylinConfig.getInstanceFromEnv());
         DataModelDesc modelDesc = metaManager.getDataModelDesc(modelName);
         String newModelName = modelRequest.getModelName();
 
-        if (StringUtils.isEmpty(project)) {
-            logger.info("Project name should not be empty.");
+        if (null == project) {
             throw new BadRequestException("Project name should not be empty.");
         }
 
         if (modelDesc == null || StringUtils.isEmpty(modelName)) {
-            logger.info("Model does not exist.");
             throw new BadRequestException("Model does not exist.");
         }
 
+        if (!project.equals(modelDesc.getProject())) {
+            throw new BadRequestException("Cloning model across projects is not supported.");
+        }
+
         if (StringUtils.isEmpty(newModelName)) {
-            logger.info("New model name is empty.");
-            throw new BadRequestException("New model name is empty.");
+            throw new BadRequestException("New model name should not be empty.");
         }
         if (!StringUtils.containsOnly(newModelName, VALID_MODELNAME)) {
-            logger.info("Invalid Model name {}, only letters, numbers and underline supported.", newModelName);
             throw new BadRequestException("Invalid Model name, only letters, numbers and underline supported.");
         }