You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/11/07 12:21:04 UTC
[servicecomb-toolkit] 06/26: SCB-1553 Integrate oas-validator
compliance check to cli add compliance validator factories
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 <ch...@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> {
+}