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.");
}