diff --git a/conf/escheduler.conf b/conf/escheduler.conf
deleted file mode 100644
index fa331e62f5..0000000000
--- a/conf/escheduler.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-server {
- listen 8888;# 访问端口
- server_name localhost;
- #charset koi8-r;
- #access_log /var/log/nginx/host.access.log main;
- location / {
- root /opt/escheduler/front/server; # 静态文件目录
- index index.html index.html;
- }
- location /escheduler {
- proxy_pass http://127.0.0.1:12345; # 接口地址
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header x_real_ipP $remote_addr;
- proxy_set_header remote_addr $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_http_version 1.1;
- proxy_connect_timeout 4s;
- proxy_read_timeout 30s;
- proxy_send_timeout 12s;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- }
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root /usr/share/nginx/html;
- }
-}
diff --git a/conf/install.sh b/conf/install.sh
deleted file mode 100644
index 10419b8f84..0000000000
--- a/conf/install.sh
+++ /dev/null
@@ -1,310 +0,0 @@
-#!/bin/sh
-
-workDir=`/opt/easyscheduler`
-workDir=`cd ${workDir};pwd`
-
-#To be compatible with MacOS and Linux
-txt=""
-if [[ "$OSTYPE" == "darwin"* ]]; then
- # Mac OSX
- txt="''"
-elif [[ "$OSTYPE" == "linux-gnu" ]]; then
- # linux
- txt=""
-elif [[ "$OSTYPE" == "cygwin" ]]; then
- # POSIX compatibility layer and Linux environment emulation for Windows
- echo "Easy Scheduler not support Windows operating system"
- exit 1
-elif [[ "$OSTYPE" == "msys" ]]; then
- # Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
- echo "Easy Scheduler not support Windows operating system"
- exit 1
-elif [[ "$OSTYPE" == "win32" ]]; then
- echo "Easy Scheduler not support Windows operating system"
- exit 1
-elif [[ "$OSTYPE" == "freebsd"* ]]; then
- # ...
- txt=""
-else
- # Unknown.
- echo "Operating system unknown, please tell us(submit issue) for better service"
- exit 1
-fi
-
-source ${workDir}/conf/config/run_config.conf
-source ${workDir}/conf/config/install_config.conf
-
-# mysql配置
-# mysql 地址,端口
-mysqlHost="127.0.0.1:3306"
-
-# mysql 数据库名称
-mysqlDb="easyscheduler"
-
-# mysql 用户名
-mysqlUserName="easyscheduler"
-
-# mysql 密码
-mysqlPassword="easyschedulereasyscheduler"
-
-# conf/config/install_config.conf配置
-# 安装路径,不要当前路径(pwd)一样
-installPath="/opt/easyscheduler"
-
-# 部署用户
-deployUser="escheduler"
-
-# zk集群
-zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181"
-
-# 安装hosts
-ips="ark0,ark1,ark2,ark3,ark4"
-
-# conf/config/run_config.conf配置
-# 运行Master的机器
-masters="ark0,ark1"
-
-# 运行Worker的机器
-workers="ark2,ark3,ark4"
-
-# 运行Alert的机器
-alertServer="ark3"
-
-# 运行Api的机器
-apiServers="ark1"
-
-# alert配置
-# 邮件协议
-mailProtocol="SMTP"
-
-# 邮件服务host
-mailServerHost="smtp.exmail.qq.com"
-
-# 邮件服务端口
-mailServerPort="25"
-
-# 发送人
-mailSender="xxxxxxxxxx"
-
-# 发送人密码
-mailPassword="xxxxxxxxxx"
-
-# 下载Excel路径
-xlsFilePath="/tmp/xls"
-
-
-# hadoop 配置
-# 是否启动hdfs,如果启动则为true,需要配置以下hadoop相关参数;
-# 不启动设置为false,如果为false,以下配置不需要修改
-hdfsStartupSate="false"
-
-# namenode地址,支持HA,需要将core-site.xml和hdfs-site.xml放到conf目录下
-namenodeFs="hdfs://mycluster:8020"
-
-# resourcemanager HA配置,如果是单resourcemanager,这里为空即可
-yarnHaIps="192.168.xx.xx,192.168.xx.xx"
-
-# 如果是单 resourcemanager,只需要配置一个主机名称,如果是resourcemanager HA,则默认配置就好
-singleYarnIp="ark1"
-
-# hdfs根路径,根路径的owner必须是部署用户
-hdfsPath="/escheduler"
-
-# common 配置
-# 程序路径
-programPath="/tmp/escheduler"
-
-#下载路径
-downloadPath="/tmp/escheduler/download"
-
-# 任务执行路径
-execPath="/tmp/escheduler/exec"
-
-# SHELL环境变量路径
-shellEnvPath="$installPath/conf/env/.escheduler_env.sh"
-
-# Python换将变量路径
-pythonEnvPath="$installPath/conf/env/escheduler_env.py"
-
-# 资源文件的后缀
-resSuffixs="txt,log,sh,conf,cfg,py,java,sql,hql,xml"
-
-# 开发状态,如果是true,对于SHELL脚本可以在execPath目录下查看封装后的SHELL脚本,如果是false则执行完成直接删除
-devState="true"
-
-# zk 配置
-# zk根目录
-zkRoot="/escheduler"
-
-# 用来记录挂掉机器的zk目录
-zkDeadServers="/escheduler/dead-servers"
-
-# masters目录
-zkMasters="/escheduler/masters"
-
-# workers目录
-zkWorkers="/escheduler/workers"
-
-# zk master分布式锁
-mastersLock="/escheduler/lock/masters"
-
-# zk worker分布式锁
-workersLock="/escheduler/lock/workers"
-
-# zk master容错分布式锁
-mastersFailover="/escheduler/lock/failover/masters"
-
-# zk worker容错分布式锁
-workersFailover="/escheduler/lock/failover/masters"
-
-# zk session 超时
-zkSessionTimeout="300"
-
-# zk 连接超时
-zkConnectionTimeout="300"
-
-# zk 重试间隔
-zkRetrySleep="100"
-
-# zk重试最大次数
-zkRetryMaxtime="5"
-
-
-# master 配置
-# master执行线程最大数,流程实例的最大并行度
-masterExecThreads="100"
-
-# master任务执行线程最大数,每一个流程实例的最大并行度
-masterExecTaskNum="20"
-
-# master心跳间隔
-masterHeartbeatInterval="10"
-
-# master任务提交重试次数
-masterTaskCommitRetryTimes="5"
-
-# master任务提交重试时间间隔
-masterTaskCommitInterval="100"
-
-# master最大cpu平均负载,用来判断master是否还有执行能力
-masterMaxCupLoadAvg="10"
-
-# master预留内存,用来判断master是否还有执行能力
-masterReservedMemory="1"
-
-
-# worker 配置
-# worker执行线程
-workerExecThreads="100"
-
-# worker心跳间隔
-workerHeartbeatInterval="10"
-
-# worker一次抓取任务数
-workerFetchTaskNum="10"
-
-# worker最大cpu平均负载,用来判断master是否还有执行能力
-workerMaxCupLoadAvg="10"
-
-# worker预留内存,用来判断master是否还有执行能力
-workerReservedMemory="1"
-
-# api 配置
-# api 服务端口
-apiServerPort="12345"
-
-# api session 超时
-apiServerSessionTimeout="7200"
-
-# api 上下文路径
-apiServerContextPath="/escheduler/"
-
-# spring 最大文件大小
-springMaxFileSize="1024MB"
-
-# spring 最大请求文件大小
-springMaxRequestSize="1024MB"
-
-# api 最大post请求大小
-apiMaxHttpPostSize="5000000"
-
-# 1,替换文件
-echo "1,替换文件"
-sed -i ${txt} "s#spring.datasource.url.*#spring.datasource.url=jdbc:mysql://${mysqlHost}/${mysqlDb}?characterEncoding=UTF-8#g" conf/dao/data_source.properties
-sed -i ${txt} "s#spring.datasource.username.*#spring.datasource.username=${mysqlUserName}#g" conf/dao/data_source.properties
-sed -i ${txt} "s#spring.datasource.password.*#spring.datasource.password=${mysqlPassword}#g" conf/dao/data_source.properties
-
-sed -i ${txt} "s#org.quartz.dataSource.myDs.URL.*#org.quartz.dataSource.myDs.URL=jdbc:mysql://${mysqlHost}/${mysqlDb}?characterEncoding=UTF-8#g" conf/quartz.properties
-sed -i ${txt} "s#org.quartz.dataSource.myDs.user.*#org.quartz.dataSource.myDs.user=${mysqlUserName}#g" conf/quartz.properties
-sed -i ${txt} "s#org.quartz.dataSource.myDs.password.*#org.quartz.dataSource.myDs.password=${mysqlPassword}#g" conf/quartz.properties
-
-
-sed -i ${txt} "s#fs.defaultFS.*#fs.defaultFS=${namenodeFs}#g" conf/common/hadoop/hadoop.properties
-sed -i ${txt} "s#yarn.resourcemanager.ha.rm.ids.*#yarn.resourcemanager.ha.rm.ids=${yarnHaIps}#g" conf/common/hadoop/hadoop.properties
-sed -i ${txt} "s#yarn.application.status.address.*#yarn.application.status.address=http://${singleYarnIp}:8088/ws/v1/cluster/apps/%s#g" conf/common/hadoop/hadoop.properties
-
-sed -i ${txt} "s#data.basedir.path.*#data.basedir.path=${programPath}#g" conf/common/common.properties
-sed -i ${txt} "s#data.download.basedir.path.*#data.download.basedir.path=${downloadPath}#g" conf/common/common.properties
-sed -i ${txt} "s#process.exec.basepath.*#process.exec.basepath=${execPath}#g" conf/common/common.properties
-sed -i ${txt} "s#data.store2hdfs.basepath.*#data.store2hdfs.basepath=${hdfsPath}#g" conf/common/common.properties
-sed -i ${txt} "s#hdfs.startup.state.*#hdfs.startup.state=${hdfsStartupSate}#g" conf/common/common.properties
-sed -i ${txt} "s#escheduler.env.path.*#escheduler.env.path=${shellEnvPath}#g" conf/common/common.properties
-sed -i ${txt} "s#escheduler.env.py.*#escheduler.env.py=${pythonEnvPath}#g" conf/common/common.properties
-sed -i ${txt} "s#resource.view.suffixs.*#resource.view.suffixs=${resSuffixs}#g" conf/common/common.properties
-sed -i ${txt} "s#development.state.*#development.state=${devState}#g" conf/common/common.properties
-
-sed -i ${txt} "s#zookeeper.quorum.*#zookeeper.quorum=${zkQuorum}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.root.*#zookeeper.escheduler.root=${zkRoot}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.dead.servers.*#zookeeper.escheduler.dead.servers=${zkDeadServers}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.masters.*#zookeeper.escheduler.masters=${zkMasters}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.workers.*#zookeeper.escheduler.workers=${zkWorkers}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.lock.masters.*#zookeeper.escheduler.lock.masters=${mastersLock}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.lock.workers.*#zookeeper.escheduler.lock.workers=${workersLock}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.lock.failover.masters.*#zookeeper.escheduler.lock.failover.masters=${mastersFailover}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.escheduler.lock.failover.workers.*#zookeeper.escheduler.lock.failover.workers=${workersFailover}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.session.timeout.*#zookeeper.session.timeout=${zkSessionTimeout}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.connection.timeout.*#zookeeper.connection.timeout=${zkConnectionTimeout}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.retry.sleep.*#zookeeper.retry.sleep=${zkRetrySleep}#g" conf/zookeeper.properties
-sed -i ${txt} "s#zookeeper.retry.maxtime.*#zookeeper.retry.maxtime=${zkRetryMaxtime}#g" conf/zookeeper.properties
-
-sed -i ${txt} "s#master.exec.threads.*#master.exec.threads=${masterExecThreads}#g" conf/master.properties
-sed -i ${txt} "s#master.exec.task.number.*#master.exec.task.number=${masterExecTaskNum}#g" conf/master.properties
-sed -i ${txt} "s#master.heartbeat.interval.*#master.heartbeat.interval=${masterHeartbeatInterval}#g" conf/master.properties
-sed -i ${txt} "s#master.task.commit.retryTimes.*#master.task.commit.retryTimes=${masterTaskCommitRetryTimes}#g" conf/master.properties
-sed -i ${txt} "s#master.task.commit.interval.*#master.task.commit.interval=${masterTaskCommitInterval}#g" conf/master.properties
-sed -i ${txt} "s#master.max.cpuload.avg.*#master.max.cpuload.avg=${masterMaxCupLoadAvg}#g" conf/master.properties
-sed -i ${txt} "s#master.reserved.memory.*#master.reserved.memory=${masterReservedMemory}#g" conf/master.properties
-
-
-sed -i ${txt} "s#worker.exec.threads.*#worker.exec.threads=${workerExecThreads}#g" conf/worker.properties
-sed -i ${txt} "s#worker.heartbeat.interval.*#worker.heartbeat.interval=${workerHeartbeatInterval}#g" conf/worker.properties
-sed -i ${txt} "s#worker.fetch.task.num.*#worker.fetch.task.num=${workerFetchTaskNum}#g" conf/worker.properties
-sed -i ${txt} "s#worker.max.cpuload.avg.*#worker.max.cpuload.avg=${workerMaxCupLoadAvg}#g" conf/worker.properties
-sed -i ${txt} "s#worker.reserved.memory.*#worker.reserved.memory=${workerReservedMemory}#g" conf/worker.properties
-
-
-sed -i ${txt} "s#server.port.*#server.port=${apiServerPort}#g" conf/application.properties
-sed -i ${txt} "s#server.session.timeout.*#server.session.timeout=${apiServerSessionTimeout}#g" conf/application.properties
-sed -i ${txt} "s#server.context-path.*#server.context-path=${apiServerContextPath}#g" conf/application.properties
-sed -i ${txt} "s#spring.http.multipart.max-file-size.*#spring.http.multipart.max-file-size=${springMaxFileSize}#g" conf/application.properties
-sed -i ${txt} "s#spring.http.multipart.max-request-size.*#spring.http.multipart.max-request-size=${springMaxRequestSize}#g" conf/application.properties
-sed -i ${txt} "s#server.max-http-post-size.*#server.max-http-post-size=${apiMaxHttpPostSize}#g" conf/application.properties
-
-
-sed -i ${txt} "s#mail.protocol.*#mail.protocol=${mailProtocol}#g" conf/alert.properties
-sed -i ${txt} "s#mail.server.host.*#mail.server.host=${mailServerHost}#g" conf/alert.properties
-sed -i ${txt} "s#mail.server.port.*#mail.server.port=${mailServerPort}#g" conf/alert.properties
-sed -i ${txt} "s#mail.sender.*#mail.sender=${mailSender}#g" conf/alert.properties
-sed -i ${txt} "s#mail.passwd.*#mail.passwd=${mailPassword}#g" conf/alert.properties
-sed -i ${txt} "s#xls.file.path.*#xls.file.path=${xlsFilePath}#g" conf/alert.properties
-
-
-sed -i ${txt} "s#installPath.*#installPath=${installPath}#g" conf/config/install_config.conf
-sed -i ${txt} "s#deployUser.*#deployUser=${deployUser}#g" conf/config/install_config.conf
-sed -i ${txt} "s#ips.*#ips=${ips}#g" conf/config/install_config.conf
-
-
-sed -i ${txt} "s#masters.*#masters=${masters}#g" conf/config/run_config.conf
-sed -i ${txt} "s#workers.*#workers=${workers}#g" conf/config/run_config.conf
-sed -i ${txt} "s#alertServer.*#alertServer=${alertServer}#g" conf/config/run_config.conf
-sed -i ${txt} "s#apiServers.*#apiServers=${apiServers}#g" conf/config/run_config.conf
diff --git a/conf/run.sh b/conf/run.sh
deleted file mode 100644
index 3257b0e194..0000000000
--- a/conf/run.sh
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/sh
-
-# execute any pre-init scripts
-for i in /scripts/pre-init.d/*sh
-do
- if [ -e "${i}" ]; then
- echo "[i] pre-init.d - processing $i"
- . "${i}"
- fi
-done
-
-if [ -d "/run/mysqld" ]; then
- echo "[i] mysqld already present, skipping creation"
- chown -R mysql:mysql /run/mysqld
-else
- echo "[i] mysqld not found, creating...."
- mkdir -p /run/mysqld
- chown -R mysql:mysql /run/mysqld
-fi
-
-if [ -d /var/lib/mysql/mysql ]; then
- echo "[i] MySQL directory already present, skipping creation"
- chown -R mysql:mysql /var/lib/mysql
-else
- echo "[i] MySQL data directory not found, creating initial DBs"
-
- chown -R mysql:mysql /var/lib/mysql
-
- mysql_install_db --user=mysql --ldata=/var/lib/mysql > /dev/null
-
- if [ "$MYSQL_ROOT_PASSWORD" = "" ]; then
- MYSQL_ROOT_PASSWORD=`pwgen 16 1`
- echo "[i] MySQL root Password: $MYSQL_ROOT_PASSWORD"
- fi
-
- MYSQL_DATABASE="easyscheduler"
- MYSQL_USER="easyscheduler"
- MYSQL_PASSWORD="easyschedulereasyscheduler"
-
- tfile=`mktemp`
- if [ ! -f "$tfile" ]; then
- return 1
- fi
-
- cat << EOF > $tfile
-USE mysql;
-FLUSH PRIVILEGES ;
-GRANT ALL ON *.* TO 'root'@'%' identified by '$MYSQL_ROOT_PASSWORD' WITH GRANT OPTION ;
-GRANT ALL ON *.* TO 'root'@'localhost' identified by '$MYSQL_ROOT_PASSWORD' WITH GRANT OPTION ;
-SET PASSWORD FOR 'root'@'localhost'=PASSWORD('${MYSQL_ROOT_PASSWORD}') ;
-DROP DATABASE IF EXISTS test ;
-FLUSH PRIVILEGES ;
-EOF
-
- if [ "$MYSQL_DATABASE" != "" ]; then
- echo "[i] Creating database: $MYSQL_DATABASE"
- echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` CHARACTER SET utf8 COLLATE utf8_general_ci;" >> $tfile
-
- if [ "$MYSQL_USER" != "" ]; then
- echo "[i] Creating user: $MYSQL_USER with password $MYSQL_PASSWORD"
- echo "GRANT ALL ON \`$MYSQL_DATABASE\`.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD';" >> $tfile
- fi
- fi
-
- /usr/bin/mysqld --user=mysql --bootstrap --verbose=0 --skip-name-resolve --skip-networking=0 < $tfile
- rm -f $tfile
-
- for f in /docker-entrypoint-initdb.d/*; do
- case "$f" in
- *.sql) echo "$0: running $f"; /usr/bin/mysqld --user=mysql --bootstrap --verbose=0 --skip-name-resolve --skip-networking=0 < "$f"; echo ;;
- *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | /usr/bin/mysqld --user=mysql --bootstrap --verbose=0 --skip-name-resolve --skip-networking=0 < "$f"; echo ;;
- *) echo "$0: ignoring or entrypoint initdb empty $f" ;;
- esac
- echo
- done
-
- echo
- echo 'MySQL init process done. Ready for start up.'
- echo
-
- echo "exec /usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0" "$@"
-fi
-
-# execute any pre-exec scripts
-for i in /scripts/pre-exec.d/*sh
-do
- if [ -e "${i}" ]; then
- echo "[i] pre-exec.d - processing $i"
- . ${i}
- fi
-done
-
-mysql -ueasyscheduler -peasyschedulereasyscheduler --one-database easyscheduler -h127.0.0.1 < /opt/easyscheduler/sql/escheduler.sql
-mysql -ueasyscheduler -peasyschedulereasyscheduler --one-database easyscheduler -h127.0.0.1 < /opt/easyscheduler/sql/quartz.sql
-source /etc/profile
-zkServer.sh start
-cd /opt/easyscheduler
-rm -rf /etc/nginx/conf.d/default.conf
-sh ./bin/escheduler-daemon.sh start master-server
-sh ./bin/escheduler-daemon.sh start worker-server
-sh ./bin/escheduler-daemon.sh start api-server
-sh ./bin/escheduler-daemon.sh start logger-server
-sh ./bin/escheduler-daemon.sh start alert-server
-nginx -c /etc/nginx/nginx.conf
-exec /usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0 $@
diff --git a/conf/zoo.cfg b/conf/zoo.cfg
deleted file mode 100644
index 228b7224a0..0000000000
--- a/conf/zoo.cfg
+++ /dev/null
@@ -1,30 +0,0 @@
-# The number of milliseconds of each tick
-tickTime=2000
-# The number of ticks that the initial
-# synchronization phase can take
-initLimit=10
-# The number of ticks that can pass between
-# sending a request and getting an acknowledgement
-syncLimit=5
-# the directory where the snapshot is stored.
-# do not use /tmp for storage, /tmp here is just
-# example sakes.
-dataDir=/tmp/zookeeper
-# the port at which the clients will connect
-clientPort=2181
-# the maximum number of client connections.
-# increase this if you need to handle more clients
-#maxClientCnxns=60
-#
-# Be sure to read the maintenance section of the
-# administrator guide before turning on autopurge.
-#
-# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
-#
-# The number of snapshots to retain in dataDir
-#autopurge.snapRetainCount=3
-# Purge task interval in hours
-# Set to "0" to disable auto purge feature
-#autopurge.purgeInterval=1
-dataDir=/opt/zookeeper/data
-dataLogDir=/opt/zookeeper/logs
diff --git a/escheduler-api/pom.xml b/escheduler-api/pom.xml
index 31120c3883..70135ad9b2 100644
--- a/escheduler-api/pom.xml
+++ b/escheduler-api/pom.xml
@@ -168,12 +168,6 @@
4.12
test
-
- io.swagger
- swagger-jaxrs
- 1.5.12
-
-
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/AppConfiguration.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/AppConfiguration.java
index 77066386e8..b9b69c0a9c 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/AppConfiguration.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/configuration/AppConfiguration.java
@@ -19,8 +19,8 @@ package cn.escheduler.api.configuration;
import cn.escheduler.api.interceptor.LoginHandlerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.LocaleResolver;
+import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
@@ -49,12 +49,12 @@ public class AppConfiguration implements WebMvcConfigurer {
/**
* Cookie
*/
- @Bean
+ @Bean(name = "localeResolver")
public LocaleResolver localeResolver() {
CookieLocaleResolver localeResolver = new CookieLocaleResolver();
localeResolver.setCookieName(LOCALE_LANGUAGE_COOKIE);
/** set default locale **/
- localeResolver.setDefaultLocale(Locale.ENGLISH);
+ localeResolver.setDefaultLocale(Locale.US);
/** set cookie max age **/
localeResolver.setCookieMaxAge(COOKIE_MAX_AGE);
return localeResolver;
@@ -64,7 +64,7 @@ public class AppConfiguration implements WebMvcConfigurer {
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
/** **/
- lci.setParamName("lang");
+ lci.setParamName("language");
return lci;
}
@@ -72,14 +72,16 @@ public class AppConfiguration implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(loginInterceptor()).addPathPatterns(LOGIN_INTERCEPTOR_PATH_PATTERN).excludePathPatterns(LOGIN_PATH_PATTERN,"/swagger-resources/**", "/webjars/**", "/v2/**", "/doc.html", "*.html");
//i18n
registry.addInterceptor(localeChangeInterceptor());
+
+ registry.addInterceptor(loginInterceptor()).addPathPatterns(LOGIN_INTERCEPTOR_PATH_PATTERN).excludePathPatterns(LOGIN_PATH_PATTERN,"/swagger-resources/**", "/webjars/**", "/v2/**", "/doc.html", "*.html");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiImplicitParamPlugin.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiImplicitParamPlugin.java
deleted file mode 100644
index 0bb3733dd5..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiImplicitParamPlugin.java
+++ /dev/null
@@ -1,109 +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 cn.escheduler.api.configuration;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Optional;
-import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiImplicitParam;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.AllowableValues;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.OperationBuilderPlugin;
-import springfox.documentation.spi.service.contexts.OperationContext;
-import springfox.documentation.spring.web.DescriptionResolver;
-import springfox.documentation.swagger.common.SwaggerPluginSupport;
-
-import java.util.List;
-import java.util.Locale;
-
-import static com.google.common.base.Strings.emptyToNull;
-import static springfox.documentation.schema.Types.isBaseType;
-import static springfox.documentation.swagger.common.SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER;
-import static springfox.documentation.swagger.readers.parameter.Examples.examples;
-import static springfox.documentation.swagger.schema.ApiModelProperties.allowableValueFromString;
-
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE - 10)
-public class SwaggerApiImplicitParamPlugin implements OperationBuilderPlugin {
-
- @Autowired
- private DescriptionResolver descriptions;
-
- @Autowired
- private MessageSource messageSource;
-
- static Parameter implicitParameter(MessageSource messageSource, DescriptionResolver descriptions, ApiImplicitParam param) {
- Locale locale = LocaleContextHolder.getLocale();
-
- ModelRef modelRef = maybeGetModelRef(param);
- return new ParameterBuilder()
- .name(param.name())
- .description(descriptions.resolve(messageSource.getMessage(param.value(), null, locale)))
- .defaultValue(param.defaultValue())
- .required(param.required())
- .allowMultiple(param.allowMultiple())
- .modelRef(modelRef)
- .allowableValues(allowableValueFromString(param.allowableValues()))
- .parameterType(emptyToNull(param.paramType()))
- .parameterAccess(param.access())
- .order(SWAGGER_PLUGIN_ORDER)
- .scalarExample(param.example())
- .complexExamples(examples(param.examples()))
- .build();
- }
-
- private static ModelRef maybeGetModelRef(ApiImplicitParam param) {
- String dataType = MoreObjects.firstNonNull(emptyToNull(param.dataType()), "string");
- AllowableValues allowableValues = null;
- if (isBaseType(dataType)) {
- allowableValues = allowableValueFromString(param.allowableValues());
- }
- if (param.allowMultiple()) {
- return new ModelRef("", new ModelRef(dataType, allowableValues));
- }
- return new ModelRef(dataType, allowableValues);
- }
-
- @Override
- public void apply(OperationContext context) {
- context.operationBuilder().parameters(readParameters(context));
- }
-
- @Override
- public boolean supports(DocumentationType delimiter) {
- return SwaggerPluginSupport.pluginDoesApply(delimiter);
- }
-
- private List readParameters(OperationContext context) {
- Optional annotation = context.findAnnotation(ApiImplicitParam.class);
- List parameters = Lists.newArrayList();
- if (annotation.isPresent()) {
- parameters.add(implicitParameter(messageSource, descriptions, annotation.get()));
- }
- return parameters;
- }
-
-}
\ No newline at end of file
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiImplicitParamsPlugin.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiImplicitParamsPlugin.java
deleted file mode 100644
index a1a0b41dda..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiImplicitParamsPlugin.java
+++ /dev/null
@@ -1,71 +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 cn.escheduler.api.configuration;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.OperationBuilderPlugin;
-import springfox.documentation.spi.service.contexts.OperationContext;
-import springfox.documentation.spring.web.DescriptionResolver;
-
-import java.util.List;
-
-import static springfox.documentation.swagger.common.SwaggerPluginSupport.pluginDoesApply;
-
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE - 10)
-public class SwaggerApiImplicitParamsPlugin implements OperationBuilderPlugin {
-
- @Autowired
- private DescriptionResolver descriptions;
- @Autowired
- private MessageSource messageSource;
-
- @Override
- public void apply(OperationContext context) {
- context.operationBuilder().parameters(readParameters(context));
- }
-
- @Override
- public boolean supports(DocumentationType delimiter) {
- return pluginDoesApply(delimiter);
- }
-
- private List readParameters(OperationContext context) {
- Optional annotation = context.findAnnotation(ApiImplicitParams.class);
-
- List parameters = Lists.newArrayList();
- if (annotation.isPresent()) {
- for (ApiImplicitParam param : annotation.get().value()) {
- parameters.add(SwaggerApiImplicitParamPlugin.implicitParameter(messageSource, descriptions, param));
- }
- }
-
- return parameters;
- }
-
-
-}
\ No newline at end of file
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiModelPlugin.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiModelPlugin.java
deleted file mode 100644
index 157d5d9581..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiModelPlugin.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package cn.escheduler.api.configuration;
-
-
-
-import com.fasterxml.classmate.TypeResolver;
-import io.swagger.annotations.ApiModel;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.AnnotationUtils;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import springfox.documentation.schema.ModelReference;
-import springfox.documentation.schema.TypeNameExtractor;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.schema.ModelBuilderPlugin;
-import springfox.documentation.spi.schema.contexts.ModelContext;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import static springfox.documentation.schema.ResolvedTypes.*;
-import static springfox.documentation.swagger.common.SwaggerPluginSupport.*;
-
-/**
- * NOTE : not useful
- */
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE - 10)
-public class SwaggerApiModelPlugin implements ModelBuilderPlugin {
-
- @Autowired
- private TypeResolver typeResolver;
- @Autowired
- private TypeNameExtractor typeNameExtractor;
- @Autowired
- private MessageSource messageSource;
-
- @Override
- public void apply(ModelContext context) {
- ApiModel annotation = AnnotationUtils.findAnnotation(forClass(context), ApiModel.class);
- if (annotation != null) {
- List modelRefs = new ArrayList();
- for (Class> each : annotation.subTypes()) {
- modelRefs.add(modelRefFactory(context, typeNameExtractor)
- .apply(typeResolver.resolve(each)));
- }
- Locale locale = LocaleContextHolder.getLocale();
-
- context.getBuilder()
- .description(messageSource.getMessage(annotation.description(), null, locale))
- .discriminator(annotation.discriminator())
- .subTypes(modelRefs);
- }
- }
-
- private Class> forClass(ModelContext context) {
- return typeResolver.resolve(context.getType()).getErasedType();
- }
-
-
-// @Override
-// public boolean supports(DocumentationType delimiter) {
-// return pluginDoesApply(delimiter);
-// }
-
- @Override
- public boolean supports(DocumentationType delimiter) {
- return true;
- }
-}
-
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiModelPropertyPlugin.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiModelPropertyPlugin.java
deleted file mode 100644
index 9b40eed6fd..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiModelPropertyPlugin.java
+++ /dev/null
@@ -1,219 +0,0 @@
-package cn.escheduler.api.configuration;
-
-
-import com.fasterxml.classmate.ResolvedType;
-import com.fasterxml.classmate.TypeResolver;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiModelProperty;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.AnnotationUtils;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import springfox.documentation.service.AllowableListValues;
-import springfox.documentation.service.AllowableRangeValues;
-import springfox.documentation.service.AllowableValues;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.schema.ModelPropertyBuilderPlugin;
-import springfox.documentation.spi.schema.contexts.ModelPropertyContext;
-import springfox.documentation.spring.web.DescriptionResolver;
-import springfox.documentation.swagger.common.SwaggerPluginSupport;
-import springfox.documentation.swagger.schema.ApiModelProperties;
-
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static org.springframework.util.StringUtils.hasText;
-import static springfox.documentation.schema.Annotations.*;
-import static springfox.documentation.swagger.schema.ApiModelProperties.*;
-
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE - 10)
-public class SwaggerApiModelPropertyPlugin implements ModelPropertyBuilderPlugin {
- private static final Logger LOGGER = LoggerFactory.getLogger(ApiModelProperties.class);
- private static final Pattern RANGE_PATTERN = Pattern.compile("range([\\[(])(.*),(.*)([])])$");
-
- @Autowired
- private DescriptionResolver descriptions;
- @Autowired
- private MessageSource messageSource;
-
-
- @Override
- public void apply(ModelPropertyContext context) {
- Optional annotation = Optional.absent();
-
- if (context.getAnnotatedElement().isPresent()) {
- annotation = annotation.or(findApiModePropertyAnnotation(context.getAnnotatedElement().get()));
- }
- if (context.getBeanPropertyDefinition().isPresent()) {
- annotation = annotation.or(findPropertyAnnotation(
- context.getBeanPropertyDefinition().get(),
- ApiModelProperty.class));
- }
- if (annotation.isPresent()) {
- context.getBuilder()
- .allowableValues(annotation.transform(toAllowableValues()).orNull())
- .required(annotation.transform(toIsRequired()).or(false))
- .readOnly(annotation.transform(toIsReadOnly()).or(false))
- .description(annotation.transform(toDescription(descriptions)).orNull())
- .isHidden(annotation.transform(toHidden()).or(false))
- .type(annotation.transform(toType(context.getResolver())).orNull())
- .position(annotation.transform(toPosition()).or(0))
- .example(annotation.transform(toExample()).orNull());
- }
- }
-
-
- static Function toAllowableValues() {
- return new Function() {
- @Override
- public AllowableValues apply(ApiModelProperty annotation) {
- return allowableValueFromString(annotation.allowableValues());
- }
- };
- }
-
- public static AllowableValues allowableValueFromString(String allowableValueString) {
- AllowableValues allowableValues = new AllowableListValues(Lists.newArrayList(), "LIST");
- String trimmed = allowableValueString.trim();
- Matcher matcher = RANGE_PATTERN.matcher(trimmed.replaceAll(" ", ""));
- if (matcher.matches()) {
- if (matcher.groupCount() != 4) {
- LOGGER.warn("Unable to parse range specified {} correctly", trimmed);
- } else {
- allowableValues = new AllowableRangeValues(
- matcher.group(2).contains("infinity") ? null : matcher.group(2),
- matcher.group(1).equals("("),
- matcher.group(3).contains("infinity") ? null : matcher.group(3),
- matcher.group(4).equals(")"));
- }
- } else if (trimmed.contains(",")) {
- Iterable split = Splitter.on(',').trimResults().omitEmptyStrings().split(trimmed);
- allowableValues = new AllowableListValues(newArrayList(split), "LIST");
- } else if (hasText(trimmed)) {
- List singleVal = Collections.singletonList(trimmed);
- allowableValues = new AllowableListValues(singleVal, "LIST");
- }
- return allowableValues;
- }
-
- static Function toIsRequired() {
- return new Function() {
- @Override
- public Boolean apply(ApiModelProperty annotation) {
- return annotation.required();
- }
- };
- }
-
- static Function toPosition() {
- return new Function() {
- @Override
- public Integer apply(ApiModelProperty annotation) {
- return annotation.position();
- }
- };
- }
-
- static Function toIsReadOnly() {
- return new Function() {
- @Override
- public Boolean apply(ApiModelProperty annotation) {
- return annotation.readOnly();
- }
- };
- }
-
- static Function toAllowEmptyValue() {
- return new Function() {
- @Override
- public Boolean apply(ApiModelProperty annotation) {
- return annotation.allowEmptyValue();
- }
- };
- }
-
- Function toDescription(
- final DescriptionResolver descriptions) {
- Locale locale = LocaleContextHolder.getLocale();
-
- return new Function() {
- @Override
- public String apply(ApiModelProperty annotation) {
- String description = "";
- if (!Strings.isNullOrEmpty(annotation.value())) {
- description = messageSource.getMessage(annotation.value(), null, "" ,locale);
- } else if (!Strings.isNullOrEmpty(annotation.notes())) {
- description = messageSource.getMessage(annotation.notes(), null, "" ,locale);
- }
- return descriptions.resolve(description);
- }
- };
- }
-
- static Function toType(final TypeResolver resolver) {
- return new Function() {
- @Override
- public ResolvedType apply(ApiModelProperty annotation) {
- try {
- return resolver.resolve(Class.forName(annotation.dataType()));
- } catch (ClassNotFoundException e) {
- return resolver.resolve(Object.class);
- }
- }
- };
- }
-
- public static Optional findApiModePropertyAnnotation(AnnotatedElement annotated) {
- Optional annotation = Optional.absent();
-
- if (annotated instanceof Method) {
- // If the annotated element is a method we can use this information to check superclasses as well
- annotation = Optional.fromNullable(AnnotationUtils.findAnnotation(((Method) annotated), ApiModelProperty.class));
- }
-
- return annotation.or(Optional.fromNullable(AnnotationUtils.getAnnotation(annotated, ApiModelProperty.class)));
- }
-
- static Function toHidden() {
- return new Function() {
- @Override
- public Boolean apply(ApiModelProperty annotation) {
- return annotation.hidden();
- }
- };
- }
-
- static Function toExample() {
- return new Function() {
- @Override
- public String apply(ApiModelProperty annotation) {
- String example = "";
- if (!Strings.isNullOrEmpty(annotation.example())) {
- example = annotation.example();
- }
- return example;
- }
- };
- }
-
- @Override
- public boolean supports(DocumentationType delimiter) {
- return SwaggerPluginSupport.pluginDoesApply(delimiter);
- }
-}
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiOperationPlugin.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiOperationPlugin.java
deleted file mode 100644
index 0ff4de15c3..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiOperationPlugin.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package cn.escheduler.api.configuration;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Sets;
-import io.swagger.annotations.Api;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import io.swagger.annotations.ApiOperation;
-import org.springframework.util.StringUtils;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.OperationBuilderPlugin;
-import springfox.documentation.spi.service.contexts.OperationContext;
-import springfox.documentation.spring.web.DescriptionResolver;
-import springfox.documentation.spring.web.readers.operation.DefaultTagsProvider;
-import springfox.documentation.swagger.common.SwaggerPluginSupport;
-
-import static com.google.common.base.Strings.nullToEmpty;
-import static com.google.common.collect.FluentIterable.from;
-import static com.google.common.collect.Lists.newArrayList;
-import static com.google.common.collect.Sets.*;
-import static springfox.documentation.service.Tags.emptyTags;
-
-
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE - 10)
-public class SwaggerApiOperationPlugin implements OperationBuilderPlugin {
-
- private static final Logger logger = LoggerFactory.getLogger(SwaggerApiOperationPlugin.class);
-
- @Autowired
- private DescriptionResolver descriptions;
- @Autowired
- private DefaultTagsProvider tagsProvider;
-
- @Autowired
- private MessageSource messageSource;
-
- @Override
- public void apply(OperationContext context) {
-
- Locale locale = LocaleContextHolder.getLocale();
-
- Set defaultTags = tagsProvider.tags(context);
- Sets.SetView tags = union(operationTags(context), controllerTags(context));
- if (tags.isEmpty()) {
- context.operationBuilder().tags(defaultTags);
- } else {
- context.operationBuilder().tags(tags);
- }
-
-
- Optional apiOperationAnnotation = context.findAnnotation(ApiOperation.class);
- if (apiOperationAnnotation.isPresent()) {
- ApiOperation operation = apiOperationAnnotation.get();
-
- if (StringUtils.hasText(operation.nickname())) {
- // Populate the value of nickname annotation into uniqueId
- context.operationBuilder().uniqueId(operation.nickname());
- context.operationBuilder().codegenMethodNameStem(operation.nickname());
- }
-
- if (StringUtils.hasText(apiOperationAnnotation.get().notes())) {
- context.operationBuilder().notes(descriptions.resolve(messageSource.getMessage(apiOperationAnnotation.get().notes(), null, "", locale)));
- }
-
- if (apiOperationAnnotation.get().position() > 0) {
- context.operationBuilder().position(apiOperationAnnotation.get().position());
- }
-
- if (StringUtils.hasText(apiOperationAnnotation.get().value())) {
- context.operationBuilder().summary(descriptions.resolve(apiOperationAnnotation.get().value()));
- }
-
- context.operationBuilder().consumes(asSet(nullToEmpty(apiOperationAnnotation.get().consumes())));
- context.operationBuilder().produces(asSet(nullToEmpty(apiOperationAnnotation.get().produces())));
- }
-
-
-
-
- }
-
-
- private Set controllerTags(OperationContext context) {
- Optional controllerAnnotation = context.findControllerAnnotation(Api.class);
- return controllerAnnotation.transform(tagsFromController()).or(Sets.newHashSet());
- }
-
- private Set operationTags(OperationContext context) {
- Optional annotation = context.findAnnotation(ApiOperation.class);
- return annotation.transform(tagsFromOperation()).or(Sets.newHashSet());
- }
-
- private Function> tagsFromOperation() {
- return new Function>() {
- @Override
- public Set apply(ApiOperation input) {
- Set tags = newTreeSet();
- tags.addAll(from(newArrayList(input.tags())).filter(emptyTags()).toSet());
- return tags;
- }
- };
- }
-
- private Function> tagsFromController() {
- return new Function>() {
- @Override
- public Set apply(Api input) {
- Set tags = newTreeSet();
- tags.addAll(from(newArrayList(input.tags())).filter(emptyTags()).toSet());
- return tags;
- }
- };
- }
- private Set asSet(String mediaTypes) {
- return newHashSet(Splitter.on(',')
- .trimResults()
- .omitEmptyStrings()
- .splitToList(mediaTypes));
- }
-
- @Override
- public boolean supports(DocumentationType delimiter) {
- return SwaggerPluginSupport.pluginDoesApply(delimiter);
-// return true;
- }
-
-}
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiParamPlugin.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiParamPlugin.java
deleted file mode 100644
index 9fbdc1ce66..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiParamPlugin.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *
- * Copyright 2015-2019 the original author or authors.
- *
- * Licensed 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 cn.escheduler.api.configuration;
-
-import com.fasterxml.classmate.ResolvedType;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import io.swagger.annotations.ApiParam;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import springfox.documentation.schema.Collections;
-import springfox.documentation.schema.Enums;
-import springfox.documentation.schema.Example;
-import springfox.documentation.service.AllowableValues;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.schema.EnumTypeDeterminer;
-import springfox.documentation.spi.service.ParameterBuilderPlugin;
-import springfox.documentation.spi.service.contexts.ParameterContext;
-import springfox.documentation.spring.web.DescriptionResolver;
-import springfox.documentation.swagger.schema.ApiModelProperties;
-
-import java.util.Locale;
-
-import static com.google.common.base.Strings.emptyToNull;
-import static com.google.common.base.Strings.isNullOrEmpty;
-import static springfox.documentation.swagger.common.SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER;
-import static springfox.documentation.swagger.common.SwaggerPluginSupport.pluginDoesApply;
-import static springfox.documentation.swagger.readers.parameter.Examples.examples;
-
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE - 10)
-public class SwaggerApiParamPlugin implements ParameterBuilderPlugin {
- @Autowired
- private DescriptionResolver descriptions;
- @Autowired
- private EnumTypeDeterminer enumTypeDeterminer;
- @Autowired
- private MessageSource messageSource;
-
- @Override
- public void apply(ParameterContext context) {
- Optional apiParam = context.resolvedMethodParameter().findAnnotation(ApiParam.class);
- context.parameterBuilder()
- .allowableValues(allowableValues(
- context.alternateFor(context.resolvedMethodParameter().getParameterType()),
- apiParam.transform(toAllowableValue()).or("")));
- if (apiParam.isPresent()) {
- Locale locale = LocaleContextHolder.getLocale();
-
- ApiParam annotation = apiParam.get();
- context.parameterBuilder().name(emptyToNull(annotation.name()))
- .description(emptyToNull(descriptions.resolve(messageSource.getMessage(annotation.value(), null, "",locale))))
- .parameterAccess(emptyToNull(annotation.access()))
- .defaultValue(emptyToNull(annotation.defaultValue()))
- .allowMultiple(annotation.allowMultiple())
- .allowEmptyValue(annotation.allowEmptyValue())
- .required(annotation.required())
- .scalarExample(new Example(annotation.example()))
- .complexExamples(examples(annotation.examples()))
- .hidden(annotation.hidden())
- .collectionFormat(annotation.collectionFormat())
- .order(SWAGGER_PLUGIN_ORDER);
- }
- }
-
- private Function toAllowableValue() {
- return new Function() {
- @Override
- public String apply(ApiParam input) {
- return input.allowableValues();
- }
- };
- }
-
- private AllowableValues allowableValues(ResolvedType parameterType, String allowableValueString) {
- AllowableValues allowableValues = null;
- if (!isNullOrEmpty(allowableValueString)) {
- allowableValues = ApiModelProperties.allowableValueFromString(allowableValueString);
- } else {
- if (enumTypeDeterminer.isEnum(parameterType.getErasedType())) {
- allowableValues = Enums.allowableValues(parameterType.getErasedType());
- }
- if (Collections.isContainerType(parameterType)) {
- allowableValues = Enums.allowableValues(Collections.collectionElementType(parameterType).getErasedType());
- }
- }
- return allowableValues;
- }
-
- @Override
- public boolean supports(DocumentationType delimiter) {
- return pluginDoesApply(delimiter);
- }
-}
-
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiPlugin.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiPlugin.java
deleted file mode 100644
index abc466cb54..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerApiPlugin.java
+++ /dev/null
@@ -1,74 +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 cn.escheduler.api.configuration;
-
-import io.swagger.annotations.Api;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.OperationBuilderPlugin;
-import springfox.documentation.spi.service.contexts.OperationContext;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE - 10)
-public class SwaggerApiPlugin implements OperationBuilderPlugin {
-
- private static final Logger logger = LoggerFactory.getLogger(SwaggerApiPlugin.class);
-
- @Autowired
- private MessageSource messageSource;
-
- @Override
- public void apply(OperationContext context) {
- Locale locale = LocaleContextHolder.getLocale();
-
- List list = context.findAllAnnotations(Api.class);
- if (list.size() > 0) {
- Api api = list.get(0);
-
- Set tagsSet = new HashSet<>(1);
-
- if(api.tags() != null && api.tags().length > 0){
- tagsSet.add(StringUtils.isNotBlank(api.tags()[0]) ? messageSource.getMessage(api.tags()[0], null, locale) : " ");
- }
-
- context.operationBuilder().hidden(api.hidden())
- .tags(tagsSet).build();
-
- }
-
- }
-
-
- @Override
- public boolean supports(DocumentationType delimiter) {
- return true;
- }
-
-}
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerConfig.java b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerConfig.java
index f55d04ab92..fb332c5ac9 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerConfig.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/configuration/SwaggerConfig.java
@@ -48,7 +48,7 @@ public class SwaggerConfig implements WebMvcConfigurer {
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("Easy Scheduler Api Docs").description("Easy Scheduler Api Docs")
- .version("1.0.0").build();
+ .build();
}
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/AccessTokenController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/AccessTokenController.java
index 27ac1772a0..f4aa138045 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/AccessTokenController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/AccessTokenController.java
@@ -23,11 +23,16 @@ import cn.escheduler.api.service.UsersService;
import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -35,8 +40,9 @@ import static cn.escheduler.api.enums.Status.*;
/**
- * user controller
+ * access token controller
*/
+@Api(tags = "ACCESS_TOKEN_TAG", position = 1)
@RestController
@RequestMapping("/access-token")
public class AccessTokenController extends BaseController{
@@ -53,9 +59,10 @@ public class AccessTokenController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiIgnore
@PostMapping(value = "/create")
@ResponseStatus(HttpStatus.CREATED)
- public Result createToken(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createToken(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "userId") int userId,
@RequestParam(value = "expireTime") String expireTime,
@RequestParam(value = "token") String token){
@@ -76,6 +83,7 @@ public class AccessTokenController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiIgnore
@PostMapping(value = "/generate")
@ResponseStatus(HttpStatus.CREATED)
public Result generateToken(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@@ -100,9 +108,15 @@ public class AccessTokenController extends BaseController{
* @param pageSize
* @return
*/
+ @ApiOperation(value = "queryAccessTokenList", notes= "QUERY_ACCESS_TOKEN_LIST_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType ="String"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType ="Int",example = "20")
+ })
@GetMapping(value="/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryAccessTokenList(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryAccessTokenList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("pageNo") Integer pageNo,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize){
@@ -127,6 +141,7 @@ public class AccessTokenController extends BaseController{
* @param id
* @return
*/
+ @ApiIgnore
@PostMapping(value = "/delete")
@ResponseStatus(HttpStatus.OK)
public Result delAccessTokenById(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@@ -147,6 +162,7 @@ public class AccessTokenController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiIgnore
@PostMapping(value = "/update")
@ResponseStatus(HttpStatus.CREATED)
public Result updateToken(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/AlertGroupController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/AlertGroupController.java
index 759f9009e2..1feb310646 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/AlertGroupController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/AlertGroupController.java
@@ -21,17 +21,26 @@ import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.common.enums.AlertType;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.Map;
import static cn.escheduler.api.enums.Status.*;
+/**
+ * alert group controller
+ */
+@Api(tags = "ALERT_GROUP_TAG", position = 1)
@RestController
@RequestMapping("alert-group")
public class AlertGroupController extends BaseController{
@@ -50,9 +59,15 @@ public class AlertGroupController extends BaseController{
* @param desc
* @return
*/
+ @ApiOperation(value = "createAlertgroup", notes= "CREATE_ALERT_GROUP_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "groupName", value = "GROUP_NAME", required = true, dataType = "String"),
+ @ApiImplicitParam(name = "groupType", value = "GROUP_TYPE", required = true, dataType ="AlertType"),
+ @ApiImplicitParam(name = "desc", value = "DESC", dataType ="String")
+ })
@PostMapping(value = "/create")
@ResponseStatus(HttpStatus.CREATED)
- public Result createAlertgroup(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createAlertgroup(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "groupName") String groupName,
@RequestParam(value = "groupType") AlertType groupType,
@RequestParam(value = "desc",required = false) String desc) {
@@ -72,9 +87,10 @@ public class AlertGroupController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "list", notes= "QUERY_ALERT_GROUP_LIST_NOTES")
@GetMapping(value = "/list")
@ResponseStatus(HttpStatus.OK)
- public Result list(@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+ public Result list(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
logger.info("login user {}, query all alertGroup",
loginUser.getUserName());
try{
@@ -95,9 +111,15 @@ public class AlertGroupController extends BaseController{
* @param pageSize
* @return
*/
+ @ApiOperation(value = "queryTaskListPaging", notes= "QUERY_TASK_INSTANCE_LIST_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", type ="String"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType = "Int", example = "20")
+ })
@GetMapping(value="/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result listPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result listPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("pageNo") Integer pageNo,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize){
@@ -126,9 +148,16 @@ public class AlertGroupController extends BaseController{
* @param desc
* @return
*/
+ @ApiOperation(value = "updateAlertgroup", notes= "UPDATE_ALERT_GROUP_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "ALERT_GROUP_ID", required = true, dataType = "Int",example = "100"),
+ @ApiImplicitParam(name = "groupName", value = "GROUP_NAME", required = true, dataType = "String"),
+ @ApiImplicitParam(name = "groupType", value = "GROUP_TYPE", required = true, dataType ="AlertType"),
+ @ApiImplicitParam(name = "desc", value = "DESC", dataType ="String")
+ })
@PostMapping(value = "/update")
@ResponseStatus(HttpStatus.OK)
- public Result updateAlertgroup(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateAlertgroup(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int id,
@RequestParam(value = "groupName") String groupName,
@RequestParam(value = "groupType") AlertType groupType,
@@ -151,9 +180,13 @@ public class AlertGroupController extends BaseController{
* @param id
* @return
*/
+ @ApiOperation(value = "delAlertgroupById", notes= "DELETE_ALERT_GROUP_BY_ID_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "ALERT_GROUP_ID", required = true, dataType = "Int",example = "100")
+ })
@PostMapping(value = "/delete")
@ResponseStatus(HttpStatus.OK)
- public Result delAlertgroupById(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result delAlertgroupById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int id) {
logger.info("login user {}, delete AlertGroup, id: {},", loginUser.getUserName(), id);
try {
@@ -173,9 +206,13 @@ public class AlertGroupController extends BaseController{
* @param groupName
* @return
*/
+ @ApiOperation(value = "verifyGroupName", notes= "VERIFY_ALERT_GROUP_NAME_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "groupName", value = "GROUP_NAME", required = true, dataType = "String"),
+ })
@GetMapping(value = "/verify-group-name")
@ResponseStatus(HttpStatus.OK)
- public Result verifyGroupName(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result verifyGroupName(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="groupName") String groupName
) {
logger.info("login user {}, verfiy group name: {}",
@@ -191,9 +228,14 @@ public class AlertGroupController extends BaseController{
* @param userIds
* @return
*/
+ @ApiOperation(value = "grantUser", notes= "GRANT_ALERT_GROUP_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "ALERT_GROUP_ID", required = true, dataType = "Int",example = "100"),
+ @ApiImplicitParam(name = "userIds", value = "USER_IDS", required = true, dataType = "String")
+ })
@PostMapping(value = "/grant-user")
@ResponseStatus(HttpStatus.OK)
- public Result grantUser(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result grantUser(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "alertgroupId") int alertgroupId,
@RequestParam(value = "userIds") String userIds) {
logger.info("login user {}, grant user, alertGroupId: {},userIds : {}", loginUser.getUserName(), alertgroupId,userIds);
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/DataAnalysisController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/DataAnalysisController.java
index 568af1f173..be256a9db6 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/DataAnalysisController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/DataAnalysisController.java
@@ -21,11 +21,16 @@ import cn.escheduler.api.service.DataAnalysisService;
import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -34,6 +39,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* data analysis controller
*/
+@Api(tags = "DATA_ANALYSIS_TAG", position = 1)
@RestController
@RequestMapping("projects/analysis")
public class DataAnalysisController extends BaseController{
@@ -52,9 +58,15 @@ public class DataAnalysisController extends BaseController{
* @param projectId
* @return
*/
+ @ApiOperation(value = "countTaskState", notes= "COUNT_TASK_STATE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "startDate", value = "START_DATE", dataType = "String"),
+ @ApiImplicitParam(name = "endDate", value = "END_DATE", dataType ="String"),
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value="/task-state-count")
@ResponseStatus(HttpStatus.OK)
- public Result countTaskState(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result countTaskState(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value="startDate", required=false) String startDate,
@RequestParam(value="endDate", required=false) String endDate,
@RequestParam(value="projectId", required=false, defaultValue = "0") int projectId){
@@ -76,9 +88,15 @@ public class DataAnalysisController extends BaseController{
* @param projectId
* @return
*/
+ @ApiOperation(value = "countProcessInstanceState", notes= "COUNT_PROCESS_INSTANCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "startDate", value = "START_DATE", dataType = "String"),
+ @ApiImplicitParam(name = "endDate", value = "END_DATE", dataType ="String"),
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value="/process-state-count")
@ResponseStatus(HttpStatus.OK)
- public Result countProcessInstanceState(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result countProcessInstanceState(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value="startDate", required=false) String startDate,
@RequestParam(value="endDate", required=false) String endDate,
@RequestParam(value="projectId", required=false, defaultValue = "0") int projectId){
@@ -100,9 +118,13 @@ public class DataAnalysisController extends BaseController{
* @param projectId
* @return
*/
+ @ApiOperation(value = "countDefinitionByUser", notes= "COUNT_PROCESS_DEFINITION_BY_USER_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value="/define-user-count")
@ResponseStatus(HttpStatus.OK)
- public Result countDefinitionByUser(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result countDefinitionByUser(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value="projectId", required=false, defaultValue = "0") int projectId){
try{
logger.info("count process definition , user:{}, project id",
@@ -123,9 +145,15 @@ public class DataAnalysisController extends BaseController{
* @param projectId
* @return
*/
+ @ApiOperation(value = "countCommandState", notes= "COUNT_COMMAND_STATE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "startDate", value = "START_DATE", dataType = "String"),
+ @ApiImplicitParam(name = "endDate", value = "END_DATE", dataType ="String"),
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value="/command-state-count")
@ResponseStatus(HttpStatus.OK)
- public Result countCommandState(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result countCommandState(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value="startDate", required=false) String startDate,
@RequestParam(value="endDate", required=false) String endDate,
@RequestParam(value="projectId", required=false, defaultValue = "0") int projectId){
@@ -147,9 +175,15 @@ public class DataAnalysisController extends BaseController{
* @param projectId
* @return
*/
+ @ApiOperation(value = "countQueueState", notes= "COUNT_QUEUE_STATE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "startDate", value = "START_DATE", dataType = "String"),
+ @ApiImplicitParam(name = "endDate", value = "END_DATE", dataType ="String"),
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value="/queue-count")
@ResponseStatus(HttpStatus.OK)
- public Result countQueueState(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result countQueueState(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value="projectId", required=false, defaultValue = "0") int projectId){
try{
logger.info("count command state, user:{}, start date: {}, end date:{}, project id {}",
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/DataSourceController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/DataSourceController.java
index be8149b18a..a4b1b1606b 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/DataSourceController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/DataSourceController.java
@@ -22,11 +22,16 @@ import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.common.enums.DbType;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -36,6 +41,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* data source controller
*/
+@Api(tags = "DATA_SOURCE_TAG", position = 3)
@RestController
@RequestMapping("datasources")
public class DataSourceController extends BaseController {
@@ -56,9 +62,21 @@ public class DataSourceController extends BaseController {
* @param other
* @return
*/
+ @ApiOperation(value = "createDataSource", notes= "CREATE_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "name", value = "DATA_SOURCE_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "note", value = "DATA_SOURCE_NOTE", dataType = "String"),
+ @ApiImplicitParam(name = "type", value = "DB_TYPE", required = true,dataType ="DbType"),
+ @ApiImplicitParam(name = "host", value = "DATA_SOURCE_HOST",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "port", value = "DATA_SOURCE_PORT",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "database", value = "DATABASE_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "userName", value = "USER_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "password", value = "PASSWORD", dataType ="String"),
+ @ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType ="String")
+ })
@PostMapping(value = "/create")
@ResponseStatus(HttpStatus.CREATED)
- public Result createDataSource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createDataSource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("name") String name,
@RequestParam(value = "note", required = false) String note,
@RequestParam(value = "type") DbType type,
@@ -92,9 +110,22 @@ public class DataSourceController extends BaseController {
* @param other
* @return
*/
+ @ApiOperation(value = "updateDataSource", notes= "UPDATE_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "DATA_SOURCE_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "name", value = "DATA_SOURCE_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "note", value = "DATA_SOURCE_NOTE", dataType = "String"),
+ @ApiImplicitParam(name = "type", value = "DB_TYPE", required = true,dataType ="DbType"),
+ @ApiImplicitParam(name = "host", value = "DATA_SOURCE_HOST",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "port", value = "DATA_SOURCE_PORT",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "database", value = "DATABASE_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "userName", value = "USER_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "password", value = "PASSWORD", dataType ="String"),
+ @ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType ="String")
+ })
@PostMapping(value = "/update")
@ResponseStatus(HttpStatus.OK)
- public Result updateDataSource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateDataSource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("id") int id,
@RequestParam("name") String name,
@RequestParam(value = "note", required = false) String note,
@@ -126,9 +157,14 @@ public class DataSourceController extends BaseController {
* @param id
* @return
*/
+ @ApiOperation(value = "queryDataSource", notes= "QUERY_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "DATA_SOURCE_ID", required = true, dataType ="Int", example = "100")
+
+ })
@PostMapping(value = "/update-ui")
@ResponseStatus(HttpStatus.OK)
- public Result queryDataSource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryDataSource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("id") int id) {
logger.info("login user {}, query datasource: {}",
loginUser.getUserName(), id);
@@ -149,9 +185,13 @@ public class DataSourceController extends BaseController {
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryDataSourceList", notes= "QUERY_DATA_SOURCE_LIST_BY_TYPE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "DB_TYPE", required = true,dataType ="DbType")
+ })
@GetMapping(value = "/list")
@ResponseStatus(HttpStatus.OK)
- public Result queryDataSourceList(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryDataSourceList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("type") DbType type) {
try {
Map result = dataSourceService.queryDataSourceList(loginUser, type.ordinal());
@@ -171,9 +211,15 @@ public class DataSourceController extends BaseController {
* @param pageSize
* @return
*/
+ @ApiOperation(value = "queryDataSourceListPaging", notes= "QUERY_DATA_SOURCE_LIST_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType ="String"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType ="Int",example = "20")
+ })
@GetMapping(value = "/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryDataSourceListPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryDataSourceListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize) {
@@ -200,9 +246,21 @@ public class DataSourceController extends BaseController {
* @param other
* @return
*/
+ @ApiOperation(value = "connectDataSource", notes= "CONNECT_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "name", value = "DATA_SOURCE_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "note", value = "DATA_SOURCE_NOTE", dataType = "String"),
+ @ApiImplicitParam(name = "type", value = "DB_TYPE", required = true,dataType ="DbType"),
+ @ApiImplicitParam(name = "host", value = "DATA_SOURCE_HOST",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "port", value = "DATA_SOURCE_PORT",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "database", value = "DATABASE_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "userName", value = "USER_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "password", value = "PASSWORD", dataType ="String"),
+ @ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType ="String")
+ })
@PostMapping(value = "/connect")
@ResponseStatus(HttpStatus.OK)
- public Result connectDataSource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result connectDataSource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("name") String name,
@RequestParam(value = "note", required = false) String note,
@RequestParam(value = "type") DbType type,
@@ -237,9 +295,13 @@ public class DataSourceController extends BaseController {
* @param loginUser
* @return
*/
+ @ApiOperation(value = "connectionTest", notes= "CONNECT_DATA_SOURCE_TEST_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "DATA_SOURCE_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/connect-by-id")
@ResponseStatus(HttpStatus.OK)
- public Result connectionTest(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result connectionTest(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("id") int id) {
logger.info("connection test, login user:{}, id:{}", loginUser.getUserName(), id);
@@ -267,9 +329,13 @@ public class DataSourceController extends BaseController {
* @param id datasource id
* @return
*/
+ @ApiOperation(value = "delete", notes= "DELETE_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "DATA_SOURCE_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/delete")
@ResponseStatus(HttpStatus.OK)
- public Result delete(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result delete(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("id") int id) {
try {
logger.info("delete datasource,login user:{}, id:{}", loginUser.getUserName(), id);
@@ -287,9 +353,13 @@ public class DataSourceController extends BaseController {
* @param name
* @return
*/
+ @ApiOperation(value = "verifyDataSourceName", notes= "VERIFY_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "name", value = "DATA_SOURCE_NAME", required = true, dataType ="String")
+ })
@GetMapping(value = "/verify-name")
@ResponseStatus(HttpStatus.OK)
- public Result verifyDataSourceName(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result verifyDataSourceName(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "name") String name
) {
logger.info("login user {}, verfiy datasource name: {}",
@@ -312,9 +382,13 @@ public class DataSourceController extends BaseController {
* @param userId
* @return
*/
+ @ApiOperation(value = "unauthDatasource", notes= "UNAUTHORIZED_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/unauth-datasource")
@ResponseStatus(HttpStatus.OK)
- public Result unauthDatasource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result unauthDatasource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try {
logger.info("unauthorized datasource, login user:{}, unauthorized userId:{}",
@@ -335,9 +409,13 @@ public class DataSourceController extends BaseController {
* @param userId
* @return
*/
+ @ApiOperation(value = "authedDatasource", notes= "AUTHORIZED_DATA_SOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/authed-datasource")
@ResponseStatus(HttpStatus.OK)
- public Result authedDatasource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result authedDatasource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try {
logger.info("authorized data source, login user:{}, authorized useId:{}",
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/ExecutorController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/ExecutorController.java
index 6830e3c72d..d6872a278c 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/ExecutorController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/ExecutorController.java
@@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -39,6 +40,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* execute task controller
*/
+@ApiIgnore
@RestController
@RequestMapping("projects/{projectName}/executors")
public class ExecutorController extends BaseController {
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/LoggerController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/LoggerController.java
index 00bc99df52..24d28b5473 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/LoggerController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/LoggerController.java
@@ -57,9 +57,9 @@ public class LoggerController extends BaseController {
*/
@ApiOperation(value = "queryLog", notes= "QUERY_TASK_INSTANCE_LOG_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "taskInstId", value = "TASK_ID",type = "Int"),
- @ApiImplicitParam(name = "skipLineNum", value = "SKIP_LINE_NUM", type ="Int"),
- @ApiImplicitParam(name = "limit", value = "LIMIT", type ="Int")
+ @ApiImplicitParam(name = "taskInstId", value = "TASK_ID", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "skipLineNum", value = "SKIP_LINE_NUM", dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "limit", value = "LIMIT", dataType ="Int", example = "100")
})
@GetMapping(value = "/detail")
@ResponseStatus(HttpStatus.OK)
@@ -87,11 +87,11 @@ public class LoggerController extends BaseController {
*/
@ApiOperation(value = "downloadTaskLog", notes= "DOWNLOAD_TASK_INSTANCE_LOG_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "taskInstId", value = "TASK_ID",type = "Int")
+ @ApiImplicitParam(name = "taskInstId", value = "TASK_ID",dataType = "Int", example = "100")
})
@GetMapping(value = "/download-log")
@ResponseBody
- public ResponseEntity downloadTaskLog(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public ResponseEntity downloadTaskLog(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "taskInstId") int taskInstanceId) {
try {
byte[] logBytes = loggerService.getLogBytes(taskInstanceId);
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/LoginController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/LoginController.java
index 1855800ea5..f5521c6293 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/LoginController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/LoginController.java
@@ -29,6 +29,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
@@ -36,6 +37,8 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.util.Locale;
+
import static cn.escheduler.api.enums.Status.*;
/**
@@ -43,9 +46,9 @@ import static cn.escheduler.api.enums.Status.*;
*
* swagger bootstrap ui docs refer : https://doc.xiaominfo.com/guide/enh-func.html
*/
+@Api(tags = "LOGIN_TAG", position = 1)
@RestController
@RequestMapping("")
-@Api(tags = "LOGIN_TAG", position = 1)
public class LoginController extends BaseController {
private static final Logger logger = LoggerFactory.getLogger(LoginController.class);
@@ -69,8 +72,8 @@ public class LoginController extends BaseController {
*/
@ApiOperation(value = "login", notes= "LOGIN_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "userName", value = "USER_NAME", required = true, type = "String"),
- @ApiImplicitParam(name = "userPassword", value = "USER_PASSWORD", required = true, type ="String")
+ @ApiImplicitParam(name = "userName", value = "USER_NAME", required = true, dataType = "String"),
+ @ApiImplicitParam(name = "userPassword", value = "USER_PASSWORD", required = true, dataType ="String")
})
@PostMapping(value = "/login")
public Result login(@RequestParam(value = "userName") String userName,
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/MonitorController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/MonitorController.java
index 602dd4f270..666126c0c9 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/MonitorController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/MonitorController.java
@@ -22,11 +22,16 @@ import cn.escheduler.api.service.ServerService;
import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -36,6 +41,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* monitor controller
*/
+@Api(tags = "MONITOR_TAG", position = 1)
@RestController
@RequestMapping("/monitor")
public class MonitorController extends BaseController{
@@ -53,9 +59,10 @@ public class MonitorController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "listMaster", notes= "MASTER_LIST_NOTES")
@GetMapping(value = "/master/list")
@ResponseStatus(HttpStatus.OK)
- public Result listMaster(@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+ public Result listMaster(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
logger.info("login user: {}, query all master", loginUser.getUserName());
try{
logger.info("list master, user:{}", loginUser.getUserName());
@@ -73,9 +80,10 @@ public class MonitorController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "listWorker", notes= "WORKER_LIST_NOTES")
@GetMapping(value = "/worker/list")
@ResponseStatus(HttpStatus.OK)
- public Result listWorker(@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+ public Result listWorker(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
logger.info("login user: {}, query all workers", loginUser.getUserName());
try{
Map result = serverService.queryWorker(loginUser);
@@ -92,9 +100,10 @@ public class MonitorController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryDatabaseState", notes= "QUERY_DATABASE_STATE_NOTES")
@GetMapping(value = "/database")
@ResponseStatus(HttpStatus.OK)
- public Result queryDatabaseState(@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+ public Result queryDatabaseState(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
logger.info("login user: {}, query database state", loginUser.getUserName());
try{
@@ -112,9 +121,10 @@ public class MonitorController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryZookeeperState", notes= "QUERY_ZOOKEEPER_STATE_NOTES")
@GetMapping(value = "/zookeeper/list")
@ResponseStatus(HttpStatus.OK)
- public Result queryZookeeperState(@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+ public Result queryZookeeperState(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
logger.info("login user: {}, query zookeeper state", loginUser.getUserName());
try{
Map result = monitorService.queryZookeeperState(loginUser);
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessDefinitionController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessDefinitionController.java
index f928b257c1..74b77d6d72 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessDefinitionController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessDefinitionController.java
@@ -130,7 +130,7 @@ public class ProcessDefinitionController extends BaseController{
@ApiOperation(value = "updateProccessDefinition", notes= "UPDATE_PROCCESS_DEFINITION_NOTES")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "PROCESS_DEFINITION_NAME", required = true, type = "String"),
- @ApiImplicitParam(name = "id", value = "PROCESS_DEFINITION_ID", required = true, type = "Int"),
+ @ApiImplicitParam(name = "id", value = "PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100"),
@ApiImplicitParam(name = "processDefinitionJson", value = "PROCESS_DEFINITION_JSON", required = true, type ="String"),
@ApiImplicitParam(name = "locations", value = "PROCESS_DEFINITION_LOCATIONS", required = true, type ="String"),
@ApiImplicitParam(name = "connects", value = "PROCESS_DEFINITION_CONNECTS", required = true, type ="String"),
@@ -172,8 +172,8 @@ public class ProcessDefinitionController extends BaseController{
@ApiOperation(value = "releaseProccessDefinition", notes= "RELEASE_PROCCESS_DEFINITION_NOTES")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "PROCESS_DEFINITION_NAME", required = true, type = "String"),
- @ApiImplicitParam(name = "processId", value = "PROCESS_DEFINITION_ID", required = true, type = "Int"),
- @ApiImplicitParam(name = "releaseState", value = "PROCESS_DEFINITION_CONNECTS", required = true, type ="Int"),
+ @ApiImplicitParam(name = "processId", value = "PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "releaseState", value = "PROCESS_DEFINITION_CONNECTS", required = true, dataType = "Int", example = "100"),
})
@PostMapping(value = "/release")
@ResponseStatus(HttpStatus.OK)
@@ -204,7 +204,7 @@ public class ProcessDefinitionController extends BaseController{
*/
@ApiOperation(value = "queryProccessDefinitionById", notes= "QUERY_PROCCESS_DEFINITION_BY_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processId", value = "PROCESS_DEFINITION_ID", required = true, type = "Int")
+ @ApiImplicitParam(name = "processId", value = "PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100")
})
@GetMapping(value="/select-by-id")
@ResponseStatus(HttpStatus.OK)
@@ -258,10 +258,10 @@ public class ProcessDefinitionController extends BaseController{
*/
@ApiOperation(value = "queryProcessDefinitionListPaging", notes= "QUERY_PROCCESS_DEFINITION_LIST_PAGING_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, type = "Int"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "100"),
@ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", required = false, type = "String"),
- @ApiImplicitParam(name = "userId", value = "USER_ID", required = false, type = "Int"),
- @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, type = "Int")
+ @ApiImplicitParam(name = "userId", value = "USER_ID", required = false, dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "100")
})
@GetMapping(value="/list-paging")
@ResponseStatus(HttpStatus.OK)
@@ -296,8 +296,8 @@ public class ProcessDefinitionController extends BaseController{
*/
@ApiOperation(value = "viewTree", notes= "VIEW_TREE_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processId", value = "PROCESS_DEFINITION_ID", required = true, type = "Int"),
- @ApiImplicitParam(name = "limit", value = "LIMIT", required = true, type = "Int")
+ @ApiImplicitParam(name = "processId", value = "PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "limit", value = "LIMIT", required = true, dataType = "Int", example = "100")
})
@GetMapping(value="/view-tree")
@ResponseStatus(HttpStatus.OK)
@@ -327,7 +327,7 @@ public class ProcessDefinitionController extends BaseController{
*/
@ApiOperation(value = "getNodeListByDefinitionId", notes= "GET_NODE_LIST_BY_DEFINITION_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", required = true, type = "Int")
+ @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100")
})
@GetMapping(value="gen-task-list")
@ResponseStatus(HttpStatus.OK)
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessInstanceController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessInstanceController.java
index 1c36e7ca3e..e05565c90f 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessInstanceController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessInstanceController.java
@@ -60,14 +60,14 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "queryProcessInstanceList", notes= "QUERY_PROCESS_INSTANCE_LIST_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", type = "Int"),
+ @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", type ="String"),
@ApiImplicitParam(name = "stateType", value = "EXECUTION_STATUS", type ="ExecutionStatus"),
@ApiImplicitParam(name = "host", value = "HOST", type ="String"),
@ApiImplicitParam(name = "startDate", value = "START_DATE", type ="String"),
@ApiImplicitParam(name = "endDate", value = "END_DATE", type ="String"),
- @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", type ="Int"),
- @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", type ="Int")
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType = "Int", example = "100")
})
@GetMapping(value="list-paging")
@ResponseStatus(HttpStatus.OK)
@@ -105,7 +105,7 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "queryTaskListByProcessId", notes= "QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", type = "Int")
+ @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", dataType = "Int", example = "100")
})
@GetMapping(value="/task-list-by-process-id")
@ResponseStatus(HttpStatus.OK)
@@ -139,7 +139,7 @@ public class ProcessInstanceController extends BaseController{
@ApiOperation(value = "updateProcessInstance", notes= "UPDATE_PROCESS_INSTANCE_NOTES")
@ApiImplicitParams({
@ApiImplicitParam(name = "processInstanceJson", value = "PROCESS_INSTANCE_JSON", type = "String"),
- @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", type = "Int"),
+ @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "scheduleTime", value = "SCHEDULE_TIME", type = "String"),
@ApiImplicitParam(name = "syncDefine", value = "SYNC_DEFINE", type = "Boolean"),
@ApiImplicitParam(name = "locations", value = "PROCESS_INSTANCE_LOCATIONS", type = "String"),
@@ -182,7 +182,7 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "queryProcessInstanceById", notes= "QUERY_PROCESS_INSTANCE_BY_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", type = "Int")
+ @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", dataType = "Int", example = "100")
})
@GetMapping(value="/select-by-id")
@ResponseStatus(HttpStatus.OK)
@@ -212,7 +212,7 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "deleteProcessInstanceById", notes= "DELETE_PROCESS_INSTANCE_BY_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", type = "Int")
+ @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", dataType = "Int", example = "100")
})
@GetMapping(value="/delete")
@ResponseStatus(HttpStatus.OK)
@@ -241,7 +241,7 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "querySubProcessInstanceByTaskId", notes= "QUERY_SUBPROCESS_INSTANCE_BY_TASK_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "taskId", value = "TASK_ID", type = "Int")
+ @ApiImplicitParam(name = "taskId", value = "TASK_ID", dataType = "Int", example = "100")
})
@GetMapping(value="/select-sub-process")
@ResponseStatus(HttpStatus.OK)
@@ -267,7 +267,7 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "queryParentInstanceBySubId", notes= "QUERY_PARENT_PROCESS_INSTANCE_BY_SUB_PROCESS_INSTANCE_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "subId", value = "SUB_PROCESS_INSTANCE_ID", type = "Int")
+ @ApiImplicitParam(name = "subId", value = "SUB_PROCESS_INSTANCE_ID", dataType = "Int", example = "100")
})
@GetMapping(value="/select-parent-process")
@ResponseStatus(HttpStatus.OK)
@@ -292,7 +292,7 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "viewVariables", notes= "QUERY_PROCESS_INSTANCE_GLOBAL_VARIABLES_AND_LOCAL_VARIABLES_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", type = "Int")
+ @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", dataType = "Int", example = "100")
})
@GetMapping(value="/view-variables")
@ResponseStatus(HttpStatus.OK)
@@ -317,7 +317,7 @@ public class ProcessInstanceController extends BaseController{
*/
@ApiOperation(value = "vieGanttTree", notes= "VIEW_GANTT_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", type = "Int")
+ @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID", dataType = "Int", example = "100")
})
@GetMapping(value="/view-gantt")
@ResponseStatus(HttpStatus.OK)
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/ProjectController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/ProjectController.java
index b6ca222adc..5ecb16d740 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/ProjectController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/ProjectController.java
@@ -22,11 +22,16 @@ import cn.escheduler.api.service.ProjectService;
import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -35,6 +40,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* project controller
*/
+@Api(tags = "PROJECT_TAG", position = 1)
@RestController
@RequestMapping("projects")
public class ProjectController extends BaseController {
@@ -52,9 +58,14 @@ public class ProjectController extends BaseController {
* @param desc
* @return returns an error if it exists
*/
+ @ApiOperation(value = "createProject", notes= "CREATE_PROJECT_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "projectName", value = "PROJECT_NAME", dataType ="String"),
+ @ApiImplicitParam(name = "desc", value = "PROJECT_DESC", dataType = "String")
+ })
@PostMapping(value = "/create")
@ResponseStatus(HttpStatus.CREATED)
- public Result createProject(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createProject(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("projectName") String projectName,
@RequestParam(value = "desc", required = false) String desc) {
@@ -77,9 +88,15 @@ public class ProjectController extends BaseController {
* @param desc
* @return
*/
+ @ApiOperation(value = "updateProject", notes= "UPDATE_PROJECT_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "projectName",value = "PROJECT_NAME",dataType = "String"),
+ @ApiImplicitParam(name = "desc", value = "PROJECT_DESC", dataType = "String")
+ })
@PostMapping(value = "/update")
@ResponseStatus(HttpStatus.OK)
- public Result updateProject(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateProject(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("projectId") Integer projectId,
@RequestParam("projectName") String projectName,
@RequestParam(value = "desc", required = false) String desc) {
@@ -100,9 +117,13 @@ public class ProjectController extends BaseController {
* @param projectId
* @return
*/
+ @ApiOperation(value = "queryProjectById", notes= "QUERY_PROJECT_BY_ID_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value = "/query-by-id")
@ResponseStatus(HttpStatus.OK)
- public Result queryProjectById(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryProjectById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("projectId") Integer projectId) {
logger.info("login user {}, query project by id: {}", loginUser.getUserName(), projectId);
@@ -124,9 +145,15 @@ public class ProjectController extends BaseController {
* @param pageNo
* @return
*/
+ @ApiOperation(value = "queryProjectListPaging", notes= "QUERY_PROJECT_LIST_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType ="String"),
+ @ApiImplicitParam(name = "projectId", value = "PAGE_SIZE", dataType ="Int", example = "20"),
+ @ApiImplicitParam(name = "projectId", value = "PAGE_NO", dataType ="Int", example = "1")
+ })
@GetMapping(value = "/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryProjectListPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryProjectListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize,
@RequestParam("pageNo") Integer pageNo
@@ -149,9 +176,13 @@ public class ProjectController extends BaseController {
* @param projectId
* @return
*/
+ @ApiOperation(value = "deleteProjectById", notes= "DELETE_PROJECT_BY_ID_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "projectId", value = "PROJECT_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value = "/delete")
@ResponseStatus(HttpStatus.OK)
- public Result deleteProject(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result deleteProject(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("projectId") Integer projectId
) {
@@ -172,9 +203,13 @@ public class ProjectController extends BaseController {
* @param userId
* @return
*/
+ @ApiOperation(value = "queryUnauthorizedProject", notes= "QUERY_UNAUTHORIZED_PROJECT_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value = "/unauth-project")
@ResponseStatus(HttpStatus.OK)
- public Result queryUnauthorizedProject(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryUnauthorizedProject(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try {
logger.info("login user {}, query unauthorized project by user id: {}.", loginUser.getUserName(), userId);
@@ -194,9 +229,13 @@ public class ProjectController extends BaseController {
* @param userId
* @return
*/
+ @ApiOperation(value = "queryAuthorizedProject", notes= "QUERY_AUTHORIZED_PROJECT_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", dataType ="Int", example = "100")
+ })
@GetMapping(value = "/authed-project")
@ResponseStatus(HttpStatus.OK)
- public Result queryAuthorizedProject(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryAuthorizedProject(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try {
logger.info("login user {}, query authorized project by user id: {}.", loginUser.getUserName(), userId);
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/QueueController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/QueueController.java
index 29c01a1483..3f0a02b07e 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/QueueController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/QueueController.java
@@ -22,11 +22,16 @@ import cn.escheduler.api.service.QueueService;
import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -36,6 +41,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* queue controller
*/
+@Api(tags = "QUEUE_TAG", position = 1)
@RestController
@RequestMapping("/queue")
public class QueueController extends BaseController{
@@ -51,9 +57,10 @@ public class QueueController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryList", notes= "QUERY_QUEUE_LIST_NOTES")
@GetMapping(value="/list")
@ResponseStatus(HttpStatus.OK)
- public Result queryList(@RequestAttribute(value = Constants.SESSION_USER) User loginUser){
+ public Result queryList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser){
try{
logger.info("login user {}, query queue list", loginUser.getUserName());
Map result = queueService.queryList(loginUser);
@@ -69,9 +76,15 @@ public class QueueController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryQueueListPaging", notes= "QUERY_QUEUE_LIST_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType ="String"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType ="Int",example = "20")
+ })
@GetMapping(value="/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryQueueListPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryQueueListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("pageNo") Integer pageNo,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize){
@@ -98,9 +111,14 @@ public class QueueController extends BaseController{
* @param queueName
* @return
*/
+ @ApiOperation(value = "createQueue", notes= "CREATE_QUEUE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "queue", value = "YARN_QUEUE_NAME", required = true,dataType ="String"),
+ @ApiImplicitParam(name = "queueName", value = "QUEUE_NAME",required = true, dataType ="String")
+ })
@PostMapping(value = "/create")
@ResponseStatus(HttpStatus.CREATED)
- public Result createQueue(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createQueue(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "queue") String queue,
@RequestParam(value = "queueName") String queueName) {
logger.info("login user {}, create queue, queue: {}, queueName: {}",
@@ -123,9 +141,15 @@ public class QueueController extends BaseController{
* @param queueName
* @return
*/
+ @ApiOperation(value = "updateQueue", notes= "UPDATE_QUEUE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "QUEUE_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "queue", value = "YARN_QUEUE_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "queueName", value = "QUEUE_NAME",required = true, dataType ="String")
+ })
@PostMapping(value = "/update")
@ResponseStatus(HttpStatus.CREATED)
- public Result updateQueue(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateQueue(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int id,
@RequestParam(value = "queue") String queue,
@RequestParam(value = "queueName") String queueName) {
@@ -149,9 +173,15 @@ public class QueueController extends BaseController{
* @param queueName
* @return
*/
+ @ApiOperation(value = "verifyQueue", notes= "VERIFY_QUEUE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "QUEUE_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "queue", value = "YARN_QUEUE_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "queueName", value = "QUEUE_NAME",required = true, dataType ="String")
+ })
@PostMapping(value = "/verify-queue")
@ResponseStatus(HttpStatus.OK)
- public Result verifyQueue(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result verifyQueue(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="queue") String queue,
@RequestParam(value ="queueName") String queueName
) {
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/ResourcesController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/ResourcesController.java
index 12a03ca319..1ad481f0f1 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/ResourcesController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/ResourcesController.java
@@ -24,6 +24,10 @@ import cn.escheduler.api.utils.Result;
import cn.escheduler.common.enums.ResourceType;
import cn.escheduler.common.enums.UdfType;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,6 +38,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -42,6 +47,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* resources controller
*/
+@Api(tags = "RESOURCES_TAG", position = 1)
@RestController
@RequestMapping("resources")
public class ResourcesController extends BaseController{
@@ -62,8 +68,15 @@ public class ResourcesController extends BaseController{
* @param desc
* @param file
*/
+ @ApiOperation(value = "createResource", notes= "CREATE_RESOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "RESOURCE_TYPE", required = true, dataType ="ResourceType"),
+ @ApiImplicitParam(name = "name", value = "RESOURCE_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "des", value = "RESOURCE_DESC", dataType ="String"),
+ @ApiImplicitParam(name = "file", value = "RESOURCE_FILE", required = true, dataType = "MultipartFile")
+ })
@PostMapping(value = "/create")
- public Result createResource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createResource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "type") ResourceType type,
@RequestParam(value ="name")String alias,
@RequestParam(value = "desc", required = false) String desc,
@@ -85,8 +98,16 @@ public class ResourcesController extends BaseController{
* @param alias
* @param desc
*/
+ @ApiOperation(value = "createResource", notes= "CREATE_RESOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "type", value = "RESOURCE_TYPE", required = true, dataType ="ResourceType"),
+ @ApiImplicitParam(name = "name", value = "RESOURCE_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "des", value = "RESOURCE_DESC", dataType ="String"),
+ @ApiImplicitParam(name = "file", value = "RESOURCE_FILE", required = true,dataType = "MultipartFile")
+ })
@PostMapping(value = "/update")
- public Result updateResource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateResource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="id") int resourceId,
@RequestParam(value = "type") ResourceType type,
@RequestParam(value ="name")String alias,
@@ -107,10 +128,14 @@ public class ResourcesController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "querytResourceList", notes= "QUERY_RESOURCE_LIST_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "RESOURCE_TYPE", required = true, dataType ="ResourceType")
+ })
@GetMapping(value="/list")
@ResponseStatus(HttpStatus.OK)
- public Result querytResourceList(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
- @RequestParam(value ="type")ResourceType type
+ public Result querytResourceList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ @RequestParam(value ="type") ResourceType type
){
try{
logger.info("query resource list, login user:{}, resource type:{}", loginUser.getUserName(), type.toString());
@@ -130,10 +155,17 @@ public class ResourcesController extends BaseController{
* @param pageSize
* @return
*/
+ @ApiOperation(value = "querytResourceListPaging", notes= "QUERY_RESOURCE_LIST_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "RESOURCE_TYPE", required = true, dataType ="ResourceType"),
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType ="String"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType ="Int",example = "20")
+ })
@GetMapping(value="/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result querytResourceListPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
- @RequestParam(value ="type")ResourceType type,
+ public Result querytResourceListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ @RequestParam(value ="type") ResourceType type,
@RequestParam("pageNo") Integer pageNo,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize
@@ -161,9 +193,13 @@ public class ResourcesController extends BaseController{
* @param loginUser
* @param resourceId
*/
+ @ApiOperation(value = "deleteResource", notes= "DELETE_RESOURCE_BY_ID_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/delete")
@ResponseStatus(HttpStatus.OK)
- public Result deleteResource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result deleteResource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="id") int resourceId
) {
try{
@@ -185,11 +221,16 @@ public class ResourcesController extends BaseController{
* @param type
* @return
*/
+ @ApiOperation(value = "verifyResourceName", notes= "VERIFY_RESOURCE_NAME_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "RESOURCE_TYPE", required = true, dataType ="ResourceType"),
+ @ApiImplicitParam(name = "name", value = "RESOURCE_NAME", required = true, dataType ="String")
+ })
@GetMapping(value = "/verify-name")
@ResponseStatus(HttpStatus.OK)
- public Result verifyResourceName(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result verifyResourceName(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="name") String alias,
- @RequestParam(value ="type")ResourceType type
+ @RequestParam(value ="type") ResourceType type
) {
try {
logger.info("login user {}, verfiy resource alias: {},resource type: {}",
@@ -208,8 +249,14 @@ public class ResourcesController extends BaseController{
* @param loginUser
* @param resourceId
*/
+ @ApiOperation(value = "viewResource", notes= "VIEW_RESOURCE_BY_ID_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "skipLineNum", value = "SKIP_LINE_NUM", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "limit", value = "LIMIT", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/view")
- public Result viewResource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result viewResource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int resourceId,
@RequestParam(value = "skipLineNum") int skipLineNum,
@RequestParam(value = "limit") int limit
@@ -236,8 +283,16 @@ public class ResourcesController extends BaseController{
* @param content
* @return
*/
+ @ApiOperation(value = "onlineCreateResource", notes= "ONLINE_CREATE_RESOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "RESOURCE_TYPE", required = true, dataType ="ResourceType"),
+ @ApiImplicitParam(name = "fileName", value = "RESOURCE_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "suffix", value = "SUFFIX", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "des", value = "RESOURCE_DESC", dataType ="String"),
+ @ApiImplicitParam(name = "content", value = "CONTENT",required = true, dataType ="String")
+ })
@PostMapping(value = "/online-create")
- public Result onlineCreateResource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result onlineCreateResource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "type") ResourceType type,
@RequestParam(value ="fileName")String fileName,
@RequestParam(value ="suffix")String fileSuffix,
@@ -264,8 +319,13 @@ public class ResourcesController extends BaseController{
* @param loginUser
* @param resourceId
*/
+ @ApiOperation(value = "updateResourceContent", notes= "UPDATE_RESOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "content", value = "CONTENT",required = true, dataType ="String")
+ })
@PostMapping(value = "/update-content")
- public Result updateResourceContent(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateResourceContent(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int resourceId,
@RequestParam(value = "content") String content
) {
@@ -289,9 +349,13 @@ public class ResourcesController extends BaseController{
* @param loginUser
* @param resourceId
*/
+ @ApiOperation(value = "downloadResource", notes= "DOWNLOAD_RESOURCE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/download")
@ResponseBody
- public ResponseEntity downloadResource(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public ResponseEntity downloadResource(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int resourceId) {
try{
logger.info("login user {}, download resource : {}",
@@ -322,9 +386,20 @@ public class ResourcesController extends BaseController{
* @param resourceId
* @return
*/
+ @ApiOperation(value = "createUdfFunc", notes= "CREATE_UDF_FUNCTION_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "UDF_TYPE", required = true, dataType ="UdfType"),
+ @ApiImplicitParam(name = "funcName", value = "FUNC_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "suffix", value = "CLASS_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "argTypes", value = "ARG_TYPES", dataType ="String"),
+ @ApiImplicitParam(name = "database", value = "DATABASE_NAME", dataType ="String"),
+ @ApiImplicitParam(name = "desc", value = "UDF_DESC", dataType ="String"),
+ @ApiImplicitParam(name = "resourceId", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100")
+
+ })
@PostMapping(value = "/udf-func/create")
@ResponseStatus(HttpStatus.CREATED)
- public Result createUdfFunc(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createUdfFunc(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "type") UdfType type,
@RequestParam(value ="funcName")String funcName,
@RequestParam(value ="className")String className,
@@ -351,9 +426,14 @@ public class ResourcesController extends BaseController{
* @param id
* @return
*/
+ @ApiOperation(value = "viewUIUdfFunction", notes= "VIEW_UDF_FUNCTION_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "resourceId", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100")
+
+ })
@GetMapping(value = "/udf-func/update-ui")
@ResponseStatus(HttpStatus.OK)
- public Result updateUIUdfFunction(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result viewUIUdfFunction(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("id") int id)
{
Result result = new Result();
@@ -380,8 +460,19 @@ public class ResourcesController extends BaseController{
* @param resourceId
* @return
*/
+ @ApiOperation(value = "updateUdfFunc", notes= "UPDATE_UDF_FUNCTION_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "UDF_TYPE", required = true, dataType ="UdfType"),
+ @ApiImplicitParam(name = "funcName", value = "FUNC_NAME",required = true, dataType ="String"),
+ @ApiImplicitParam(name = "suffix", value = "CLASS_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "argTypes", value = "ARG_TYPES", dataType ="String"),
+ @ApiImplicitParam(name = "database", value = "DATABASE_NAME", dataType ="String"),
+ @ApiImplicitParam(name = "desc", value = "UDF_DESC", dataType ="String"),
+ @ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100")
+
+ })
@PostMapping(value = "/udf-func/update")
- public Result updateUdfFunc(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateUdfFunc(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int udfFuncId,
@RequestParam(value = "type") UdfType type,
@RequestParam(value ="funcName")String funcName,
@@ -409,9 +500,15 @@ public class ResourcesController extends BaseController{
* @param pageSize
* @return
*/
+ @ApiOperation(value = "queryUdfFuncListPaging", notes= "QUERY_UDF_FUNCTION_LIST_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType ="String"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType ="Int",example = "20")
+ })
@GetMapping(value="/udf-func/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryUdfFuncList(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryUdfFuncList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("pageNo") Integer pageNo,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize
@@ -433,14 +530,18 @@ public class ResourcesController extends BaseController{
}
/**
- * query data resource by type
+ * query resource list by type
*
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryResourceList", notes= "QUERY_RESOURCE_LIST_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "type", value = "UDF_TYPE", required = true, dataType ="UdfType")
+ })
@GetMapping(value="/udf-func/list")
@ResponseStatus(HttpStatus.OK)
- public Result queryResourceList(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryResourceList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("type") UdfType type){
try{
logger.info("query datasource list, user:{}, type:{}", loginUser.getUserName(), type.toString());
@@ -459,9 +560,14 @@ public class ResourcesController extends BaseController{
* @param name
* @return
*/
+ @ApiOperation(value = "verifyUdfFuncName", notes= "VERIFY_UDF_FUNCTION_NAME_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "name", value = "FUNC_NAME",required = true, dataType ="String")
+
+ })
@GetMapping(value = "/udf-func/verify-name")
@ResponseStatus(HttpStatus.OK)
- public Result verifyUdfFuncName(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result verifyUdfFuncName(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="name") String name
) {
logger.info("login user {}, verfiy udf function name: {}",
@@ -482,9 +588,13 @@ public class ResourcesController extends BaseController{
* @param loginUser
* @param udfFuncId
*/
+ @ApiOperation(value = "deleteUdfFunc", notes= "DELETE_UDF_FUNCTION_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/udf-func/delete")
@ResponseStatus(HttpStatus.OK)
- public Result deleteUdfFunc(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result deleteUdfFunc(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="id") int udfFuncId
) {
try{
@@ -504,9 +614,13 @@ public class ResourcesController extends BaseController{
* @param userId
* @return
*/
+ @ApiOperation(value = "authorizedFile", notes= "AUTHORIZED_FILE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/authed-file")
@ResponseStatus(HttpStatus.CREATED)
- public Result authorizedFile(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result authorizedFile(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try{
logger.info("authorized file resource, user: {}, user id:{}", loginUser.getUserName(), userId);
@@ -526,9 +640,13 @@ public class ResourcesController extends BaseController{
* @param userId
* @return
*/
+ @ApiOperation(value = "unauthorizedFile", notes= "UNAUTHORIZED_FILE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/unauth-file")
@ResponseStatus(HttpStatus.CREATED)
- public Result unauthorizedFile(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result unauthorizedFile(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try{
logger.info("resource unauthorized file, user:{}, unauthorized user id:{}", loginUser.getUserName(), userId);
@@ -548,9 +666,13 @@ public class ResourcesController extends BaseController{
* @param userId
* @return
*/
+ @ApiOperation(value = "unauthUDFFunc", notes= "UNAUTHORIZED_UDF_FUNC_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/unauth-udf-func")
@ResponseStatus(HttpStatus.CREATED)
- public Result unauthUDFFunc(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result unauthUDFFunc(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try{
logger.info("unauthorized udf function, login user:{}, unauthorized user id:{}", loginUser.getUserName(), userId);
@@ -571,9 +693,13 @@ public class ResourcesController extends BaseController{
* @param userId
* @return
*/
+ @ApiOperation(value = "authUDFFunc", notes= "AUTHORIZED_UDF_FUNC_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "USER_ID", required = true, dataType ="Int", example = "100")
+ })
@GetMapping(value = "/authed-udf-func")
@ResponseStatus(HttpStatus.CREATED)
- public Result authorizedUDFFunction(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result authorizedUDFFunction(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("userId") Integer userId) {
try{
logger.info("auth udf function, login user:{}, auth user id:{}", loginUser.getUserName(), userId);
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/SchedulerController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/SchedulerController.java
index d860979d62..e7b602bf4b 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/SchedulerController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/SchedulerController.java
@@ -70,14 +70,14 @@ public class SchedulerController extends BaseController {
*/
@ApiOperation(value = "createSchedule", notes= "CREATE_SCHEDULE_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", required = true, type = "Int"),
- @ApiImplicitParam(name = "schedule", value = "SCHEDULE", type = "Int"),
+ @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "schedule", value = "SCHEDULE", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "warningType", value = "WARNING_TYPE", type ="WarningType"),
- @ApiImplicitParam(name = "warningGroupId", value = "WARNING_GROUP_ID", type ="Int"),
+ @ApiImplicitParam(name = "warningGroupId", value = "WARNING_GROUP_ID", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "failureStrategy", value = "FAILURE_STRATEGY", type ="FailureStrategy"),
@ApiImplicitParam(name = "receivers", value = "RECEIVERS", type ="String"),
@ApiImplicitParam(name = "receiversCc", value = "RECEIVERS_CC", type ="String"),
- @ApiImplicitParam(name = "workerGroupId", value = "WORKER_GROUP_ID", type ="Int"),
+ @ApiImplicitParam(name = "workerGroupId", value = "WORKER_GROUP_ID", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "processInstancePriority", value = "PROCESS_INSTANCE_PRIORITY", type ="Priority"),
})
@PostMapping("/create")
@@ -122,14 +122,14 @@ public class SchedulerController extends BaseController {
*/
@ApiOperation(value = "updateSchedule", notes= "UPDATE_SCHEDULE_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, type = "Int"),
- @ApiImplicitParam(name = "schedule", value = "SCHEDULE", type = "Int"),
+ @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "schedule", value = "SCHEDULE", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "warningType", value = "WARNING_TYPE", type ="WarningType"),
- @ApiImplicitParam(name = "warningGroupId", value = "WARNING_GROUP_ID", type ="Int"),
+ @ApiImplicitParam(name = "warningGroupId", value = "WARNING_GROUP_ID", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "failureStrategy", value = "FAILURE_STRATEGY", type ="FailureStrategy"),
@ApiImplicitParam(name = "receivers", value = "RECEIVERS", type ="String"),
@ApiImplicitParam(name = "receiversCc", value = "RECEIVERS_CC", type ="String"),
- @ApiImplicitParam(name = "workerGroupId", value = "WORKER_GROUP_ID", type ="Int"),
+ @ApiImplicitParam(name = "workerGroupId", value = "WORKER_GROUP_ID", dataType = "Int", example = "100"),
@ApiImplicitParam(name = "processInstancePriority", value = "PROCESS_INSTANCE_PRIORITY", type ="Priority"),
})
@PostMapping("/update")
@@ -171,7 +171,7 @@ public class SchedulerController extends BaseController {
*/
@ApiOperation(value = "online", notes= "ONLINE_SCHEDULE_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, type = "Int")
+ @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, dataType = "Int", example = "100")
})
@PostMapping("/online")
public Result online(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@@ -199,7 +199,7 @@ public class SchedulerController extends BaseController {
*/
@ApiOperation(value = "offline", notes= "OFFLINE_SCHEDULE_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, type = "Int")
+ @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, dataType = "Int", example = "100")
})
@PostMapping("/offline")
public Result offline(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@@ -228,11 +228,11 @@ public class SchedulerController extends BaseController {
*/
@ApiOperation(value = "queryScheduleListPaging", notes= "QUERY_SCHEDULE_LIST_PAGING_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, type = "Int"),
- @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", required = true,type = "Int"),
+ @ApiImplicitParam(name = "id", value = "SCHEDULE_ID", required = true, dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "processDefinitionId", value = "PROCESS_DEFINITION_ID", required = true,dataType = "Int", example = "100"),
@ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", type = "String"),
- @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", type = "Int"),
- @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", type = "Int")
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType = "Int", example = "100")
})
@GetMapping("/list-paging")
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/ServerController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/ServerController.java
deleted file mode 100644
index 7362e43283..0000000000
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/ServerController.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 cn.escheduler.api.controller;
-
-import cn.escheduler.api.service.ServerService;
-import cn.escheduler.api.utils.Constants;
-import cn.escheduler.api.utils.Result;
-import cn.escheduler.dao.model.User;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Map;
-
-import static cn.escheduler.api.enums.Status.LIST_MASTERS_ERROR;
-import static cn.escheduler.api.enums.Status.LIST_WORKERS_ERROR;
-
-/**
- * server controller
- */
-@RestController
-@RequestMapping("process")
-public class ServerController extends BaseController{
-
- private static final Logger logger = LoggerFactory.getLogger(ExecutorController.class);
-
- @Autowired
- private ServerService serverService;
-
- /**
- * master list
- * @param loginUser
- * @return
- */
- @GetMapping(value = "/master/list")
- @ResponseStatus(HttpStatus.OK)
- public Result listMaster(@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
- logger.info("login user: {}, query all master", loginUser.getUserName());
- try{
- logger.info("list master, user:{}", loginUser.getUserName());
- Map result = serverService.queryMaster(loginUser);
- return returnDataList(result);
- }catch (Exception e){
- logger.error(LIST_MASTERS_ERROR.getMsg(),e);
- return error(LIST_MASTERS_ERROR.getCode(),
- LIST_MASTERS_ERROR.getMsg());
- }
- }
-
-
- /**
- * worker list
- * @param loginUser
- * @return
- */
- @GetMapping(value = "/worker/list")
- @ResponseStatus(HttpStatus.OK)
- public Result listWorker(@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
- logger.info("login user: {}, query all workers", loginUser.getUserName());
- try{
- Map result = serverService.queryWorker(loginUser);
- return returnDataList(result);
- }catch (Exception e){
- logger.error(LIST_WORKERS_ERROR.getMsg(),e);
- return error(LIST_WORKERS_ERROR.getCode(),
- LIST_WORKERS_ERROR.getMsg());
- }
- }
-}
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskInstanceController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskInstanceController.java
index b249bf8e04..86b40687d9 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskInstanceController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskInstanceController.java
@@ -56,15 +56,15 @@ public class TaskInstanceController extends BaseController{
*/
@ApiOperation(value = "queryTaskListPaging", notes= "QUERY_TASK_INSTANCE_LIST_PAGING_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID",required = false, type = "Int"),
+ @ApiImplicitParam(name = "processInstanceId", value = "PROCESS_INSTANCE_ID",required = false, dataType = "Int", example = "100"),
@ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", type ="String"),
@ApiImplicitParam(name = "taskName", value = "TASK_NAME", type ="String"),
@ApiImplicitParam(name = "stateType", value = "EXECUTION_STATUS", type ="ExecutionStatus"),
@ApiImplicitParam(name = "host", value = "HOST", type ="String"),
@ApiImplicitParam(name = "startDate", value = "START_DATE", type ="String"),
@ApiImplicitParam(name = "endDate", value = "END_DATE", type ="String"),
- @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", type ="Int"),
- @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", type ="Int")
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType = "Int", example = "20")
})
@GetMapping("/list-paging")
@ResponseStatus(HttpStatus.OK)
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskRecordController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskRecordController.java
index 72d7c8dbfd..46afa1a814 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskRecordController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/TaskRecordController.java
@@ -21,19 +21,25 @@ import cn.escheduler.api.service.TaskRecordService;
import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import static cn.escheduler.api.enums.Status.QUERY_TASK_RECORD_LIST_PAGING_ERROR;
/**
- * task record controller
+ * data quality controller
*/
+@ApiIgnore
@RestController
@RequestMapping("/projects/task-record")
public class TaskRecordController extends BaseController{
@@ -53,7 +59,7 @@ public class TaskRecordController extends BaseController{
*/
@GetMapping("/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryTaskRecordListPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryTaskRecordListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "taskName", required = false) String taskName,
@RequestParam(value = "state", required = false) String state,
@RequestParam(value = "sourceTable", required = false) String sourceTable,
@@ -85,7 +91,7 @@ public class TaskRecordController extends BaseController{
*/
@GetMapping("/history-list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryHistoryTaskRecordListPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryHistoryTaskRecordListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "taskName", required = false) String taskName,
@RequestParam(value = "state", required = false) String state,
@RequestParam(value = "sourceTable", required = false) String sourceTable,
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/TenantController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/TenantController.java
index 2feb68783d..2db09c9a5d 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/TenantController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/TenantController.java
@@ -22,11 +22,16 @@ import cn.escheduler.api.service.TenantService;
import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@@ -36,6 +41,7 @@ import static cn.escheduler.api.enums.Status.*;
/**
* tenant controller
*/
+@Api(tags = "TENANT_TAG", position = 1)
@RestController
@RequestMapping("/tenant")
public class TenantController extends BaseController{
@@ -56,9 +62,17 @@ public class TenantController extends BaseController{
* @param desc
* @return
*/
+ @ApiOperation(value = "createTenant", notes= "CREATE_TENANT_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "tenantCode", value = "TENANT_CODE", required = true, dataType = "String"),
+ @ApiImplicitParam(name = "tenantName", value = "TENANT_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "queueId", value = "QUEUE_ID", required = true, dataType ="Int",example = "100"),
+ @ApiImplicitParam(name = "desc", value = "TENANT_DESC", dataType ="String")
+
+ })
@PostMapping(value = "/create")
@ResponseStatus(HttpStatus.CREATED)
- public Result createTenant(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result createTenant(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "tenantCode") String tenantCode,
@RequestParam(value = "tenantName") String tenantName,
@RequestParam(value = "queueId") int queueId,
@@ -85,9 +99,15 @@ public class TenantController extends BaseController{
* @param pageSize
* @return
*/
+ @ApiOperation(value = "queryTenantlistPaging", notes= "QUERY_TENANT_LIST_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType ="String"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", dataType = "Int", example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", dataType ="Int",example = "20")
+ })
@GetMapping(value="/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryTenantlistPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryTenantlistPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("pageNo") Integer pageNo,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize){
@@ -113,9 +133,10 @@ public class TenantController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryTenantlist", notes= "QUERY_TENANT_LIST_NOTES")
@GetMapping(value="/list")
@ResponseStatus(HttpStatus.OK)
- public Result queryTenantlist(@RequestAttribute(value = Constants.SESSION_USER) User loginUser){
+ public Result queryTenantlist(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser){
logger.info("login user {}, query tenant list");
try{
Map result = tenantService.queryTenantList(loginUser);
@@ -138,9 +159,18 @@ public class TenantController extends BaseController{
* @param desc
* @return
*/
+ @ApiOperation(value = "updateTenant", notes= "UPDATE_TENANT_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "ID", value = "TENANT_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "tenantCode", value = "TENANT_CODE", required = true, dataType = "String"),
+ @ApiImplicitParam(name = "tenantName", value = "TENANT_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "queueId", value = "QUEUE_ID", required = true, dataType ="Int", example = "100"),
+ @ApiImplicitParam(name = "desc", value = "TENANT_DESC", type ="String")
+
+ })
@PostMapping(value = "/update")
@ResponseStatus(HttpStatus.OK)
- public Result updateTenant(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result updateTenant(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int id,
@RequestParam(value = "tenantCode") String tenantCode,
@RequestParam(value = "tenantName") String tenantName,
@@ -164,9 +194,14 @@ public class TenantController extends BaseController{
* @param id
* @return
*/
+ @ApiOperation(value = "deleteTenantById", notes= "DELETE_TENANT_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "ID", value = "TENANT_ID", required = true, dataType ="Int", example = "100")
+
+ })
@PostMapping(value = "/delete")
@ResponseStatus(HttpStatus.OK)
- public Result deleteTenantById(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result deleteTenantById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "id") int id) {
logger.info("login user {}, delete tenant, tenantCode: {},", loginUser.getUserName(), id);
try {
@@ -186,9 +221,13 @@ public class TenantController extends BaseController{
* @param tenantCode
* @return
*/
+ @ApiOperation(value = "verifyTenantCode", notes= "VERIFY_TENANT_CODE_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "tenantCode", value = "TENANT_CODE", required = true, dataType = "String")
+ })
@GetMapping(value = "/verify-tenant-code")
@ResponseStatus(HttpStatus.OK)
- public Result verifyTenantCode(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result verifyTenantCode(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value ="tenantCode") String tenantCode
) {
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/UsersController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/UsersController.java
index ee2d564e88..6aa91651a0 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/UsersController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/UsersController.java
@@ -66,10 +66,10 @@ public class UsersController extends BaseController{
@ApiImplicitParams({
@ApiImplicitParam(name = "userName", value = "USER_NAME",type = "String"),
@ApiImplicitParam(name = "userPassword", value = "USER_PASSWORD", type ="String"),
- @ApiImplicitParam(name = "tenantId", value = "TENANT_ID", type ="Int"),
- @ApiImplicitParam(name = "queue", value = "QUEUE", type ="Int"),
- @ApiImplicitParam(name = "email", value = "EMAIL", type ="Int"),
- @ApiImplicitParam(name = "phone", value = "PHONE", type ="Int")
+ @ApiImplicitParam(name = "tenantId", value = "TENANT_ID", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "queue", value = "QUEUE", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "email", value = "EMAIL", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "phone", value = "PHONE", dataType = "Int", example = "100")
})
@PostMapping(value = "/create")
@ResponseStatus(HttpStatus.CREATED)
@@ -103,7 +103,7 @@ public class UsersController extends BaseController{
*/
@ApiOperation(value = "queryUserList", notes= "QUERY_USER_LIST_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "pageNo", value = "PAGE_NO",type = "Int"),
+ @ApiImplicitParam(name = "pageNo", value = "PAGE_NO",dataType = "Int", example = "100"),
@ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", type ="String"),
@ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", type ="String")
})
@@ -143,13 +143,13 @@ public class UsersController extends BaseController{
*/
@ApiOperation(value = "updateUser", notes= "UPDATE_USER_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "USER_ID",type = "Int"),
+ @ApiImplicitParam(name = "id", value = "USER_ID",dataType = "Int", example = "100"),
@ApiImplicitParam(name = "userName", value = "USER_NAME",type = "String"),
@ApiImplicitParam(name = "userPassword", value = "USER_PASSWORD", type ="String"),
- @ApiImplicitParam(name = "tenantId", value = "TENANT_ID", type ="Int"),
- @ApiImplicitParam(name = "queue", value = "QUEUE", type ="Int"),
- @ApiImplicitParam(name = "email", value = "EMAIL", type ="Int"),
- @ApiImplicitParam(name = "phone", value = "PHONE", type ="Int")
+ @ApiImplicitParam(name = "tenantId", value = "TENANT_ID", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "queue", value = "QUEUE", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "email", value = "EMAIL", dataType = "Int", example = "100"),
+ @ApiImplicitParam(name = "phone", value = "PHONE", dataType = "Int", example = "100")
})
@PostMapping(value = "/update")
@ResponseStatus(HttpStatus.OK)
@@ -180,7 +180,7 @@ public class UsersController extends BaseController{
*/
@ApiOperation(value = "delUserById", notes= "DELETE_USER_BY_ID_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "USER_ID",type = "Int")
+ @ApiImplicitParam(name = "id", value = "USER_ID",dataType = "Int", example = "100")
})
@PostMapping(value = "/delete")
@ResponseStatus(HttpStatus.OK)
@@ -205,7 +205,7 @@ public class UsersController extends BaseController{
*/
@ApiOperation(value = "grantProject", notes= "GRANT_PROJECT_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "userId", value = "USER_ID",type = "Int"),
+ @ApiImplicitParam(name = "userId", value = "USER_ID",dataType = "Int", example = "100"),
@ApiImplicitParam(name = "projectIds", value = "PROJECT_IDS",type = "String")
})
@PostMapping(value = "/grant-project")
@@ -232,7 +232,7 @@ public class UsersController extends BaseController{
*/
@ApiOperation(value = "grantResource", notes= "GRANT_RESOURCE_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "userId", value = "USER_ID",type = "Int"),
+ @ApiImplicitParam(name = "userId", value = "USER_ID",dataType = "Int", example = "100"),
@ApiImplicitParam(name = "resourceIds", value = "RESOURCE_IDS",type = "String")
})
@PostMapping(value = "/grant-file")
@@ -260,7 +260,7 @@ public class UsersController extends BaseController{
*/
@ApiOperation(value = "grantUDFFunc", notes= "GRANT_UDF_FUNC_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "userId", value = "USER_ID",type = "Int"),
+ @ApiImplicitParam(name = "userId", value = "USER_ID",dataType = "Int", example = "100"),
@ApiImplicitParam(name = "udfIds", value = "UDF_IDS",type = "String")
})
@PostMapping(value = "/grant-udf-func")
@@ -289,7 +289,7 @@ public class UsersController extends BaseController{
*/
@ApiOperation(value = "grantDataSource", notes= "GRANT_DATASOURCE_NOTES")
@ApiImplicitParams({
- @ApiImplicitParam(name = "userId", value = "USER_ID",type = "Int"),
+ @ApiImplicitParam(name = "userId", value = "USER_ID",dataType = "Int", example = "100"),
@ApiImplicitParam(name = "datasourceIds", value = "DATASOURCE_IDS",type = "String")
})
@PostMapping(value = "/grant-datasource")
diff --git a/escheduler-api/src/main/java/cn/escheduler/api/controller/WorkerGroupController.java b/escheduler-api/src/main/java/cn/escheduler/api/controller/WorkerGroupController.java
index 4843a8083e..875082098a 100644
--- a/escheduler-api/src/main/java/cn/escheduler/api/controller/WorkerGroupController.java
+++ b/escheduler-api/src/main/java/cn/escheduler/api/controller/WorkerGroupController.java
@@ -19,20 +19,27 @@ package cn.escheduler.api.controller;
import cn.escheduler.api.enums.Status;
import cn.escheduler.api.service.WorkerGroupService;
-import cn.escheduler.api.utils.Constants;
import cn.escheduler.api.utils.Result;
import cn.escheduler.dao.model.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
+import static cn.escheduler.api.utils.Constants.SESSION_USER;
+
/**
* worker group controller
*/
+@Api(tags = "WORKER_GROUP_TAG", position = 1)
@RestController
@RequestMapping("/worker-group")
public class WorkerGroupController extends BaseController{
@@ -52,9 +59,15 @@ public class WorkerGroupController extends BaseController{
* @param ipList
* @return
*/
+ @ApiOperation(value = "saveWorkerGroup", notes= "CREATE_WORKER_GROUP_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "WORKER_GROUP_ID", dataType = "Int", example = "10", defaultValue = "0"),
+ @ApiImplicitParam(name = "name", value = "WORKER_GROUP_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "ipList", value = "WORKER_IP_LIST", required = true, dataType ="String")
+ })
@PostMapping(value = "/save")
@ResponseStatus(HttpStatus.OK)
- public Result saveWorkerGroup(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result saveWorkerGroup(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@RequestParam(value = "id", required = false, defaultValue = "0") int id,
@RequestParam(value = "name") String name,
@RequestParam(value = "ipList") String ipList
@@ -79,9 +92,15 @@ public class WorkerGroupController extends BaseController{
* @param pageSize
* @return
*/
+ @ApiOperation(value = "queryAllWorkerGroupsPaging", notes= "QUERY_WORKER_GROUP_PAGING_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "WORKER_GROUP_ID", dataType = "Int", example = "10", defaultValue = "0"),
+ @ApiImplicitParam(name = "name", value = "WORKER_GROUP_NAME", required = true, dataType ="String"),
+ @ApiImplicitParam(name = "ipList", value = "WORKER_IP_LIST", required = true, dataType ="String")
+ })
@GetMapping(value = "/list-paging")
@ResponseStatus(HttpStatus.OK)
- public Result queryAllWorkerGroupsPaging(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result queryAllWorkerGroupsPaging(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@RequestParam("pageNo") Integer pageNo,
@RequestParam(value = "searchVal", required = false) String searchVal,
@RequestParam("pageSize") Integer pageSize
@@ -103,9 +122,10 @@ public class WorkerGroupController extends BaseController{
* @param loginUser
* @return
*/
+ @ApiOperation(value = "queryAllWorkerGroups", notes= "QUERY_WORKER_GROUP_LIST_NOTES")
@GetMapping(value = "/all-groups")
@ResponseStatus(HttpStatus.OK)
- public Result queryAllWorkerGroups(@RequestAttribute(value = Constants.SESSION_USER) User loginUser
+ public Result queryAllWorkerGroups(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser
) {
logger.info("query all worker group: login user {}",
loginUser.getUserName() );
@@ -125,9 +145,14 @@ public class WorkerGroupController extends BaseController{
* @param id
* @return
*/
+ @ApiOperation(value = "deleteById", notes= "DELETE_WORKER_GROUP_BY_ID_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "WORKER_GROUP_ID", required = true, dataType = "Int", example = "10"),
+
+ })
@GetMapping(value = "/delete-by-id")
@ResponseStatus(HttpStatus.OK)
- public Result deleteById(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ public Result deleteById(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@RequestParam("id") Integer id
) {
logger.info("delete worker group: login user {}, id:{} ",
diff --git a/escheduler-api/src/main/resources/application.properties b/escheduler-api/src/main/resources/application.properties
index 118b70e616..b817c18a4a 100644
--- a/escheduler-api/src/main/resources/application.properties
+++ b/escheduler-api/src/main/resources/application.properties
@@ -16,4 +16,4 @@ server.jetty.max-http-post-size=5000000
spring.messages.encoding=UTF-8
#i18n classpath folder , file prefix messages, if have many files, use "," seperator
-spring.messages.basename=messages
+spring.messages.basename=i18n/messages
diff --git a/escheduler-api/src/main/resources/i18n/messages.properties b/escheduler-api/src/main/resources/i18n/messages.properties
new file mode 100644
index 0000000000..db1111ad78
--- /dev/null
+++ b/escheduler-api/src/main/resources/i18n/messages.properties
@@ -0,0 +1,216 @@
+QUERY_SCHEDULE_LIST_NOTES=query schedule list
+DESC=description
+GROUP_NAME=group name
+GROUP_TYPE=group type
+QUERY_ALERT_GROUP_LIST_NOTES=query alert group list
+UPDATE_ALERT_GROUP_NOTES=update alert group
+DELETE_ALERT_GROUP_BY_ID_NOTES=delete alert group by id
+VERIFY_ALERT_GROUP_NAME_NOTES=verify alert group name, check alert group exist or not
+GRANT_ALERT_GROUP_NOTES=grant alert group
+USER_IDS=user id list
+ALERT_GROUP_TAG=alert group related operation
+CREATE_ALERT_GROUP_NOTES=create alert group
+WORKER_GROUP_TAG=worker group related operation
+SAVE_WORKER_GROUP_NOTES=create worker group
+WORKER_GROUP_NAME=worker group name
+WORKER_IP_LIST=worker ip list, eg. 192.168.1.1,192.168.1.2
+QUERY_WORKER_GROUP_PAGING_NOTES=query worker group paging
+QUERY_WORKER_GROUP_LIST_NOTES=query worker group list
+DELETE_WORKER_GROUP_BY_ID_NOTES=delete worker group by id
+DATA_ANALYSIS_TAG=analysis related operation of task state
+COUNT_TASK_STATE_NOTES=count task state
+COUNT_PROCESS_INSTANCE_NOTES=count process instance state
+COUNT_PROCESS_DEFINITION_BY_USER_NOTES=count process definition by user
+COUNT_COMMAND_STATE_NOTES=count command state
+COUNT_QUEUE_STATE_NOTES=count the running status of the task in the queue\
+
+ACCESS_TOKEN_TAG=access token related operation
+MONITOR_TAG=monitor related operation
+MASTER_LIST_NOTES=master server list
+WORKER_LIST_NOTES=worker server list
+QUERY_DATABASE_STATE_NOTES=query database state
+QUERY_ZOOKEEPER_STATE_NOTES=QUERY ZOOKEEPER STATE
+TASK_STATE=task instance state
+SOURCE_TABLE=SOURCE TABLE
+DEST_TABLE=dest table
+TASK_DATE=task date
+QUERY_HISTORY_TASK_RECORD_LIST_PAGING_NOTES=query history task record list paging
+DATA_SOURCE_TAG=data source related operation
+CREATE_DATA_SOURCE_NOTES=create data source
+DATA_SOURCE_NAME=data source name
+DATA_SOURCE_NOTE=data source desc
+DB_TYPE=database type
+DATA_SOURCE_HOST=DATA SOURCE HOST
+DATA_SOURCE_PORT=data source port
+DATABASE_NAME=database name
+QUEUE_TAG=queue related operation
+QUERY_QUEUE_LIST_NOTES=query queue list
+QUERY_QUEUE_LIST_PAGING_NOTES=query queue list paging
+CREATE_QUEUE_NOTES=create queue
+YARN_QUEUE_NAME=yarn(hadoop) queue name
+QUEUE_ID=queue id
+TENANT_DESC=tenant desc
+QUERY_TENANT_LIST_PAGING_NOTES=query tenant list paging
+QUERY_TENANT_LIST_NOTES=query tenant list
+UPDATE_TENANT_NOTES=update tenant
+DELETE_TENANT_NOTES=delete tenant
+RESOURCES_TAG=resource center related operation
+CREATE_RESOURCE_NOTES=create resource
+RESOURCE_TYPE=resource file type
+RESOURCE_NAME=resource name
+RESOURCE_DESC=resource file desc
+RESOURCE_FILE=resource file
+RESOURCE_ID=resource id
+QUERY_RESOURCE_LIST_NOTES=query resource list
+DELETE_RESOURCE_BY_ID_NOTES=delete resource by id
+VIEW_RESOURCE_BY_ID_NOTES=view resource by id
+ONLINE_CREATE_RESOURCE_NOTES=online create resource
+SUFFIX=resource file suffix
+CONTENT=resource file content
+UPDATE_RESOURCE_NOTES=edit resource file online
+DOWNLOAD_RESOURCE_NOTES=download resource file
+CREATE_UDF_FUNCTION_NOTES=create udf function
+UDF_TYPE=UDF type
+FUNC_NAME=function name
+CLASS_NAME=package and class name
+ARG_TYPES=arguments
+UDF_DESC=udf desc
+VIEW_UDF_FUNCTION_NOTES=view udf function
+UPDATE_UDF_FUNCTION_NOTES=update udf function
+QUERY_UDF_FUNCTION_LIST_PAGING_NOTES=query udf function list paging
+VERIFY_UDF_FUNCTION_NAME_NOTES=verify udf function name
+DELETE_UDF_FUNCTION_NOTES=delete udf function
+AUTHORIZED_FILE_NOTES=authorized file
+UNAUTHORIZED_FILE_NOTES=unauthorized file
+AUTHORIZED_UDF_FUNC_NOTES=authorized udf func
+UNAUTHORIZED_UDF_FUNC_NOTES=unauthorized udf func
+VERIFY_QUEUE_NOTES=verify queue
+TENANT_TAG=tenant related operation
+CREATE_TENANT_NOTES=create tenant
+TENANT_CODE=tenant code
+TENANT_NAME=tenant name
+QUEUE_NAME=queue name
+PASSWORD=password
+DATA_SOURCE_OTHER=jdbc connection params, format:{"key1":"value1",...}
+PROJECT_TAG=project related operation
+CREATE_PROJECT_NOTES=create project
+PROJECT_DESC=project description
+UPDATE_PROJECT_NOTES=update project
+PROJECT_ID=project id
+QUERY_PROJECT_BY_ID_NOTES=query project info by project id
+QUERY_PROJECT_LIST_PAGING_NOTES=QUERY PROJECT LIST PAGING
+DELETE_PROJECT_BY_ID_NOTES=delete project by id
+QUERY_UNAUTHORIZED_PROJECT_NOTES=query unauthorized project
+QUERY_AUTHORIZED_PROJECT_NOTES=query authorized project
+TASK_RECORD_TAG=task record related operation
+QUERY_TASK_RECORD_LIST_PAGING_NOTES=query task record list paging
+CREATE_TOKEN_NOTES=create token ,note: please login first
+QUERY_ACCESS_TOKEN_LIST_NOTES=query access token list paging
+SCHEDULE=schedule
+WARNING_TYPE=warning type(sending strategy)
+WARNING_GROUP_ID=warning group id
+FAILURE_STRATEGY=failure strategy
+RECEIVERS=receivers
+RECEIVERS_CC=receivers cc
+WORKER_GROUP_ID=worker server group id
+PROCESS_INSTANCE_PRIORITY=process instance priority
+UPDATE_SCHEDULE_NOTES=update schedule
+SCHEDULE_ID=schedule id
+ONLINE_SCHEDULE_NOTES=online schedule
+OFFLINE_SCHEDULE_NOTES=offline schedule
+QUERY_SCHEDULE_NOTES=query schedule
+QUERY_SCHEDULE_LIST_PAGING_NOTES=query schedule list paging
+LOGIN_TAG=User login related operations
+USER_NAME=user name
+PROJECT_NAME=project name
+CREATE_PROCESS_DEFINITION_NOTES=create process definition
+PROCESS_DEFINITION_NAME=process definition name
+PROCESS_DEFINITION_JSON=process definition detail info (json format)
+PROCESS_DEFINITION_LOCATIONS=process definition node locations info (json format)
+PROCESS_INSTANCE_LOCATIONS=process instance node locations info (json format)
+PROCESS_DEFINITION_CONNECTS=process definition node connects info (json format)
+PROCESS_INSTANCE_CONNECTS=process instance node connects info (json format)
+PROCESS_DEFINITION_DESC=process definition desc
+PROCESS_DEFINITION_TAG=process definition related opertation
+SIGNOUT_NOTES=logout
+USER_PASSWORD=user password
+UPDATE_PROCESS_INSTANCE_NOTES=update process instance
+QUERY_PROCESS_INSTANCE_LIST_NOTES=query process instance list
+VERIFY_PROCCESS_DEFINITION_NAME_NOTES=verify proccess definition name
+LOGIN_NOTES=user login
+UPDATE_PROCCESS_DEFINITION_NOTES=update proccess definition
+PROCESS_DEFINITION_ID=process definition id
+RELEASE_PROCCESS_DEFINITION_NOTES=release proccess definition
+QUERY_PROCCESS_DEFINITION_BY_ID_NOTES=query proccess definition by id
+QUERY_PROCCESS_DEFINITION_LIST_NOTES=query proccess definition list
+QUERY_PROCCESS_DEFINITION_LIST_PAGING_NOTES=query proccess definition list paging
+PAGE_NO=page no
+PROCESS_INSTANCE_ID=process instance id
+PROCESS_INSTANCE_JSON=process instance info(json format)
+SCHEDULE_TIME=schedule time
+SYNC_DEFINE=update the information of the process instance to the process definition\
+
+RECOVERY_PROCESS_INSTANCE_FLAG=whether to recovery process instance
+SEARCH_VAL=search val
+USER_ID=user id
+PAGE_SIZE=page size
+LIMIT=limit
+VIEW_TREE_NOTES=view tree
+GET_NODE_LIST_BY_DEFINITION_ID_NOTES=get task node list by process definition id
+PROCESS_DEFINITION_ID_LIST=process definition id list
+QUERY_PROCESS_INSTANCE_BY_ID_NOTES=query process instance by process instance id
+DELETE_PROCESS_INSTANCE_BY_ID_NOTES=delete process instance by process instance id
+TASK_ID=task instance id
+SKIP_LINE_NUM=skip line num
+QUERY_TASK_INSTANCE_LOG_NOTES=query task instance log
+DOWNLOAD_TASK_INSTANCE_LOG_NOTES=download task instance log
+USERS_TAG=users related operation
+SCHEDULER_TAG=scheduler related operation
+CREATE_SCHEDULE_NOTES=create schedule
+CREATE_USER_NOTES=create user
+TENANT_ID=tenant id
+QUEUE=queue
+EMAIL=email
+PHONE=phone
+QUERY_USER_LIST_NOTES=query user list
+UPDATE_USER_NOTES=update user
+DELETE_USER_BY_ID_NOTES=delete user by id
+GRANT_PROJECT_NOTES=GRANT PROJECT
+PROJECT_IDS=project ids(string format, multiple projects separated by ",")
+GRANT_RESOURCE_NOTES=grant resource file
+RESOURCE_IDS=resource ids(string format, multiple resources separated by ",")
+GET_USER_INFO_NOTES=get user info
+LIST_USER_NOTES=list user
+VERIFY_USER_NAME_NOTES=verify user name
+UNAUTHORIZED_USER_NOTES=cancel authorization
+ALERT_GROUP_ID=alert group id
+AUTHORIZED_USER_NOTES=authorized user
+GRANT_UDF_FUNC_NOTES=grant udf function
+UDF_IDS=udf ids(string format, multiple udf functions separated by ",")
+GRANT_DATASOURCE_NOTES=grant datasource
+DATASOURCE_IDS=datasource ids(string format, multiple datasources separated by ",")
+QUERY_SUBPROCESS_INSTANCE_BY_TASK_ID_NOTES=query subprocess instance by task instance id
+QUERY_PARENT_PROCESS_INSTANCE_BY_SUB_PROCESS_INSTANCE_ID_NOTES=query parent process instance info by sub process instance id
+QUERY_PROCESS_INSTANCE_GLOBAL_VARIABLES_AND_LOCAL_VARIABLES_NOTES=query process instance global variables and local variables
+VIEW_GANTT_NOTES=view gantt
+SUB_PROCESS_INSTANCE_ID=sub process instance id
+TASK_NAME=task instance name
+TASK_INSTANCE_TAG=task instance related operation
+LOGGER_TAG=log related operation
+PROCESS_INSTANCE_TAG=process instance related operation
+EXECUTION_STATUS=runing status for workflow and task nodes
+HOST=ip address of running task
+START_DATE=start date
+END_DATE=end date
+QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_NOTES=query task list by process instance id
+UPDATE_DATA_SOURCE_NOTES=update data source
+DATA_SOURCE_ID=DATA SOURCE ID
+QUERY_DATA_SOURCE_NOTES=query data source by id
+QUERY_DATA_SOURCE_LIST_BY_TYPE_NOTES=query data source list by database type
+QUERY_DATA_SOURCE_LIST_PAGING_NOTES=query data source list paging
+CONNECT_DATA_SOURCE_NOTES=CONNECT DATA SOURCE
+CONNECT_DATA_SOURCE_TEST_NOTES=connect data source test
+DELETE_DATA_SOURCE_NOTES=delete data source
+VERIFY_DATA_SOURCE_NOTES=verify data source
+UNAUTHORIZED_DATA_SOURCE_NOTES=unauthorized data source
+AUTHORIZED_DATA_SOURCE_NOTES=authorized data source
diff --git a/escheduler-api/src/main/resources/i18n/messages_en_US.properties b/escheduler-api/src/main/resources/i18n/messages_en_US.properties
new file mode 100644
index 0000000000..db1111ad78
--- /dev/null
+++ b/escheduler-api/src/main/resources/i18n/messages_en_US.properties
@@ -0,0 +1,216 @@
+QUERY_SCHEDULE_LIST_NOTES=query schedule list
+DESC=description
+GROUP_NAME=group name
+GROUP_TYPE=group type
+QUERY_ALERT_GROUP_LIST_NOTES=query alert group list
+UPDATE_ALERT_GROUP_NOTES=update alert group
+DELETE_ALERT_GROUP_BY_ID_NOTES=delete alert group by id
+VERIFY_ALERT_GROUP_NAME_NOTES=verify alert group name, check alert group exist or not
+GRANT_ALERT_GROUP_NOTES=grant alert group
+USER_IDS=user id list
+ALERT_GROUP_TAG=alert group related operation
+CREATE_ALERT_GROUP_NOTES=create alert group
+WORKER_GROUP_TAG=worker group related operation
+SAVE_WORKER_GROUP_NOTES=create worker group
+WORKER_GROUP_NAME=worker group name
+WORKER_IP_LIST=worker ip list, eg. 192.168.1.1,192.168.1.2
+QUERY_WORKER_GROUP_PAGING_NOTES=query worker group paging
+QUERY_WORKER_GROUP_LIST_NOTES=query worker group list
+DELETE_WORKER_GROUP_BY_ID_NOTES=delete worker group by id
+DATA_ANALYSIS_TAG=analysis related operation of task state
+COUNT_TASK_STATE_NOTES=count task state
+COUNT_PROCESS_INSTANCE_NOTES=count process instance state
+COUNT_PROCESS_DEFINITION_BY_USER_NOTES=count process definition by user
+COUNT_COMMAND_STATE_NOTES=count command state
+COUNT_QUEUE_STATE_NOTES=count the running status of the task in the queue\
+
+ACCESS_TOKEN_TAG=access token related operation
+MONITOR_TAG=monitor related operation
+MASTER_LIST_NOTES=master server list
+WORKER_LIST_NOTES=worker server list
+QUERY_DATABASE_STATE_NOTES=query database state
+QUERY_ZOOKEEPER_STATE_NOTES=QUERY ZOOKEEPER STATE
+TASK_STATE=task instance state
+SOURCE_TABLE=SOURCE TABLE
+DEST_TABLE=dest table
+TASK_DATE=task date
+QUERY_HISTORY_TASK_RECORD_LIST_PAGING_NOTES=query history task record list paging
+DATA_SOURCE_TAG=data source related operation
+CREATE_DATA_SOURCE_NOTES=create data source
+DATA_SOURCE_NAME=data source name
+DATA_SOURCE_NOTE=data source desc
+DB_TYPE=database type
+DATA_SOURCE_HOST=DATA SOURCE HOST
+DATA_SOURCE_PORT=data source port
+DATABASE_NAME=database name
+QUEUE_TAG=queue related operation
+QUERY_QUEUE_LIST_NOTES=query queue list
+QUERY_QUEUE_LIST_PAGING_NOTES=query queue list paging
+CREATE_QUEUE_NOTES=create queue
+YARN_QUEUE_NAME=yarn(hadoop) queue name
+QUEUE_ID=queue id
+TENANT_DESC=tenant desc
+QUERY_TENANT_LIST_PAGING_NOTES=query tenant list paging
+QUERY_TENANT_LIST_NOTES=query tenant list
+UPDATE_TENANT_NOTES=update tenant
+DELETE_TENANT_NOTES=delete tenant
+RESOURCES_TAG=resource center related operation
+CREATE_RESOURCE_NOTES=create resource
+RESOURCE_TYPE=resource file type
+RESOURCE_NAME=resource name
+RESOURCE_DESC=resource file desc
+RESOURCE_FILE=resource file
+RESOURCE_ID=resource id
+QUERY_RESOURCE_LIST_NOTES=query resource list
+DELETE_RESOURCE_BY_ID_NOTES=delete resource by id
+VIEW_RESOURCE_BY_ID_NOTES=view resource by id
+ONLINE_CREATE_RESOURCE_NOTES=online create resource
+SUFFIX=resource file suffix
+CONTENT=resource file content
+UPDATE_RESOURCE_NOTES=edit resource file online
+DOWNLOAD_RESOURCE_NOTES=download resource file
+CREATE_UDF_FUNCTION_NOTES=create udf function
+UDF_TYPE=UDF type
+FUNC_NAME=function name
+CLASS_NAME=package and class name
+ARG_TYPES=arguments
+UDF_DESC=udf desc
+VIEW_UDF_FUNCTION_NOTES=view udf function
+UPDATE_UDF_FUNCTION_NOTES=update udf function
+QUERY_UDF_FUNCTION_LIST_PAGING_NOTES=query udf function list paging
+VERIFY_UDF_FUNCTION_NAME_NOTES=verify udf function name
+DELETE_UDF_FUNCTION_NOTES=delete udf function
+AUTHORIZED_FILE_NOTES=authorized file
+UNAUTHORIZED_FILE_NOTES=unauthorized file
+AUTHORIZED_UDF_FUNC_NOTES=authorized udf func
+UNAUTHORIZED_UDF_FUNC_NOTES=unauthorized udf func
+VERIFY_QUEUE_NOTES=verify queue
+TENANT_TAG=tenant related operation
+CREATE_TENANT_NOTES=create tenant
+TENANT_CODE=tenant code
+TENANT_NAME=tenant name
+QUEUE_NAME=queue name
+PASSWORD=password
+DATA_SOURCE_OTHER=jdbc connection params, format:{"key1":"value1",...}
+PROJECT_TAG=project related operation
+CREATE_PROJECT_NOTES=create project
+PROJECT_DESC=project description
+UPDATE_PROJECT_NOTES=update project
+PROJECT_ID=project id
+QUERY_PROJECT_BY_ID_NOTES=query project info by project id
+QUERY_PROJECT_LIST_PAGING_NOTES=QUERY PROJECT LIST PAGING
+DELETE_PROJECT_BY_ID_NOTES=delete project by id
+QUERY_UNAUTHORIZED_PROJECT_NOTES=query unauthorized project
+QUERY_AUTHORIZED_PROJECT_NOTES=query authorized project
+TASK_RECORD_TAG=task record related operation
+QUERY_TASK_RECORD_LIST_PAGING_NOTES=query task record list paging
+CREATE_TOKEN_NOTES=create token ,note: please login first
+QUERY_ACCESS_TOKEN_LIST_NOTES=query access token list paging
+SCHEDULE=schedule
+WARNING_TYPE=warning type(sending strategy)
+WARNING_GROUP_ID=warning group id
+FAILURE_STRATEGY=failure strategy
+RECEIVERS=receivers
+RECEIVERS_CC=receivers cc
+WORKER_GROUP_ID=worker server group id
+PROCESS_INSTANCE_PRIORITY=process instance priority
+UPDATE_SCHEDULE_NOTES=update schedule
+SCHEDULE_ID=schedule id
+ONLINE_SCHEDULE_NOTES=online schedule
+OFFLINE_SCHEDULE_NOTES=offline schedule
+QUERY_SCHEDULE_NOTES=query schedule
+QUERY_SCHEDULE_LIST_PAGING_NOTES=query schedule list paging
+LOGIN_TAG=User login related operations
+USER_NAME=user name
+PROJECT_NAME=project name
+CREATE_PROCESS_DEFINITION_NOTES=create process definition
+PROCESS_DEFINITION_NAME=process definition name
+PROCESS_DEFINITION_JSON=process definition detail info (json format)
+PROCESS_DEFINITION_LOCATIONS=process definition node locations info (json format)
+PROCESS_INSTANCE_LOCATIONS=process instance node locations info (json format)
+PROCESS_DEFINITION_CONNECTS=process definition node connects info (json format)
+PROCESS_INSTANCE_CONNECTS=process instance node connects info (json format)
+PROCESS_DEFINITION_DESC=process definition desc
+PROCESS_DEFINITION_TAG=process definition related opertation
+SIGNOUT_NOTES=logout
+USER_PASSWORD=user password
+UPDATE_PROCESS_INSTANCE_NOTES=update process instance
+QUERY_PROCESS_INSTANCE_LIST_NOTES=query process instance list
+VERIFY_PROCCESS_DEFINITION_NAME_NOTES=verify proccess definition name
+LOGIN_NOTES=user login
+UPDATE_PROCCESS_DEFINITION_NOTES=update proccess definition
+PROCESS_DEFINITION_ID=process definition id
+RELEASE_PROCCESS_DEFINITION_NOTES=release proccess definition
+QUERY_PROCCESS_DEFINITION_BY_ID_NOTES=query proccess definition by id
+QUERY_PROCCESS_DEFINITION_LIST_NOTES=query proccess definition list
+QUERY_PROCCESS_DEFINITION_LIST_PAGING_NOTES=query proccess definition list paging
+PAGE_NO=page no
+PROCESS_INSTANCE_ID=process instance id
+PROCESS_INSTANCE_JSON=process instance info(json format)
+SCHEDULE_TIME=schedule time
+SYNC_DEFINE=update the information of the process instance to the process definition\
+
+RECOVERY_PROCESS_INSTANCE_FLAG=whether to recovery process instance
+SEARCH_VAL=search val
+USER_ID=user id
+PAGE_SIZE=page size
+LIMIT=limit
+VIEW_TREE_NOTES=view tree
+GET_NODE_LIST_BY_DEFINITION_ID_NOTES=get task node list by process definition id
+PROCESS_DEFINITION_ID_LIST=process definition id list
+QUERY_PROCESS_INSTANCE_BY_ID_NOTES=query process instance by process instance id
+DELETE_PROCESS_INSTANCE_BY_ID_NOTES=delete process instance by process instance id
+TASK_ID=task instance id
+SKIP_LINE_NUM=skip line num
+QUERY_TASK_INSTANCE_LOG_NOTES=query task instance log
+DOWNLOAD_TASK_INSTANCE_LOG_NOTES=download task instance log
+USERS_TAG=users related operation
+SCHEDULER_TAG=scheduler related operation
+CREATE_SCHEDULE_NOTES=create schedule
+CREATE_USER_NOTES=create user
+TENANT_ID=tenant id
+QUEUE=queue
+EMAIL=email
+PHONE=phone
+QUERY_USER_LIST_NOTES=query user list
+UPDATE_USER_NOTES=update user
+DELETE_USER_BY_ID_NOTES=delete user by id
+GRANT_PROJECT_NOTES=GRANT PROJECT
+PROJECT_IDS=project ids(string format, multiple projects separated by ",")
+GRANT_RESOURCE_NOTES=grant resource file
+RESOURCE_IDS=resource ids(string format, multiple resources separated by ",")
+GET_USER_INFO_NOTES=get user info
+LIST_USER_NOTES=list user
+VERIFY_USER_NAME_NOTES=verify user name
+UNAUTHORIZED_USER_NOTES=cancel authorization
+ALERT_GROUP_ID=alert group id
+AUTHORIZED_USER_NOTES=authorized user
+GRANT_UDF_FUNC_NOTES=grant udf function
+UDF_IDS=udf ids(string format, multiple udf functions separated by ",")
+GRANT_DATASOURCE_NOTES=grant datasource
+DATASOURCE_IDS=datasource ids(string format, multiple datasources separated by ",")
+QUERY_SUBPROCESS_INSTANCE_BY_TASK_ID_NOTES=query subprocess instance by task instance id
+QUERY_PARENT_PROCESS_INSTANCE_BY_SUB_PROCESS_INSTANCE_ID_NOTES=query parent process instance info by sub process instance id
+QUERY_PROCESS_INSTANCE_GLOBAL_VARIABLES_AND_LOCAL_VARIABLES_NOTES=query process instance global variables and local variables
+VIEW_GANTT_NOTES=view gantt
+SUB_PROCESS_INSTANCE_ID=sub process instance id
+TASK_NAME=task instance name
+TASK_INSTANCE_TAG=task instance related operation
+LOGGER_TAG=log related operation
+PROCESS_INSTANCE_TAG=process instance related operation
+EXECUTION_STATUS=runing status for workflow and task nodes
+HOST=ip address of running task
+START_DATE=start date
+END_DATE=end date
+QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_NOTES=query task list by process instance id
+UPDATE_DATA_SOURCE_NOTES=update data source
+DATA_SOURCE_ID=DATA SOURCE ID
+QUERY_DATA_SOURCE_NOTES=query data source by id
+QUERY_DATA_SOURCE_LIST_BY_TYPE_NOTES=query data source list by database type
+QUERY_DATA_SOURCE_LIST_PAGING_NOTES=query data source list paging
+CONNECT_DATA_SOURCE_NOTES=CONNECT DATA SOURCE
+CONNECT_DATA_SOURCE_TEST_NOTES=connect data source test
+DELETE_DATA_SOURCE_NOTES=delete data source
+VERIFY_DATA_SOURCE_NOTES=verify data source
+UNAUTHORIZED_DATA_SOURCE_NOTES=unauthorized data source
+AUTHORIZED_DATA_SOURCE_NOTES=authorized data source
diff --git a/escheduler-api/src/main/resources/i18n/messages_zh_CN.properties b/escheduler-api/src/main/resources/i18n/messages_zh_CN.properties
new file mode 100644
index 0000000000..73d62a8839
--- /dev/null
+++ b/escheduler-api/src/main/resources/i18n/messages_zh_CN.properties
@@ -0,0 +1,216 @@
+QUERY_SCHEDULE_LIST_NOTES=查询定时列表
+DESC=备注(描述)
+GROUP_NAME=组名称
+GROUP_TYPE=组类型
+QUERY_ALERT_GROUP_LIST_NOTES=告警组列表\
+
+UPDATE_ALERT_GROUP_NOTES=编辑(更新)告警组
+DELETE_ALERT_GROUP_BY_ID_NOTES=删除告警组通过ID
+VERIFY_ALERT_GROUP_NAME_NOTES=检查告警组是否存在
+GRANT_ALERT_GROUP_NOTES=授权告警组
+USER_IDS=用户ID列表
+ALERT_GROUP_TAG=告警组相关操作
+WORKER_GROUP_TAG=Worker分组管理
+SAVE_WORKER_GROUP_NOTES=创建Worker分组\
+
+WORKER_GROUP_NAME=Worker分组名称
+WORKER_IP_LIST=Worker ip列表,注意:多个IP地址以逗号分割\
+
+QUERY_WORKER_GROUP_PAGING_NOTES=Worker分组管理
+QUERY_WORKER_GROUP_LIST_NOTES=查询worker group分组
+DELETE_WORKER_GROUP_BY_ID_NOTES=删除worker group通过ID
+DATA_ANALYSIS_TAG=任务状态分析相关操作
+COUNT_TASK_STATE_NOTES=任务状态统计
+COUNT_PROCESS_INSTANCE_NOTES=统计流程实例状态
+COUNT_PROCESS_DEFINITION_BY_USER_NOTES=统计用户创建的流程定义
+COUNT_COMMAND_STATE_NOTES=统计命令状态
+COUNT_QUEUE_STATE_NOTES=统计队列里任务状态
+ACCESS_TOKEN_TAG=access token相关操作,需要先登录
+MONITOR_TAG=监控相关操作
+MASTER_LIST_NOTES=master服务列表
+WORKER_LIST_NOTES=worker服务列表
+QUERY_DATABASE_STATE_NOTES=查询数据库状态
+QUERY_ZOOKEEPER_STATE_NOTES=查询Zookeeper状态
+TASK_STATE=任务实例状态
+SOURCE_TABLE=源表
+DEST_TABLE=目标表
+TASK_DATE=任务时间
+QUERY_HISTORY_TASK_RECORD_LIST_PAGING_NOTES=分页查询历史任务记录列表
+DATA_SOURCE_TAG=数据源相关操作
+CREATE_DATA_SOURCE_NOTES=创建数据源
+DATA_SOURCE_NAME=数据源名称
+DATA_SOURCE_NOTE=数据源描述
+DB_TYPE=数据源类型
+DATA_SOURCE_HOST=IP主机名
+DATA_SOURCE_PORT=数据源端口
+DATABASE_NAME=数据库名
+QUEUE_TAG=队列相关操作
+QUERY_QUEUE_LIST_NOTES=查询队列列表
+QUERY_QUEUE_LIST_PAGING_NOTES=分页查询队列列表
+CREATE_QUEUE_NOTES=创建队列
+YARN_QUEUE_NAME=hadoop yarn队列名
+QUEUE_ID=队列ID
+TENANT_DESC=租户描述
+QUERY_TENANT_LIST_PAGING_NOTES=分页查询租户列表
+QUERY_TENANT_LIST_NOTES=查询租户列表
+UPDATE_TENANT_NOTES=更新租户
+DELETE_TENANT_NOTES=删除租户
+RESOURCES_TAG=资源中心相关操作
+CREATE_RESOURCE_NOTES=创建资源
+RESOURCE_TYPE=资源文件类型
+RESOURCE_NAME=资源文件名称
+RESOURCE_DESC=资源文件描述
+RESOURCE_FILE=资源文件
+RESOURCE_ID=资源ID
+QUERY_RESOURCE_LIST_NOTES=查询资源列表
+DELETE_RESOURCE_BY_ID_NOTES=删除资源通过ID
+VIEW_RESOURCE_BY_ID_NOTES=浏览资源通通过ID
+ONLINE_CREATE_RESOURCE_NOTES=在线创建资源
+SUFFIX=资源文件后缀
+CONTENT=资源文件内容
+UPDATE_RESOURCE_NOTES=在线更新资源文件
+DOWNLOAD_RESOURCE_NOTES=下载资源文件
+CREATE_UDF_FUNCTION_NOTES=创建UDF函数
+UDF_TYPE=UDF类型
+FUNC_NAME=函数名称
+CLASS_NAME=包名类名
+ARG_TYPES=参数
+UDF_DESC=udf描述,使用说明
+VIEW_UDF_FUNCTION_NOTES=查看udf函数
+UPDATE_UDF_FUNCTION_NOTES=更新udf函数
+QUERY_UDF_FUNCTION_LIST_PAGING_NOTES=分页查询udf函数列表
+VERIFY_UDF_FUNCTION_NAME_NOTES=验证udf函数名
+DELETE_UDF_FUNCTION_NOTES=删除UDF函数
+AUTHORIZED_FILE_NOTES=授权文件
+UNAUTHORIZED_FILE_NOTES=取消授权文件
+AUTHORIZED_UDF_FUNC_NOTES=授权udf函数
+UNAUTHORIZED_UDF_FUNC_NOTES=取消udf函数授权
+VERIFY_QUEUE_NOTES=验证队列
+TENANT_TAG=租户相关操作
+CREATE_TENANT_NOTES=创建租户
+TENANT_CODE=租户编码
+TENANT_NAME=租户名称
+QUEUE_NAME=队列名
+PASSWORD=密码
+DATA_SOURCE_OTHER=jdbc连接参数,格式为:{"key1":"value1",...}
+PROJECT_TAG=项目相关操作
+CREATE_PROJECT_NOTES=创建项目
+PROJECT_DESC=项目描述
+UPDATE_PROJECT_NOTES=更新项目
+PROJECT_ID=项目ID
+QUERY_PROJECT_BY_ID_NOTES=通过项目ID查询项目信息
+QUERY_PROJECT_LIST_PAGING_NOTES=分页查询项目列表
+DELETE_PROJECT_BY_ID_NOTES=删除项目通过ID
+QUERY_UNAUTHORIZED_PROJECT_NOTES=查询未授权的项目
+QUERY_AUTHORIZED_PROJECT_NOTES=查询授权项目
+TASK_RECORD_TAG=任务记录相关操作
+QUERY_TASK_RECORD_LIST_PAGING_NOTES=分页查询任务记录列表
+CREATE_TOKEN_NOTES=创建token,注意需要先登录
+QUERY_ACCESS_TOKEN_LIST_NOTES=分页查询access token列表
+SCHEDULE=定时
+WARNING_TYPE=发送策略
+WARNING_GROUP_ID=发送组ID
+FAILURE_STRATEGY=失败策略
+RECEIVERS=收件人
+RECEIVERS_CC=收件人(抄送)
+WORKER_GROUP_ID=Worker Server分组ID
+PROCESS_INSTANCE_PRIORITY=流程实例优先级
+UPDATE_SCHEDULE_NOTES=更新定时
+SCHEDULE_ID=定时ID
+ONLINE_SCHEDULE_NOTES=定时上线
+OFFLINE_SCHEDULE_NOTES=定时下线
+QUERY_SCHEDULE_NOTES=查询定时
+QUERY_SCHEDULE_LIST_PAGING_NOTES=分页查询定时
+LOGIN_TAG=用户登录相关操作
+USER_NAME=用户名
+PROJECT_NAME=项目名称
+CREATE_PROCESS_DEFINITION_NOTES=创建流程定义
+PROCESS_DEFINITION_NAME=流程定义名称
+PROCESS_DEFINITION_JSON=流程定义详细信息(json格式)
+PROCESS_DEFINITION_LOCATIONS=流程定义节点坐标位置信息(json格式)
+PROCESS_INSTANCE_LOCATIONS=流程实例节点坐标位置信息(json格式)
+PROCESS_DEFINITION_CONNECTS=流程定义节点图标连接信息(json格式)
+PROCESS_INSTANCE_CONNECTS=流程实例节点图标连接信息(json格式)
+PROCESS_DEFINITION_DESC=流程定义描述信息
+PROCESS_DEFINITION_TAG=流程定义相关操作
+SIGNOUT_NOTES=退出登录
+USER_PASSWORD=用户密码
+UPDATE_PROCESS_INSTANCE_NOTES=更新流程实例
+QUERY_PROCESS_INSTANCE_LIST_NOTES=查询流程实例列表
+VERIFY_PROCCESS_DEFINITION_NAME_NOTES=验证流程定义名字
+LOGIN_NOTES=用户登录
+UPDATE_PROCCESS_DEFINITION_NOTES=更新流程定义
+PROCESS_DEFINITION_ID=流程定义ID
+RELEASE_PROCCESS_DEFINITION_NOTES=发布流程定义
+QUERY_PROCCESS_DEFINITION_BY_ID_NOTES=查询流程定义通过流程定义ID
+QUERY_PROCCESS_DEFINITION_LIST_NOTES=查询流程定义列表
+QUERY_PROCCESS_DEFINITION_LIST_PAGING_NOTES=分页查询流程定义列表
+PAGE_NO=页码号
+PROCESS_INSTANCE_ID=流程实例ID
+PROCESS_INSTANCE_JSON=流程实例信息(json格式)
+SCHEDULE_TIME=定时时间
+SYNC_DEFINE=更新流程实例的信息是否同步到流程定义
+RECOVERY_PROCESS_INSTANCE_FLAG=是否恢复流程实例
+SEARCH_VAL=搜索值
+USER_ID=用户ID
+PAGE_SIZE=页大小
+LIMIT=显示多少条
+VIEW_TREE_NOTES=树状图
+GET_NODE_LIST_BY_DEFINITION_ID_NOTES=获得任务节点列表通过流程定义ID
+PROCESS_DEFINITION_ID_LIST=流程定义id列表
+QUERY_PROCESS_INSTANCE_BY_ID_NOTES=查询流程实例通过流程实例ID
+DELETE_PROCESS_INSTANCE_BY_ID_NOTES=删除流程实例通过流程实例ID
+TASK_ID=任务实例ID
+SKIP_LINE_NUM=忽略行数
+QUERY_TASK_INSTANCE_LOG_NOTES=查询任务实例日志
+DOWNLOAD_TASK_INSTANCE_LOG_NOTES=下载任务实例日志
+USERS_TAG=用户相关操作
+SCHEDULER_TAG=定时相关操作
+CREATE_SCHEDULE_NOTES=创建定时
+CREATE_USER_NOTES=创建用户
+TENANT_ID=租户ID
+QUEUE=使用的队列
+EMAIL=邮箱
+PHONE=手机号
+QUERY_USER_LIST_NOTES=查询用户列表
+UPDATE_USER_NOTES=更新用户
+DELETE_USER_BY_ID_NOTES=删除用户通过ID
+GRANT_PROJECT_NOTES=授权项目
+PROJECT_IDS=项目IDS(字符串格式,多个项目以","分割)
+GRANT_RESOURCE_NOTES=授权资源文件
+RESOURCE_IDS=资源ID列表(字符串格式,多个资源ID以","分割)
+GET_USER_INFO_NOTES=获取用户信息
+LIST_USER_NOTES=用户列表
+VERIFY_USER_NAME_NOTES=验证用户名
+UNAUTHORIZED_USER_NOTES=取消授权
+ALERT_GROUP_ID=报警组ID
+AUTHORIZED_USER_NOTES=授权用户
+GRANT_UDF_FUNC_NOTES=授权udf函数
+UDF_IDS=udf函数id列表(字符串格式,多个udf函数ID以","分割)
+GRANT_DATASOURCE_NOTES=授权数据源
+DATASOURCE_IDS=数据源ID列表(字符串格式,多个数据源ID以","分割)
+QUERY_SUBPROCESS_INSTANCE_BY_TASK_ID_NOTES=查询子流程实例通过任务实例ID
+QUERY_PARENT_PROCESS_INSTANCE_BY_SUB_PROCESS_INSTANCE_ID_NOTES=查询父流程实例信息通过子流程实例ID
+QUERY_PROCESS_INSTANCE_GLOBAL_VARIABLES_AND_LOCAL_VARIABLES_NOTES=查询流程实例全局变量和局部变量
+VIEW_GANTT_NOTES=浏览Gantt图
+SUB_PROCESS_INSTANCE_ID=子流程是咧ID
+TASK_NAME=任务实例名
+TASK_INSTANCE_TAG=任务实例相关操作
+LOGGER_TAG=日志相关操作
+PROCESS_INSTANCE_TAG=流程实例相关操作
+EXECUTION_STATUS=工作流和任务节点的运行状态
+HOST=运行任务的主机IP地址
+START_DATE=开始时间
+END_DATE=结束时间
+QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_NOTES=通过流程实例ID查询任务列表
+UPDATE_DATA_SOURCE_NOTES=更新数据源
+DATA_SOURCE_ID=数据源ID
+QUERY_DATA_SOURCE_NOTES=查询数据源通过ID
+QUERY_DATA_SOURCE_LIST_BY_TYPE_NOTES=查询数据源列表通过数据源类型
+QUERY_DATA_SOURCE_LIST_PAGING_NOTES=分页查询数据源列表
+CONNECT_DATA_SOURCE_NOTES=连接数据源
+CONNECT_DATA_SOURCE_TEST_NOTES=连接数据源测试
+DELETE_DATA_SOURCE_NOTES=删除数据源
+VERIFY_DATA_SOURCE_NOTES=验证数据源
+UNAUTHORIZED_DATA_SOURCE_NOTES=未授权的数据源
+AUTHORIZED_DATA_SOURCE_NOTES=授权的数据源
diff --git a/escheduler-api/src/main/resources/logback.xml b/escheduler-api/src/main/resources/logback.xml
new file mode 100644
index 0000000000..2e27d70ef3
--- /dev/null
+++ b/escheduler-api/src/main/resources/logback.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+ [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+
+ UTF-8
+
+
+
+
+
+
+ INFO
+
+ ${log.base}/escheduler-api-server.log
+
+ ${log.base}/escheduler-api-server.%d{yyyy-MM-dd_HH}.%i.log
+ 168
+ 64MB
+
+
+
+
+ [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+
+ UTF-8
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/escheduler-api/src/main/resources/messages.properties b/escheduler-api/src/main/resources/messages.properties
deleted file mode 100644
index e3a80c0e32..0000000000
--- a/escheduler-api/src/main/resources/messages.properties
+++ /dev/null
@@ -1,98 +0,0 @@
-QUERY_SCHEDULE_LIST_NOTES=query schedule list
-SCHEDULE=schedule
-WARNING_TYPE=warning type(sending strategy)
-WARNING_GROUP_ID=warning group id
-FAILURE_STRATEGY=failure strategy
-RECEIVERS=receivers
-RECEIVERS_CC=receivers cc
-WORKER_GROUP_ID=worker server group id
-PROCESS_INSTANCE_PRIORITY=process instance priority
-UPDATE_SCHEDULE_NOTES=update schedule
-SCHEDULE_ID=schedule id
-ONLINE_SCHEDULE_NOTES=online schedule
-OFFLINE_SCHEDULE_NOTES=offline schedule
-QUERY_SCHEDULE_NOTES=query schedule
-QUERY_SCHEDULE_LIST_PAGING_NOTES=query schedule list paging
-LOGIN_TAG=User login related operations
-USER_NAME=user name
-PROJECT_NAME=project name
-CREATE_PROCESS_DEFINITION_NOTES=create process definition
-PROCESS_DEFINITION_NAME=process definition name
-PROCESS_DEFINITION_JSON=process definition detail info (json format)
-PROCESS_DEFINITION_LOCATIONS=process definition node locations info (json format)
-PROCESS_INSTANCE_LOCATIONS=process instance node locations info (json format)
-PROCESS_DEFINITION_CONNECTS=process definition node connects info (json format)
-PROCESS_INSTANCE_CONNECTS=process instance node connects info (json format)
-PROCESS_DEFINITION_DESC=process definition desc
-PROCESS_DEFINITION_TAG=process definition related opertation
-SIGNOUT_NOTES=logout
-USER_PASSWORD=user password
-UPDATE_PROCESS_INSTANCE_NOTES=update process instance
-QUERY_PROCESS_INSTANCE_LIST_NOTES=query process instance list
-VERIFY_PROCCESS_DEFINITION_NAME_NOTES=verify proccess definition name
-LOGIN_NOTES=user login
-UPDATE_PROCCESS_DEFINITION_NOTES=update proccess definition
-PROCESS_DEFINITION_ID=process definition id
-RELEASE_PROCCESS_DEFINITION_NOTES=release proccess definition
-QUERY_PROCCESS_DEFINITION_BY_ID_NOTES=query proccess definition by id
-QUERY_PROCCESS_DEFINITION_LIST_NOTES=query proccess definition list
-QUERY_PROCCESS_DEFINITION_LIST_PAGING_NOTES=query proccess definition list paging
-PAGE_NO=page no
-PROCESS_INSTANCE_ID=process instance id
-PROCESS_INSTANCE_JSON=process instance info(json format)
-SCHEDULE_TIME=schedule time
-SYNC_DEFINE=update the information of the process instance to the process definition\
-
-RECOVERY_PROCESS_INSTANCE_FLAG=whether to recovery process instance
-SEARCH_VAL=search val
-USER_ID=user id
-PAGE_SIZE=page size
-LIMIT=limit
-VIEW_TREE_NOTES=view tree
-GET_NODE_LIST_BY_DEFINITION_ID_NOTES=get task node list by process definition id
-PROCESS_DEFINITION_ID_LIST=PROCESS DEFINITION ID LIST
-QUERY_PROCESS_INSTANCE_BY_ID_NOTES=query process instance by process instance id
-DELETE_PROCESS_INSTANCE_BY_ID_NOTES=delete process instance by process instance id
-TASK_ID=TASK INSTANCE ID
-SKIP_LINE_NUM=skip line num
-QUERY_TASK_INSTANCE_LOG_NOTES=QUERY TASK INSTANCE LOG
-DOWNLOAD_TASK_INSTANCE_LOG_NOTES=download task instance log
-USERS_TAG=users related operation
-SCHEDULER_TAG=scheduler related operation
-CREATE_SCHEDULE_NOTES=CREATE SCHEDULE
-CREATE_USER_NOTES=create user
-TENANT_ID=tenant id
-QUEUE=queue
-EMAIL=email
-PHONE=phone
-QUERY_USER_LIST_NOTES=query user list
-UPDATE_USER_NOTES=update user
-DELETE_USER_BY_ID_NOTES=delete user by id
-GRANT_PROJECT_NOTES=GRANT PROJECT
-PROJECT_IDS=project ids(string format, multiple projects separated by ",")
-GRANT_RESOURCE_NOTES=grant resource file
-RESOURCE_IDS=resource ids(string format, multiple resources separated by ",")
-GET_USER_INFO_NOTES=get user info
-LIST_USER_NOTES=list user
-VERIFY_USER_NAME_NOTES=verify user name
-UNAUTHORIZED_USER_NOTES=cancel authorization
-ALERT_GROUP_ID=alert group id
-AUTHORIZED_USER_NOTES=authorized user
-GRANT_UDF_FUNC_NOTES=grant udf function
-UDF_IDS=udf ids(string format, multiple udf functions separated by ",")
-GRANT_DATASOURCE_NOTES=GRANT DATASOURCE
-DATASOURCE_IDS=datasource ids(string format, multiple datasources separated by ",")
-QUERY_SUBPROCESS_INSTANCE_BY_TASK_ID_NOTES=query subprocess instance by task instance id
-QUERY_PARENT_PROCESS_INSTANCE_BY_SUB_PROCESS_INSTANCE_ID_NOTES=query parent process instance info by sub process instance id
-QUERY_PROCESS_INSTANCE_GLOBAL_VARIABLES_AND_LOCAL_VARIABLES_NOTES=query process instance global variables and local variables
-VIEW_GANTT_NOTES=view gantt
-SUB_PROCESS_INSTANCE_ID=sub process instance id
-TASK_NAME=task instance name
-TASK_INSTANCE_TAG=task instance related operation
-LOGGER_TAG=log related operation
-PROCESS_INSTANCE_TAG=process instance related operation
-EXECUTION_STATUS=runing status for workflow and task nodes
-HOST=ip address of running task
-START_DATE=start date
-END_DATE=end date
-QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_NOTES=query task list by process instance id
\ No newline at end of file
diff --git a/escheduler-api/src/main/resources/messages_en_US.properties b/escheduler-api/src/main/resources/messages_en_US.properties
deleted file mode 100644
index a378223636..0000000000
--- a/escheduler-api/src/main/resources/messages_en_US.properties
+++ /dev/null
@@ -1,98 +0,0 @@
-QUERY_SCHEDULE_LIST_NOTES=query schedule list
-SCHEDULE=schedule
-WARNING_TYPE=warning type(sending strategy)
-WARNING_GROUP_ID=warning group id
-FAILURE_STRATEGY=failure strategy
-RECEIVERS=receivers
-RECEIVERS_CC=receivers cc
-WORKER_GROUP_ID=worker server group id
-PROCESS_INSTANCE_PRIORITY=process instance priority
-UPDATE_SCHEDULE_NOTES=update schedule
-SCHEDULE_ID=schedule id
-ONLINE_SCHEDULE_NOTES=online schedule
-OFFLINE_SCHEDULE_NOTES=offline schedule
-QUERY_SCHEDULE_NOTES=query schedule
-QUERY_SCHEDULE_LIST_PAGING_NOTES=query schedule list paging
-LOGIN_TAG=User login related operations
-USER_NAME=user name
-PROJECT_NAME=project name
-CREATE_PROCESS_DEFINITION_NOTES=create process definition
-PROCESS_DEFINITION_NAME=process definition name
-PROCESS_DEFINITION_JSON=process definition detail info (json format)
-PROCESS_DEFINITION_LOCATIONS=process definition node locations info (json format)
-PROCESS_INSTANCE_LOCATIONS=process instance node locations info (json format)
-PROCESS_DEFINITION_CONNECTS=process definition node connects info (json format)
-PROCESS_INSTANCE_CONNECTS=process instance node connects info (json format)
-PROCESS_DEFINITION_DESC=process definition desc
-PROCESS_DEFINITION_TAG=process definition related opertation
-SIGNOUT_NOTES=logout
-USER_PASSWORD=user password
-UPDATE_PROCESS_INSTANCE_NOTES=update process instance
-QUERY_PROCESS_INSTANCE_LIST_NOTES=query process instance list
-VERIFY_PROCCESS_DEFINITION_NAME_NOTES=verify proccess definition name
-LOGIN_NOTES=user login
-UPDATE_PROCCESS_DEFINITION_NOTES=update proccess definition
-PROCESS_DEFINITION_ID=process definition id
-RELEASE_PROCCESS_DEFINITION_NOTES=release proccess definition
-QUERY_PROCCESS_DEFINITION_BY_ID_NOTES=query proccess definition by id
-QUERY_PROCCESS_DEFINITION_LIST_NOTES=query proccess definition list
-QUERY_PROCCESS_DEFINITION_LIST_PAGING_NOTES=query proccess definition list paging
-PAGE_NO=page no
-PROCESS_INSTANCE_ID=process instance id
-PROCESS_INSTANCE_JSON=process instance info(json format)
-SCHEDULE_TIME=schedule time
-SYNC_DEFINE=update the information of the process instance to the process definition\
-
-RECOVERY_PROCESS_INSTANCE_FLAG=whether to recovery process instance
-SEARCH_VAL=search val
-USER_ID=user id
-PAGE_SIZE=page size
-LIMIT=limit
-VIEW_TREE_NOTES=view tree
-GET_NODE_LIST_BY_DEFINITION_ID_NOTES=get task node list by process definition id
-PROCESS_DEFINITION_ID_LIST=PROCESS DEFINITION ID LIST
-QUERY_PROCESS_INSTANCE_BY_ID_NOTES=query process instance by process instance id
-DELETE_PROCESS_INSTANCE_BY_ID_NOTES=delete process instance by process instance id
-TASK_ID=TASK INSTANCE ID
-SKIP_LINE_NUM=skip line num
-QUERY_TASK_INSTANCE_LOG_NOTES=QUERY TASK INSTANCE LOG
-DOWNLOAD_TASK_INSTANCE_LOG_NOTES=download task instance log
-USERS_TAG=users related operation
-SCHEDULER_TAG=scheduler related operation
-CREATE_SCHEDULE_NOTES=CREATE SCHEDULE
-CREATE_USER_NOTES=create user
-TENANT_ID=tenant id
-QUEUE=queue
-EMAIL=email
-PHONE=phone
-QUERY_USER_LIST_NOTES=query user list
-UPDATE_USER_NOTES=update user
-DELETE_USER_BY_ID_NOTES=delete user by id
-GRANT_PROJECT_NOTES=GRANT PROJECT
-PROJECT_IDS=project ids(string format, multiple projects separated by ",")
-GRANT_RESOURCE_NOTES=grant resource file
-RESOURCE_IDS=resource ids(string format, multiple resources separated by ",")
-GET_USER_INFO_NOTES=get user info
-LIST_USER_NOTES=list user
-VERIFY_USER_NAME_NOTES=verify user name
-UNAUTHORIZED_USER_NOTES=cancel authorization
-ALERT_GROUP_ID=alert group id
-AUTHORIZED_USER_NOTES=authorized user
-GRANT_UDF_FUNC_NOTES=grant udf function
-UDF_IDS=udf ids(string format, multiple udf functions separated by ",")
-GRANT_DATASOURCE_NOTES=GRANT DATASOURCE
-DATASOURCE_IDS=datasource ids(string format, multiple datasources separated by ",")
-QUERY_SUBPROCESS_INSTANCE_BY_TASK_ID_NOTES=query subprocess instance by task instance id
-QUERY_PARENT_PROCESS_INSTANCE_BY_SUB_PROCESS_INSTANCE_ID_NOTES=query parent process instance info by sub process instance id
-QUERY_PROCESS_INSTANCE_GLOBAL_VARIABLES_AND_LOCAL_VARIABLES_NOTES=query process instance global variables and local variables
-VIEW_GANTT_NOTES=view gantt
-SUB_PROCESS_INSTANCE_ID=sub process instance id
-TASK_NAME=task instance name
-TASK_INSTANCE_TAG=task instance related operation
-LOGGER_TAG=log related operation
-PROCESS_INSTANCE_TAG=process instance related operation
-EXECUTION_STATUS=runing status for workflow and task nodes
-HOST=ip address of running task
-START_DATE=start date
-END_DATE=end date
-QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_NOTES=query task list by process instance id
diff --git a/escheduler-api/src/main/resources/messages_zh_CN.properties b/escheduler-api/src/main/resources/messages_zh_CN.properties
deleted file mode 100644
index f55574a7f4..0000000000
--- a/escheduler-api/src/main/resources/messages_zh_CN.properties
+++ /dev/null
@@ -1,97 +0,0 @@
-QUERY_SCHEDULE_LIST_NOTES=查询定时列表
-SCHEDULE=定时
-WARNING_TYPE=发送策略
-WARNING_GROUP_ID=发送组ID
-FAILURE_STRATEGY=失败策略
-RECEIVERS=收件人
-RECEIVERS_CC=收件人(抄送)
-WORKER_GROUP_ID=Worker Server分组ID
-PROCESS_INSTANCE_PRIORITY=流程实例优先级
-UPDATE_SCHEDULE_NOTES=更新定时
-SCHEDULE_ID=定时ID
-ONLINE_SCHEDULE_NOTES=定时上线
-OFFLINE_SCHEDULE_NOTES=定时下线
-QUERY_SCHEDULE_NOTES=查询定时
-QUERY_SCHEDULE_LIST_PAGING_NOTES=分页查询定时
-LOGIN_TAG=用户登录相关操作
-USER_NAME=用户名
-PROJECT_NAME=项目名称
-CREATE_PROCESS_DEFINITION_NOTES=创建流程定义
-PROCESS_DEFINITION_NAME=流程定义名称
-PROCESS_DEFINITION_JSON=流程定义详细信息(json格式)
-PROCESS_DEFINITION_LOCATIONS=流程定义节点坐标位置信息(json格式)
-PROCESS_INSTANCE_LOCATIONS=流程实例节点坐标位置信息(json格式)
-PROCESS_DEFINITION_CONNECTS=流程定义节点图标连接信息(json格式)
-PROCESS_INSTANCE_CONNECTS=流程实例节点图标连接信息(json格式)
-PROCESS_DEFINITION_DESC=流程定义描述信息
-PROCESS_DEFINITION_TAG=流程定义相关操作
-SIGNOUT_NOTES=退出登录
-USER_PASSWORD=用户密码
-UPDATE_PROCESS_INSTANCE_NOTES=更新流程实例
-QUERY_PROCESS_INSTANCE_LIST_NOTES=查询流程实例列表
-VERIFY_PROCCESS_DEFINITION_NAME_NOTES=验证流程定义名字
-LOGIN_NOTES=用户登录
-UPDATE_PROCCESS_DEFINITION_NOTES=更新流程定义
-PROCESS_DEFINITION_ID=流程定义ID
-RELEASE_PROCCESS_DEFINITION_NOTES=发布流程定义
-QUERY_PROCCESS_DEFINITION_BY_ID_NOTES=查询流程定义通过流程定义ID
-QUERY_PROCCESS_DEFINITION_LIST_NOTES=查询流程定义列表
-QUERY_PROCCESS_DEFINITION_LIST_PAGING_NOTES=分页查询流程定义列表
-PAGE_NO=页码号
-PROCESS_INSTANCE_ID=流程实例ID
-PROCESS_INSTANCE_JSON=流程实例信息(json格式)
-SCHEDULE_TIME=定时时间
-SYNC_DEFINE=更新流程实例的信息是否同步到流程定义
-RECOVERY_PROCESS_INSTANCE_FLAG=是否恢复流程实例
-SEARCH_VAL=搜索值
-USER_ID=用户ID
-PAGE_SIZE=页大小
-LIMIT=显示多少条
-VIEW_TREE_NOTES=树状图
-GET_NODE_LIST_BY_DEFINITION_ID_NOTES=获得任务节点列表通过流程定义ID
-PROCESS_DEFINITION_ID_LIST=流程定义id列表
-QUERY_PROCESS_INSTANCE_BY_ID_NOTES=查询流程实例通过流程实例ID
-DELETE_PROCESS_INSTANCE_BY_ID_NOTES=删除流程实例通过流程实例ID
-TASK_ID=任务实例ID
-SKIP_LINE_NUM=忽略行数
-QUERY_TASK_INSTANCE_LOG_NOTES=查询任务实例日志
-DOWNLOAD_TASK_INSTANCE_LOG_NOTES=下载任务实例日志
-USERS_TAG=用户相关操作
-SCHEDULER_TAG=定时相关操作
-CREATE_SCHEDULE_NOTES=创建定时
-CREATE_USER_NOTES=创建用户
-TENANT_ID=租户ID
-QUEUE=使用的队列
-EMAIL=邮箱
-PHONE=手机号
-QUERY_USER_LIST_NOTES=查询用户列表
-UPDATE_USER_NOTES=更新用户
-DELETE_USER_BY_ID_NOTES=删除用户通过ID
-GRANT_PROJECT_NOTES=授权项目
-PROJECT_IDS=项目IDS(字符串格式,多个项目以","分割)
-GRANT_RESOURCE_NOTES=授权资源文件
-RESOURCE_IDS=资源ID列表(字符串格式,多个资源ID以","分割)
-GET_USER_INFO_NOTES=获取用户信息
-LIST_USER_NOTES=用户列表
-VERIFY_USER_NAME_NOTES=验证用户名
-UNAUTHORIZED_USER_NOTES=取消授权
-ALERT_GROUP_ID=报警组ID
-AUTHORIZED_USER_NOTES=授权用户
-GRANT_UDF_FUNC_NOTES=授权udf函数
-UDF_IDS=udf函数id列表(字符串格式,多个udf函数ID以","分割)
-GRANT_DATASOURCE_NOTES=授权数据源
-DATASOURCE_IDS=数据源ID列表(字符串格式,多个数据源ID以","分割)
-QUERY_SUBPROCESS_INSTANCE_BY_TASK_ID_NOTES=查询子流程实例通过任务实例ID
-QUERY_PARENT_PROCESS_INSTANCE_BY_SUB_PROCESS_INSTANCE_ID_NOTES=查询父流程实例信息通过子流程实例ID
-QUERY_PROCESS_INSTANCE_GLOBAL_VARIABLES_AND_LOCAL_VARIABLES_NOTES=查询流程实例全局变量和局部变量
-VIEW_GANTT_NOTES=浏览Gantt图
-SUB_PROCESS_INSTANCE_ID=子流程是咧ID
-TASK_NAME=任务实例名
-TASK_INSTANCE_TAG=任务实例相关操作
-LOGGER_TAG=日志相关操作
-PROCESS_INSTANCE_TAG=流程实例相关操作
-EXECUTION_STATUS=工作流和任务节点的运行状态
-HOST=运行任务的主机IP地址
-START_DATE=开始时间
-END_DATE=结束时间
-QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_NOTES=通过流程实例ID查询任务列表