From 06bc3c2397d6ea1d589f9e78cb50819625209571 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 11 Oct 2018 17:25:05 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8B=93=E5=B1=95?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=9A=84=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- quick-start/CUSTOM-PROP.md | 219 +++++++++++++++++++++++++++++++++++++ quick-start/README.md | 2 +- 2 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 quick-start/CUSTOM-PROP.md diff --git a/quick-start/CUSTOM-PROP.md b/quick-start/CUSTOM-PROP.md new file mode 100644 index 000000000..0abda00c6 --- /dev/null +++ b/quick-start/CUSTOM-PROP.md @@ -0,0 +1,219 @@ +# 拓展自定义字段 + +在`hsweb-system`中提供了一些业务功能,但是有的功能只提供了基本的字段信息.`hsweb`提供了拓展字段而无需修改框架源码的方法. + +## 拓展实体类 + +以拓展组织架构中的组织字段为例 + +1. 编写实体类,继承需要拓展的实体: +```java +package com.myproject.entity; + +import org.hswebframework.web.entity.organizational.SimpleOrganizationalEntity; + +public class CustomOrganizationalEntity extends SimpleOrganizationalEntity { + + /**********拓展字段**********/ + private String leader; + + private String nameEn; + + private String otherProperty; + + public String getLeader() { + return leader; + } + + public void setLeader(String leader) { + this.leader = leader; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getOtherProperty() { + return otherProperty; + } + + public void setOtherProperty(String otherProperty) { + this.otherProperty = otherProperty; + } +} +``` + +2. 告诉`hsweb`使用新的实体类 + +将新的实体类提供给hsweb有3种方式. + + 第一种:java自带的serviceLoader; + 第二种:application.yml配置; + 第三种:java类方式配置. + 注意: 选择其中任意一种即可. + +#### serviceLoader方式 + +创建文件:`META-INF/services/org.hswebframework.web.entity.organizational.OrganizationalEntity`内容: + +```text +com.myproject.entity.CustomOrganizationalEntity +``` + +#### application.yml方式 + +```yaml +hsweb: + entity: + mappings: + - source-base-package: org.hswebframework.web.entity.organizational + target-base-package: com.myproject.entity + mapping: + OrganizationalEntity: CustomOrganizationalEntity +``` + +#### java类方式 +```java + @Component + public class CustomEntityMappingCustomer implements EntityMappingCustomer { + @Override + public void customize(MapperEntityFactory entityFactory) { + //OrganizationalEntity使用CustomOrganizationalEntity实现 + entityFactory.addMapping(OrganizationalEntity.class, + MapperEntityFactory.defaultMapper(CustomOrganizationalEntity.class)); + } + } + +``` + +## 修改Dao字段映射 + +使用mybatis作为dao实现时,如果实体类上没有使用jpa注解则需要修改`mapper.xml`的配置来拓展字段. + +jpa注解和mapper配置各有优势(jpa更简单,但只支持简单的字段.mybatis配置稍微复杂,灵活性更高),请根据实际情况选择合适的方式. + +#### 修改mapper配置文件方式 + +1. 创建mapper.xml,可直接复制旧的xml进行修改.旧的xml可在`hsweb-system`中对应的模块进行查找. + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + delete from s_organization where u_id =#{id} + + + + + + + + + + + + + + + + +``` + +2. 覆盖`mapper.xml`配置,将`hsweb`自带的配置替换为新的配置. + + 覆盖方式有2种: application.yml或者java类配置.选择其一即可. + +application.yml方式: + +```yaml +mybatis: + mapper-location-excludes: classpath*:org/hswebframework/**/OrganizationalMapper.xml #不加载的xml + mapper-locations: classpath*:custom/mappers/OrganizationalMapper.xml +``` + +java类配置方式: +```java +@Component //提供给spring才会生效 +public class CustomMybatisMapperCustomer implements MybatisMapperCustomer { + @Override + public String[] getExcludes() { + return new String[]{ + "classpath*:org/hswebframework/**/OrganizationalMapper.xml" + }; + } + + @Override + public String[] getIncludes() { + return new String[]{ + "classpath*:custom/mappers/OrganizationalMapper.xml" + }; + } +} +``` + +#### 使用jpa注解方式 + +依赖jpa-api: +```xml + + org.hibernate.javax.persistence + hibernate-jpa-2.0-api + 1.0.1.Final + +``` + +在拓展的实体类中使用jpa注解: +```java + @Data + @Table //此处设置表名是无效的,仅作为一个解析标识 + public class CustomUserEntity extends SimpleBindRoleUserEntity { + @Column(name = "nick_name") + private String nickName; + } +``` +注意: 暂时只支持简单的属性。不支持表关联 + diff --git a/quick-start/README.md b/quick-start/README.md index 385618643..08d336e0c 100644 --- a/quick-start/README.md +++ b/quick-start/README.md @@ -555,5 +555,5 @@ class TestControllerTest extends Specification { ## 更多教程 -[通用增删改查使用](USE-CRUD.md) , [权限控制](AUTZ.md) ,[业务功能](SYSTEM.md) , [实用工具包](UTILS.md) +[通用增删改查使用](USE-CRUD.md) ,[拓展系统自带功能的字段](CUSTOM-PROP.md) [权限控制](AUTZ.md) ,[业务功能](SYSTEM.md) , [实用工具包](UTILS.md) From ff4f3b74d52d3133216507952fc94f2d43bc3e9e Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 11 Oct 2018 17:48:09 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...faultAopMethodAuthorizeDefinitionParser.java | 12 ++++++------ .../mybatis/MybatisDaoAutoConfiguration.java | 17 ++++++++--------- ...stomer.java => MybatisMapperCustomizer.java} | 2 +- .../web/dao/mybatis/MybatisProperties.java | 8 ++++---- ...omer.java => AbstractSqlTermCustomizer.java} | 2 +- ...TermCustomer.java => SqlTermCustomizer.java} | 2 +- ...java => TreeStructureSqlTermCustomizer.java} | 4 ++-- .../mapper/dict/DictInTermTypeMapper.java | 5 ++--- .../mybatis/mapper/dict/DictTermTypeMapper.java | 7 ++----- .../entity/EntityFactoryInitConfiguration.java | 4 ++-- ...stomer.java => EntityMappingCustomizer.java} | 2 +- .../simple/terms/UserInRoleSqlTerm.java | 4 ++-- ...ava => DynamicFormInitializeCustomizer.java} | 2 +- .../form/simple/SimpleDynamicFormService.java | 15 ++++++--------- .../simple/terms/InServiceTreeInSqlTerm.java | 4 ++-- .../simple/terms/UserInSqlTerm.java | 4 ++-- .../service/imp/WorkFlowFormServiceImpl.java | 9 ++------- .../web/workflow/terms/ClaimSqlTerm.java | 4 ++-- .../web/workflow/terms/CompletedSqlTerm.java | 4 ++-- .../terms/ProcessParticipateSqlTerm.java | 4 ++-- .../web/workflow/terms/TodoSqlTerm.java | 4 ++-- quick-start/CUSTOM-PROP.md | 13 +++++++------ 22 files changed, 60 insertions(+), 72 deletions(-) rename hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/{MybatisMapperCustomer.java => MybatisMapperCustomizer.java} (81%) rename hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/{AbstractSqlTermCustomer.java => AbstractSqlTermCustomizer.java} (96%) rename hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/{SqlTermCustomer.java => SqlTermCustomizer.java} (76%) rename hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/{TreeStructureSqlTermCustomer.java => TreeStructureSqlTermCustomizer.java} (93%) rename hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/{EntityMappingCustomer.java => EntityMappingCustomizer.java} (82%) rename hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/initialize/{DynamicFormInitializeCustomer.java => DynamicFormInitializeCustomizer.java} (81%) diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java index 4998a851c..9c39262e5 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java @@ -29,13 +29,13 @@ public class DefaultAopMethodAuthorizeDefinitionParser implements AopMethodAutho private Map cache = new ConcurrentHashMap<>(); - private List parserCustomers; + private List parserCustomizers; private static Set excludeMethodName = new HashSet<>(Arrays.asList("toString", "clone", "hashCode", "getClass")); @Autowired(required = false) - public void setParserCustomers(List parserCustomers) { - this.parserCustomers = parserCustomers; + public void setParserCustomizers(List parserCustomizers) { + this.parserCustomizers = parserCustomizers; } @Override @@ -59,9 +59,9 @@ public AuthorizeDefinition parse(Class target, Method method, MethodInterceptorC return definition; } //使用自定义 - if (!CollectionUtils.isEmpty(parserCustomers)) { - definition = parserCustomers.stream() - .map(customer -> customer.parse(target, method, context)) + if (!CollectionUtils.isEmpty(parserCustomizers)) { + definition = parserCustomizers.stream() + .map(customizer -> customizer.parse(target, method, context)) .filter(Objects::nonNull) .findAny().orElse(null); if (definition instanceof EmptyAuthorizeDefinition) { diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisDaoAutoConfiguration.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisDaoAutoConfiguration.java index b11a9ee09..7fba7d3c5 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisDaoAutoConfiguration.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisDaoAutoConfiguration.java @@ -20,7 +20,7 @@ import org.hswebframework.ezorm.rdb.render.dialect.Dialect; import org.hswebframework.web.dao.Dao; -import org.hswebframework.web.dao.mybatis.mapper.SqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.SqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.dict.DictInTermTypeMapper; import org.hswebframework.web.dao.mybatis.mapper.dict.DictTermTypeMapper; import org.mybatis.spring.annotation.MapperScan; @@ -34,7 +34,6 @@ import java.util.Arrays; import java.util.List; -import java.util.Set; @Configuration @ComponentScan("org.hswebframework.web.dao.mybatis") @@ -65,7 +64,7 @@ public DictInTermTypeMapper dictNotInTermTypeMapper() { } @Bean - public BeanPostProcessor SqlTermCustomerRegister() { + public BeanPostProcessor sqlTermCustomizerRegister() { List dialects = Arrays.asList( Dialect.H2 @@ -82,14 +81,14 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - if (bean instanceof SqlTermCustomer) { - SqlTermCustomer customer = ((SqlTermCustomer) bean); - if (customer.forDialect() != null) { - for (Dialect dialect : customer.forDialect()) { - dialect.setTermTypeMapper(customer.getTermType(), customer); + if (bean instanceof SqlTermCustomizer) { + SqlTermCustomizer customizer = ((SqlTermCustomizer) bean); + if (customizer.forDialect() != null) { + for (Dialect dialect : customizer.forDialect()) { + dialect.setTermTypeMapper(customizer.getTermType(), customizer); } } else { - dialects.forEach(dialect -> dialect.setTermTypeMapper(customer.getTermType(), customer)); + dialects.forEach(dialect -> dialect.setTermTypeMapper(customizer.getTermType(), customizer)); } } return bean; diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisMapperCustomer.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisMapperCustomizer.java similarity index 81% rename from hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisMapperCustomer.java rename to hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisMapperCustomizer.java index c0893a68a..14f969a08 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisMapperCustomer.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisMapperCustomizer.java @@ -6,7 +6,7 @@ * @author zhouhao * @since 3.0 */ -public interface MybatisMapperCustomer { +public interface MybatisMapperCustomizer { String[] getExcludes(); String[] getIncludes(); diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisProperties.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisProperties.java index e2d53c20f..2f64dacbe 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisProperties.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisProperties.java @@ -61,10 +61,10 @@ public class MybatisProperties extends org.mybatis.spring.boot.autoconfigure.Myb */ private boolean useJpa = true; - private List mybatisMappers; + private List mybatisMappers; @Autowired(required = false) - public void setMybatisMappers(List mybatisMappers) { + public void setMybatisMappers(List mybatisMappers) { this.mybatisMappers = mybatisMappers; } @@ -107,7 +107,7 @@ public Resource[] resolveMapperLocations() { if (mybatisMappers != null) { mybatisMappers.stream() - .map(MybatisMapperCustomer::getIncludes) + .map(MybatisMapperCustomizer::getIncludes) .flatMap(Arrays::stream) .forEach(locations::add); } @@ -125,7 +125,7 @@ public Resource[] resolveMapperLocations() { Set excludes = new HashSet<>(); if (mybatisMappers != null) { mybatisMappers.stream() - .map(MybatisMapperCustomer::getExcludes) + .map(MybatisMapperCustomizer::getExcludes) .flatMap(Arrays::stream) .forEach(excludes::add); } diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomer.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomizer.java similarity index 96% rename from hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomer.java rename to hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomizer.java index c41d22b47..1b76996f8 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomer.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomizer.java @@ -15,7 +15,7 @@ * @since 3.0.0-RC */ @AllArgsConstructor -public abstract class AbstractSqlTermCustomer implements SqlTermCustomer { +public abstract class AbstractSqlTermCustomizer implements SqlTermCustomizer { @Getter protected final String termType; diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/SqlTermCustomer.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/SqlTermCustomizer.java similarity index 76% rename from hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/SqlTermCustomer.java rename to hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/SqlTermCustomizer.java index f36a00441..4d67cedb1 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/SqlTermCustomer.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/SqlTermCustomizer.java @@ -6,7 +6,7 @@ * @author zhouhao * @since 3.0.0-RC */ -public interface SqlTermCustomer extends Dialect.TermTypeMapper { +public interface SqlTermCustomizer extends Dialect.TermTypeMapper { String getTermType(); Dialect[] forDialect(); diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/TreeStructureSqlTermCustomer.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/TreeStructureSqlTermCustomizer.java similarity index 93% rename from hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/TreeStructureSqlTermCustomer.java rename to hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/TreeStructureSqlTermCustomizer.java index d0302e4fd..a68751668 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/TreeStructureSqlTermCustomer.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/TreeStructureSqlTermCustomizer.java @@ -18,12 +18,12 @@ * @since 3.0.0-RC */ @Slf4j -public abstract class TreeStructureSqlTermCustomer extends AbstractSqlTermCustomer { +public abstract class TreeStructureSqlTermCustomizer extends AbstractSqlTermCustomizer { boolean not = false; boolean parent = false; - public TreeStructureSqlTermCustomer(String termType, boolean not,boolean parent) { + public TreeStructureSqlTermCustomizer(String termType, boolean not, boolean parent) { super(termType); this.not = not; } diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictInTermTypeMapper.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictInTermTypeMapper.java index 2f67e5b3b..059cc10a9 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictInTermTypeMapper.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictInTermTypeMapper.java @@ -9,21 +9,20 @@ import org.hswebframework.ezorm.rdb.render.dialect.RenderPhase; import org.hswebframework.ezorm.rdb.render.dialect.function.SqlFunction; import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.ChangedTermValue; import org.hswebframework.web.dict.EnumDict; import java.sql.JDBCType; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; /** * @author zhouhao * @since 3.0.0-RC */ -public class DictInTermTypeMapper extends AbstractSqlTermCustomer { +public class DictInTermTypeMapper extends AbstractSqlTermCustomizer { private boolean not; diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictTermTypeMapper.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictTermTypeMapper.java index fbe359c9d..69e02a333 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictTermTypeMapper.java +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/dict/DictTermTypeMapper.java @@ -6,17 +6,14 @@ import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; import org.hswebframework.ezorm.rdb.render.SqlAppender; import org.hswebframework.ezorm.rdb.render.dialect.Dialect; -import org.hswebframework.ezorm.rdb.render.dialect.RenderPhase; -import org.hswebframework.ezorm.rdb.render.dialect.function.SqlFunction; import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.ChangedTermValue; import org.hswebframework.web.dict.EnumDict; import java.sql.JDBCType; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import static org.hswebframework.web.dao.mybatis.mapper.dict.DictInTermTypeMapper.USE_DICT_MASK_FLAG; @@ -25,7 +22,7 @@ * @author zhouhao * @since 3.0.0-RC */ -public class DictTermTypeMapper extends AbstractSqlTermCustomer { +public class DictTermTypeMapper extends AbstractSqlTermCustomizer { private boolean not; diff --git a/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityFactoryInitConfiguration.java b/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityFactoryInitConfiguration.java index a161b2d58..30f95587d 100644 --- a/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityFactoryInitConfiguration.java +++ b/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityFactoryInitConfiguration.java @@ -24,8 +24,8 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw } else if (bean instanceof PropertyCopier) { mapperEntityFactory.addCopier(((PropertyCopier) bean)); } - if (bean instanceof EntityMappingCustomer) { - ((EntityMappingCustomer) bean).customize(mapperEntityFactory); + if (bean instanceof EntityMappingCustomizer) { + ((EntityMappingCustomizer) bean).customize(mapperEntityFactory); } return bean; } diff --git a/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityMappingCustomer.java b/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityMappingCustomizer.java similarity index 82% rename from hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityMappingCustomer.java rename to hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityMappingCustomizer.java index fcee63ba0..16ed7e86d 100644 --- a/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityMappingCustomer.java +++ b/hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/entity/EntityMappingCustomizer.java @@ -5,6 +5,6 @@ /** * @author zhouhao */ -public interface EntityMappingCustomer { +public interface EntityMappingCustomizer { void customize(MapperEntityFactory entityFactory); } diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/src/main/java/org/hswebframework/web/service/authorization/simple/terms/UserInRoleSqlTerm.java b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/src/main/java/org/hswebframework/web/service/authorization/simple/terms/UserInRoleSqlTerm.java index d52fa743c..5394c7dda 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/src/main/java/org/hswebframework/web/service/authorization/simple/terms/UserInRoleSqlTerm.java +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/src/main/java/org/hswebframework/web/service/authorization/simple/terms/UserInRoleSqlTerm.java @@ -4,7 +4,7 @@ import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; import org.hswebframework.ezorm.rdb.render.SqlAppender; import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.ChangedTermValue; import java.util.List; @@ -13,7 +13,7 @@ * @author zhouhao * @since 3.0 */ -public class UserInRoleSqlTerm extends AbstractSqlTermCustomer { +public class UserInRoleSqlTerm extends AbstractSqlTermCustomizer { private boolean not; diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/initialize/DynamicFormInitializeCustomer.java b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/initialize/DynamicFormInitializeCustomizer.java similarity index 81% rename from hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/initialize/DynamicFormInitializeCustomer.java rename to hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/initialize/DynamicFormInitializeCustomizer.java index 701ee11c4..5bd6fde5b 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/initialize/DynamicFormInitializeCustomer.java +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/initialize/DynamicFormInitializeCustomizer.java @@ -4,7 +4,7 @@ * @author zhouhao * @since 3.0 */ -public interface DynamicFormInitializeCustomer { +public interface DynamicFormInitializeCustomizer { void customTableSetting(TableInitializeContext context); void customTableColumnSetting(ColumnInitializeContext context); diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java index e8ddd8409..e26f65562 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java @@ -31,10 +31,8 @@ import org.hswebframework.web.service.form.*; import org.hswebframework.web.service.form.events.FormDeployEvent; import org.hswebframework.web.service.form.initialize.ColumnInitializeContext; -import org.hswebframework.web.service.form.initialize.DynamicFormInitializeCustomer; +import org.hswebframework.web.service.form.initialize.DynamicFormInitializeCustomizer; import org.hswebframework.web.service.form.initialize.TableInitializeContext; -import org.hswebframework.web.service.form.simple.cluster.ClusterDatabase; -import org.hswebframework.web.service.form.simple.convert.SmartValueConverter; import org.hswebframework.web.service.form.simple.dict.EnumDictValueConverter; import org.hswebframework.web.validator.group.CreateGroup; import org.hswebframework.web.validator.group.UpdateGroup; @@ -53,7 +51,6 @@ import java.math.BigDecimal; import java.math.BigInteger; -import java.sql.Array; import java.sql.JDBCType; import java.sql.SQLException; import java.util.*; @@ -94,7 +91,7 @@ public class SimpleDynamicFormService extends GenericEntityService initializeCustomers; + private List initializeCustomizers; @Autowired private ValidatorFactory validatorFactory; @@ -608,8 +605,8 @@ public RDBTableMetaData getTable() { return table; } }; - if (!CollectionUtils.isEmpty(initializeCustomers)) { - initializeCustomers.forEach(customer -> customer.customTableSetting(context)); + if (!CollectionUtils.isEmpty(initializeCustomizers)) { + initializeCustomizers.forEach(customizer -> customizer.customTableSetting(context)); } } @@ -644,8 +641,8 @@ public RDBTableMetaData getTable() { return table; } }; - if (!CollectionUtils.isEmpty(initializeCustomers)) { - initializeCustomers.forEach(customer -> customer.customTableColumnSetting(context)); + if (!CollectionUtils.isEmpty(initializeCustomizers)) { + initializeCustomizers.forEach(customer -> customer.customTableColumnSetting(context)); } } diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/InServiceTreeInSqlTerm.java b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/InServiceTreeInSqlTerm.java index 632b4c5ef..0c01724be 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/InServiceTreeInSqlTerm.java +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/InServiceTreeInSqlTerm.java @@ -1,7 +1,7 @@ package org.hswebframework.web.service.organizational.simple.terms; import org.hswebframework.web.commons.entity.TreeSupportEntity; -import org.hswebframework.web.dao.mybatis.mapper.TreeStructureSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.TreeStructureSqlTermCustomizer; import org.hswebframework.web.service.QueryService; import java.util.List; @@ -12,7 +12,7 @@ * @author zhouhao * @since 3.0.0-RC */ -public class InServiceTreeInSqlTerm extends TreeStructureSqlTermCustomer { +public class InServiceTreeInSqlTerm extends TreeStructureSqlTermCustomizer { private QueryService, PK> treeService; diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/UserInSqlTerm.java b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/UserInSqlTerm.java index 47390de08..770657732 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/UserInSqlTerm.java +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/src/main/java/org/hswebframework/web/service/organizational/simple/terms/UserInSqlTerm.java @@ -8,7 +8,7 @@ import org.hswebframework.ezorm.rdb.render.dialect.RenderPhase; import org.hswebframework.ezorm.rdb.render.dialect.function.SqlFunction; import org.hswebframework.web.commons.entity.TreeSupportEntity; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.service.QueryService; import java.util.Arrays; @@ -24,7 +24,7 @@ * @since 3.0.0-RC */ @Slf4j -public abstract class UserInSqlTerm extends AbstractSqlTermCustomer { +public abstract class UserInSqlTerm extends AbstractSqlTermCustomizer { @Setter diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java index 88ee2e258..ca0b42b1b 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java @@ -3,7 +3,6 @@ import org.activiti.engine.impl.persistence.entity.ExecutionEntity; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; -import org.hswebframework.ezorm.rdb.RDBTable; import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; import org.hswebframework.ezorm.rdb.meta.RDBTableMetaData; import org.hswebframework.ezorm.rdb.meta.converter.DateTimeConverter; @@ -13,21 +12,17 @@ import org.hswebframework.web.commons.entity.param.QueryParamEntity; import org.hswebframework.web.service.form.DynamicFormOperationService; import org.hswebframework.web.service.form.initialize.ColumnInitializeContext; -import org.hswebframework.web.service.form.initialize.DynamicFormInitializeCustomer; +import org.hswebframework.web.service.form.initialize.DynamicFormInitializeCustomizer; import org.hswebframework.web.service.form.initialize.TableInitializeContext; import org.hswebframework.web.workflow.dao.entity.ActivityConfigEntity; import org.hswebframework.web.workflow.dao.entity.ProcessDefineConfigEntity; import org.hswebframework.web.workflow.service.ActivityConfigService; import org.hswebframework.web.workflow.service.ProcessDefineConfigService; -import org.hswebframework.web.workflow.service.config.ProcessConfigurationService; import org.hswebframework.web.workflow.service.WorkFlowFormService; -import org.hswebframework.web.workflow.service.config.ActivityConfiguration; -import org.hswebframework.web.workflow.service.config.ProcessConfiguration; import org.hswebframework.web.workflow.service.request.SaveFormRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.sql.JDBCType; @@ -39,7 +34,7 @@ */ @Service @Transactional(rollbackFor = Exception.class) -public class WorkFlowFormServiceImpl extends AbstractFlowableService implements WorkFlowFormService, DynamicFormInitializeCustomer { +public class WorkFlowFormServiceImpl extends AbstractFlowableService implements WorkFlowFormService, DynamicFormInitializeCustomizer { @Autowired private DynamicFormOperationService dynamicFormOperationService; diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ClaimSqlTerm.java b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ClaimSqlTerm.java index 9d49971d7..7f5a03dac 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ClaimSqlTerm.java +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ClaimSqlTerm.java @@ -4,7 +4,7 @@ import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; import org.hswebframework.ezorm.rdb.render.SqlAppender; import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.ChangedTermValue; import java.util.List; @@ -15,7 +15,7 @@ * @author zhouhao * @since 3.0.0-RC */ -public class ClaimSqlTerm extends AbstractSqlTermCustomer { +public class ClaimSqlTerm extends AbstractSqlTermCustomizer { public ClaimSqlTerm(String termType) { super(termType); } diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/CompletedSqlTerm.java b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/CompletedSqlTerm.java index 0dfe30722..093ab9264 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/CompletedSqlTerm.java +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/CompletedSqlTerm.java @@ -4,7 +4,7 @@ import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; import org.hswebframework.ezorm.rdb.render.SqlAppender; import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.ChangedTermValue; import java.util.List; @@ -15,7 +15,7 @@ * @author zhouhao * @since 3.0.0-RC */ -public class CompletedSqlTerm extends AbstractSqlTermCustomer { +public class CompletedSqlTerm extends AbstractSqlTermCustomizer { public CompletedSqlTerm(String termType) { super(termType); } diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ProcessParticipateSqlTerm.java b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ProcessParticipateSqlTerm.java index 1b4f8aa4a..0bbf6d868 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ProcessParticipateSqlTerm.java +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ProcessParticipateSqlTerm.java @@ -4,7 +4,7 @@ import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; import org.hswebframework.ezorm.rdb.render.SqlAppender; import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.ChangedTermValue; import java.util.List; @@ -15,7 +15,7 @@ * @author zhouhao * @since 3.0.0-RC */ -public class ProcessParticipateSqlTerm extends AbstractSqlTermCustomer { +public class ProcessParticipateSqlTerm extends AbstractSqlTermCustomizer { public ProcessParticipateSqlTerm(String termType) { super(termType); } diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/TodoSqlTerm.java b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/TodoSqlTerm.java index 5732c7b01..ccb1afff8 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/TodoSqlTerm.java +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/TodoSqlTerm.java @@ -4,7 +4,7 @@ import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; import org.hswebframework.ezorm.rdb.render.SqlAppender; import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper; -import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomer; +import org.hswebframework.web.dao.mybatis.mapper.AbstractSqlTermCustomizer; import org.hswebframework.web.dao.mybatis.mapper.ChangedTermValue; import java.util.List; @@ -15,7 +15,7 @@ * @author zhouhao * @since 3.0.0-RC */ -public class TodoSqlTerm extends AbstractSqlTermCustomer { +public class TodoSqlTerm extends AbstractSqlTermCustomizer { public TodoSqlTerm(String termType) { super(termType); } diff --git a/quick-start/CUSTOM-PROP.md b/quick-start/CUSTOM-PROP.md index 0abda00c6..9ffe2d94e 100644 --- a/quick-start/CUSTOM-PROP.md +++ b/quick-start/CUSTOM-PROP.md @@ -79,7 +79,7 @@ hsweb: #### java类方式 ```java @Component - public class CustomEntityMappingCustomer implements EntityMappingCustomer { + public class CustomEntityMappingCustomizer implements EntityMappingCustomizer { @Override public void customize(MapperEntityFactory entityFactory) { //OrganizationalEntity使用CustomOrganizationalEntity实现 @@ -100,14 +100,15 @@ jpa注解和mapper配置各有优势(jpa更简单,但只支持简单的字段.my 1. 创建mapper.xml,可直接复制旧的xml进行修改.旧的xml可在`hsweb-system`中对应的模块进行查找. +`com/myproject/mappers/OrganizationalMapper.xml` + ```xml - - + @@ -172,13 +173,13 @@ application.yml方式: ```yaml mybatis: mapper-location-excludes: classpath*:org/hswebframework/**/OrganizationalMapper.xml #不加载的xml - mapper-locations: classpath*:custom/mappers/OrganizationalMapper.xml + mapper-locations: classpath*:com/myproject/mappers/OrganizationalMapper.xml ``` java类配置方式: ```java @Component //提供给spring才会生效 -public class CustomMybatisMapperCustomer implements MybatisMapperCustomer { +public class CustomMybatisMapperCustomizer implements MybatisMapperCustomizer { @Override public String[] getExcludes() { return new String[]{ @@ -189,7 +190,7 @@ public class CustomMybatisMapperCustomer implements MybatisMapperCustomer { @Override public String[] getIncludes() { return new String[]{ - "classpath*:custom/mappers/OrganizationalMapper.xml" + "classpath*:com/myproject/mappers/OrganizationalMapper.xml" }; } } From 5e2f7952dd7c82ecbc6f5112f2fa281e957bc06b Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 11 Oct 2018 18:51:40 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E4=BC=98=E5=8C=96servlet-api=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hsweb-authorization/hsweb-authorization-api/pom.xml | 3 +-- hsweb-authorization/hsweb-authorization-basic/pom.xml | 3 +-- hsweb-authorization/hsweb-authorization-jwt/pom.xml | 3 +-- .../hsweb-authorization-oauth2-auth-server/pom.xml | 3 +-- hsweb-commons/hsweb-commons-utils/pom.xml | 4 ++-- hsweb-logging/hsweb-access-logging-aop/pom.xml | 3 +-- .../hsweb-system-dashboard-starter/pom.xml | 3 +-- .../hsweb-system-datasource-starter/pom.xml | 3 +-- .../hsweb-system-datasource-web/pom.xml | 3 +-- .../hsweb-system-dictionary-starter/pom.xml | 3 +-- .../hsweb-system-dictionary-web/pom.xml | 3 +-- .../hsweb-system-dynamic-form-starter/pom.xml | 3 +-- .../hsweb-system-dynamic-form-web/pom.xml | 3 +-- .../hsweb-system-file/hsweb-system-file-starter/pom.xml | 3 +-- hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml | 3 +-- .../hsweb-system-oauth2-client-starter/pom.xml | 3 +-- .../hsweb-system-oauth2-client-web/pom.xml | 3 +-- .../hsweb-system-oauth2-server-starter/pom.xml | 3 +-- .../hsweb-system-oauth2-server-web/pom.xml | 3 +-- .../hsweb-system-organizational-starter/pom.xml | 3 +-- .../hsweb-system-organizational-web/pom.xml | 3 +-- .../hsweb-system-schedule-starter/pom.xml | 3 +-- .../hsweb-system-schedule/hsweb-system-schedule-web/pom.xml | 3 +-- .../hsweb-system-script/hsweb-system-script-starter/pom.xml | 3 +-- .../hsweb-system-script/hsweb-system-script-web/pom.xml | 3 +-- .../hsweb-system-template-starter/pom.xml | 3 +-- .../hsweb-system-template/hsweb-system-template-web/pom.xml | 3 +-- 27 files changed, 28 insertions(+), 54 deletions(-) diff --git a/hsweb-authorization/hsweb-authorization-api/pom.xml b/hsweb-authorization/hsweb-authorization-api/pom.xml index d5a642fcc..e427b9825 100644 --- a/hsweb-authorization/hsweb-authorization-api/pom.xml +++ b/hsweb-authorization/hsweb-authorization-api/pom.xml @@ -42,8 +42,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-authorization/hsweb-authorization-basic/pom.xml b/hsweb-authorization/hsweb-authorization-basic/pom.xml index e32c94680..a52be4108 100644 --- a/hsweb-authorization/hsweb-authorization-basic/pom.xml +++ b/hsweb-authorization/hsweb-authorization-basic/pom.xml @@ -81,8 +81,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api provided diff --git a/hsweb-authorization/hsweb-authorization-jwt/pom.xml b/hsweb-authorization/hsweb-authorization-jwt/pom.xml index 478e1bca4..a6e1e9c32 100644 --- a/hsweb-authorization/hsweb-authorization-jwt/pom.xml +++ b/hsweb-authorization/hsweb-authorization-jwt/pom.xml @@ -35,8 +35,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api provided diff --git a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml index 87d3590f6..21076e137 100644 --- a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml +++ b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml @@ -44,8 +44,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-commons/hsweb-commons-utils/pom.xml b/hsweb-commons/hsweb-commons-utils/pom.xml index a45d8abf8..4a5bb5eb4 100644 --- a/hsweb-commons/hsweb-commons-utils/pom.xml +++ b/hsweb-commons/hsweb-commons-utils/pom.xml @@ -33,10 +33,10 @@ 通用模块-工具类 + javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-logging/hsweb-access-logging-aop/pom.xml b/hsweb-logging/hsweb-access-logging-aop/pom.xml index d11176546..c0ec2cf19 100644 --- a/hsweb-logging/hsweb-access-logging-aop/pom.xml +++ b/hsweb-logging/hsweb-access-logging-aop/pom.xml @@ -53,8 +53,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api provided diff --git a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml index 09d52beec..c901ee99c 100644 --- a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml +++ b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml @@ -68,8 +68,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml index 1499caa26..d87abdb36 100644 --- a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml +++ b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml @@ -72,8 +72,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml index 3824fdd16..2d4466741 100644 --- a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml +++ b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml @@ -17,8 +17,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml index 0da9e55bd..2670f74ed 100644 --- a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml +++ b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml @@ -78,8 +78,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml index 12163fd20..1346f00bd 100644 --- a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml +++ b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml @@ -24,8 +24,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml index 7065dda0e..429a85277 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml @@ -69,8 +69,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml index 30a0b1a41..ea8cb6613 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml @@ -16,8 +16,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml b/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml index b2e71125b..e6f15f164 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml @@ -76,8 +76,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml b/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml index 6b86ee635..4f914b0c9 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml @@ -16,8 +16,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml index 051760758..54eca0e3d 100644 --- a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml @@ -78,8 +78,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml index 046fefb89..3235d3009 100644 --- a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml @@ -15,8 +15,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml index e8c8630f6..75b7a4543 100644 --- a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml @@ -51,8 +51,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api provided diff --git a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml index 1aa30aece..f90fc6344 100644 --- a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml @@ -32,8 +32,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml index 195904385..5deeeeffb 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml @@ -78,8 +78,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml index 369b12bda..2e3a882e7 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml @@ -15,8 +15,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml index fb8aae077..d84363563 100644 --- a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml +++ b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml @@ -77,8 +77,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml index 81b393cb1..8854b31bd 100644 --- a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml +++ b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml @@ -14,8 +14,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml b/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml index 73a9602a4..efa290098 100644 --- a/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml +++ b/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml @@ -63,8 +63,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml b/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml index 1f81e43d4..3834ead4e 100644 --- a/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml +++ b/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml @@ -14,8 +14,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true diff --git a/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml b/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml index f2f1f7173..f2f8e5d82 100644 --- a/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml +++ b/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml @@ -63,8 +63,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api test diff --git a/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml b/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml index 40a01b3e2..ec0aa1e5b 100644 --- a/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml +++ b/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml @@ -14,8 +14,7 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api true From ac09bbef94f04ebabcda1314f2f8732f86d0dc19 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 11 Oct 2018 18:58:12 +0800 Subject: [PATCH 04/11] fix bug #93 --- .../web/service/file/FixBug93Test.java | 32 +++++++++++++++++++ .../web/controller/file/FileController.java | 26 ++++++--------- 2 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 hsweb-system/hsweb-system-file/hsweb-system-file-starter/src/test/java/org/hswebframework/web/service/file/FixBug93Test.java diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-starter/src/test/java/org/hswebframework/web/service/file/FixBug93Test.java b/hsweb-system/hsweb-system-file/hsweb-system-file-starter/src/test/java/org/hswebframework/web/service/file/FixBug93Test.java new file mode 100644 index 000000000..fa045a907 --- /dev/null +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-starter/src/test/java/org/hswebframework/web/service/file/FixBug93Test.java @@ -0,0 +1,32 @@ +package org.hswebframework.web.service.file; + +import com.alibaba.fastjson.JSON; +import org.hswebframework.web.tests.SimpleWebApplicationTests; +import org.junit.Assert; +import org.junit.Test; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +/** + * fix bug #93 test + * + * @author zhouhao + * @since 3.0.2 + */ +public class FixBug93Test extends SimpleWebApplicationTests { + + @Test + public void testUploadFile() throws Exception { + String result = mvc.perform( + MockMvcRequestBuilders + .fileUpload("/file/upload") + .file(new MockMultipartFile("file", "test中文.txt", MediaType.TEXT_PLAIN_VALUE, "test".getBytes())) + ).andReturn() + .getResponse() + .getContentAsString(); + + Assert.assertEquals(JSON.parseObject(result).getJSONObject("result").getString("name"), "test中文.txt"); + } + +} diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java b/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java index 50ded359e..5426e7664 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java @@ -33,6 +33,7 @@ import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -254,35 +255,26 @@ public ResponseMessage> upload(@RequestPart("files") Multip @ApiOperation("上传单个文件") @Authorize(action = "upload", description = "上传文件") public ResponseMessage upload(@RequestPart("file") MultipartFile file) { - List fileInfoList = new LinkedList<>(); Authentication authentication = Authentication.current().orElse(null); String creator = authentication == null ? null : authentication.getUser().getId(); if (file.isEmpty()) { return ResponseMessage.ok(); } String fileName = file.getOriginalFilename(); - String contentType = Optional.ofNullable(WebUtil.getHttpServletRequest()) - .orElseThrow(UnsupportedOperationException::new) - .getContentType(); - ParameterParser parser = new ParameterParser(); - Map params = parser.parse(contentType, ';'); - if (params.get("charset") == null) { - try { - fileName = new String(file.getOriginalFilename().getBytes("ISO-8859-1"), "utf-8"); - } catch (@SuppressWarnings("all") UnsupportedEncodingException ignore) { - } - } - if (logger.isInfoEnabled()) { - logger.info("start write file:{}", fileName); - } - +// String contentType = Optional.ofNullable(WebUtil.getHttpServletRequest()) +// .orElseThrow(UnsupportedOperationException::new) +// .getContentType(); +// ParameterParser parser = new ParameterParser(); +// Map params = parser.parse(contentType, ';'); +// if (params.get("charset") == null) { +// fileName = new String(file.getOriginalFilename().getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); +// } FileInfoEntity fileInfo; try { fileInfo = fileService.saveFile(file.getInputStream(), fileName, file.getContentType(), creator); } catch (IOException e) { throw new BusinessException("save file error", e); } - fileInfoList.add(fileInfo); return ResponseMessage.ok(fileInfo) .include(FileInfoEntity.class, FileInfoEntity.id, FileInfoEntity.name, From 5c018834504d0afd9e92869d06ecce70b629ca7c Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 12 Oct 2018 09:37:10 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8D#93=E5=90=8C=E6=A0=B7?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdpart/ueditor/UeditorController.java | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/hsweb-thirdparty/hsweb-thirdparty-ueditor/src/main/java/org/hswebframework/web/thirdpart/ueditor/UeditorController.java b/hsweb-thirdparty/hsweb-thirdparty-ueditor/src/main/java/org/hswebframework/web/thirdpart/ueditor/UeditorController.java index 51e5d6ba3..4b7a27cee 100644 --- a/hsweb-thirdparty/hsweb-thirdparty-ueditor/src/main/java/org/hswebframework/web/thirdpart/ueditor/UeditorController.java +++ b/hsweb-thirdparty/hsweb-thirdparty-ueditor/src/main/java/org/hswebframework/web/thirdpart/ueditor/UeditorController.java @@ -58,9 +58,6 @@ public void init() { private String getDownloadPath(HttpServletRequest request) { return rootPath; -// String contextPath = request.getContextPath(); -// -// return (StringUtils.hasText(contextPath) || contextPath.equals("/") ? "/" : (contextPath.startsWith("/") ? contextPath : "/" + contextPath) + "/"); } /** @@ -71,21 +68,9 @@ private String getDownloadPath(HttpServletRequest request) { */ @RequestMapping(method = RequestMethod.POST, consumes = "multipart/form-data") @ApiOperation("上传文件") - public String upload(@RequestParam(value = "upfile", required = false) MultipartFile file,HttpServletRequest request) throws IOException { + public String upload(@RequestParam(value = "upfile", required = false) MultipartFile file) throws IOException { String fileName = file.getOriginalFilename(); - String contentType = Optional.ofNullable(request) - .orElseThrow(UnsupportedOperationException::new) - .getContentType(); - ParameterParser parser = new ParameterParser(); - Map params = parser.parse(contentType, ';'); - if (params.get("charset") == null) { - try { - fileName = new String(file.getOriginalFilename().getBytes("ISO-8859-1"), "utf-8"); - } catch (@SuppressWarnings("all") UnsupportedEncodingException ignore) { - } - } String suffix = FileType.getSuffixByFilename(fileName); - String path = fileService.saveStaticFile(file.getInputStream(), System.currentTimeMillis() + suffix); State state = new BaseState(true); state.putInfo("size", file.getSize()); From 65b0d756a48367702eba368cff56df4583d6b4b1 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 12 Oct 2018 09:43:00 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/hswebframework/web/controller/file/FileController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java b/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java index 5426e7664..c36d27a09 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-web/src/main/java/org/hswebframework/web/controller/file/FileController.java @@ -261,6 +261,7 @@ public ResponseMessage upload(@RequestPart("file") MultipartFile return ResponseMessage.ok(); } String fileName = file.getOriginalFilename(); + //fix bug #93 // String contentType = Optional.ofNullable(WebUtil.getHttpServletRequest()) // .orElseThrow(UnsupportedOperationException::new) // .getContentType(); From 1f171a27dc87324bd7cb6e9f2c1e42bf8f9788d9 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 12 Oct 2018 12:13:06 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hsweb-authorization-basic/README.md | 25 +++++++++++------- .../img/autz-flow.png | Bin 0 -> 73788 bytes .../img/autz-handle-flow.png | Bin 0 -> 71497 bytes 3 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 hsweb-authorization/hsweb-authorization-basic/img/autz-flow.png create mode 100644 hsweb-authorization/hsweb-authorization-basic/img/autz-handle-flow.png diff --git a/hsweb-authorization/hsweb-authorization-basic/README.md b/hsweb-authorization/hsweb-authorization-basic/README.md index 00183e893..1a7b8b986 100644 --- a/hsweb-authorization/hsweb-authorization-basic/README.md +++ b/hsweb-authorization/hsweb-authorization-basic/README.md @@ -4,7 +4,20 @@ 2. 实现数据权限控制 3. 可动态进行权限配置设置 -默认仅提供了aop方式的权限控制,控制逻辑如下: + +## 授权 +使用`hsweb-authorization-api`提供的监听器,类`UserOnSignIn`监听用户授权事件`AuthorizationSuccessEvent` +当用户完成授权(授权方式可自行实现或者使用框架默认的授权方式,主要触发该事件即可).授权通过后会触发该事件.流程如下 +1. 完成授权,触发`AuthorizationSuccessEvent` +2. `UserOnSignIn` 收到`AuthorizationSuccessEvent`事件,获取参数`token_type`(默认为`sessionId`),以及授权信息 +3. 根据`token_type` 生成token. +4. 将token和授权信息中的userId注册到`UserTokenManager` +5. 将token返回给授权接口 + +![授权](./img/autz-flow.png "授权") + + +## 权限控制 1. `AopAuthorizingController` aop拦截所有controller方法(注解了:`Controller`或者`RestController`的类的方法) 2. 在客户端发起请求的时候,将拦截到的方法信息(`MethodInterceptorContext`)传给权限定义解析器(`AopMethodAuthorizeDefinitionParser`) 进行解析 @@ -14,15 +27,9 @@ 5. 默认的权限控制实现`DefaultAuthorizingHandler`,将分别进行RBAC,数据权限,表达式方式的权限控制. 6. 如果授权未通过,则抛出`AccessDenyException`异常 -## 授权 -使用`hsweb-authorization-api`提供的监听器,类`UserOnSignIn`监听用户授权事件`AuthorizationSuccessEvent` -当用户完成授权(授权方式可自行实现或者使用框架默认的授权方式,主要触发该事件即可).授权通过后会触发该事件.流程如下 +![权限控制](./img/autz-handle-flow.png "权限控制") + -1. 完成授权,触发`AuthorizationSuccessEvent` -2. `UserOnSignIn` 收到`AuthorizationSuccessEvent`事件,获取参数`token_type`(默认为`sessionId`),以及授权信息 -3. 根据`token_type` 生成token. -4. 将token和授权信息中的userId注册到`UserTokenManager` -5. 将token返回给授权接口 ## 注销 与授权同理,类`UserOnSignOut`监听`AuthorizationExitEvent` ,当触发事件后,调用`UserTokenManager`移除当前登录的token信息 diff --git a/hsweb-authorization/hsweb-authorization-basic/img/autz-flow.png b/hsweb-authorization/hsweb-authorization-basic/img/autz-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4137b55f5d14a2069eba2b2c97be766ae1cfad GIT binary patch literal 73788 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 Date: Fri, 12 Oct 2018 15:43:35 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E4=BC=98=E5=8C=96test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorization/DataAccessEntity.java | 2 - .../starter/UserSettingControllerTest.groovy | 93 +++++++------- .../tests/HswebCrudWebApiSpecification.groovy | 121 ++++++++++++++++++ .../web/tests/HswebSpecification.groovy | 31 +++++ .../web/tests/HswebTestApplication.groovy | 15 +++ .../web/tests/SimpleWebApplicationTests.java | 3 +- .../HswebCrudWebApiSpecificationTest.groovy | 88 +++++++++++++ .../web/tests/TestController.java | 101 +++++++++++++++ .../hswebframework/web/tests/TestEntity.java | 10 ++ .../src/test/resources/application.yml | 19 +++ 10 files changed, 435 insertions(+), 48 deletions(-) create mode 100644 hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecification.groovy create mode 100644 hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebSpecification.groovy create mode 100644 hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebTestApplication.groovy create mode 100644 hsweb-tests/src/test/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecificationTest.groovy create mode 100644 hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestController.java create mode 100644 hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestEntity.java create mode 100644 hsweb-tests/src/test/resources/application.yml diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/entity/authorization/DataAccessEntity.java b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/entity/authorization/DataAccessEntity.java index 8ec5d0720..0b05d6348 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/entity/authorization/DataAccessEntity.java +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/entity/authorization/DataAccessEntity.java @@ -3,8 +3,6 @@ import org.hswebframework.web.commons.entity.CloneableEntity; /** - * TODO 完成注释 - * * @author zhouhao */ public class DataAccessEntity implements CloneableEntity { diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/src/test/groovy/org/hswebframework/web/authorization/starter/UserSettingControllerTest.groovy b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/src/test/groovy/org/hswebframework/web/authorization/starter/UserSettingControllerTest.groovy index 41be44131..2efcb0252 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/src/test/groovy/org/hswebframework/web/authorization/starter/UserSettingControllerTest.groovy +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/src/test/groovy/org/hswebframework/web/authorization/starter/UserSettingControllerTest.groovy @@ -3,6 +3,8 @@ package org.hswebframework.web.authorization.starter import com.alibaba.fastjson.JSON import org.hswebframework.web.authorization.Authentication import org.hswebframework.web.authorization.AuthenticationInitializeService +import org.hswebframework.web.authorization.access.DataAccessConfig +import org.hswebframework.web.tests.HswebCrudWebApiSpecification import org.junit.runner.RunWith import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest @@ -27,32 +29,26 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. /** * @author zhouhao - * @since + * @since 3.0 */ -@WebAppConfiguration -@ContextConfiguration -@SpringBootTest(classes = [TestApplication.class], properties = ["classpath:application.yml"]) -class UserSettingControllerTest extends Specification { - @Autowired - private ConfigurableApplicationContext context; - - @Shared - private MockMvc mockMvc; +class UserSettingControllerTest extends HswebCrudWebApiSpecification { @Autowired private AuthenticationInitializeService initializeService; - void setup() { - mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); + @Override + protected String getBaseApi() { + return "/autz-setting" } + def "Add Permission"() { def permissions = [ [ - "id" : "user", - "name" : "用户管理", - "actions": [["action": "query", "describe": "查询"], ["action": "update", "describe": "修改"]] - + "id" : "user", + "name" : "用户管理", + "actions" : [["action": "query", "describe": "查询"], ["action": "update", "describe": "修改"]], + "supportDataAccessTypes": [DataAccessConfig.DefaultType.DENY_FIELDS] ], [ "id" : "role", @@ -99,45 +95,52 @@ class UserSettingControllerTest extends Specification { "Add Permission"() def userId = "Add User"() //添加用户权限 - mockMvc.perform( - post("/autz-setting") - .contentType(MediaType.APPLICATION_JSON) - .content(JSON.toJSONString - ([ - type : "user", //设置类型:user - settingFor: userId, //设置给具体的user - describe : "测试", - details : + doAddRequest(JSON.toJSONString + ([ + type : "user", //设置类型:user + settingFor: userId, //设置给具体的user + describe : "测试", + details : + [ [ - [ - permissionId: "user", //赋予user权限 - actions : ["query", "update"], - status : 1 - ], - [ - permissionId: "role", //赋予role权限 - actions : ["query", "get"], - status : 1 + permissionId: "user", //赋予user权限 + actions : ["query", "update"], + status : 1, + dataAccesses: [ //数据权限,控制查询的时候不能查询password字段 + [ + type : DataAccessConfig.DefaultType.DENY_FIELDS, + action: "query", + config: """{"fields": ["password"]}""" + ] ] ], - menus : [ - [ - menuId: "user-menu" - ], - [ - menuId: "role-menu" - ] + permissionId: "role", //赋予role权限 + actions : ["query", "get"], + status : 1 ] - ]) - )).andDo({ result -> println result.response.contentAsString }) -// .andExpect(status().is(201)) + ], + menus : + [ + [ + menuId: "user-menu" + ], + [ + menuId: "role-menu" + ] + ] + ])) + expect: userId != null def autz = initializeService.initUserAuthorization(userId) autz != null autz.hasPermission("user", "query") autz.hasPermission("role", "query", "get") - + autz.getPermission("user") + .map({ per -> per.findDenyFields("query") }) + .map({ fields -> fields.contains("password") }) + .orElse(false) } + } diff --git a/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecification.groovy b/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecification.groovy new file mode 100644 index 000000000..9bdb9480d --- /dev/null +++ b/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecification.groovy @@ -0,0 +1,121 @@ +package org.hswebframework.web.tests + +import com.alibaba.fastjson.JSON +import org.hswebframework.ezorm.core.dsl.Query +import org.hswebframework.web.WebUtil +import org.hswebframework.web.commons.entity.param.QueryParamEntity +import org.springframework.http.MediaType +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* + + +/** + * @author zhouhao + * @since 3.0.2 + */ +abstract class HswebCrudWebApiSpecification extends HswebSpecification { + + protected abstract String getBaseApi(); + + def doAddRequest(String requestBody) { + def response = mockMvc.perform(post(getBaseApi()) + .content(requestBody) + .contentType(MediaType.APPLICATION_JSON)) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + def doUpdateRequest(String id, String requestBody) { + def response = mockMvc.perform(put("${getBaseApi()}/{id}", id) + .content(requestBody) + .contentType(MediaType.APPLICATION_JSON)) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + def doDeleteRequest(String id) { + def response = mockMvc + .perform(delete("${getBaseApi()}/{id}", id)) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + def doGetRequest(String id) { + def response = mockMvc + .perform(get("${getBaseApi()}/{id}", id)) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + + Query createQuery() { + return Query.empty(new QueryParamEntity()); + } + + def doQueryRequest(Query query) { + MockHttpServletRequestBuilder get = get("${getBaseApi()}") + WebUtil.objectToHttpParameters(query.param) + .forEach({ k, v -> get.param(k, v) }) + def response = mockMvc + .perform(get) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + def doQueryByIdsRequest(String ids) { + def response = mockMvc + .perform(get("${getBaseApi()}/ids").param("ids", ids)) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + def doTotalRequest(Query query) { + MockHttpServletRequestBuilder get = get("${getBaseApi()}/total") + WebUtil.objectToHttpParameters(query.param) + .forEach({ k, v -> get.param(k, v) }) + + def response = mockMvc + .perform(get) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + def doCountRequest(Query query) { + MockHttpServletRequestBuilder get = get("${getBaseApi()}/count") + WebUtil.objectToHttpParameters(query.param) + .forEach({ k, v -> get.param(k, v) }) + def response = mockMvc + .perform(get) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } + + def doNoPagingRequest(Query query) { + MockHttpServletRequestBuilder get = get("${getBaseApi()}/no-paging") + WebUtil.objectToHttpParameters(query.param) + .forEach({ k, v -> get.param(k, v) }) + def response = mockMvc + .perform(get) + .andReturn() + .response + .contentAsString; + return JSON.parseObject(response); + } +} diff --git a/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebSpecification.groovy b/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebSpecification.groovy new file mode 100644 index 000000000..750aec1a2 --- /dev/null +++ b/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebSpecification.groovy @@ -0,0 +1,31 @@ +package org.hswebframework.web.tests + +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.context.ConfigurableApplicationContext +import org.springframework.test.context.ContextConfiguration +import org.springframework.test.context.web.WebAppConfiguration +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.setup.MockMvcBuilders +import spock.lang.Shared +import spock.lang.Specification + +/** + * @author zhouhao + * @since 3.0.2 + */ +@WebAppConfiguration +@ContextConfiguration +@SpringBootTest(classes = [HswebTestApplication.class], properties = ["classpath:application.yml"]) +class HswebSpecification extends Specification { + @Autowired + protected ConfigurableApplicationContext context; + + @Shared + protected MockMvc mockMvc; + + void setup() { + mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); + } + +} diff --git a/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebTestApplication.groovy b/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebTestApplication.groovy new file mode 100644 index 000000000..90455765c --- /dev/null +++ b/hsweb-tests/src/main/groovy/org/hswebframework/web/tests/HswebTestApplication.groovy @@ -0,0 +1,15 @@ +package org.hswebframework.web.tests; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.web.WebAppConfiguration; + +/** + * @author zhouhao + * @since 3.0.2 + */ +@SpringBootApplication +@WebAppConfiguration +@Configuration +class HswebTestApplication { +} diff --git a/hsweb-tests/src/main/java/org/hswebframework/web/tests/SimpleWebApplicationTests.java b/hsweb-tests/src/main/java/org/hswebframework/web/tests/SimpleWebApplicationTests.java index fbf1b9441..b9f4e6510 100644 --- a/hsweb-tests/src/main/java/org/hswebframework/web/tests/SimpleWebApplicationTests.java +++ b/hsweb-tests/src/main/java/org/hswebframework/web/tests/SimpleWebApplicationTests.java @@ -41,12 +41,13 @@ import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup; /** - * TODO 完成注释 + * 已弃用,请使用 {@link HswebSpecification} {@link HswebCrudWebApiSpecification } * * @author zhouhao */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SimpleWebApplicationTests.Config.class) +@Deprecated public class SimpleWebApplicationTests extends AbstractTransactionalJUnit4SpringContextTests { protected MockMvc mvc; diff --git a/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecificationTest.groovy b/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecificationTest.groovy new file mode 100644 index 000000000..82d8c681f --- /dev/null +++ b/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/HswebCrudWebApiSpecificationTest.groovy @@ -0,0 +1,88 @@ +package org.hswebframework.web.tests + +import com.alibaba.fastjson.JSONObject +import spock.lang.Specification + +/** + * @author zhouhao + * @since 3.0.2 + */ +class HswebCrudWebApiSpecificationTest extends HswebCrudWebApiSpecification { + + @Override + protected String getBaseApi() { + return "/test" + } + + def "测试初始化"() { + expect: + mockMvc != null + context != null + } + + def "测试新增"() { + given: + def response = doAddRequest(JSONObject.toJSONString([name: "test"])); + expect: + response != null + response.status == 200 || response.status == 201 + } + + def "测试修改"() { + given: + def response = doUpdateRequest("test", JSONObject.toJSONString([name: "test"])); + expect: + response != null + response.status == 200 + } + + def "测试删除"() { + given: + def response = doDeleteRequest("test"); + expect: + response != null + response.status == 200 + } + + def "测试查询"() { + given: + def response = doQueryRequest(createQuery().where("id", "1234")); + expect: + response != null + response.status == 200 + } + + def "测试根据id查询"() { + given: + def response = doGetRequest("1"); + expect: + response != null + response.status == 200 + } + + def "测试根据id集合查询"() { + given: + def response = doQueryByIdsRequest("1,2,3,4"); + expect: + response != null + response.status == 200 + } + + def "测试查询总数"() { + given: + def response = doCountRequest(createQuery().where("id", "1234")); + expect: + response != null + response.status == 200 + } + + + def "测试不分页查询"() { + given: + def response = doNoPagingRequest(createQuery().where("id", "1234")); + expect: + response != null + response.status == 200 + } + +} diff --git a/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestController.java b/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestController.java new file mode 100644 index 000000000..647f5de88 --- /dev/null +++ b/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestController.java @@ -0,0 +1,101 @@ +package org.hswebframework.web.tests; + +import org.hswebframework.web.commons.entity.Entity; +import org.hswebframework.web.commons.entity.PagerResult; +import org.hswebframework.web.commons.entity.param.QueryParamEntity; +import org.hswebframework.web.controller.SimpleGenericEntityController; +import org.hswebframework.web.service.CrudService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Collections; +import java.util.List; + +/** + * @author zhouhao + * @since 3.0.2 + */ +@RestController +@RequestMapping("/test") +public class TestController implements SimpleGenericEntityController { + + @Override + public CrudService getService() { + return new CrudService() { + @Override + public TestEntity createEntity() { + return new TestEntity(); + } + + @Override + public Class getEntityInstanceType() { + return TestEntity.class; + } + + @Override + public TestEntity deleteByPk(String s) { + return new TestEntity(); + } + + @Override + public String insert(TestEntity data) { + return data.getId(); + } + + @Override + public PagerResult selectPager(Entity param) { + return PagerResult.empty(); + } + + @Override + public List select(Entity param) { + return Collections.emptyList(); + } + + @Override + public int count(Entity param) { + return 0; + } + + @Override + public TestEntity selectSingle(Entity param) { + return null; + } + + @Override + public TestEntity selectByPk(String id) { + return new TestEntity(); + } + + @Override + public List selectByPk(List id) { + return Collections.emptyList(); + } + + @Override + public List select() { + return Collections.emptyList(); + } + + @Override + public int count() { + return 0; + } + + @Override + public int updateByPk(String id, TestEntity data) { + return 0; + } + + @Override + public int updateByPk(List data) { + return 0; + } + + @Override + public String saveOrUpdate(TestEntity testEntity) { + return testEntity.getId(); + } + }; + } +} diff --git a/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestEntity.java b/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestEntity.java new file mode 100644 index 000000000..244466453 --- /dev/null +++ b/hsweb-tests/src/test/groovy/org/hswebframework/web/tests/TestEntity.java @@ -0,0 +1,10 @@ +package org.hswebframework.web.tests; + +import org.hswebframework.web.commons.entity.SimpleGenericEntity; + +/** + * @author zhouhao + * @since 3.0.2 + */ +public class TestEntity extends SimpleGenericEntity { +} diff --git a/hsweb-tests/src/test/resources/application.yml b/hsweb-tests/src/test/resources/application.yml new file mode 100644 index 000000000..027075c17 --- /dev/null +++ b/hsweb-tests/src/test/resources/application.yml @@ -0,0 +1,19 @@ +spring: + aop: + auto: true + datasource: + url : jdbc:h2:mem:permission_test_mem + username : sa + password : + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name : org.h2.Driver +hsweb: + app: + name: 测试 + version: 3.0.0 + +logging: + level: + org.springframework: WARN + org.hswebframework: WARN + org.hswebframework.web: DEBUG \ No newline at end of file From 21081dd69271cce26e88640676ba29810cead2cb Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 12 Oct 2018 15:51:50 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../img/autz-flow.png | Bin 73788 -> 76864 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/hsweb-authorization/hsweb-authorization-basic/img/autz-flow.png b/hsweb-authorization/hsweb-authorization-basic/img/autz-flow.png index ec4137b55f5d14a2069eba2b2c97be766ae1cfad..4a8378c2847b44213e667f85db53abef7ec27ffe 100644 GIT binary patch literal 76864 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�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

