You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/11/07 11:02:35 UTC

[servicecomb-toolkit] branch import-oas-validator updated (40cb4ff -> 8d31222)

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a change to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git.


    from 40cb4ff  SCB-1553 Integrate oas-validator compliance check to cli Fix the license issue
     new f00406c  SCB-1555 Integrate oas-validator compability check to cli Add factories for compatibility check validators
     new 37da70b  SCB-1555 Integrate oas-validator compability check to cli Add subcommands checkcompatibility and cs to cli
     new 1ffe8e2  SCB-1555 Integrate oas-validator compability check to cli Translate compatibility error message to english
     new 830f739  SCB-1555 Integrate oas-validator compability check to cli Update readme
     new a92f7f7  remove stdout in test
     new 6f29544  SCB-1555 Integrate oas-validator compability check to cli Remove useless ExampleDiffValidator
     new 8d31222  fix unit test

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README-ZH.md                                       |  16 ++-
 README.md                                          |  15 ++-
 cli/pom.xml                                        |   5 +
 .../{CheckStyle.java => CheckCompatibility.java}   |   6 +-
 ...CheckStyle.java => CheckCompatibilityAbbr.java} |   7 +-
 .../toolkit/cli/CheckCompatibilityBase.java        | 129 ++++++++++++++++++++
 .../servicecomb/toolkit/cli/CheckStyleBase.java    |  14 +--
 .../servicecomb/toolkit/cli/ToolkitMain.java       |   7 +-
 .../apache/servicecomb/toolkit/cli/CliTest.java    |  25 +++-
 .../src/test/resources/oas/compatibility-left.yaml |   0
 .../test/resources/oas/compatibility-right.yaml    |   0
 .../resources/oas/{parser-test.yaml => style.yaml} |   0
 oas-validator/oas-validator-compatibility/pom.xml  |  11 ++
 .../DefaultCallbackDiffValidatorFactory.java}      |  10 +-
 .../DefaultComponentsDiffValidatorFactory.java     |  87 +++++++++++++
 .../DefaultEncodingDiffValidatorFactory.java       |  64 ++++++++++
 .../factory/DefaultHeaderDiffValidatorFactory.java |  56 +++++++++
 .../factory/DefaultInfoDiffValidatorFactory.java}  |  10 +-
 .../factory/DefaultLinkDiffValidatorFactory.java}  |  10 +-
 .../DefaultMediaTypeDiffValidatorFactory.java      |  67 ++++++++++
 .../DefaultOasSpecDiffValidatorFactory.java}       |  40 +++---
 .../DefaultOpenApiDiffValidatorFactory.java        |  80 ++++++++++++
 .../DefaultOperationDiffValidatorFactory.java      |  70 +++++++++++
 .../DefaultParameterDiffValidatorFactory.java      |  72 +++++++++++
 .../DefaultPathItemDiffValidatorFactory.java       |  61 ++++++++++
 .../factory/DefaultPathsDiffValidatorFactory.java} |  27 +++--
 .../DefaultRequestBodyDiffValidatorFactory.java    |  54 +++++++++
 .../DefaultResponseDiffValidatorFactory.java       |  61 ++++++++++
 .../DefaultResponsesDiffValidatorFactory.java}     |  30 +++--
 .../factory/DefaultSchemaDiffValidatorFactory.java | 135 +++++++++++++++++++++
 ...DefaultSecuritySchemeDiffValidatorFactory.java} |  12 +-
 .../DefaultServerDiffValidatorFactory.java}        |  11 +-
 .../factory/DefaultTagDiffValidatorFactory.java}   |  11 +-
 ...EncodingAllowedReservedChangeDiffValidator.java |   3 +-
 .../parameter/ParameterAddDiffValidator.java       |   4 +-
 ...arameterAllowEmptyValueChangeDiffValidator.java |   3 +-
 .../ParameterAllowReservedChangeDiffValidator.java |   3 +-
 .../ParameterRequiredChangeDiffValidator.java      |   3 +-
 .../RequestBodyRequiredChangeDiffValidator.java    |   3 +-
 .../schema/SchemaTypeFormatChangeValidator.java    |   4 +-
 .../SchemaEnumChangeInRequestValidator.java        |   4 +-
 ...maExclusiveMaximumChangeInRequestValidator.java |   3 +-
 ...maExclusiveMinimumChangeInRequestValidator.java |   3 +-
 .../SchemaMultipleOfChangeInRequestValidator.java  |   4 +-
 .../SchemaNullableChangeInRequestValidator.java    |   3 +-
 .../SchemaRequiredChangeInRequestValidator.java    |   4 +-
 .../SchemaUniqueItemsChangeInRequestValidator.java |   3 +-
 .../SchemaEnumChangeInResponseValidator.java       |   4 +-
 ...aExclusiveMaximumChangeInResponseValidator.java |   3 +-
 ...aExclusiveMinimumChangeInResponseValidator.java |   3 +-
 .../SchemaMultipleOfChangeInResponseValidator.java |   4 +-
 .../SchemaNullableChangeInResponseValidator.java   |   3 +-
 .../SchemaRequiredChangeInResponseValidator.java   |   4 +-
 ...SchemaUniqueItemsChangeInResponseValidator.java |   3 +-
 .../DefaultCallbackDiffValidatorFactoryTest.java}  |  13 +-
 ...DefaultComponentsDiffValidatorFactoryTest.java} |  18 +--
 .../DefaultEncodingDiffValidatorFactoryTest.java}  |  16 +--
 .../DefaultInfoDiffValidatorFactoryTest.java}      |  13 +-
 .../DefaultLinkDiffValidatorFactoryTest.java}      |  13 +-
 .../DefaultMediaTypeDiffValidatorFactoryTest.java} |  18 +--
 .../DefaultOasSpecDiffValidatorFactoryTest.java}   |  12 +-
 .../DefaultOpenApiDiffValidatorFactoryTest.java}   |  18 +--
 .../DefaultOperationDiffValidatorFactoryTest.java} |  15 ++-
 .../DefaultParameterDiffValidatorFactoryTest.java} |  13 +-
 .../DefaultPathItemDiffValidatorFactoryTest.java}  |  16 +--
 .../DefaultPathsDiffValidatorFactoryTest.java}     |  16 +--
 ...efaultRequestBodyDiffValidatorFactoryTest.java} |  16 +--
 .../DefaultResponseDiffValidatorFactoryTest.java}  |  16 +--
 .../DefaultResponsesDiffValidatorFactoryTest.java} |  16 +--
 .../DefaultSchemaDiffValidatorFactoryTest.java}    |  16 +--
 ...ultSecuritySchemeDiffValidatorFactoryTest.java} |  16 +--
 .../DefaultServerDiffValidatorFactoryTest.java}    |  16 +--
 .../DefaultTagDiffValidatorFactoryTest.java}       |  16 +--
 .../DiffValidatorFactoryTestConfiguration.java}    |   4 +-
 ...dingAllowedReservedChangeDiffValidatorTest.java |   4 +-
 .../parameter/ParameterAddDiffValidatorTest.java   |   3 +-
 ...eterAllowEmptyValueChangeDiffValidatorTest.java |   3 +-
 ...ameterAllowReservedChangeDiffValidatorTest.java |   9 +-
 .../ParameterRequiredChangeDiffValidatorTest.java  |   3 +-
 ...RequestBodyRequiredChangeDiffValidatorTest.java |   3 +-
 .../SchemaEnumChangeInRequestValidatorTest.java    |  24 ++--
 ...clusiveMaximumChangeInRequestValidatorTest.java |   5 +-
 ...clusiveMinimumChangeInRequestValidatorTest.java |   5 +-
 ...hemaMultipleOfChangeInRequestValidatorTest.java |   4 +-
 ...SchemaNullableChangeInRequestValidatorTest.java |   5 +-
 ...SchemaRequiredChangeInRequestValidatorTest.java |   4 +-
 ...hemaTypeFormatChangeInRequestValidatorTest.java |   4 +-
 ...emaUniqueItemsChangeInRequestValidatorTest.java |   5 +-
 .../SchemaEnumChangeInResponseValidatorTest.java   |   2 +-
 ...lusiveMaximumChangeInResponseValidatorTest.java |   3 +-
 ...lusiveMinimumChangeInResponseValidatorTest.java |   3 +-
 ...emaMultipleOfChangeInResponseValidatorTest.java |   2 +-
 ...chemaNullableChangeInResponseValidatorTest.java |   3 +-
 ...chemaRequiredChangeInResponseValidatorTest.java |   2 +-
 ...emaTypeFormatChangeInResponseValidatorTest.java |   2 +-
 ...maUniqueItemsChangeInResponseValidatorTest.java |   3 +-
 .../OasDiffValidatorsSkeletonConfiguration.java    |  47 +++++--
 .../oasv/common/OasObjectPropertyLocation.java     |  14 +++
 .../diffvalidation/api/DiffViolationMessages.java  |  13 +-
 .../diffvalidation/api/ExampleDiffValidator.java   |  23 ----
 .../factory/CallbackDiffValidatorFactory.java      |   8 +-
 .../factory/ComponentsDiffValidatorFactory.java    |   8 +-
 .../factory/EncodingDiffValidatorFactory.java      |   8 +-
 .../factory/HeaderDiffValidatorFactory.java        |   8 +-
 .../factory/InfoDiffValidatorFactory.java          |   8 +-
 .../factory/LinkDiffValidatorFactory.java          |   8 +-
 .../factory/MediaTypeDiffValidatorFactory.java     |   8 +-
 .../factory/OasObjectDiffValidatorFactory.java}    |   7 +-
 .../factory/OasSpecDiffValidatorFactory.java}      |   9 +-
 .../factory/OpenApiDiffValidatorFactory.java       |   8 +-
 .../factory/OperationDiffValidatorFactory.java}    |   6 +-
 .../factory/ParameterDiffValidatorFactory.java     |   8 +-
 .../factory/PathItemDiffValidatorFactory.java      |   8 +-
 .../factory/PathsDiffValidatorFactory.java         |   8 +-
 .../factory/RequestBodyDiffValidatorFactory.java   |   8 +-
 .../factory/ResponseDiffValidatorFactory.java      |   8 +-
 .../factory/ResponsesDiffValidatorFactory.java     |   8 +-
 .../factory/SchemaDiffValidatorFactory.java        |   8 +-
 .../SecuritySchemeDiffValidatorFactory.java        |   8 +-
 .../factory/ServerDiffValidatorFactory.java        |   8 +-
 .../factory/TagDiffValidatorFactory.java           |   8 +-
 .../ComponentsExamplesDiffValidator.java           |  54 ---------
 .../oasv/common/OasObjectPropertyLocationTest.java |  17 +--
 oas-validator/pom.xml                              |   2 +-
 124 files changed, 1492 insertions(+), 516 deletions(-)
 copy cli/src/main/java/org/apache/servicecomb/toolkit/cli/{CheckStyle.java => CheckCompatibility.java} (79%)
 copy cli/src/main/java/org/apache/servicecomb/toolkit/cli/{CheckStyle.java => CheckCompatibilityAbbr.java} (77%)
 create mode 100644 cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityBase.java
 copy oas-validator/oas-validator-compatibility/src/test/resources/org/apache/servicecomb/toolkit/oasv/compatibility/validators/header/petstore-header-add-in-request-body-a.yaml => cli/src/test/resources/oas/compatibility-left.yaml (100%)
 copy oas-validator/oas-validator-compatibility/src/test/resources/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/petstore-encoding-del-a.yaml => cli/src/test/resources/oas/compatibility-right.yaml (100%)
 rename cli/src/test/resources/oas/{parser-test.yaml => style.yaml} (100%)
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactory.java} (71%)
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactory.java
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultHeaderDiffValidatorFactory.java
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactory.java} (72%)
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactory.java} (72%)
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactory.java
 copy oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/{validators/schema/SchemaXmlChangeValidator.java => factory/DefaultOasSpecDiffValidatorFactory.java} (50%)
 mode change 100755 => 100644
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactory.java
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactory.java
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactory.java
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactory.java
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponsesValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactory.java} (51%)
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactory.java
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactory.java
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathsValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactory.java} (50%)
 create mode 100644 oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactory.java
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactory.java} (70%)
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactory.java} (72%)
 copy oas-validator/{oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java => oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactory.java} (72%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSecuritySchemeValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactoryTest.java} (74%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSecuritySchemeValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java} (72%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultParameterValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactoryTest.java} (74%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactoryTest.java} (75%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactoryTest.java} (75%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathsValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactoryTest.java} (72%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOasSpecValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOasSpecDiffValidatorFactoryTest.java} (73%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultRequestBodyValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactoryTest.java} (73%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSchemaValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactoryTest.java} (73%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOpenApiValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactoryTest.java} (74%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponseValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactoryTest.java} (74%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponsesValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactoryTest.java} (75%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathsValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactoryTest.java} (74%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponseValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactoryTest.java} (74%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponsesValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactoryTest.java} (74%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultInfoValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactoryTest.java} (75%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSecuritySchemeValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactoryTest.java} (73%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactoryTest.java} (75%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactoryTest.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactoryTest.java} (75%)
 copy oas-validator/{oas-validator-compliance/src/test/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/ValidatorFactoryTestConfiguration.java => oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DiffValidatorFactoryTestConfiguration.java} (89%)
 delete mode 100755 oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/ExampleDiffValidator.java
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/CallbackDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ComponentsDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/EncodingDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/HeaderDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/InfoDiffValidatorFactory.java (76%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/LinkDiffValidatorFactory.java (76%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/MediaTypeDiffValidatorFactory.java (75%)
 copy oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/{validation/factory/OasObjectValidatorFactory.java => diffvalidation/factory/OasObjectDiffValidatorFactory.java} (78%)
 copy oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/{validation/factory/EncodingValidatorFactory.java => diffvalidation/factory/OasSpecDiffValidatorFactory.java} (81%)
 mode change 100644 => 100755
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OpenApiDiffValidatorFactory.java (75%)
 copy oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/{validation/factory/SchemaValidatorFactory.java => diffvalidation/factory/OperationDiffValidatorFactory.java} (77%)
 mode change 100644 => 100755
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ParameterDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathItemDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathsDiffValidatorFactory.java (76%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/RequestBodyDiffValidatorFactory.java (74%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponseDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponsesDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SchemaDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SecuritySchemeDiffValidatorFactory.java (74%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ServerDiffValidatorFactory.java (75%)
 copy common/src/main/java/org/apache/servicecomb/toolkit/common/CompareAlgorithm.java => oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/TagDiffValidatorFactory.java (76%)
 delete mode 100755 oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/skeleton/components/ComponentsExamplesDiffValidator.java
 copy toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/MavenPluginUtil.java => oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java (66%)


[servicecomb-toolkit] 03/07: SCB-1555 Integrate oas-validator compability check to cli Translate compatibility error message to english

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit 1ffe8e21edc1a87d93f82cf5f16a1575a51a1c55
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Thu Nov 7 15:20:22 2019 +0800

    SCB-1555 Integrate oas-validator compability check to cli
    Translate compatibility error message to english
---
 .../toolkit/cli/CheckCompatibilityAbbr.java        |  3 ++-
 ...EncodingAllowedReservedChangeDiffValidator.java |  3 ++-
 .../parameter/ParameterAddDiffValidator.java       |  4 +++-
 ...arameterAllowEmptyValueChangeDiffValidator.java |  3 ++-
 .../ParameterAllowReservedChangeDiffValidator.java |  3 ++-
 .../ParameterRequiredChangeDiffValidator.java      |  3 ++-
 .../RequestBodyRequiredChangeDiffValidator.java    |  3 ++-
 .../schema/SchemaTypeFormatChangeValidator.java    |  4 ++--
 .../SchemaEnumChangeInRequestValidator.java        |  4 +++-
 ...maExclusiveMaximumChangeInRequestValidator.java |  3 ++-
 ...maExclusiveMinimumChangeInRequestValidator.java |  3 ++-
 .../SchemaMultipleOfChangeInRequestValidator.java  |  4 +++-
 .../SchemaNullableChangeInRequestValidator.java    |  3 ++-
 .../SchemaRequiredChangeInRequestValidator.java    |  4 +++-
 .../SchemaUniqueItemsChangeInRequestValidator.java |  3 ++-
 .../SchemaEnumChangeInResponseValidator.java       |  4 +++-
 ...aExclusiveMaximumChangeInResponseValidator.java |  3 ++-
 ...aExclusiveMinimumChangeInResponseValidator.java |  3 ++-
 .../SchemaMultipleOfChangeInResponseValidator.java |  4 +++-
 .../SchemaNullableChangeInResponseValidator.java   |  3 ++-
 .../SchemaRequiredChangeInResponseValidator.java   |  4 +++-
 ...SchemaUniqueItemsChangeInResponseValidator.java |  3 ++-
 ...dingAllowedReservedChangeDiffValidatorTest.java |  3 ++-
 .../parameter/ParameterAddDiffValidatorTest.java   |  3 ++-
 ...eterAllowEmptyValueChangeDiffValidatorTest.java |  3 ++-
 ...ameterAllowReservedChangeDiffValidatorTest.java |  8 +++-----
 .../ParameterRequiredChangeDiffValidatorTest.java  |  3 ++-
 ...RequestBodyRequiredChangeDiffValidatorTest.java |  3 ++-
 .../SchemaEnumChangeInRequestValidatorTest.java    | 24 ++++++++++++++--------
 ...clusiveMaximumChangeInRequestValidatorTest.java |  5 +++--
 ...clusiveMinimumChangeInRequestValidatorTest.java |  5 +++--
 ...hemaMultipleOfChangeInRequestValidatorTest.java |  4 ++--
 ...SchemaNullableChangeInRequestValidatorTest.java |  5 +++--
 ...SchemaRequiredChangeInRequestValidatorTest.java |  4 ++--
 ...hemaTypeFormatChangeInRequestValidatorTest.java |  4 ++--
 ...emaUniqueItemsChangeInRequestValidatorTest.java |  5 +++--
 .../SchemaEnumChangeInResponseValidatorTest.java   |  2 +-
 ...lusiveMaximumChangeInResponseValidatorTest.java |  3 ++-
 ...lusiveMinimumChangeInResponseValidatorTest.java |  3 ++-
 ...emaMultipleOfChangeInResponseValidatorTest.java |  2 +-
 ...chemaNullableChangeInResponseValidatorTest.java |  3 ++-
 ...chemaRequiredChangeInResponseValidatorTest.java |  2 +-
 ...emaTypeFormatChangeInResponseValidatorTest.java |  2 +-
 ...maUniqueItemsChangeInResponseValidatorTest.java |  3 ++-
 .../diffvalidation/api/DiffViolationMessages.java  | 13 +++++++-----
 .../oasv/common/OasObjectPropertyLocationTest.java | 17 +++++++++++++++
 oas-validator/pom.xml                              |  2 +-
 47 files changed, 135 insertions(+), 70 deletions(-)

diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityAbbr.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityAbbr.java
index 2f14b2b..6b09553 100644
--- a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityAbbr.java
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityAbbr.java
@@ -20,7 +20,8 @@ package org.apache.servicecomb.toolkit.cli;
 import io.airlift.airline.Command;
 
 @Command(name = "cc",
-    description = "Check compatibility for two OpenAPI v3 spec yamls, right one should be semantically compatible with left one")
+    description = "Check compatibility for two OpenAPI v3 spec yamls,"
+        + " right one should be semantically compatible with left one(abbr for checkcompatibility)")
 public class CheckCompatibilityAbbr extends CheckCompatibilityBase {
 
 }
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidator.java
index 614471b..b29e9f2 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidator.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding;
 
 import org.apache.servicecomb.toolkit.oasv.common.OasObjectPropertyLocation;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.EncodingDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
@@ -50,7 +51,7 @@ public class EncodingAllowedReservedChangeDiffValidator
     return singletonList(new OasDiffViolation(
       leftLocation.property("allowReserved"),
       rightLocation.property("allowReserved"),
-      "仅允许false->true的修改"
+      DiffViolationMessages.FALSE_TO_TRUE
     ));
 
   }
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidator.java
index e5ee7e2..d7c4909 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidator.java
@@ -34,6 +34,8 @@ public class ParameterAddDiffValidator
   extends OasObjectDiffValidatorTemplate<Parameter>
   implements ParameterDiffValidator {
 
+  public static final String VIOLATION_MESSAGE = "required=true parameter is not allowed on right side";
+
   @Override
   protected List<OasDiffViolation> validateAdd(OasDiffValidationContext context,
     OasObjectPropertyLocation rightLocation, Parameter rightOasObject) {
@@ -45,7 +47,7 @@ public class ParameterAddDiffValidator
     String message = new StringBuilder()
       .append(ParameterUtils.getKeyString(rightOasObject))
       .append(':')
-      .append("仅允许新增required=false的parameter")
+      .append(VIOLATION_MESSAGE)
       .toString()
       ;
 
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidator.java
index 8ac7d39..d181744 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidator.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter;
 
 import org.apache.servicecomb.toolkit.oasv.common.OasObjectPropertyLocation;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasObjectDiffValidatorTemplate;
@@ -55,7 +56,7 @@ public class ParameterAllowEmptyValueChangeDiffValidator
     String message = new StringBuilder()
       .append(ParameterUtils.getKeyString(rightOasObject))
       .append(':')
-      .append("仅允许false->true的修改")
+      .append(DiffViolationMessages.FALSE_TO_TRUE)
       .toString();
 
     return singletonList(new OasDiffViolation(
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidator.java
index 9cca97a..537c4ba 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidator.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter;
 
 import org.apache.servicecomb.toolkit.oasv.common.OasObjectPropertyLocation;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasObjectDiffValidatorTemplate;
@@ -54,7 +55,7 @@ public class ParameterAllowReservedChangeDiffValidator
     String message = new StringBuilder()
       .append(ParameterUtils.getKeyString(rightOasObject))
       .append(':')
-      .append("仅允许false->true的修改")
+      .append(DiffViolationMessages.FALSE_TO_TRUE)
       .toString();
 
     return singletonList(new OasDiffViolation(
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidator.java
index f629812..36b4bd9 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidator.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter;
 
 import org.apache.servicecomb.toolkit.oasv.common.OasObjectPropertyLocation;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasObjectDiffValidatorTemplate;
@@ -54,7 +55,7 @@ public class ParameterRequiredChangeDiffValidator
     String message = new StringBuilder()
       .append(ParameterUtils.getKeyString(rightOasObject))
       .append(':')
-      .append("仅允许true->false的修改")
+      .append(DiffViolationMessages.TRUE_TO_FALSE)
       .toString();
 
     return singletonList(new OasDiffViolation(
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidator.java
index 76acb03..28c6e70 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidator.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.requestbody;
 
 import org.apache.servicecomb.toolkit.oasv.common.OasObjectPropertyLocation;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasObjectDiffValidatorTemplate;
@@ -53,7 +54,7 @@ public class RequestBodyRequiredChangeDiffValidator
     return singletonList(new OasDiffViolation(
       leftLocation.property("required"),
       rightLocation.property("required"),
-      "仅允许true->false的修改"
+      DiffViolationMessages.TRUE_TO_FALSE
     ));
 
   }
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/SchemaTypeFormatChangeValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/SchemaTypeFormatChangeValidator.java
index e302456..7c683ea 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/SchemaTypeFormatChangeValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/SchemaTypeFormatChangeValidator.java
@@ -46,7 +46,7 @@ public abstract class SchemaTypeFormatChangeValidator implements SchemaCompareVa
       return emptyList();
     }
 
-    StringBuilder message = new StringBuilder("不允许");
+    StringBuilder message = new StringBuilder("the change ");
     message
       .append("(type=")
       .append(leftTypeFormat.getType())
@@ -59,7 +59,7 @@ public abstract class SchemaTypeFormatChangeValidator implements SchemaCompareVa
       .append(",format=")
       .append(rightTypeFormat.getFormat())
       .append(')')
-      .append("的修改");
+      .append(" is not allowed");
 
     return singletonList(new OasDiffViolation(leftLocation, rightLocation, message.toString()));
 
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidator.java
index ef8192f..d1ba7db 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidator.java
@@ -30,6 +30,8 @@ import static java.util.Collections.emptyList;
 
 public class SchemaEnumChangeInRequestValidator extends SchemaPropertyChangeValidator<List> {
 
+  public static final String VIOLATION_MESSAGE = "delete enum on right side is not allowed";
+
   @Override
   protected List getProperty(Schema schema) {
     return ObjectUtils.defaultIfNull(schema.getEnum(), emptyList());
@@ -47,7 +49,7 @@ public class SchemaEnumChangeInRequestValidator extends SchemaPropertyChangeVali
 
   @Override
   protected String getMessage(List leftProperty, List rightProperty) {
-    return "不允许删除enum";
+    return VIOLATION_MESSAGE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidator.java
index b724510..7b13242 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -49,7 +50,7 @@ public class SchemaExclusiveMaximumChangeInRequestValidator extends SchemaProper
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许true->false的修改";
+    return DiffViolationMessages.TRUE_TO_FALSE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidator.java
index 5481f59..fb4f343 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -47,7 +48,7 @@ public class SchemaExclusiveMinimumChangeInRequestValidator extends SchemaProper
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许true->false的修改";
+    return DiffViolationMessages.TRUE_TO_FALSE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidator.java
index 1a9e619..f05af70 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidator.java
@@ -28,6 +28,8 @@ import static org.apache.servicecomb.toolkit.oasv.diffvalidation.util.OasDiffVal
 
 public class SchemaMultipleOfChangeInRequestValidator extends SchemaPropertyChangeValidator<BigDecimal> {
 
+  public static final String VIOLATION_MESSAGE = "right value is neither equal to left value nor a factor of left value";
+
   @Override
   protected BigDecimal getProperty(Schema schema) {
     return schema.getMultipleOf();
@@ -40,7 +42,7 @@ public class SchemaMultipleOfChangeInRequestValidator extends SchemaPropertyChan
 
   @Override
   protected String getMessage(BigDecimal leftProperty, BigDecimal rightProperty) {
-    return "新值必须==旧值或是旧值的因子";
+    return VIOLATION_MESSAGE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidator.java
index abebca1..2ab676f 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -47,7 +48,7 @@ public class SchemaNullableChangeInRequestValidator extends SchemaPropertyChange
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许false->true的修改";
+    return DiffViolationMessages.FALSE_TO_TRUE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidator.java
index c090054..004d1e8 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidator.java
@@ -30,6 +30,8 @@ import static java.util.Collections.emptyList;
 
 public class SchemaRequiredChangeInRequestValidator extends SchemaPropertyChangeValidator<List<String>> {
 
+  public static final String VIOLATION_MESSAGE = "add required fields is not allowed on right side";
+
   @Override
   protected List<String> getProperty(Schema schema) {
     return ObjectUtils.defaultIfNull(schema.getRequired(), emptyList());
@@ -47,7 +49,7 @@ public class SchemaRequiredChangeInRequestValidator extends SchemaPropertyChange
 
   @Override
   protected String getMessage(List<String> leftProperty, List<String> rightProperty) {
-    return "不允许新增required字段";
+    return VIOLATION_MESSAGE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidator.java
index de69be0..7ba71f2 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -46,7 +47,7 @@ public class SchemaUniqueItemsChangeInRequestValidator extends SchemaPropertyCha
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许true->false的修改";
+    return DiffViolationMessages.TRUE_TO_FALSE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidator.java
index 0656f83..c5c9de6 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidator.java
@@ -29,6 +29,8 @@ import static java.util.Collections.emptyList;
 
 public class SchemaEnumChangeInResponseValidator extends SchemaPropertyChangeValidator<List> {
 
+  public static final String VIOLATION_MESSAGE = "add enum on right side is not allowed";
+
   @Override
   protected List getProperty(Schema schema) {
     return ObjectUtils.defaultIfNull(schema.getEnum(), emptyList());
@@ -46,7 +48,7 @@ public class SchemaEnumChangeInResponseValidator extends SchemaPropertyChangeVal
 
   @Override
   protected String getMessage(List leftProperty, List rightProperty) {
-    return "不允许新增enum";
+    return VIOLATION_MESSAGE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidator.java
index 5c0084d..217d950 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -48,7 +49,7 @@ public class SchemaExclusiveMaximumChangeInResponseValidator extends SchemaPrope
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许false->true的修改";
+    return DiffViolationMessages.FALSE_TO_TRUE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidator.java
index 25ce187..d34ffaf 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -48,7 +49,7 @@ public class SchemaExclusiveMinimumChangeInResponseValidator extends SchemaPrope
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许false->true的修改";
+    return DiffViolationMessages.FALSE_TO_TRUE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidator.java
index 0614ecb..28564b8 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidator.java
@@ -27,6 +27,8 @@ import static org.apache.servicecomb.toolkit.oasv.diffvalidation.util.OasDiffVal
 
 public class SchemaMultipleOfChangeInResponseValidator extends SchemaPropertyChangeValidator<BigDecimal> {
 
+  public static final String VIOLATION_MESSAGE = "right value is neither equal to left value nor multiple of left value";
+
   @Override
   protected BigDecimal getProperty(Schema schema) {
     return schema.getMultipleOf();
@@ -39,7 +41,7 @@ public class SchemaMultipleOfChangeInResponseValidator extends SchemaPropertyCha
 
   @Override
   protected String getMessage(BigDecimal leftProperty, BigDecimal rightProperty) {
-    return "新值必须==旧值或是旧值的倍数";
+    return VIOLATION_MESSAGE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidator.java
index 2c69efb..6c52d83 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -46,7 +47,7 @@ public class SchemaNullableChangeInResponseValidator extends SchemaPropertyChang
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许true->false的修改";
+    return DiffViolationMessages.TRUE_TO_FALSE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidator.java
index 7f64f45..987742d 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidator.java
@@ -29,6 +29,8 @@ import static java.util.Collections.emptyList;
 
 public class SchemaRequiredChangeInResponseValidator extends SchemaPropertyChangeValidator<List<String>> {
 
+  public static final String VIOLATION_MESSAGE = "delete required fields is not allowed on right side";
+
   @Override
   protected List<String> getProperty(Schema schema) {
     return ObjectUtils.defaultIfNull(schema.getRequired(), emptyList());
@@ -46,7 +48,7 @@ public class SchemaRequiredChangeInResponseValidator extends SchemaPropertyChang
 
   @Override
   protected String getMessage(List<String> leftProperty, List<String> rightProperty) {
-    return "不允许删除required字段";
+    return SchemaRequiredChangeInResponseValidator.VIOLATION_MESSAGE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidator.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidator.java
index 372dae7..946668f 100755
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidator.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.util.ChangeRangeCheckUtils;
 import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaPropertyChangeValidator;
@@ -45,7 +46,7 @@ public class SchemaUniqueItemsChangeInResponseValidator extends SchemaPropertyCh
 
   @Override
   protected String getMessage(Boolean leftProperty, Boolean rightProperty) {
-    return "仅允许false->true的修改";
+    return DiffViolationMessages.FALSE_TO_TRUE;
   }
 
   @Override
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java
index e0e7e51..9fe0a75 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.EncodingDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class EncodingAllowedReservedChangeDiffValidatorTest extends OasCompatibi
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolation(
-          "仅允许false->true的修改",
+          DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidatorTest.java
index 0c9c9aa..0182be1 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAddDiffValidatorTest.java
@@ -32,6 +32,7 @@ import org.springframework.test.context.ContextConfiguration;
 import java.util.List;
 
 import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.*;
+import static org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter.ParameterAddDiffValidator.VIOLATION_MESSAGE;
 import static org.assertj.core.api.Assertions.assertThat;
 
 @ContextConfiguration(classes = ParameterAddDiffValidatorTest.TestConfiguration.class)
@@ -47,7 +48,7 @@ public class ParameterAddDiffValidatorTest extends OasCompatibilityTestBase {
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationRight(
-          "[name=bar,in=query]:仅允许新增required=false的parameter",
+          "[name=bar,in=query]:" + VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidatorTest.java
index e16caa0..45d80b0 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowEmptyValueChangeDiffValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ParameterDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class ParameterAllowEmptyValueChangeDiffValidatorTest extends OasCompatib
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolation(
-          "[name=limit4,in=query]:仅允许false->true的修改",
+          "[name=limit4,in=query]:" + DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java
index 96f2a52..70b82a8 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ParameterDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -41,10 +42,7 @@ public class ParameterAllowReservedChangeDiffValidatorTest extends OasCompatibil
   public void validate() {
   }
 
-  /**
-   * TODO swagger parser对于allowReserved字段的反序列化存在问题,先跳过此测试
-   * https://github.com/swagger-api/swagger-parser/issues/1108
-   */
+  @Test
   public void validateBroken() {
     OpenAPI leftOpenAPI = loadRelative("petstore-parameter-allow-reserved-a.yaml");
     System.out.println(leftOpenAPI.toString());
@@ -55,7 +53,7 @@ public class ParameterAllowReservedChangeDiffValidatorTest extends OasCompatibil
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolation(
-          "[name=limit4,in=query]:仅允许false->true的修改",
+          "[name=limit4,in=query]:" + DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidatorTest.java
index b6535ab..7273321 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterRequiredChangeDiffValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ParameterDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class ParameterRequiredChangeDiffValidatorTest extends OasCompatibilityTe
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolation(
-          "[name=limit,in=query]:仅允许true->false的修改",
+          "[name=limit,in=query]:" + DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidatorTest.java
index a16bb42..f8d2ea4 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/requestbody/RequestBodyRequiredChangeDiffValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.requestbody;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.RequestBodyDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class RequestBodyRequiredChangeDiffValidatorTest extends OasCompatibility
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidatorTest.java
index 67abd6d..b5e3fb0 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaEnumChangeInRequestValidatorTest.java
@@ -17,22 +17,28 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.MEDIA_TYPE;
+import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.OPERATION;
+import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.PARAMETER;
+import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.PATHS;
+import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.PATH_ITEM;
+import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.REQUEST_BODY;
+import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.SCHEMA;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.OasCompatibilityTestBase;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
-
-import org.apache.servicecomb.toolkit.oasv.compatibility.validators.OasCompatibilityTestBase;
-import io.swagger.v3.oas.models.OpenAPI;
 import org.junit.Test;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.test.context.ContextConfiguration;
 
-import java.util.List;
-
-import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.*;
-import static org.assertj.core.api.Assertions.assertThat;
+import io.swagger.v3.oas.models.OpenAPI;
 
 @ContextConfiguration(classes = SchemaEnumChangeInRequestValidatorTest.TestConfiguration.class)
 public class SchemaEnumChangeInRequestValidatorTest extends OasCompatibilityTestBase {
@@ -47,7 +53,7 @@ public class SchemaEnumChangeInRequestValidatorTest extends OasCompatibilityTest
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "不允许删除enum",
+            SchemaEnumChangeInRequestValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -59,7 +65,7 @@ public class SchemaEnumChangeInRequestValidatorTest extends OasCompatibilityTest
           }
         ),
         createViolationBoth(
-          "不允许删除enum",
+            SchemaEnumChangeInRequestValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidatorTest.java
index 8d0ec1a..60bd30a 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMaximumChangeInRequestValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaExclusiveMaximumChangeInRequestValidatorTest extends OasCompa
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -59,7 +60,7 @@ public class SchemaExclusiveMaximumChangeInRequestValidatorTest extends OasCompa
           }
         ),
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidatorTest.java
index 2896312..09fc099 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaExclusiveMinimumChangeInRequestValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaExclusiveMinimumChangeInRequestValidatorTest extends OasCompa
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -59,7 +60,7 @@ public class SchemaExclusiveMinimumChangeInRequestValidatorTest extends OasCompa
           }
         ),
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidatorTest.java
index 9bae7c6..8d5fdd4 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaMultipleOfChangeInRequestValidatorTest.java
@@ -47,7 +47,7 @@ public class SchemaMultipleOfChangeInRequestValidatorTest extends OasCompatibili
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "新值必须==旧值或是旧值的因子",
+            SchemaMultipleOfChangeInRequestValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -59,7 +59,7 @@ public class SchemaMultipleOfChangeInRequestValidatorTest extends OasCompatibili
           }
         ),
         createViolationBoth(
-          "新值必须==旧值或是旧值的因子",
+            SchemaMultipleOfChangeInRequestValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidatorTest.java
index da437cb..d575194 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaNullableChangeInRequestValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaNullableChangeInRequestValidatorTest extends OasCompatibility
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许false->true的修改",
+          DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -59,7 +60,7 @@ public class SchemaNullableChangeInRequestValidatorTest extends OasCompatibility
           }
         ),
         createViolationBoth(
-          "仅允许false->true的修改",
+          DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidatorTest.java
index ab6974b..882eea9 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaRequiredChangeInRequestValidatorTest.java
@@ -47,7 +47,7 @@ public class SchemaRequiredChangeInRequestValidatorTest extends OasCompatibility
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "不允许新增required字段",
+            SchemaRequiredChangeInRequestValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -58,7 +58,7 @@ public class SchemaRequiredChangeInRequestValidatorTest extends OasCompatibility
           }
         ),
         createViolationBoth(
-          "不允许新增required字段",
+            SchemaRequiredChangeInRequestValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaTypeFormatChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaTypeFormatChangeInRequestValidatorTest.java
index f04d4d5..a93d5e2 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaTypeFormatChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaTypeFormatChangeInRequestValidatorTest.java
@@ -47,7 +47,7 @@ public class SchemaTypeFormatChangeInRequestValidatorTest extends OasCompatibili
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "不允许(type=integer,format=null)->(type=string,format=null)的修改",
+          "the change (type=integer,format=null)->(type=string,format=null) is not allowed",
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -59,7 +59,7 @@ public class SchemaTypeFormatChangeInRequestValidatorTest extends OasCompatibili
         ),
 
         createViolationBoth(
-          "不允许(type=integer,format=null)->(type=string,format=null)的修改",
+          "the change (type=integer,format=null)->(type=string,format=null) is not allowed",
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidatorTest.java
index 4356b44..9c74e37 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/request/SchemaUniqueItemsChangeInRequestValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaUniqueItemsChangeInRequestValidatorTest extends OasCompatibil
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
@@ -59,7 +60,7 @@ public class SchemaUniqueItemsChangeInRequestValidatorTest extends OasCompatibil
           }
         ),
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidatorTest.java
index 6b9c193..e28ebe5 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaEnumChangeInResponseValidatorTest.java
@@ -47,7 +47,7 @@ public class SchemaEnumChangeInResponseValidatorTest extends OasCompatibilityTes
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "不允许新增enum",
+            SchemaEnumChangeInResponseValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidatorTest.java
index cb7ebec..3d86716 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMaximumChangeInResponseValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaExclusiveMaximumChangeInResponseValidatorTest extends OasComp
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许false->true的修改",
+          DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidatorTest.java
index 93e7d0e..cc91dfc 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaExclusiveMinimumChangeInResponseValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaExclusiveMinimumChangeInResponseValidatorTest extends OasComp
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许false->true的修改",
+          DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidatorTest.java
index fe3dd51..4dc8677 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaMultipleOfChangeInResponseValidatorTest.java
@@ -47,7 +47,7 @@ public class SchemaMultipleOfChangeInResponseValidatorTest extends OasCompatibil
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "新值必须==旧值或是旧值的倍数",
+            SchemaMultipleOfChangeInResponseValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidatorTest.java
index c90a165..a979da2 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaNullableChangeInResponseValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaNullableChangeInResponseValidatorTest extends OasCompatibilit
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许true->false的修改",
+          DiffViolationMessages.TRUE_TO_FALSE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidatorTest.java
index fbca321..cb88149 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaRequiredChangeInResponseValidatorTest.java
@@ -47,7 +47,7 @@ public class SchemaRequiredChangeInResponseValidatorTest extends OasCompatibilit
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "不允许删除required字段",
+            SchemaRequiredChangeInResponseValidator.VIOLATION_MESSAGE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaTypeFormatChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaTypeFormatChangeInResponseValidatorTest.java
index 9ad950f..5105a75 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaTypeFormatChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaTypeFormatChangeInResponseValidatorTest.java
@@ -47,7 +47,7 @@ public class SchemaTypeFormatChangeInResponseValidatorTest extends OasCompatibil
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "不允许(type=integer,format=int32)->(type=integer,format=int64)的修改",
+          "the change (type=integer,format=int32)->(type=integer,format=int64) is not allowed",
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidatorTest.java
index 12f0fe8..96ef083 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/schema/response/SchemaUniqueItemsChangeInResponseValidatorTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response;
 
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DiffViolationMessages;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.config.OasDiffValidatorsSkeletonConfiguration;
@@ -47,7 +48,7 @@ public class SchemaUniqueItemsChangeInResponseValidatorTest extends OasCompatibi
     assertThat(violations)
       .containsExactlyInAnyOrder(
         createViolationBoth(
-          "仅允许false->true的修改",
+          DiffViolationMessages.FALSE_TO_TRUE,
           new Object[] {
             "paths", PATHS,
             "/pets", PATH_ITEM,
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/DiffViolationMessages.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/DiffViolationMessages.java
index 167a1cc..f739c87 100755
--- a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/DiffViolationMessages.java
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/DiffViolationMessages.java
@@ -19,11 +19,14 @@ package org.apache.servicecomb.toolkit.oasv.diffvalidation.api;
 
 public abstract class DiffViolationMessages {
 
-  public static final String OP_DEL_FORBIDDEN = "不允许在新版本中删除";
-  public static final String OP_ADD_FORBIDDEN = "不允许在新版本中添加";
+  public static final String OP_DEL_FORBIDDEN = "deletion is no allowed on right side";
+  public static final String OP_ADD_FORBIDDEN = "adding is not allowed on right side";
 
-  public static final String NEW_NOT_EQ_OLD = "新旧值不一致";
-  public static final String NEW_NOT_GTE_OLD = "新值必须>=旧值";
-  public static final String NEW_NOT_LTE_OLD = "新值必须<=旧值";
+  public static final String NEW_NOT_EQ_OLD = "not equal on both side";
+  public static final String NEW_NOT_GTE_OLD = "left side must be >= right side";
+  public static final String NEW_NOT_LTE_OLD = "left side must be <= right side";
+
+  public static final String FALSE_TO_TRUE = "only false->true is allowed";
+  public static final String TRUE_TO_FALSE = "only true->false is allowed";
 
 }
diff --git a/oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java b/oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java
index ac5bcd5..1502a98 100644
--- a/oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java
+++ b/oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.servicecomb.toolkit.oasv.common;
 
 import static org.junit.Assert.assertEquals;
diff --git a/oas-validator/pom.xml b/oas-validator/pom.xml
index 1546299..cc48467 100644
--- a/oas-validator/pom.xml
+++ b/oas-validator/pom.xml
@@ -39,7 +39,7 @@
     <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
     <maven.surefire.version>3.0.0-M3</maven.surefire.version>
 
-    <swagger-parser.version>2.0.12</swagger-parser.version>
+    <swagger-parser.version>2.0.15</swagger-parser.version>
     <commons-collections4.version>4.3</commons-collections4.version>
     <commons-io.version>2.6</commons-io.version>
     <spring-boot.version>2.1.4.RELEASE</spring-boot.version>


[servicecomb-toolkit] 02/07: SCB-1555 Integrate oas-validator compability check to cli Add subcommands checkcompatibility and cs to cli

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit 37da70ba772f66f4d5f0d1ce8c55a3fecb91517b
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Thu Nov 7 14:25:47 2019 +0800

    SCB-1555 Integrate oas-validator compability check to cli
    Add subcommands checkcompatibility and cs to cli
---
 cli/pom.xml                                        |   5 +
 .../toolkit/cli/CheckCompatibility.java            |  26 +++++
 .../toolkit/cli/CheckCompatibilityAbbr.java        |  26 +++++
 .../toolkit/cli/CheckCompatibilityBase.java        | 129 +++++++++++++++++++++
 .../servicecomb/toolkit/cli/CheckStyleBase.java    |  14 +--
 .../servicecomb/toolkit/cli/ToolkitMain.java       |   7 +-
 .../apache/servicecomb/toolkit/cli/CliTest.java    |  25 +++-
 .../{parser-test.yaml => compatibility-left.yaml}  |   6 +-
 .../{parser-test.yaml => compatibility-right.yaml} |   8 +-
 .../resources/oas/{parser-test.yaml => style.yaml} |   0
 ...dingAllowedReservedChangeDiffValidatorTest.java |   1 -
 .../oasv/common/OasObjectPropertyLocation.java     |  14 +++
 .../oasv/common/OasObjectPropertyLocationTest.java |  16 +++
 13 files changed, 259 insertions(+), 18 deletions(-)

diff --git a/cli/pom.xml b/cli/pom.xml
index 6a222d7..4499804 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -85,6 +85,11 @@
       <groupId>org.apache.servicecomb.toolkit</groupId>
       <artifactId>oas-validator-compliance</artifactId>
     </dependency>
+
+    <dependency>
+      <groupId>org.apache.servicecomb.toolkit</groupId>
+      <artifactId>oas-validator-compatibility</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibility.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibility.java
new file mode 100644
index 0000000..c12439d
--- /dev/null
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibility.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.cli;
+
+import io.airlift.airline.Command;
+
+@Command(name = "checkcompatibility",
+    description = "Check compatibility for two OpenAPI v3 spec yamls, right one should be semantically compatible with left one")
+public class CheckCompatibility extends CheckCompatibilityBase {
+
+}
diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityAbbr.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityAbbr.java
new file mode 100644
index 0000000..2f14b2b
--- /dev/null
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityAbbr.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.cli;
+
+import io.airlift.airline.Command;
+
+@Command(name = "cc",
+    description = "Check compatibility for two OpenAPI v3 spec yamls, right one should be semantically compatible with left one")
+public class CheckCompatibilityAbbr extends CheckCompatibilityBase {
+
+}
diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityBase.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityBase.java
new file mode 100644
index 0000000..298132f
--- /dev/null
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckCompatibilityBase.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.cli;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.StringJoiner;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.io.FileUtils;
+import org.apache.servicecomb.toolkit.oasv.common.OasObjectPropertyLocation;
+import org.apache.servicecomb.toolkit.oasv.compatibility.CompatibilityCheckParser;
+import org.apache.servicecomb.toolkit.oasv.compatibility.factory.DefaultOasSpecDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffValidationContext;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasDiffViolation;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasSpecDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.OasSpecDiffValidatorFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+import io.airlift.airline.Arguments;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
+
+public class CheckCompatibilityBase implements Runnable {
+
+  private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
+
+  @Arguments(
+      title = "files", required = true,
+      description = "Two OpenAPI v3 spec yamls"
+  )
+  private List<String> filePaths;
+
+  @Override
+  public void run() {
+
+    if (filePaths.size() != 2) {
+      LOGGER.error("Require 2 files");
+      return;
+    }
+
+    OpenAPI oldOas = null;
+    OpenAPI newOas = null;
+    try {
+      oldOas = loadOpenApi(filePaths.get(0));
+      newOas = loadOpenApi(filePaths.get(1));
+    } catch (Exception e) {
+      LOGGER.error(e.getMessage());
+      return;
+    }
+
+    OasSpecDiffValidator diffValidator = createOasSpecDiffValidator();
+
+    List<OasDiffViolation> violations = diffValidator.validate(createContext(oldOas, newOas), oldOas, newOas);
+
+    if (CollectionUtils.isNotEmpty(violations)) {
+      for (OasDiffViolation violation : violations) {
+        LOGGER.info("left  : {}\nright : {}\nerror : {}\n------",
+            OasObjectPropertyLocation.toPathString(violation.getLeftLocation()),
+            OasObjectPropertyLocation.toPathString(violation.getRightLocation()),
+            violation.getError()
+        );
+      }
+      return;
+    }
+    LOGGER.info("Everything is good");
+  }
+
+  private OpenAPI loadOpenApi(String filePath) throws IOException {
+    String yaml = loadFileContent(filePath);
+    SwaggerParseResult oldParseResult = CompatibilityCheckParser.parseYaml(yaml);
+    OpenAPI openAPI = oldParseResult.getOpenAPI();
+    if (openAPI == null) {
+      StringJoiner errors = new StringJoiner("\n", "Parse errors:", "");
+      if (CollectionUtils.isNotEmpty(oldParseResult.getMessages())) {
+        for (String message : oldParseResult.getMessages()) {
+          errors.add(message);
+        }
+      }
+      throw new RuntimeException(errors.toString());
+    }
+
+    return openAPI;
+  }
+
+
+  private OasSpecDiffValidator createOasSpecDiffValidator() {
+    AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
+        DefaultOasSpecDiffValidatorFactory.class.getPackage().getName());
+    try {
+      OasSpecDiffValidatorFactory diffValidatorFactory = ctx.getBean(OasSpecDiffValidatorFactory.class);
+      return diffValidatorFactory.create();
+    } finally {
+      ctx.close();
+    }
+  }
+
+
+  private String loadFileContent(String filePath) throws IOException {
+    Path specPath = Paths.get(filePath);
+    specPath.toAbsolutePath().toString();
+    return FileUtils.readFileToString(specPath.toFile());
+  }
+
+  private OasDiffValidationContext createContext(OpenAPI leftOpenAPI, OpenAPI rightOpenAPI) {
+
+    OasDiffValidationContext context = new OasDiffValidationContext(leftOpenAPI, rightOpenAPI);
+    return context;
+  }
+}
diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckStyleBase.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckStyleBase.java
index e021d9f..393d97d 100644
--- a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckStyleBase.java
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/CheckStyleBase.java
@@ -24,7 +24,6 @@ import java.util.List;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FileUtils;
-import org.apache.servicecomb.toolkit.oasv.common.OasObjectProperty;
 import org.apache.servicecomb.toolkit.oasv.common.OasObjectPropertyLocation;
 import org.apache.servicecomb.toolkit.oasv.compliance.ComplianceCheckParser;
 import org.apache.servicecomb.toolkit.oasv.compliance.factory.DefaultOasSpecValidatorFactory;
@@ -37,7 +36,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
 import io.airlift.airline.Arguments;
-import io.airlift.airline.Command;
 import io.swagger.v3.oas.models.OpenAPI;
 import io.swagger.v3.parser.core.models.SwaggerParseResult;
 
@@ -79,22 +77,14 @@ public class CheckStyleBase implements Runnable {
     List<OasViolation> violations = oasSpecValidator.validate(createContext(openAPI), openAPI);
     if (CollectionUtils.isNotEmpty(violations)) {
       for (OasViolation violation : violations) {
-        LOGGER.info("{}: {}", toPathString(violation.getLocation()), violation.getError());
+        LOGGER.info("path  : {}\nerror : {}\n------",
+            OasObjectPropertyLocation.toPathString(violation.getLocation()), violation.getError());
       }
       return;
     }
     LOGGER.info("Everything is good");
   }
 
-  private String toPathString(OasObjectPropertyLocation location) {
-    StringBuilder sb = new StringBuilder();
-    List<OasObjectProperty> path = location.getPath();
-    for (OasObjectProperty property : path) {
-      sb.append(property.getName()).append('.');
-    }
-    sb.deleteCharAt(sb.length() - 1);
-    return sb.toString();
-  }
 
   private OasSpecValidator createOasSpecValidator() {
     AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java
index 39b2477..5a75e86 100755
--- a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java
@@ -37,7 +37,12 @@ public class ToolkitMain {
     builder.withDescription("Microservice development toolkit(version " + projectVersion
         + "). ");
     builder.withDefaultCommand(Help.class);
-    builder.withCommands(CodeGenerate.class, DocGenerate.class, CheckStyle.class, CheckStyleAbbr.class, Help.class);
+    builder.withCommands(
+        CodeGenerate.class, DocGenerate.class,
+        CheckStyle.class, CheckStyleAbbr.class,
+        CheckCompatibility.class, CheckCompatibilityAbbr.class,
+        Help.class
+    );
     Runnable cmd = builder.build().parse(args);
 
     cmd.run();
diff --git a/cli/src/test/java/org/apache/servicecomb/toolkit/cli/CliTest.java b/cli/src/test/java/org/apache/servicecomb/toolkit/cli/CliTest.java
index 2068ddb..5990a0b 100755
--- a/cli/src/test/java/org/apache/servicecomb/toolkit/cli/CliTest.java
+++ b/cli/src/test/java/org/apache/servicecomb/toolkit/cli/CliTest.java
@@ -95,7 +95,7 @@ public class CliTest {
   public void testCheckStyle() throws IOException {
     String[] args = new String[] {
         "checkstyle",
-        Paths.get("./src/test/resources/oas/parser-test.yaml").toFile().getCanonicalPath()
+        Paths.get("./src/test/resources/oas/style.yaml").toFile().getCanonicalPath()
     };
     ToolkitMain.main(args);
   }
@@ -104,9 +104,30 @@ public class CliTest {
   public void testCheckStyleAbbr() throws IOException {
     String[] args = new String[] {
         "cs",
-        Paths.get("./src/test/resources/oas/parser-test.yaml").toFile().getCanonicalPath()
+        Paths.get("./src/test/resources/oas/style.yaml").toFile().getCanonicalPath()
     };
     ToolkitMain.main(args);
   }
 
+  @Test
+  public void testCheckCompatibility() throws IOException {
+    String[] args = new String[] {
+        "checkcompatibility",
+        Paths.get("./src/test/resources/oas/compatibility-left.yaml").toFile().getCanonicalPath(),
+        Paths.get("./src/test/resources/oas/compatibility-right.yaml").toFile().getCanonicalPath()
+    };
+    ToolkitMain.main(args);
+  }
+
+  @Test
+  public void testCheckCompatibilityAbbr() throws IOException {
+    String[] args = new String[] {
+        "cc",
+        Paths.get("./src/test/resources/oas/compatibility-left.yaml").toFile().getCanonicalPath(),
+        Paths.get("./src/test/resources/oas/compatibility-right.yaml").toFile().getCanonicalPath()
+    };
+    ToolkitMain.main(args);
+  }
+
+
 }
diff --git a/cli/src/test/resources/oas/parser-test.yaml b/cli/src/test/resources/oas/compatibility-left.yaml
old mode 100644
new mode 100755
similarity index 94%
copy from cli/src/test/resources/oas/parser-test.yaml
copy to cli/src/test/resources/oas/compatibility-left.yaml
index f7b88b5..ea3e0e8
--- a/cli/src/test/resources/oas/parser-test.yaml
+++ b/cli/src/test/resources/oas/compatibility-left.yaml
@@ -17,7 +17,11 @@
 openapi: "3.0.0"
 info:
   version: 1.0.0
-  title: Pet petstore
+  title: Swagger petstore
+  license:
+    name: MIT
+servers:
+  - url: http://petstore.swagger.io/v1
 paths:
   /pets:
     get:
diff --git a/cli/src/test/resources/oas/parser-test.yaml b/cli/src/test/resources/oas/compatibility-right.yaml
old mode 100644
new mode 100755
similarity index 90%
copy from cli/src/test/resources/oas/parser-test.yaml
copy to cli/src/test/resources/oas/compatibility-right.yaml
index f7b88b5..5854b12
--- a/cli/src/test/resources/oas/parser-test.yaml
+++ b/cli/src/test/resources/oas/compatibility-right.yaml
@@ -17,7 +17,11 @@
 openapi: "3.0.0"
 info:
   version: 1.0.0
-  title: Pet petstore
+  title: Swagger petstore
+  license:
+    name: MIT
+servers:
+  - url: http://petstore.swagger.io/v1
 paths:
   /pets:
     get:
@@ -43,6 +47,8 @@ paths:
             encoding:
               foo:
                 contentType: 'application/octet-stream'
+              bar:
+                contentType: 'application/octet-stream'
       responses:
         '200':
           description: A paged array of pets
diff --git a/cli/src/test/resources/oas/parser-test.yaml b/cli/src/test/resources/oas/style.yaml
similarity index 100%
rename from cli/src/test/resources/oas/parser-test.yaml
rename to cli/src/test/resources/oas/style.yaml
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java
index d9d640f..e0e7e51 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/encoding/EncodingAllowedReservedChangeDiffValidatorTest.java
@@ -40,7 +40,6 @@ public class EncodingAllowedReservedChangeDiffValidatorTest extends OasCompatibi
   @Test
   public void validate() {
     OpenAPI leftOpenAPI = loadRelative("petstore-encoding-allow-reserved-a.yaml");
-    System.out.println(leftOpenAPI.toString());
     OpenAPI rightOpenAPI = loadRelative("petstore-encoding-allow-reserved-b.yaml");
     List<OasDiffViolation> violations = oasSpecDiffValidator
       .validate(createContext(leftOpenAPI, rightOpenAPI), leftOpenAPI, rightOpenAPI);
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocation.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocation.java
index 346e667..a97ef0f 100755
--- a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocation.java
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocation.java
@@ -117,4 +117,18 @@ public class OasObjectPropertyLocation {
       .add("path=" + path)
       .toString();
   }
+
+  public static String toPathString(OasObjectPropertyLocation location) {
+    if (location == null) {
+      return "";
+    }
+
+    StringBuilder sb = new StringBuilder();
+    List<OasObjectProperty> path = location.getPath();
+    for (OasObjectProperty property : path) {
+      sb.append(property.getName()).append('.');
+    }
+    sb.deleteCharAt(sb.length() - 1);
+    return sb.toString();
+  }
 }
diff --git a/oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java b/oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java
new file mode 100644
index 0000000..ac5bcd5
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/test/java/org/apache/servicecomb/toolkit/oasv/common/OasObjectPropertyLocationTest.java
@@ -0,0 +1,16 @@
+package org.apache.servicecomb.toolkit.oasv.common;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class OasObjectPropertyLocationTest {
+
+  @Test
+  public void toPathString() {
+    assertEquals("$.foo.bar",
+        OasObjectPropertyLocation.toPathString(OasObjectPropertyLocation.root().property("foo").property("bar")));
+
+    assertEquals("", OasObjectPropertyLocation.toPathString(null));
+  }
+}


[servicecomb-toolkit] 05/07: remove stdout in test

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit a92f7f70b3108255e51447faeb2e12377477b63c
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Thu Nov 7 15:32:29 2019 +0800

    remove stdout in test
---
 .../parameter/ParameterAllowReservedChangeDiffValidatorTest.java         | 1 -
 1 file changed, 1 deletion(-)

diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java
index 70b82a8..a5a4b5b 100755
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/validators/parameter/ParameterAllowReservedChangeDiffValidatorTest.java
@@ -45,7 +45,6 @@ public class ParameterAllowReservedChangeDiffValidatorTest extends OasCompatibil
   @Test
   public void validateBroken() {
     OpenAPI leftOpenAPI = loadRelative("petstore-parameter-allow-reserved-a.yaml");
-    System.out.println(leftOpenAPI.toString());
     OpenAPI rightOpenAPI = loadRelative("petstore-parameter-allow-reserved-b.yaml");
     List<OasDiffViolation> violations = oasSpecDiffValidator
       .validate(createContext(leftOpenAPI, rightOpenAPI), leftOpenAPI, rightOpenAPI);


[servicecomb-toolkit] 06/07: SCB-1555 Integrate oas-validator compability check to cli Remove useless ExampleDiffValidator

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit 6f295441e46133ffe137e6daf8bddc1368ff83a7
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Thu Nov 7 17:19:15 2019 +0800

    SCB-1555 Integrate oas-validator compability check to cli
    Remove useless ExampleDiffValidator
---
 .../DefaultComponentsDiffValidatorFactory.java     |  7 ---
 .../DefaultExampleDiffValidatorFactory.java        | 34 --------------
 .../DefaultExampleDiffValidatorFactoryTest.java    | 43 -----------------
 .../OasDiffValidatorsSkeletonConfiguration.java    | 47 ++++++++++++++-----
 .../diffvalidation/api/ExampleDiffValidator.java   | 23 ---------
 .../factory/ExampleDiffValidatorFactory.java       | 23 ---------
 .../ComponentsExamplesDiffValidator.java           | 54 ----------------------
 7 files changed, 36 insertions(+), 195 deletions(-)

diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java
index 213d441..ab791ee 100644
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java
@@ -24,14 +24,12 @@ import java.util.List;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ComponentsDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.CallbackDiffValidatorFactory;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ComponentsDiffValidatorFactory;
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ExampleDiffValidatorFactory;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.HeaderDiffValidatorFactory;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.LinkDiffValidatorFactory;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ParameterDiffValidatorFactory;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.RequestBodyDiffValidatorFactory;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ResponseDiffValidatorFactory;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsCallbacksDiffValidator;
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsExamplesDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsHeadersDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsLinksDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsParametersDiffValidator;
@@ -44,8 +42,6 @@ public class DefaultComponentsDiffValidatorFactory implements ComponentsDiffVali
 
   private final CallbackDiffValidatorFactory callbackDiffValidatorFactory;
 
-  private final ExampleDiffValidatorFactory exampleDiffValidatorFactory;
-
   private final HeaderDiffValidatorFactory headerDiffValidatorFactory;
 
   private final LinkDiffValidatorFactory linkDiffValidatorFactory;
@@ -58,14 +54,12 @@ public class DefaultComponentsDiffValidatorFactory implements ComponentsDiffVali
 
   public DefaultComponentsDiffValidatorFactory(
       CallbackDiffValidatorFactory callbackDiffValidatorFactory,
-      ExampleDiffValidatorFactory exampleDiffValidatorFactory,
       HeaderDiffValidatorFactory headerDiffValidatorFactory,
       LinkDiffValidatorFactory linkDiffValidatorFactory,
       ParameterDiffValidatorFactory parameterDiffValidatorFactory,
       RequestBodyDiffValidatorFactory requestBodyDiffValidatorFactory,
       ResponseDiffValidatorFactory responseDiffValidatorFactory) {
     this.callbackDiffValidatorFactory = callbackDiffValidatorFactory;
-    this.exampleDiffValidatorFactory = exampleDiffValidatorFactory;
     this.headerDiffValidatorFactory = headerDiffValidatorFactory;
     this.linkDiffValidatorFactory = linkDiffValidatorFactory;
     this.parameterDiffValidatorFactory = parameterDiffValidatorFactory;
@@ -80,7 +74,6 @@ public class DefaultComponentsDiffValidatorFactory implements ComponentsDiffVali
 
     // skeletons
     validators.add(new ComponentsCallbacksDiffValidator(callbackDiffValidatorFactory.create()));
-    validators.add(new ComponentsExamplesDiffValidator(exampleDiffValidatorFactory.create()));
     validators.add(new ComponentsHeadersDiffValidator(headerDiffValidatorFactory.create()));
     validators.add(new ComponentsLinksDiffValidator(linkDiffValidatorFactory.create()));
     validators.add(new ComponentsParametersDiffValidator(parameterDiffValidatorFactory.create()));
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactory.java
deleted file mode 100644
index 30d8190..0000000
--- a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ExampleDiffValidator;
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ExampleDiffValidatorFactory;
-import org.springframework.stereotype.Component;
-
-@Component
-public class DefaultExampleDiffValidatorFactory implements ExampleDiffValidatorFactory {
-
-  @Override
-  public List<ExampleDiffValidator> create() {
-    return Collections.emptyList();
-  }
-}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactoryTest.java
deleted file mode 100644
index 989c4af..0000000
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactoryTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.List;
-
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ExampleDiffValidator;
-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;
-
-@RunWith(SpringRunner.class)
-@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
-public class DefaultExampleDiffValidatorFactoryTest {
-
-  @Autowired
-  private DefaultExampleDiffValidatorFactory validatorFactory;
-
-  @Test
-  public void create() {
-    List<ExampleDiffValidator> validators = validatorFactory.create();
-    assertThat(validators).isEmpty();
-  }
-}
diff --git a/oas-validator/oas-validator-core-spring/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/config/OasDiffValidatorsSkeletonConfiguration.java b/oas-validator/oas-validator-core-spring/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/config/OasDiffValidatorsSkeletonConfiguration.java
index 9d2b8eb..8518099 100755
--- a/oas-validator/oas-validator-core-spring/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/config/OasDiffValidatorsSkeletonConfiguration.java
+++ b/oas-validator/oas-validator-core-spring/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/config/OasDiffValidatorsSkeletonConfiguration.java
@@ -17,13 +17,46 @@
 
 package org.apache.servicecomb.toolkit.oasv.diffvalidation.config;
 
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.*;
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.*;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.CallbackDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ComponentsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DefaultOasSpecDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.EncodingDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.HeaderDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.InfoDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.LinkDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.MediaTypeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasSpecDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OpenApiDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OperationDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ParameterDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathItemDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.RequestBodyDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponseDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponsesDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaAddValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaDelValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ServerDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.TagDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsCallbacksDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsHeadersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsLinksDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsParametersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsRequestBodiesDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsResponsesDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.encoding.EncodingHeadersDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.header.HeaderSchemaDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.mediatype.MediaTypeEncodingDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.mediatype.MediaTypeSchemaDiffValidator;
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.*;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiComponentsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiInfoDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiPathsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiServersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiTagsDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.operation.OperationParametersDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.operation.OperationRequestBodyDiffValidator;
 import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.operation.OperationResponsesDiffValidator;
@@ -40,8 +73,6 @@ import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.schema.Schema
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import java.util.List;
-
 @Configuration
 public class OasDiffValidatorsSkeletonConfiguration {
 
@@ -57,12 +88,6 @@ public class OasDiffValidatorsSkeletonConfiguration {
   }
 
   @Bean
-  public ComponentsDiffValidator componentsExamplesDiffValidator(
-    List<ExampleDiffValidator> diffValidators) {
-    return new ComponentsExamplesDiffValidator(diffValidators);
-  }
-
-  @Bean
   public ComponentsDiffValidator componentsHeadersDiffValidator(
     List<HeaderDiffValidator> diffValidators) {
     return new ComponentsHeadersDiffValidator(diffValidators);
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/ExampleDiffValidator.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/ExampleDiffValidator.java
deleted file mode 100755
index 59fd890..0000000
--- a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/api/ExampleDiffValidator.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.toolkit.oasv.diffvalidation.api;
-
-import io.swagger.v3.oas.models.examples.Example;
-
-public interface ExampleDiffValidator extends OasObjectDiffValidator<Example> {
-}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ExampleDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ExampleDiffValidatorFactory.java
deleted file mode 100755
index 237179c..0000000
--- a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ExampleDiffValidatorFactory.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
-
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ExampleDiffValidator;
-
-public interface ExampleDiffValidatorFactory extends OasObjectDiffValidatorFactory<ExampleDiffValidator> {
-}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/skeleton/components/ComponentsExamplesDiffValidator.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/skeleton/components/ComponentsExamplesDiffValidator.java
deleted file mode 100755
index 42e86bb..0000000
--- a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/skeleton/components/ComponentsExamplesDiffValidator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components;
-
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ComponentsDiffValidator;
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ExampleDiffValidator;
-import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.MapPropertyDiffValidator;
-import org.apache.servicecomb.toolkit.oasv.common.OasObjectType;
-import io.swagger.v3.oas.models.Components;
-import io.swagger.v3.oas.models.examples.Example;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.servicecomb.toolkit.oasv.common.OasObjectType.EXAMPLE;
-
-public class ComponentsExamplesDiffValidator
-  extends MapPropertyDiffValidator<Components, Example>
-  implements ComponentsDiffValidator {
-
-  public ComponentsExamplesDiffValidator(List<ExampleDiffValidator> diffValidators) {
-    super(diffValidators);
-  }
-
-  @Override
-  protected Map<String, Example> getMapProperty(Components oasObject) {
-    return oasObject.getExamples();
-  }
-
-  @Override
-  protected String getMapPropertyName() {
-    return "examples";
-  }
-
-  @Override
-  protected OasObjectType getValueType() {
-    return EXAMPLE;
-  }
-}


[servicecomb-toolkit] 01/07: SCB-1555 Integrate oas-validator compability check to cli Add factories for compatibility check validators

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit f00406ca691b258cb14fffb5f9fa4b3f654a92c4
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Thu Nov 7 13:54:13 2019 +0800

    SCB-1555 Integrate oas-validator compability check to cli
    Add factories for compatibility check validators
---
 oas-validator/oas-validator-compatibility/pom.xml  |  11 ++
 .../DefaultCallbackDiffValidatorFactory.java       |  35 ++++++
 .../DefaultComponentsDiffValidatorFactory.java     |  94 ++++++++++++++
 .../DefaultEncodingDiffValidatorFactory.java       |  64 ++++++++++
 .../DefaultExampleDiffValidatorFactory.java        |  34 ++++++
 .../factory/DefaultHeaderDiffValidatorFactory.java |  56 +++++++++
 .../factory/DefaultInfoDiffValidatorFactory.java   |  35 ++++++
 .../factory/DefaultLinkDiffValidatorFactory.java   |  35 ++++++
 .../DefaultMediaTypeDiffValidatorFactory.java      |  67 ++++++++++
 .../DefaultOasSpecDiffValidatorFactory.java        |  40 ++++++
 .../DefaultOpenApiDiffValidatorFactory.java        |  80 ++++++++++++
 .../DefaultOperationDiffValidatorFactory.java      |  70 +++++++++++
 .../DefaultParameterDiffValidatorFactory.java      |  72 +++++++++++
 .../DefaultPathItemDiffValidatorFactory.java       |  61 ++++++++++
 .../factory/DefaultPathsDiffValidatorFactory.java  |  51 ++++++++
 .../DefaultRequestBodyDiffValidatorFactory.java    |  54 +++++++++
 .../DefaultResponseDiffValidatorFactory.java       |  61 ++++++++++
 .../DefaultResponsesDiffValidatorFactory.java      |  52 ++++++++
 .../factory/DefaultSchemaDiffValidatorFactory.java | 135 +++++++++++++++++++++
 .../DefaultSecuritySchemeDiffValidatorFactory.java |  35 ++++++
 .../factory/DefaultServerDiffValidatorFactory.java |  34 ++++++
 .../factory/DefaultTagDiffValidatorFactory.java    |  34 ++++++
 .../DefaultCallbackDiffValidatorFactoryTest.java   |  43 +++++++
 .../DefaultComponentsDiffValidatorFactoryTest.java |  46 +++++++
 .../DefaultEncodingDiffValidatorFactoryTest.java   |  46 +++++++
 .../DefaultExampleDiffValidatorFactoryTest.java    |  43 +++++++
 .../DefaultInfoDiffValidatorFactoryTest.java       |  43 +++++++
 .../DefaultLinkDiffValidatorFactoryTest.java       |  43 +++++++
 .../DefaultMediaTypeDiffValidatorFactoryTest.java  |  46 +++++++
 .../DefaultOasSpecDiffValidatorFactoryTest.java    |  39 ++++++
 .../DefaultOpenApiDiffValidatorFactoryTest.java    |  46 +++++++
 .../DefaultOperationDiffValidatorFactoryTest.java  |  43 +++++++
 .../DefaultParameterDiffValidatorFactoryTest.java  |  43 +++++++
 .../DefaultPathItemDiffValidatorFactoryTest.java   |  46 +++++++
 .../DefaultPathsDiffValidatorFactoryTest.java      |  46 +++++++
 ...DefaultRequestBodyDiffValidatorFactoryTest.java |  46 +++++++
 .../DefaultResponseDiffValidatorFactoryTest.java   |  46 +++++++
 .../DefaultResponsesDiffValidatorFactoryTest.java  |  46 +++++++
 .../DefaultSchemaDiffValidatorFactoryTest.java     |  46 +++++++
 ...aultSecuritySchemeDiffValidatorFactoryTest.java |  46 +++++++
 .../DefaultServerDiffValidatorFactoryTest.java     |  46 +++++++
 .../DefaultTagDiffValidatorFactoryTest.java        |  46 +++++++
 .../DiffValidatorFactoryTestConfiguration.java     |  26 ++++
 .../factory/CallbackDiffValidatorFactory.java      |  23 ++++
 .../factory/ComponentsDiffValidatorFactory.java    |  23 ++++
 .../factory/EncodingDiffValidatorFactory.java      |  23 ++++
 .../factory/ExampleDiffValidatorFactory.java       |  23 ++++
 .../factory/HeaderDiffValidatorFactory.java        |  23 ++++
 .../factory/InfoDiffValidatorFactory.java          |  23 ++++
 .../factory/LinkDiffValidatorFactory.java          |  23 ++++
 .../factory/MediaTypeDiffValidatorFactory.java     |  23 ++++
 .../factory/OasObjectDiffValidatorFactory.java     |  27 +++++
 .../factory/OasSpecDiffValidatorFactory.java       |  26 ++++
 .../factory/OpenApiDiffValidatorFactory.java       |  23 ++++
 .../factory/OperationDiffValidatorFactory.java     |  23 ++++
 .../factory/ParameterDiffValidatorFactory.java     |  23 ++++
 .../factory/PathItemDiffValidatorFactory.java      |  23 ++++
 .../factory/PathsDiffValidatorFactory.java         |  23 ++++
 .../factory/RequestBodyDiffValidatorFactory.java   |  23 ++++
 .../factory/ResponseDiffValidatorFactory.java      |  23 ++++
 .../factory/ResponsesDiffValidatorFactory.java     |  23 ++++
 .../factory/SchemaDiffValidatorFactory.java        |  23 ++++
 .../SecuritySchemeDiffValidatorFactory.java        |  23 ++++
 .../factory/ServerDiffValidatorFactory.java        |  23 ++++
 .../factory/TagDiffValidatorFactory.java           |  23 ++++
 65 files changed, 2644 insertions(+)

diff --git a/oas-validator/oas-validator-compatibility/pom.xml b/oas-validator/oas-validator-compatibility/pom.xml
index 2e95188..1a2c926 100644
--- a/oas-validator/oas-validator-compatibility/pom.xml
+++ b/oas-validator/oas-validator-compatibility/pom.xml
@@ -37,6 +37,17 @@
       <artifactId>oas-validator-core</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
     <!-- test deps -->
     <dependency>
       <groupId>org.apache.servicecomb.toolkit</groupId>
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactory.java
new file mode 100644
index 0000000..d411b7a
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactory.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.CallbackDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.CallbackDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultCallbackDiffValidatorFactory implements CallbackDiffValidatorFactory {
+
+  @Override
+  public List<CallbackDiffValidator> create() {
+    return Collections.emptyList();
+  }
+
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java
new file mode 100644
index 0000000..213d441
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactory.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ComponentsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.CallbackDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ComponentsDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ExampleDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.HeaderDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.LinkDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ParameterDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.RequestBodyDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ResponseDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsCallbacksDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsExamplesDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsHeadersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsLinksDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsParametersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsRequestBodiesDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.components.ComponentsResponsesDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultComponentsDiffValidatorFactory implements ComponentsDiffValidatorFactory {
+
+  private final CallbackDiffValidatorFactory callbackDiffValidatorFactory;
+
+  private final ExampleDiffValidatorFactory exampleDiffValidatorFactory;
+
+  private final HeaderDiffValidatorFactory headerDiffValidatorFactory;
+
+  private final LinkDiffValidatorFactory linkDiffValidatorFactory;
+
+  private final ParameterDiffValidatorFactory parameterDiffValidatorFactory;
+
+  private final RequestBodyDiffValidatorFactory requestBodyDiffValidatorFactory;
+
+  private final ResponseDiffValidatorFactory responseDiffValidatorFactory;
+
+  public DefaultComponentsDiffValidatorFactory(
+      CallbackDiffValidatorFactory callbackDiffValidatorFactory,
+      ExampleDiffValidatorFactory exampleDiffValidatorFactory,
+      HeaderDiffValidatorFactory headerDiffValidatorFactory,
+      LinkDiffValidatorFactory linkDiffValidatorFactory,
+      ParameterDiffValidatorFactory parameterDiffValidatorFactory,
+      RequestBodyDiffValidatorFactory requestBodyDiffValidatorFactory,
+      ResponseDiffValidatorFactory responseDiffValidatorFactory) {
+    this.callbackDiffValidatorFactory = callbackDiffValidatorFactory;
+    this.exampleDiffValidatorFactory = exampleDiffValidatorFactory;
+    this.headerDiffValidatorFactory = headerDiffValidatorFactory;
+    this.linkDiffValidatorFactory = linkDiffValidatorFactory;
+    this.parameterDiffValidatorFactory = parameterDiffValidatorFactory;
+    this.requestBodyDiffValidatorFactory = requestBodyDiffValidatorFactory;
+    this.responseDiffValidatorFactory = responseDiffValidatorFactory;
+  }
+
+  @Override
+  public List<ComponentsDiffValidator> create() {
+
+    List<ComponentsDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new ComponentsCallbacksDiffValidator(callbackDiffValidatorFactory.create()));
+    validators.add(new ComponentsExamplesDiffValidator(exampleDiffValidatorFactory.create()));
+    validators.add(new ComponentsHeadersDiffValidator(headerDiffValidatorFactory.create()));
+    validators.add(new ComponentsLinksDiffValidator(linkDiffValidatorFactory.create()));
+    validators.add(new ComponentsParametersDiffValidator(parameterDiffValidatorFactory.create()));
+    validators.add(new ComponentsRequestBodiesDiffValidator(requestBodyDiffValidatorFactory.create()));
+    validators.add(new ComponentsResponsesDiffValidator(responseDiffValidatorFactory.create()));
+
+    // concretes
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactory.java
new file mode 100644
index 0000000..92435ab
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactory.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding.EncodingAddNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding.EncodingAllowedReservedChangeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding.EncodingContentTypeNotSameDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding.EncodingDelNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding.EncodingExplodeNotSameDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.encoding.EncodingStyleNotSameDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.EncodingDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.EncodingDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.HeaderDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.encoding.EncodingHeadersDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultEncodingDiffValidatorFactory implements EncodingDiffValidatorFactory {
+
+  private final HeaderDiffValidatorFactory headerDiffValidatorFactory;
+
+  public DefaultEncodingDiffValidatorFactory(
+      HeaderDiffValidatorFactory headerDiffValidatorFactory) {
+    this.headerDiffValidatorFactory = headerDiffValidatorFactory;
+  }
+
+  @Override
+  public List<EncodingDiffValidator> create() {
+
+    List<EncodingDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new EncodingHeadersDiffValidator(headerDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new EncodingAddNotAllowedDiffValidator());
+    validators.add(new EncodingDelNotAllowedDiffValidator());
+    validators.add(new EncodingAllowedReservedChangeDiffValidator());
+    validators.add(new EncodingContentTypeNotSameDiffValidator());
+    validators.add(new EncodingExplodeNotSameDiffValidator());
+    validators.add(new EncodingStyleNotSameDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactory.java
new file mode 100644
index 0000000..30d8190
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ExampleDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ExampleDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultExampleDiffValidatorFactory implements ExampleDiffValidatorFactory {
+
+  @Override
+  public List<ExampleDiffValidator> create() {
+    return Collections.emptyList();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultHeaderDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultHeaderDiffValidatorFactory.java
new file mode 100644
index 0000000..ccac11e
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultHeaderDiffValidatorFactory.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.header.HeaderAddInRequestBodyNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.header.HeaderDelInResponseNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.HeaderDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.HeaderDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.SchemaDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.header.HeaderSchemaDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultHeaderDiffValidatorFactory implements HeaderDiffValidatorFactory {
+
+  private final SchemaDiffValidatorFactory schemaDiffValidatorFactory;
+
+  public DefaultHeaderDiffValidatorFactory(
+      SchemaDiffValidatorFactory schemaDiffValidatorFactory) {
+    this.schemaDiffValidatorFactory = schemaDiffValidatorFactory;
+  }
+
+  @Override
+  public List<HeaderDiffValidator> create() {
+
+    List<HeaderDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new HeaderSchemaDiffValidator(schemaDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new HeaderAddInRequestBodyNotAllowedDiffValidator());
+    validators.add(new HeaderDelInResponseNotAllowedDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactory.java
new file mode 100644
index 0000000..cdfd1d7
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactory.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.InfoDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.InfoDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultInfoDiffValidatorFactory implements InfoDiffValidatorFactory {
+
+  @Override
+  public List<InfoDiffValidator> create() {
+    return Collections.emptyList();
+  }
+
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactory.java
new file mode 100644
index 0000000..6ad9730
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactory.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.LinkDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.LinkDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultLinkDiffValidatorFactory implements LinkDiffValidatorFactory {
+
+  @Override
+  public List<LinkDiffValidator> create() {
+    return Collections.emptyList();
+  }
+
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactory.java
new file mode 100644
index 0000000..d8592e9
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactory.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.mediatype.MediaTypeAddInParameterNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.mediatype.MediaTypeDelInParameterNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.mediatype.MediaTypeDelInRequestBodyNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.mediatype.MediaTypeDelInResponseNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.MediaTypeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.EncodingDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.MediaTypeDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.SchemaDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.mediatype.MediaTypeEncodingDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.mediatype.MediaTypeSchemaDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultMediaTypeDiffValidatorFactory implements MediaTypeDiffValidatorFactory {
+
+  private final EncodingDiffValidatorFactory encodingDiffValidatorFactory;
+
+  private final SchemaDiffValidatorFactory schemaDiffValidatorFactory;
+
+  public DefaultMediaTypeDiffValidatorFactory(
+      EncodingDiffValidatorFactory encodingDiffValidatorFactory,
+      SchemaDiffValidatorFactory schemaDiffValidatorFactory) {
+    this.encodingDiffValidatorFactory = encodingDiffValidatorFactory;
+    this.schemaDiffValidatorFactory = schemaDiffValidatorFactory;
+  }
+
+  @Override
+  public List<MediaTypeDiffValidator> create() {
+
+    List<MediaTypeDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new MediaTypeEncodingDiffValidator(encodingDiffValidatorFactory.create()));
+    validators.add(new MediaTypeSchemaDiffValidator(schemaDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new MediaTypeAddInParameterNotAllowedDiffValidator());
+    validators.add(new MediaTypeDelInParameterNotAllowedDiffValidator());
+    validators.add(new MediaTypeDelInRequestBodyNotAllowedDiffValidator());
+    validators.add(new MediaTypeDelInResponseNotAllowedDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOasSpecDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOasSpecDiffValidatorFactory.java
new file mode 100644
index 0000000..6edf944
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOasSpecDiffValidatorFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.DefaultOasSpecDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasSpecDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.OasSpecDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.OpenApiDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultOasSpecDiffValidatorFactory implements OasSpecDiffValidatorFactory {
+
+  private final OpenApiDiffValidatorFactory openApiDiffValidatorFactory;
+
+  public DefaultOasSpecDiffValidatorFactory(
+      OpenApiDiffValidatorFactory openApiDiffValidatorFactory) {
+    this.openApiDiffValidatorFactory = openApiDiffValidatorFactory;
+  }
+
+  @Override
+  public OasSpecDiffValidator create() {
+    return new DefaultOasSpecDiffValidator(openApiDiffValidatorFactory.create());
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactory.java
new file mode 100644
index 0000000..a9484dd
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactory.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OpenApiDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ComponentsDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.InfoDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.OpenApiDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.PathsDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ServerDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.TagDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiComponentsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiInfoDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiPathsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiServersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.openapi.OpenApiTagsDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultOpenApiDiffValidatorFactory implements OpenApiDiffValidatorFactory {
+
+  private final ComponentsDiffValidatorFactory componentsDiffValidatorFactory;
+
+  private final InfoDiffValidatorFactory infoDiffValidatorFactory;
+
+  private final PathsDiffValidatorFactory pathsDiffValidatorFactory;
+
+  private final ServerDiffValidatorFactory serverDiffValidatorFactory;
+
+  private final TagDiffValidatorFactory tagDiffValidatorFactory;
+
+  public DefaultOpenApiDiffValidatorFactory(
+      ComponentsDiffValidatorFactory componentsDiffValidatorFactory,
+      InfoDiffValidatorFactory infoDiffValidatorFactory,
+      PathsDiffValidatorFactory pathsDiffValidatorFactory,
+      ServerDiffValidatorFactory serverDiffValidatorFactory,
+      TagDiffValidatorFactory tagDiffValidatorFactory) {
+    this.componentsDiffValidatorFactory = componentsDiffValidatorFactory;
+    this.infoDiffValidatorFactory = infoDiffValidatorFactory;
+    this.pathsDiffValidatorFactory = pathsDiffValidatorFactory;
+    this.serverDiffValidatorFactory = serverDiffValidatorFactory;
+    this.tagDiffValidatorFactory = tagDiffValidatorFactory;
+  }
+
+  @Override
+  public List<OpenApiDiffValidator> create() {
+
+    List<OpenApiDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new OpenApiComponentsDiffValidator(componentsDiffValidatorFactory.create()));
+    validators.add(new OpenApiInfoDiffValidator(infoDiffValidatorFactory.create()));
+    validators.add(new OpenApiPathsDiffValidator(pathsDiffValidatorFactory.create()));
+    validators.add(new OpenApiServersDiffValidator(serverDiffValidatorFactory.create()));
+    validators.add(new OpenApiTagsDiffValidator(tagDiffValidatorFactory.create()));
+
+    // concretes
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactory.java
new file mode 100644
index 0000000..a4cb30a
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactory.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.operation.OperationDeleteNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.operation.OperationIdNotSameDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OperationDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.OperationDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ParameterDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.RequestBodyDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ResponsesDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.operation.OperationParametersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.operation.OperationRequestBodyDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.operation.OperationResponsesDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultOperationDiffValidatorFactory implements OperationDiffValidatorFactory {
+
+  private final ParameterDiffValidatorFactory parameterDiffValidatorFactory;
+
+  private final RequestBodyDiffValidatorFactory requestBodyDiffValidatorFactory;
+
+  private final ResponsesDiffValidatorFactory responsesDiffValidatorFactory;
+
+  public DefaultOperationDiffValidatorFactory(
+      ParameterDiffValidatorFactory parameterDiffValidatorFactory,
+      RequestBodyDiffValidatorFactory requestBodyDiffValidatorFactory,
+      ResponsesDiffValidatorFactory responsesDiffValidatorFactory) {
+    this.parameterDiffValidatorFactory = parameterDiffValidatorFactory;
+    this.requestBodyDiffValidatorFactory = requestBodyDiffValidatorFactory;
+    this.responsesDiffValidatorFactory = responsesDiffValidatorFactory;
+  }
+
+  @Override
+  public List<OperationDiffValidator> create() {
+
+    List<OperationDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new OperationParametersDiffValidator(parameterDiffValidatorFactory.create()));
+    validators.add(new OperationRequestBodyDiffValidator(requestBodyDiffValidatorFactory.create()));
+    validators.add(new OperationResponsesDiffValidator(responsesDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new OperationDeleteNotAllowedDiffValidator());
+    validators.add(new OperationIdNotSameDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactory.java
new file mode 100644
index 0000000..8b5b141
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactory.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter.ParameterAddDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter.ParameterAllowEmptyValueChangeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter.ParameterAllowReservedChangeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter.ParameterExplodeNotSameDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter.ParameterRequiredChangeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.parameter.ParameterStyleNotSameDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ParameterDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.MediaTypeDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ParameterDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.SchemaDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.parameter.ParameterContentDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.parameter.ParameterSchemaDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultParameterDiffValidatorFactory implements ParameterDiffValidatorFactory {
+
+
+  private final MediaTypeDiffValidatorFactory mediaTypeDiffValidatorFactory;
+
+  private final SchemaDiffValidatorFactory schemaDiffValidatorFactory;
+
+  public DefaultParameterDiffValidatorFactory(
+      MediaTypeDiffValidatorFactory mediaTypeDiffValidatorFactory,
+      SchemaDiffValidatorFactory schemaDiffValidatorFactory) {
+    this.mediaTypeDiffValidatorFactory = mediaTypeDiffValidatorFactory;
+    this.schemaDiffValidatorFactory = schemaDiffValidatorFactory;
+  }
+
+  @Override
+  public List<ParameterDiffValidator> create() {
+
+    List<ParameterDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new ParameterContentDiffValidator(mediaTypeDiffValidatorFactory.create()));
+    validators.add(new ParameterSchemaDiffValidator(schemaDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new ParameterAddDiffValidator());
+    validators.add(new ParameterRequiredChangeDiffValidator());
+    validators.add(new ParameterAllowEmptyValueChangeDiffValidator());
+    validators.add(new ParameterStyleNotSameDiffValidator());
+    validators.add(new ParameterExplodeNotSameDiffValidator());
+    validators.add(new ParameterAllowReservedChangeDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactory.java
new file mode 100644
index 0000000..2f971f4
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactory.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.pathitem.PathItemDeleteNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathItemDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.OperationDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ParameterDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.PathItemDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.pathitem.PathItemOperationsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.pathitem.PathItemParametersDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.paths.PathsPathItemsDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultPathItemDiffValidatorFactory implements PathItemDiffValidatorFactory {
+
+  private final OperationDiffValidatorFactory operationDiffValidatorFactory;
+  private final ParameterDiffValidatorFactory parameterDiffValidatorFactory;
+
+  public DefaultPathItemDiffValidatorFactory(
+      OperationDiffValidatorFactory operationDiffValidatorFactory,
+      ParameterDiffValidatorFactory parameterDiffValidatorFactory) {
+    this.operationDiffValidatorFactory = operationDiffValidatorFactory;
+    this.parameterDiffValidatorFactory = parameterDiffValidatorFactory;
+  }
+
+  @Override
+  public List<PathItemDiffValidator> create() {
+
+    List<PathItemDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new PathItemOperationsDiffValidator(operationDiffValidatorFactory.create()));
+    validators.add(new PathItemParametersDiffValidator(parameterDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new PathItemDeleteNotAllowedDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactory.java
new file mode 100644
index 0000000..5c4f02b
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactory.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathsDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.PathItemDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.PathsDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.paths.PathsPathItemsDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultPathsDiffValidatorFactory implements PathsDiffValidatorFactory {
+
+  private final PathItemDiffValidatorFactory pathItemDiffValidatorFactory;
+
+  public DefaultPathsDiffValidatorFactory(
+      PathItemDiffValidatorFactory pathItemDiffValidatorFactory) {
+    this.pathItemDiffValidatorFactory = pathItemDiffValidatorFactory;
+  }
+
+  @Override
+  public List<PathsDiffValidator> create() {
+
+    List<PathsDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new PathsPathItemsDiffValidator(pathItemDiffValidatorFactory.create()));
+
+    // concretes
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactory.java
new file mode 100644
index 0000000..2f2feb6
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactory.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.requestbody.RequestBodyRequiredChangeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.RequestBodyDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.MediaTypeDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.RequestBodyDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.requestbody.RequestBodyContentDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultRequestBodyDiffValidatorFactory implements RequestBodyDiffValidatorFactory {
+
+  private final MediaTypeDiffValidatorFactory mediaTypeDiffValidatorFactory;
+
+  public DefaultRequestBodyDiffValidatorFactory(
+      MediaTypeDiffValidatorFactory mediaTypeDiffValidatorFactory) {
+    this.mediaTypeDiffValidatorFactory = mediaTypeDiffValidatorFactory;
+  }
+
+  @Override
+  public List<RequestBodyDiffValidator> create() {
+
+    List<RequestBodyDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new RequestBodyContentDiffValidator(mediaTypeDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new RequestBodyRequiredChangeDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactory.java
new file mode 100644
index 0000000..d2050cf
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactory.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.response.ResponseAddNotAllowedDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponseDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.HeaderDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.MediaTypeDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ResponseDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.response.ResponseContentDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.response.ResponseHeadersDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultResponseDiffValidatorFactory implements ResponseDiffValidatorFactory {
+
+  private final MediaTypeDiffValidatorFactory mediaTypeDiffValidatorFactory;
+
+  private final HeaderDiffValidatorFactory headerDiffValidatorFactory;
+
+  public DefaultResponseDiffValidatorFactory(
+      MediaTypeDiffValidatorFactory mediaTypeDiffValidatorFactory,
+      HeaderDiffValidatorFactory headerDiffValidatorFactory) {
+    this.mediaTypeDiffValidatorFactory = mediaTypeDiffValidatorFactory;
+    this.headerDiffValidatorFactory = headerDiffValidatorFactory;
+  }
+
+  @Override
+  public List<ResponseDiffValidator> create() {
+
+    List<ResponseDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new ResponseContentDiffValidator(mediaTypeDiffValidatorFactory.create()));
+    validators.add(new ResponseHeadersDiffValidator(headerDiffValidatorFactory.create()));
+
+    // concretes
+    validators.add(new ResponseAddNotAllowedDiffValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactory.java
new file mode 100644
index 0000000..8b4d8e3
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactory.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponsesDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ResponseDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ResponsesDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.responses.ResponsesResponsesDiffValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultResponsesDiffValidatorFactory implements ResponsesDiffValidatorFactory {
+
+  private final ResponseDiffValidatorFactory responseDiffValidatorFactory;
+
+  public DefaultResponsesDiffValidatorFactory(
+      ResponseDiffValidatorFactory responseDiffValidatorFactory) {
+    this.responseDiffValidatorFactory = responseDiffValidatorFactory;
+  }
+
+  @Override
+  public List<ResponsesDiffValidator> create() {
+
+    List<ResponsesDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new ResponsesResponsesDiffValidator(responseDiffValidatorFactory.create()));
+
+    // concretes
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactory.java
new file mode 100644
index 0000000..1a5117f
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactory.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaDiscriminatorChangeValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaReadOnlyChangeValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaWriteOnlyChangeValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.SchemaXmlChangeValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaEnumChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaExclusiveMaximumChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaExclusiveMinimumChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMaxItemsChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMaxLengthChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMaxPropertiesChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMaximumChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMinItemsChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMinLengthChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMinPropertiesChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMinimumChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaMultipleOfChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaNullableChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaRequiredChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaTypeFormatChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.request.SchemaUniqueItemsChangeInRequestValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaEnumChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaExclusiveMaximumChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaExclusiveMinimumChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMaxItemsChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMaxLengthChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMaxPropertiesChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMaximumChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMinItemsChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMinLengthChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMinPropertiesChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMinimumChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaMultipleOfChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaNullableChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaRequiredChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaTypeFormatChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.compatibility.validators.schema.response.SchemaUniqueItemsChangeInResponseValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaCompareValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.SchemaDiffValidatorFactory;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.skeleton.schema.SchemaDiffValidatorEngine;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultSchemaDiffValidatorFactory implements SchemaDiffValidatorFactory {
+
+
+  @Override
+  public List<SchemaDiffValidator> create() {
+
+    List<SchemaDiffValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new SchemaDiffValidatorEngine(
+        Collections.emptyList(),
+        Collections.emptyList(),
+        compareValidators()
+    ));
+
+    // concretes
+
+    return Collections.unmodifiableList(validators);
+  }
+
+  private List<SchemaCompareValidator> compareValidators() {
+
+    List<SchemaCompareValidator> compareValidators = new ArrayList<>();
+
+    // in common conntext
+    compareValidators.add(new SchemaReadOnlyChangeValidator());
+    compareValidators.add(new SchemaWriteOnlyChangeValidator());
+    compareValidators.add(new SchemaXmlChangeValidator());
+    compareValidators.add(new SchemaDiscriminatorChangeValidator());
+
+    // for request context
+    compareValidators.add(new SchemaTypeFormatChangeInRequestValidator());
+    compareValidators.add(new SchemaMaximumChangeInRequestValidator());
+    compareValidators.add(new SchemaExclusiveMinimumChangeInRequestValidator());
+    compareValidators.add(new SchemaExclusiveMaximumChangeInRequestValidator());
+    compareValidators.add(new SchemaMultipleOfChangeInRequestValidator());
+    compareValidators.add(new SchemaMaxItemsChangeInRequestValidator());
+    compareValidators.add(new SchemaMaxLengthChangeInRequestValidator());
+    compareValidators.add(new SchemaMaxPropertiesChangeInRequestValidator());
+    compareValidators.add(new SchemaMinimumChangeInRequestValidator());
+    compareValidators.add(new SchemaMinItemsChangeInRequestValidator());
+    compareValidators.add(new SchemaMinLengthChangeInRequestValidator());
+    compareValidators.add(new SchemaMinPropertiesChangeInRequestValidator());
+    compareValidators.add(new SchemaUniqueItemsChangeInRequestValidator());
+    compareValidators.add(new SchemaRequiredChangeInRequestValidator());
+    compareValidators.add(new SchemaEnumChangeInRequestValidator());
+    compareValidators.add(new SchemaNullableChangeInRequestValidator());
+
+    // for response context
+    compareValidators.add(new SchemaTypeFormatChangeInResponseValidator());
+    compareValidators.add(new SchemaMaximumChangeInResponseValidator());
+    compareValidators.add(new SchemaExclusiveMinimumChangeInResponseValidator());
+    compareValidators.add(new SchemaExclusiveMaximumChangeInResponseValidator());
+    compareValidators.add(new SchemaMultipleOfChangeInResponseValidator());
+    compareValidators.add(new SchemaMaxItemsChangeInResponseValidator());
+    compareValidators.add(new SchemaMaxLengthChangeInResponseValidator());
+    compareValidators.add(new SchemaMaxPropertiesChangeInResponseValidator());
+    compareValidators.add(new SchemaMinimumChangeInResponseValidator());
+    compareValidators.add(new SchemaMinItemsChangeInResponseValidator());
+    compareValidators.add(new SchemaMinLengthChangeInResponseValidator());
+    compareValidators.add(new SchemaMinPropertiesChangeInResponseValidator());
+    compareValidators.add(new SchemaUniqueItemsChangeInResponseValidator());
+    compareValidators.add(new SchemaRequiredChangeInResponseValidator());
+    compareValidators.add(new SchemaEnumChangeInResponseValidator());
+    compareValidators.add(new SchemaNullableChangeInResponseValidator());
+
+    return Collections.unmodifiableList(compareValidators);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactory.java
new file mode 100644
index 0000000..cbb01fc
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactory.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SecuritySchemeDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.SecuritySchemeDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultSecuritySchemeDiffValidatorFactory implements SecuritySchemeDiffValidatorFactory {
+
+
+  @Override
+  public List<SecuritySchemeDiffValidator> create() {
+    return Collections.emptyList();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactory.java
new file mode 100644
index 0000000..937137a
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ServerDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.ServerDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultServerDiffValidatorFactory implements ServerDiffValidatorFactory {
+
+  @Override
+  public List<ServerDiffValidator> create() {
+    return Collections.emptyList();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactory.java b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactory.java
new file mode 100644
index 0000000..ee44ee8
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/main/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.TagDiffValidator;
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.factory.TagDiffValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultTagDiffValidatorFactory implements TagDiffValidatorFactory {
+
+  @Override
+  public List<TagDiffValidator> create() {
+    return Collections.emptyList();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..5bf0591
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultCallbackDiffValidatorFactoryTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.CallbackDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultCallbackDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultCallbackDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<CallbackDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).isEmpty();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..fc98e19
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ComponentsDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultComponentsDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultComponentsDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<ComponentsDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(7);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..c397ed2
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultEncodingDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.EncodingDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultEncodingDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultEncodingDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<EncodingDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(7);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..989c4af
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultExampleDiffValidatorFactoryTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ExampleDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultExampleDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultExampleDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<ExampleDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).isEmpty();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..970c9ab
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultInfoDiffValidatorFactoryTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.InfoDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultInfoDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultInfoDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<InfoDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).isEmpty();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..bda081b
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultLinkDiffValidatorFactoryTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.LinkDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultLinkDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultLinkDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<LinkDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).isEmpty();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..944138f
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultMediaTypeDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.MediaTypeDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultMediaTypeDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultMediaTypeDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<MediaTypeDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(6);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOasSpecDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOasSpecDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..ab05f04
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOasSpecDiffValidatorFactoryTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultOasSpecDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultOasSpecDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    assertThat(validatorFactory.create()).isNotNull();
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..f108447
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOpenApiDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OpenApiDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultOpenApiDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultOpenApiDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<OpenApiDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(5);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..2fa6665
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultOperationDiffValidatorFactoryTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OperationDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultOperationDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultOperationDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<OperationDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(5);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..bf5b50c
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultParameterDiffValidatorFactoryTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ParameterDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultParameterDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultParameterDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<ParameterDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(8);
+  }
+}
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..eb9a063
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathItemDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathItemDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultPathItemDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultPathItemDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<PathItemDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(3);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..21c1277
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultPathsDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathsDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultPathsDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultPathsDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<PathsDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(1);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..118fc3b
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultRequestBodyDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.RequestBodyDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultRequestBodyDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultRequestBodyDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<RequestBodyDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(2);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..200d58c
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponseDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponseDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultResponseDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultResponseDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<ResponseDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(3);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..205571a
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultResponsesDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponsesDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultResponsesDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultResponsesDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<ResponsesDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(1);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..52c875f
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSchemaDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultSchemaDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultSchemaDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<SchemaDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).hasSize(1);
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..a7eb8e9
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultSecuritySchemeDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SecuritySchemeDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultSecuritySchemeDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultSecuritySchemeDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<SecuritySchemeDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).isEmpty();
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..92b8919
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultServerDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ServerDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultServerDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultServerDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<ServerDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).isEmpty();
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactoryTest.java
new file mode 100644
index 0000000..cffcfa8
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultTagDiffValidatorFactoryTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.TagDiffValidator;
+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;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = DiffValidatorFactoryTestConfiguration.class)
+public class DefaultTagDiffValidatorFactoryTest {
+
+  @Autowired
+  private DefaultTagDiffValidatorFactory validatorFactory;
+
+  @Test
+  public void create() {
+    List<TagDiffValidator> validators = validatorFactory.create();
+    assertThat(validators).isEmpty();
+  }
+}
+
+
+
diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DiffValidatorFactoryTestConfiguration.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DiffValidatorFactoryTestConfiguration.java
new file mode 100644
index 0000000..83032f3
--- /dev/null
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DiffValidatorFactoryTestConfiguration.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.compatibility.factory;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan
+class DiffValidatorFactoryTestConfiguration {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/CallbackDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/CallbackDiffValidatorFactory.java
new file mode 100755
index 0000000..89359aa
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/CallbackDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.CallbackDiffValidator;
+
+public interface CallbackDiffValidatorFactory extends OasObjectDiffValidatorFactory<CallbackDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ComponentsDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ComponentsDiffValidatorFactory.java
new file mode 100755
index 0000000..68d58b3
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ComponentsDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ComponentsDiffValidator;
+
+public interface ComponentsDiffValidatorFactory extends OasObjectDiffValidatorFactory<ComponentsDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/EncodingDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/EncodingDiffValidatorFactory.java
new file mode 100755
index 0000000..f7e3ed6
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/EncodingDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.EncodingDiffValidator;
+
+public interface EncodingDiffValidatorFactory extends OasObjectDiffValidatorFactory<EncodingDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ExampleDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ExampleDiffValidatorFactory.java
new file mode 100755
index 0000000..237179c
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ExampleDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ExampleDiffValidator;
+
+public interface ExampleDiffValidatorFactory extends OasObjectDiffValidatorFactory<ExampleDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/HeaderDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/HeaderDiffValidatorFactory.java
new file mode 100755
index 0000000..b696a3d
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/HeaderDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.HeaderDiffValidator;
+
+public interface HeaderDiffValidatorFactory extends OasObjectDiffValidatorFactory<HeaderDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/InfoDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/InfoDiffValidatorFactory.java
new file mode 100755
index 0000000..e9683be
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/InfoDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.InfoDiffValidator;
+
+public interface InfoDiffValidatorFactory extends OasObjectDiffValidatorFactory<InfoDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/LinkDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/LinkDiffValidatorFactory.java
new file mode 100755
index 0000000..0188b87
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/LinkDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.LinkDiffValidator;
+
+public interface LinkDiffValidatorFactory extends OasObjectDiffValidatorFactory<LinkDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/MediaTypeDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/MediaTypeDiffValidatorFactory.java
new file mode 100755
index 0000000..5d31e32
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/MediaTypeDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.MediaTypeDiffValidator;
+
+public interface MediaTypeDiffValidatorFactory extends OasObjectDiffValidatorFactory<MediaTypeDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OasObjectDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OasObjectDiffValidatorFactory.java
new file mode 100644
index 0000000..06ffad4
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OasObjectDiffValidatorFactory.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasObjectDiffValidator;
+
+public interface OasObjectDiffValidatorFactory<T extends OasObjectDiffValidator> {
+
+  List<T> create();
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OasSpecDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OasSpecDiffValidatorFactory.java
new file mode 100755
index 0000000..377ef72
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OasSpecDiffValidatorFactory.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OasSpecDiffValidator;
+
+public interface OasSpecDiffValidatorFactory {
+
+  OasSpecDiffValidator create();
+
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OpenApiDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OpenApiDiffValidatorFactory.java
new file mode 100755
index 0000000..248976d
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OpenApiDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OpenApiDiffValidator;
+
+public interface OpenApiDiffValidatorFactory extends OasObjectDiffValidatorFactory<OpenApiDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OperationDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OperationDiffValidatorFactory.java
new file mode 100755
index 0000000..05836da
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/OperationDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.OperationDiffValidator;
+
+public interface OperationDiffValidatorFactory extends OasObjectDiffValidatorFactory<OperationDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ParameterDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ParameterDiffValidatorFactory.java
new file mode 100755
index 0000000..cc3db99
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ParameterDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ParameterDiffValidator;
+
+public interface ParameterDiffValidatorFactory extends OasObjectDiffValidatorFactory<ParameterDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathItemDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathItemDiffValidatorFactory.java
new file mode 100755
index 0000000..d398fda
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathItemDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathItemDiffValidator;
+
+public interface PathItemDiffValidatorFactory extends OasObjectDiffValidatorFactory<PathItemDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathsDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathsDiffValidatorFactory.java
new file mode 100755
index 0000000..1776b49
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/PathsDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.PathsDiffValidator;
+
+public interface PathsDiffValidatorFactory extends OasObjectDiffValidatorFactory<PathsDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/RequestBodyDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/RequestBodyDiffValidatorFactory.java
new file mode 100755
index 0000000..6062fc8
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/RequestBodyDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.RequestBodyDiffValidator;
+
+public interface RequestBodyDiffValidatorFactory extends OasObjectDiffValidatorFactory<RequestBodyDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponseDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponseDiffValidatorFactory.java
new file mode 100755
index 0000000..01f56f0
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponseDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponseDiffValidator;
+
+public interface ResponseDiffValidatorFactory extends OasObjectDiffValidatorFactory<ResponseDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponsesDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponsesDiffValidatorFactory.java
new file mode 100755
index 0000000..4f8ac5e
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ResponsesDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ResponsesDiffValidator;
+
+public interface ResponsesDiffValidatorFactory extends OasObjectDiffValidatorFactory<ResponsesDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SchemaDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SchemaDiffValidatorFactory.java
new file mode 100755
index 0000000..47df4b4
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SchemaDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SchemaDiffValidator;
+
+public interface SchemaDiffValidatorFactory extends OasObjectDiffValidatorFactory<SchemaDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SecuritySchemeDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SecuritySchemeDiffValidatorFactory.java
new file mode 100755
index 0000000..a1fb24f
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/SecuritySchemeDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.SecuritySchemeDiffValidator;
+
+public interface SecuritySchemeDiffValidatorFactory extends OasObjectDiffValidatorFactory<SecuritySchemeDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ServerDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ServerDiffValidatorFactory.java
new file mode 100755
index 0000000..7fc8bb1
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/ServerDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.ServerDiffValidator;
+
+public interface ServerDiffValidatorFactory extends OasObjectDiffValidatorFactory<ServerDiffValidator> {
+}
diff --git a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/TagDiffValidatorFactory.java b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/TagDiffValidatorFactory.java
new file mode 100755
index 0000000..9526411
--- /dev/null
+++ b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/diffvalidation/factory/TagDiffValidatorFactory.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.toolkit.oasv.diffvalidation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.diffvalidation.api.TagDiffValidator;
+
+public interface TagDiffValidatorFactory extends OasObjectDiffValidatorFactory<TagDiffValidator> {
+}


[servicecomb-toolkit] 07/07: fix unit test

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit 8d31222cf07128053b587b47269795ee57ed8b46
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Thu Nov 7 18:25:04 2019 +0800

    fix unit test
---
 .../factory/DefaultComponentsDiffValidatorFactoryTest.java              | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java
index fc98e19..5652cb7 100644
--- a/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java
+++ b/oas-validator/oas-validator-compatibility/src/test/java/org/apache/servicecomb/toolkit/oasv/compatibility/factory/DefaultComponentsDiffValidatorFactoryTest.java
@@ -38,7 +38,7 @@ public class DefaultComponentsDiffValidatorFactoryTest {
   @Test
   public void create() {
     List<ComponentsDiffValidator> validators = validatorFactory.create();
-    assertThat(validators).hasSize(7);
+    assertThat(validators).hasSize(6);
   }
 }
 


[servicecomb-toolkit] 04/07: SCB-1555 Integrate oas-validator compability check to cli Update readme

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch import-oas-validator
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit 830f73972446b6d2f919fd84dc77de84c2e58609
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Thu Nov 7 15:31:00 2019 +0800

    SCB-1555 Integrate oas-validator compability check to cli
    Update readme
---
 README-ZH.md | 16 +++++++++++++++-
 README.md    | 15 ++++++++++++++-
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/README-ZH.md b/README-ZH.md
index e357f03..c8bd5a3 100644
--- a/README-ZH.md
+++ b/README-ZH.md
@@ -269,12 +269,26 @@ $ java -jar toolkit-cli-{version}.jar docgenerate -i swagger.yaml -o ./document
 #### 3.3.3 契约风格检查
 
 ```shell
-$ java -jar toolkit-cli-{version}.jar checkstyle openapi.yaml
+$ java -jar toolkit-cli-{version}.jar checkstyle oas.yaml
+或者
+$ java -jar toolkit-cli-{version}.jar cs oas.yaml
 ```
 
 > **checkstyle** Command argument
 * &lt;file&gt; OpenAPI v3 spec yaml文件
 
+#### 3.3.4 契约兼容性检查
+
+```shell
+$ java -jar toolkit-cli-{version}.jar checkcompatibility left-oas.yaml right-oas.yaml
+或者
+$ java -jar toolkit-cli-{version}.jar cc left-oas.yaml right-oas.yaml
+```
+
+> **checkcompatibility** Command argument
+* &lt;files&gt; Two OpenAPI v3 spec yaml file
+
+
 ### 3.4 使用案例
 可以在[这里](./samples/README-ZH.md)找到使用插件的一些示例 
 
diff --git a/README.md b/README.md
index 1a43352..ba07c98 100644
--- a/README.md
+++ b/README.md
@@ -270,12 +270,25 @@ e.g:-f swagger-ui
 #### 3.3.3 Service contract style checking
 
 ```shell
-$ java -jar toolkit-cli-{version}.jar checkstyle openapi.yaml
+$ java -jar toolkit-cli-{version}.jar checkstyle oas.yaml
+or
+$ java -jar toolkit-cli-{version}.jar cs oas.yaml
 ```
 
 > **checkstyle** Command argument
 * &lt;file&gt; OpenAPI v3 spec yaml file
 
+#### 3.3.4 Service contract compatibility checking
+
+```shell
+$ java -jar toolkit-cli-{version}.jar checkcompatibility left-oas.yaml right-oas.yaml
+or
+$ java -jar toolkit-cli-{version}.jar cc left-oas.yaml right-oas.yaml
+```
+
+> **checkcompatibility** Command argument
+* &lt;files&gt; Two OpenAPI v3 spec yaml file
+
 
 ### 3.4 Use case