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

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

commit afe8ceaba6129f3b77894c1a7715890d14f32e82
Author: Daniel Qian <chanjars...@gmail.com>
AuthorDate: Fri Nov 1 15:10:07 2019 +0800

    SCB-1553 Integrate oas-validator compliance check to cli
    add compliance validator factories
---
 oas-validator/oas-validator-compliance/pom.xml     | 21 +++++
 .../factory/DefaultComponentsValidatorFactory.java | 96 ++++++++++++++++++++++
 .../factory/DefaultEncodingValidatorFactory.java   | 54 ++++++++++++
 .../factory/DefaultHeaderValidatorFactory.java     | 54 ++++++++++++
 .../factory/DefaultInfoValidatorFactory.java       | 42 ++++++++++
 .../factory/DefaultMediaTypeValidatorFactory.java  | 57 +++++++++++++
 .../factory/DefaultOasSpecValidatorFactory.java    | 41 +++++++++
 .../factory/DefaultOpenApiValidatorFactory.java    | 86 +++++++++++++++++++
 .../factory/DefaultOperationValidatorFactory.java  | 77 +++++++++++++++++
 .../factory/DefaultParameterValidatorFactory.java  | 69 ++++++++++++++++
 .../factory/DefaultPathItemValidatorFactory.java   | 57 +++++++++++++
 .../factory/DefaultPathsValidatorFactory.java      | 54 ++++++++++++
 .../DefaultRequestBodyValidatorFactory.java        | 53 ++++++++++++
 .../factory/DefaultResponseValidatorFactory.java   | 61 ++++++++++++++
 .../factory/DefaultResponsesValidatorFactory.java  | 50 +++++++++++
 .../factory/DefaultSchemaValidatorFactory.java     | 43 ++++++++++
 .../DefaultSecuritySchemeValidatorFactory.java     | 34 ++++++++
 .../factory/DefaultServerValidatorFactory.java     | 35 ++++++++
 .../factory/DefaultTagValidatorFactory.java        | 45 ++++++++++
 .../factory/CallbackValidatorFactory.java          | 23 ++++++
 .../factory/ComponentsValidatorFactory.java        | 23 ++++++
 .../factory/EncodingValidatorFactory.java          | 23 ++++++
 .../factory/ExampleValidatorFactory.java           | 23 ++++++
 .../validation/factory/HeaderValidatorFactory.java | 23 ++++++
 .../validation/factory/InfoValidatorFactory.java   | 23 ++++++
 .../validation/factory/LinkValidatorFactory.java   | 23 ++++++
 .../factory/MediaTypeValidatorFactory.java         | 23 ++++++
 .../factory/OasObjectValidatorFactory.java         | 28 +++++++
 .../factory/OasSpecValidatorFactory.java           | 24 ++++++
 .../factory/OpenApiValidatorFactory.java           | 23 ++++++
 .../factory/OperationValidatorFactory.java         | 23 ++++++
 .../factory/ParameterValidatorFactory.java         | 23 ++++++
 .../factory/PathItemValidatorFactory.java          | 23 ++++++
 .../validation/factory/PathsValidatorFactory.java  | 23 ++++++
 .../factory/RequestBodyValidatorFactory.java       | 23 ++++++
 .../factory/ResponseValidatorFactory.java          | 23 ++++++
 .../factory/ResponsesValidatorFactory.java         | 23 ++++++
 .../validation/factory/SchemaValidatorFactory.java | 23 ++++++
 .../factory/SecuritySchemeValidatorFactory.java    | 23 ++++++
 .../validation/factory/ServerValidatorFactory.java | 23 ++++++
 .../validation/factory/TagValidatorFactory.java    | 23 ++++++
 41 files changed, 1541 insertions(+)

diff --git a/oas-validator/oas-validator-compliance/pom.xml 
b/oas-validator/oas-validator-compliance/pom.xml
index d1bd9a8..0e40c26 100755
--- a/oas-validator/oas-validator-compliance/pom.xml
+++ b/oas-validator/oas-validator-compliance/pom.xml
@@ -30,6 +30,10 @@
 
   <artifactId>oas-validator-compliance</artifactId>
 
+  <properties>
+    <log4j2.version>2.11.0</log4j2.version>
+  </properties>
+
   <dependencies>
 
     <dependency>