Y&qkW 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 R8AsvI?p`rL{|hQz^eX@W literal 73788 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 V$Pev;eJw%g>lmHNKk@VRe*-O Date: Fri, 12 Oct 2018 15:53:47 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/authorization/basic/web/AuthorizationController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/AuthorizationController.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/AuthorizationController.java index b2c1f1638..ec7f4289f 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/AuthorizationController.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/AuthorizationController.java @@ -91,6 +91,9 @@ public ResponseMessage> authorize(@RequestParam @ApiParam(" return doLogin(username, password, WebUtil.getParameters(request)); } + /** + * + */ @SneakyThrows protected ResponseMessage> doLogin(String username, String password, Map parameter) { Assert.hasLength(username, "用户名不能为空"); From 55d64689a6c955d7dc5cc4ff380562ae47d00f61 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 12 Oct 2018 18:13:07 +0800 Subject: [PATCH 11/11] 3.0.2 release --- hsweb-authorization/hsweb-authorization-api/pom.xml | 2 +- hsweb-authorization/hsweb-authorization-basic/pom.xml | 2 +- hsweb-authorization/hsweb-authorization-jwt/pom.xml | 2 +- .../hsweb-authorization-oauth2-auth-server/pom.xml | 2 +- .../hsweb-authorization-oauth2-client/pom.xml | 2 +- .../hsweb-authorization-oauth2-core/pom.xml | 2 +- hsweb-authorization/hsweb-authorization-oauth2/pom.xml | 2 +- hsweb-authorization/pom.xml | 2 +- hsweb-boost/hsweb-boost-aop/pom.xml | 2 +- hsweb-boost/hsweb-boost-excel/pom.xml | 2 +- hsweb-boost/hsweb-boost-ftp/pom.xml | 2 +- hsweb-boost/pom.xml | 2 +- hsweb-commons/hsweb-commons-bean/pom.xml | 2 +- hsweb-commons/hsweb-commons-controller/pom.xml | 2 +- hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/pom.xml | 2 +- .../hsweb-commons-dao/hsweb-commons-dao-mybatis/pom.xml | 2 +- hsweb-commons/hsweb-commons-dao/pom.xml | 2 +- hsweb-commons/hsweb-commons-entity/pom.xml | 2 +- hsweb-commons/hsweb-commons-model/pom.xml | 2 +- .../hsweb-commons-service/hsweb-commons-service-api/pom.xml | 2 +- .../hsweb-commons-service/hsweb-commons-service-oauth2/pom.xml | 2 +- .../hsweb-commons-service/hsweb-commons-service-simple/pom.xml | 2 +- hsweb-commons/hsweb-commons-service/pom.xml | 2 +- hsweb-commons/hsweb-commons-utils/pom.xml | 2 +- hsweb-commons/pom.xml | 2 +- hsweb-concurrent/hsweb-concurrent-async-job/pom.xml | 2 +- hsweb-concurrent/hsweb-concurrent-cache/pom.xml | 2 +- .../hsweb-concurrent-counter-api/pom.xml | 2 +- .../hsweb-concurrent-counter-redis/pom.xml | 2 +- hsweb-concurrent/hsweb-concurrent-counter/pom.xml | 2 +- .../hsweb-concurrent-lock/hsweb-concurrent-lock-api/pom.xml | 2 +- .../hsweb-concurrent-lock/hsweb-concurrent-lock-redis/pom.xml | 2 +- .../hsweb-concurrent-lock/hsweb-concurrent-lock-starter/pom.xml | 2 +- hsweb-concurrent/hsweb-concurrent-lock/pom.xml | 2 +- hsweb-concurrent/pom.xml | 2 +- hsweb-core/pom.xml | 2 +- hsweb-datasource/hsweb-datasource-api/pom.xml | 2 +- hsweb-datasource/hsweb-datasource-jta/pom.xml | 2 +- hsweb-datasource/hsweb-datasource-web/pom.xml | 2 +- hsweb-datasource/pom.xml | 2 +- hsweb-logging/hsweb-access-logging-aop/pom.xml | 2 +- hsweb-logging/hsweb-access-logging-api/pom.xml | 2 +- hsweb-logging/pom.xml | 2 +- hsweb-message/hsweb-message-api/pom.xml | 2 +- hsweb-message/hsweb-message-jms/pom.xml | 2 +- hsweb-message/hsweb-message-redis/pom.xml | 2 +- hsweb-message/hsweb-message-websocket/pom.xml | 2 +- hsweb-message/pom.xml | 2 +- hsweb-starter/hsweb-spring-boot-starter/pom.xml | 2 +- hsweb-starter/pom.xml | 2 +- .../hsweb-system-authorization-api/pom.xml | 2 +- .../hsweb-system-authorization-local/pom.xml | 2 +- .../hsweb-system-authorization-starter/pom.xml | 2 +- .../hsweb-system-authorization-web/pom.xml | 2 +- hsweb-system/hsweb-system-authorization/pom.xml | 2 +- .../hsweb-system-config/hsweb-system-config-api/pom.xml | 2 +- .../hsweb-system-config/hsweb-system-config-local/pom.xml | 2 +- .../hsweb-system-config/hsweb-system-config-starter/pom.xml | 2 +- .../hsweb-system-config/hsweb-system-config-web/pom.xml | 2 +- hsweb-system/hsweb-system-config/pom.xml | 2 +- .../hsweb-system-dashboard/hsweb-system-dashboard-api/pom.xml | 2 +- .../hsweb-system-dashboard/hsweb-system-dashboard-local/pom.xml | 2 +- .../hsweb-system-dashboard-starter/pom.xml | 2 +- .../hsweb-system-dashboard/hsweb-system-dashboard-web/pom.xml | 2 +- hsweb-system/hsweb-system-dashboard/pom.xml | 2 +- .../hsweb-system-database-manager-api/pom.xml | 2 +- .../hsweb-system-database-manager-local/pom.xml | 2 +- .../hsweb-system-database-manager-starter/pom.xml | 2 +- .../hsweb-system-database-manager-web/pom.xml | 2 +- hsweb-system/hsweb-system-database-manager/pom.xml | 2 +- .../hsweb-system-datasource/hsweb-system-datasource-api/pom.xml | 2 +- .../hsweb-system-datasource-local/pom.xml | 2 +- .../hsweb-system-datasource-starter/pom.xml | 2 +- .../hsweb-system-datasource/hsweb-system-datasource-web/pom.xml | 2 +- hsweb-system/hsweb-system-datasource/pom.xml | 2 +- hsweb-system/hsweb-system-dev-tools/pom.xml | 2 +- .../hsweb-system-dictionary/hsweb-system-dictionary-api/pom.xml | 2 +- .../hsweb-system-dictionary-local/pom.xml | 2 +- .../hsweb-system-dictionary-starter/pom.xml | 2 +- .../hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml | 2 +- hsweb-system/hsweb-system-dictionary/pom.xml | 2 +- .../hsweb-system-dynamic-form-api/pom.xml | 2 +- .../hsweb-system-dynamic-form-local/pom.xml | 2 +- .../hsweb-system-dynamic-form-starter/pom.xml | 2 +- .../hsweb-system-dynamic-form-web/pom.xml | 2 +- hsweb-system/hsweb-system-dynamic-form/pom.xml | 2 +- hsweb-system/hsweb-system-file/hsweb-system-file-api/pom.xml | 2 +- hsweb-system/hsweb-system-file/hsweb-system-file-local/pom.xml | 2 +- hsweb-system/hsweb-system-file/hsweb-system-file-oauth2/pom.xml | 2 +- .../hsweb-system-file/hsweb-system-file-starter/pom.xml | 2 +- hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml | 2 +- hsweb-system/hsweb-system-file/pom.xml | 2 +- .../hsweb-system-oauth2-client-api/pom.xml | 2 +- .../hsweb-system-oauth2-client-local/pom.xml | 2 +- .../hsweb-system-oauth2-client-starter/pom.xml | 2 +- .../hsweb-system-oauth2-client-web/pom.xml | 2 +- hsweb-system/hsweb-system-oauth2-client/pom.xml | 2 +- .../hsweb-system-oauth2-server-local/pom.xml | 2 +- .../hsweb-system-oauth2-server-starter/pom.xml | 2 +- .../hsweb-system-oauth2-server-web/pom.xml | 2 +- hsweb-system/hsweb-system-oauth2-server/pom.xml | 2 +- .../hsweb-system-organizational-api/pom.xml | 2 +- .../hsweb-system-organizational-authorization/pom.xml | 2 +- .../hsweb-system-organizational-local/pom.xml | 2 +- .../hsweb-system-organizational-starter/pom.xml | 2 +- .../hsweb-system-organizational-web/pom.xml | 2 +- hsweb-system/hsweb-system-organizational/pom.xml | 2 +- .../hsweb-system-schedule/hsweb-system-schedule-api/pom.xml | 2 +- .../hsweb-system-schedule/hsweb-system-schedule-local/pom.xml | 2 +- .../hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml | 2 +- .../hsweb-system-schedule/hsweb-system-schedule-web/pom.xml | 2 +- hsweb-system/hsweb-system-schedule/pom.xml | 2 +- .../hsweb-system-script/hsweb-system-script-api/pom.xml | 2 +- .../hsweb-system-script/hsweb-system-script-local/pom.xml | 2 +- .../hsweb-system-script/hsweb-system-script-starter/pom.xml | 2 +- .../hsweb-system-script/hsweb-system-script-web/pom.xml | 2 +- hsweb-system/hsweb-system-script/pom.xml | 2 +- .../hsweb-system-template/hsweb-system-template-api/pom.xml | 2 +- .../hsweb-system-template/hsweb-system-template-local/pom.xml | 2 +- .../hsweb-system-template/hsweb-system-template-starter/pom.xml | 2 +- .../hsweb-system-template/hsweb-system-template-web/pom.xml | 2 +- hsweb-system/hsweb-system-template/pom.xml | 2 +- .../hsweb-system-workflow/hsweb-system-workflow-local/pom.xml | 2 +- .../hsweb-system-workflow/hsweb-system-workflow-starter/pom.xml | 2 +- hsweb-system/hsweb-system-workflow/pom.xml | 2 +- hsweb-system/pom.xml | 2 +- hsweb-tests/pom.xml | 2 +- hsweb-thirdparty/hsweb-thirdparty-ueditor/pom.xml | 2 +- hsweb-thirdparty/pom.xml | 2 +- pom.xml | 2 +- 130 files changed, 130 insertions(+), 130 deletions(-) diff --git a/hsweb-authorization/hsweb-authorization-api/pom.xml b/hsweb-authorization/hsweb-authorization-api/pom.xml index e427b9825..99a69567e 100644 --- a/hsweb-authorization/hsweb-authorization-api/pom.xml +++ b/hsweb-authorization/hsweb-authorization-api/pom.xml @@ -5,7 +5,7 @@ hsweb-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-authorization/hsweb-authorization-basic/pom.xml b/hsweb-authorization/hsweb-authorization-basic/pom.xml index a52be4108..07556b2c7 100644 --- a/hsweb-authorization/hsweb-authorization-basic/pom.xml +++ b/hsweb-authorization/hsweb-authorization-basic/pom.xml @@ -5,7 +5,7 @@ hsweb-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-authorization/hsweb-authorization-jwt/pom.xml b/hsweb-authorization/hsweb-authorization-jwt/pom.xml index a6e1e9c32..6f261cc2d 100644 --- a/hsweb-authorization/hsweb-authorization-jwt/pom.xml +++ b/hsweb-authorization/hsweb-authorization-jwt/pom.xml @@ -5,7 +5,7 @@ hsweb-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml index 21076e137..bb1e32275 100644 --- a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml +++ b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/pom.xml @@ -23,7 +23,7 @@ hsweb-authorization-oauth2 org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/pom.xml b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/pom.xml index cbcf3ae79..da5f0c5a7 100644 --- a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/pom.xml +++ b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/pom.xml @@ -23,7 +23,7 @@ hsweb-authorization-oauth2 org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-core/pom.xml b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-core/pom.xml index 7e1c4281d..cdfaad9e1 100644 --- a/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-core/pom.xml +++ b/hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-core/pom.xml @@ -23,7 +23,7 @@ hsweb-authorization-oauth2 org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-authorization/hsweb-authorization-oauth2/pom.xml b/hsweb-authorization/hsweb-authorization-oauth2/pom.xml index 3d1a992f7..0376e7a08 100644 --- a/hsweb-authorization/hsweb-authorization-oauth2/pom.xml +++ b/hsweb-authorization/hsweb-authorization-oauth2/pom.xml @@ -5,7 +5,7 @@ hsweb-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-authorization/pom.xml b/hsweb-authorization/pom.xml index a9e838f0d..b895f4682 100644 --- a/hsweb-authorization/pom.xml +++ b/hsweb-authorization/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-boost/hsweb-boost-aop/pom.xml b/hsweb-boost/hsweb-boost-aop/pom.xml index f32a78b9d..fdfe05512 100644 --- a/hsweb-boost/hsweb-boost-aop/pom.xml +++ b/hsweb-boost/hsweb-boost-aop/pom.xml @@ -23,7 +23,7 @@ hsweb-boost org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-boost/hsweb-boost-excel/pom.xml b/hsweb-boost/hsweb-boost-excel/pom.xml index bdd689fc5..2e2aae0c4 100644 --- a/hsweb-boost/hsweb-boost-excel/pom.xml +++ b/hsweb-boost/hsweb-boost-excel/pom.xml @@ -5,7 +5,7 @@ hsweb-boost org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-boost/hsweb-boost-ftp/pom.xml b/hsweb-boost/hsweb-boost-ftp/pom.xml index cee03befc..8ea07a066 100644 --- a/hsweb-boost/hsweb-boost-ftp/pom.xml +++ b/hsweb-boost/hsweb-boost-ftp/pom.xml @@ -5,7 +5,7 @@ hsweb-boost org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-boost/pom.xml b/hsweb-boost/pom.xml index 057c583e7..0398c7915 100644 --- a/hsweb-boost/pom.xml +++ b/hsweb-boost/pom.xml @@ -23,7 +23,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-commons/hsweb-commons-bean/pom.xml b/hsweb-commons/hsweb-commons-bean/pom.xml index 24e986bf3..e4906a714 100644 --- a/hsweb-commons/hsweb-commons-bean/pom.xml +++ b/hsweb-commons/hsweb-commons-bean/pom.xml @@ -5,7 +5,7 @@ hsweb-commons org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-commons/hsweb-commons-controller/pom.xml b/hsweb-commons/hsweb-commons-controller/pom.xml index 39e57bdca..8ce4e1694 100644 --- a/hsweb-commons/hsweb-commons-controller/pom.xml +++ b/hsweb-commons/hsweb-commons-controller/pom.xml @@ -23,7 +23,7 @@ hsweb-commons org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/pom.xml b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/pom.xml index bbe6139bf..6d5a278a1 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/pom.xml +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/pom.xml @@ -23,7 +23,7 @@ hsweb-commons-dao org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/pom.xml b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/pom.xml index 34cd2446f..4c55b2f39 100644 --- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/pom.xml +++ b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/pom.xml @@ -23,7 +23,7 @@ hsweb-commons-dao org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-commons/hsweb-commons-dao/pom.xml b/hsweb-commons/hsweb-commons-dao/pom.xml index bf306adc1..d3d754c30 100644 --- a/hsweb-commons/hsweb-commons-dao/pom.xml +++ b/hsweb-commons/hsweb-commons-dao/pom.xml @@ -23,7 +23,7 @@ hsweb-commons org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-commons/hsweb-commons-entity/pom.xml b/hsweb-commons/hsweb-commons-entity/pom.xml index d876140f1..efc36abb1 100644 --- a/hsweb-commons/hsweb-commons-entity/pom.xml +++ b/hsweb-commons/hsweb-commons-entity/pom.xml @@ -23,7 +23,7 @@ hsweb-commons org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-commons/hsweb-commons-model/pom.xml b/hsweb-commons/hsweb-commons-model/pom.xml index 778392646..94163a360 100644 --- a/hsweb-commons/hsweb-commons-model/pom.xml +++ b/hsweb-commons/hsweb-commons-model/pom.xml @@ -23,7 +23,7 @@ hsweb-commons org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/pom.xml b/hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/pom.xml index fe49e1519..cc55102a9 100644 --- a/hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/pom.xml +++ b/hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/pom.xml @@ -23,7 +23,7 @@ hsweb-commons-service org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-commons/hsweb-commons-service/hsweb-commons-service-oauth2/pom.xml b/hsweb-commons/hsweb-commons-service/hsweb-commons-service-oauth2/pom.xml index 7d71d4c57..b0c4438b1 100644 --- a/hsweb-commons/hsweb-commons-service/hsweb-commons-service-oauth2/pom.xml +++ b/hsweb-commons/hsweb-commons-service/hsweb-commons-service-oauth2/pom.xml @@ -5,7 +5,7 @@ hsweb-commons-service org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/pom.xml b/hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/pom.xml index 4fc9d5bff..afc77d9d0 100644 --- a/hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/pom.xml +++ b/hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/pom.xml @@ -23,7 +23,7 @@ hsweb-commons-service org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-commons/hsweb-commons-service/pom.xml b/hsweb-commons/hsweb-commons-service/pom.xml index cd5b28838..f5ff16c69 100644 --- a/hsweb-commons/hsweb-commons-service/pom.xml +++ b/hsweb-commons/hsweb-commons-service/pom.xml @@ -23,7 +23,7 @@ hsweb-commons org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-commons/hsweb-commons-utils/pom.xml b/hsweb-commons/hsweb-commons-utils/pom.xml index 4a5bb5eb4..7e16c93d2 100644 --- a/hsweb-commons/hsweb-commons-utils/pom.xml +++ b/hsweb-commons/hsweb-commons-utils/pom.xml @@ -23,7 +23,7 @@ hsweb-commons org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-commons/pom.xml b/hsweb-commons/pom.xml index 54540ae9f..1d4174f76 100644 --- a/hsweb-commons/pom.xml +++ b/hsweb-commons/pom.xml @@ -23,7 +23,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-async-job/pom.xml b/hsweb-concurrent/hsweb-concurrent-async-job/pom.xml index c61b77bdf..a549c3f11 100644 --- a/hsweb-concurrent/hsweb-concurrent-async-job/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-async-job/pom.xml @@ -5,7 +5,7 @@ hsweb-concurrent org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-cache/pom.xml b/hsweb-concurrent/hsweb-concurrent-cache/pom.xml index 27824cca4..8ecb1b4fa 100644 --- a/hsweb-concurrent/hsweb-concurrent-cache/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-cache/pom.xml @@ -22,7 +22,7 @@ hsweb-concurrent org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-api/pom.xml b/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-api/pom.xml index aa68ce797..b0abd66ce 100644 --- a/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-api/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-api/pom.xml @@ -22,7 +22,7 @@ hsweb-concurrent-counter org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-redis/pom.xml b/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-redis/pom.xml index 3f8e2e08d..072284c8f 100644 --- a/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-redis/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-counter/hsweb-concurrent-counter-redis/pom.xml @@ -5,7 +5,7 @@ hsweb-concurrent-counter org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-counter/pom.xml b/hsweb-concurrent/hsweb-concurrent-counter/pom.xml index 678ff310b..1aa0d04c8 100644 --- a/hsweb-concurrent/hsweb-concurrent-counter/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-counter/pom.xml @@ -22,7 +22,7 @@ hsweb-concurrent org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-api/pom.xml b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-api/pom.xml index 2b3aa4cbc..b852345e4 100644 --- a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-api/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-api/pom.xml @@ -5,7 +5,7 @@ hsweb-concurrent-lock org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-redis/pom.xml b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-redis/pom.xml index d1ce25364..4b4e8ae57 100644 --- a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-redis/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-redis/pom.xml @@ -5,7 +5,7 @@ hsweb-concurrent-lock org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/pom.xml b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/pom.xml index 4e1625032..b75618df7 100644 --- a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-concurrent-lock org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/hsweb-concurrent-lock/pom.xml b/hsweb-concurrent/hsweb-concurrent-lock/pom.xml index 2e2d3ffa4..f4e7a589b 100644 --- a/hsweb-concurrent/hsweb-concurrent-lock/pom.xml +++ b/hsweb-concurrent/hsweb-concurrent-lock/pom.xml @@ -22,7 +22,7 @@ hsweb-concurrent org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-concurrent/pom.xml b/hsweb-concurrent/pom.xml index 7738f48d8..29509e1ff 100644 --- a/hsweb-concurrent/pom.xml +++ b/hsweb-concurrent/pom.xml @@ -22,7 +22,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-core/pom.xml b/hsweb-core/pom.xml index c175d0ceb..db9072f14 100644 --- a/hsweb-core/pom.xml +++ b/hsweb-core/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-datasource/hsweb-datasource-api/pom.xml b/hsweb-datasource/hsweb-datasource-api/pom.xml index 918bfb253..b0c489b74 100644 --- a/hsweb-datasource/hsweb-datasource-api/pom.xml +++ b/hsweb-datasource/hsweb-datasource-api/pom.xml @@ -5,7 +5,7 @@ hsweb-datasource org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-datasource/hsweb-datasource-jta/pom.xml b/hsweb-datasource/hsweb-datasource-jta/pom.xml index 39668f4f9..3d63e1122 100644 --- a/hsweb-datasource/hsweb-datasource-jta/pom.xml +++ b/hsweb-datasource/hsweb-datasource-jta/pom.xml @@ -5,7 +5,7 @@ hsweb-datasource org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-datasource/hsweb-datasource-web/pom.xml b/hsweb-datasource/hsweb-datasource-web/pom.xml index 0e8486680..08bb9c9d8 100644 --- a/hsweb-datasource/hsweb-datasource-web/pom.xml +++ b/hsweb-datasource/hsweb-datasource-web/pom.xml @@ -5,7 +5,7 @@ hsweb-datasource org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-datasource/pom.xml b/hsweb-datasource/pom.xml index acac695fb..9b90f58fa 100644 --- a/hsweb-datasource/pom.xml +++ b/hsweb-datasource/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-logging/hsweb-access-logging-aop/pom.xml b/hsweb-logging/hsweb-access-logging-aop/pom.xml index c0ec2cf19..a86feec64 100644 --- a/hsweb-logging/hsweb-access-logging-aop/pom.xml +++ b/hsweb-logging/hsweb-access-logging-aop/pom.xml @@ -5,7 +5,7 @@ hsweb-logging org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-logging/hsweb-access-logging-api/pom.xml b/hsweb-logging/hsweb-access-logging-api/pom.xml index c3f5b2251..61a7d3c8a 100644 --- a/hsweb-logging/hsweb-access-logging-api/pom.xml +++ b/hsweb-logging/hsweb-access-logging-api/pom.xml @@ -5,7 +5,7 @@ hsweb-logging org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-logging/pom.xml b/hsweb-logging/pom.xml index 22e404d05..0a5211209 100644 --- a/hsweb-logging/pom.xml +++ b/hsweb-logging/pom.xml @@ -23,7 +23,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-message/hsweb-message-api/pom.xml b/hsweb-message/hsweb-message-api/pom.xml index 4e296cfbd..ed9d1cc76 100644 --- a/hsweb-message/hsweb-message-api/pom.xml +++ b/hsweb-message/hsweb-message-api/pom.xml @@ -5,7 +5,7 @@ hsweb-message org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-message/hsweb-message-jms/pom.xml b/hsweb-message/hsweb-message-jms/pom.xml index 98d198ae2..2556e5411 100644 --- a/hsweb-message/hsweb-message-jms/pom.xml +++ b/hsweb-message/hsweb-message-jms/pom.xml @@ -5,7 +5,7 @@ hsweb-message org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-message/hsweb-message-redis/pom.xml b/hsweb-message/hsweb-message-redis/pom.xml index b54ef7946..7c7d23ffe 100644 --- a/hsweb-message/hsweb-message-redis/pom.xml +++ b/hsweb-message/hsweb-message-redis/pom.xml @@ -5,7 +5,7 @@ hsweb-message org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-message/hsweb-message-websocket/pom.xml b/hsweb-message/hsweb-message-websocket/pom.xml index cccb50376..0c311e776 100644 --- a/hsweb-message/hsweb-message-websocket/pom.xml +++ b/hsweb-message/hsweb-message-websocket/pom.xml @@ -5,7 +5,7 @@ hsweb-message org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-message/pom.xml b/hsweb-message/pom.xml index 0da14c853..1e2a5ef30 100644 --- a/hsweb-message/pom.xml +++ b/hsweb-message/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-starter/hsweb-spring-boot-starter/pom.xml b/hsweb-starter/hsweb-spring-boot-starter/pom.xml index 5088133d2..c2a0cf1ce 100644 --- a/hsweb-starter/hsweb-spring-boot-starter/pom.xml +++ b/hsweb-starter/hsweb-spring-boot-starter/pom.xml @@ -23,7 +23,7 @@ hsweb-starter org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-starter/pom.xml b/hsweb-starter/pom.xml index 961a67e51..485192800 100644 --- a/hsweb-starter/pom.xml +++ b/hsweb-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/pom.xml b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/pom.xml index dac667e7a..57f20452e 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/pom.xml +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/pom.xml b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/pom.xml index 2ac660535..78b00b335 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/pom.xml +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/pom.xml b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/pom.xml index d02ed2316..8bbb4cd83 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/pom.xml +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/pom.xml @@ -22,7 +22,7 @@ hsweb-system-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-web/pom.xml b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-web/pom.xml index 21314bdbe..b5b3c875c 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-web/pom.xml +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-authorization org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-authorization/pom.xml b/hsweb-system/hsweb-system-authorization/pom.xml index 8213dd5e5..516098b9f 100644 --- a/hsweb-system/hsweb-system-authorization/pom.xml +++ b/hsweb-system/hsweb-system-authorization/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-config/hsweb-system-config-api/pom.xml b/hsweb-system/hsweb-system-config/hsweb-system-config-api/pom.xml index bf63c91b9..da54ebfe2 100644 --- a/hsweb-system/hsweb-system-config/hsweb-system-config-api/pom.xml +++ b/hsweb-system/hsweb-system-config/hsweb-system-config-api/pom.xml @@ -23,7 +23,7 @@ hsweb-system-config org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-system/hsweb-system-config/hsweb-system-config-local/pom.xml b/hsweb-system/hsweb-system-config/hsweb-system-config-local/pom.xml index 9dcfe38cd..49ce60fe3 100644 --- a/hsweb-system/hsweb-system-config/hsweb-system-config-local/pom.xml +++ b/hsweb-system/hsweb-system-config/hsweb-system-config-local/pom.xml @@ -23,7 +23,7 @@ hsweb-system-config org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-config/hsweb-system-config-starter/pom.xml b/hsweb-system/hsweb-system-config/hsweb-system-config-starter/pom.xml index 6484cdcdc..c0f09928a 100644 --- a/hsweb-system/hsweb-system-config/hsweb-system-config-starter/pom.xml +++ b/hsweb-system/hsweb-system-config/hsweb-system-config-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-config org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-config/hsweb-system-config-web/pom.xml b/hsweb-system/hsweb-system-config/hsweb-system-config-web/pom.xml index 62a0678b7..cdefbd217 100644 --- a/hsweb-system/hsweb-system-config/hsweb-system-config-web/pom.xml +++ b/hsweb-system/hsweb-system-config/hsweb-system-config-web/pom.xml @@ -23,7 +23,7 @@ hsweb-system-config org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-config/pom.xml b/hsweb-system/hsweb-system-config/pom.xml index 0adf5543a..ec498c0f6 100644 --- a/hsweb-system/hsweb-system-config/pom.xml +++ b/hsweb-system/hsweb-system-config/pom.xml @@ -23,7 +23,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-api/pom.xml b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-api/pom.xml index b2dc1cd8d..e0e3602dc 100644 --- a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-api/pom.xml +++ b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dashboard org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-local/pom.xml b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-local/pom.xml index 6383672fc..b723c16a6 100644 --- a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-local/pom.xml +++ b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dashboard org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml index c901ee99c..a28a28715 100644 --- a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml +++ b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dashboard org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-web/pom.xml b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-web/pom.xml index 3c2d46bc7..a92601355 100644 --- a/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-web/pom.xml +++ b/hsweb-system/hsweb-system-dashboard/hsweb-system-dashboard-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dashboard org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dashboard/pom.xml b/hsweb-system/hsweb-system-dashboard/pom.xml index ce7935227..40b1e71d1 100644 --- a/hsweb-system/hsweb-system-dashboard/pom.xml +++ b/hsweb-system/hsweb-system-dashboard/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/pom.xml b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/pom.xml index 7abee41bb..efb3a3da4 100644 --- a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/pom.xml +++ b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-database-manager org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-local/pom.xml b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-local/pom.xml index 6f6d82c55..5d0c7a7e7 100644 --- a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-local/pom.xml +++ b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-database-manager org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-starter/pom.xml b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-starter/pom.xml index 171c03dcb..264e4e186 100644 --- a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-starter/pom.xml +++ b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-database-manager org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-web/pom.xml b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-web/pom.xml index 410009e14..88adf8ded 100644 --- a/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-web/pom.xml +++ b/hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-database-manager org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-database-manager/pom.xml b/hsweb-system/hsweb-system-database-manager/pom.xml index 733e9d0a0..51873bd16 100644 --- a/hsweb-system/hsweb-system-database-manager/pom.xml +++ b/hsweb-system/hsweb-system-database-manager/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-api/pom.xml b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-api/pom.xml index 635fc0b31..c8342ead9 100644 --- a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-api/pom.xml +++ b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-datasource org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-local/pom.xml b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-local/pom.xml index 263b0229e..49d856763 100644 --- a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-local/pom.xml +++ b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-datasource org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml index d87abdb36..698d58dfd 100644 --- a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml +++ b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-datasource org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml index 2d4466741..07cb9e1e7 100644 --- a/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml +++ b/hsweb-system/hsweb-system-datasource/hsweb-system-datasource-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-datasource org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-datasource/pom.xml b/hsweb-system/hsweb-system-datasource/pom.xml index 52b09b3f6..e03185224 100644 --- a/hsweb-system/hsweb-system-datasource/pom.xml +++ b/hsweb-system/hsweb-system-datasource/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml diff --git a/hsweb-system/hsweb-system-dev-tools/pom.xml b/hsweb-system/hsweb-system-dev-tools/pom.xml index 5ff0328ae..776e704d4 100644 --- a/hsweb-system/hsweb-system-dev-tools/pom.xml +++ b/hsweb-system/hsweb-system-dev-tools/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-api/pom.xml b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-api/pom.xml index 45b0b8104..4749652bf 100644 --- a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-api/pom.xml +++ b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dictionary org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-local/pom.xml b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-local/pom.xml index 39130441c..777630fab 100644 --- a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-local/pom.xml +++ b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dictionary org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml index 2670f74ed..8d29d890c 100644 --- a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml +++ b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-starter/pom.xml @@ -22,7 +22,7 @@ hsweb-system-dictionary org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml index 1346f00bd..9f5f4c452 100644 --- a/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml +++ b/hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dictionary org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dictionary/pom.xml b/hsweb-system/hsweb-system-dictionary/pom.xml index 813cdedd4..af2171d58 100644 --- a/hsweb-system/hsweb-system-dictionary/pom.xml +++ b/hsweb-system/hsweb-system-dictionary/pom.xml @@ -22,7 +22,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/pom.xml b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/pom.xml index 258861a12..a19d970c8 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/pom.xml +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dynamic-form org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/pom.xml b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/pom.xml index e5c6c63d5..4291b823a 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/pom.xml +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dynamic-form org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml index 429a85277..bc64eec69 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dynamic-form org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml index ea8cb6613..9aa7f7280 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-dynamic-form org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-dynamic-form/pom.xml b/hsweb-system/hsweb-system-dynamic-form/pom.xml index 5460cec7d..c26488e9d 100644 --- a/hsweb-system/hsweb-system-dynamic-form/pom.xml +++ b/hsweb-system/hsweb-system-dynamic-form/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-api/pom.xml b/hsweb-system/hsweb-system-file/hsweb-system-file-api/pom.xml index 2de3f1da3..96b038a38 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-api/pom.xml +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-file org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-local/pom.xml b/hsweb-system/hsweb-system-file/hsweb-system-file-local/pom.xml index 7b9de7a3d..738ac780e 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-local/pom.xml +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-file org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-oauth2/pom.xml b/hsweb-system/hsweb-system-file/hsweb-system-file-oauth2/pom.xml index 82a9d562b..e19dc57b9 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-oauth2/pom.xml +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-oauth2/pom.xml @@ -5,7 +5,7 @@ hsweb-system-file org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml b/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml index e6f15f164..186c7961d 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-file org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml b/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml index 4f914b0c9..46bd2fce6 100644 --- a/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml +++ b/hsweb-system/hsweb-system-file/hsweb-system-file-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-file org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-file/pom.xml b/hsweb-system/hsweb-system-file/pom.xml index fc01ab5de..a277ab369 100644 --- a/hsweb-system/hsweb-system-file/pom.xml +++ b/hsweb-system/hsweb-system-file/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-api/pom.xml b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-api/pom.xml index 47d34b7b1..cd3decdfc 100644 --- a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-api/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-oauth2-client org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-local/pom.xml b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-local/pom.xml index 2f148f205..05504c67a 100644 --- a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-local/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-oauth2-client org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml index 54eca0e3d..0a1a14cda 100644 --- a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-starter/pom.xml @@ -22,7 +22,7 @@ hsweb-system-oauth2-client org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml index 3235d3009..e72aa630e 100644 --- a/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-client/hsweb-system-oauth2-client-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-oauth2-client org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-client/pom.xml b/hsweb-system/hsweb-system-oauth2-client/pom.xml index cc30a77e2..f4dc815e8 100644 --- a/hsweb-system/hsweb-system-oauth2-client/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-client/pom.xml @@ -23,7 +23,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-local/pom.xml b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-local/pom.xml index 7459be93a..aeb2ca1b1 100644 --- a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-local/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-oauth2-server org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml index 75b7a4543..9611dbbd8 100644 --- a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-starter/pom.xml @@ -23,7 +23,7 @@ hsweb-system-oauth2-server org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml index f90fc6344..16652c8b6 100644 --- a/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-server/hsweb-system-oauth2-server-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-oauth2-server org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-oauth2-server/pom.xml b/hsweb-system/hsweb-system-oauth2-server/pom.xml index d46ba0e14..b866bafb4 100644 --- a/hsweb-system/hsweb-system-oauth2-server/pom.xml +++ b/hsweb-system/hsweb-system-oauth2-server/pom.xml @@ -23,7 +23,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-api/pom.xml b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-api/pom.xml index 160abadf5..e97b883e9 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-api/pom.xml +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-organizational org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/pom.xml b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/pom.xml index 94f68633d..fdeb74785 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/pom.xml +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/pom.xml @@ -5,7 +5,7 @@ hsweb-system-organizational org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/pom.xml b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/pom.xml index aaa9fa23f..dad3ad2c4 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/pom.xml +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-organizational org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml index 5deeeeffb..fbe4ae667 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-starter/pom.xml @@ -22,7 +22,7 @@ hsweb-system-organizational org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml index 2e3a882e7..b926f2750 100644 --- a/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml +++ b/hsweb-system/hsweb-system-organizational/hsweb-system-organizational-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-organizational org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-organizational/pom.xml b/hsweb-system/hsweb-system-organizational/pom.xml index d500a81c0..aa426f81d 100644 --- a/hsweb-system/hsweb-system-organizational/pom.xml +++ b/hsweb-system/hsweb-system-organizational/pom.xml @@ -22,7 +22,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-api/pom.xml b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-api/pom.xml index d3612dece..6e83648ce 100644 --- a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-api/pom.xml +++ b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-schedule org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-local/pom.xml b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-local/pom.xml index 827b6402a..266f08ee5 100644 --- a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-local/pom.xml +++ b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-schedule org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml index d84363563..361a761f9 100644 --- a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml +++ b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-schedule org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml index 8854b31bd..f9017885a 100644 --- a/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml +++ b/hsweb-system/hsweb-system-schedule/hsweb-system-schedule-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-schedule org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-schedule/pom.xml b/hsweb-system/hsweb-system-schedule/pom.xml index 6ca9f3591..4484cdd54 100644 --- a/hsweb-system/hsweb-system-schedule/pom.xml +++ b/hsweb-system/hsweb-system-schedule/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 pom diff --git a/hsweb-system/hsweb-system-script/hsweb-system-script-api/pom.xml b/hsweb-system/hsweb-system-script/hsweb-system-script-api/pom.xml index 2da1d9f00..b005bce1b 100644 --- a/hsweb-system/hsweb-system-script/hsweb-system-script-api/pom.xml +++ b/hsweb-system/hsweb-system-script/hsweb-system-script-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-script org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-script/hsweb-system-script-local/pom.xml b/hsweb-system/hsweb-system-script/hsweb-system-script-local/pom.xml index 05f4064f0..92ae0e6e8 100644 --- a/hsweb-system/hsweb-system-script/hsweb-system-script-local/pom.xml +++ b/hsweb-system/hsweb-system-script/hsweb-system-script-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-script org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml b/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml index efa290098..96451e7a1 100644 --- a/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml +++ b/hsweb-system/hsweb-system-script/hsweb-system-script-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-script org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml b/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml index 3834ead4e..5ad7b9719 100644 --- a/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml +++ b/hsweb-system/hsweb-system-script/hsweb-system-script-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-script org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-script/pom.xml b/hsweb-system/hsweb-system-script/pom.xml index 947da2b52..fa7b4b684 100644 --- a/hsweb-system/hsweb-system-script/pom.xml +++ b/hsweb-system/hsweb-system-script/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-template/hsweb-system-template-api/pom.xml b/hsweb-system/hsweb-system-template/hsweb-system-template-api/pom.xml index f545e5654..f6542fc7b 100644 --- a/hsweb-system/hsweb-system-template/hsweb-system-template-api/pom.xml +++ b/hsweb-system/hsweb-system-template/hsweb-system-template-api/pom.xml @@ -5,7 +5,7 @@ hsweb-system-template org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-template/hsweb-system-template-local/pom.xml b/hsweb-system/hsweb-system-template/hsweb-system-template-local/pom.xml index e9cb224cb..50a4840df 100644 --- a/hsweb-system/hsweb-system-template/hsweb-system-template-local/pom.xml +++ b/hsweb-system/hsweb-system-template/hsweb-system-template-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-template org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml b/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml index f2f8e5d82..0843936a5 100644 --- a/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml +++ b/hsweb-system/hsweb-system-template/hsweb-system-template-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-template org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml b/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml index ec0aa1e5b..4ced50b94 100644 --- a/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml +++ b/hsweb-system/hsweb-system-template/hsweb-system-template-web/pom.xml @@ -5,7 +5,7 @@ hsweb-system-template org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-template/pom.xml b/hsweb-system/hsweb-system-template/pom.xml index b10dcc57f..4134784d6 100644 --- a/hsweb-system/hsweb-system-template/pom.xml +++ b/hsweb-system/hsweb-system-template/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/pom.xml b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/pom.xml index 523dc576c..2788eb475 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/pom.xml +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/pom.xml @@ -5,7 +5,7 @@ hsweb-system-workflow org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-starter/pom.xml b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-starter/pom.xml index 3ded1d7c4..52b2836d2 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-starter/pom.xml +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-starter/pom.xml @@ -5,7 +5,7 @@ hsweb-system-workflow org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/hsweb-system-workflow/pom.xml b/hsweb-system/hsweb-system-workflow/pom.xml index 534496f0f..01c6d35d2 100644 --- a/hsweb-system/hsweb-system-workflow/pom.xml +++ b/hsweb-system/hsweb-system-workflow/pom.xml @@ -5,7 +5,7 @@ hsweb-system org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-system/pom.xml b/hsweb-system/pom.xml index b209ab2fe..3b2a5f836 100644 --- a/hsweb-system/pom.xml +++ b/hsweb-system/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-tests/pom.xml b/hsweb-tests/pom.xml index 0c017f7ff..2a649afb7 100644 --- a/hsweb-tests/pom.xml +++ b/hsweb-tests/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/hsweb-thirdparty/hsweb-thirdparty-ueditor/pom.xml b/hsweb-thirdparty/hsweb-thirdparty-ueditor/pom.xml index 22b25851d..ea06f8990 100644 --- a/hsweb-thirdparty/hsweb-thirdparty-ueditor/pom.xml +++ b/hsweb-thirdparty/hsweb-thirdparty-ueditor/pom.xml @@ -5,7 +5,7 @@ hsweb-thirdparty org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 ../pom.xml 4.0.0 diff --git a/hsweb-thirdparty/pom.xml b/hsweb-thirdparty/pom.xml index 13424c816..7a521383f 100644 --- a/hsweb-thirdparty/pom.xml +++ b/hsweb-thirdparty/pom.xml @@ -5,7 +5,7 @@ hsweb-framework org.hswebframework.web - 3.0.2-SNAPSHOT + 3.0.2 4.0.0 diff --git a/pom.xml b/pom.xml index bc92fb1b6..6af129666 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ org.hswebframework.web hsweb-framework - 3.0.2-SNAPSHOT + 3.0.2 hsweb-starter hsweb-core