From 91126a66f3358e84e53d585814428467535e2b5a Mon Sep 17 00:00:00 2001 From: "fulan.zjf" Date: Wed, 9 Dec 2020 19:31:22 +0800 Subject: [PATCH] cola 4.0.0 --- README.md | 145 ++++++------- .../src/main/java/config/ColaConfig.java | 24 --- .../src/main/java/dto/data/ErrorCode.java | 28 --- .../src/main/java/config/ColaConfig.java | 24 --- .../start/src/test/resources/logback-test.xml | 52 ----- .../cola-archetype-service}/.gitignore | 0 .../cola-archetype-service}/pom.xml | 10 +- .../META-INF/maven/archetype-metadata.xml | 0 .../archetype-resources/__gitignore__ | 0 .../__rootArtifactId__-app/pom.xml | 4 + .../java/customer/CustomerServiceImpl.java | 3 +- .../customer/executor/CustomerAddCmdExe.java | 0 .../query/CustomerListByNameQryExe.java | 2 +- .../src/main/java/order/OrderServiceImpl.java | 0 .../test/java/app/CustomerConvertorTest.java | 0 .../test/java/app/CustomerValidatorTest.java | 0 .../__rootArtifactId__-client/pom.xml | 4 +- .../src/main/java/api/CustomerServiceI.java | 0 .../src/main/java/dto/CustomerAddCmd.java | 0 .../main/java/dto/CustomerListByNameQry.java | 0 .../src/main/java/dto/data/CustomerDTO.java | 0 .../src/main/java/dto/data/ErrorCode.java | 9 + .../java/dto/event/CustomerCreatedEvent.java | 0 .../java/dto/event/DomainEventConstant.java | 0 .../__rootArtifactId__-domain/pom.xml | 12 +- .../java/domain/customer/CompanyType.java | 0 .../src/main/java/domain/customer/Credit.java | 0 .../main/java/domain/customer/Customer.java | 0 .../java/domain/customer/CustomerType.java | 0 .../main/java/domain/customer/SourceType.java | 0 .../customer/domainservice/CreditChecker.java | 0 .../customer/gateway/CreditGateway.java | 0 .../customer/gateway/CustomerGateway.java | 0 .../src/main/java/domain/order/Order.java | 0 .../src/main/java/domain/package-info.java | 0 .../test/java/domain/CustomerEntityTest.java | 0 .../__rootArtifactId__-infrastructure/pom.xml | 0 .../src/main/java/config/DiamondConfig.java | 0 .../main/java/customer/CreditGatewayImpl.java | 0 .../src/main/java/customer/CustomerDO.java | 0 .../java/customer/CustomerGatewayImpl.java | 0 .../main/java/customer/CustomerMapper.java | 0 .../src/main/java/order/OrderGatewayImpl.java | 0 .../src/main/resources/logback-spring.xml | 0 .../resources/mybatis/customer-mapper.xml | 0 .../main/resources/mybatis/mybatis-config.xml | 0 .../java/repository/CustomerMapperTest.java | 0 .../src/test/resources/sample.properties | 0 .../resources/archetype-resources/pom.xml | 40 ++-- .../archetype-resources/start/pom.xml | 0 .../start/src/main/java/Application.java | 3 +- .../src/main/resources/application.properties | 0 .../src/main/resources/logback-spring.xml | 0 .../start/src/test/java/TestApplication.java | 0 .../test/java/test/CustomerServiceTest.java | 9 +- .../start/src/test/resources/logback-test.xml | 26 +++ .../start/src/test/resources/test.properties | 0 .../projects/basic/archetype.properties | 0 .../test/resources/projects/basic/goal.txt | 0 .../cola-archetype-web}/.gitignore | 0 .../cola-archetype-web}/pom.xml | 10 +- .../META-INF/maven/archetype-metadata.xml | 2 +- .../__rootArtifactId__-adapter}/pom.xml | 0 .../java/mobile/CustomerMobileAdaptor.java | 0 .../src/main/java/wap/CustomerWapAdaptor.java | 0 .../src/main/java/web/CustomerController.java | 0 .../__rootArtifactId__-app/pom.xml | 4 + .../java/customer/CustomerServiceImpl.java | 2 + .../customer/executor/CustomerAddCmdExe.java | 2 +- .../query/CustomerListByNameQryExe.java | 2 +- .../src/main/java/order/OrderServiceImpl.java | 0 .../test/java/app/CustomerConvertorTest.java | 0 .../test/java/app/CustomerValidatorTest.java | 0 .../__rootArtifactId__-client/pom.xml | 4 +- .../src/main/java/api/CustomerServiceI.java | 0 .../src/main/java/dto/CustomerAddCmd.java | 0 .../main/java/dto/CustomerListByNameQry.java | 0 .../src/main/java/dto/data/CustomerDTO.java | 0 .../src/main/java/dto/data/ErrorCode.java | 6 +- .../java/dto/event/CustomerCreatedEvent.java | 0 .../java/dto/event/DomainEventConstant.java | 0 .../__rootArtifactId__-domain/pom.xml | 12 +- .../java/domain/customer/CompanyType.java | 0 .../src/main/java/domain/customer/Credit.java | 0 .../main/java/domain/customer/Customer.java | 0 .../java/domain/customer/CustomerType.java | 0 .../main/java/domain/customer/SourceType.java | 0 .../customer/domainservice/CreditChecker.java | 0 .../customer/gateway/CreditGateway.java | 0 .../customer/gateway/CustomerGateway.java | 0 .../src/main/java/domain/order/Order.java | 0 .../src/main/java/domain/package-info.java | 0 .../test/java/domain/CustomerEntityTest.java | 0 .../__rootArtifactId__-infrastructure/pom.xml | 0 .../src/main/java/config/DiamondConfig.java | 0 .../main/java/customer/CreditGatewayImpl.java | 0 .../src/main/java/customer/CustomerDO.java | 0 .../java/customer/CustomerGatewayImpl.java | 0 .../main/java/customer/CustomerMapper.java | 0 .../src/main/java/order/OrderGatewayImpl.java | 0 .../src/main/resources/logback-spring.xml | 0 .../resources/mybatis/customer-mapper.xml | 0 .../main/resources/mybatis/mybatis-config.xml | 0 .../java/repository/CustomerMapperTest.java | 0 .../src/test/resources/sample.properties | 0 .../archetype-resources/gitignore.txt | 0 .../resources/archetype-resources/pom.xml | 44 +++- .../archetype-resources/start/pom.xml | 2 +- .../start/src/main/java/Application.java | 2 - .../src/main/resources/application.properties | 0 .../src/main/resources/logback-spring.xml | 0 .../start/src/test/java/TestApplication.java | 0 .../test/java/test/CustomerServiceTest.java | 0 .../start/src/test/resources/logback-test.xml | 0 .../start/src/test/resources/test.properties | 0 .../projects/basic/archetype.properties | 0 .../test/resources/projects/basic/goal.txt | 0 cola-archetypes/pom.xml | 22 ++ .../cola-component-catchlog-starter/pom.xml | 1 - .../catchlog/CatchLogAutoConfiguration.java | 2 +- .../cola/domain/DomainAutoConfiguration.java | 2 +- .../cola-component-test-container/README.md | 11 + .../cola-component-test-container/pom.xml | 66 ++++++ .../com/alibaba/cola/test/BeanMetaUtils.java | 25 +++ .../com/alibaba/cola/test/TestExecutor.java | 195 ++++++++++++++++++ .../com/alibaba/cola/test/TestsContainer.java | 109 ++++++++++ .../cola/test/command/AbstractCommand.java | 114 ++++++++++ .../cola/test/command/CommandEnum.java | 39 ++++ .../alibaba/cola/test/command/GuideCmd.java | 46 +++++ .../cola/test/command/TestClassRunCmd.java | 31 +++ .../cola/test/command/TestMethodRunCmd.java | 77 +++++++ .../test/java/com/alibaba/cola/test/Demo.java | 28 +++ .../com/alibaba/cola/test/SpringConfig.java | 16 ++ .../alibaba/cola/test/TestsContainerTest.java | 18 ++ .../src/test/resources/logback-test.xml | 22 ++ cola-components/pom.xml | 8 +- cola-framework-common/pom.xml | 134 ------------ .../com/alibaba/cola/dto/ClientObject.java | 39 ---- .../java/com/alibaba/cola/dto/Command.java | 24 --- .../main/java/com/alibaba/cola/dto/DTO.java | 16 -- .../com/alibaba/cola/dto/MultiResponse.java | 64 ------ .../java/com/alibaba/cola/dto/OrderDesc.java | 30 --- .../java/com/alibaba/cola/dto/PageQuery.java | 57 ----- .../main/java/com/alibaba/cola/dto/Query.java | 13 -- .../java/com/alibaba/cola/dto/Response.java | 67 ------ .../com/alibaba/cola/dto/SingleResponse.java | 42 ---- .../com/alibaba/cola/exception/Assert.java | 79 ------- .../alibaba/cola/exception/BaseException.java | 33 --- .../alibaba/cola/exception/BizException.java | 22 -- .../cola/exception/ErrorCodeDefault.java | 32 --- .../alibaba/cola/exception/ErrorCodeI.java | 14 -- .../alibaba/cola/exception/SysException.java | 30 --- .../alibaba/cola/extension/BizScenario.java | 68 ------ cola-framework-core/pom.xml | 175 ---------------- .../cola/boot/AbstractComponentExecutor.java | 52 ----- .../alibaba/cola/boot/ExtensionRegister.java | 56 ----- .../alibaba/cola/boot/SpringBootstrap.java | 29 --- .../com/alibaba/cola/boot/package-info.java | 6 - .../cola/common/ApplicationContextHelper.java | 52 ----- .../com/alibaba/cola/common/ColaConstant.java | 20 -- .../alibaba/cola/domain/DomainFactory.java | 20 -- .../alibaba/cola/domain/DomainFactoryI.java | 12 -- .../alibaba/cola/domain/DomainServiceI.java | 10 - .../java/com/alibaba/cola/domain/Entity.java | 21 -- .../com/alibaba/cola/domain/EntityObject.java | 23 --- .../com/alibaba/cola/domain/ValueObject.java | 10 - .../com/alibaba/cola/domain/package-info.java | 6 - .../alibaba/cola/exception/ColaErrorCode.java | 33 --- .../alibaba/cola/exception/ColaException.java | 22 -- .../com/alibaba/cola/extension/Extension.java | 27 --- .../cola/extension/ExtensionCoordinate.java | 81 -------- .../cola/extension/ExtensionExecutor.java | 117 ----------- .../cola/extension/ExtensionPointI.java | 10 - .../cola/extension/ExtensionRepository.java | 29 --- .../alibaba/cola/extension/package-info.java | 6 - .../java/com/alibaba/cola/logger/Logger.java | 84 -------- .../alibaba/cola/logger/LoggerFactory.java | 32 --- .../com/alibaba/cola/logger/SLFJLogger.java | 39 ---- .../com/alibaba/cola/logger/SysLogger.java | 46 ----- .../com/alibaba/cola/logger/package-info.java | 6 - .../alibaba/cola/pattern/filter/Filter.java | 10 - .../cola/pattern/filter/FilterChain.java | 19 -- .../pattern/filter/FilterChainFactory.java | 30 --- .../cola/pattern/filter/FilterInvoker.java | 10 - .../src/main/resources/sample.properties | 0 .../alibaba/cola/SysLoggerPostProcessor.java | 21 -- .../com/alibaba/cola/TestSpringConfig.java | 26 --- .../cola/test/CustomerCommandTest.java | 126 ----------- .../cola/test/EntityPrototypeTest.java | 32 --- .../com/alibaba/cola/test/ExtensionTest.java | 85 -------- .../alibaba/cola/test/SpringConfigTest.java | 21 -- .../cola/test/customer/AddCustomerCmd.java | 25 --- .../cola/test/customer/AddCustomerCmdExe.java | 48 ----- .../alibaba/cola/test/customer/Constants.java | 22 -- .../cola/test/customer/CustomerCO.java | 40 ---- .../test/customer/CustomerCreatedEvent.java | 10 - .../customer/CustomerCreatedEventHandler.java | 17 -- .../cola/test/customer/CustomerDO.java | 65 ------ .../cola/test/customer/CustomerServiceI.java | 14 -- .../test/customer/CustomerServiceImpl.java | 33 --- .../cola/test/customer/CustomerType.java | 13 -- .../test/customer/DomainEventPublisher.java | 19 -- .../cola/test/customer/GetOneCustomerQry.java | 29 --- .../test/customer/GetOneCustomerQryExe.java | 18 -- .../convertor/CustomerBizOneConvertorExt.java | 37 ---- .../convertor/CustomerBizTwoConvertorExt.java | 33 --- .../customer/convertor/CustomerConvertor.java | 27 --- .../convertor/CustomerConvertorExtPt.java | 16 -- .../test/customer/entity/CustomerEntity.java | 65 ------ .../cola/test/customer/entity/SourceType.java | 13 -- .../entity/rule/CustomerBizOneRuleExt.java | 25 --- .../entity/rule/CustomerBizTwoRuleExt.java | 21 -- .../entity/rule/CustomerRuleExtPt.java | 21 -- .../repository/CustomerRepository.java | 18 -- ...ustomerBiz1UseCase1Scenario1Validator.java | 19 -- .../AddCustomerBiz1UseCase1Validator.java | 21 -- .../extension/AddCustomerBizOneValidator.java | 24 --- .../extension/AddCustomerBizTwoValidator.java | 23 --- .../AddCustomerValidatorExtPt.java | 16 -- .../src/test/resources/sample.properties | 1 - cola-statemachine/pom.xml | 135 ------------ .../com/alibaba/cola/statemachine/Action.java | 21 -- .../alibaba/cola/statemachine/Condition.java | 20 -- .../com/alibaba/cola/statemachine/State.java | 38 ---- .../cola/statemachine/StateContext.java | 23 --- .../cola/statemachine/StateMachine.java | 37 ---- .../statemachine/StateMachineFactory.java | 32 --- .../alibaba/cola/statemachine/Transition.java | 65 ------ .../alibaba/cola/statemachine/Visitable.java | 11 - .../alibaba/cola/statemachine/Visitor.java | 36 ---- .../builder/ExternalTransitionBuilder.java | 17 -- .../builder/ExternalTransitionsBuilder.java | 13 -- .../cola/statemachine/builder/From.java | 17 -- .../builder/InternalTransitionBuilder.java | 16 -- .../alibaba/cola/statemachine/builder/On.java | 18 -- .../builder/StateMachineBuilder.java | 32 --- .../builder/StateMachineBuilderFactory.java | 13 -- .../builder/StateMachineBuilderImpl.java | 49 ----- .../alibaba/cola/statemachine/builder/To.java | 16 -- .../builder/TransitionBuilderImpl.java | 71 ------- .../builder/TransitionsBuilderImpl.java | 63 ------ .../cola/statemachine/builder/When.java | 18 -- .../statemachine/builder/package-info.java | 7 - .../cola/statemachine/impl/Debugger.java | 22 -- .../statemachine/impl/PlantUMLVisitor.java | 53 ----- .../cola/statemachine/impl/StateHelper.java | 22 -- .../cola/statemachine/impl/StateImpl.java | 89 -------- .../impl/StateMachineException.java | 13 -- .../statemachine/impl/StateMachineImpl.java | 98 --------- .../cola/statemachine/impl/SysOutVisitor.java | 48 ----- .../statemachine/impl/TransitionImpl.java | 125 ----------- .../statemachine/impl/TransitionType.java | 26 --- .../cola/test/StateMachinePlantUMLTest.java | 186 ----------------- .../alibaba/cola/test/StateMachineTest.java | 183 ---------------- .../cola/test/StateMachineUnNormalTest.java | 83 -------- 255 files changed, 1032 insertions(+), 4904 deletions(-) delete mode 100644 cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java delete mode 100644 cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java delete mode 100644 cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java delete mode 100644 cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/.gitignore (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/pom.xml (97%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/META-INF/maven/archetype-metadata.xml (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__gitignore__ (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml (91%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java (95%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java (91%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml (90%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java (100%) create mode 100644 cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml (80%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/pom.xml (81%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/start/pom.xml (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/start/src/main/java/Application.java (75%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/start/src/main/resources/application.properties (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java (88%) create mode 100644 cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/main/resources/archetype-resources/start/src/test/resources/test.properties (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/test/resources/projects/basic/archetype.properties (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-service}/src/test/resources/projects/basic/goal.txt (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/.gitignore (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/pom.xml (97%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/META-INF/maven/archetype-metadata.xml (97%) rename {cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor => cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter}/pom.xml (100%) rename {cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor => cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter}/src/main/java/mobile/CustomerMobileAdaptor.java (100%) rename {cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor => cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter}/src/main/java/wap/CustomerWapAdaptor.java (100%) rename {cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor => cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter}/src/main/java/web/CustomerController.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml (91%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java (95%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java (94%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java (91%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml (90%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java (81%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml (80%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/gitignore.txt (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/pom.xml (77%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/pom.xml (95%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/src/main/java/Application.java (86%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/src/main/resources/application.properties (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java (100%) rename {cola-archetype-service => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/main/resources/archetype-resources/start/src/test/resources/test.properties (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/test/resources/projects/basic/archetype.properties (100%) rename {cola-archetype-web => cola-archetypes/cola-archetype-web}/src/test/resources/projects/basic/goal.txt (100%) create mode 100644 cola-archetypes/pom.xml create mode 100644 cola-components/cola-component-test-container/README.md create mode 100644 cola-components/cola-component-test-container/pom.xml create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/BeanMetaUtils.java create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestExecutor.java create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestsContainer.java create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/AbstractCommand.java create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/CommandEnum.java create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/GuideCmd.java create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestClassRunCmd.java create mode 100644 cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestMethodRunCmd.java create mode 100644 cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/Demo.java create mode 100644 cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/SpringConfig.java create mode 100644 cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/TestsContainerTest.java create mode 100644 cola-components/cola-component-test-container/src/test/resources/logback-test.xml delete mode 100644 cola-framework-common/pom.xml delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/ClientObject.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/Command.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/DTO.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/MultiResponse.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/OrderDesc.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/PageQuery.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/Query.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/Response.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/dto/SingleResponse.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/exception/Assert.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/exception/BaseException.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/exception/BizException.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeDefault.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeI.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/exception/SysException.java delete mode 100644 cola-framework-common/src/main/java/com/alibaba/cola/extension/BizScenario.java delete mode 100644 cola-framework-core/pom.xml delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/boot/AbstractComponentExecutor.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/boot/ExtensionRegister.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/boot/SpringBootstrap.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/boot/package-info.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/common/ApplicationContextHelper.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/common/ColaConstant.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactory.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactoryI.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainServiceI.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/domain/Entity.java delete mode 100755 cola-framework-core/src/main/java/com/alibaba/cola/domain/EntityObject.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/domain/ValueObject.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/domain/package-info.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaErrorCode.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaException.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/extension/Extension.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionCoordinate.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionExecutor.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionPointI.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionRepository.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/extension/package-info.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/logger/Logger.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/logger/LoggerFactory.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/logger/SLFJLogger.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/logger/SysLogger.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/logger/package-info.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/Filter.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChain.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChainFactory.java delete mode 100644 cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterInvoker.java delete mode 100644 cola-framework-core/src/main/resources/sample.properties delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/SysLoggerPostProcessor.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/TestSpringConfig.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/CustomerCommandTest.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/EntityPrototypeTest.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/ExtensionTest.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/SpringConfigTest.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmd.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmdExe.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/Constants.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCO.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEvent.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEventHandler.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerDO.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceI.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceImpl.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerType.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/DomainEventPublisher.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQry.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQryExe.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizOneConvertorExt.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizTwoConvertorExt.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertor.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertorExtPt.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/CustomerEntity.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/SourceType.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizOneRuleExt.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizTwoRuleExt.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerRuleExtPt.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/repository/CustomerRepository.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Scenario1Validator.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Validator.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizOneValidator.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizTwoValidator.java delete mode 100644 cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extensionpoint/AddCustomerValidatorExtPt.java delete mode 100644 cola-framework-core/src/test/resources/sample.properties delete mode 100644 cola-statemachine/pom.xml delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Action.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Condition.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/State.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateContext.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachine.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachineFactory.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Transition.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitable.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitor.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionBuilder.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionsBuilder.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/From.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/InternalTransitionBuilder.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/On.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilder.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderFactory.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderImpl.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/To.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionBuilderImpl.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionsBuilderImpl.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/When.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/package-info.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/Debugger.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/PlantUMLVisitor.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateHelper.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateImpl.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineException.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineImpl.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/SysOutVisitor.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionImpl.java delete mode 100644 cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionType.java delete mode 100644 cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachinePlantUMLTest.java delete mode 100644 cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineTest.java delete mode 100644 cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineUnNormalTest.java diff --git a/README.md b/README.md index fa0f74385..73a7d2f0e 100644 --- a/README.md +++ b/README.md @@ -1,111 +1,74 @@ -# COLA 3.0架构 -COLA是Clean Object-Oriented and Layered Architecture的缩写,表示“整洁面向对象分层架构”,目前COLA已经发展到[COLA 3.0](https://blog.csdn.net/significantfrank/article/details/106976804)。 需要访问老版本,请使用[COLA 2.0 TAG](https://github.com/alibaba/COLA/tree/COLA2.0), [COLA 1.0 TAG](https://github.com/alibaba/COLA/tree/COLA1.0) +# COLA 4.0 +COLA是Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,目前COLA已经发展到[COLA 4.0](https://blog.csdn.net/significantfrank/article/details/110934799)。 -关于COLA的更多信息,请关注微信公众号: - -![qrcode_60.jpg](https://img-blog.csdnimg.cn/2020110314110321.png#pic_center) - -如果你有技术热情,对阿里有兴趣,可以email:fulan.zjf@alibaba-inc.com - -# 阿里云COLA应用生成器 -https://start.aliyun.com/bootstrap.html -![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdGEyLWltZy5vc3MtY24temhhbmdqaWFrb3UuYWxpeXVuY3MuY29tLzQ4Zjg3MGI5OGQ2Y2VhN2YwNjg2NGUxNzM4N2UwNzE3LnBuZw?x-oss-process=image/format,png) +COLA分为两个部分,COLA架构和COLA组件。 -# 项目说明 -**COLA既是框架,也是架构。创建COLA的主要目的是为应用架构提供一套简单的可以复制、可以理解、可以落地、可以控制复杂性的”指导和约束"。** -- 架构部分主要是提供了创建符合COLA要求的应用Archetype。 -- 框架部分主要是以二方库的形式被应用依赖和使用。 +# COLA架构 +架构的意义就是要素结构,要素是组成架构的重要元素,结构是要素之间的关系。应用架构的意义就在于定义一套良好的结构,治理应用复杂度, +降低系统熵值,从随心所欲的混乱状态,走向紧紧有条的有序状态。 +![archWhy](https://img-blog.csdnimg.cn/20201209182220206.png) -## COLA架构 -COLA首先是作为架构的存在,是一种应用架构思想,主要是制定了一套指导和约束,并将这套规范沉淀成Archetype。以便通过Archetype可以快速的生成符合COLA规范的应用。满足COLA的应用是一个有清晰的依赖关系的分层架构,如下图所示: +COLA架构就是为此而生,其核心职责就是定义良好的应用结构,提供最佳应用架构的最佳实践。 +通过不断探索,我们发现良好的分层结构,良好的包结构定义,可以帮助我们治理混乱不堪的业务应用系统。 +![cure](https://img-blog.csdnimg.cn/2020120918285068.png) -![COLA3.1](https://img-blog.csdnimg.cn/20201106130015912.png#pic_center) +经过多次迭代,我们定义出了相对稳定、可靠的应用架构:COLA 4.0 +![cola](https://img-blog.csdnimg.cn/20201209182934838.png) -我们提供了两个Archetype,分别是cola-archetype-service和cola-archetype-web +# COLA Archetype +好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,**都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度等**。 -### cola-archetype-service -用来生成纯后端应用(没有Adapter),生成应用的命令为: -``` -mvn archetype:generate -DgroupId=com.alibaba.demo -DartifactId=demoService -Dversion=1.0.0-SNAPSHOT -Dpackage=com.alibaba.demo -DarchetypeArtifactId=cola-framework-archetype-service -DarchetypeGroupId=com.aliyun -DarchetypeVersion=3.1.0 -``` +COLA架构区别于这些架构的地方,在于除了思想之外,我们还提供了可落地的工具和实践指导。 -### cola-archetype-web -用来生成Web后端应用(有Adapter),生成应用的命令为: -``` -mvn archetype:generate -DgroupId=com.alibaba.demo -DartifactId=demoWeb -Dversion=1.0.0-SNAPSHOT -Dpackage=com.alibaba.demo -DarchetypeArtifactId=cola-framework-archetype-web -DarchetypeGroupId=com.aliyun -DarchetypeVersion=3.1.0 -``` +为了能够快速创建满足COLA架构的应用,我们提供了两个Archetype,他们在cola-archetypes下面。 -## COLA框架 -其次,COLA也是一个框架,提供了扩展点功能组件和一般API定义规范组件。如果你打算使用COLA提供的扩展点功能。 -你需要在项目里面依赖两个组件:[cola-core](https://oss.sonatype.org/#nexus-search;quick~cola-core), [cola-common](https://oss.sonatype.org/#nexus-search;quick~cola-common)。 +1. 一个是用来创建纯后端服务的archetype:cola-archetype-service。 +2. 一个是用来创建adapter和后端服务一体的web应用archetype:cola-archetype-web。 -关于组件引用方式,你可以下载源码在本地生成,也可以从nexus的中央仓库获取。下面简单介绍一下这两个组件: +# COLA Components +此外,我们还提供了一些非常有用的通用组件,这些组件可以帮助我们提升研发效率。 -### cola-framework-core -该Module是整个框架的核心,里面的主要功能和Package如下: -``` -com -└── alibaba - └── cola - ├── boot \\这是框架的核心启动包,负责框架组件的注册、发现 - ├── common - ├── domain \\提供Domain Entity标准 - ├── exception \\提供Exception标准 - ├── extension \\负责扩展机制中的重要概念-扩展(Extension)的定义和执行 - ├── logger \\提供DIP的日志接口 -``` -### cola-framework-common -该Module提供了应用中通用DTO, Exception的定义,二方库会依赖该Module。 +这些功能组件被收拢在cola-components下面。到目前为止,我们已经沉淀了以下组件: +组件名称 | 功能 | 版本 | 依赖 +---|---|---|--- +cola-component-dto | 定义了DTO格式,包括分页 | 1.0.0 |无 +cola-component-exception | 定义了异常格式,
主要有BizException和SysException | 1.0.0 |无 +cola-component-dto | 定义了DTO格式,包括分页 | 1.0.0 |无 +cola-component-statemachine | 状态机组件 | 1.0.0 |无 +cola-component-domain-starter | Spring托管的领域实体组件 | 1.0.0 |无 +cola-component-catchlog-starter | 异常处理和日志组件 | 1.0.0 |exception
,dto组件 +cola-component-extension-starter| 扩展点组件 | 1.0.0 |无 +cola-component-test-container| 测试容器组件 | 1.0.0 |无 # 如何使用COLA -## 第一步:生成COLA应用 -**1、使用Archetype生成应用:** +## 第一步:安装 cola archetype +下载cola-archetypes下的源码到本地,然后本地运行mvn install安装。 -直接运行上面提供的Archetype命令就可以生成应用,默认,你可以在中央仓库获取到[cola-archetype-service](https://oss.sonatype.org/#nexus-search;quick~cola-framework-archetype-service) 和 [cola-archetype-web](https://oss.sonatype.org/#nexus-search;quick~cola-framework-archetype-web) +## 第二步:安装 cola components +下载cola-components下的源码到本地,然后本地运行mvn install安装。 -如果downloading有问题,也可以自己下载Archetype源码到本地,然后本地运行mvn install安装。 - -**2、 检查应用里的模块和组件:** - -如果命令执行成功的话,我们可以看到如下的代码结构: - -![ComponentDiag](https://img-blog.csdnimg.cn/20201106134114574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpZ25pZmljYW50ZnJhbms=,size_16,color_FFFFFF,t_70#pic_center) - -## 第二步:运行Demo -**1、进入在第一步中生成的应用目录。** +## 第三步:创建应用 +执行以下命令: +``` +mvn archetype:generate -DgroupId=com.alibaba.demo -DartifactId=demoWeb -Dversion=1.0.0-SNAPSHOT -Dpackage=com.alibaba.demo -DarchetypeArtifactId=cola-framework-archetype-web -DarchetypeGroupId=com.alibaba.cola -DarchetypeVersion=4.0.0 +``` +命令执行成功的话,会看到如下的应用代码结构: +![demo](https://img-blog.csdnimg.cn/20201209192258840.png) -**2、启动SpringBoot:** +注:也可以使用阿里云的应用生成器:https://start.aliyun.com/bootstrap.html 生成cola应用。 +## 第四步:运行应用 首先在demoWeb目录下运行mvn install(如果不想运行测试,可以加上-DskipTests参数)。然后进入start目录,执行mvn spring-boot:run。 运行成功的话,可以看到SpringBoot启动成功的界面。 -**3、 执行测试:** - 生成的应用中,已经实现了一个简单的Rest请求,可以在浏览器中输入 http://localhost:8080/helloworld 进行测试。 -**4、查看运行日志:** - -请求执行成功的话,可以在浏览器中的返回值中看到:"Hello, welcome to cola world"。 - # 版本迭代 -## 1.0.0 版本 -https://blog.csdn.net/significantfrank/article/details/85785565 - -## 2.0.0 版本 -https://blog.csdn.net/significantfrank/article/details/100074716 - -## 3.0.0 版本 -https://blog.csdn.net/significantfrank/article/details/106976804 - -## 3.0.1 版本 -之前的扩展点在locate扩展实现的时候,没有寻找默认实现的能力。增强之后,可以去寻找默认实现了。 -比如,"tmall.placeOrder.88vip"这个场景,其寻找扩展点的路径是: -1. 尝试寻找"tmall.placeOrder.88vip"实现 -2. 如果没有,继续寻找"tmall.placeOrder"实现 -3. 如果没有,继续寻找"tmall"实现 +## 4.0.0 版本 +https://blog.csdn.net/significantfrank/article/details/110934799 ## 3.1.0 版本 https://blog.csdn.net/significantfrank/article/details/109529311 @@ -114,3 +77,19 @@ https://blog.csdn.net/significantfrank/article/details/109529311 3. 对archetype中的分包逻辑进行重构,改成按照domain做划分。 4. 将cola-archetype-web中的controller改名为adapter,为了呼应六边形架构的命名。 +## 3.0.0 版本 +https://blog.csdn.net/significantfrank/article/details/106976804 + +## 2.0.0 版本 +https://blog.csdn.net/significantfrank/article/details/100074716 + +## 1.0.0 版本 +https://blog.csdn.net/significantfrank/article/details/85785565 + + +关于COLA的更多信息,请关注微信公众号: +![qrcode_60.jpg](https://img-blog.csdnimg.cn/2020110314110321.png#pic_center) + +如果你有技术热情,对阿里有兴趣,可以email:fulan.zjf@alibaba-inc.com + + diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java b/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java deleted file mode 100644 index 8c79fabb7..000000000 --- a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java +++ /dev/null @@ -1,24 +0,0 @@ -#set( $symbol_pound = '#' ) -#set( $symbol_dollar = '$' ) -#set( $symbol_escape = '\' ) -package ${package}.config; - -import com.alibaba.cola.boot.SpringBootstrap; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.ArrayList; -import java.util.List; - -/** - * Configuration for COLA framework - */ -@Configuration -public class ColaConfig { - - @Bean(initMethod = "init") - public SpringBootstrap bootstrap() { - SpringBootstrap bootstrap = new SpringBootstrap(); - return bootstrap; - } -} diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java b/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java deleted file mode 100644 index 6ed084158..000000000 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java +++ /dev/null @@ -1,28 +0,0 @@ -#set( $symbol_pound = '#' ) -#set( $symbol_dollar = '$' ) -#set( $symbol_escape = '\' ) -package ${package}.dto.data; - -import com.alibaba.cola.exception.ErrorCodeI; - -public enum ErrorCode implements ErrorCodeI { - B_CUSTOMER_companyNameConflict("B_CUSTOMER_companyNameConflict", "客户公司名冲突"); - - private final String errCode; - private final String errDesc; - - private ErrorCode(String errCode, String errDesc) { - this.errCode = errCode; - this.errDesc = errDesc; - } - - @Override - public String getErrCode() { - return errCode; - } - - @Override - public String getErrDesc() { - return errDesc; - } -} diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java b/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java deleted file mode 100644 index 8c79fabb7..000000000 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/ColaConfig.java +++ /dev/null @@ -1,24 +0,0 @@ -#set( $symbol_pound = '#' ) -#set( $symbol_dollar = '$' ) -#set( $symbol_escape = '\' ) -package ${package}.config; - -import com.alibaba.cola.boot.SpringBootstrap; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.ArrayList; -import java.util.List; - -/** - * Configuration for COLA framework - */ -@Configuration -public class ColaConfig { - - @Bean(initMethod = "init") - public SpringBootstrap bootstrap() { - SpringBootstrap bootstrap = new SpringBootstrap(); - return bootstrap; - } -} diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml b/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml deleted file mode 100644 index 579750baf..000000000 --- a/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml +++ /dev/null @@ -1,52 +0,0 @@ -#set( $symbol_pound = '#' ) -#set( $symbol_dollar = '$' ) -#set( $symbol_escape = '\' ) - - - - - - - - - - - ${symbol_dollar}{LOG_FILE} - - ${symbol_dollar}{FILE_LOG_PATTERN} - - - ${symbol_dollar}{LOG_FILE}.%d{yyyy-MM-dd}.%i.log - 7 - 50MB - 20GB - - - - - - ${symbol_dollar}{CONSOLE_LOG_PATTERN} - utf8 - - - - - - - - - - - - - - - - - - - - - - diff --git a/cola-archetype-service/.gitignore b/cola-archetypes/cola-archetype-service/.gitignore similarity index 100% rename from cola-archetype-service/.gitignore rename to cola-archetypes/cola-archetype-service/.gitignore diff --git a/cola-archetype-service/pom.xml b/cola-archetypes/cola-archetype-service/pom.xml similarity index 97% rename from cola-archetype-service/pom.xml rename to cola-archetypes/cola-archetype-service/pom.xml index 726de1c58..d0601889d 100644 --- a/cola-archetype-service/pom.xml +++ b/cola-archetypes/cola-archetype-service/pom.xml @@ -2,12 +2,12 @@ 4.0.0 - com.aliyun + com.alibaba.cola cola-framework-archetype-service - 3.1.0 + 4.0.0 jar - cola framework archetype + cola-archetype-service https://github.com/alibaba/COLA Cola framework archetype-service @@ -100,7 +100,7 @@ none - + org.sonatype.plugins nexus-staging-maven-plugin diff --git a/cola-archetype-service/src/main/resources/META-INF/maven/archetype-metadata.xml b/cola-archetypes/cola-archetype-service/src/main/resources/META-INF/maven/archetype-metadata.xml similarity index 100% rename from cola-archetype-service/src/main/resources/META-INF/maven/archetype-metadata.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/META-INF/maven/archetype-metadata.xml diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__gitignore__ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__gitignore__ similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__gitignore__ rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__gitignore__ diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml similarity index 91% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml index 279279df3..7c9e9906c 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml @@ -19,6 +19,10 @@ ${groupId} ${rootArtifactId}-infrastructure + + com.alibaba.cola + cola-component-catchlog-starter + org.hibernate.validator diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java similarity index 95% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java index dfe00ba3e..6db16aa28 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.Response; +import com.alibaba.cola.catchlog.CatchAndLog; import ${package}.api.CustomerServiceI; import ${package}.dto.CustomerAddCmd; import ${package}.dto.CustomerListByNameQry; @@ -17,8 +18,8 @@ import javax.annotation.Resource; - @Service +@CatchAndLog public class CustomerServiceImpl implements CustomerServiceI { @Resource diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java similarity index 91% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java index a3c39a648..5fb528330 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java @@ -18,6 +18,6 @@ public MultiResponse execute(CustomerListByNameQry cmd) { CustomerDTO customerDTO = new CustomerDTO(); customerDTO.setCustomerName("Frank"); customerDTOList.add(customerDTO); - return MultiResponse.ofWithoutTotal(customerDTOList); + return MultiResponse.of(customerDTOList); } } diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml similarity index 90% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml index d051e1180..cd9252384 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml @@ -12,8 +12,8 @@ ${parentArtifactId}-client - com.aliyun - cola-common + com.alibaba.cola + cola-component-dto org.projectlombok diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java diff --git a/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java new file mode 100644 index 000000000..24b0ef6f4 --- /dev/null +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java @@ -0,0 +1,9 @@ +#set( $symbol_pound = '#' ) +#set( $symbol_dollar = '$' ) +#set( $symbol_escape = '\' ) +package ${package}.dto.data; + + +public class ErrorCode { + public static final String B_CUSTOMER_companyNameConflict = "B_CUSTOMER_companyNameConflict"; +} diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml similarity index 80% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml index 164179880..9c6499c42 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml @@ -11,16 +11,16 @@ ${version} ${artifactId} - + - com.aliyun - cola-core + com.alibaba.cola + cola-component-domain-starter - com.aliyun - cola-common + com.alibaba.cola + cola-component-exception - + ${groupId} ${rootArtifactId}-client diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties diff --git a/cola-archetype-web/src/main/resources/archetype-resources/pom.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/pom.xml similarity index 81% rename from cola-archetype-web/src/main/resources/archetype-resources/pom.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/pom.xml index 1434ae0a2..654501092 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/pom.xml +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/pom.xml @@ -16,30 +16,42 @@ UTF-8 1.3.1 2.1.3.RELEASE - 3.1.0 + 1.0.0 + + ${rootArtifactId}-client + ${rootArtifactId}-app + ${rootArtifactId}-domain + ${rootArtifactId}-infrastructure + start + + - + - com.aliyun - cola-common - ${cola.framework.version} + com.alibaba.cola + cola-component-dto + ${cola.components.version} - - com.aliyun - cola-core - ${cola.framework.version} + com.alibaba.cola + cola-component-exception + ${cola.components.version} - - - ${groupId} - ${rootArtifactId}-adaptor - ${version} + com.alibaba.cola + cola-component-domain-starter + ${cola.components.version} + + com.alibaba.cola + cola-component-catchlog-starter + ${cola.components.version} + + + ${groupId} ${rootArtifactId}-client diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/pom.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/pom.xml similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/start/pom.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/pom.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/java/Application.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/java/Application.java similarity index 75% rename from cola-archetype-web/src/main/resources/archetype-resources/start/src/main/java/Application.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/java/Application.java index 6e8531376..1a4a15b23 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/java/Application.java +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/java/Application.java @@ -10,11 +10,10 @@ /** * Spring Boot Starter * - * COLA framework initialization is configured in {@link ${package}.config.ColaConfig} * * @author Frank Zhang */ -@SpringBootApplication(scanBasePackages = {"${package}","com.alibaba.cola"}) +@SpringBootApplication @MapperScan("${package}.repository") public class Application { diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/application.properties b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/application.properties similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/application.properties rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/application.properties diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java similarity index 88% rename from cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java index fe2546532..7e0168ac3 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java @@ -4,10 +4,11 @@ package ${package}.test; import com.alibaba.cola.dto.Response; -import com.alibaba.cola.exception.BizException; import ${package}.api.CustomerServiceI; import ${package}.dto.CustomerAddCmd; import ${package}.dto.data.CustomerDTO; +import ${package}.dto.data.ErrorCode; +import ${package}.Application; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -22,7 +23,7 @@ * Created by fulan.zjf on 2017/11/29. */ @RunWith(SpringRunner.class) -@SpringBootTest +@SpringBootTest(classes = Application.class) public class CustomerServiceTest { @Autowired @@ -49,7 +50,7 @@ public void testCustomerAddSuccess(){ Assert.assertTrue(response.isSuccess()); } - @Test(expected = BizException.class) + @Test public void testCustomerAddCompanyNameConflict(){ //1.prepare CustomerAddCmd customerAddCmd = new CustomerAddCmd(); @@ -61,7 +62,7 @@ public void testCustomerAddCompanyNameConflict(){ Response response = customerService.addCustomer(customerAddCmd); //3.Exception - //Assert.assertEquals(ErrorCode.B_CUSTOMER_companyNameConflict.getErrCode(), response.getErrCode()); + Assert.assertEquals(ErrorCode.B_CUSTOMER_companyNameConflict, response.getErrCode()); } } diff --git a/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml new file mode 100644 index 000000000..19e59ddd4 --- /dev/null +++ b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml @@ -0,0 +1,26 @@ +#set( $symbol_pound = '#' ) +#set( $symbol_dollar = '$' ) +#set( $symbol_escape = '\' ) + + + + + + %-4relative [%thread] %-5level %logger{35} - %msg%n + utf8 + + + + + + + + + + + + + + + + diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/test.properties b/cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/test.properties similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/test.properties rename to cola-archetypes/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/test.properties diff --git a/cola-archetype-service/src/test/resources/projects/basic/archetype.properties b/cola-archetypes/cola-archetype-service/src/test/resources/projects/basic/archetype.properties similarity index 100% rename from cola-archetype-service/src/test/resources/projects/basic/archetype.properties rename to cola-archetypes/cola-archetype-service/src/test/resources/projects/basic/archetype.properties diff --git a/cola-archetype-service/src/test/resources/projects/basic/goal.txt b/cola-archetypes/cola-archetype-service/src/test/resources/projects/basic/goal.txt similarity index 100% rename from cola-archetype-service/src/test/resources/projects/basic/goal.txt rename to cola-archetypes/cola-archetype-service/src/test/resources/projects/basic/goal.txt diff --git a/cola-archetype-web/.gitignore b/cola-archetypes/cola-archetype-web/.gitignore similarity index 100% rename from cola-archetype-web/.gitignore rename to cola-archetypes/cola-archetype-web/.gitignore diff --git a/cola-archetype-web/pom.xml b/cola-archetypes/cola-archetype-web/pom.xml similarity index 97% rename from cola-archetype-web/pom.xml rename to cola-archetypes/cola-archetype-web/pom.xml index 5f0c597d4..508d790a1 100644 --- a/cola-archetype-web/pom.xml +++ b/cola-archetypes/cola-archetype-web/pom.xml @@ -1,12 +1,12 @@ 4.0.0 - com.aliyun + com.alibaba.cola cola-framework-archetype-web - 3.1.0 + 4.0.0 maven-archetype - cola framework archetype + cola-archetype-web https://github.com/alibaba/COLA Cola framework archetype-web @@ -99,7 +99,7 @@ none - + org.sonatype.plugins nexus-staging-maven-plugin diff --git a/cola-archetype-web/src/main/resources/META-INF/maven/archetype-metadata.xml b/cola-archetypes/cola-archetype-web/src/main/resources/META-INF/maven/archetype-metadata.xml similarity index 97% rename from cola-archetype-web/src/main/resources/META-INF/maven/archetype-metadata.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/META-INF/maven/archetype-metadata.xml index 6d13d03ae..1b889db2f 100644 --- a/cola-archetype-web/src/main/resources/META-INF/maven/archetype-metadata.xml +++ b/cola-archetypes/cola-archetype-web/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -25,7 +25,7 @@ - + src/main/java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/pom.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/pom.xml similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/pom.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/pom.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/src/main/java/mobile/CustomerMobileAdaptor.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/src/main/java/mobile/CustomerMobileAdaptor.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/src/main/java/mobile/CustomerMobileAdaptor.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/src/main/java/mobile/CustomerMobileAdaptor.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/src/main/java/wap/CustomerWapAdaptor.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/src/main/java/wap/CustomerWapAdaptor.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/src/main/java/wap/CustomerWapAdaptor.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/src/main/java/wap/CustomerWapAdaptor.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/src/main/java/web/CustomerController.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/src/main/java/web/CustomerController.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adaptor/src/main/java/web/CustomerController.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-adapter/src/main/java/web/CustomerController.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml similarity index 91% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml index 279279df3..7c9e9906c 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml @@ -19,6 +19,10 @@ ${groupId} ${rootArtifactId}-infrastructure + + com.alibaba.cola + cola-component-catchlog-starter + org.hibernate.validator diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java similarity index 95% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java index dfe00ba3e..67f1414b6 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/CustomerServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.Response; +import com.alibaba.cola.catchlog.CatchAndLog; import ${package}.api.CustomerServiceI; import ${package}.dto.CustomerAddCmd; import ${package}.dto.CustomerListByNameQry; @@ -19,6 +20,7 @@ @Service +@CatchAndLog public class CustomerServiceImpl implements CustomerServiceI { @Resource diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java similarity index 94% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java index 4ddca5964..ae77f1be5 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/CustomerAddCmdExe.java @@ -18,7 +18,7 @@ public Response execute(CustomerAddCmd cmd) { //The flow of usecase is defined here. //The core ablility should be implemented in Domain. or sink to Domian gradually if(cmd.getCustomerDTO().getCompanyName().equals("ConflictCompanyName")){ - throw new BizException(ErrorCode.B_CUSTOMER_companyNameConflict, "公司名冲突"); + throw new BizException(ErrorCode.B_CUSTOMER_companyNameConflict.getErrCode(), "公司名冲突"); } return Response.buildSuccess(); } diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java similarity index 91% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java index a3c39a648..5fb528330 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/customer/executor/query/CustomerListByNameQryExe.java @@ -18,6 +18,6 @@ public MultiResponse execute(CustomerListByNameQry cmd) { CustomerDTO customerDTO = new CustomerDTO(); customerDTO.setCustomerName("Frank"); customerDTOList.add(customerDTO); - return MultiResponse.ofWithoutTotal(customerDTOList); + return MultiResponse.of(customerDTOList); } } diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/order/OrderServiceImpl.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerConvertorTest.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/app/CustomerValidatorTest.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml similarity index 90% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml index d051e1180..cd9252384 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/pom.xml @@ -12,8 +12,8 @@ ${parentArtifactId}-client - com.aliyun - cola-common + com.alibaba.cola + cola-component-dto org.projectlombok diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/api/CustomerServiceI.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerAddCmd.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/CustomerListByNameQry.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/CustomerDTO.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java similarity index 81% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java index 6ed084158..caef4d466 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/data/ErrorCode.java @@ -3,9 +3,7 @@ #set( $symbol_escape = '\' ) package ${package}.dto.data; -import com.alibaba.cola.exception.ErrorCodeI; - -public enum ErrorCode implements ErrorCodeI { +public enum ErrorCode{ B_CUSTOMER_companyNameConflict("B_CUSTOMER_companyNameConflict", "客户公司名冲突"); private final String errCode; @@ -16,12 +14,10 @@ private ErrorCode(String errCode, String errDesc) { this.errDesc = errDesc; } - @Override public String getErrCode() { return errCode; } - @Override public String getErrDesc() { return errDesc; } diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/CustomerCreatedEvent.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-client/src/main/java/dto/event/DomainEventConstant.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml similarity index 80% rename from cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml index 164179880..9c6499c42 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml @@ -11,16 +11,16 @@ ${version} ${artifactId} - + - com.aliyun - cola-core + com.alibaba.cola + cola-component-domain-starter - com.aliyun - cola-common + com.alibaba.cola + cola-component-exception - + ${groupId} ${rootArtifactId}-client diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CompanyType.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Credit.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/Customer.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/CustomerType.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/SourceType.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/domainservice/CreditChecker.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CreditGateway.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/customer/gateway/CustomerGateway.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/order/Order.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/package-info.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/test/java/domain/CustomerEntityTest.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/config/DiamondConfig.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CreditGatewayImpl.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerDO.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerGatewayImpl.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/customer/CustomerMapper.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/order/OrderGatewayImpl.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/logback-spring.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/customer-mapper.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/resources/mybatis/mybatis-config.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/java/repository/CustomerMapperTest.java diff --git a/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/test/resources/sample.properties diff --git a/cola-archetype-web/src/main/resources/archetype-resources/gitignore.txt b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/gitignore.txt similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/gitignore.txt rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/gitignore.txt diff --git a/cola-archetype-service/src/main/resources/archetype-resources/pom.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/pom.xml similarity index 77% rename from cola-archetype-service/src/main/resources/archetype-resources/pom.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/pom.xml index 4d42df3d6..f0df72119 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/pom.xml +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/pom.xml @@ -16,25 +16,49 @@ UTF-8 1.3.1 2.1.3.RELEASE - 3.1.0 + 1.0.0 + + ${rootArtifactId}-client + ${rootArtifactId}-adapter + ${rootArtifactId}-app + ${rootArtifactId}-domain + ${rootArtifactId}-infrastructure + start + + - + + + com.alibaba.cola + cola-component-domain-starter + ${cola.component.version} + + + com.alibaba.cola + cola-component-exception + ${cola.component.version} + - com.aliyun - cola-common - ${cola.framework.version} + com.alibaba.cola + cola-component-dto + ${cola.component.version} - - com.aliyun - cola-core - ${cola.framework.version} + com.alibaba.cola + cola-component-catchlog-starter + ${cola.component.version} - + + + + ${groupId} + ${rootArtifactId}-adapter + ${version} + ${groupId} ${rootArtifactId}-client diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/pom.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/pom.xml similarity index 95% rename from cola-archetype-web/src/main/resources/archetype-resources/start/pom.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/pom.xml index 1fa637c07..12c65817e 100644 --- a/cola-archetype-web/src/main/resources/archetype-resources/start/pom.xml +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/pom.xml @@ -16,7 +16,7 @@ ${groupId} - ${rootArtifactId}-adaptor + ${rootArtifactId}-adapter org.springframework.boot diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/java/Application.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/java/Application.java similarity index 86% rename from cola-archetype-service/src/main/resources/archetype-resources/start/src/main/java/Application.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/java/Application.java index 6e8531376..f6acd5c4a 100644 --- a/cola-archetype-service/src/main/resources/archetype-resources/start/src/main/java/Application.java +++ b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/java/Application.java @@ -10,8 +10,6 @@ /** * Spring Boot Starter * - * COLA framework initialization is configured in {@link ${package}.config.ColaConfig} - * * @author Frank Zhang */ @SpringBootApplication(scanBasePackages = {"${package}","com.alibaba.cola"}) diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/application.properties b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/application.properties similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/application.properties rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/application.properties diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/main/resources/logback-spring.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/TestApplication.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/java/test/CustomerServiceTest.java diff --git a/cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml similarity index 100% rename from cola-archetype-service/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/logback-test.xml diff --git a/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/test.properties b/cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/test.properties similarity index 100% rename from cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/test.properties rename to cola-archetypes/cola-archetype-web/src/main/resources/archetype-resources/start/src/test/resources/test.properties diff --git a/cola-archetype-web/src/test/resources/projects/basic/archetype.properties b/cola-archetypes/cola-archetype-web/src/test/resources/projects/basic/archetype.properties similarity index 100% rename from cola-archetype-web/src/test/resources/projects/basic/archetype.properties rename to cola-archetypes/cola-archetype-web/src/test/resources/projects/basic/archetype.properties diff --git a/cola-archetype-web/src/test/resources/projects/basic/goal.txt b/cola-archetypes/cola-archetype-web/src/test/resources/projects/basic/goal.txt similarity index 100% rename from cola-archetype-web/src/test/resources/projects/basic/goal.txt rename to cola-archetypes/cola-archetype-web/src/test/resources/projects/basic/goal.txt diff --git a/cola-archetypes/pom.xml b/cola-archetypes/pom.xml new file mode 100644 index 000000000..3e05b3f8e --- /dev/null +++ b/cola-archetypes/pom.xml @@ -0,0 +1,22 @@ + + + + 4.0.0 + com.alibaba.cola + cola-archeytpes + pom + 1.0.0 + cola-archeytpes + + + UTF-8 + 1.8 + 1.8 + + + + cola-archetype-service + cola-archetype-web + + diff --git a/cola-components/cola-component-catchlog-starter/pom.xml b/cola-components/cola-component-catchlog-starter/pom.xml index 9db969291..e0d1f6f0a 100644 --- a/cola-components/cola-component-catchlog-starter/pom.xml +++ b/cola-components/cola-component-catchlog-starter/pom.xml @@ -33,7 +33,6 @@ org.springframework.boot spring-boot-starter-aop ${spring.boot.version} - provided diff --git a/cola-components/cola-component-catchlog-starter/src/main/java/com/alibaba/cola/catchlog/CatchLogAutoConfiguration.java b/cola-components/cola-component-catchlog-starter/src/main/java/com/alibaba/cola/catchlog/CatchLogAutoConfiguration.java index 47f2dc94c..cbbc71739 100644 --- a/cola-components/cola-component-catchlog-starter/src/main/java/com/alibaba/cola/catchlog/CatchLogAutoConfiguration.java +++ b/cola-components/cola-component-catchlog-starter/src/main/java/com/alibaba/cola/catchlog/CatchLogAutoConfiguration.java @@ -17,7 +17,7 @@ public class CatchLogAutoConfiguration { @Bean @ConditionalOnMissingBean(CatchLogAspect.class) - public CatchLogAspect initCatchLogAspect() { + public CatchLogAspect catchLogAspect() { return new CatchLogAspect(); } } diff --git a/cola-components/cola-component-domain-starter/src/main/java/com/alibaba/cola/domain/DomainAutoConfiguration.java b/cola-components/cola-component-domain-starter/src/main/java/com/alibaba/cola/domain/DomainAutoConfiguration.java index 483eb3d9f..2beed8aef 100644 --- a/cola-components/cola-component-domain-starter/src/main/java/com/alibaba/cola/domain/DomainAutoConfiguration.java +++ b/cola-components/cola-component-domain-starter/src/main/java/com/alibaba/cola/domain/DomainAutoConfiguration.java @@ -16,7 +16,7 @@ public class DomainAutoConfiguration { @Bean @ConditionalOnMissingBean(ApplicationContextHelper.class) - public ApplicationContextHelper initCatchLogAspect() { + public ApplicationContextHelper applicationContextHelper() { return new ApplicationContextHelper(); } } diff --git a/cola-components/cola-component-test-container/README.md b/cola-components/cola-component-test-container/README.md new file mode 100644 index 000000000..97ca0cf49 --- /dev/null +++ b/cola-components/cola-component-test-container/README.md @@ -0,0 +1,11 @@ +## 作用 +测试工具,当容器启动比较耗时的时候,这个工具特别有用,用法摘要: + +启动TestsContainer +1. 运行测试类,在命令行中输入类全称:com.alibaba.cola.test.Demo +2. 运行单个方法,在命令行中输入方法引用:com.alibaba.cola.test.Demo#testTwo +3. 重复运行,输入r + + + + diff --git a/cola-components/cola-component-test-container/pom.xml b/cola-components/cola-component-test-container/pom.xml new file mode 100644 index 000000000..5fadc7938 --- /dev/null +++ b/cola-components/cola-component-test-container/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + cola-component-test-container + com.alibaba.cola + cola-component-test-container + 1.0.0-SNAPSHOT + jar + + + UTF-8 + 1.8 + 1.8 + + + + + org.slf4j + slf4j-api + 1.7.9 + compile + + + + org.springframework + spring-context + 5.2.2.RELEASE + provided + + + + org.springframework + spring-core + 5.2.2.RELEASE + provided + + + + commons-cli + commons-cli + 1.4 + + + + junit + junit + 4.12 + + + + ch.qos.logback + logback-classic + 1.1.11 + provided + + + + ch.qos.logback + logback-core + 1.1.11 + provided + + + + diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/BeanMetaUtils.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/BeanMetaUtils.java new file mode 100644 index 000000000..37dcd826a --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/BeanMetaUtils.java @@ -0,0 +1,25 @@ +package com.alibaba.cola.test; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; + +/** + * BeanMetaUtils + * + * @author Frank Zhang + * @date 2020-11-17 4:49 PM + */ +public class BeanMetaUtils { + public static Method findMethod(Class clazz, Class annotationType){ + Method[] allMethods = clazz.getMethods(); + for (Method method : allMethods){ + Annotation[] annotations = method.getAnnotations(); + for(Annotation item : annotations){ + if(item.annotationType().equals(annotationType)){ + return method; + } + } + } + return null; + } +} diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestExecutor.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestExecutor.java new file mode 100644 index 000000000..08a214964 --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestExecutor.java @@ -0,0 +1,195 @@ +package com.alibaba.cola.test; + +import com.alibaba.cola.test.command.TestClassRunCmd; +import com.alibaba.cola.test.command.TestMethodRunCmd; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * TestExecutor + * + * @author Frank Zhang + * @date 2020-11-17 3:42 PM + */ +public class TestExecutor { + private String className; + private String methodName; + + private Map testInstanceCache = new HashMap(); + + private ApplicationContext context; + + public TestExecutor(ApplicationContext context){ + this.context = context; + } + + public void execute(TestClassRunCmd cmd) throws Exception { + setClassName(cmd.getClassName()); + + Class testClz = Class.forName(className); + Object testInstance = getTestInstance(testClz); + runClassTest(cmd, testClz, testInstance); + } + + public void execute(TestMethodRunCmd cmd) throws Exception { + setClassName(cmd.getClassName()); + setMethodName(cmd.getMethodName()); + + Class testClz = Class.forName(className); + Object testInstance = getTestInstance(testClz); + runMethodTest(cmd, testClz, testInstance); + } + + private void runMethodTest(TestMethodRunCmd cmd, Class testClz, Object testInstance) throws Exception{ + Method beforeMethod = BeanMetaUtils.findMethod(testClz, Before.class); + Method afterMethod = BeanMetaUtils.findMethod(testClz, After.class); + Method method = testClz.getMethod(methodName); + + //invoke before method + invokeMethod(testInstance, beforeMethod); + //notifier.fireTestStarted(method, colaDes.getDescription()); + + //invoke test method + invokeMethod(testInstance, method); + //notifier.fireTestFinished(method, colaDes.getDescription()); + + //invoke after method + invokeMethod(testInstance, afterMethod); + //notifier.fireTestRunFinished(colaDes.getDescription()); + } + + private Object getTestInstance(Class testClz) throws Exception{ + if(testInstanceCache.get(className) != null) { + return testInstanceCache.get(className); + } + Object testInstance = testClz.newInstance(); + injectWiredBean(testClz, testInstance); + return testInstance; + } + + private void runClassTest(TestClassRunCmd cmd, Class testClz, Object testInstance)throws Exception{ + Method[] allMethods = testClz.getMethods(); + Method beforeMethod = null; + Method afterMethod = null; + List testMethods = new ArrayList(); + for (Method method : allMethods){ + Annotation[] annotations = method.getAnnotations(); + for(Annotation annotation : annotations){ + if(annotation instanceof Before){ + beforeMethod = method; + break; + } + if(annotation instanceof After){ + afterMethod = method; + break; + } + if(annotation instanceof Test || method.getName().startsWith("test")){ + testMethods.add(method); + break; + } + } + } + + //invoke before method + invokeMethod(testInstance, beforeMethod); + //invoke test methods + for(Method testMethod: testMethods){ + + invokeMethod(testInstance, testMethod); + + } + //invoke after method + invokeMethod(testInstance, afterMethod); + } + + private static void invokeMethod(Object obj, Method method) throws Exception{ + if (method == null) { + return; + } + method.invoke(obj); + } + + private void injectWiredBean(Class testClz, Object testInstance) { + Field[] fields = testClz.getDeclaredFields(); + if(fields == null) { + return; + } + for(Field field : fields) { + String beanName = field.getName(); + Annotation autowiredAnn = field.getDeclaredAnnotation(Autowired.class); + Annotation resourceAnn = field.getDeclaredAnnotation(Resource.class); + if (autowiredAnn == null && resourceAnn == null) { + continue; + } + trySetFieldValue(field, testInstance, beanName); + } + } + + private void trySetFieldValue(Field field, Object testInstance, String beanName){ + try { + field.setAccessible(true); + field.set(testInstance, context.getBean(beanName)); + return; + } catch (IllegalArgumentException e){ + if(!StringUtils.isEmpty(e.getMessage()) && e.getMessage().indexOf("\\$Proxy") > 0){ + System.err.println("此错误一般是实际类被代理导致,请尝试把字段类型改为接口!"); + throw e; + } + }catch (BeansException | IllegalAccessException e) { + System.err.println("根据beanName查找失败,尝试byType查找"); + } + + try { + field.set(testInstance, context.getBean(field.getType())); + } catch (Exception innerE) { + innerE.printStackTrace(); + System.err.println("oops!!! "+beanName + " can not be injected to "+ className); + } + } + + /** + * @return the className + */ + public String getClassName() { + return className; + } + + + /** + * @param className the className to set + */ + public void setClassName(String className) { + this.className = className; + } + + + /** + * @return the methodName + */ + public String getMethodName() { + return methodName; + } + + + /** + * @param methodName the methodName to set + */ + public void setMethodName(String methodName) { + this.methodName = methodName; + } + +} \ No newline at end of file diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestsContainer.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestsContainer.java new file mode 100644 index 000000000..e924e0a8f --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/TestsContainer.java @@ -0,0 +1,109 @@ +package com.alibaba.cola.test; + +import com.alibaba.cola.test.command.AbstractCommand; +import com.alibaba.cola.test.command.GuideCmd; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * TestsContainer + * + * 这是一个轻量级的TDD测试工具,可以敏捷的在开发过程中,运行测试,功能如下: + * 1.测试单个方法,请在控制台输入方法全称 + * 例如:com.alibaba.framework.sales.service.test.CustomerServiceTest.testCheckConflict() + * 2.测试整个测试类,请在控制台输入类全称 + * 例如:com.alibaba.framework.sales.service.test.CustomerServiceTest + * 3.重复上一次测试,只需在控制台输入字母 - ‘r’ + * + * @author Frank Zhang + * @date 2020-11-17 3:35 PM + */ +@Component +public class TestsContainer implements ApplicationContextAware { + + private static ApplicationContext context; + + private static TestExecutor testExecutor; + private static AtomicBoolean initFlag = new AtomicBoolean(false); + + public static void init(ApplicationContext context){ + if(!initFlag.compareAndSet(false, true)) { + return; + } + if(context == null){ + testExecutor = new TestExecutor(TestsContainer.context); + }else { + testExecutor = new TestExecutor(context); + } + } + + /** + * TestsContainer is optional to be in Spring Container + * @param context ApplicationContext to be provided + */ + public static void start(ApplicationContext context) { + TestsContainer.context = context; + start(); + } + + /** + * TestsContainer must be within Spring Container + */ + public static void start(){ + init(TestsContainer.context); + monitorConsole(); + } + + public static void execute(String input){ + if(StringUtils.isEmpty(input)){ + return; + } + input = input.trim(); + AbstractCommand command = AbstractCommand.createCmd(input); + if (command == null){ + System.err.println("Your input is not a valid qualified name"); + return; + } + + command.execute(); + } + + public static TestExecutor getTestExecutor() { + return testExecutor; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + context = applicationContext; + } + + private static void monitorConsole(){ + BufferedReader bufferRead = new BufferedReader(new InputStreamReader( + System.in)); + String input = GuideCmd.GUIDE_HELP; + while (true) { + try { + execute(input); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error e){ + e.printStackTrace(); + break; + } + try { + input = bufferRead.readLine(); + } catch (IOException e) { + e.printStackTrace(); + return; + } + } + } +} \ No newline at end of file diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/AbstractCommand.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/AbstractCommand.java new file mode 100644 index 000000000..1a70d68f8 --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/AbstractCommand.java @@ -0,0 +1,114 @@ +package com.alibaba.cola.test.command; + +import org.apache.commons.cli.*; +import org.springframework.util.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * AbstractCommand + * + * @author Frank Zhang + * @date 2020-11-17 4:33 PM + */ +public abstract class AbstractCommand { + private static CommandLineParser parser = new DefaultParser(); + protected static AbstractCommand curCmd; + protected static AbstractCommand preCmd; + + protected String cmdRaw; + private Map params; + private Options options; + private CommandLine commandLine; + + private final String SPACE = " "; + private final String EMPTY = ""; + + public AbstractCommand(String cmdRaw){ + this.cmdRaw = cmdRaw.replaceAll(" +", SPACE); + params = new HashMap<>(); + options = new Options(); + initParser(options); + commandLine = parse(); + } + + public void execute(){ + System.out.println("===Run start==== "+cmdRaw); + action(); + System.out.println("===Run end====\n"); + } + + /** + * 清理当前命令的上下文 + */ + protected void cleanContext(){} + + protected void initParser(Options options){}; + + protected abstract void action(); + + public CommandLine parse(){ + try { + return parser.parse(options, cmdRaw.split(SPACE)); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + public Object getParam(String key){ + return params.get(key); + } + + public void putParam(String key, Object value){ + params.put(key, value); + } + + public String getStringParam(String key){ + Object value = params.get(key); + if(value == null){ + return EMPTY; + } + return value.toString(); + } + + public boolean isEclipseMethod(String input) { + return input.indexOf("(") > 0 ; + } + + public boolean isIdeaMethod(String input) { + return input.indexOf("#") > 0 ; + } + + public CommandLine getCommandLine() { + return commandLine; + } + + public static AbstractCommand createCmd(String cmdRaw){ + if(StringUtils.isEmpty(cmdRaw)){ + return null; + } + + AbstractCommand command = null; + + if(cmdRaw.matches(CommandEnum.TestMethodRunCmd.getDesc())){ + command = new TestMethodRunCmd(cmdRaw); + } else if(cmdRaw.matches(CommandEnum.TestClassRunCmd.getDesc())){ + command = new TestClassRunCmd(cmdRaw); + }else if(cmdRaw.matches(CommandEnum.GuideCmd.getDesc())){ + command = new GuideCmd(cmdRaw); + } + + if(command != null){ + preCmd = curCmd; + curCmd = command; + } + if(preCmd != null){ + preCmd.cleanContext(); + } + + return command; + } + +} \ No newline at end of file diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/CommandEnum.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/CommandEnum.java new file mode 100644 index 000000000..1f47beb6f --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/CommandEnum.java @@ -0,0 +1,39 @@ +package com.alibaba.cola.test.command; + +/** + * CommandEnum + * + * @author Frank Zhang + * @date 2020-11-17 4:39 PM + */ +public enum CommandEnum { + TestMethodRunCmd("", "[^\\s]*[\\(#].*"), + TestClassRunCmd("", "(\\w+\\.\\w+){1,}"), + GuideCmd("", "^[rhq]$"), + ; + + private String cmd; + private String desc; + + CommandEnum(String cmd, String desc){ + this.cmd = cmd; + this.desc = desc; + } + + public String getCmd() { + return cmd; + } + + public void setCmd(String cmd) { + this.cmd = cmd; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} + diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/GuideCmd.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/GuideCmd.java new file mode 100644 index 000000000..4bf176f0e --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/GuideCmd.java @@ -0,0 +1,46 @@ +package com.alibaba.cola.test.command; + +import com.alibaba.cola.test.TestsContainer; + +/** + * GuideCmd + * + * @author Frank Zhang + * @date 2020-11-17 4:41 PM + */ +public class GuideCmd extends AbstractCommand { + + public static final String GUIDE_HELP = "h"; + public static final String GUIDE_REPEAT = "r"; + public static final String GUIDE_QUIT = "q"; + + public GuideCmd(String cmdRaw) { + super(cmdRaw); + } + + @Override + public void execute(){ + action(); + } + + @Override + protected void action() { + if(cmdRaw.equals(GUIDE_HELP)){ + System.out.println("************** 欢迎使用轻量级TDD测试工具 ***************************"); + System.out.println("**** 1.测试单个方法,请在控制台输入方法全称"); + System.out.println("**** 例如:com.alibaba.framework.sales.service.test.CustomerServiceTest.testCheckConflict()"); + System.out.println("**** 2.测试整个测试类,请在控制台输入类全称"); + System.out.println("**** 例如:com.alibaba.framework.sales.service.test.CustomerServiceTest"); + System.out.println("**** 3.重复上一次测试,只需在控制台输入字母 - ‘r’"); + System.out.println("**** 4.自动生成ColaTest测试类,请输入‘new 方法全称 参数1 参数2 ...’"); + System.out.println("**** 例如:new com.alibaba.crm.sales.domain.customer.entity.CustomerE#addContact"); + System.out.println("***********************************************************************************"); + }else if(cmdRaw.equals(GUIDE_REPEAT)){ + TestsContainer.execute(preCmd.cmdRaw); + }else if(cmdRaw.equals(GUIDE_QUIT)){ + System.exit(0); + throw new Error("强制退出"); + } + } + +} diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestClassRunCmd.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestClassRunCmd.java new file mode 100644 index 000000000..aa89a0f0c --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestClassRunCmd.java @@ -0,0 +1,31 @@ +package com.alibaba.cola.test.command; + +import com.alibaba.cola.test.TestsContainer; + +/** + * TestClassRunCmd + * + * @author Frank Zhang + * @date 2020-11-17 4:42 PM + */ +public class TestClassRunCmd extends AbstractCommand { + private String className; + + public TestClassRunCmd(String cmdRaw) { + super(cmdRaw); + this.className = cmdRaw; + } + + @Override + protected void action() { + try { + TestsContainer.getTestExecutor().execute(this); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public String getClassName() { + return className; + } +} diff --git a/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestMethodRunCmd.java b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestMethodRunCmd.java new file mode 100644 index 000000000..9301833f5 --- /dev/null +++ b/cola-components/cola-component-test-container/src/main/java/com/alibaba/cola/test/command/TestMethodRunCmd.java @@ -0,0 +1,77 @@ +package com.alibaba.cola.test.command; + +import com.alibaba.cola.test.TestsContainer; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.springframework.core.type.filter.RegexPatternTypeFilter; + +import java.util.ArrayList; +import java.util.List; + +/** + * TestMethodRunCmd + * + * @author Frank Zhang + * @date 2020-11-17 4:43 PM + */ +public class TestMethodRunCmd extends AbstractCommand { + + private static final String RE_RECORD = "rr"; + public final static String DOT = "."; + public final static String NOTE_SYMBOL = "#"; + private String methodName; + private String className; + /** 是否片段录制*/ + private boolean segmentRecord = false; + List recordFilters = new ArrayList<>(); + + public TestMethodRunCmd(String cmdRaw) { + super(cmdRaw); + parseCommand(); + } + + @Override + protected void action() { + try { + TestsContainer.getTestExecutor().execute(this); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + protected void initParser(Options options) { + Option point = Option.builder(RE_RECORD) + .hasArgs() + .argName("p1,p2...") + .valueSeparator(',') + .desc("A directories list with ',' separate to handle its child files") + .build(); + options.addOption(point); + } + + public String getMethodName() { + return methodName; + } + + public String getClassName() { + return className; + } + + public boolean isSegmentRecord() { + return segmentRecord; + } + + private void parseCommand(){ + String cmd = getCommandLine().getArgs()[0]; + if (isEclipseMethod(cmd)) { + methodName = cmd.substring(cmd.lastIndexOf(DOT)+1, cmd.indexOf("(")); + className = cmd.substring(0, cmd.lastIndexOf(DOT)); + } + if (isIdeaMethod(cmd)) { + methodName = cmd.substring(cmd.lastIndexOf(NOTE_SYMBOL)+1, cmd.length()); + className = cmd.substring(0, cmd.lastIndexOf(NOTE_SYMBOL)); + } + } + +} \ No newline at end of file diff --git a/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/Demo.java b/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/Demo.java new file mode 100644 index 000000000..90f12a9e2 --- /dev/null +++ b/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/Demo.java @@ -0,0 +1,28 @@ +package com.alibaba.cola.test; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class Demo { + + @Before + public void before(){ + System.out.println("before action"); + } + + @Test + public void testOne(){ + System.out.println("test one"); + } + + @Test + public void testTwo(){ + System.out.println("test two"); + } + + @After + public void after(){ + System.out.println("after action"); + } +} diff --git a/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/SpringConfig.java b/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/SpringConfig.java new file mode 100644 index 000000000..5f74f8f1f --- /dev/null +++ b/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/SpringConfig.java @@ -0,0 +1,16 @@ +package com.alibaba.cola.test; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * SpringConfig + * + * @author Frank Zhang + * @date 2020-11-17 5:11 PM + */ +@Configuration +@ComponentScan +public class SpringConfig { + +} diff --git a/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/TestsContainerTest.java b/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/TestsContainerTest.java new file mode 100644 index 000000000..bf500cc3c --- /dev/null +++ b/cola-components/cola-component-test-container/src/test/java/com/alibaba/cola/test/TestsContainerTest.java @@ -0,0 +1,18 @@ +package com.alibaba.cola.test; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +/** + * TestsContainerTest + * + * @author Frank Zhang + * @date 2020-11-17 4:55 PM + */ +public class TestsContainerTest { + public static void main(String[] args) { + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class); + + TestsContainer.start(); + } +} diff --git a/cola-components/cola-component-test-container/src/test/resources/logback-test.xml b/cola-components/cola-component-test-container/src/test/resources/logback-test.xml new file mode 100644 index 000000000..8654c31d6 --- /dev/null +++ b/cola-components/cola-component-test-container/src/test/resources/logback-test.xml @@ -0,0 +1,22 @@ + + + + + + + %-4relative [%thread] %-5level %logger{35} - %msg%n + utf8 + + + + + + + + + + + + + + diff --git a/cola-components/pom.xml b/cola-components/pom.xml index 4b960f915..ce14f7c79 100644 --- a/cola-components/pom.xml +++ b/cola-components/pom.xml @@ -1,6 +1,5 @@ - - + + 4.0.0 com.alibaba.cola @@ -22,5 +21,6 @@ cola-component-domain-starter cola-component-extension-starter cola-component-catchlog-starter - + cola-component-test-container + diff --git a/cola-framework-common/pom.xml b/cola-framework-common/pom.xml deleted file mode 100644 index 0bfb4dd00..000000000 --- a/cola-framework-common/pom.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - 4.0.0 - - com.aliyun - cola-common - jar - 3.1.0 - - cola common - https://github.com/alibaba/COLA - Cola framework common components - - - - sonatype-nexus-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - - sonatype-nexus-staging - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - GNU Lesser General Public License v2.1 - https://github.com/alibaba/COLA/blob/master/LICENSE - repo - - - - - scm:git:https://github.com/alibaba/COLA.git - scm:git:https://github.com/alibaba/COLA.git - https://github.com/alibaba/COLA - - - - - Frank - Frank Zhang - 25216348@qq.com - - - - - 1.8 - 1.8 - 1.8 - UTF-8 - UTF-8 - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - verify - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.8 - 1.8 - UTF-8 - - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.0 - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - UTF-8 - none - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.8 - true - - sonatype-nexus-staging - https://oss.sonatype.org/ - true - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.2 - - - - \ No newline at end of file diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/ClientObject.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/ClientObject.java deleted file mode 100644 index 95a05511b..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/ClientObject.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.alibaba.cola.dto; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -/** - * This is the object communicate with Client. - * The clients could be view layer or other HSF Consumers - * @author fulan.zjf 2017-10-27 PM 12:19:15 - */ -public abstract class ClientObject implements Serializable{ - - private static final long serialVersionUID = 1L; - - /** - * This is for extended values - */ - protected Map extValues = new HashMap(); - - public Object getExtField(String key){ - if(extValues != null){ - return extValues.get(key); - } - return null; - } - - public void putExtField(String fieldName, Object value){ - this.extValues.put(fieldName, value); - } - - public Map getExtValues() { - return extValues; - } - - public void setExtValues(Map extValues) { - this.extValues = extValues; - } -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/Command.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/Command.java deleted file mode 100644 index 138054b12..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/Command.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.alibaba.cola.dto; - -import com.alibaba.cola.extension.BizScenario; - -/** - * Command stands for a request from Client. - * According CommandExecutor will help to handle the business logic. This is a classic Command Pattern - * - * @author fulan.zjf 2017年10月27日 下午12:28:24 - */ -public abstract class Command extends DTO{ - - private static final long serialVersionUID = 1L; - - private BizScenario bizScenario; - - public BizScenario getBizScenario() { - return bizScenario; - } - - public void setBizScenario(BizScenario bizScenario) { - this.bizScenario = bizScenario; - } -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/DTO.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/DTO.java deleted file mode 100644 index 915db72ea..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/DTO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.alibaba.cola.dto; - -import java.io.Serializable; - -/** - * Data Transfer object, including Command, Query and Response, - * - * Command and Query is CQRS concept. - * - * @author fulan.zjf 2017年10月21日 下午8:53:55 - */ -public abstract class DTO implements Serializable{ - - private static final long serialVersionUID = 1L; - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/MultiResponse.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/MultiResponse.java deleted file mode 100644 index 6a69f94e6..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/MultiResponse.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.alibaba.cola.dto; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * Response with batch record to return, - * usually use in page query or conditional query - *

- * Created by Danny.Lee on 2017/11/1. - */ -public class MultiResponse extends Response { - - private int total; - - private Collection data; - - public static MultiResponse of(Collection data, int total) { - MultiResponse multiResponse = new MultiResponse<>(); - multiResponse.setSuccess(true); - multiResponse.setData(data); - multiResponse.setTotal(total); - return multiResponse; - } - - public static MultiResponse ofWithoutTotal(Collection data) { - return of(data,0); - } - - - public int getTotal() { - return total; - } - - - public void setTotal(int total) { - this.total = total; - } - - public List getData() { - return null == data ? new ArrayList<>() : new ArrayList<>(data); - } - - - public void setData(Collection data) { - this.data = data; - } - - public static MultiResponse buildFailure(String errCode, String errMessage) { - MultiResponse response = new MultiResponse(); - response.setSuccess(false); - response.setErrCode(errCode); - response.setErrMessage(errMessage); - return response; - } - - public static MultiResponse buildSuccess(){ - MultiResponse response = new MultiResponse(); - response.setSuccess(true); - return response; - } - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/OrderDesc.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/OrderDesc.java deleted file mode 100644 index ae82c66fa..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/OrderDesc.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.alibaba.cola.dto; - -import java.io.Serializable; - -/** - * Order Description - * - * @author Danny.Lee 2017/12/19 - */ -public class OrderDesc implements Serializable{ - - private String col; - private boolean asc = true; - - public String getCol() { - return col; - } - - public void setCol(String col) { - this.col = col; - } - - public boolean isAsc() { - return asc; - } - - public void setAsc(boolean asc) { - this.asc = asc; - } -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/PageQuery.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/PageQuery.java deleted file mode 100644 index 1b310926b..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/PageQuery.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.alibaba.cola.dto; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * page query - *

- * Created by Danny.Lee on 2017/11/1. - */ -public abstract class PageQuery extends Query { - - private int pageNum = 1; - private int pageSize = 10; - private boolean needTotalCount = true; - private List orderDescs; - - public int getPageNum() { - return pageNum; - } - - public void setPageNum(int pageNum) { - this.pageNum = pageNum; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public boolean isNeedTotalCount() { - return needTotalCount; - } - - public void setNeedTotalCount(boolean needTotalCount) { - this.needTotalCount = needTotalCount; - } - - public List getOrderDescs() { - return orderDescs; - } - - public void addOrderDesc(OrderDesc orderDesc) { - if (null == orderDescs) { - orderDescs = new ArrayList<>(); - } - orderDescs.add(orderDesc); - } - - public int getOffset() { - return pageNum > 0 ? (pageNum - 1) * pageSize : 0; - } -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/Query.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/Query.java deleted file mode 100644 index 20f987b6e..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/Query.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.alibaba.cola.dto; - -/** - * - * Query is a special Command which will directly call DataTunnel for data objects - * - * @author fulan.zjf 2017年10月22日 下午7:26:49 - */ -public abstract class Query extends Command{ - - private static final long serialVersionUID = 1L; - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/Response.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/Response.java deleted file mode 100644 index ecd619426..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/Response.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.alibaba.cola.dto; - -/** - * Response to caller - * - * @author fulan.zjf 2017年10月21日 下午8:53:17 - */ -public class Response extends DTO{ - - private static final long serialVersionUID = 1L; - - private boolean isSuccess; - - private String errCode; - - private String errMessage; - - public boolean isSuccess() { - return isSuccess; - } - - - public void setSuccess(boolean isSuccess) { - this.isSuccess = isSuccess; - } - - - public String getErrCode() { - return errCode; - } - - - public void setErrCode(String errCode) { - this.errCode = errCode; - } - - - public String getErrMessage() { - return errMessage; - } - - - public void setErrMessage(String errMessage) { - this.errMessage = errMessage; - } - - - @Override - public String toString() { - return "Response [isSuccess=" + isSuccess + ", errCode=" + errCode + ", errMessage=" + errMessage + "]"; - } - - public static Response buildFailure(String errCode, String errMessage) { - Response response = new Response(); - response.setSuccess(false); - response.setErrCode(errCode); - response.setErrMessage(errMessage); - return response; - } - - public static Response buildSuccess(){ - Response response = new Response(); - response.setSuccess(true); - return response; - } - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/dto/SingleResponse.java b/cola-framework-common/src/main/java/com/alibaba/cola/dto/SingleResponse.java deleted file mode 100644 index ebcd04622..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/dto/SingleResponse.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.alibaba.cola.dto; - -/** - * Response with single record to return - *

- * Created by Danny.Lee on 2017/11/1. - */ - -public class SingleResponse extends Response { - - private T data; - - public static SingleResponse of(T data) { - SingleResponse singleResponse = new SingleResponse<>(); - singleResponse.setSuccess(true); - singleResponse.setData(data); - return singleResponse; - } - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } - - public static SingleResponse buildFailure(String errCode, String errMessage) { - SingleResponse response = new SingleResponse(); - response.setSuccess(false); - response.setErrCode(errCode); - response.setErrMessage(errMessage); - return response; - } - - public static SingleResponse buildSuccess(){ - SingleResponse response = new SingleResponse(); - response.setSuccess(true); - return response; - } - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/exception/Assert.java b/cola-framework-common/src/main/java/com/alibaba/cola/exception/Assert.java deleted file mode 100644 index 823392495..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/exception/Assert.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.alibaba.cola.exception; - -import java.util.Collection; -import java.util.Map; - -/** - * Assertion utility class that assists in validating arguments. - * - *

Useful for identifying programmer errors early and clearly at runtime. - * - *

For example, if the contract of a public method states it does not - * allow {@code null} arguments, {@code Assert} can be used to validate that - * contract. - * - * For example: - * - *

- * Assert.notNull(clazz, "The class must not be null");
- * Assert.isTrue(i > 0, "The value must be greater than zero");
- * - * This class is empowered by {@link org.springframework.util.Assert} - * - * @author Frank Zhang - * @date 2019-01-13 11:49 AM - */ -public abstract class Assert { - - /** - * Assert a boolean expression, throwing {@code BizException} - * - * for example - * - *
Assert.isTrue(i != 0, errorCode.B_ORDER_illegalNumber, "The order number can not be zero");
- * - * @param expression a boolean expression - * @param errorCode - * @param message the exception message to use if the assertion fails - * @throws BizException if expression is {@code false} - */ - public static void isTrue(boolean expression, ErrorCodeI errorCode, String message){ - if (!expression) { - throw new BizException(errorCode, message); - } - } - - public static void isTrue(boolean expression, String message) { - isTrue(expression, ErrorCodeDefault.BIZ_ERROR, message); - } - - public static void isTrue(boolean expression) { - isTrue(expression, "[Assertion failed] - this expression must be true"); - } - - public static void notNull(Object object, ErrorCodeI errorCode, String message) { - if (object == null) { - throw new BizException(errorCode, message); - } - } - - public static void notNull(Object object, String message) { - notNull(object, ErrorCodeDefault.BIZ_ERROR, message); - } - - public static void notNull(Object object){ - notNull(object, ErrorCodeDefault.BIZ_ERROR, "[Assertion failed] - the argument "+object+" must not be null"); - } - - public static void notEmpty(Collection collection) { - notEmpty(collection, - "[Assertion failed] - this collection must not be empty: it must contain at least 1 element"); - } - - public static void notEmpty(Collection collection, String message) { - if (collection != null && collection.size() > 0) { - throw new BizException(message); - } - } - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/exception/BaseException.java b/cola-framework-common/src/main/java/com/alibaba/cola/exception/BaseException.java deleted file mode 100644 index 65904874b..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/exception/BaseException.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.alibaba.cola.exception; - -import com.alibaba.cola.exception.ErrorCodeI; - -/** - * - * Base Exception is the parent of all exceptions - * - * @author fulan.zjf 2017年10月22日 上午12:00:39 - */ -public abstract class BaseException extends RuntimeException{ - - private static final long serialVersionUID = 1L; - - private ErrorCodeI errCode; - - public BaseException(String errMessage){ - super(errMessage); - } - - public BaseException(String errMessage, Throwable e) { - super(errMessage, e); - } - - public ErrorCodeI getErrCode() { - return errCode; - } - - public void setErrCode(ErrorCodeI errCode) { - this.errCode = errCode; - } - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/exception/BizException.java b/cola-framework-common/src/main/java/com/alibaba/cola/exception/BizException.java deleted file mode 100644 index df3eabeea..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/exception/BizException.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.alibaba.cola.exception; - -/** - * BizException is known Exception, no need retry - */ -public class BizException extends BaseException { - - private static final long serialVersionUID = 1L; - - public BizException(String errMessage){ - super(errMessage); - } - - public BizException(ErrorCodeI errCode, String errMessage){ - super(errMessage); - this.setErrCode(errCode); - } - - public BizException(String errMessage, Throwable e) { - super(errMessage, e); - } -} \ No newline at end of file diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeDefault.java b/cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeDefault.java deleted file mode 100644 index 29a5ad795..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeDefault.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.alibaba.cola.exception; - -/** - * ErrorCodeDefault - * - * @author Frank Zhang - * @date 2020-10-27 3:25 PM - */ -public enum ErrorCodeDefault implements ErrorCodeI { - - BIZ_ERROR("BIZ_ERROR" , "通用的业务逻辑错误"), - - SYS_ERROR("SYS_ERROR" , "未知的系统错误" ); - - private String errCode; - private String errDesc; - - private ErrorCodeDefault(String errCode, String errDesc){ - this.errCode = errCode; - this.errDesc = errDesc; - } - - @Override - public String getErrCode() { - return errCode; - } - - @Override - public String getErrDesc() { - return errDesc; - } -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeI.java b/cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeI.java deleted file mode 100644 index 56744443a..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/exception/ErrorCodeI.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.alibaba.cola.exception; - -/** - * Extends your error codes in your App by implements this Interface. - * - * Created by fulan.zjf on 2017/12/18. - */ -public interface ErrorCodeI { - - public String getErrCode(); - - public String getErrDesc(); - -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/exception/SysException.java b/cola-framework-common/src/main/java/com/alibaba/cola/exception/SysException.java deleted file mode 100644 index a1fafcda1..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/exception/SysException.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.alibaba.cola.exception; - - -/** - * System Exception is unexpected Exception, retry might work again - * - * @author Danny.Lee 2018/1/27 - */ -public class SysException extends BaseException { - - private static final long serialVersionUID = 4355163994767354840L; - - public SysException(String errMessage){ - super(errMessage); - } - - public SysException(ErrorCodeI errCode, String errMessage) { - super(errMessage); - this.setErrCode(errCode); - } - - public SysException(String errMessage, Throwable e) { - super(errMessage, e); - } - - public SysException(String errMessage, ErrorCodeI errorCode, Throwable e) { - super(errMessage, e); - this.setErrCode(errorCode); - } -} diff --git a/cola-framework-common/src/main/java/com/alibaba/cola/extension/BizScenario.java b/cola-framework-common/src/main/java/com/alibaba/cola/extension/BizScenario.java deleted file mode 100644 index d6eaa2f78..000000000 --- a/cola-framework-common/src/main/java/com/alibaba/cola/extension/BizScenario.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.alibaba.cola.extension; - - -/** - * BizScenario(业务场景)= bizId + useCase + scenario, which can uniquely identify a user scenario. - * - * @author Frank Zhang - * @date 2019-08-20 12:07 - */ -public class BizScenario { - public final static String DEFAULT_BIZ_ID = "#defaultBizId#"; - public final static String DEFAULT_USE_CASE = "#defaultUseCase#"; - public final static String DEFAULT_SCENARIO = "#defaultScenario#"; - private final static String DOT_SEPARATOR = "."; - - /** - * bizId is used to identify a business, such as "tmall", it's nullable if there is only one biz - */ - private String bizId = DEFAULT_BIZ_ID; - - /** - * useCase is used to identify a use case, such as "placeOrder", can not be null - */ - private String useCase = DEFAULT_USE_CASE; - - /** - * scenario is used to identify a use case, such as "88vip","normal", can not be null - */ - private String scenario = DEFAULT_SCENARIO; - - /** - * For above case, the BizScenario will be "tmall.placeOrder.88vip", - * with this code, we can provide extension processing other than "tmall.placeOrder.normal" scenario. - * - * @return - */ - public String getUniqueIdentity(){ - return bizId + DOT_SEPARATOR + useCase + DOT_SEPARATOR + scenario; - } - - public static BizScenario valueOf(String bizId, String useCase, String scenario){ - BizScenario bizScenario = new BizScenario(); - bizScenario.bizId = bizId; - bizScenario.useCase = useCase; - bizScenario.scenario = scenario; - return bizScenario; - } - - public static BizScenario valueOf(String bizId, String useCase){ - return BizScenario.valueOf(bizId, useCase, DEFAULT_SCENARIO); - } - - public static BizScenario valueOf(String bizId){ - return BizScenario.valueOf(bizId, DEFAULT_USE_CASE, DEFAULT_SCENARIO); - } - - public static BizScenario newDefault(){ - return BizScenario.valueOf(DEFAULT_BIZ_ID, DEFAULT_USE_CASE, DEFAULT_SCENARIO); - } - - public String getIdentityWithDefaultScenario(){ - return bizId + DOT_SEPARATOR + useCase + DOT_SEPARATOR + DEFAULT_SCENARIO; - } - - public String getIdentityWithDefaultUseCase(){ - return bizId + DOT_SEPARATOR + DEFAULT_USE_CASE + DOT_SEPARATOR + DEFAULT_SCENARIO; - } -} diff --git a/cola-framework-core/pom.xml b/cola-framework-core/pom.xml deleted file mode 100644 index c4e390f37..000000000 --- a/cola-framework-core/pom.xml +++ /dev/null @@ -1,175 +0,0 @@ - - - 4.0.0 - - com.aliyun - cola-core - jar - 3.1.0 - - Cola core - https://github.com/alibaba/COLA - Cola framework core components - - - - sonatype-nexus-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - - sonatype-nexus-staging - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - GNU Lesser General Public License v2.1 - https://github.com/alibaba/COLA/blob/master/LICENSE - repo - - - - - scm:git:https://github.com/alibaba/COLA.git - scm:git:https://github.com/alibaba/COLA.git - https://github.com/alibaba/COLA - - - - - Frank - Frank Zhang - 25216348@qq.com - - - - - 1.8 - 1.8 - 1.8 - UTF-8 - UTF-8 - - - - - com.aliyun - cola-common - 3.1.0 - - - - org.springframework - spring-core - 5.2.0.RELEASE - provided - - - org.springframework - spring-context - 5.2.0.RELEASE - provided - - - org.slf4j - slf4j-api - 1.7.9 - provided - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - 4.3.2.RELEASE - test - - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - verify - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.8 - 1.8 - UTF-8 - - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.0 - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - UTF-8 - none - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.8 - true - - sonatype-nexus-staging - https://oss.sonatype.org/ - true - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.2 - - - - \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/boot/AbstractComponentExecutor.java b/cola-framework-core/src/main/java/com/alibaba/cola/boot/AbstractComponentExecutor.java deleted file mode 100644 index 2de3a9484..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/boot/AbstractComponentExecutor.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.alibaba.cola.boot; - -import com.alibaba.cola.extension.BizScenario; -import com.alibaba.cola.extension.ExtensionCoordinate; - -import java.util.function.Consumer; -import java.util.function.Function; - -/** - * @author fulan.zjf - * @date 2017/12/21 - */ -public abstract class AbstractComponentExecutor { - - /** - * Execute extension with Response - * - * @param targetClz - * @param bizScenario - * @param exeFunction - * @param Response Type - * @param Parameter Type - * @return - */ - public R execute(Class targetClz, BizScenario bizScenario, Function exeFunction) { - T component = locateComponent(targetClz, bizScenario); - return exeFunction.apply(component); - } - - public R execute(ExtensionCoordinate extensionCoordinate, Function exeFunction){ - return execute((Class) extensionCoordinate.getExtensionPointClass(), extensionCoordinate.getBizScenario(), exeFunction); - } - - /** - * Execute extension without Response - * - * @param targetClz - * @param context - * @param exeFunction - * @param Parameter Type - */ - public void executeVoid(Class targetClz, BizScenario context, Consumer exeFunction) { - T component = locateComponent(targetClz, context); - exeFunction.accept(component); - } - - public void executeVoid(ExtensionCoordinate extensionCoordinate, Consumer exeFunction){ - executeVoid(extensionCoordinate.getExtensionPointClass(), extensionCoordinate.getBizScenario(), exeFunction); - } - - protected abstract C locateComponent(Class targetClz, BizScenario context); -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/boot/ExtensionRegister.java b/cola-framework-core/src/main/java/com/alibaba/cola/boot/ExtensionRegister.java deleted file mode 100644 index c3f3b46a5..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/boot/ExtensionRegister.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2017 Alibaba.com All right reserved. This software is the - * confidential and proprietary information of Alibaba.com ("Confidential - * Information"). You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license agreement you entered - * into with Alibaba.com. - */ -package com.alibaba.cola.boot; - -import com.alibaba.cola.common.ColaConstant; -import com.alibaba.cola.exception.ColaException; -import com.alibaba.cola.extension.*; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * ExtensionRegister - * @author fulan.zjf 2017-11-05 - */ -@Component -public class ExtensionRegister{ - - @Resource - private ExtensionRepository extensionRepository; - - - public void doRegistration(ExtensionPointI extensionObject){ - Class extensionClz = extensionObject.getClass(); - Extension extensionAnn = extensionClz.getDeclaredAnnotation(Extension.class); - BizScenario bizScenario = BizScenario.valueOf(extensionAnn.bizId(), extensionAnn.useCase(), extensionAnn.scenario()); - ExtensionCoordinate extensionCoordinate = new ExtensionCoordinate(calculateExtensionPoint(extensionClz), bizScenario.getUniqueIdentity()); - ExtensionPointI preVal = extensionRepository.getExtensionRepo().put(extensionCoordinate, extensionObject); - if (preVal != null) { - throw new ColaException("Duplicate registration is not allowed for :" + extensionCoordinate); - } - - } - - /** - * @param targetClz - * @return - */ - private String calculateExtensionPoint(Class targetClz) { - Class[] interfaces = targetClz.getInterfaces(); - if (interfaces == null || interfaces.length == 0) - throw new ColaException("Please assign a extension point interface for "+targetClz); - for (Class intf : interfaces) { - String extensionPoint = intf.getSimpleName(); - if (extensionPoint.contains(ColaConstant.EXTENSION_EXTPT_NAMING)) - return intf.getName(); - } - throw new ColaException("Your name of ExtensionPoint for "+targetClz+" is not valid, must be end of "+ ColaConstant.EXTENSION_EXTPT_NAMING); - } - -} \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/boot/SpringBootstrap.java b/cola-framework-core/src/main/java/com/alibaba/cola/boot/SpringBootstrap.java deleted file mode 100644 index e56cfe160..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/boot/SpringBootstrap.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.alibaba.cola.boot; - -import com.alibaba.cola.common.ApplicationContextHelper; -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.extension.ExtensionPointI; -import org.springframework.context.ApplicationContext; - -import javax.annotation.Resource; -import java.util.Map; - -/** - * SpringBootstrap - * - * @author Frank Zhang - * @date 2020-06-18 7:55 PM - */ -public class SpringBootstrap { - - @Resource - private ExtensionRegister extensionRegister; - - public void init(){ - ApplicationContext applicationContext = ApplicationContextHelper.getApplicationContext(); - Map extensionBeans = applicationContext.getBeansWithAnnotation(Extension.class); - extensionBeans.values().forEach( - extension -> extensionRegister.doRegistration((ExtensionPointI) extension) - ); - } -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/boot/package-info.java b/cola-framework-core/src/main/java/com/alibaba/cola/boot/package-info.java deleted file mode 100644 index 296568603..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/boot/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * This package contains Bootstrap class of Application. - * - * @author fulan.zjf - */ -package com.alibaba.cola.boot; \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/common/ApplicationContextHelper.java b/cola-framework-core/src/main/java/com/alibaba/cola/common/ApplicationContextHelper.java deleted file mode 100644 index c19333560..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/common/ApplicationContextHelper.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.alibaba.cola.common; - -import com.alibaba.cola.exception.ColaErrorCode; -import com.alibaba.cola.exception.SysException; -import org.springframework.beans.BeansException; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.stereotype.Component; - -/** - * ApplicationContextHelper - * - * @author Frank Zhang - * @date 2018-01-07 12:30 PM - */ -@Component -public class ApplicationContextHelper implements ApplicationContextAware{ - - private static ApplicationContext applicationContext; - - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - ApplicationContextHelper.applicationContext = applicationContext; - } - - public static ApplicationContext getApplicationContext(){ - return ApplicationContextHelper.applicationContext; - } - - public static T getBean(Class targetClz){ - T beanInstance = null; - //优先按type查 - try { - beanInstance = (T) applicationContext.getBean(targetClz); - }catch (Exception e){ - } - //按name查 - if(beanInstance == null){ - String simpleName = targetClz.getSimpleName(); - //首字母小写 - simpleName = Character.toLowerCase(simpleName.charAt(0)) + simpleName.substring(1); - beanInstance = (T) applicationContext.getBean(simpleName); - } - if(beanInstance == null){ - new SysException(ColaErrorCode.COLA_ERROR, "Component " + targetClz + " can not be found in Spring Container"); - } - return beanInstance; - } - public static Object getBean(String claz){ - return ApplicationContextHelper.applicationContext.getBean(claz); - } -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/common/ColaConstant.java b/cola-framework-core/src/main/java/com/alibaba/cola/common/ColaConstant.java deleted file mode 100644 index b268bb139..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/common/ColaConstant.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017 Alibaba.com All right reserved. This software is the - * confidential and proprietary information of Alibaba.com ("Confidential - * Information"). You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license agreement you entered - * into with Alibaba.com. - */ -package com.alibaba.cola.common; - -/** - * CoreConstant - * @author fulan.zjf 2017-11-04 - */ -public class ColaConstant { - - public final static String DOT_SEPARATOR = "."; - public final static String EXTENSION_EXTPT_NAMING = "ExtPt"; - - public final static String EXE_METHOD = "execute"; -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactory.java b/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactory.java deleted file mode 100644 index b838616c6..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactory.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.alibaba.cola.domain; - -import com.alibaba.cola.common.ApplicationContextHelper; - -/** - * DomainFactory - * - * @author Frank Zhang - * @date 2019-01-03 2:41 PM - */ -public class DomainFactory { - - public static T create(Class entityClz){ - return ApplicationContextHelper.getBean(entityClz); - } - - public static T getBean(Class entityClz){ - return ApplicationContextHelper.getBean(entityClz); - } -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactoryI.java b/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactoryI.java deleted file mode 100644 index ebe486dd3..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainFactoryI.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.alibaba.cola.domain; - -/** - * 领域工厂 - * @author xueliang.sxl - * - */ -public interface DomainFactoryI { - - T create(); - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainServiceI.java b/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainServiceI.java deleted file mode 100644 index ed97d5c1a..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/domain/DomainServiceI.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.alibaba.cola.domain; - -/** - * 领域服务,继承自DomainServiceI的接口都认为是DomainAbility - * @author xueliang.sxl - * - */ -public interface DomainServiceI { - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/domain/Entity.java b/cola-framework-core/src/main/java/com/alibaba/cola/domain/Entity.java deleted file mode 100644 index da4799636..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/domain/Entity.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.cola.domain; - -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import java.lang.annotation.*; - -/** - * Entity, Entity Object is prototype and is not thread-safe - * - * @author Frank Zhang - * @date 2019-01-03 2:53 PM - */ -@Inherited -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE}) -@Component -@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) -public @interface Entity { -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/domain/EntityObject.java b/cola-framework-core/src/main/java/com/alibaba/cola/domain/EntityObject.java deleted file mode 100755 index 9d0f1aa29..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/domain/EntityObject.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.alibaba.cola.domain; - - -import com.alibaba.cola.extension.BizScenario; -/** - * Entity Object - * - * This is the parent object of all domain objects - * @author fulan.zjf 2017年10月27日 上午10:16:10 - */ - -public abstract class EntityObject { - public BizScenario getBizScenario() { - return bizScenario; - } - - public void setBizScenario(BizScenario bizScenario) { - this.bizScenario = bizScenario; - } - - private BizScenario bizScenario; - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/domain/ValueObject.java b/cola-framework-core/src/main/java/com/alibaba/cola/domain/ValueObject.java deleted file mode 100644 index a031678e0..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/domain/ValueObject.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.alibaba.cola.domain; - -/** - * 领域值对象 - * @author xueliang.sxl - * - */ -public interface ValueObject { - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/domain/package-info.java b/cola-framework-core/src/main/java/com/alibaba/cola/domain/package-info.java deleted file mode 100644 index 0c5cd97ec..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/domain/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 领域模型抽象层 - * - * @author fulan.zjf - */ -package com.alibaba.cola.domain; \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaErrorCode.java b/cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaErrorCode.java deleted file mode 100644 index a42ab4c54..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaErrorCode.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.alibaba.cola.exception; - -import com.alibaba.cola.exception.ErrorCodeI; - -/** - * - * There are only 3 basic ErrorCode: - * COLA_ERROR - * - * Created by fulan.zjf on 2017/12/18. - */ -public enum ColaErrorCode implements ErrorCodeI { - - COLA_ERROR("COLA_FRAMEWORK_ERROR" , "COLA框架错误"); - - private String errCode; - private String errDesc; - - private ColaErrorCode(String errCode, String errDesc){ - this.errCode = errCode; - this.errDesc = errDesc; - } - - @Override - public String getErrCode() { - return errCode; - } - - @Override - public String getErrDesc() { - return errDesc; - } -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaException.java b/cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaException.java deleted file mode 100644 index 0500d0719..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/exception/ColaException.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.alibaba.cola.exception; - -/** - * - * Infrastructure Exception - * - * @author fulan.zjf 2017年10月22日 下午5:56:57 - */ -public class ColaException extends BaseException { - - private static final long serialVersionUID = 1L; - - public ColaException(String errMessage){ - super(errMessage); - this.setErrCode(ColaErrorCode.COLA_ERROR); - } - - public ColaException(String errMessage, Throwable e) { - super(errMessage, e); - this.setErrCode(ColaErrorCode.COLA_ERROR); - } -} \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/extension/Extension.java b/cola-framework-core/src/main/java/com/alibaba/cola/extension/Extension.java deleted file mode 100644 index 180dd1b8e..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/extension/Extension.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2017 Alibaba.com All right reserved. This software is the - * confidential and proprietary information of Alibaba.com ("Confidential - * Information"). You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license agreement you entered - * into with Alibaba.com. - */ -package com.alibaba.cola.extension; - -import com.alibaba.cola.common.ColaConstant; -import org.springframework.stereotype.Component; - -import java.lang.annotation.*; - -/** - * Extension - * @author fulan.zjf 2017-11-05 - */ -@Inherited -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE}) -@Component -public @interface Extension { - String bizId() default BizScenario.DEFAULT_BIZ_ID; - String useCase() default BizScenario.DEFAULT_USE_CASE; - String scenario() default BizScenario.DEFAULT_SCENARIO; -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionCoordinate.java b/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionCoordinate.java deleted file mode 100644 index be2edde1a..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionCoordinate.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2017 Alibaba.com All right reserved. This software is the - * confidential and proprietary information of Alibaba.com ("Confidential - * Information"). You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license agreement you entered - * into with Alibaba.com. - */ -package com.alibaba.cola.extension; - -/** - * Extension Coordinate(扩展坐标) is used to uniquely position an Extension - * @author fulan.zjf 2017-11-05 - */ -public class ExtensionCoordinate { - - private String extensionPointName; - private String bizScenarioUniqueIdentity; - - - - //Wrapper - private Class extensionPointClass; - private BizScenario bizScenario; - - public Class getExtensionPointClass() { - return extensionPointClass; - } - - public BizScenario getBizScenario() { - return bizScenario; - } - - public static ExtensionCoordinate valueOf(Class extPtClass, BizScenario bizScenario){ - return new ExtensionCoordinate(extPtClass, bizScenario); - } - - public ExtensionCoordinate(Class extPtClass, BizScenario bizScenario){ - this.extensionPointClass = extPtClass; - this.extensionPointName = extPtClass.getName(); - this.bizScenario = bizScenario; - this.bizScenarioUniqueIdentity = bizScenario.getUniqueIdentity(); - } - - /** - * @param extensionPoint - * @param bizScenario - */ - public ExtensionCoordinate(String extensionPoint, String bizScenario){ - this.extensionPointName = extensionPoint; - this.bizScenarioUniqueIdentity = bizScenario; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((bizScenarioUniqueIdentity == null) ? 0 : bizScenarioUniqueIdentity.hashCode()); - result = prime * result + ((extensionPointName == null) ? 0 : extensionPointName.hashCode()); - return result; - } - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null) return false; - if (getClass() != obj.getClass()) return false; - ExtensionCoordinate other = (ExtensionCoordinate) obj; - if (bizScenarioUniqueIdentity == null) { - if (other.bizScenarioUniqueIdentity != null) return false; - } else if (!bizScenarioUniqueIdentity.equals(other.bizScenarioUniqueIdentity)) return false; - if (extensionPointName == null) { - if (other.extensionPointName != null) return false; - } else if (!extensionPointName.equals(other.extensionPointName)) return false; - return true; - } - - @Override - public String toString() { - return "ExtensionCoordinate [extensionPointName=" + extensionPointName + ", bizScenarioUniqueIdentity=" + bizScenarioUniqueIdentity + "]"; - } - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionExecutor.java b/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionExecutor.java deleted file mode 100644 index 58218f3c8..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionExecutor.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2017 Alibaba.com All right reserved. This software is the - * confidential and proprietary information of Alibaba.com ("Confidential - * Information"). You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license agreement you entered - * into with Alibaba.com. - */ -package com.alibaba.cola.extension; - -import com.alibaba.cola.boot.AbstractComponentExecutor; -import com.alibaba.cola.exception.ColaException; -import com.alibaba.cola.logger.Logger; -import com.alibaba.cola.logger.LoggerFactory; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * ExtensionExecutor - * @author fulan.zjf 2017-11-05 - */ -@Component -public class ExtensionExecutor extends AbstractComponentExecutor { - - private Logger logger = LoggerFactory.getLogger(ExtensionExecutor.class); - - @Resource - private ExtensionRepository extensionRepository; - - @Override - protected C locateComponent(Class targetClz, BizScenario bizScenario) { - C extension = locateExtension(targetClz, bizScenario); - logger.debug("[Located Extension]: " + extension.getClass().getSimpleName()); - return extension; - } - - /** - * if the bizScenarioUniqueIdentity is "ali.tmall.supermarket" - * - * the search path is as below: - * 1、first try to get extension by "ali.tmall.supermarket", if get, return it. - * 2、loop try to get extension by "ali.tmall", if get, return it. - * 3、loop try to get extension by "ali", if get, return it. - * 4、if not found, try the default extension - * @param targetClz - */ - protected Ext locateExtension(Class targetClz, BizScenario bizScenario) { - checkNull(bizScenario); - - Ext extension; - - logger.debug("BizScenario in locateExtension is : " + bizScenario.getUniqueIdentity()); - - // first try with full namespace - extension = firstTry(targetClz, bizScenario); - if (extension != null) { - return extension; - } - - // second try with default scenario - extension = secondTry(targetClz, bizScenario); - if (extension != null) { - return extension; - } - - // third try with default use case + default scenario - extension = defaultUseCaseTry(targetClz, bizScenario); - if (extension != null) { - return extension; - } - - throw new ColaException("Can not find extension with ExtensionPoint: "+targetClz+" BizScenario:"+bizScenario.getUniqueIdentity()); - } - - /** - * first try with full namespace - * - * example: biz1.useCase1.scenario1 - */ - private Ext firstTry(Class targetClz, BizScenario bizScenario) { - logger.debug("First trying with " + bizScenario.getUniqueIdentity()); - return locate(targetClz.getName(), bizScenario.getUniqueIdentity()); - } - - /** - * second try with default scenario - * - * example: biz1.useCase1.#defaultScenario# - */ - private Ext secondTry(Class targetClz, BizScenario bizScenario){ - logger.debug("Second trying with " + bizScenario.getIdentityWithDefaultScenario()); - return locate(targetClz.getName(), bizScenario.getIdentityWithDefaultScenario()); - } - - /** - * third try with default use case + default scenario - * - * example: biz1.#defaultUseCase#.#defaultScenario# - */ - private Ext defaultUseCaseTry(Class targetClz, BizScenario bizScenario){ - logger.debug("Third trying with " + bizScenario.getIdentityWithDefaultUseCase()); - return locate(targetClz.getName(), bizScenario.getIdentityWithDefaultUseCase()); - } - - private Ext locate(String name, String uniqueIdentity) { - final Ext ext = (Ext) extensionRepository.getExtensionRepo(). - get(new ExtensionCoordinate(name, uniqueIdentity)); - return ext; - } - - private void checkNull(BizScenario bizScenario){ - if(bizScenario == null){ - throw new ColaException("BizScenario can not be null for extension"); - } - } - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionPointI.java b/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionPointI.java deleted file mode 100644 index 1bd51a70d..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionPointI.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.alibaba.cola.extension; - -/** - * ExtensionPointI is the parent interface of all ExtensionPoints - * 扩展点表示一块逻辑在不同的业务有不同的实现,使用扩展点做接口申明,然后用Extension(扩展)去实现扩展点。 - * @author fulan.zjf 2017-10-22 - */ -public interface ExtensionPointI { - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionRepository.java b/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionRepository.java deleted file mode 100644 index f53298dd7..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/extension/ExtensionRepository.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2017 Alibaba.com All right reserved. This software is the - * confidential and proprietary information of Alibaba.com ("Confidential - * Information"). You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license agreement you entered - * into with Alibaba.com. - */ -package com.alibaba.cola.extension; - -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * ExtensionRepository - * @author fulan.zjf 2017-11-05 - */ -@Component -public class ExtensionRepository { - - public Map getExtensionRepo() { - return extensionRepo; - } - - private Map extensionRepo = new HashMap<>(); - - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/extension/package-info.java b/cola-framework-core/src/main/java/com/alibaba/cola/extension/package-info.java deleted file mode 100644 index 0a93d236d..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/extension/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Use {@link ExtensionPointI} to declare extension point, and use {@link Extension} Annotation to mark specific Extension. - * - * @author fulan.zjf - */ -package com.alibaba.cola.extension; \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/logger/Logger.java b/cola-framework-core/src/main/java/com/alibaba/cola/logger/Logger.java deleted file mode 100644 index 65f4b515d..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/logger/Logger.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.alibaba.cola.logger; - -/** - * This is a typical DIP, by depending on ourselves logger, we can change the underline logger vendor easily - * - * @author fulan.zjf 2017年10月23日 下午11:58:54 - */ -public interface Logger { - - /** - * Log a message at the DEBUG level. - * - * @param msg the message string to be logged - */ - public void debug(String msg); - - /** - * Log a message at the DEBUG level. support format. - * - * @param msg - * @param args - */ - default public void debug(String msg, Object... args){ - debug(String.format(msg, args)); - } - - /** - * Log a message at the INFO level. - * - * @param msg the message string to be logged - */ - public void info(String msg); - - /** - * Log a message at the INFO level. support format. - * - * @param msg - * @param args - */ - default public void info(String msg, Object... args){ - info(String.format(msg, args)); - } - - /** - * Log a message at the WARN level. - * - * @param msg the message string to be logged - */ - public void warn(String msg); - - /** - * Log a message at the WARN level. support format. - * - * @param msg - * @param args - */ - default public void warn(String msg, Object... args){ - warn(String.format(msg, args)); - } - /** - * Log a message at the ERROR level. - * - * @param msg the message string to be logged - */ - public void error(String msg); - - /** - * Log a message at the ERROR level. support format. - * @param msg - * @param args - */ - default public void error(String msg, Object... args){ - error(String.format(msg, args)); - } - - /** - * Log an exception (throwable) at the ERROR level with an - * accompanying message. - * - * @param msg the message accompanying the exception - * @param t the exception (throwable) to log - */ - public void error(String msg, Throwable t); -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/logger/LoggerFactory.java b/cola-framework-core/src/main/java/com/alibaba/cola/logger/LoggerFactory.java deleted file mode 100644 index a0f38d0ac..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/logger/LoggerFactory.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.alibaba.cola.logger; - -public class LoggerFactory { - - private static boolean useSysLogger = false; - - public static Logger getLogger(Class clazz) { - if(useSysLogger) - return SysLogger.getLogger(clazz); - org.slf4j.Logger slfjLogger = org.slf4j.LoggerFactory.getLogger(clazz); - return new SLFJLogger(slfjLogger); - } - - public static Logger getLogger(String loggerName) { - if(useSysLogger) { - return SysLogger.getLogger(loggerName); - } - org.slf4j.Logger slfjLogger = org.slf4j.LoggerFactory.getLogger(loggerName); - return new SLFJLogger(slfjLogger); - } - - /** - * This is just for testing purpose, don't use it on product! - */ - public static void activateSysLogger() { - useSysLogger = true; - } - - public static void deactivateSysLogger() { - useSysLogger = false; - } -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/logger/SLFJLogger.java b/cola-framework-core/src/main/java/com/alibaba/cola/logger/SLFJLogger.java deleted file mode 100644 index 6748f1718..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/logger/SLFJLogger.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.alibaba.cola.logger; - -public class SLFJLogger implements com.alibaba.cola.logger.Logger{ - - private org.slf4j.Logger slfjLogger; - - public SLFJLogger(org.slf4j.Logger slfjLogger) { - this.slfjLogger = slfjLogger; - } - - @Override - public void debug(String msg) { - slfjLogger.debug(msg); - } - - @Override - public void info(String msg) { - slfjLogger.info(msg); - - } - - @Override - public void warn(String msg) { - slfjLogger.warn(msg); - - } - - @Override - public void error(String msg) { - slfjLogger.error(msg); - - } - - @Override - public void error(String msg, Throwable t) { - slfjLogger.error(msg, t); - } - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/logger/SysLogger.java b/cola-framework-core/src/main/java/com/alibaba/cola/logger/SysLogger.java deleted file mode 100644 index bdf70f906..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/logger/SysLogger.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.alibaba.cola.logger; - -public class SysLogger implements Logger{ - - private String loggerName; - - private SysLogger(String loggerName){ - this.loggerName = loggerName; - } - - public static Logger getLogger(Class clz){ - return new SysLogger(clz.getName()); - } - - - public static Logger getLogger(String loggerName){ - return new SysLogger(loggerName); - } - - @Override - public void debug(String msg) { - System.out.println("["+loggerName+"] DEBUG: "+msg); - } - - @Override - public void info(String msg) { - System.out.println("["+loggerName+"] INFO: "+msg); - } - - @Override - public void warn(String msg) { - System.out.println("["+loggerName+"] WARN: "+msg); - } - - @Override - public void error(String msg) { - System.err.println("["+loggerName+"] ERROR: "+msg); - } - - @Override - public void error(String msg, Throwable t) { - System.err.println("["+loggerName+"] ERROR: "+msg); - t.printStackTrace(); - } - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/logger/package-info.java b/cola-framework-core/src/main/java/com/alibaba/cola/logger/package-info.java deleted file mode 100644 index 461ceb8f3..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/logger/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * CRM Logger is used to decouple and uniform logger usage with different vendors, typical DIP. - * - * @author fulan.zjf - */ -package com.alibaba.cola.logger; \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/Filter.java b/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/Filter.java deleted file mode 100644 index 8d1338ee9..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/Filter.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.alibaba.cola.pattern.filter; - -/** - * - */ -public interface Filter { - - void doFilter(T context, FilterInvoker nextFilter); - -} \ No newline at end of file diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChain.java b/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChain.java deleted file mode 100644 index 01f0b3f55..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChain.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.alibaba.cola.pattern.filter; - -/** - * 拦截器链 - * @author shawnzhan.zxy - * @date 2018/04/17 - */ -public class FilterChain{ - - private FilterInvoker header; - - public void doFilter(T context){ - header.invoke(context); - } - - public void setHeader(FilterInvoker header) { - this.header = header; - } -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChainFactory.java b/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChainFactory.java deleted file mode 100644 index 86e688253..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterChainFactory.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.alibaba.cola.pattern.filter; - -import com.alibaba.cola.common.ApplicationContextHelper; - -/** - * 责任链模式工厂 - * @author shawnzhan.zxy - * @date 2018/04/17 - */ -public class FilterChainFactory { - - public static FilterChain buildFilterChain(Class... filterClsList) { - FilterInvoker last = new FilterInvoker(){}; - FilterChain filterChain = new FilterChain(); - for(int i = filterClsList.length - 1; i >= 0; i--){ - FilterInvoker next = last; - Filter filter = (Filter)ApplicationContextHelper.getBean(filterClsList[i]); - last = new FilterInvoker(){ - @Override - public void invoke(T context) { - filter.doFilter(context, next); - } - }; - } - filterChain.setHeader(last); - return filterChain; - } - - -} diff --git a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterInvoker.java b/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterInvoker.java deleted file mode 100644 index 4eecd4039..000000000 --- a/cola-framework-core/src/main/java/com/alibaba/cola/pattern/filter/FilterInvoker.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.alibaba.cola.pattern.filter; - -/** - * @author shawnzhan.zxy - * @date 2018/04/17 - */ -public interface FilterInvoker { - - default public void invoke(T context){}; -} diff --git a/cola-framework-core/src/main/resources/sample.properties b/cola-framework-core/src/main/resources/sample.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/SysLoggerPostProcessor.java b/cola-framework-core/src/test/java/com/alibaba/cola/SysLoggerPostProcessor.java deleted file mode 100644 index 11bb9d87f..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/SysLoggerPostProcessor.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.cola; - -import com.alibaba.cola.logger.LoggerFactory; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.stereotype.Component; - -/** - * SysLoggerPostProcessor - * - * @author Frank Zhang - * @date 2018-08-19 2:42 PM - */ -@Component -public class SysLoggerPostProcessor implements BeanFactoryPostProcessor { - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - LoggerFactory.activateSysLogger(); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/TestSpringConfig.java b/cola-framework-core/src/test/java/com/alibaba/cola/TestSpringConfig.java deleted file mode 100644 index 55a680eaa..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/TestSpringConfig.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.alibaba.cola; - -import com.alibaba.cola.boot.SpringBootstrap; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -/** - * TestSpringConfig - * - * @author Frank Zhang - * @date 2020-06-18 8:03 PM - */ -@Configuration -@ComponentScan(value = {"com.alibaba.cola","com.alibaba.cola.test"}) -@PropertySource(value = {"/sample.properties"}) -public class TestSpringConfig { - - @Bean(initMethod = "init") - public SpringBootstrap bootstrap() { - SpringBootstrap bootstrap = new SpringBootstrap(); - return bootstrap; - } - -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/CustomerCommandTest.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/CustomerCommandTest.java deleted file mode 100644 index 0650d0526..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/CustomerCommandTest.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.alibaba.cola.test; - -import com.alibaba.cola.TestSpringConfig; -import com.alibaba.cola.dto.Response; -import com.alibaba.cola.exception.BizException; -import com.alibaba.cola.extension.BizScenario; -import com.alibaba.cola.test.customer.*; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * CustomerCommandTest - * - * @author Frank Zhang 2018-01-06 7:55 PM - */ -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = {TestSpringConfig.class}) -public class CustomerCommandTest { - - @Rule - public ExpectedException exception = ExpectedException.none(); - - @Autowired - private CustomerServiceI customerService; - - @Value("${bizScenarioUniqueIdentity}") - private String bizCode; - - @Before - public void setUp() { - } - - @Test - public void testBizOneAddCustomerSuccess(){ - //1. Prepare - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - CustomerCO customerCO = new CustomerCO(); - customerCO.setCompanyName("alibaba"); - customerCO.setSource(Constants.SOURCE_RFQ); - customerCO.setCustomerType(CustomerType.IMPORTANT); - addCustomerCmd.setCustomerCO(customerCO); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_1); - addCustomerCmd.setBizScenario(scenario); - - //2. Execute - Response response = customerService.addCustomer(addCustomerCmd); - - //3. Expect Success - Assert.assertTrue(response.isSuccess()); - } - - @Test(expected = BizException.class) - public void testBizOneAddCustomerFailure(){ - //1. Prepare - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - CustomerCO customerCO = new CustomerCO(); - customerCO.setCompanyName("alibaba"); - customerCO.setSource(Constants.SOURCE_AD); - addCustomerCmd.setCustomerCO(customerCO); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_2); - addCustomerCmd.setBizScenario(scenario); - - //2. Execute - Response response = customerService.addCustomer(addCustomerCmd); - - //3. Expect exception - - } - - @Test - public void testBizTwoAddCustomer(){ - //1. Prepare - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - CustomerCO customerCO = new CustomerCO(); - customerCO.setCompanyName("alibaba"); - customerCO.setSource(Constants.SOURCE_AD); - customerCO.setCustomerType(CustomerType.IMPORTANT); - addCustomerCmd.setCustomerCO(customerCO); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_2); - addCustomerCmd.setBizScenario(scenario); - //2. Execute - Response response = customerService.addCustomer(addCustomerCmd); - - //3. Expect Success - Assert.assertTrue(response.isSuccess()); - } - - /* @Test - public void testCompanyTypeViolation(){ - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - CustomerCO customerCO = new CustomerCO(); - customerCO.setCompanyName("alibaba"); - customerCO.setSource(SourceType.AD.name()); - customerCO.setCustomerType(CustomerType.VIP); - addCustomerCmd.setCustomerCO(customerCO); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_1); - addCustomerCmd.setBizScenario(scenario); - Response response = customerService.addCustomer(addCustomerCmd); - - //Expect biz exception - Assert.assertFalse(response.isSuccess()); - Assert.assertEquals(response.getErrCode(), ColaErrorCode.BIZ_ERROR.getErrCode()); - } - */ - - -/* @Test - public void testParamValidationFail(){ - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_1); - addCustomerCmd.setBizScenario(scenario); - Response response = customerService.addCustomer(addCustomerCmd); - - //Expect parameter validation error - Assert.assertFalse(response.isSuccess()); - Assert.assertEquals(response.getErrCode(), ColaErrorCode.BIZ_ERROR.getErrCode()); - }*/ -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/EntityPrototypeTest.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/EntityPrototypeTest.java deleted file mode 100644 index 88a5670fd..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/EntityPrototypeTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.alibaba.cola.test; - -import com.alibaba.cola.TestSpringConfig; -import com.alibaba.cola.common.ApplicationContextHelper; -import com.alibaba.cola.test.customer.entity.CustomerEntity; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * EntityPrototypeTest - * - * @author Frank Zhang - * @date 2018-01-07 12:34 PM - */ - -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = {TestSpringConfig.class}) -public class EntityPrototypeTest { - - @Test - public void testPrototype(){ - CustomerEntity customerEntity1 = (CustomerEntity)ApplicationContextHelper.getBean(CustomerEntity.class); - System.out.println(customerEntity1); - CustomerEntity customerEntity2 = (CustomerEntity)ApplicationContextHelper.getBean(CustomerEntity.class); - System.out.println(customerEntity2); - - Assert.assertFalse(customerEntity1 == customerEntity2); //It should be different objects - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/ExtensionTest.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/ExtensionTest.java deleted file mode 100644 index 2a8fe1252..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/ExtensionTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.alibaba.cola.test; - -import com.alibaba.cola.TestSpringConfig; -import com.alibaba.cola.dto.Response; -import com.alibaba.cola.extension.BizScenario; -import com.alibaba.cola.test.customer.*; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import javax.annotation.Resource; - -/** - * ExtensionTest - * - * @author Frank Zhang - * @date 2020-08-20 12:45 PM - */ -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = {TestSpringConfig.class}) -public class ExtensionTest { - - @Resource - private CustomerServiceI customerService; - - @Test - public void testBiz1UseCase1Scenario1AddCustomerSuccess(){ - //1. Prepare - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - CustomerCO customerCO = new CustomerCO(); - customerCO.setCompanyName("alibaba"); - customerCO.setSource(Constants.SOURCE_RFQ); - customerCO.setCustomerType(CustomerType.IMPORTANT); - addCustomerCmd.setCustomerCO(customerCO); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_1, Constants.USE_CASE_1, Constants.SCENARIO_1); - addCustomerCmd.setBizScenario(scenario); - - //2. Execute - Response response = customerService.addCustomer(addCustomerCmd); - - //3. Expect Success - Assert.assertTrue(response.isSuccess()); - } - - @Test - public void testBiz1UseCase1AddCustomerSuccess(){ - //1. Prepare - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - CustomerCO customerCO = new CustomerCO(); - customerCO.setCompanyName("alibaba"); - customerCO.setSource(Constants.SOURCE_RFQ); - customerCO.setCustomerType(CustomerType.IMPORTANT); - addCustomerCmd.setCustomerCO(customerCO); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_1, Constants.USE_CASE_1); - addCustomerCmd.setBizScenario(scenario); - - //2. Execute - Response response = customerService.addCustomer(addCustomerCmd); - - //3. Expect Success - Assert.assertTrue(response.isSuccess()); - } - - @Test - public void testBiz1AddCustomerSuccess(){ - //1. Prepare - AddCustomerCmd addCustomerCmd = new AddCustomerCmd(); - CustomerCO customerCO = new CustomerCO(); - customerCO.setCompanyName("jingdong"); - customerCO.setSource(Constants.SOURCE_RFQ); - customerCO.setCustomerType(CustomerType.IMPORTANT); - addCustomerCmd.setCustomerCO(customerCO); - BizScenario scenario = BizScenario.valueOf(Constants.BIZ_1); - addCustomerCmd.setBizScenario(scenario); - - //2. Execute - Response response = customerService.addCustomer(addCustomerCmd); - - //3. Expect Success - Assert.assertTrue(response.isSuccess()); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/SpringConfigTest.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/SpringConfigTest.java deleted file mode 100644 index 347befe8c..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/SpringConfigTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.cola.test; - -import com.alibaba.cola.TestSpringConfig; -import com.alibaba.cola.boot.SpringBootstrap; -import com.alibaba.cola.logger.LoggerFactory; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; - -/** - * SpringConfigTest - * - * @author Frank Zhang - * @date 2020-06-18 8:09 PM - */ -public class SpringConfigTest { - public static void main(String[] args) { - LoggerFactory.activateSysLogger(); - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TestSpringConfig.class); - SpringBootstrap bootstrap = (SpringBootstrap)context.getBean("bootstrap"); - System.out.println(bootstrap); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmd.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmd.java deleted file mode 100644 index 3461c5015..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmd.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.alibaba.cola.test.customer; - - -import com.alibaba.cola.dto.Command; - -/** - * AddCustomerCmd - * - * @author Frank Zhang 2018-01-06 7:28 PM - */ -public class AddCustomerCmd extends Command { - - - public CustomerCO getCustomerCO() { - return customerCO; - } - - public void setCustomerCO(CustomerCO customerCO) { - this.customerCO = customerCO; - } - - private CustomerCO customerCO; - - -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmdExe.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmdExe.java deleted file mode 100644 index 1c0b3dc83..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/AddCustomerCmdExe.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.alibaba.cola.test.customer; - -import com.alibaba.cola.dto.Response; -import com.alibaba.cola.extension.ExtensionExecutor; -import com.alibaba.cola.logger.Logger; -import com.alibaba.cola.logger.LoggerFactory; -import com.alibaba.cola.test.customer.convertor.CustomerConvertorExtPt; -import com.alibaba.cola.test.customer.entity.CustomerEntity; -import com.alibaba.cola.test.customer.validator.extensionpoint.AddCustomerValidatorExtPt; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * AddCustomerCmdExe - * - * @author Frank Zhang 2018-01-06 7:48 PM - */ -@Component -public class AddCustomerCmdExe { - - private Logger logger = LoggerFactory.getLogger(AddCustomerCmd.class); - - @Resource - private ExtensionExecutor extensionExecutor; - - @Resource - private DomainEventPublisher domainEventPublisher; - - - public Response execute(AddCustomerCmd cmd) { - logger.info("Start processing command:" + cmd); - - //validation - extensionExecutor.executeVoid(AddCustomerValidatorExtPt.class, cmd.getBizScenario(), extension -> extension.validate(cmd)); - - //Convert CO to Entity - CustomerEntity customerEntity = extensionExecutor.execute(CustomerConvertorExtPt.class, cmd.getBizScenario(), extension -> extension.clientToEntity(cmd)); - - //Call Domain Entity for business logic processing - logger.info("Call Domain Entity for business logic processing..."+customerEntity); - customerEntity.addNewCustomer(); - - //domainEventPublisher.publish(new CustomerCreatedEvent()); - logger.info("End processing command:" + cmd); - return Response.buildSuccess(); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/Constants.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/Constants.java deleted file mode 100644 index 75f0eb917..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/Constants.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.alibaba.cola.test.customer; - -/** - * Constants - * - * @author Frank Zhang - * @date 2018-01-07 1:23 AM - */ -public class Constants { - - public static final String BIZ_1 = "BIZ_ONE"; - public static final String USE_CASE_1 = "USE_CASE_ONE"; - public static final String SCENARIO_1 = "SCENARIO_ONE"; - public static final String BIZ_2 = "BIZ_TWO"; - - - public static final String SOURCE_AD = "Advertisement"; - public static final String SOURCE_WB = "Web site"; - public static final String SOURCE_RFQ = "Request For Quota"; - public static final String SOURCE_MARKETING = "Marketing"; - public static final String SOURCE_OFFLINE = "Off Line"; -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCO.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCO.java deleted file mode 100644 index d80cbe437..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCO.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.alibaba.cola.test.customer; - -import com.alibaba.cola.dto.ClientObject; - - -/** - * CustomerCO - * - * @author Frank Zhang 2018-01-06 7:30 PM - */ -public class CustomerCO extends ClientObject{ - - private String companyName; - private String source; //advertisement, p4p, RFQ, ATM - private CustomerType customerType; //potential, intentional, important, vip - - public String getCompanyName() { - return companyName; - } - - public void setCompanyName(String companyName) { - this.companyName = companyName; - } - - public String getSource() { - return source; - } - - public void setSource(String source) { - this.source = source; - } - - public CustomerType getCustomerType() { - return customerType; - } - - public void setCustomerType(CustomerType customerType) { - this.customerType = customerType; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEvent.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEvent.java deleted file mode 100644 index 262b6c302..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.alibaba.cola.test.customer; - -/** - * CustomerCreatedEvent - * - * @author Frank Zhang - * @date 2020-06-22 6:59 PM - */ -public class CustomerCreatedEvent { -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEventHandler.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEventHandler.java deleted file mode 100644 index 4d054cdc4..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerCreatedEventHandler.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.alibaba.cola.test.customer; - -import com.alibaba.cola.dto.Response; - -/** - * CustomerCreatedEventHandler - * - * @author Frank Zhang - * @date 2020-06-22 7:00 PM - */ -public class CustomerCreatedEventHandler { - - public Response execute(CustomerCreatedEvent customerCreatedEvent) { - System.out.println("customerCreatedEvent processed"); - return null; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerDO.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerDO.java deleted file mode 100644 index 2b79c3283..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerDO.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.alibaba.cola.test.customer; - -/** - * CustomerDO - * - * @author Frank Zhang - * @date 2018-01-08 1:45 PM - */ - -public class CustomerDO implements java.io.Serializable { - private String customerId; - private String memberId; - private String globalId; - private String companyName; - private String source; - private String companyType; - - public String getCustomerId() { - return customerId; - } - - public void setCustomerId(String customerId) { - this.customerId = customerId; - } - - public String getMemberId() { - return memberId; - } - - public void setMemberId(String memberId) { - this.memberId = memberId; - } - - public String getGlobalId() { - return globalId; - } - - public void setGlobalId(String globalId) { - this.globalId = globalId; - } - - public String getCompanyName() { - return companyName; - } - - public void setCompanyName(String companyName) { - this.companyName = companyName; - } - - public String getSource() { - return source; - } - - public void setSource(String source) { - this.source = source; - } - - public String getCompanyType() { - return companyType; - } - - public void setCompanyType(String companyType) { - this.companyType = companyType; - } -} \ No newline at end of file diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceI.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceI.java deleted file mode 100644 index 313cd1dff..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceI.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.alibaba.cola.test.customer; - -import com.alibaba.cola.dto.Response; -import com.alibaba.cola.dto.SingleResponse; - -/** - * CustomerServiceI - * - * @author Frank Zhang 2018-01-06 7:24 PM - */ -public interface CustomerServiceI { - public Response addCustomer(AddCustomerCmd addCustomerCmd); - public SingleResponse getCustomer(GetOneCustomerQry getOneCustomerQry); -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceImpl.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceImpl.java deleted file mode 100644 index b3a1f9f79..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerServiceImpl.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.alibaba.cola.test.customer; - -import com.alibaba.cola.dto.Response; -import com.alibaba.cola.dto.SingleResponse; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -/** - * CustomerServiceImpl - * - * @author Frank Zhang 2018-01-06 7:40 PM - */ -@Service -public class CustomerServiceImpl implements CustomerServiceI{ - - @Resource - private AddCustomerCmdExe addCustomerCmdExe; - - @Resource - private GetOneCustomerQryExe getOneCustomerQryExe; - - - @Override - public Response addCustomer(AddCustomerCmd addCustomerCmd) { - return addCustomerCmdExe.execute(addCustomerCmd); - } - - @Override - public SingleResponse getCustomer(GetOneCustomerQry getOneCustomerQry) { - return getOneCustomerQryExe.execute(getOneCustomerQry); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerType.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerType.java deleted file mode 100644 index 67f0669e4..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/CustomerType.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.alibaba.cola.test.customer; - -/** - * CustomerType - * - * @author Frank Zhang 2018-01-06 7:35 PM - */ -public enum CustomerType { - POTENTIAL, - INTENTIONAL, - IMPORTANT, - VIP; -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/DomainEventPublisher.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/DomainEventPublisher.java deleted file mode 100644 index bb181944e..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/DomainEventPublisher.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.alibaba.cola.test.customer; - -import org.springframework.stereotype.Component; - -/** - * DomainEventPublisher - * - * @author Frank Zhang - * @date 2020-06-22 7:04 PM - */ -@Component -public class DomainEventPublisher { -/* @Resource - private EventBusI eventBus; - - public void publish(DomainEventI domainEvent) { - eventBus.fire(domainEvent); - }*/ -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQry.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQry.java deleted file mode 100644 index 9eab312d3..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQry.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.alibaba.cola.test.customer; - -import com.alibaba.cola.dto.Query; - -/** - * GetOneCustomerQry - * - * @author Frank Zhang 2018-01-06 7:38 PM - */ -public class GetOneCustomerQry extends Query{ - private long customerId; - private String companyName; - - public long getCustomerId() { - return customerId; - } - - public void setCustomerId(long customerId) { - this.customerId = customerId; - } - - public String getCompanyName() { - return companyName; - } - - public void setCompanyName(String companyName) { - this.companyName = companyName; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQryExe.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQryExe.java deleted file mode 100644 index 18223008f..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/GetOneCustomerQryExe.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.alibaba.cola.test.customer; - -import com.alibaba.cola.dto.SingleResponse; -import org.springframework.stereotype.Component; - -/** - * GetOneCustomerQryExe - * - * @author Frank Zhang - * @date 2020-06-22 5:12 PM - */ -@Component -public class GetOneCustomerQryExe { - - public SingleResponse execute(GetOneCustomerQry getOneCustomerQry){ - return null; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizOneConvertorExt.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizOneConvertorExt.java deleted file mode 100644 index 5371cd8c7..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizOneConvertorExt.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.alibaba.cola.test.customer.convertor; - -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.CustomerCO; -import com.alibaba.cola.test.customer.entity.CustomerEntity; -import com.alibaba.cola.test.customer.entity.SourceType; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * CustomerBizOneConvertorExt - * - * @author Frank Zhang - * @date 2018-01-07 3:05 AM - */ -@Extension(bizId = Constants.BIZ_1) -public class CustomerBizOneConvertorExt implements CustomerConvertorExtPt{ - - @Autowired - private CustomerConvertor customerConvertor;//Composite basic convertor to do basic conversion - - @Override - public CustomerEntity clientToEntity(AddCustomerCmd addCustomerCmd){ - CustomerEntity customerEntity = customerConvertor.clientToEntity(addCustomerCmd); - CustomerCO customerCO=addCustomerCmd.getCustomerCO(); - //In this business, AD and RFQ are regarded as different source - if(Constants.SOURCE_AD.equals(customerCO.getSource())) - { - customerEntity.setSourceType(SourceType.AD); - } - if (Constants.SOURCE_RFQ.equals(customerCO.getSource())){ - customerEntity.setSourceType(SourceType.RFQ); - } - return customerEntity; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizTwoConvertorExt.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizTwoConvertorExt.java deleted file mode 100644 index 3fe87ccbe..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerBizTwoConvertorExt.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.alibaba.cola.test.customer.convertor; - -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.entity.CustomerEntity; -import com.alibaba.cola.test.customer.entity.SourceType; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * CustomerBizTwoConvertorExt - * - * @author Frank Zhang - * @date 2018-01-07 3:05 AM - */ -@Extension(bizId = Constants.BIZ_2) -public class CustomerBizTwoConvertorExt implements CustomerConvertorExtPt{ - - @Autowired - private CustomerConvertor customerConvertor;//Composite basic convertor to do basic conversion - - @Override - public CustomerEntity clientToEntity(AddCustomerCmd addCustomerCmd){ - CustomerEntity customerEntity = customerConvertor.clientToEntity(addCustomerCmd); - //In this business, if customers from RFQ and Advertisement are both regarded as Advertisement - if(Constants.SOURCE_AD.equals(addCustomerCmd.getCustomerCO().getSource()) || Constants.SOURCE_RFQ.equals(addCustomerCmd.getCustomerCO().getSource())) - { - customerEntity.setSourceType(SourceType.AD); - } - return customerEntity; - } - -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertor.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertor.java deleted file mode 100644 index 01c7b7473..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertor.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.alibaba.cola.test.customer.convertor; - -import com.alibaba.cola.common.ApplicationContextHelper; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.CustomerCO; -import com.alibaba.cola.test.customer.entity.CustomerEntity; -import org.springframework.stereotype.Component; - -/** - * CustomerConvertor - * - * @author Frank Zhang - * @date 2018-01-07 3:08 AM - */ -@Component -public class CustomerConvertor{ - - public CustomerEntity clientToEntity(Object clientObject){ - AddCustomerCmd addCustomerCmd = (AddCustomerCmd)clientObject; - CustomerCO customerCO=addCustomerCmd.getCustomerCO(); - CustomerEntity customerEntity = (CustomerEntity)ApplicationContextHelper.getBean(CustomerEntity.class); - customerEntity.setCompanyName(customerCO.getCompanyName()); - customerEntity.setCustomerType(customerCO.getCustomerType()); - customerEntity.setBizScenario(addCustomerCmd.getBizScenario()); - return customerEntity; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertorExtPt.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertorExtPt.java deleted file mode 100644 index 2de901d0e..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/convertor/CustomerConvertorExtPt.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.alibaba.cola.test.customer.convertor; - -import com.alibaba.cola.extension.ExtensionPointI; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.entity.CustomerEntity; - -/** - * CustomerConvertorExtPt - * - * @author Frank Zhang - * @date 2018-01-07 2:37 AM - */ -public interface CustomerConvertorExtPt extends ExtensionPointI { - - public CustomerEntity clientToEntity(AddCustomerCmd addCustomerCmd); -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/CustomerEntity.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/CustomerEntity.java deleted file mode 100644 index 1c0fd80a4..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/CustomerEntity.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.alibaba.cola.test.customer.entity; - -import com.alibaba.cola.domain.Entity; -import com.alibaba.cola.domain.EntityObject; -import com.alibaba.cola.extension.ExtensionExecutor; -import com.alibaba.cola.test.customer.CustomerType; -import com.alibaba.cola.test.customer.entity.rule.CustomerRuleExtPt; -import com.alibaba.cola.test.customer.repository.CustomerRepository; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * Customer Entity - * - * @author Frank Zhang - * @date 2018-01-07 2:38 AM - */ -@Entity -public class CustomerEntity extends EntityObject { - - private String companyName; - private SourceType sourceType; - private CustomerType customerType; - - @Autowired - private CustomerRepository customerRepository; - @Autowired - private ExtensionExecutor extensionExecutor; - - public CustomerEntity() { - - } - - public void addNewCustomer() { - //Add customer policy - extensionExecutor.execute(CustomerRuleExtPt.class,this.getBizScenario(), extension -> extension.addCustomerCheck(this)); - - //Persist customer - customerRepository.persist(this); - - } - - public String getCompanyName() { - return companyName; - } - - public void setCompanyName(String companyName) { - this.companyName = companyName; - } - - public SourceType getSourceType() { - return sourceType; - } - - public void setSourceType(SourceType sourceType) { - this.sourceType = sourceType; - } - - public CustomerType getCustomerType() { - return customerType; - } - - public void setCustomerType(CustomerType customerType) { - this.customerType = customerType; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/SourceType.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/SourceType.java deleted file mode 100644 index 8b4062dfb..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/SourceType.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.alibaba.cola.test.customer.entity; - -/** - * SourceType - * - * @author Frank Zhang - * @date 2018-01-07 3:02 AM - */ -public enum SourceType { - AD, //Advertisement 广告 - WB, // Web site 网站 - RFQ; // Request For Quota 询盘 -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizOneRuleExt.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizOneRuleExt.java deleted file mode 100644 index 74ce15b2e..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizOneRuleExt.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.alibaba.cola.test.customer.entity.rule; - -import com.alibaba.cola.exception.BizException; -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.entity.CustomerEntity; -import com.alibaba.cola.test.customer.entity.SourceType; - -/** - * CustomerBizOneRuleExt - * - * @author Frank Zhang - * @date 2018-01-07 12:10 PM - */ -@Extension(bizId = Constants.BIZ_1) -public class CustomerBizOneRuleExt implements CustomerRuleExtPt{ - - @Override - public boolean addCustomerCheck(CustomerEntity customerEntity) { - if(SourceType.AD == customerEntity.getSourceType()){ - throw new BizException("Sorry, Customer from advertisement can not be added in this period"); - } - return true; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizTwoRuleExt.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizTwoRuleExt.java deleted file mode 100644 index 653a3c7a0..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerBizTwoRuleExt.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.cola.test.customer.entity.rule; - -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.entity.CustomerEntity; - -/** - * CustomerBizTwoRuleExt - * - * @author Frank Zhang - * @date 2018-01-07 12:10 PM - */ -@Extension(bizId = Constants.BIZ_2) -public class CustomerBizTwoRuleExt implements CustomerRuleExtPt{ - - @Override - public boolean addCustomerCheck(CustomerEntity customerEntity) { - //Any Customer can be added - return true; - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerRuleExtPt.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerRuleExtPt.java deleted file mode 100644 index 5cc01cf49..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/entity/rule/CustomerRuleExtPt.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.cola.test.customer.entity.rule; - -import com.alibaba.cola.extension.ExtensionPointI; -import com.alibaba.cola.test.customer.entity.CustomerEntity; - -/** - * CustomerRuleExtPt - * - * @author Frank Zhang - * @date 2018-01-07 12:03 PM - */ -public interface CustomerRuleExtPt extends ExtensionPointI{ - - //Different business check for different biz - public boolean addCustomerCheck(CustomerEntity customerEntity); - - //Different upgrade policy for different biz - default public void customerUpgradePolicy(CustomerEntity customerEntity){ - //Nothing special - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/repository/CustomerRepository.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/repository/CustomerRepository.java deleted file mode 100644 index c0a980824..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/repository/CustomerRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.alibaba.cola.test.customer.repository; - -import com.alibaba.cola.test.customer.entity.CustomerEntity; -import org.springframework.stereotype.Repository; - -/** - * CustomerRepository - * - * @author Frank Zhang - * @date 2018-01-07 11:59 AM - */ -@Repository -public class CustomerRepository { - - public void persist(CustomerEntity customerEntity){ - System.out.println("Persist customer to DB : "+ customerEntity); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Scenario1Validator.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Scenario1Validator.java deleted file mode 100644 index c8a8239d4..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Scenario1Validator.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.alibaba.cola.test.customer.validator.extension; - -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.validator.extensionpoint.AddCustomerValidatorExtPt; - -/** - * AddCustomerBiz1UseCase1Scenario1Validator - * - * @author Frank Zhang - * @date 2020-08-20 1:01 PM - */ -@Extension(bizId = Constants.BIZ_1, useCase = Constants.USE_CASE_1, scenario = Constants.SCENARIO_1) -public class AddCustomerBiz1UseCase1Scenario1Validator implements AddCustomerValidatorExtPt { - public void validate(AddCustomerCmd addCustomerCmd) { - System.out.println("Do validation for Biz_One's Use_Case_One's Scenario_One"); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Validator.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Validator.java deleted file mode 100644 index f2c5f8a52..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBiz1UseCase1Validator.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.cola.test.customer.validator.extension; - -import com.alibaba.cola.exception.BizException; -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.CustomerType; -import com.alibaba.cola.test.customer.validator.extensionpoint.AddCustomerValidatorExtPt; - -/** - * AddCustomerBiz1UseCase1Validator - * - * @author Frank Zhang - * @date 2020-08-20 12:58 PM - */ -@Extension(bizId = Constants.BIZ_1, useCase = Constants.USE_CASE_1) -public class AddCustomerBiz1UseCase1Validator implements AddCustomerValidatorExtPt { - public void validate(AddCustomerCmd addCustomerCmd) { - System.out.println("Do validation for Biz_One's Use_Case_One"); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizOneValidator.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizOneValidator.java deleted file mode 100644 index b784fa4ea..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizOneValidator.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.alibaba.cola.test.customer.validator.extension; - -import com.alibaba.cola.exception.BizException; -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.CustomerType; -import com.alibaba.cola.test.customer.validator.extensionpoint.AddCustomerValidatorExtPt; - -/** - * AddCustomerBizOneValidator - * - * @author Frank Zhang - * @date 2018-01-07 1:31 AM - */ -@Extension(bizId = Constants.BIZ_1) -public class AddCustomerBizOneValidator implements AddCustomerValidatorExtPt{ - - public void validate(AddCustomerCmd addCustomerCmd) { - //For BIZ TWO CustomerTYpe could not be VIP - if(CustomerType.VIP == addCustomerCmd.getCustomerCO().getCustomerType()) - throw new BizException("Customer Type could not be VIP for Biz One"); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizTwoValidator.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizTwoValidator.java deleted file mode 100644 index 320660515..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extension/AddCustomerBizTwoValidator.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.alibaba.cola.test.customer.validator.extension; - -import com.alibaba.cola.exception.BizException; -import com.alibaba.cola.extension.Extension; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.Constants; -import com.alibaba.cola.test.customer.validator.extensionpoint.AddCustomerValidatorExtPt; - -/** - * AddCustomerBizTwoValidator - * - * @author Frank Zhang - * @date 2018-01-07 1:31 AM - */ -@Extension(bizId = Constants.BIZ_2) -public class AddCustomerBizTwoValidator implements AddCustomerValidatorExtPt{ - - public void validate(AddCustomerCmd addCustomerCmd) { - //For BIZ TWO CustomerTYpe could not be null - if (addCustomerCmd.getCustomerCO().getCustomerType() == null) - throw new BizException("CustomerType could not be null"); - } -} diff --git a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extensionpoint/AddCustomerValidatorExtPt.java b/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extensionpoint/AddCustomerValidatorExtPt.java deleted file mode 100644 index 0a5637353..000000000 --- a/cola-framework-core/src/test/java/com/alibaba/cola/test/customer/validator/extensionpoint/AddCustomerValidatorExtPt.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.alibaba.cola.test.customer.validator.extensionpoint; - -import com.alibaba.cola.extension.ExtensionPointI; -import com.alibaba.cola.test.customer.AddCustomerCmd; -import com.alibaba.cola.test.customer.entity.CustomerEntity; - -/** - * AddCustomerValidatorExtPt - * - * @author Frank Zhang - * @date 2018-01-07 1:27 AM - */ -public interface AddCustomerValidatorExtPt extends ExtensionPointI { - - public void validate(AddCustomerCmd addCustomerCmd); -} diff --git a/cola-framework-core/src/test/resources/sample.properties b/cola-framework-core/src/test/resources/sample.properties deleted file mode 100644 index 9c246053e..000000000 --- a/cola-framework-core/src/test/resources/sample.properties +++ /dev/null @@ -1 +0,0 @@ -bizCode=BIZ_ONE diff --git a/cola-statemachine/pom.xml b/cola-statemachine/pom.xml deleted file mode 100644 index cba85ef6c..000000000 --- a/cola-statemachine/pom.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - 4.0.0 - com.aliyun - cola-statemachine - jar - 1.0.0 - - Cola-statemachine - https://github.com/alibaba/COLA - Cola statemachine - - - - sonatype-nexus-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - - sonatype-nexus-staging - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - GNU Lesser General Public License v2.1 - https://github.com/alibaba/COLA/blob/master/LICENSE - repo - - - - - scm:git:https://github.com/alibaba/COLA.git - scm:git:https://github.com/alibaba/COLA.git - https://github.com/alibaba/COLA - - - - - Frank - Frank Zhang - 25216348@qq.com - - - - - - - junit - junit - 4.12 - test - - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - verify - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.8 - 1.8 - UTF-8 - - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.0 - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - UTF-8 - none - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.8 - true - - sonatype-nexus-staging - https://oss.sonatype.org/ - true - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.2 - - - - diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Action.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Action.java deleted file mode 100644 index 8af4230ce..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Action.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.cola.statemachine; - -/** - * Generic strategy interface used by a state machine to respond - * events by executing an {@code Action} with a {@link StateContext}. - * - * @author Frank Zhang - * @date 2020-02-07 2:51 PM - */ -public interface Action { - -// /** -// * Execute action with a {@link StateContext}. -// * -// * @param context the state context -// */ -// void execute(StateContext context); - - public void execute(S from, S to, E event, C context); - -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Condition.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Condition.java deleted file mode 100644 index 9f2aa5593..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Condition.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.alibaba.cola.statemachine; - -/** - * Condition - * - * @author Frank Zhang - * @date 2020-02-07 2:50 PM - */ -public interface Condition { - - /** - * @param context context object - * @return whether the context satisfied current condition - */ - boolean isSatisfied(C context); - - default String name(){ - return this.getClass().getSimpleName(); - } -} \ No newline at end of file diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/State.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/State.java deleted file mode 100644 index adf5a7da6..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/State.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.alibaba.cola.statemachine; - -import com.alibaba.cola.statemachine.impl.TransitionType; - -import java.util.Collection; -import java.util.Optional; - -/** - * State - * - * @param the type of state - * @param the type of event - * - * @author Frank Zhang - * @date 2020-02-07 2:12 PM - */ -public interface State extends Visitable{ - - /** - * Gets the state identifier. - * - * @return the state identifiers - */ - S getId(); - - /** - * Add transition to the state - * @param event the event of the Transition - * @param target the target of the transition - * @return - */ - Transition addTransition(E event, State target, TransitionType transitionType); - - Optional> getTransition(E event); - - Collection> getTransitions(); - -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateContext.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateContext.java deleted file mode 100644 index 9491fa7b3..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateContext.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.alibaba.cola.statemachine; - -/** - * StateContext - * - * @author Frank Zhang - * @date 2020-02-07 2:49 PM - */ -public interface StateContext { - /** - * Gets the transition. - * - * @return the transition - */ - Transition getTransition(); - - /** - * Gets the state machine. - * - * @return the state machine - */ - StateMachine getStateMachine(); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachine.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachine.java deleted file mode 100644 index e99102f84..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachine.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.alibaba.cola.statemachine; - -/** - * StateMachine - * - * @author Frank Zhang - * - * @param the type of state - * @param the type of event - * @param the user defined context - * @date 2020-02-07 2:13 PM - */ -public interface StateMachine extends Visitable{ - - /** - * Send an event {@code E} to the state machine. - * - * @param sourceState the source state - * @param event the event to send - * @param ctx the user defined context - * @return the target state - */ - S fireEvent(S sourceState, E event, C ctx); - - /** - * MachineId is the identifier for a State Machine - * @return - */ - String getMachineId(); - - /** - * Use visitor pattern to display the structure of the state machine - */ - void showStateMachine(); - - String generatePlantUML(); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachineFactory.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachineFactory.java deleted file mode 100644 index b23594698..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/StateMachineFactory.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.alibaba.cola.statemachine; - -import com.alibaba.cola.statemachine.impl.StateMachineException; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * StateMachineFactory - * - * @author Frank Zhang - * @date 2020-02-08 10:21 PM - */ -public class StateMachineFactory { - static Map stateMachineMap = new ConcurrentHashMap<>(); - - public static void register(StateMachine stateMachine){ - String machineId = stateMachine.getMachineId(); - if(stateMachineMap.get(machineId) != null){ - throw new StateMachineException("The state machine with id ["+machineId+"] is already built, no need to build again"); - } - stateMachineMap.put(stateMachine.getMachineId(), stateMachine); - } - - public static StateMachine get(String machineId){ - StateMachine stateMachine = stateMachineMap.get(machineId); - if(stateMachine == null){ - throw new StateMachineException("There is no stateMachine instance for "+machineId+", please build it first"); - } - return stateMachine; - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Transition.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Transition.java deleted file mode 100644 index 945253b36..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Transition.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.alibaba.cola.statemachine; - -import com.alibaba.cola.statemachine.impl.TransitionType; - -/** - * {@code Transition} is something what a state machine associates with a state - * changes. - * - * @author Frank Zhang - * - * @param the type of state - * @param the type of event - * @param the type of user defined context, which is used to hold application data - * - * @date 2020-02-07 2:20 PM - */ -public interface Transition{ - /** - * Gets the source state of this transition. - * - * @return the source state - */ - State getSource(); - - void setSource(State state); - - E getEvent(); - - void setEvent(E event); - - void setType(TransitionType type); - /** - * Gets the target state of this transition. - * - * @return the target state - */ - State getTarget(); - - void setTarget(State state); - - /** - * Gets the guard of this transition. - * - * @return the guard - */ - Condition getCondition(); - - void setCondition(Condition condition); - - Action getAction(); - - void setAction(Action action); - - /** - * Do transition from source state to target state. - * - * @return the target state - */ - - State transit(C ctx); - /** - * Verify transition correctness - */ - void verify(); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitable.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitable.java deleted file mode 100644 index 73c78f422..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitable.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.alibaba.cola.statemachine; - -/** - * Visitable - * - * @author Frank Zhang - * @date 2020-02-08 8:41 PM - */ -public interface Visitable { - String accept(final Visitor visitor); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitor.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitor.java deleted file mode 100644 index 7326da2c8..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/Visitor.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.alibaba.cola.statemachine; - -/** - * Visitor - * - * @author Frank Zhang - * @date 2020-02-08 8:41 PM - */ -public interface Visitor { - - char LF = '\n'; - - /** - * @param visitable the element to be visited. - * @return - */ - String visitOnEntry(StateMachine visitable); - - /** - * @param visitable the element to be visited. - * @return - */ - String visitOnExit(StateMachine visitable); - - /** - * @param visitable the element to be visited. - * @return - */ - String visitOnEntry(State visitable); - - /** - * @param visitable the element to be visited. - * @return - */ - String visitOnExit(State visitable); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionBuilder.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionBuilder.java deleted file mode 100644 index 1ac4b0797..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionBuilder.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -/** - * ExternalTransitionBuilder - * - * @author Frank Zhang - * @date 2020-02-07 6:11 PM - */ -public interface ExternalTransitionBuilder { - /** - * Build transition source state. - * @param stateId id of state - * @return from clause builder - */ - From from(S stateId); - -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionsBuilder.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionsBuilder.java deleted file mode 100644 index c06c91794..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/ExternalTransitionsBuilder.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -/** - * ExternalTransitionsBuilder - * - * This builder is for multiple transitions, currently only support multiple sources <----> one target - * - * @author Frank Zhang - * @date 2020-02-08 7:41 PM - */ -public interface ExternalTransitionsBuilder { - From fromAmong(S... stateIds); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/From.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/From.java deleted file mode 100644 index df6f16be2..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/From.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -/** - * From - * - * @author Frank Zhang - * @date 2020-02-07 6:13 PM - */ -public interface From { - /** - * Build transition target state and return to clause builder - * @param stateId id of state - * @return To clause builder - */ - To to(S stateId); - -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/InternalTransitionBuilder.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/InternalTransitionBuilder.java deleted file mode 100644 index 37fa76071..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/InternalTransitionBuilder.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -/** - * InternalTransitionBuilder - * - * @author Frank Zhang - * @date 2020-02-07 9:39 PM - */ -public interface InternalTransitionBuilder { - /** - * Build a internal transition - * @param stateId id of transition - * @return To clause builder - */ - To within(S stateId); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/On.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/On.java deleted file mode 100644 index 9655d18fb..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/On.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -import com.alibaba.cola.statemachine.Condition; - -/** - * On - * - * @author Frank Zhang - * @date 2020-02-07 6:14 PM - */ -public interface On extends When{ - /** - * Add condition for the transition - * @param condition transition condition - * @return When clause builder - */ - When when(Condition condition); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilder.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilder.java deleted file mode 100644 index 029433e0c..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilder.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -import com.alibaba.cola.statemachine.StateMachine; - -/** - * StateMachineBuilder - * - * @author Frank Zhang - * @date 2020-02-07 5:32 PM - */ -public interface StateMachineBuilder { - /** - * Builder for one transition - * @return External transition builder - */ - ExternalTransitionBuilder externalTransition(); - - /** - * Builder for multiple transitions - * @return External transition builder - */ - ExternalTransitionsBuilder externalTransitions(); - - /** - * Start to build internal transition - * @return Internal transition builder - */ - InternalTransitionBuilder internalTransition(); - - StateMachine build(String machineId); - -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderFactory.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderFactory.java deleted file mode 100644 index e4dfc572d..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -/** - * StateMachineBuilderFactory - * - * @author Frank Zhang - * @date 2020-02-08 12:33 PM - */ -public class StateMachineBuilderFactory { - public static StateMachineBuilder create(){ - return new StateMachineBuilderImpl<>(); - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderImpl.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderImpl.java deleted file mode 100644 index 497cb9e3c..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/StateMachineBuilderImpl.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.StateMachine; -import com.alibaba.cola.statemachine.StateMachineFactory; -import com.alibaba.cola.statemachine.impl.StateMachineImpl; -import com.alibaba.cola.statemachine.impl.TransitionType; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * StateMachineBuilderImpl - * - * @author Frank Zhang - * @date 2020-02-07 9:40 PM - */ -public class StateMachineBuilderImpl implements StateMachineBuilder { - - /** - * StateMap is the same with stateMachine, as the core of state machine is holding reference to states. - */ - private final Map> stateMap = new ConcurrentHashMap<>(); - private final StateMachineImpl stateMachine = new StateMachineImpl<>(stateMap); - - @Override - public ExternalTransitionBuilder externalTransition() { - return new TransitionBuilderImpl<>(stateMap, TransitionType.EXTERNAL); - } - - @Override - public ExternalTransitionsBuilder externalTransitions() { - return new TransitionsBuilderImpl<>(stateMap, TransitionType.EXTERNAL); - } - - @Override - public InternalTransitionBuilder internalTransition() { - return new TransitionBuilderImpl<>(stateMap, TransitionType.INTERNAL); - } - - @Override - public StateMachine build(String machineId) { - stateMachine.setMachineId(machineId); - stateMachine.setReady(true); - StateMachineFactory.register(stateMachine); - return stateMachine; - } - -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/To.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/To.java deleted file mode 100644 index 615ffb927..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/To.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -/** - * To - * - * @author Frank Zhang - * @date 2020-02-07 6:14 PM - */ -public interface To { - /** - * Build transition event - * @param event transition event - * @return On clause builder - */ - On on(E event); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionBuilderImpl.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionBuilderImpl.java deleted file mode 100644 index 334ed0ffc..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionBuilderImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -import com.alibaba.cola.statemachine.Action; -import com.alibaba.cola.statemachine.Condition; -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.Transition; -import com.alibaba.cola.statemachine.impl.StateHelper; -import com.alibaba.cola.statemachine.impl.TransitionType; - -import java.util.Map; - -/** - * TransitionBuilderImpl - * - * @author Frank Zhang - * @date 2020-02-07 10:20 PM - */ -class TransitionBuilderImpl implements ExternalTransitionBuilder, InternalTransitionBuilder, From, On, To { - - final Map> stateMap; - - private State source; - - protected State target; - - private Transition transition; - - final TransitionType transitionType; - - public TransitionBuilderImpl(Map> stateMap, TransitionType transitionType) { - this.stateMap = stateMap; - this.transitionType = transitionType; - } - - @Override - public From from(S stateId) { - source = StateHelper.getState(stateMap, stateId); - return this; - } - - @Override - public To to(S stateId) { - target = StateHelper.getState(stateMap, stateId); - return this; - } - - @Override - public To within(S stateId) { - source = target = StateHelper.getState(stateMap, stateId); - return this; - } - - @Override - public When when(Condition condition) { - transition.setCondition(condition); - return this; - } - - @Override - public On on(E event) { - transition = source.addTransition(event, target, transitionType); - return this; - } - - @Override - public void perform(Action action) { - transition.setAction(action); - } - - -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionsBuilderImpl.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionsBuilderImpl.java deleted file mode 100644 index 3327cddd7..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/TransitionsBuilderImpl.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -import com.alibaba.cola.statemachine.Action; -import com.alibaba.cola.statemachine.Condition; -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.Transition; -import com.alibaba.cola.statemachine.impl.StateHelper; -import com.alibaba.cola.statemachine.impl.TransitionType; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * TransitionsBuilderImpl - * - * @author Frank Zhang - * @date 2020-02-08 7:43 PM - */ -public class TransitionsBuilderImpl extends TransitionBuilderImpl implements ExternalTransitionsBuilder { - /** - * This is for fromAmong where multiple sources can be configured to point to one target - */ - private List> sources = new ArrayList<>(); - - private List> transitions = new ArrayList<>(); - - public TransitionsBuilderImpl(Map> stateMap, TransitionType transitionType) { - super(stateMap, transitionType); - } - - @Override - public From fromAmong(S... stateIds) { - for(S stateId : stateIds) { - sources.add(StateHelper.getState(super.stateMap, stateId)); - } - return this; - } - - @Override - public On on(E event) { - for(State source : sources) { - Transition transition = source.addTransition(event, super.target, super.transitionType); - transitions.add(transition); - } - return this; - } - - @Override - public When when(Condition condition) { - for(Transition transition : transitions){ - transition.setCondition(condition); - } - return this; - } - - @Override - public void perform(Action action) { - for(Transition transition : transitions){ - transition.setAction(action); - } - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/When.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/When.java deleted file mode 100644 index 9dbc93e16..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/When.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.alibaba.cola.statemachine.builder; - -import com.alibaba.cola.statemachine.Action; - -/** - * When - * - * @author Frank Zhang - * @date 2020-02-07 9:33 PM - */ -public interface When{ - /** - * Define action to be performed during transition - * - * @param action performed action - */ - void perform(Action action); -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/package-info.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/package-info.java deleted file mode 100644 index d74ce6d2f..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/builder/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * The builder is to provide fluent interfaces for statemachine, which is a classic Internal DSL implementing skill. - * - * For more information, please check Martin Fowler's Article: https://martinfowler.com/bliki/FluentInterface.html - * @author Frank Zhang - */ -package com.alibaba.cola.statemachine.builder; \ No newline at end of file diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/Debugger.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/Debugger.java deleted file mode 100644 index 5453763fb..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/Debugger.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -/** - * Debugger, This is used to decouple Logging framework dependency - * - * @author Frank Zhang - * @date 2020-02-11 11:08 AM - */ -public class Debugger { - - private static boolean isDebugOn = false; - - public static void debug(String message){ - if(isDebugOn){ - System.out.println(message); - } - } - - public static void enableDebug(){ - isDebugOn = true; - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/PlantUMLVisitor.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/PlantUMLVisitor.java deleted file mode 100644 index c35b6b17f..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/PlantUMLVisitor.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.StateMachine; -import com.alibaba.cola.statemachine.Transition; -import com.alibaba.cola.statemachine.Visitor; - -/** - * PlantUMLVisitor - * - * @author Frank Zhang - * @date 2020-02-09 7:47 PM - */ -public class PlantUMLVisitor implements Visitor { - - /** - * Since the state machine is stateless, there is no initial state. - * - * You have to add "[*] -> initialState" to mark it as a state machine diagram. - * otherwise it will be recognized as a sequence diagram. - * - * @param visitable the element to be visited. - * @return - */ - @Override - public String visitOnEntry(StateMachine visitable) { - return "@startuml" + LF; - } - - @Override - public String visitOnExit(StateMachine visitable) { - return "@enduml"; - } - - @Override - public String visitOnEntry(State state) { - StringBuilder sb = new StringBuilder(); - for(Transition transition: state.getTransitions()){ - sb.append(transition.getSource().getId()) - .append(" --> ") - .append(transition.getTarget().getId()) - .append(" : ") - .append(transition.getEvent()) - .append(LF); - } - return sb.toString(); - } - - @Override - public String visitOnExit(State state) { - return ""; - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateHelper.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateHelper.java deleted file mode 100644 index 46b348df4..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateHelper.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -import com.alibaba.cola.statemachine.State; - -import java.util.Map; - -/** - * StateHelper - * - * @author Frank Zhang - * @date 2020-02-08 4:23 PM - */ -public class StateHelper { - public static State getState(Map> stateMap, S stateId){ - State state = stateMap.get(stateId); - if (state == null) { - state = new StateImpl<>(stateId); - stateMap.put(stateId, state); - } - return state; - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateImpl.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateImpl.java deleted file mode 100644 index 6b7bc96f0..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.Transition; -import com.alibaba.cola.statemachine.Visitor; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Optional; - -/** - * StateImpl - * - * @author Frank Zhang - * @date 2020-02-07 11:19 PM - */ -public class StateImpl implements State { - protected final S stateId; - private HashMap> transitions = new HashMap<>(); - - StateImpl(S stateId){ - this.stateId = stateId; - } - - @Override - public Transition addTransition(E event, State target, TransitionType transitionType) { - Transition newTransition = new TransitionImpl<>(); - newTransition.setSource(this); - newTransition.setTarget(target); - newTransition.setEvent(event); - newTransition.setType(transitionType); - - Debugger.debug("Begin to add new transition: "+ newTransition); - verify(event, newTransition); - transitions.put(event, newTransition); - return newTransition; - } - - /** - * Per one source and target state, there is only one transition is allowed - * @param event - * @param newTransition - */ - private void verify(E event, Transition newTransition) { - Transition existingTransition = transitions.get(event); - if(existingTransition != null){ - if(existingTransition.equals(newTransition)){ - throw new StateMachineException(existingTransition+" already Exist, you can not add another one"); - } - } - } - - @Override - public Optional> getTransition(E event) { - return Optional.ofNullable(transitions.get(event)); - } - - @Override - public Collection> getTransitions() { - return transitions.values(); - } - - @Override - public S getId() { - return stateId; - } - - @Override - public String accept(Visitor visitor) { - String entry = visitor.visitOnEntry(this); - String exit = visitor.visitOnExit(this); - return entry + exit; - } - - @Override - public boolean equals(Object anObject){ - if(anObject instanceof State){ - State other = (State)anObject; - if(this.stateId.equals(other.getId())) - return true; - } - return false; - } - - @Override - public String toString(){ - return stateId.toString(); - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineException.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineException.java deleted file mode 100644 index 19e0b570f..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineException.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -/** - * StateMachineException - * - * @author Frank Zhang - * @date 2020-02-08 5:28 PM - */ -public class StateMachineException extends RuntimeException{ - public StateMachineException(String message){ - super(message); - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineImpl.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineImpl.java deleted file mode 100644 index b2b5d28b7..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/StateMachineImpl.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.StateMachine; -import com.alibaba.cola.statemachine.Transition; -import com.alibaba.cola.statemachine.Visitor; - -import java.util.Map; -import java.util.Optional; - -/** - * For performance consideration, - * The state machine is made "stateless" on purpose. - * Once it's built, it can be shared by multi-thread - * - * One side effect is since the state machine is stateless, we can not get current state from State Machine. - * - * @author Frank Zhang - * @date 2020-02-07 5:40 PM - */ -public class StateMachineImpl implements StateMachine { - - private String machineId; - - private final Map> stateMap; - - private boolean ready; - - public StateMachineImpl(Map> stateMap){ - this.stateMap = stateMap; - } - - public S fireEvent(S sourceStateId, E event, C ctx){ - isReady(); - State sourceState = getState(sourceStateId); - return doTransition(sourceState, event, ctx).getId(); - } - - private State doTransition(State sourceState, E event, C ctx) { - Optional> transition = sourceState.getTransition(event); - if(transition.isPresent()){ - return transition.get().transit(ctx); - } - Debugger.debug("There is no Transition for " + event); - return sourceState; - } - - private State getState(S currentStateId) { - State state = StateHelper.getState(stateMap, currentStateId); - if(state == null){ - showStateMachine(); - throw new StateMachineException(currentStateId + " is not found, please check state machine"); - } - return state; - } - - private void isReady() { - if(!ready){ - throw new StateMachineException("State machine is not built yet, can not work"); - } - } - - @Override - public String accept(Visitor visitor) { - StringBuilder sb = new StringBuilder(); - sb.append(visitor.visitOnEntry(this)); - for(State state: stateMap.values()){ - sb.append(state.accept(visitor)); - } - sb.append(visitor.visitOnExit(this)); - return sb.toString(); - } - - @Override - public void showStateMachine() { - SysOutVisitor sysOutVisitor = new SysOutVisitor(); - accept(sysOutVisitor); - } - - @Override - public String generatePlantUML(){ - PlantUMLVisitor plantUMLVisitor = new PlantUMLVisitor(); - return accept(plantUMLVisitor); - } - - @Override - public String getMachineId() { - return machineId; - } - - public void setMachineId(String machineId) { - this.machineId = machineId; - } - - public void setReady(boolean ready) { - this.ready = ready; - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/SysOutVisitor.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/SysOutVisitor.java deleted file mode 100644 index 83dbb916e..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/SysOutVisitor.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.StateMachine; -import com.alibaba.cola.statemachine.Transition; -import com.alibaba.cola.statemachine.Visitor; - -/** - * SysOutVisitor - * - * @author Frank Zhang - * @date 2020-02-08 8:48 PM - */ -public class SysOutVisitor implements Visitor { - - @Override - public String visitOnEntry(StateMachine stateMachine) { - String entry = "-----StateMachine:"+stateMachine.getMachineId()+"-------"; - System.out.println(entry); - return entry; - } - - @Override - public String visitOnExit(StateMachine stateMachine) { - String exit = "------------------------"; - System.out.println(exit); - return exit; - } - - @Override - public String visitOnEntry(State state) { - StringBuilder sb = new StringBuilder(); - String stateStr = "State:"+state.getId(); - sb.append(stateStr).append(LF); - System.out.println(stateStr); - for(Transition transition: state.getTransitions()){ - String transitionStr = " Transition:"+transition; - sb.append(transitionStr).append(LF); - System.out.println(transitionStr); - } - return sb.toString(); - } - - @Override - public String visitOnExit(State visitable) { - return ""; - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionImpl.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionImpl.java deleted file mode 100644 index 357299e5f..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionImpl.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -import com.alibaba.cola.statemachine.Action; -import com.alibaba.cola.statemachine.Condition; -import com.alibaba.cola.statemachine.State; -import com.alibaba.cola.statemachine.Transition; - -/** - * TransitionImpl。 - * - * This should be designed to be immutable, so that there is no thread-safe risk - * - * @author Frank Zhang - * @date 2020-02-07 10:32 PM - */ -public class TransitionImpl implements Transition { - - private State source; - - private State target; - - private E event; - - private Condition condition; - - private Action action; - - private TransitionType type = TransitionType.EXTERNAL; - - @Override - public State getSource() { - return source; - } - - @Override - public void setSource(State state) { - this.source = state; - } - - @Override - public E getEvent() { - return this.event; - } - - @Override - public void setEvent(E event) { - this.event = event; - } - - @Override - public void setType(TransitionType type) { - this.type = type; - } - - @Override - public State getTarget() { - return this.target; - } - - @Override - public void setTarget(State target) { - this.target = target; - } - - @Override - public Condition getCondition() { - return this.condition; - } - - @Override - public void setCondition(Condition condition) { - this.condition = condition; - } - - @Override - public Action getAction() { - return this.action; - } - - @Override - public void setAction(Action action) { - this.action = action; - } - - @Override - public State transit(C ctx) { - Debugger.debug("Do transition: "+this); - this.verify(); - if(condition == null || condition.isSatisfied(ctx)){ - if(action != null){ - action.execute(source.getId(), target.getId(), event, ctx); - } - return target; - } - - Debugger.debug("Condition is not satisfied, stay at the "+source+" state "); - return source; - } - - @Override - public final String toString() { - return source + "-[" + event.toString() +", "+type+"]->" + target; - } - - @Override - public boolean equals(Object anObject){ - if(anObject instanceof Transition){ - Transition other = (Transition)anObject; - if(this.event.equals(other.getEvent()) - && this.source.equals(other.getSource()) - && this.target.equals(other.getTarget())){ - return true; - } - } - return false; - } - - @Override - public void verify() { - if(type== TransitionType.INTERNAL && source != target) { - throw new StateMachineException(String.format("Internal transition source state '%s' " + - "and target state '%s' must be same.", source, target)); - } - } -} diff --git a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionType.java b/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionType.java deleted file mode 100644 index ff7ae8bfd..000000000 --- a/cola-statemachine/src/main/java/com/alibaba/cola/statemachine/impl/TransitionType.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.alibaba.cola.statemachine.impl; - -/** - * TransitionType - * - * @author Frank Zhang - * @date 2020-02-07 10:23 PM - */ -public enum TransitionType { - /** - * Implies that the Transition, if triggered, occurs without exiting or entering the source State - * (i.e., it does not cause a state change). This means that the entry or exit condition of the source - * State will not be invoked. An internal Transition can be taken even if the SateMachine is in one or - * more Regions nested within the associated State. - */ - INTERNAL, - /** - * Implies that the Transition, if triggered, will not exit the composite (source) State, but it - * will exit and re-enter any state within the composite State that is in the current state configuration. - */ - LOCAL, - /** - * Implies that the Transition, if triggered, will exit the composite (source) State. - */ - EXTERNAL -} diff --git a/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachinePlantUMLTest.java b/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachinePlantUMLTest.java deleted file mode 100644 index 84e02d4d6..000000000 --- a/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachinePlantUMLTest.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.alibaba.cola.test; - -import com.alibaba.cola.statemachine.Action; -import com.alibaba.cola.statemachine.Condition; -import com.alibaba.cola.statemachine.StateMachine; -import com.alibaba.cola.statemachine.builder.StateMachineBuilder; -import com.alibaba.cola.statemachine.builder.StateMachineBuilderFactory; -import com.alibaba.cola.statemachine.impl.Debugger; -import org.junit.Before; -import org.junit.Test; - -import java.util.stream.Stream; - -import static com.alibaba.cola.test.StateMachinePlantUMLTest.PriceAdjustmentTaskEventEnum.*; -import static com.alibaba.cola.test.StateMachinePlantUMLTest.PriceAdjustmentTaskStatusEnum.*; - -/** - * StateMachinePlantUMLTest - * - * @author Frank Zhang - * @date 2020-02-09 7:53 PM - */ -public class StateMachinePlantUMLTest { - - static enum PriceAdjustmentTaskStatusEnum { - /** - * 开始状态 - */ - None, - /** - * 待商家处理 - */ - Supplier_Processing, - /** - * 待控商小二处理 - */ - Supplier_Manager_Processing, - /** - * 待价格管控小二处理 - */ - Price_Manager_Processing, - /** - * 退出 - */ - Closed - } - - static enum PriceAdjustmentTaskEventEnum { - - // 系统事件 - Create, - Normal_Update, - /** - * 合理价变更 - */ - P0_Changed, - /** - * 页面价变合理 - */ - Page_Price_changed, - - // 商家事件 - Supplier_Reject, - Supplier_Agree, - Supplier_Timeout, - - // 控商小二事件 - Apply_Over_P0_Sell, - - // 价格小二事件 - Agree_Over_P0_Sell, - Reject_Over_P0_Sell; - - public boolean isSupplierTimeout() { - return this == Supplier_Timeout; - } - - public boolean isSystemEvent(){ - return this == Create || - this == Normal_Update || - this == P0_Changed || - this == Page_Price_changed; - } - } - - @Before - public void init(){ - Debugger.enableDebug(); - } - - @Test - public void testPlantUML(){ - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - - builder.externalTransition() - .from(None) - .to(Supplier_Processing) - .on(Create) - .when(checkCondition()) - .perform(doAction()); - - // 商家调价 - Stream.of(Supplier_Processing, Supplier_Manager_Processing, Price_Manager_Processing) - .forEach(status -> - builder.externalTransition() - .from(status) - .to(Closed) - .on(Supplier_Agree) - .when(checkCondition()) - .perform(doAction()) - ); - - // 商家 -上升至-> 控商小二 - builder.externalTransition() - .from(Supplier_Processing) - .to(Supplier_Manager_Processing) - .on(Supplier_Reject) - .when(checkCondition()) - .perform(doAction()); - - builder.externalTransition() - .from(Supplier_Processing) - .to(Supplier_Manager_Processing) - .on(Supplier_Timeout) - .when(checkCondition()) - .perform(doAction()); - - // 申请申请高于P0售卖 - builder.externalTransition() - .from(Supplier_Manager_Processing) - .to(Price_Manager_Processing) - .on(Apply_Over_P0_Sell) - .when(checkCondition()) - .perform(doAction()); - - // 同意高于P0价售卖 - builder.externalTransition() - .from(Price_Manager_Processing) - .to(Closed) - .on(Agree_Over_P0_Sell) - .when(checkCondition()) - .perform(doAction()); - - // 拒绝高于P0价售卖 - builder.externalTransition() - .from(Price_Manager_Processing) - .to(Supplier_Manager_Processing) - .on(Reject_Over_P0_Sell) - .when(checkCondition()) - .perform(doAction()); - - // 普通字段更新事件 - Stream.of(Supplier_Processing, Supplier_Manager_Processing, Price_Manager_Processing) - .forEach(status -> builder - .internalTransition() - .within(status) - .on(Normal_Update) - .when(checkCondition()) - .perform(doAction()) - ); - - // P0价变更事件、页面价高于合理价事件 - Stream.of(P0_Changed, Page_Price_changed) - .forEach(event -> builder.externalTransitions() - .fromAmong(Supplier_Processing, Supplier_Manager_Processing, Price_Manager_Processing) - .to(Closed) - .on(event) - .when(checkCondition()) - .perform(doAction())); - - StateMachine stateMachine = builder.build("AdjustPriceTask"); - String plantUML = stateMachine.generatePlantUML(); - System.out.println(plantUML); - - } - - private Condition checkCondition() { - return (ctx) -> {return true;}; - } - - private Action doAction() { - return (from, to, event, ctx)->{ - System.out.println(ctx.operator+" is operating "+ctx.entityId+" from:"+from+" to:"+to+" on:"+event); - }; - } -} diff --git a/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineTest.java b/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineTest.java deleted file mode 100644 index 3f05e3ab8..000000000 --- a/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineTest.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.alibaba.cola.test; - -import com.alibaba.cola.statemachine.Action; -import com.alibaba.cola.statemachine.Condition; -import com.alibaba.cola.statemachine.StateMachine; -import com.alibaba.cola.statemachine.StateMachineFactory; -import com.alibaba.cola.statemachine.builder.StateMachineBuilder; -import com.alibaba.cola.statemachine.builder.StateMachineBuilderFactory; -import org.junit.Assert; -import org.junit.Test; - -/** - * StateMachineTest - * - * @author Frank Zhang - * @date 2020-02-08 12:19 PM - */ -public class StateMachineTest { - - static String MACHINE_ID = "TestStateMachine"; - - static enum States { - STATE1, STATE2, STATE3, STATE4 - } - - static enum Events { - EVENT1, EVENT2, EVENT3, EVENT4, INTERNAL_EVENT - } - - static class Context{ - String operator = "frank"; - String entityId = "123465"; - } - - @Test - public void testExternalNormal(){ - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - builder.externalTransition() - .from(States.STATE1) - .to(States.STATE2) - .on(Events.EVENT1) - .when(checkCondition()) - .perform(doAction()); - - StateMachine stateMachine = builder.build(MACHINE_ID); - States target = stateMachine.fireEvent(States.STATE1, Events.EVENT1, new Context()); - Assert.assertEquals(States.STATE2, target); - } - - @Test - public void testExternalTransitionsNormal(){ - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - builder.externalTransitions() - .fromAmong(States.STATE1, States.STATE2, States.STATE3) - .to(States.STATE4) - .on(Events.EVENT1) - .when(checkCondition()) - .perform(doAction()); - - StateMachine stateMachine = builder.build(MACHINE_ID+"1"); - States target = stateMachine.fireEvent(States.STATE2, Events.EVENT1, new Context()); - Assert.assertEquals(States.STATE4, target); - } - - @Test - public void testInternalNormal(){ - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - builder.internalTransition() - .within(States.STATE1) - .on(Events.INTERNAL_EVENT) - .when(checkCondition()) - .perform(doAction()); - StateMachine stateMachine = builder.build(MACHINE_ID+"2"); - - stateMachine.fireEvent(States.STATE1, Events.EVENT1, new Context()); - States target = stateMachine.fireEvent(States.STATE1, Events.INTERNAL_EVENT, new Context()); - Assert.assertEquals(States.STATE1, target); - } - - @Test - public void testExternalInternalNormal(){ - StateMachine stateMachine = buildStateMachine("testExternalInternalNormal"); - - Context context = new Context(); - States target = stateMachine.fireEvent(States.STATE1, Events.EVENT1, context); - Assert.assertEquals(States.STATE2, target); - target = stateMachine.fireEvent(States.STATE2, Events.INTERNAL_EVENT, context); - Assert.assertEquals(States.STATE2, target); - target = stateMachine.fireEvent(States.STATE2, Events.EVENT2, context); - Assert.assertEquals(States.STATE1, target); - target = stateMachine.fireEvent(States.STATE1, Events.EVENT3, context); - Assert.assertEquals(States.STATE3, target); - } - - private StateMachine buildStateMachine(String machineId) { - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - builder.externalTransition() - .from(States.STATE1) - .to(States.STATE2) - .on(Events.EVENT1) - .when(checkCondition()) - .perform(doAction()); - - builder.internalTransition() - .within(States.STATE2) - .on(Events.INTERNAL_EVENT) - .when(checkCondition()) - .perform(doAction()); - - builder.externalTransition() - .from(States.STATE2) - .to(States.STATE1) - .on(Events.EVENT2) - .when(checkCondition()) - .perform(doAction()); - - builder.externalTransition() - .from(States.STATE1) - .to(States.STATE3) - .on(Events.EVENT3) - .when(checkCondition()) - .perform(doAction()); - - builder.externalTransitions() - .fromAmong(States.STATE1, States.STATE2, States.STATE3) - .to(States.STATE4) - .on(Events.EVENT4) - .when(checkCondition()) - .perform(doAction()); - - builder.build(machineId); - - StateMachine stateMachine = StateMachineFactory.get(machineId); - stateMachine.showStateMachine(); - return stateMachine; - } - - @Test - public void testMultiThread(){ - buildStateMachine("testMultiThread"); - - for(int i=0 ; i<10 ; i++){ - Thread thread = new Thread(()->{ - StateMachine stateMachine = StateMachineFactory.get("testMultiThread"); - States target = stateMachine.fireEvent(States.STATE1, Events.EVENT1, new Context()); - Assert.assertEquals(States.STATE2, target); - }); - thread.start(); - } - - - for(int i=0 ; i<10 ; i++) { - Thread thread = new Thread(() -> { - StateMachine stateMachine = StateMachineFactory.get("testMultiThread"); - States target = stateMachine.fireEvent(States.STATE1, Events.EVENT4, new Context()); - Assert.assertEquals(States.STATE4, target); - }); - thread.start(); - } - - for(int i=0 ; i<10 ; i++) { - Thread thread = new Thread(() -> { - StateMachine stateMachine = StateMachineFactory.get("testMultiThread"); - States target = stateMachine.fireEvent(States.STATE1, Events.EVENT3, new Context()); - Assert.assertEquals(States.STATE3, target); - }); - thread.start(); - } - - } - - - private Condition checkCondition() { - return (ctx) -> {return true;}; - } - - private Action doAction() { - return (from, to, event, ctx)->{ - System.out.println(ctx.operator+" is operating "+ctx.entityId+" from:"+from+" to:"+to+" on:"+event); - }; - } - -} diff --git a/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineUnNormalTest.java b/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineUnNormalTest.java deleted file mode 100644 index 9046d1e3c..000000000 --- a/cola-statemachine/src/test/java/com/alibaba/cola/test/StateMachineUnNormalTest.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.alibaba.cola.test; - -import com.alibaba.cola.statemachine.Action; -import com.alibaba.cola.statemachine.Condition; -import com.alibaba.cola.statemachine.StateMachine; -import com.alibaba.cola.statemachine.builder.StateMachineBuilder; -import com.alibaba.cola.statemachine.builder.StateMachineBuilderFactory; -import com.alibaba.cola.statemachine.impl.StateMachineException; -import org.junit.Assert; -import org.junit.Test; - -import static com.alibaba.cola.test.StateMachineTest.MACHINE_ID; - -/** - * StateMachineUnNormalTest - * - * @author Frank Zhang - * @date 2020-02-08 5:52 PM - */ -public class StateMachineUnNormalTest { - - @Test - public void testConditionNotMeet(){ - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - builder.externalTransition() - .from(StateMachineTest.States.STATE1) - .to(StateMachineTest.States.STATE2) - .on(StateMachineTest.Events.EVENT1) - .when(checkConditionFalse()) - .perform(doAction()); - - StateMachine stateMachine = builder.build("NotMeetConditionMachine"); - StateMachineTest.States target = stateMachine.fireEvent(StateMachineTest.States.STATE1, StateMachineTest.Events.EVENT1, new StateMachineTest.Context()); - Assert.assertEquals(StateMachineTest.States.STATE1,target); - } - - - @Test(expected = StateMachineException.class) - public void testDuplicatedTransition(){ - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - builder.externalTransition() - .from(StateMachineTest.States.STATE1) - .to(StateMachineTest.States.STATE2) - .on(StateMachineTest.Events.EVENT1) - .when(checkCondition()) - .perform(doAction()); - - builder.externalTransition() - .from(StateMachineTest.States.STATE1) - .to(StateMachineTest.States.STATE2) - .on(StateMachineTest.Events.EVENT1) - .when(checkCondition()) - .perform(doAction()); - } - - @Test(expected = StateMachineException.class) - public void testDuplicateMachine(){ - StateMachineBuilder builder = StateMachineBuilderFactory.create(); - builder.externalTransition() - .from(StateMachineTest.States.STATE1) - .to(StateMachineTest.States.STATE2) - .on(StateMachineTest.Events.EVENT1) - .when(checkCondition()) - .perform(doAction()); - - builder.build("DuplicatedMachine"); - builder.build("DuplicatedMachine"); - } - - private Condition checkCondition() { - return (ctx) -> {return true;}; - } - - private Condition checkConditionFalse() { - return (ctx) -> {return false;}; - } - - private Action doAction() { - return (from, to, event, ctx)->{ - System.out.println(ctx.operator+" is operating "+ctx.entityId+"from:"+from+" to:"+to+" on:"+event); - }; - } -}