@@ -38,6 +42,23 @@
       <version>${project.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
     <!-- test deps -->
     <dependency>
       <groupId>org.apache.servicecomb.toolkit</groupId>
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultComponentsValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultComponentsValidatorFactory.java
new file mode 100644
index 0000000..2ff27b5
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultComponentsValidatorFactory.java
@@ -0,0 +1,96 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.components.ComponentsKeysValidators;
+import org.apache.servicecomb.toolkit.oasv.validation.api.ComponentsValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ComponentsValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.HeaderValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ParameterValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.RequestBodyValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ResponseValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.SchemaValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.SecuritySchemeValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.components.ComponentsHeadersValuesValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.components.ComponentsParametersValuesValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.components.ComponentsRequestBodiesValuesValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.components.ComponentsResponsesValuesValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.components.ComponentsSchemasValuesValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.components.ComponentsSecuritySchemesValuesValidator;
+import org.springframework.stereotype.Component;
+
+
+@Component
+public class DefaultComponentsValidatorFactory implements 
ComponentsValidatorFactory {
+
+  private HeaderValidatorFactory headerValidatorFactory;
+
+  private ParameterValidatorFactory parameterValidatorFactory;
+
+  private RequestBodyValidatorFactory requestBodyValidatorFactory;
+
+  private ResponseValidatorFactory responseValidatorFactory;
+
+  private SchemaValidatorFactory schemaValidatorFactory;
+
+  private SecuritySchemeValidatorFactory securitySchemeValidatorFactory;
+
+  public DefaultComponentsValidatorFactory(
+      HeaderValidatorFactory headerValidatorFactory,
+      ParameterValidatorFactory parameterValidatorFactory,
+      RequestBodyValidatorFactory requestBodyValidatorFactory,
+      ResponseValidatorFactory responseValidatorFactory,
+      SchemaValidatorFactory schemaValidatorFactory,
+      SecuritySchemeValidatorFactory securitySchemeValidatorFactory) {
+    this.headerValidatorFactory = headerValidatorFactory;
+    this.parameterValidatorFactory = parameterValidatorFactory;
+    this.requestBodyValidatorFactory = requestBodyValidatorFactory;
+    this.responseValidatorFactory = responseValidatorFactory;
+    this.schemaValidatorFactory = schemaValidatorFactory;
+    this.securitySchemeValidatorFactory = securitySchemeValidatorFactory;
+  }
+
+  @Override
+  public List<ComponentsValidator> create() {
+    List<ComponentsValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
ComponentsHeadersValuesValidator(headerValidatorFactory.create()));
+    validators.add(new 
ComponentsParametersValuesValidator(parameterValidatorFactory.create()));
+    validators.add(new 
ComponentsRequestBodiesValuesValidator(requestBodyValidatorFactory.create()));
+    validators.add(new 
ComponentsResponsesValuesValidator(responseValidatorFactory.create()));
+    validators.add(new 
ComponentsSchemasValuesValidator(schemaValidatorFactory.create()));
+    validators.add(new 
ComponentsSecuritySchemesValuesValidator(securitySchemeValidatorFactory.create()));
+
+    // concretes
+    
validators.add(ComponentsKeysValidators.CALLBACKS_UPPER_CAMEL_CASE_VALIDATOR);
+    
validators.add(ComponentsKeysValidators.EXAMPLES_UPPER_CAMEL_CASE_VALIDATOR);
+    
validators.add(ComponentsKeysValidators.HEADERS_UPPER_HYPHEN_CASE_VALIDATOR);
+    validators.add(ComponentsKeysValidators.LINKS_UPPER_CAMEL_CASE_VALIDATOR);
+    
validators.add(ComponentsKeysValidators.PARAMETERS_UPPER_CAMEL_CASE_VALIDATOR);
+    
validators.add(ComponentsKeysValidators.REQUEST_BODIES_UPPER_CAMEL_CASE_VALIDATOR);
+    
validators.add(ComponentsKeysValidators.RESPONSES_UPPER_CAMEL_CASE_VALIDATOR);
+    
validators.add(ComponentsKeysValidators.SCHEMAS_UPPER_CAMEL_CASE_VALIDATOR);
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultEncodingValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultEncodingValidatorFactory.java
new file mode 100644
index 0000000..8b62a11
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultEncodingValidatorFactory.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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.encoding.EncodingKeysValidators;
+import org.apache.servicecomb.toolkit.oasv.validation.api.EncodingValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.EncodingValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.HeaderValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.encoding.EncodingHeadersValuesValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultEncodingValidatorFactory implements 
EncodingValidatorFactory {
+
+  private final HeaderValidatorFactory headerValidatorFactory;
+
+  public DefaultEncodingValidatorFactory(
+      HeaderValidatorFactory headerValidatorFactory) {
+    this.headerValidatorFactory = headerValidatorFactory;
+  }
+
+  @Override
+  public List<EncodingValidator> create() {
+
+    List<EncodingValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
EncodingHeadersValuesValidator(headerValidatorFactory.create()));
+
+    // concrete
+    validators.add(EncodingKeysValidators.HEADERS_UPPER_HYPHEN_CASE_VALIDATOR);
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultHeaderValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultHeaderValidatorFactory.java
new file mode 100644
index 0000000..13ef15d
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultHeaderValidatorFactory.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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.header.HeaderDescriptionRequiredValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.HeaderValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.HeaderValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.SchemaValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.header.HeaderSchemaValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultHeaderValidatorFactory implements HeaderValidatorFactory {
+
+  private final SchemaValidatorFactory schemaValidatorFactory;
+
+  public DefaultHeaderValidatorFactory(
+      SchemaValidatorFactory schemaValidatorFactory) {
+    this.schemaValidatorFactory = schemaValidatorFactory;
+  }
+
+  @Override
+  public List<HeaderValidator> create() {
+
+    List<HeaderValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new HeaderSchemaValidator(schemaValidatorFactory.create()));
+
+    // concretes
+    validators.add(new HeaderDescriptionRequiredValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultInfoValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultInfoValidatorFactory.java
new file mode 100644
index 0000000..2564208
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultInfoValidatorFactory.java
@@ -0,0 +1,42 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.info.InfoDescriptionRequiredValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.InfoValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.InfoValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultInfoValidatorFactory implements InfoValidatorFactory {
+
+  @Override
+  public List<InfoValidator> create() {
+    ArrayList<InfoValidator> validators = new ArrayList<>();
+
+    // concretes
+    validators.add(new InfoDescriptionRequiredValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultMediaTypeValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultMediaTypeValidatorFactory.java
new file mode 100644
index 0000000..3a760ba
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultMediaTypeValidatorFactory.java
@@ -0,0 +1,57 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.MediaTypeValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.EncodingValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.MediaTypeValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.SchemaValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.mediatype.MediaTypeEncodingValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.mediatype.MediaTypeSchemaValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultMediaTypeValidatorFactory implements 
MediaTypeValidatorFactory {
+
+  private final SchemaValidatorFactory schemaValidatorFactory;
+
+  private final EncodingValidatorFactory encodingValidatorFactory;
+
+  public DefaultMediaTypeValidatorFactory(
+      SchemaValidatorFactory schemaValidatorFactory,
+      EncodingValidatorFactory encodingValidatorFactory) {
+    this.schemaValidatorFactory = schemaValidatorFactory;
+    this.encodingValidatorFactory = encodingValidatorFactory;
+  }
+
+  @Override
+  public List<MediaTypeValidator> create() {
+
+    List<MediaTypeValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
MediaTypeSchemaValidator(schemaValidatorFactory.create()));
+    validators.add(new 
MediaTypeEncodingValidator(encodingValidatorFactory.create()));
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOasSpecValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOasSpecValidatorFactory.java
new file mode 100644
index 0000000..c866fc1
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOasSpecValidatorFactory.java
@@ -0,0 +1,41 @@
+/*
+ * 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.compliance.factory;
+
+import 
org.apache.servicecomb.toolkit.oasv.validation.api.DefaultOasSpecValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.OasSpecValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.OasSpecValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.OpenApiValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultOasSpecValidatorFactory implements OasSpecValidatorFactory 
{
+
+  private final OpenApiValidatorFactory openApiValidatorFactory;
+
+  public DefaultOasSpecValidatorFactory(
+      OpenApiValidatorFactory openApiValidatorFactory) {
+    this.openApiValidatorFactory = openApiValidatorFactory;
+  }
+
+  @Override
+  public OasSpecValidator create() {
+    return new DefaultOasSpecValidator(openApiValidatorFactory.create());
+  }
+
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOpenApiValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOpenApiValidatorFactory.java
new file mode 100644
index 0000000..ff1a9c7
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOpenApiValidatorFactory.java
@@ -0,0 +1,86 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.openapi.OpenApiSecurityEmptyValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.openapi.OpenApiTagNotEmptyValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.openapi.OpenApiVersionValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.OpenApiValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ComponentsValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.InfoValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.OpenApiValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.PathsValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ServerValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.TagValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.openapi.OpenApiComponentsValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.openapi.OpenApiInfoValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.openapi.OpenApiPathsValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.openapi.OpenApiServersValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.openapi.OpenApiTagsValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultOpenApiValidatorFactory implements OpenApiValidatorFactory 
{
+
+  private final TagValidatorFactory tagValidatorFactory;
+
+  private final InfoValidatorFactory infoValidatorFactory;
+
+  private final PathsValidatorFactory pathsValidatorFactory;
+
+  private final ComponentsValidatorFactory componentsValidatorFactory;
+
+  private final ServerValidatorFactory serverValidatorFactory;
+
+  public DefaultOpenApiValidatorFactory(
+      TagValidatorFactory tagValidatorFactory,
+      InfoValidatorFactory infoValidatorFactory,
+      PathsValidatorFactory pathsValidatorFactory,
+      ComponentsValidatorFactory componentsValidatorFactory,
+      ServerValidatorFactory serverValidatorFactory) {
+    this.tagValidatorFactory = tagValidatorFactory;
+    this.infoValidatorFactory = infoValidatorFactory;
+    this.pathsValidatorFactory = pathsValidatorFactory;
+    this.componentsValidatorFactory = componentsValidatorFactory;
+    this.serverValidatorFactory = serverValidatorFactory;
+  }
+
+  @Override
+  public List<OpenApiValidator> create() {
+
+    List<OpenApiValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new OpenApiTagsValidator(tagValidatorFactory.create()));
+    validators.add(new OpenApiInfoValidator(infoValidatorFactory.create()));
+    validators.add(new OpenApiPathsValidator(pathsValidatorFactory.create()));
+    validators.add(new 
OpenApiComponentsValidator(componentsValidatorFactory.create()));
+    validators.add(new 
OpenApiServersValidator(serverValidatorFactory.create()));
+
+    // concretes
+    validators.add(new OpenApiSecurityEmptyValidator());
+    validators.add(new OpenApiTagNotEmptyValidator());
+    validators.add(new OpenApiVersionValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOperationValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOperationValidatorFactory.java
new file mode 100644
index 0000000..67adf45
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultOperationValidatorFactory.java
@@ -0,0 +1,77 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.operation.OperationIdLowerCamelCaseValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.operation.OperationServersEmptyValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.operation.OperationSummaryRequiredValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.operation.OperationTagsOnlyOneValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.operation.OperationTagsReferenceValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.OperationValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.OperationValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ParameterValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.RequestBodyValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ResponsesValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.operation.OperationParametersValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.operation.OperationRequestBodyValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.operation.OperationResponsesValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultOperationValidatorFactory implements 
OperationValidatorFactory {
+
+
+  private final ParameterValidatorFactory parameterValidatorFactory;
+
+  private final ResponsesValidatorFactory responsesValidatorFactory;
+
+  private final RequestBodyValidatorFactory requestBodyValidatorFactory;
+
+  public DefaultOperationValidatorFactory(
+      ParameterValidatorFactory parameterValidatorFactory,
+      ResponsesValidatorFactory responsesValidatorFactory,
+      RequestBodyValidatorFactory requestBodyValidatorFactory) {
+    this.parameterValidatorFactory = parameterValidatorFactory;
+    this.responsesValidatorFactory = responsesValidatorFactory;
+    this.requestBodyValidatorFactory = requestBodyValidatorFactory;
+  }
+
+  @Override
+  public List<OperationValidator> create() {
+
+    List<OperationValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
OperationParametersValidator(parameterValidatorFactory.create()));
+    validators.add(new 
OperationResponsesValidator(responsesValidatorFactory.create()));
+    validators.add(new 
OperationRequestBodyValidator(requestBodyValidatorFactory.create()));
+
+    // concretes
+    validators.add(new OperationIdLowerCamelCaseValidator());
+    validators.add(new OperationSummaryRequiredValidator());
+    validators.add(new OperationTagsOnlyOneValidator());
+    validators.add(new OperationTagsReferenceValidator());
+    validators.add(new OperationServersEmptyValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultParameterValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultParameterValidatorFactory.java
new file mode 100644
index 0000000..0180834
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultParameterValidatorFactory.java
@@ -0,0 +1,69 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.parameter.ParameterCookieLowerCamelCaseValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.parameter.ParameterDescriptionRequiredValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.parameter.ParameterHeaderUpperHyphenCaseValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.parameter.ParameterPathLowerCamelCaseValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.parameter.ParameterQueryLowerCamelCaseValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.ParameterValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.MediaTypeValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ParameterValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.SchemaValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.parameter.ParameterContentValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.parameter.ParameterSchemaValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultParameterValidatorFactory implements 
ParameterValidatorFactory {
+
+  private final SchemaValidatorFactory schemaValidatorFactory;
+
+  private final MediaTypeValidatorFactory mediaTypeValidatorFactory;
+
+  public DefaultParameterValidatorFactory(
+      SchemaValidatorFactory schemaValidatorFactory,
+      MediaTypeValidatorFactory mediaTypeValidatorFactory) {
+    this.schemaValidatorFactory = schemaValidatorFactory;
+    this.mediaTypeValidatorFactory = mediaTypeValidatorFactory;
+  }
+
+  @Override
+  public List<ParameterValidator> create() {
+
+    List<ParameterValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
ParameterSchemaValidator(schemaValidatorFactory.create()));
+    validators.add(new 
ParameterContentValidator(mediaTypeValidatorFactory.create()));
+
+    // concretes
+    validators.add(new ParameterCookieLowerCamelCaseValidator());
+    validators.add(new ParameterHeaderUpperHyphenCaseValidator());
+    validators.add(new ParameterPathLowerCamelCaseValidator());
+    validators.add(new ParameterQueryLowerCamelCaseValidator());
+    validators.add(new ParameterDescriptionRequiredValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathItemValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathItemValidatorFactory.java
new file mode 100644
index 0000000..8698317
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathItemValidatorFactory.java
@@ -0,0 +1,57 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.PathItemValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.OperationValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ParameterValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.PathItemValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.pathitem.PathItemOperationsValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.pathitem.PathItemParametersValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultPathItemValidatorFactory implements 
PathItemValidatorFactory {
+
+  private final OperationValidatorFactory operationValidatorFactory;
+
+  private final ParameterValidatorFactory parameterValidatorFactory;
+
+  public DefaultPathItemValidatorFactory(
+      OperationValidatorFactory operationValidatorFactory,
+      ParameterValidatorFactory parameterValidatorFactory) {
+    this.operationValidatorFactory = operationValidatorFactory;
+    this.parameterValidatorFactory = parameterValidatorFactory;
+  }
+
+  @Override
+  public List<PathItemValidator> create() {
+    ArrayList<PathItemValidator> validators = new ArrayList<>();
+
+    // skeletons
+    new PathItemOperationsValidator(operationValidatorFactory.create());
+    new PathItemParametersValidator(parameterValidatorFactory.create());
+
+    return Collections.unmodifiableList(validators);
+  }
+
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathsValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathsValidatorFactory.java
new file mode 100644
index 0000000..e92faf7
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultPathsValidatorFactory.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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.paths.PathsLowerCamelCaseValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.PathsValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.PathItemValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.PathsValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.paths.PathsPathItemsValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultPathsValidatorFactory implements PathsValidatorFactory {
+
+  private final PathItemValidatorFactory pathItemValidatorFactory;
+
+  public DefaultPathsValidatorFactory(
+      PathItemValidatorFactory pathItemValidatorFactory) {
+    this.pathItemValidatorFactory = pathItemValidatorFactory;
+  }
+
+  @Override
+  public List<PathsValidator> create() {
+    List<PathsValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
PathsPathItemsValidator(pathItemValidatorFactory.create()));
+
+    // concretes
+    validators.add(new PathsLowerCamelCaseValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultRequestBodyValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultRequestBodyValidatorFactory.java
new file mode 100644
index 0000000..08c9f1d
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultRequestBodyValidatorFactory.java
@@ -0,0 +1,53 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.requestbody.RequestBodyDescriptionRequiredValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.RequestBodyValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.MediaTypeValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.RequestBodyValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.requestbody.RequestBodyContentValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultRequestBodyValidatorFactory implements 
RequestBodyValidatorFactory {
+
+  private final MediaTypeValidatorFactory mediaTypeValidatorFactory;
+
+  public DefaultRequestBodyValidatorFactory(
+      MediaTypeValidatorFactory mediaTypeValidatorFactory) {
+    this.mediaTypeValidatorFactory = mediaTypeValidatorFactory;
+  }
+
+  @Override
+  public List<RequestBodyValidator> create() {
+
+    List<RequestBodyValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
RequestBodyContentValidator(mediaTypeValidatorFactory.create()));
+
+    // concretes
+    validators.add(new RequestBodyDescriptionRequiredValidator());
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponseValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponseValidatorFactory.java
new file mode 100644
index 0000000..b3823b3
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponseValidatorFactory.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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.response.ResponseKeysValidators;
+import org.apache.servicecomb.toolkit.oasv.validation.api.ResponseValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.HeaderValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.MediaTypeValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ResponseValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.response.ResponseContentValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.response.ResponseHeadersValuesValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultResponseValidatorFactory implements 
ResponseValidatorFactory {
+
+  private final MediaTypeValidatorFactory mediaTypeValidatorFactory;
+
+  private final HeaderValidatorFactory headerValidatorFactory;
+
+  public DefaultResponseValidatorFactory(
+      MediaTypeValidatorFactory mediaTypeValidatorFactory,
+      HeaderValidatorFactory headerValidatorFactory) {
+    this.mediaTypeValidatorFactory = mediaTypeValidatorFactory;
+    this.headerValidatorFactory = headerValidatorFactory;
+  }
+
+  @Override
+  public List<ResponseValidator> create() {
+
+    List<ResponseValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
ResponseContentValidator(mediaTypeValidatorFactory.create()));
+    validators.add(new 
ResponseHeadersValuesValidator(headerValidatorFactory.create()));
+
+    // concretes
+    validators.add(ResponseKeysValidators.HEADERS_UPPER_HYPHEN_CASE_VALIDATOR);
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponsesValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponsesValidatorFactory.java
new file mode 100644
index 0000000..6c55486
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultResponsesValidatorFactory.java
@@ -0,0 +1,50 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ResponsesValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ResponseValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ResponsesValidatorFactory;
+import 
org.apache.servicecomb.toolkit.oasv.validation.skeleton.responses.ResponsesResponsesValidator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultResponsesValidatorFactory implements 
ResponsesValidatorFactory {
+
+  private final ResponseValidatorFactory responseValidatorFactory;
+
+  public DefaultResponsesValidatorFactory(
+      ResponseValidatorFactory responseValidatorFactory) {
+    this.responseValidatorFactory = responseValidatorFactory;
+  }
+
+  @Override
+  public List<ResponsesValidator> create() {
+
+    List<ResponsesValidator> validators = new ArrayList<>();
+
+    // skeletons
+    validators.add(new 
ResponsesResponsesValidator(responseValidatorFactory.create()));
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSchemaValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSchemaValidatorFactory.java
new file mode 100644
index 0000000..7e099b0
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSchemaValidatorFactory.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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.schema.SchemaKeysValidators;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.schema.SchemaTitleValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.SchemaValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.SchemaValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultSchemaValidatorFactory implements SchemaValidatorFactory {
+
+  @Override
+  public List<SchemaValidator> create() {
+    ArrayList<SchemaValidator> validators = new ArrayList<>();
+
+    // concretes
+    validators.add(new SchemaTitleValidator());
+    validators.add(SchemaKeysValidators.PROPERTIES_LOWER_CAMEL_CASE_VALIDATOR);
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSecuritySchemeValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSecuritySchemeValidatorFactory.java
new file mode 100644
index 0000000..5eec0e6
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultSecuritySchemeValidatorFactory.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.compliance.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.validation.api.SecuritySchemeValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.SecuritySchemeValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultSecuritySchemeValidatorFactory implements 
SecuritySchemeValidatorFactory {
+
+  @Override
+  public List<SecuritySchemeValidator> create() {
+    return Collections.emptyList();
+  }
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.java
new file mode 100644
index 0000000..53f075a
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultServerValidatorFactory.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.compliance.factory;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ServerValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.ServerValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultServerValidatorFactory implements ServerValidatorFactory {
+
+  @Override
+  public List<ServerValidator> create() {
+    return Collections.emptyList();
+  }
+
+}
diff --git 
a/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultTagValidatorFactory.java
 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultTagValidatorFactory.java
new file mode 100644
index 0000000..2969779
--- /dev/null
+++ 
b/oas-validator/oas-validator-compliance/src/main/java/org/apache/servicecomb/toolkit/oasv/compliance/factory/DefaultTagValidatorFactory.java
@@ -0,0 +1,45 @@
+/*
+ * 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.compliance.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.tag.TagDescriptionRequiredValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.tag.TagNameUpperCamelCaseValidator;
+import 
org.apache.servicecomb.toolkit.oasv.compliance.validator.tag.TagReferenceValidator;
+import org.apache.servicecomb.toolkit.oasv.validation.api.TagValidator;
+import 
org.apache.servicecomb.toolkit.oasv.validation.factory.TagValidatorFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultTagValidatorFactory implements TagValidatorFactory {
+
+  @Override
+  public List<TagValidator> create() {
+    ArrayList<TagValidator> validators = new ArrayList<>();
+
+    // concretes
+    validators.add(new TagDescriptionRequiredValidator());
+    validators.add(new TagNameUpperCamelCaseValidator());
+    validators.add(new TagReferenceValidator());
+
+    return Collections.unmodifiableList(validators);
+  }
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/CallbackValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/CallbackValidatorFactory.java
new file mode 100644
index 0000000..ea66e61
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/CallbackValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.CallbackValidator;
+
+public interface CallbackValidatorFactory extends 
OasObjectValidatorFactory<CallbackValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ComponentsValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ComponentsValidatorFactory.java
new file mode 100644
index 0000000..af003d4
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ComponentsValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ComponentsValidator;
+
+public interface ComponentsValidatorFactory extends 
OasObjectValidatorFactory<ComponentsValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/EncodingValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/EncodingValidatorFactory.java
new file mode 100644
index 0000000..2bc940d
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/EncodingValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.EncodingValidator;
+
+public interface EncodingValidatorFactory extends 
OasObjectValidatorFactory<EncodingValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ExampleValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ExampleValidatorFactory.java
new file mode 100644
index 0000000..b748869
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ExampleValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ExampleValidator;
+
+public interface ExampleValidatorFactory extends 
OasObjectValidatorFactory<ExampleValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/HeaderValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/HeaderValidatorFactory.java
new file mode 100644
index 0000000..e79a4e2
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/HeaderValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.HeaderValidator;
+
+public interface HeaderValidatorFactory extends 
OasObjectValidatorFactory<HeaderValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/InfoValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/InfoValidatorFactory.java
new file mode 100644
index 0000000..77fb3b8
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/InfoValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.InfoValidator;
+
+public interface InfoValidatorFactory extends 
OasObjectValidatorFactory<InfoValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/LinkValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/LinkValidatorFactory.java
new file mode 100644
index 0000000..380f16d
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/LinkValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.LinkValidator;
+
+public interface LinkValidatorFactory extends 
OasObjectValidatorFactory<LinkValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/MediaTypeValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/MediaTypeValidatorFactory.java
new file mode 100644
index 0000000..0c0ee0f
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/MediaTypeValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.MediaTypeValidator;
+
+public interface MediaTypeValidatorFactory extends 
OasObjectValidatorFactory<MediaTypeValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OasObjectValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OasObjectValidatorFactory.java
new file mode 100644
index 0000000..58942c0
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OasObjectValidatorFactory.java
@@ -0,0 +1,28 @@
+/*
+ * 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.validation.factory;
+
+import java.util.List;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.OasObjectValidator;
+
+public interface OasObjectValidatorFactory<T extends OasObjectValidator> {
+
+  List<T> create();
+
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OasSpecValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OasSpecValidatorFactory.java
new file mode 100644
index 0000000..c1a518c
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OasSpecValidatorFactory.java
@@ -0,0 +1,24 @@
+/*
+ * 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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.OasSpecValidator;
+
+public interface OasSpecValidatorFactory {
+  OasSpecValidator create();
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OpenApiValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OpenApiValidatorFactory.java
new file mode 100644
index 0000000..3f0c85d
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OpenApiValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.OpenApiValidator;
+
+public interface OpenApiValidatorFactory extends 
OasObjectValidatorFactory<OpenApiValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OperationValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OperationValidatorFactory.java
new file mode 100644
index 0000000..343e8fc
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/OperationValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.OperationValidator;
+
+public interface OperationValidatorFactory extends 
OasObjectValidatorFactory<OperationValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ParameterValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ParameterValidatorFactory.java
new file mode 100644
index 0000000..41b6c8f
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ParameterValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ParameterValidator;
+
+public interface ParameterValidatorFactory extends 
OasObjectValidatorFactory<ParameterValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/PathItemValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/PathItemValidatorFactory.java
new file mode 100644
index 0000000..1f042b0
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/PathItemValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.PathItemValidator;
+
+public interface PathItemValidatorFactory extends 
OasObjectValidatorFactory<PathItemValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/PathsValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/PathsValidatorFactory.java
new file mode 100644
index 0000000..3a6bc00
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/PathsValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.PathsValidator;
+
+public interface PathsValidatorFactory extends 
OasObjectValidatorFactory<PathsValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/RequestBodyValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/RequestBodyValidatorFactory.java
new file mode 100644
index 0000000..617bf4a
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/RequestBodyValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.RequestBodyValidator;
+
+public interface RequestBodyValidatorFactory extends 
OasObjectValidatorFactory<RequestBodyValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ResponseValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ResponseValidatorFactory.java
new file mode 100644
index 0000000..5a454f0
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ResponseValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ResponseValidator;
+
+public interface ResponseValidatorFactory extends 
OasObjectValidatorFactory<ResponseValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ResponsesValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ResponsesValidatorFactory.java
new file mode 100644
index 0000000..3b5117c
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ResponsesValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ResponsesValidator;
+
+public interface ResponsesValidatorFactory extends 
OasObjectValidatorFactory<ResponsesValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/SchemaValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/SchemaValidatorFactory.java
new file mode 100644
index 0000000..abc3c8b
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/SchemaValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.SchemaValidator;
+
+public interface SchemaValidatorFactory extends 
OasObjectValidatorFactory<SchemaValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/SecuritySchemeValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/SecuritySchemeValidatorFactory.java
new file mode 100644
index 0000000..bafc35a
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/SecuritySchemeValidatorFactory.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.validation.factory;
+
+import 
org.apache.servicecomb.toolkit.oasv.validation.api.SecuritySchemeValidator;
+
+public interface SecuritySchemeValidatorFactory extends 
OasObjectValidatorFactory<SecuritySchemeValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ServerValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ServerValidatorFactory.java
new file mode 100644
index 0000000..c47826b
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/ServerValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.ServerValidator;
+
+public interface ServerValidatorFactory extends 
OasObjectValidatorFactory<ServerValidator> {
+}
diff --git 
a/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/TagValidatorFactory.java
 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/TagValidatorFactory.java
new file mode 100644
index 0000000..e4470a2
--- /dev/null
+++ 
b/oas-validator/oas-validator-core/src/main/java/org/apache/servicecomb/toolkit/oasv/validation/factory/TagValidatorFactory.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.validation.factory;
+
+import org.apache.servicecomb.toolkit.oasv.validation.api.TagValidator;
+
+public interface TagValidatorFactory extends 
OasObjectValidatorFactory<TagValidator> {
+}

Reply via email to