Repository: eclipse/microprofile-open-api
Pull request #91 (2017-11-30 18:35:11)

Updates to the TCK for changes to Parameter and Schema interfaces.
Signed-off-by: Michael Glavassevich <mrglavas@ca.ibm.com>


Patch:
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/OASConfig.java b/api/src/main/java/org/eclipse/microprofile/openapi/OASConfig.java
index a6c36df..de1395f 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/OASConfig.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/OASConfig.java
@@ -53,18 +53,6 @@ public final class OASConfig {
      * 
      */
     public static final String SCAN_CLASSES = "mp.openapi.scan.classes";
-    
-    /**
-     * Configuration property to specify the list of packages to exclude from scans.
-     * 
-     */
-    public static final String SCAN_EXCLUDE_PACKAGES = "mp.openapi.scan.exclude.packages";
-    
-    /**
-     * Configuration property to specify the list of classes to exclude from scans.
-     * 
-     */
-    public static final String SCAN_EXCLUDE_CLASSES = "mp.openapi.scan.exclude.classes";
 
     /**
      * Configuration property to specify the list of global servers that provide connectivity information.
@@ -90,4 +78,5 @@ public final class OASConfig {
      */
     public static final String EXTENSIONS_PREFIX = "mp.openapi.extensions.";
 
+
 }
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/OASFactory.java b/api/src/main/java/org/eclipse/microprofile/openapi/OASFactory.java
index 6fd27f9..21a8577 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/OASFactory.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/OASFactory.java
@@ -31,22 +31,22 @@ public final class OASFactory {
     
     private OASFactory() {}
 
+    private static final OASFactoryResolver INSTANCE = OASFactoryResolver.instance();
+
     /**
      * This method creates a new instance of a constructible element from the OpenAPI model tree.
      *
      * <br><br>Example:
      * <pre><code>OASFactory.createObject(Info.class).title("Airlines").description("Airlines APIs").version("1.0.0");
      * </code></pre>
+
      * @param <T> describes the type parameter
      * @param clazz represents a model which extends the {@link org.eclipse.microprofile.openapi.models.Constructible} interface
      *
-     * @return a new instance of the requested model class
-     * 
-     * @throws NullPointerException if the specified class is null
-     * @throws IllegalArgumentException if an instance could not be created, most likely, due to an illegal or inappropriate class
+     * @return a new instance of the requested model
      */
     public static <T extends Constructible> T createObject(Class<T> clazz) {
-        return OASFactoryResolver.instance().createObject(clazz);
+        return INSTANCE.createObject(clazz);
     }
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/OASFilter.java b/api/src/main/java/org/eclipse/microprofile/openapi/OASFilter.java
index 06c8203..0ad1324 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/OASFilter.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/OASFilter.java
@@ -40,7 +40,6 @@ import org.eclipse.microprofile.openapi.models.tags.Tag;
  * The value is the fully qualified name of the filter implementation, which needs to be visible to the application's classloader.
  *
  */
-@SuppressWarnings("rawtypes")
 public interface OASFilter {    
 
     /** 
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/ArraySchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/ArraySchema.java
new file mode 100644
index 0000000..c897310
--- /dev/null
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/ArraySchema.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2017 Contributors to the Eclipse Foundation
+ * Copyright 2017 SmartBear Software
+ * <p>
+ * Licensed 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.eclipse.microprofile.openapi.annotations.media;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * This object represents a Schema of type array, allowing the items to have a Schema annotation inside of this object.
+ *
+ */
+@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited
+public @interface ArraySchema {
+
+    /**
+     * The schema defining the type used for the array.
+     *
+     * @return the schema of this media type
+     **/
+    Schema schema() default @Schema;
+
+    /**
+     * Sets the maximum number of items in an array.
+     * This integer MUST be greater than, or equal to, 0.
+     * <p>
+     * An array instance is valid against "maxItems" if its size is less than, or equal to, the value of this keyword.
+     * </p> 
+     * Ignored if value is Integer.MIN_VALUE.
+     * 
+     * @return the maximum number of items in this array
+     **/
+    int maxItems() default Integer.MIN_VALUE;
+
+    /**
+     * Sets the minimum number of items in an array.
+     * This integer MUST be greater than, or equal to, 0. 
+     * <p>
+     * An array instance is valid against "minItems" if its size is greater than, or equal to, the value of this keyword.
+     * </p>
+     * Ignored if value is Integer.MAX_VALUE.
+     * 
+     * @return the minimum number of items in this array
+     **/
+    int minItems() default Integer.MAX_VALUE;
+
+    /**
+     * Determines if the items in the array SHOULD be unique.
+     * <p>
+     * If false, the instance validates successfully.
+     * If true, the instance validates successfully if all of its elements are unique.
+     * </p>
+     * @return whether the items in this array are unique
+     **/
+    boolean uniqueItems() default false;
+}
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Content.java b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Content.java
index 3a61060..d63ee67 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Content.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Content.java
@@ -50,6 +50,13 @@ public @interface Content {
      **/
     Schema schema() default @Schema();
 
+    /**
+     * The schema of the array that defines the type used for the content.
+     *
+     * @return the schema of the array
+     */
+    ArraySchema array() default @ArraySchema();
+
     /**
      * An array of encoding corresponding to a map of property name and its encoding information in MediaType model. 
      * The key, being the property name, MUST exist in the schema as a property.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Schema.java b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Schema.java
index 2d5023c..eed9c46 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Schema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/media/Schema.java
@@ -323,38 +323,4 @@ public @interface Schema {
      * @return whether or not this schema is hidden
      */
     boolean hidden() default false;
-    
-    /**
-     * Only applicable if type=array.  Sets the maximum number of items in an array.
-     * This integer MUST be greater than, or equal to, 0.
-     * <p>
-     * An array instance is valid against "maxItems" if its size is less than, or equal to, the value of this keyword.
-     * </p> 
-     * Ignored if value is Integer.MIN_VALUE.
-     * 
-     * @return the maximum number of items in this array
-     **/
-    int maxItems() default Integer.MIN_VALUE;
-
-    /**
-     * Only applicable if type=array.  Sets the minimum number of items in an array.
-     * This integer MUST be greater than, or equal to, 0. 
-     * <p>
-     * An array instance is valid against "minItems" if its size is greater than, or equal to, the value of this keyword.
-     * </p>
-     * Ignored if value is Integer.MAX_VALUE.
-     * 
-     * @return the minimum number of items in this array
-     **/
-    int minItems() default Integer.MAX_VALUE;
-
-    /**
-     * Only applicable if type=array.  Determines if the items in the array SHOULD be unique.
-     * <p>
-     * If false, the instance validates successfully.
-     * If true, the instance validates successfully if all of its elements are unique.
-     * </p>
-     * @return whether the items in this array are unique
-     **/
-    boolean uniqueItems() default false;
 }
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/annotations/parameters/Parameter.java b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/parameters/Parameter.java
index 3338249..664b98a 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/annotations/parameters/Parameter.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/annotations/parameters/Parameter.java
@@ -27,6 +27,7 @@ import java.lang.annotation.Target;
 import org.eclipse.microprofile.openapi.annotations.enums.Explode;
 import org.eclipse.microprofile.openapi.annotations.enums.ParameterIn;
 import org.eclipse.microprofile.openapi.annotations.enums.ParameterStyle;
+import org.eclipse.microprofile.openapi.annotations.media.ArraySchema;
 import org.eclipse.microprofile.openapi.annotations.media.Content;
 import org.eclipse.microprofile.openapi.annotations.media.Schema;
 
@@ -143,6 +144,14 @@ public @interface Parameter {
      **/
     Schema schema() default @Schema();
 
+    /**
+     * The schema of the individual array values that defines this parameter. 
+     * Ignored if the property content is specified.
+     * 
+     * @return the schema of the individual array values
+     */
+    ArraySchema array() default @ArraySchema();
+
     /**
      * The representation of this parameter, for different media types.
      * 
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java
index e56a2a5..246cf67 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java
@@ -49,7 +49,6 @@ import org.eclipse.microprofile.openapi.models.security.SecurityScheme;
  * @see <a href= "https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#componentsObject"> OpenAPI Specification Components
  *      Object</a>
  */
-@SuppressWarnings("rawtypes")
 public interface Components extends Constructible, Extensible {
 
     /**
@@ -78,10 +77,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given schema to this Components' list of schemas with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param schema a reusable schema object
+     * @param schemasItem a reusable schema object
      * @return the current Components object
      */
-    Components addSchema(String key, Schema schema);
+    Components addSchemas(String key, Schema schemasItem);
 
     /**
      * Returns the responses property from a Components instance.
@@ -109,10 +108,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given response to this Components' map of responses with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param response a reusable response object
+     * @param responsesItem a reusable response object
      * @return the current Components object
      */
-    Components addResponse(String key, APIResponse response);
+    Components addResponses(String key, APIResponse responsesItem);
 
     /**
      * Returns the parameters property from a Components instance.
@@ -140,10 +139,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given parameter to this Components' map of parameters with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param parameter a reusable parameter object
+     * @param parametersItem a reusable parameter object
      * @return the current Components object
      */
-    Components addParameter(String key, Parameter parameter);
+    Components addParameters(String key, Parameter parametersItem);
 
     /**
      * Returns the examples property from a Components instance.
@@ -171,10 +170,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given example to this Components' map of examples with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param example a reusable example object
+     * @param examplesItem a reusable example object
      * @return the current Components object
      */
-    Components addExample(String key, Example example);
+    Components addExamples(String key, Example examplesItem);
 
     /**
      * Returns the requestBodies property from a Components instance.
@@ -202,10 +201,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given request body to this Components' map of request bodies with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param requestBody a reusable request body object
+     * @param requestBodiesItem a reusable request body object
      * @return the current Components object
      */
-    Components addRequestBody(String key, RequestBody requestBody);
+    Components addRequestBodies(String key, RequestBody requestBodiesItem);
 
     /**
      * Returns the headers property from a Components instance.
@@ -233,10 +232,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given header to this Components' map of headers with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param header a reusable header object
+     * @param headersItem a reusable header object
      * @return the current Components object
      */
-    Components addHeader(String key, Header header);
+    Components addHeaders(String key, Header headersItem);
 
     /**
      * Returns the securitySchemes property from a Components instance.
@@ -264,10 +263,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given security scheme to this Components' map of security schemes with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param securityScheme a reusable security scheme object
+     * @param securitySchemesItem a reusable security scheme object
      * @return the current Components object
      */
-    Components addSecurityScheme(String key, SecurityScheme securityScheme);
+    Components addSecuritySchemes(String key, SecurityScheme securitySchemesItem);
 
     /**
      * Returns the links property from a Components instance.
@@ -295,10 +294,10 @@ public interface Components extends Constructible, Extensible {
      * Adds the given link to this Components' map of links with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param link a reusable link object
+     * @param linksItem a reusable link object
      * @return the current Components object
      */
-    Components addLink(String key, Link link);
+    Components addLinks(String key, Link linksItem);
 
     /**
      * Returns the callbacks property from a Components instance.
@@ -326,9 +325,9 @@ public interface Components extends Constructible, Extensible {
      * Adds the given callback to this Components' map of callbacks with the given string as its key.
      *
      * @param key a key conforming to the format required for this object
-     * @param callback a reusable callback object
+     * @param callbacksItem a reusable callback object
      * @return the current Components object
      */
-    Components addCallback(String key, Callback callback);
+    Components addCallbacks(String key, Callback callbacksItem);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java
index 9279ade..0d84b81 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java
@@ -20,7 +20,9 @@ package org.eclipse.microprofile.openapi.models;
 import java.util.List;
 
 import org.eclipse.microprofile.openapi.models.info.Info;
+import org.eclipse.microprofile.openapi.models.media.Schema;
 import org.eclipse.microprofile.openapi.models.security.SecurityRequirement;
+import org.eclipse.microprofile.openapi.models.security.SecurityScheme;
 import org.eclipse.microprofile.openapi.models.servers.Server;
 import org.eclipse.microprofile.openapi.models.tags.Tag;
 
@@ -31,7 +33,6 @@ import org.eclipse.microprofile.openapi.models.tags.Tag;
  * 
  * @see <a href= "https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object">OpenAPI Specification OpenAPI Object</a>
  */
-@SuppressWarnings("rawtypes")
 public interface OpenAPI extends Constructible, Extensible {
 
     /**
@@ -125,10 +126,10 @@ public interface OpenAPI extends Constructible, Extensible {
     /**
      * Adds the given server to this OpenAPI instance's list of servers.
      *
-     * @param server Server object which provides connectivity information to a target server
+     * @param serversItem Server object which provides connectivity information to a target server
      * @return the current OpenAPI object
      */
-    OpenAPI addServer(Server server);
+    OpenAPI addServersItem(Server serversItem);
 
     /**
      * Returns the security property from an OpenAPI instance.
@@ -155,10 +156,10 @@ public interface OpenAPI extends Constructible, Extensible {
     /**
      * Adds the given security requirement to this OpenAPI instance's list of security requirements.
      *
-     * @param securityRequirement security mechanism which can be used across the API
+     * @param securityItem security mechanism which can be used across the API
      * @return the current OpenAPI object
      */
-    OpenAPI addSecurityRequirement(SecurityRequirement securityRequirement);
+    OpenAPI addSecurityItem(SecurityRequirement securityItem);
 
     /**
      * Returns the tags property from an OpenAPI instance.
@@ -186,10 +187,10 @@ public interface OpenAPI extends Constructible, Extensible {
     /**
      * Adds the given tag to this OpenAPI instance's list of tags.
      *
-     * @param tag a tag used by the specification with additional metadata
+     * @param tagsItem a tag used by the specification with additional metadata
      * @return the current OpenAPI object
      */
-    OpenAPI addTag(Tag tag);
+    OpenAPI addTagsItem(Tag tagsItem);
 
     /**
      * Returns the paths property from an OpenAPI instance.
@@ -244,4 +245,22 @@ public interface OpenAPI extends Constructible, Extensible {
      */
     OpenAPI components(Components components);
 
+    /**
+     * Adds the given schema to this OpenAPI instance's components property.
+     * 
+     * @param name the canonical name of the given schema
+     * @param schema a schema to add to the components property
+     * @return the current OpenAPI object
+     */
+    OpenAPI schema(String name, Schema schema);
+
+    /**
+     * Adds the given security scheme to this OpenAPI instance's components property. This convenience method is similar to
+     * Components.addSecuritySchemes.
+     * 
+     * @param name the canonical name of the given security scheme
+     * @param securityScheme a security scheme to add to the components property
+     * @return the current OpenAPI object
+     */
+    OpenAPI securityScheme(String name, SecurityScheme securityScheme);
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java
index 12c5eff..00fccd9 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java
@@ -36,7 +36,6 @@ import org.eclipse.microprofile.openapi.models.servers.Server;
  * @see <a href= "https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject">OpenAPI Specification Operation
  *      Object</a>
  */
-@SuppressWarnings("rawtypes")
 public interface Operation extends Constructible, Extensible {
 
     /**
@@ -64,10 +63,10 @@ public interface Operation extends Constructible, Extensible {
     /**
      * Adds the given tag to this Operation's list of tags.
      *
-     * @param tag a tag for API documentation control
+     * @param tagsItem a tag for API documentation control
      * @return the current Operation object
      **/
-    Operation addTag(String tag);
+    Operation addTagsItem(String tagsItem);
 
     /**
      * Returns the summary property from an Operation instance.
@@ -182,10 +181,10 @@ public interface Operation extends Constructible, Extensible {
     /**
      * Adds the given parameter item to this Operation's list of parameters.
      *
-     * @param parameter a parameter that is applicable for this operation
+     * @param parametersItem a parameter that is applicable for this operation
      * @return the current Operation object
      **/
-    Operation addParameter(Parameter parameter);
+    Operation addParametersItem(Parameter parametersItem);
 
     /**
      * Returns the requestBody property from an Operation instance.
@@ -300,10 +299,10 @@ public interface Operation extends Constructible, Extensible {
     /**
      * Adds the given security requirement item to this Operation's list of security mechanisms.
      *
-     * @param securityRequirement security mechanism which can be used for this operation
+     * @param securityItem security mechanism which can be used for this operation
      * @return the current Operation object
      **/
-    Operation addSecurityRequirement(SecurityRequirement securityRequirement);
+    Operation addSecurityItem(SecurityRequirement securityItem);
 
     /**
      * Returns the servers property from an Operation instance.
@@ -330,9 +329,9 @@ public interface Operation extends Constructible, Extensible {
     /**
      * Adds the given server to this Operation's list of servers.
      *
-     * @param server server which can service this operation
+     * @param serversItem server which can service this operation
      * @return the current Operation object
      **/
-    Operation addServer(Server server);
+    Operation addServersItem(Server serversItem);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java
index fa221e9..6392d24 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java
@@ -34,7 +34,6 @@ import org.eclipse.microprofile.openapi.models.servers.Server;
  * @see <a href= "https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject"> OpenAPI Specification Path Item
  *      Object</a>
  */
-@SuppressWarnings("rawtypes")
 public interface PathItem extends Constructible, Extensible, Reference<PathItem> {
 
     /**
@@ -303,10 +302,10 @@ public interface PathItem extends Constructible, Extensible, Reference<PathItem>
     /**
      * Adds the given server to this PathItem's list of servers.
      *
-     * @param server a server to service operations in this path item
+     * @param serversItem a server to service operations in this path item
      * @return the current PathItem instance
      **/
-    PathItem addServer(Server server);
+    PathItem addServersItem(Server serversItem);
 
     /**
      * Returns the parameters property from this PathItem instance.
@@ -333,9 +332,9 @@ public interface PathItem extends Constructible, Extensible, Reference<PathItem>
     /**
      * Adds the given parameter to this PathItem's list of parameters.
      *
-     * @param parameter a parameter that is applicable to all the operations described under this path
+     * @param parametersItem a parameter that is applicable to all the operations described under this path
      * @return the current PathItem instance
      **/
-    PathItem addParameter(Parameter parameter);
+    PathItem addParametersItem(Parameter parametersItem);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java
index eb5f3fd..935bfba 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java
@@ -43,9 +43,9 @@ public interface Callback extends Constructible, Extensible, Reference<Callback>
      * complete HTTP message can be accessed. This includes accessing any part of a body that a JSON Pointer RFC6901 can reference.
      * 
      * @param name a runtime expression that can be evaluated in the context of a runtime HTTP request/response
-     * @param pathItem a path to add to this Callback's list of PathItems
+     * @param item a path to add to this Callback's list of PathItems
      * @return the current Callback instance
      */
-    Callback addPathItem(String name, PathItem pathItem);
+    Callback addPathItem(String name, PathItem item);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java
index 9b417da..785bd91 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java
@@ -34,7 +34,6 @@ import org.eclipse.microprofile.openapi.models.media.Schema;
  * 
  * @see <a href= "https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#header-object">OpenAPI Specification Header Object</a>
  */
-@SuppressWarnings("rawtypes")
 public interface Header extends Constructible, Extensible, Reference<Header> {
 
     /**
@@ -238,10 +237,10 @@ public interface Header extends Constructible, Extensible, Reference<Header> {
      * specified in the parameter encoding.
      *
      * @param key string to represent the example
-     * @param example example of the media type
+     * @param examplesItem example of the media type
      * @return the current Header instance
      */
-    Header addExample(String key, Example example);
+    Header addExample(String key, Example examplesItem);
 
     /**
      * Returns the example property from a Header instance.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java
index 9d38915..e622e63 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java
@@ -145,13 +145,6 @@ public interface Link extends Constructible, Extensible, Reference<Link> {
      */
     void setParameters(Map<String, Object> parameters);
 
-    /**
-     * Sets this Link's parameters property to the given map and returns the modified Link instance.
-     *
-     * @param parameters a map representing parameters to pass to this link's operation as specified with operationId or identified via operationRef
-     */
-    Link parameters(Map<String, Object> parameters);
-
     /**
      * Add a new parameter to the parameters property of this instance of Link.
      *
@@ -160,7 +153,7 @@ public interface Link extends Constructible, Extensible, Reference<Link> {
      * @param parameter a constant or an expression to be evaluated at runtime and passed to the linked operation
      * @return the current Link instance
      */
-    Link addParameter(String name, Object parameter);
+    Link parameters(String name, Object parameter);
 
     /**
      * Returns the description property from a Link instance.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ArraySchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ArraySchema.java
index 7cc60df..8d7f667 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ArraySchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ArraySchema.java
@@ -20,7 +20,6 @@ package org.eclipse.microprofile.openapi.models.media;
 /**
  * The schema used for the elements of an array. All elements must be the same type.
  */
-@SuppressWarnings("rawtypes")
 public interface ArraySchema extends Schema {
 
     /**
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BinarySchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BinarySchema.java
index e3814f0..e926060 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BinarySchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BinarySchema.java
@@ -57,4 +57,12 @@ public interface BinarySchema extends Schema<byte[]> {
      */
     BinarySchema enumeration(List<byte[]> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current BinarySchema instance
+     */
+    BinarySchema addEnumerationItem(byte[] enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BooleanSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BooleanSchema.java
index 215d318..2a74777 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BooleanSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/BooleanSchema.java
@@ -48,4 +48,12 @@ public interface BooleanSchema extends Schema<Boolean> {
      */
     BooleanSchema enumeration(List<Boolean> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current BooleanSchema instance
+     */
+    BooleanSchema addEnumerationItem(Boolean enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ByteArraySchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ByteArraySchema.java
index 856d6d0..d745de5 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ByteArraySchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ByteArraySchema.java
@@ -57,4 +57,12 @@ public interface ByteArraySchema extends Schema<byte[]> {
      */
     ByteArraySchema enumeration(List<byte[]> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current ByteArraySchema instance
+     */
+    ByteArraySchema addEnumerationItem(byte[] enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ComposedSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ComposedSchema.java
index 959df82..b61c48f 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ComposedSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/ComposedSchema.java
@@ -23,7 +23,6 @@ import java.util.List;
  * Create a schema composed of other schemas. An object with this schema can take a value conforming to one (or more) of the schemas used to build
  * this one.
  */
-@SuppressWarnings("rawtypes")
 public interface ComposedSchema extends Schema {
 
     /**
@@ -51,10 +50,10 @@ public interface ComposedSchema extends Schema {
     /**
      * Adds the given schema to this ComposedSchema's list of schemas used by the allOf property.
      * 
-     * @param allOf a schema to use with the allOf property
+     * @param allOfItem a schema to use with the allOf property
      * @return the current ComposedSchema instance
      */
-    ComposedSchema addAllOf(Schema allOf);
+    ComposedSchema addAllOfItem(Schema allOfItem);
 
     /**
      * Returns the schemas used by the anyOf property in a ComposedSchema instance.
@@ -81,10 +80,10 @@ public interface ComposedSchema extends Schema {
     /**
      * Adds the given schema to this ComposedSchema's list of schemas used by the anyOf property.
      * 
-     * @param anyOf a schema to use with the anyOf property
+     * @param anyOfItem a schema to use with the anyOf property
      * @return the current ComposedSchema instance
      */
-    ComposedSchema addAnyOf(Schema anyOf);
+    ComposedSchema addAnyOfItem(Schema anyOfItem);
 
     /**
      * Returns the schemas used by the oneOf property in a ComposedSchema instance.
@@ -111,9 +110,9 @@ public interface ComposedSchema extends Schema {
     /**
      * Adds the given schema to this ComposedSchema's list of schemas used by the oneOf property.
      * 
-     * @param oneOf a schema to use with the oneOf property
+     * @param oneOfItem a schema to use with the oneOf property
      * @return the current ComposedSchema instance
      */
-    ComposedSchema addOneOf(Schema oneOf);
+    ComposedSchema addOneOfItem(Schema oneOfItem);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java
index cf6f0ac..d01f1a9 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java
@@ -34,9 +34,9 @@ public interface Content extends Constructible, Map<String, MediaType> {
      * into or returned from an operation.
      *
      * @param name the name of a media type e.g. application/json.
-     * @param mediaType an object that describes the content passed into or returned from an operation.
+     * @param item an object that describes the content passed into or returned from an operation.
      * @return the current Content instance
      */
-    Content addMediaType(String name, MediaType mediaType);
+    Content addMediaType(String name, MediaType item);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/DateSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/DateSchema.java
index a461af7..3a8419e 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/DateSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/DateSchema.java
@@ -58,4 +58,12 @@ public interface DateSchema extends Schema<Date> {
      */
     DateSchema enumeration(List<Date> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current DateSchema instance
+     */
+    DateSchema addEnumerationItem(Date enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/EmailSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/EmailSchema.java
index 80959be..80f9991 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/EmailSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/EmailSchema.java
@@ -56,4 +56,12 @@ public interface EmailSchema extends Schema<String> {
      */
     EmailSchema enumeration(List<String> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current EmailSchema instance
+     */
+    EmailSchema addEnumerationItem(String enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/IntegerSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/IntegerSchema.java
index fd7b3dc..a34d7f7 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/IntegerSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/IntegerSchema.java
@@ -57,4 +57,12 @@ public interface IntegerSchema extends Schema<Integer> {
      */
     IntegerSchema enumeration(List<Integer> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current IntegerSchema instance
+     */
+    IntegerSchema addEnumerationItem(Integer enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MapSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MapSchema.java
index f29f5ff..f5dd5d2 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MapSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MapSchema.java
@@ -20,7 +20,6 @@ package org.eclipse.microprofile.openapi.models.media;
 /**
  * The schema used for an object that holds map data.
  */
-@SuppressWarnings("rawtypes")
 public interface MapSchema extends Schema {
 
     /**
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java
index 2b1eacf..926fd3b 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java
@@ -32,7 +32,6 @@ import org.eclipse.microprofile.openapi.models.examples.Example;
  * @see <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#mediaTypeObject">OpenAPI Specification Media Type
  *      Object</a>
  */
-@SuppressWarnings("rawtypes")
 public interface MediaType extends Constructible, Extensible {
 
     /**
@@ -86,10 +85,10 @@ public interface MediaType extends Constructible, Extensible {
      * present.
      *
      * @param key any unique name to identify the example object
-     * @param example an example of a media type
+     * @param examplesItem an example of a media type
      * @return the current MediaType instance
      */
-    MediaType addExample(String key, Example example);
+    MediaType addExamples(String key, Example examplesItem);
 
     /**
      * Returns the example property from a MediaType instance.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/NumberSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/NumberSchema.java
index 2214417..6a131a8 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/NumberSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/NumberSchema.java
@@ -49,4 +49,12 @@ public interface NumberSchema extends Schema<BigDecimal> {
      */
     NumberSchema enumeration(List<BigDecimal> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current NumberSchema instance
+     */
+    NumberSchema addEnumerationItem(BigDecimal enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/PasswordSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/PasswordSchema.java
index d7e7bb0..4e743b1 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/PasswordSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/PasswordSchema.java
@@ -57,4 +57,12 @@ public interface PasswordSchema extends Schema<String> {
      */
     PasswordSchema enumeration(List<String> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current PasswordSchema instance
+     */
+    PasswordSchema addEnumerationItem(String enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java
index 8e4f199..b3ddc73 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java
@@ -125,9 +125,9 @@ public interface Schema<T> extends Constructible, Extensible, Reference<Schema<T
     /**
      * Adds an item of the appropriate type to the enumerated list of values allowed.
      *
-     * @param enumeration an object to add to the enumerated values
+     * @param enumerationItem an object to add to the enumerated values
      */
-    void addEnumeration(T enumeration);
+    void addEnumerationItemObject(T enumerationItem);
 
     /**
      * Returns the multipleOf property from this schema instance.
@@ -454,10 +454,10 @@ public interface Schema<T> extends Constructible, Extensible, Reference<Schema<T
     /**
      * Adds the name of an item to the list of fields required in objects defined by this schema.
      *
-     * @param required the name of an item required in objects defined by this schema instance
+     * @param requiredItem the name of an item required in objects defined by this schema instance
      * @return the current Schema instance
      */
-    Schema addRequired(String required);
+    Schema addRequiredItem(String requiredItem);
 
     /**
      * Returns the type property from this schema.
@@ -529,10 +529,10 @@ public interface Schema<T> extends Constructible, Extensible, Reference<Schema<T
      * Adds a schema property of the provided name using the given schema.
      *
      * @param key the name of a new schema property
-     * @param propertySchema the schema which describes the properties of the named property
+     * @param propertiesItem the schema which describes the properties of the named property
      * @return the current Schema instance
      */
-    Schema addProperty(String key, Schema propertySchema);
+    Schema addProperties(String key, Schema propertiesItem);
 
     /**
      * Returns the schema which defines new properties added to objects defined by the current schema.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/StringSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/StringSchema.java
index 9905329..2f90f98 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/StringSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/StringSchema.java
@@ -48,4 +48,12 @@ public interface StringSchema extends Schema<String> {
      */
     StringSchema enumeration(List<String> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current StringSchema instance
+     */
+    StringSchema addEnumerationItem(String enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/UUIDSchema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/UUIDSchema.java
index eba4457..703a8c7 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/UUIDSchema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/UUIDSchema.java
@@ -66,4 +66,12 @@ public interface UUIDSchema extends Schema<UUID> {
      */
     UUIDSchema enumeration(List<UUID> enumeration);
 
+    /**
+     * Adds an item of the appropriate type to the enumerated list of values allowed.
+     *
+     * @param enumerationItem an object to add to the enumerated values
+     * @return the current UUIDSchema instance
+     */
+    UUIDSchema addEnumerationItem(UUID enumerationItem);
+
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java
index 49c4460..a91d077 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java
@@ -48,7 +48,6 @@ import org.eclipse.microprofile.openapi.models.media.Schema;
  * @see <a href= "https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject">OpenAPI Specification Parameter
  *      Object</a>
  */
-@SuppressWarnings("rawtypes")
 public interface Parameter<T extends Parameter<T>> extends Extensible, Reference<T> {
 
     /**
@@ -321,10 +320,10 @@ public interface Parameter<T extends Parameter<T>> extends Extensible, Reference
      * parameter encoding.
      *
      * @param key string to represent the example
-     * @param example example of the media type
+     * @param examplesItem example of the media type
      * @return the current Parameter instance
      */
-    T addExample(String key, Example example);
+    T addExamples(String key, Example examplesItem);
 
     /**
      * Returns the example property from a Parameter instance.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java
index 19c2f3a..6d0ee76 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java
@@ -94,7 +94,7 @@ public interface APIResponse extends Constructible, Extensible, Reference<APIRes
      * @return this ApiResponse instance
      */
 
-    APIResponse addHeader(String name, Header header);
+    APIResponse addHeaderObject(String name, Header header);
 
     /**
      * Returns the map containing descriptions of potential response payload for this instance of ApiResponse.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java
index 3c37bb4..6344d1d 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java
@@ -35,10 +35,10 @@ public interface APIResponses extends Constructible, Map<String, APIResponse> {
      * Adds an ApiResponse in the format of the name as a key and the item as the value to ApiResponses map
      * 
      * @param name the name of ApiResponse 
-     * @param apiResponse the ApiResponse object to be added to ApiResponses map
+     * @param item the ApiResponse object to be added to ApiResponses map
      * @return ApiResponses map with the added ApiResponse instance
      **/
-    APIResponses addApiResponse(String name, APIResponse apiResponse);
+    APIResponses addApiResponse(String name, APIResponse item);
 
     /**
      * Returns the default documentation of responses other than the ones declared for specific HTTP response codes in this instance of ApiResponses.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java
index ee77b91..b73c4c8 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java
@@ -33,10 +33,10 @@ public interface Scopes extends Constructible, Extensible, Map<String, String> {
     /**
      * Adds name of an existing scope object and item parameters to a Scopes instance as a key-value pair in a map.
      *
-     * @param scope the name of a scope
-     * @param description description of the scope
+     * @param name the name of an existing scope
+     * @param item a parameter of an existing scope
      * @return Scopes instance with the added key-value pair
      */
-    Scopes addScope(String scope, String description);
+    Scopes addString(String name, String item);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java
index 69f8990..ff1d348 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java
@@ -30,33 +30,35 @@ import org.eclipse.microprofile.openapi.models.Constructible;
 public interface SecurityRequirement extends Constructible, Map<String, List<String>> {
 
     /**
-     * Adds a security scheme to the SecurityRequirement instance based on the scheme name and 
-     * required scope (optional) provided.
-     * 
-     * @param securitySchemeName the name of security scheme declared in the Components section of the OpenAPI document
-     * @param scope a required scope - only valid when the defined scheme is 'oauth2' or 'openIdConnect'
+     * Adds a List item to a SecurityRequirement instance based on the name and item parameters provided as key-value pair.
+     * <p>
+     * Takes value as a String object.
+     * </p>
+     * @param name the name of SecurityRequirement
+     * @param item parameter of SecurityRequirement
      * @return Updated SecurityRequirement instance
      */
-    SecurityRequirement addScheme(String securitySchemeName, String scope);
+    SecurityRequirement addList(String name, String item);
 
     /**
-     * Adds a security scheme to the SecurityRequirement instance based on the scheme name and 
-     * required scopes (optional) provided.
-     * 
-     * @param securitySchemeName the name of security scheme declared in the Components section of the OpenAPI document
-     * @param scopes the scopes required - only valid when the defined scheme is 'oauth2' or 'openIdConnect'
+     * Adds a List item to a SecurityRequirement instance based on the name and item parameters provided as key-value pair to the map.
+     * <p>
+     * Takes value as a List of String objects.
+     * </p>
+     * @param name the name of SecurityRequirement
+     * @param item parameter of SecurityRequirement
      * @return Updated SecurityRequirement instance
      */
-    SecurityRequirement addScheme(String securitySchemeName, List<String> scopes);
+
+    SecurityRequirement addList(String name, List<String> item);
 
     /**
-     * Adds a security scheme to the SecurityRequirement instance based on the scheme name.  No 
-     * scopes are included, resulting in an empty list of scopes for the security scheme.  This
-     * is valid when the defined security scheme is not 'oauth2' or 'openIdConnect'.
+     * Adds a new empty List item to a SecurityRequirement instance based on the name parameter provided as key to the map.
      * 
-     * @param securitySchemeName the name of security scheme declared in the Components section of the OpenAPI document
+     * @param name the name of SecurityRequirement
      * @return Updated SecurityRequirement instance
      */
-    SecurityRequirement addScheme(String securitySchemeName);
+
+    SecurityRequirement addList(String name);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java
index 90b9c99..729a01f 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java
@@ -62,10 +62,10 @@ public interface ServerVariable extends Constructible, Extensible {
      * <p>
      * If the enumeration list is null, this method should create a new ArrayList and add the item.
      * </p>
-     * @param enumeration an item to be added to enum list
+     * @param enumerationItem an item to be added to enum list
      * @return ServerVariable instance with the added enum item.
      */
-    ServerVariable addEnumeration(String enumeration);
+    ServerVariable addEnumerationItem(String enumerationItem);
 
     /**
      * The default value to use for substitution, and to send, if an alternate value is not supplied. This value MUST be provided by the consumer and
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java
index 3ea3d23..d4ba38e 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java
@@ -33,9 +33,9 @@ public interface ServerVariables extends Constructible, Extensible, Map<String,
      * This method adds a key-value item to a ServerVariables instance from the name-item parameter pair and returns the modified instance.
      *
      * @param name the name of ServerVariable instance
-     * @param serverVariable the ServerVariable instance
+     * @param item the ServerVariable instance
      * @return ServerVariables instance with the added name-item pair.
      */
-    ServerVariables addServerVariable(String name, ServerVariable serverVariable);
+    ServerVariables addServerVariable(String name, ServerVariable item);
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/spi/OASFactoryResolver.java b/api/src/main/java/org/eclipse/microprofile/openapi/spi/OASFactoryResolver.java
index 4b62099..b93680b 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/spi/OASFactoryResolver.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/spi/OASFactoryResolver.java
@@ -41,10 +41,7 @@ public abstract class OASFactoryResolver {
      * @param <T> describes the type parameter
      * @param clazz represents a model which extends the org.eclipse.microprofile.openapi.models.Constructible interface
 
-     * @return a new instance of the requested model class
-     * 
-     * @throws NullPointerException if the specified class is null
-     * @throws IllegalArgumentException if an instance could not be created, most likely, due to an illegal or inappropriate class
+     * @return a new instance of the requested model
      */
     public abstract <T extends Constructible> T createObject(Class<T> clazz);
 
diff --git a/spec/src/main/asciidoc/microprofile-openapi-spec.adoc b/spec/src/main/asciidoc/microprofile-openapi-spec.adoc
index 1c72b1e..07ea25c 100644
--- a/spec/src/main/asciidoc/microprofile-openapi-spec.adoc
+++ b/spec/src/main/asciidoc/microprofile-openapi-spec.adoc
@@ -65,7 +65,7 @@ https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciido
 
 Vendors implementing the MP OpenAPI specification can also provide additional native
 ways for these configuration values to be injected into the framework
-(e.g. via a server configuration file), as long as they also implement the MP Config
+(eg: via a server configuration file), as long as they also implement the MP Config
 specification.
 
 
@@ -73,9 +73,9 @@ specification.
 
 Vendors must support all the <<Core configurations>> of this specification.
 Optionally, they may also support <<Vendor extensions>> that allow the configuration of
-framework-specific values for configurations that affect implementation behavior.
+framework-specific values for configurations that are affect implementation behavior.
 
-For convenience of vendors (and application developers using custom ConfigSources),
+For convenience of vendors (and applications developers using custom ConfigSources),
 the full list of supported configuration keys is available as constants in the
 https://github.com/eclipse/microprofile-open-api/blob/master/api/src/main/java/org/eclipse/microprofile/openapi/OASConfig.java[OASConfig] class.
 
@@ -89,22 +89,12 @@ The following is a list of configuration values that every vendor must support.
 
 | `mp.openapi.model.reader` | Configuration property to specify the fully qualified name of the <<OASModelReader>> implementation.
 | `mp.openapi.filter` | Configuration property to specify the fully qualified name of the <<OASFilter>> implementation.
-| `mp.openapi.scan.disable`  |  Configuration property to disable annotation scanning. Default value is `false`.
-| `mp.openapi.scan.packages`  |  Configuration property to specify the list of packages to scan. For example,
-`mp.openapi.scan.packages=com.xyz.PackageA,com.xyz.PackageB`
-| `mp.openapi.scan.classes`  |  Configuration property to specify the list of classes to scan. For example,
-`mp.openapi.scan.classes=com.xyz.MyClassA,com.xyz.MyClassB`
-| `mp.openapi.scan.exclude.packages`  |  Configuration property to specify the list of packages to exclude from scans. For example,
-`mp.openapi.scan.exclude.packages=com.xyz.PackageC,com.xyz.PackageD`
-| `mp.openapi.scan.exclude.classes`  |  Configuration property to specify the list of classes to exclude from scans. For example,
-`mp.openapi.scan.exclude.classes=com.xyz.MyClassC,com.xyz.MyClassD`
-| `mp.openapi.servers`  |  Configuration property to specify the list of global servers that provide connectivity information. For example,
-`mp.openapi.servers=https://xyz.com/v1,https://abc.com/v1`
-| `mp.openapi.servers.path.`   |  Prefix of the configuration property to specify an alternative list of servers to service all operations in a path. For example,
-`mp.openapi.servers.path./airlines/bookings/{id}=https://xyz.io/v1`
+| `mp.openapi.scan.disable`  |  Configuration property to disable annotation scanning.
+| `mp.openapi.scan.packages`  |  Configuration property to specify the list of packages to scan.
+| `mp.openapi.scan.classes`  |  Configuration property to specify the list of classes to scan.
+| `mp.openapi.servers`  |  Configuration property to specify the list of global servers that provide connectivity information.
+| `mp.openapi.servers.path.`   |  Prefix of the configuration property to specify an alternative list of servers to service all operations in a path.
 | `mp.openapi.servers.operation.` | Prefix of the configuration property to specify an alternative list of servers to service an operation.
-Operations that want to specify an alternative list of servers must define an `operationId`, a unique string used to identify the operation. For example,
-`mp.openapi.servers.operation.getBooking=https://abc.io/v1`
 |===
 
 ==== Vendor extensions
@@ -118,20 +108,21 @@ There are many different ways to provide input for the generation of the resulti
 OpenAPI document.
 
 The easiest way to get started is via the <<Annotations>>, since
-they augment (not replace) the existing JAX-RS annotations.  Using annotations means
+they augment (not replace) the existing JAX-RS annotations, meaning that application
 developers don't have to re-write the portions of the OpenAPI document that are
-already covered by the JAX-RS framework (e.g. the HTTP method of an operation).
+already covered by the JAX-RS framework (eg: the HTTP method of an operation).
 
 Another way to document your APIs is via <<Static OpenAPI files>>.  This
-is often adopted by enterprises that want to lock-in the contract of the API
+is specially adopted by enterprises that want to lock-in the contract of the API
 before any code is written.  In this case, we refer to the OpenAPI document as the
-"source of truth", by which the client and provider must abide.
+"source of truth", by which the client and provider must abide to.
 
-The MP OpenAPI specification also defines a <<Programming model>> that allows
-application developers to provide a bootstrap (or complete) OpenAPI model tree.
+The MP OpenAPI specification also provides a <<Programming model>> that allows
+application developers to provide a bootstrap or complete OpenAPI model tree.
 
-Lastly, a <<Filter>> is described which can update the OpenAPI model after it has
-been built from the previously described documentation mechanisms.
+Lastly, a <<Filter>> is described which can update different parts of the OpenAPI
+document during various processing stages independently of which documentation
+mechanisms are being used.
 
 === Annotations
 
@@ -240,20 +231,20 @@ TODO: Add other key annotations (issue #10)
 === Static OpenAPI files
 
 Application developers may wish to include a pre-generated OpenAPI document that
-was written separately from the code (e.g. with an editor such as https://editor.swagger.io/[this]).
+was written separately from the code (eg: with an editor such as https://editor.swagger.io/[this]).
 
 Depending on the scenario, the document may be fully complete or partially complete.
 If a document is fully complete then the application developer will want to set the
-`mp.openapi.scan.disable` configuration property to `true`.  If a document is partially
+`mp.openapi.scan.disable` configuration to `true`.  If a document is partially
 complete, then the application developer will need to augment the OpenAPI snippet
 with annotations, programming model, or via the filter.
 
 ==== Location and formats
 
 Vendors are required to fetch a single document with extension of `yml`, `yaml` or
-`json`, inside the application's `META-INF/openapi` folder.  If there is more than
-one document found that matches one of these extensions the behavior of which file
-is chosen is undefined (i.e. each vendor may implement their own logic), which means
+`json`, inside the application's `META-INF/openapi` folder.  If there are more than
+one document found that matched one of these extensions the behavior of which file
+is chosen is undefined (ie: each vendor may implement their own logic), which means
 that application developers should only place a single document into that folder.
 
 === Programming model
@@ -265,7 +256,7 @@ complete set of models are found in the https://github.com/eclipse/microprofile-
 
 The https://github.com/eclipse/microprofile-open-api/blob/master/api/src/main/java/org/eclipse/microprofile/openapi/OASFactory.java[OASFactory] is used to create all of the elements of an OpenAPI tree.
 
-For example, the following snippet creates a simple https://github.com/eclipse/microprofile-open-api/blob/master/api/src/main/java/org/eclipse/microprofile/openapi/models/info/Info.java[Info] element that contains a title, description, and version.
+For example, the following snippet creates a simple https://github.com/eclipse/microprofile-open-api/blob/master/api/src/main/java/org/eclipse/microprofile/openapi/models/info/Info.java[Info] element that contains a title, description and version.
 
 [source,java]
 ----
@@ -277,7 +268,7 @@ OASFactory.createObject(Info.class).title("Airlines").description("Airlines APIs
 The https://github.com/eclipse/microprofile-open-api/blob/master/api/src/main/java/org/eclipse/microprofile/openapi/OASModelReader.java[OASModelReader] interface allows application developers to bootstrap the OpenAPI model tree
 used by the processing framework.  To use it, simply create an implementation of
 this interface and register it using the `mp.openapi.model.reader` configuration
-key, where the value is the fully qualified name of the reader class.
+key, where the value is the qualified name of the reader.
 
 .Sample META-INF/microprofile-config.properties
 [code,property]
@@ -299,7 +290,7 @@ application.
 
 There are many scenarios where application developers may wish to update or remove
 certain elements and fields of the OpenAPI document.  This is done via a filter,
-which is called once after all other documentation mechanisms have completed.
+which is called during various stages of the processing lifecycle.
 
 ==== OASFilter
 
@@ -308,7 +299,7 @@ to receive callbacks for various key OpenAPI elements.  The interface has a defa
 implementation for every method, which allows application developers to only override
 the methods they care about.  To use it, simply create an implementation of
 this interface and register it using the `mp.openapi.filter` configuration
-key, where the value is the fully qualified name of the filter class.
+key, where the value is the qualified name of the filter.
 
 .Sample META-INF/microprofile-config.properties
 [code,property]
@@ -316,9 +307,9 @@ key, where the value is the fully qualified name of the filter class.
 mp.openapi.filter=com.mypackage.MyFilter
 ----
 
-Vendors are required to call all registered filters in the application (0..N) once
-for each filtered element.  For example, the method `filterPathItem` is
-called *for each* corresponding `PathItem` element in the model tree.  This allows
+Vendors are required to call all registered filters in the application (0..N) during
+the end of each filtered element.  For example, the method `filterPathItem` is
+called *after* the corresponding `PathItem` element is fully populated.  This allows
 application developers to filter the element and any of its descendants.
 
 The order of filter methods called is undefined, with two exceptions:
@@ -337,26 +328,25 @@ are required to process these different sources in the following order:
 
 1. Fetch configuration values from `mp.openapi` namespace
 2. Call OASModelReader
-3. Fetch static OpenAPI file
-4. Process annotations
-5. Filter model via OASFilter
+3. Register OASFilter
+4. Fetch static OpenAPI file
+5. Process annotations
 
-**Example processing**:
-
-* A vendor starts by fetching all available <<Configuration>>.  If
+Example processing: +
+ A vendor starts by fetching all available <<Configuration>>.  If
 an `OASModelReader` was specified in that configuration list, its `buildModel`
-method is called to form the starting OpenAPI model tree for this application.
-* Any <<Vendor specific configuration>> are added on top of that starting model (overriding
-conflicts), or create a new model if an `OASModelReader` was not registered.
-* The vendor searches for a file as defined in the section <<Static OpenAPI files>>.
-If found, it will read that document and merge with the model produced by previous
-processing steps (if any), where conflicting elements from the static file will override
-the values from the original model.
-* If annotation scanning was not disabled, the JAX-RS and OpenAPI annotations from
-the application will be processed, further overriding any conflicting elements
-from the current model.
-* The final model is filtered by walking the model tree and invoking all registered
-<<OASFilter>> classes.
+method is called to form the starting OpenAPI model tree for this application. +
+Any <<Vendor specific configuration>> are added on top of that starting model (overriding
+conflicts), or create a new model if an `OASModelReader` was not registered. +
+If an `OASFilter` was specified the vendor registers the filter with its framework,
+which will call the filter upon any future internal model events (e.g. adding new operation). +
+Next, the vendor searches for a file as defined in the section <<Static OpenAPI files>>.
+If found, it will read that document and merge with the model that it got from
+the `OASModelReader`, where conflicting elements from the static file will override
+the values from the original model. +
+Lastly, if annotation scanning was not disabled,
+the JAX-RS and OpenAPI annotations from the application will be processed, further
+overriding any conflicting elements from the current model.
 
 == OpenAPI Endpoint
 
@@ -375,10 +365,10 @@ Vendors must also support the type `application/json` if requested via the
 `Accept` header.
 
 === Query parameters
-No query parameters are required for the `/openapi` endpoint.  However, one
+No query parameter are required for the `/openapi` endpoint.  However, one
 suggested but optional query parameter for vendors to support is `format`,
-where the value can be either `json` or `yaml`, to facilitate the toggle between
-the default `yaml` format and `json` format.
+where the value can be `json`, to facilitate the toggle between the default `yaml`
+format and `json` format.
 
 === Context root behaviour
 Vendors are required to ensure that the combination of each global https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#serverObject[server]
diff --git a/tck/pom.xml b/tck/pom.xml
index 928b8c9..0856d08 100644
--- a/tck/pom.xml
+++ b/tck/pom.xml
@@ -24,7 +24,7 @@
     </parent>
 
     <artifactId>microprofile-openapi-tck</artifactId>
-    <name>MicroProfile OpenAPI TCK</name>
+    <name>MicroProfile OpenAPI - TCK</name>
     <description>MicroProfile OpenAPI :: TCK</description>
 
     <build>
@@ -105,12 +105,5 @@
             <artifactId>javax.ws.rs-api</artifactId>
             <version>2.0</version>
         </dependency>
-
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-            <version>3.1.0</version>
-            <scope>provided</scope>
-        </dependency>
     </dependencies>
 </project>
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/AirlinesResource.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/AirlinesResource.java
index 1dfda59..d28bc8c 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/AirlinesResource.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/AirlinesResource.java
@@ -20,7 +20,6 @@ import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Response;
-
 import org.eclipse.microprofile.openapi.annotations.Operation;
 import org.eclipse.microprofile.openapi.annotations.callbacks.Callback;
 import org.eclipse.microprofile.openapi.annotations.media.Content;
@@ -28,7 +27,6 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema;
 import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
 import org.eclipse.microprofile.openapi.annotations.tags.Tag;
 import org.eclipse.microprofile.openapi.annotations.tags.Tags;
-
 import org.eclipse.microprofile.openapi.apps.airlines.JAXRSApp;
 import org.eclipse.microprofile.openapi.apps.airlines.model.Airline;
 import org.eclipse.microprofile.openapi.apps.airlines.model.Flight;
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/ReviewResource.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/ReviewResource.java
index c00c74b..f7e64b6 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/ReviewResource.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/ReviewResource.java
@@ -191,8 +191,7 @@ public class ReviewResource {
             in = ParameterIn.PATH,
             content = @Content(
                 examples = @ExampleObject(
-                    value = "bsmith")),
-            examples = { "bsmith", "pat@example.com" } )
+                    value = "bsmith")))
         @PathParam("user") String user){
 
             List<Review> reviewsByUser = new ArrayList<Review>();
@@ -225,8 +224,7 @@ public class ReviewResource {
                 in = ParameterIn.PATH,
                 content = @Content(
                     examples = @ExampleObject(
-                        value = "Acme Air")),
-                example = "Acme Air")
+                        value = "Acme Air")))
         },
         responses={
             @APIResponse(
@@ -347,7 +345,7 @@ public class ReviewResource {
                 )
             )
         }
-    )
+            )
     @Operation(
         method = "post",
         summary="Create a Review",
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/UserResource.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/UserResource.java
index 17c6027..16a6e94 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/UserResource.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/airlines/resources/UserResource.java
@@ -24,6 +24,7 @@ import org.eclipse.microprofile.openapi.annotations.headers.Header;
 import org.eclipse.microprofile.openapi.annotations.links.Link;
 import org.eclipse.microprofile.openapi.annotations.links.LinkParameter;
 import org.eclipse.microprofile.openapi.annotations.media.Schema;
+import org.eclipse.microprofile.openapi.annotations.media.ArraySchema;
 import org.eclipse.microprofile.openapi.annotations.media.ExampleObject;
 import org.eclipse.microprofile.openapi.annotations.media.Encoding;
 import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
@@ -31,7 +32,6 @@ import org.eclipse.microprofile.openapi.annotations.enums.ParameterIn;
 import org.eclipse.microprofile.openapi.annotations.enums.ParameterStyle;
 import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
 import org.eclipse.microprofile.openapi.annotations.security.SecurityScheme;
-import org.eclipse.microprofile.openapi.annotations.servers.Server;
 import org.eclipse.microprofile.openapi.annotations.enums.SecuritySchemeType;
 import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirement;
 import org.eclipse.microprofile.openapi.annotations.media.Content;
@@ -76,9 +76,9 @@ import javax.ws.rs.core.Response;
     securitySchemeName = "httpTestScheme",
     scheme = "testScheme")
 @SecurityRequirement(
-    name = "httpTestScheme",
-    scopes = "write:users"
-)
+    name = "users",
+    scopes = "write:users")
+
 public class UserResource {
 
     static UserData userData = new UserData();
@@ -98,10 +98,6 @@ public class UserResource {
                 schema = @Schema(
                     name = "testUser",
                     type = "object",
-                    maxProperties = 1024,
-                    minProperties = 1,
-                    requiredProperties = { "id", "username", "password" },
-                    required = true, 
                     implementation = User.class),
                 examples = @ExampleObject(
                     name = "user",
@@ -239,10 +235,7 @@ public class UserResource {
                     mediaType = "application/json",
                     schema = @Schema(
                         type = "array",
-                        implementation = User.class,
-                        nullable = true,
-                        writeOnly = true,
-                        minItems = 2
+                        implementation = User.class
                     ),
                     encoding = @Encoding(
                         name = "firstName",
@@ -251,6 +244,13 @@ public class UserResource {
                         allowReserved = true,
                         explode = true
                     )
+                ),
+                array = @ArraySchema(
+                    schema = @Schema(
+                        type = "object",
+                        implementation = User.class
+                    ),
+                    minItems = 2
                 )
             )
         },
@@ -330,7 +330,7 @@ public class UserResource {
                 description = "User updated successfully",
                 content = @Content(
                     schema = @Schema(
-                        name = "updatedUser",
+                        name = "upadtedUser",
                         implementation = User.class
                         ),
                     encoding = @Encoding(
@@ -461,25 +461,15 @@ public class UserResource {
                 responseCode = "200",
                 description = "Successfully retrieved user by id.",
                 content = @Content(
-                    schema = @Schema(implementation = User.class)),
-                links = { 
-                    @Link(
+                    schema = @Schema(implementation = User.class)
+                ),
+                links = @Link(
                         name = "User name",
                         description = "The username corresponding to provided user id",
                         operationId = "getUserByName",
                         parameters = @LinkParameter(
                             name = "userId",
-                            expression = "$request.path.id")),
-                    @Link(
-                         name = "Review",
-                         description = "The reviews provided by user",
-                         operationRef = "/db/reviews/{userName}",
-                         parameters = @LinkParameter(
-                             name = "path.userName",
-                             expression = "$response.body#userName"),
-                         requestBody = "$request.path.id",
-                         server = @Server(url = "http://example.com"))
-                }
+                            expression = "$request.path.id"))
                 ),
             @APIResponse(
                 responseCode = "400",
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/PetStoreApp.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/PetStoreApp.java
deleted file mode 100644
index ac1d33f..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/PetStoreApp.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.microprofile.openapi.annotations.ExternalDocumentation;
-import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition;
-import org.eclipse.microprofile.openapi.annotations.extensions.Extension;
-import org.eclipse.microprofile.openapi.annotations.extensions.Extensions;
-import org.eclipse.microprofile.openapi.annotations.info.Contact;
-import org.eclipse.microprofile.openapi.annotations.info.Info;
-import org.eclipse.microprofile.openapi.annotations.info.License;
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-import org.eclipse.microprofile.openapi.annotations.tags.Tag;
-
-import org.eclipse.microprofile.openapi.apps.petstore.resource.PetResource;
-import org.eclipse.microprofile.openapi.apps.petstore.resource.PetStoreResource;
-import org.eclipse.microprofile.openapi.apps.petstore.resource.UserResource;
-
-import javax.ws.rs.Path;
-import javax.ws.rs.core.Application;
-
-@Path("/")
-@OpenAPIDefinition(
-    info = @Info(
-        title="Swagger Petstore", 
-        version = "1.0", 
-        contact=@Contact(
-            email="apiteam@swagger.io", 
-            name = ""), 
-        license=@License(
-            name = "Apache 2.0", 
-            url="http://www.apache.org/licenses/LICENSE-2.0.html")
-    ),
-    externalDocs = @ExternalDocumentation(
-        url = "http://swagger.io", 
-        description="Find out more about our store"),
-    tags={
-        @Tag(name="pet", description="Everything about your Pets"),
-        @Tag(name="store", description="Access to PetStore orders"),
-        @Tag(name="user", description="Operations about user",
-            externalDocs = @ExternalDocumentation(
-                url = "http://swagger.io", 
-                description="Find out more about our store"))
-    }
-)
-@Extension(name = "x-mp-openapi1", value = "true")
-@Extensions( { @Extension(name = "x-mp-openapi2", value = "true"), @Extension(value = "false", name = "x-mp-openapi3") } )
-@Schema(
-    externalDocs = @ExternalDocumentation(
-        url = "http://swagger.io", 
-        description="Find out more about our store")
-)
-public class PetStoreApp extends Application {
-    @Override
-    public Set<Object> getSingletons() {
-        Set<Object> singletons = new HashSet<Object>();
-        singletons.add(new PetResource());
-        singletons.add(new PetStoreResource());
-        singletons.add(new UserResource());
-        return singletons;
-    }
-
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/PetData.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/PetData.java
deleted file mode 100644
index 99a2bb1..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/PetData.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.data;
-
-import org.eclipse.microprofile.openapi.apps.petstore.model.Category;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Pet;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Tag;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-
-public class PetData {
-  static List<Pet> pets = new ArrayList<Pet>();
-  static List<Category> categories = new ArrayList<Category>();
-
-  static {
-    categories.add(createCategory(1, "Dogs"));
-    categories.add(createCategory(2, "Cats"));
-    categories.add(createCategory(3, "Rabbits"));
-    categories.add(createCategory(4, "Lions"));
-
-    pets.add(createPet(1, categories.get(1), "Cat 1", new String[] {
-        "url1", "url2" }, new String[] { "tag1", "tag2" }, "available"));
-    pets.add(createPet(2, categories.get(1), "Cat 2", new String[] {
-        "url1", "url2" }, new String[] { "tag2", "tag3" }, "available"));
-    pets.add(createPet(3, categories.get(1), "Cat 3", new String[] {
-        "url1", "url2" }, new String[] { "tag3", "tag4" }, "pending"));
-
-    pets.add(createPet(4, categories.get(0), "Dog 1", new String[] {
-        "url1", "url2" }, new String[] { "tag1", "tag2" }, "available"));
-    pets.add(createPet(5, categories.get(0), "Dog 2", new String[] {
-        "url1", "url2" }, new String[] { "tag2", "tag3" }, "sold"));
-    pets.add(createPet(6, categories.get(0), "Dog 3", new String[] {
-        "url1", "url2" }, new String[] { "tag3", "tag4" }, "pending"));
-
-    pets.add(createPet(7, categories.get(3), "Lion 1", new String[] {
-        "url1", "url2" }, new String[] { "tag1", "tag2" }, "available"));
-    pets.add(createPet(8, categories.get(3), "Lion 2", new String[] {
-        "url1", "url2" }, new String[] { "tag2", "tag3" }, "available"));
-    pets.add(createPet(9, categories.get(3), "Lion 3", new String[] {
-        "url1", "url2" }, new String[] { "tag3", "tag4" }, "available"));
-
-    pets.add(createPet(10, categories.get(2), "Rabbit 1", new String[] {
-        "url1", "url2" }, new String[] { "tag3", "tag4" }, "available"));
-  }
-
-  public Pet getPetById(long petId) {
-    for (Pet pet : pets) {
-      if (pet.getId() == petId) {
-        return pet;
-      }
-    }
-    return null;
-  }
-
-  public boolean deletePet(long petId) {
-    if(pets.size() > 0) {
-        for (int i = pets.size() - 1; i >= 0; i--) {
-            Pet pet = pets.get(i);
-            if(pet.getId() == petId) {
-            pets.remove(i);
-            return true;
-            }
-        }
-    }
-    return false;
-  }
-
-  public List<Pet> findPetByStatus(String status) {
-    List<Pet> result = new java.util.ArrayList<Pet>();
-    if(status == null) {
-      return result;
-    }
-    String[] statuses = status.split(",");
-    for (Pet pet : pets) {
-        for (String s : statuses) {
-            if (s.equals(pet.getStatus())) {
-                result.add(pet);
-            }
-        }
-    }
-    return result;
-  }
-
-  public List<Pet> findPetByTags(String tags) {
-    String[] tagList = tags.split(",");
-    List<Pet> result = new java.util.ArrayList<Pet>();
-    for (Pet pet : pets) {
-        if (null != pet.getTags()) {
-            for (Tag tag : pet.getTags()) {
-                for (String tagListString : tagList) {
-                    if (tagListString.equals(tag.getName())){
-                        result.add(pet);
-                    }
-                }
-            }
-        }
-    }
-    return result;
-  }
-
-  public Pet addPet(Pet pet) {
-    if(pet.getId() == 0) {
-        long maxId = 0;
-        for (int i = pets.size() - 1; i >= 0; i--) {
-            if(pets.get(i).getId() > maxId) {
-                maxId = pets.get(i).getId();
-            }
-        }
-        pet.setId(maxId + 1);
-    }
-    if (pets.size() > 0) {
-        for (int i = pets.size() - 1; i >= 0; i--) {
-            if (pets.get(i).getId() == pet.getId()) {
-                pets.remove(i);
-            }
-        }
-    }
-    pets.add(pet);
-    return pet;
-  }
-
-  public Map<String, Integer> getInventoryByStatus() {
-    Map<String, Integer> output = new HashMap<String, Integer>();
-    for(Pet pet : pets) {
-        String status = pet.getStatus();
-        if(status != null && !"".equals(status)) {
-            Integer count = output.get(status);
-            if(count == null){
-                count = new Integer(1);
-            }
-            else{
-                count = count.intValue() + 1;
-            }
-            output.put(status, count);
-        }
-    }
-    return output;
-  }
-
-  static Pet createPet(long id, Category cat, String name, String[] urls,
-      String[] tags, String status) {
-    Pet pet = new Pet();
-    pet.setId(id);
-    pet.setCategory(cat);
-    pet.setName(name);
-    if (null != urls) {
-        List<String> urlObjs = new ArrayList<String>();
-        for (String urlString : urls) {
-            urlObjs.add(urlString);
-        }
-        pet.setPhotoUrls(urlObjs);
-    }
-    List<Tag> tagObjs = new java.util.ArrayList<Tag>();
-    int i = 0;
-    if (null != tags) {
-        for (String tagString : tags) {
-            i = i + 1;
-            Tag tag = new Tag();
-            tag.setId(i);
-            tag.setName(tagString);
-            tagObjs.add(tag);
-        }
-    }
-    pet.setTags(tagObjs);
-    pet.setStatus(status);
-    return pet;
-  }
-
-  static Category createCategory(long id, String name) {
-    Category category = new Category();
-    category.setId(id);
-    category.setName(name);
-    return category;
-  }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/StoreData.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/StoreData.java
deleted file mode 100644
index 47cc5b6..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/StoreData.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.data;
-
-import org.eclipse.microprofile.openapi.apps.petstore.model.Order;
-
-import java.util.Date;
-import java.util.List;
-import java.util.ArrayList;
-
-public class StoreData {
-    static List<Order> orders = new ArrayList<Order>();
-
-    static {
-        orders.add(createOrder(1, 1, 2, new Date(), "placed"));
-        orders.add(createOrder(2, 1, 2, new Date(), "delivered"));
-        orders.add(createOrder(3, 2, 2, new Date(), "placed"));
-        orders.add(createOrder(4, 2, 2, new Date(), "delivered"));
-        orders.add(createOrder(5, 3, 2, new Date(), "placed"));
-        orders.add(createOrder(6, 3, 2, new Date(), "placed"));
-        orders.add(createOrder(7, 3, 2, new Date(), "placed"));
-        orders.add(createOrder(8, 3, 2, new Date(), "placed"));
-        orders.add(createOrder(9, 3, 2, new Date(), "placed"));
-        orders.add(createOrder(10, 3, 2, new Date(), "placed"));
-    }
-
-    public Order findOrderById(long orderId) {
-        for (Order order : orders) {
-            if (order.getId() == orderId) {
-                return order;
-            }
-        }
-        return null;
-    }
-
-    public Order placeOrder(Order order) {
-        if (orders.size() > 0) {
-            for (int i = orders.size() - 1; i >= 0; i--) {
-                if (orders.get(i).getId() == order.getId()) {
-                    orders.remove(i);
-                }
-            }
-        }
-        orders.add(order);
-        return order;
-    }
-
-    public boolean deleteOrder(long orderId) {
-        if (orders.size() > 0) {
-            for (int i = orders.size() - 1; i >= 0; i--) {
-                if (orders.get(i).getId() == orderId) {
-                    orders.remove(i);
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private static Order createOrder(long id, long petId, int quantity,
-        Date shipDate, String status) {
-            Order order = new Order();
-            order.setId(id);
-            order.setPetId(petId);
-            order.setQuantity(quantity);
-            order.setShipDate(shipDate);
-            order.setStatus(status);
-            return order;
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/UserData.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/UserData.java
deleted file mode 100644
index 40b1366..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/UserData.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.data;
-
-import org.eclipse.microprofile.openapi.apps.petstore.model.User;
-
-import java.util.List;
-import java.util.ArrayList;
-
-public class UserData {
-    static List<User> users = new ArrayList<User>();
-
-    static {
-        users.add(createUser(1, "user1", "first name 1", "last name 1",
-            "email1@test.com", "123-456-7890", 1));
-        users.add(createUser(2, "user2", "first name 2", "last name 2",
-            "email2@test.com", "123-456-7890", 2));
-        users.add(createUser(3, "user3", "first name 3", "last name 3",
-            "email3@test.com", "123-456-7890", 3));
-        users.add(createUser(4, "user4", "first name 4", "last name 4",
-            "email4@test.com", "123-456-7890", 1));
-        users.add(createUser(5, "user5", "first name 5", "last name 5",
-            "email5@test.com", "123-456-7890", 2));
-        users.add(createUser(6, "user6", "first name 6", "last name 6",
-            "email6@test.com", "123-456-7890", 3));
-        users.add(createUser(7, "user7", "first name 7", "last name 7",
-            "email7@test.com", "123-456-7890", 1));
-        users.add(createUser(8, "user8", "first name 8", "last name 8",
-            "email8@test.com", "123-456-7890", 2));
-        users.add(createUser(9, "user9", "first name 9", "last name 9",
-            "email9@test.com", "123-456-7890", 3));
-        users.add(createUser(10, "user10", "first name 10", "last name 10",
-            "email10@test.com", "123-456-7890", 1));
-        users.add(createUser(11, "user?10", "first name ?10", "last name ?10",
-            "email101@test.com", "123-456-7890", 1));
-
-    }
-
-    public User findUserByName(String username) {
-        for (User user : users) {
-            if (user.getUsername().equals(username)) {
-                return user;
-            }
-        }
-        return null;
-    }
-
-    public void addUser(User user) {
-        if(user.getUsername() == null){
-            return;
-        }
-        if (users.size() > 0) {
-            for (int i = users.size() - 1; i >= 0; i--) {
-                if (users.get(i).getUsername().equals(user.getUsername())) {
-                    users.remove(i);
-                }
-            }
-        }
-        users.add(user);
-    }
-
-    public boolean removeUser(String username) {
-        if (users.size() > 0) {
-            for (int i = users.size() - 1; i >= 0; i--) {
-                if (users.get(i).getUsername().equals(username)) {
-                    users.remove(i);
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private static User createUser(long id, String username, String firstName,
-        String lastName, String email, String phone, int userStatus) {
-        User user = new User();
-        user.setId(id);
-        user.setUsername(username);
-        user.setFirstName(firstName);
-        user.setLastName(lastName);
-        user.setEmail(email);
-        user.setPassword("XXXXXXXXXXX");
-        user.setPhone(phone);
-        user.setUserStatus(userStatus);
-        return user;
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/package-info.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/package-info.java
deleted file mode 100644
index 9639816..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/data/package-info.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-@org.osgi.annotation.versioning.Version("1.0")
-package org.eclipse.microprofile.openapi.apps.petstore.data;
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/ApiException.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/ApiException.java
deleted file mode 100644
index 9c10b87..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/ApiException.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.exception;
-
-public class ApiException extends Exception{
-    private int code;
-    public ApiException (int code, String msg) {
-        super(msg);
-        this.code = code;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/BadRequestException.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/BadRequestException.java
deleted file mode 100644
index 3fceaa2..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/BadRequestException.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.exception;
-
-public class BadRequestException extends ApiException{
-    private int code;
-    public BadRequestException (int code, String msg) {
-        super(code, msg);
-        this.code = code;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/NotFoundException.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/NotFoundException.java
deleted file mode 100644
index c26a3b4..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/NotFoundException.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.exception;
-
-public class NotFoundException extends ApiException {
-    private int code;
-    public NotFoundException (int code, String msg) {
-        super(code, msg);
-        this.code = code;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/package-info.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/package-info.java
deleted file mode 100644
index 4c234fc..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/exception/package-info.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-@org.osgi.annotation.versioning.Version("1.0")
-package org.eclipse.microprofile.openapi.apps.petstore.exception;
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/ApiResponse.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/ApiResponse.java
deleted file mode 100644
index 377b53b..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/ApiResponse.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import javax.xml.bind.annotation.XmlTransient;
-
-@javax.xml.bind.annotation.XmlRootElement
-public class ApiResponse {
-    public static final int ERROR = 1;
-    public static final int WARNING = 2;
-    public static final int INFO = 3;
-    public static final int OK = 4;
-    public static final int TOO_BUSY = 5;
-
-    int code;
-    String type;
-    String message;
-    
-    public ApiResponse(){}
-    
-    public ApiResponse(int code, String message){
-        this.code = code;
-        switch(code){
-            case ERROR:
-                setType("error");
-                break;
-            case WARNING:
-                setType("warning");
-                break;
-            case INFO:
-                setType("info");
-                break;
-            case OK:
-                setType("ok");
-                break;
-            case TOO_BUSY:
-                setType("too busy");
-                break;
-            default:
-                setType("unknown");
-                break;
-        }
-        this.message = message;
-    }
-
-    @XmlTransient
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/BadOrder.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/BadOrder.java
deleted file mode 100644
index 96e62fc..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/BadOrder.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import java.util.Date;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlElement;
-
-@XmlRootElement(name = "Order")
-public class BadOrder {
-    private long errorCode;
-    private long id;
-    private long petId;
-    private int quantity;
-    private Date shipDate;
-    private String status;
-    private boolean complete;
-
-    public long getErrorCode() {
-        return errorCode;
-    }
-
-    @XmlElement(name = "id")
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public boolean isComplete() {
-        return complete;
-    }
-
-    public void setComplete(boolean complete) {
-        this.complete = complete;
-    }
-
-    @XmlElement(name = "petId")
-    public long getPetId() {
-        return petId;
-    }
-
-    public void setPetId(long petId) {
-        this.petId = petId;
-    }
-
-    @XmlElement(name = "quantity")
-    public int getQuantity() {
-        return quantity;
-    }
-
-    public void setQuantity(int quantity) {
-        this.quantity = quantity;
-    }
-
-    @XmlElement(name = "status")
-    //@ApiModelProperty(value = "Order Status", allowableValues = "placed, approved, delivered")
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    @XmlElement(name = "shipDate")
-    public Date getShipDate() {
-        return shipDate;
-    }
-
-    public void setShipDate(Date shipDate) {
-        this.shipDate = shipDate;
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Cat.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Cat.java
deleted file mode 100644
index 2b4cb53..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Cat.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name = "Cat")
-public class Cat extends Pet {
-
-    String catBreed;
-
-    public String getCatBreed() {
-        return catBreed;
-    }
-
-    public void setCatBreed(String catBreed) {
-        this.catBreed = catBreed;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Category.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Category.java
deleted file mode 100644
index 971d690..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Category.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlElement;
-
-@XmlRootElement(name = "Category")
-public class Category {
-    private long id;
-    private String name;
-
-    @XmlElement(name = "id")
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    @XmlElement(name = "name")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Dog.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Dog.java
deleted file mode 100644
index 4872e7e..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Dog.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name = "Dog")
-public class Dog extends Pet {
-
-    String dogBreed;
-
-    public String getDogBreed() {
-        return dogBreed;
-    }
-
-    public void setDogBreed(String dogBreed) {
-        this.dogBreed = dogBreed;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Lizard.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Lizard.java
deleted file mode 100644
index 364998d..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Lizard.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name = "Lizard")
-public class Lizard extends Pet {
-
-    String lizardBreed;
-
-    public String getLizardBreed() {
-        return lizardBreed;
-    }
-
-    public void setLizardBreed(String lizardBreed) {
-        this.lizardBreed = lizardBreed;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Order.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Order.java
deleted file mode 100644
index 45840db..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Order.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import java.util.Date;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlElement;
-
-@XmlRootElement(name = "Order")
-public class Order {
-    private long id;
-    private long petId;
-    private int quantity;
-    private Date shipDate;
-    private String status;
-    private boolean complete;
-
-    @XmlElement(name = "id")
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public boolean isComplete() {
-        return complete;
-    }
-
-    public void setComplete(boolean complete) {
-        this.complete = complete;
-    }
-
-    @XmlElement(name = "petId")
-    public long getPetId() {
-        return petId;
-    }
-
-    public void setPetId(long petId) {
-        this.petId = petId;
-    }
-
-    @XmlElement(name = "quantity")
-    public int getQuantity() {
-        return quantity;
-    }
-
-    public void setQuantity(int quantity) {
-        this.quantity = quantity;
-    }
-
-    @XmlElement(name = "status")
-    //@ApiModelProperty(value = "Order Status", allowableValues = "placed, approved, delivered")
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    @XmlElement(name = "shipDate")
-    public Date getShipDate() {
-        return shipDate;
-    }
-
-    public void setShipDate(Date shipDate) {
-        this.shipDate = shipDate;
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Pet.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Pet.java
deleted file mode 100644
index c11b189..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Pet.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-
-import java.util.List;
-import java.util.ArrayList;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-
-@XmlRootElement(name = "Pet")
-public class Pet {
-    private long id;
-    private Category category;
-    private String name;
-    private List<String> photoUrls = new ArrayList<String>();
-    private List<Tag> tags = new ArrayList<Tag>();
-    private String status;
-
-    @XmlElement(name = "id")
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    @XmlElement(name = "category")
-    public Category getCategory() {
-        return category;
-    }
-
-    public void setCategory(Category category) {
-        this.category = category;
-    }
-
-    @XmlElement(name = "name")
-    @Schema(example = "doggie", required = true)
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @XmlElementWrapper(name = "photoUrls")
-    @XmlElement(name = "photoUrl", required = true)
-    public List<String> getPhotoUrls() {
-        return photoUrls;
-    }
-
-    public void setPhotoUrls(List<String> photoUrls) {
-        this.photoUrls = photoUrls;
-    }
-
-    @XmlElementWrapper(name = "tags")
-    @XmlElement(name = "tag")
-    public List<Tag> getTags() {
-        return tags;
-    }
-
-    public void setTags(List<Tag> tags) {
-        this.tags = tags;
-    }
-
-    @XmlElement(name = "status")
-    @Schema(
-        name = "status",
-        title = "pet status in the store"//,
-        //_enum = {"available", "pending", "sold"}
-    )
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Tag.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Tag.java
deleted file mode 100644
index 163b942..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/Tag.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlElement;
-
-@XmlRootElement(name = "Tag")
-public class Tag {
-    private long id;
-    private String name;
-
-    @XmlElement(name = "id")
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    @XmlElement(name = "name")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/User.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/User.java
deleted file mode 100644
index ed5894e..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/User.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.model;
-
-import org.eclipse.microprofile.openapi.annotations.extensions.Extension;
-import org.eclipse.microprofile.openapi.annotations.extensions.Extensions;
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlElement;
-
-@XmlRootElement(name = "User")
-public class User {
-    @Extension(name = "x-mp-field1", value = "true")
-    @Extensions( { @Extension(name = "x-mp-field2", value = "true"), @Extension(value = "false", name = "x-mp-field3") } )
-    private long id;
-    private String username;
-    private String firstName;
-    private String lastName;
-    private String email;
-    private String password;
-    private String phone;
-    private int userStatus;
-
-    @XmlElement(name = "id")
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    @XmlElement(name = "firstName")
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public void setFirstName(String firstName) {
-        this.firstName = firstName;
-    }
-
-    @XmlElement(name = "username")
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    @XmlElement(name = "lastName")
-    public String getLastName() {
-        return lastName;
-    }
-
-    public void setLastName(String lastName) {
-        this.lastName = lastName;
-    }
-
-    @XmlElement(name = "email")
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    @XmlElement(name = "password")
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    @XmlElement(name = "phone")
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    @XmlElement(name = "userStatus")
-    @Schema(
-        name = "userStatus",
-        title = "User Status"//,
-        //_enum = {"1-registered", "2-active", "3-closed"}
-    )
-    public int getUserStatus() {
-        return userStatus;
-    }
-
-    public void setUserStatus(int userStatus) {
-        this.userStatus = userStatus;
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/package-info.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/package-info.java
deleted file mode 100644
index adb0a8c..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/model/package-info.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-@org.osgi.annotation.versioning.Version("1.0")
-package org.eclipse.microprofile.openapi.apps.petstore.model;
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/package-info.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/package-info.java
deleted file mode 100644
index b8a17dd..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/package-info.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-@org.osgi.annotation.versioning.Version("1.0")
-package org.eclipse.microprofile.openapi.apps.petstore;
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/JavaRestResourceUtil.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/JavaRestResourceUtil.java
deleted file mode 100644
index 6c163d5..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/JavaRestResourceUtil.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.resource;
-
-import java.text.SimpleDateFormat;
-
-import java.util.Date;
-
-public class JavaRestResourceUtil {
-    public int getInt(int minVal, int maxVal, int defaultValue, String inputString) {
-        int output = defaultValue;
-        try {
-            output = Integer.parseInt(inputString);
-        }
-        catch (Exception e){
-            output = defaultValue;
-        }
-
-        if (output < minVal){
-            output = minVal;
-        }
-        if (maxVal == -1) {
-            if (output < minVal){
-                output = minVal;
-            }
-        }
-        else if (output > maxVal){
-            output = maxVal;
-        }
-        return output;
-    }
-
-    public long getLong(long minVal, long maxVal, long defaultValue, String inputString) {
-        long output = defaultValue;
-        try {
-            output = Long.parseLong(inputString);
-        }
-        catch (Exception e){
-            output = defaultValue;
-        }
-        if (output < minVal){
-            output = minVal;
-        }
-        if (maxVal == -1) { 
-            if (output < minVal){
-                output = minVal; 
-            }
-        }
-        else if (output > maxVal){
-            output = maxVal;
-        }
-        return output;
-    }
-
-    public double getDouble(double minVal, double maxVal, double defaultValue, String inputString) {
-        double output = defaultValue;
-        try {
-            output = Double.parseDouble(inputString);
-        }
-        catch (Exception e){
-            output = defaultValue;
-        }
-        if (output < minVal){
-            output = minVal;
-        }
-        if (maxVal == -1) { 
-            if (output < minVal){
-                output = minVal; 
-            }
-        }
-        else if (output > maxVal){
-            output = maxVal;
-        }
-        return output;
-    }
-
-    public boolean getBoolean(boolean defaultValue, String booleanString) {
-        boolean output = defaultValue;
-        if (booleanString == null){
-            output = defaultValue;
-        }
-
-        //  treat "", "YES" as "true"
-        if ("".equals(booleanString)){
-            output = true;
-        }
-        else if ("YES".equalsIgnoreCase(booleanString)){ 
-            output = true;
-        }
-        else if ("NO".equalsIgnoreCase(booleanString)){
-            output = false;
-        }
-        else {
-            try {
-                output = Boolean.parseBoolean(booleanString);
-            }
-            catch (Exception e){
-                output = defaultValue;
-            }
-        }
-        return output;
-    }
-    
-    public Date getDate(Date defaultValue, String dateString){
-        try {
-            return new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
-        }
-        catch(Exception e) {
-            return defaultValue;
-        }
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/PetResource.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/PetResource.java
deleted file mode 100644
index bfb9ed6..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/PetResource.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.resource;
-
-import org.eclipse.microprofile.openapi.annotations.Operation;
-import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition;
-import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
-import org.eclipse.microprofile.openapi.annotations.enums.SecuritySchemeIn;
-import org.eclipse.microprofile.openapi.annotations.enums.SecuritySchemeType;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityScheme;
-import org.eclipse.microprofile.openapi.annotations.security.SecuritySchemes;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirement;
-import org.eclipse.microprofile.openapi.annotations.security.OAuthFlow;
-import org.eclipse.microprofile.openapi.annotations.security.OAuthFlows;
-import org.eclipse.microprofile.openapi.annotations.security.OAuthScope;
-import org.eclipse.microprofile.openapi.annotations.callbacks.Callback;
-import org.eclipse.microprofile.openapi.annotations.extensions.Extension;
-import org.eclipse.microprofile.openapi.annotations.extensions.Extensions;
-import org.eclipse.microprofile.openapi.annotations.info.Info;
-import org.eclipse.microprofile.openapi.annotations.info.License;
-import org.eclipse.microprofile.openapi.annotations.info.Contact;
-import org.eclipse.microprofile.openapi.annotations.media.Content;
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-import org.eclipse.microprofile.openapi.annotations.parameters.RequestBody;
-import org.eclipse.microprofile.openapi.annotations.media.ExampleObject;
-import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
-
-import org.eclipse.microprofile.openapi.apps.petstore.data.PetData;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Pet;
-import org.eclipse.microprofile.openapi.apps.petstore.model.ApiResponse;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Cat;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Dog;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Lizard;
-import org.eclipse.microprofile.openapi.apps.petstore.exception.NotFoundException;
-
-import java.io.*;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.StreamingOutput;
-import javax.ws.rs.GET;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.Consumes;
-
-@Path("/pet")
-@Schema(
-        name = "pet",
-        description = "Operations on pets resource")
-@OpenAPIDefinition(
-    info = @Info(
-        title = "Pets Operations",
-        version = "1.0",
-        description = "Operations about pets",
-        license = @License(
-            name = "Apache 2.0",
-            url = "http://www.apache.org/licenses/LICENSE-2.0.html"),
-        contact = @Contact(
-            name = "PetStore API Support",
-            url = "https://github.com/eclipse/microprofile-open-api",
-            email = "support@petstore.com")
-    )
-)
-@SecuritySchemes(
-    value = {
-        @SecurityScheme(
-            securitySchemeName = "petsApiKey",
-            type = SecuritySchemeType.APIKEY,
-            description = "authentication needed to create a new pet profile for the store",
-            apiKeyName = "createPetProfile",
-            in = SecuritySchemeIn.HEADER
-        ),
-        @SecurityScheme(
-            securitySchemeName = "petsOAuth2",
-            type = SecuritySchemeType.OAUTH2,
-            description = "authentication needed to delete a pet profile", 
-            flows = @OAuthFlows(
-                implicit = @OAuthFlow(
-                    authorizationUrl = "https://example.com/api/oauth/dialog",
-                    scopes = @OAuthScope(
-                        name = "write:pets",
-                        description = "delete a pet profile"
-                    )
-                ),
-                authorizationCode = @OAuthFlow(
-                    authorizationUrl = "https://example.com/api/oauth/dialog",
-                    tokenUrl = "https://example.com/api/oauth/token"
-                )
-            )
-        ),
-        @SecurityScheme(
-            securitySchemeName = "petsHttp",
-            type = SecuritySchemeType.HTTP,
-            description = "authentication needed to update an exsiting record of a pet in the store",
-            scheme = "bearer",
-            bearerFormat = "jwt"
-        )    
-    }
-)
-public class PetResource {
-
-    static PetData petData = new PetData();
-
-    @GET
-    @Path("/{petId}")
-    @Operation(
-            method = "GET",
-            summary = "Find pet by ID",
-            description = "Returns a pet when ID is less than or equal to 10",
-            responses = {
-                    @APIResponse(
-                        responseCode = "400",
-                        description = "Invalid ID supplied",
-                        content = @Content(
-                            mediaType = "none")
-                    ),
-                    @APIResponse(
-                        responseCode = "404",
-                        description = "Pet not found",
-                        content = @Content(
-                            mediaType = "none")
-                    ),
-                    @APIResponse(
-                        responseCode = "200",
-                        content = @Content(
-                            mediaType = "application/json",
-                            schema = @Schema(type = "array", implementation = Pet.class, 
-                              oneOf = { Cat.class, Dog.class, Lizard.class }, 
-                              readOnly = true))
-                    )
-            }
-    )
-    public Response getPetById(
-        @Parameter(
-            name = "petId",
-            description = "ID of pet that needs to be fetched",
-            required = true,
-            schema = @Schema(
-                implementation = Long.class,
-                maximum = "101",
-                exclusiveMaximum = true,
-                minimum = "9",
-                exclusiveMinimum = true, 
-                multipleOf = 10))
-        @PathParam("petId") Long petId)
-    throws NotFoundException {
-        Pet pet = petData.getPetById(petId);
-        if (pet != null) {
-            return Response.ok().entity(pet).build();
-        }
-        else {
-            throw new NotFoundException(404, "Pet not found");
-        }
-    }
-
-    @GET
-    @Path("/{petId}/download")
-    @Operation(
-        method = "GET",
-        summary = "Find pet by ID and download it",
-        description = "Returns a pet when ID is less than or equal to 10",
-        responses = {
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid ID supplied",
-                content = @Content(mediaType = "none")
-            ),
-            @APIResponse(
-                responseCode = "404",
-                description = "Pet not found",
-                content = @Content(mediaType = "none")
-            )
-        }
-    )
-    public Response downloadFile(
-        @Parameter(
-            name = "petId",
-            description = "ID of pet that needs to be fetched",
-            required = true,
-            schema = @Schema(
-                implementation = Long.class,
-                maximum = "10",
-                minimum = "1")
-        )
-        @PathParam("petId") Long petId)
-    throws NotFoundException {
-        StreamingOutput stream = new StreamingOutput() {
-            @Override
-            public void write(OutputStream output) throws IOException {
-                try {
-                    // TODO: write file content to output;
-                    output.write("hello, world".getBytes());
-                }
-                catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        };
-        return Response.ok(stream, "application/force-download")
-        .header("Content-Disposition", "attachment; filename = foo.bar")
-        .build();
-    }
-
-    @DELETE
-    @Path("/{petId}")
-    @Operation(
-        method = "DELETE",
-        summary = "Deletes a pet by ID",
-        description = "Returns a pet when ID is less than or equal to 10",
-        security = @SecurityRequirement(
-            name = "petsOAuth2",
-            scopes = "write:pets"
-        ),
-        responses = {
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid ID supplied"
-            ),
-            @APIResponse(
-                responseCode = "404",
-                description = "Pet not found"
-            )
-        }
-    )
-    public Response deletePet(
-        @Parameter(
-            name = "apiKey",
-            description = "authentication key to access this method",
-            schema = @Schema(type = "String", implementation = String.class,
-              maxLength = 256, minLength = 32))
-        @HeaderParam("api_key") String apiKey,
-        @Parameter(
-            name = "petId",
-            description = "ID of pet that needs to be fetched",
-            required = true,
-            schema = @Schema(
-                implementation = Long.class,
-                maximum = "10",
-                minimum = "1"))
-        @PathParam("petId") Long petId) {
-            if (petData.deletePet(petId)) {
-                return Response.ok().build();
-            }
-            else {
-                return Response.status(Response.Status.NOT_FOUND).build();
-            }
-        }
-
-    @POST
-    @Consumes({"application/json", "application/xml"})
-    @Produces({"application/json", "application/xml"})
-    @Operation(
-        method = "POST",
-        summary = "Add pet to store",
-        description = "Add a new pet to the store",
-        security = @SecurityRequirement(
-            name = "petsApiKey"
-        ),
-        responses = {
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid input",
-                content = @Content(
-                    mediaType = "application/json",
-                    schema = @Schema(implementation = ApiResponse.class))
-            )
-        },
-        requestBody = @RequestBody(
-            content = @Content(
-                mediaType = "application/json",
-                schema = @Schema(implementation = Pet.class), 
-                examples = @ExampleObject(ref = "http://example.org/petapi-examples/openapi.json#/components/examples/pet-example") ),
-            required = true,
-            description = "example of a new pet to add"
-        )
-    )
-    public Response addPet(
-        @Parameter(
-            name ="addPet",
-            description = "Pet to add",
-            required = true,
-            schema = @Schema(implementation = Pet.class)) Pet pet) {
-                Pet updatedPet = petData.addPet(pet);
-                return Response.ok().entity(updatedPet).build();
-            }
-
-    @PUT
-    @Consumes({"application/json", "application/xml"})
-    @Operation(
-        method = "PUT",
-        summary = "Update an existing pet",
-        description = "Update an existing pet with the given new attributes",
-        security = @SecurityRequirement(
-            name = "petsHttp"
-        ),
-        responses = {
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid ID supplied",
-                content = @Content(mediaType = "application/json")
-            ),
-            @APIResponse(
-                responseCode = "404",
-                description = "Pet not found",
-                content = @Content(mediaType = "application/json")
-            ),
-            @APIResponse(
-                responseCode = "405",
-                description = "Validation exception",
-                content = @Content(mediaType = "application/json")
-            )
-        }
-    )
-    public Response updatePet(
-        @Parameter(
-            name ="petAttribute",
-            description = "Attribute to update existing pet record",
-            required = true,
-            schema = @Schema(implementation = Pet.class)) Pet pet) {
-                Pet updatedPet = petData.addPet(pet);
-                return Response.ok().entity(updatedPet).build();
-            }
-
-    @GET
-    @Path("/findByStatus")
-    @Operation(
-        method = "GET",
-        summary = "Finds Pets by status",
-        description = "Find all the Pets with the given status; Multiple status values can be provided with comma seperated strings",
-        responses = {
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid status value",
-                content = @Content(mediaType = "none")
-            ),
-            @APIResponse(
-                responseCode = "200",
-                content = @Content(
-                    mediaType = "application/json",
-                    schema = @Schema(type = "list", implementation = Pet.class))
-                )
-        }
-    )
-    @Extension(name = "x-mp-method1", value = "true")
-    @Extensions( { @Extension(name = "x-mp-method2", value = "true"), @Extension(value = "false", name = "x-mp-method3") } )
-    public Response findPetsByStatus(
-        @Parameter(
-            name = "status",
-            description = "Status values that need to be considered for filter",
-            required = true,
-            schema = @Schema(implementation = String.class),
-            content = {
-                @Content(
-                    examples = {
-                        @ExampleObject(
-                            name = "Available",
-                            value = "available",
-                            summary = "Retrieves all the pets that are available"),
-                        @ExampleObject(
-                            name = "Pending",
-                            value = "pending",
-                            summary = "Retrieves all the pets that are pending to be sold"),
-                        @ExampleObject(
-                            name = "Sold",
-                            value = "sold",
-                            summary = "Retrieves all the pets that are sold")
-                    }
-                )
-            },
-            allowEmptyValue = true)
-        @Extension(name = "x-mp-parm1", value = "true")
-        @Extensions( { @Extension(name = "x-mp-parm2", value = "true"), @Extension(value = "false", name = "x-mp-parm3") } )
-        String status) {
-                return Response.ok(petData.findPetByStatus(status)).build();
-            }
-
-    @GET
-    @Path("/findByTags")
-    @Callback(
-        name = "tagsCallback",
-        callbackUrlExpression = "http://petstoreapp.com/pet",
-        operation = @Operation(
-            method = "GET",
-            summary = "Finds Pets by tags",
-            deprecated = true,
-            description = "Find Pets by tags; Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.",
-            responses = {
-                @APIResponse(
-                    responseCode = "400",
-                    description = "Invalid tag value",
-                    content = @Content(mediaType = "none")
-                ),
-                @APIResponse(
-                    responseCode = "200",
-                    content = @Content(
-                        mediaType = "application/json",
-                        schema = @Schema(type = "list", implementation = Pet.class))
-                    )
-            }
-        )
-    )
-    @Deprecated
-    public Response findPetsByTags(
-        @HeaderParam("apiKey") String apiKey,
-        @Parameter(
-            name = "tags",
-            description = "Tags to filter by",
-            required = true,
-            deprecated = true,
-            schema = @Schema(implementation = String.class, deprecated = true,
-              enumeration = { "Cat", "Dog", "Lizard" }, defaultValue = "Dog" ))
-        @QueryParam("tags") String tags) {
-            return Response.ok(petData.findPetByTags(tags)).build();
-        }
-
-    @POST
-    @Path("/{petId}")
-    @Consumes({MediaType.APPLICATION_FORM_URLENCODED})
-    @Operation(
-        method = "POST",
-        summary = "Updates a pet in the store with form data",
-        responses = {
-            @APIResponse(
-                responseCode = "405",
-                description = "Validation exception",
-                content = @Content(mediaType = "none")
-            )
-        }
-    )
-    public Response updatePetWithForm (
-        @Parameter(
-            name = "petId",
-            description = "ID of pet that needs to be updated",
-            required = true)
-        @PathParam("petId") Long petId,
-        @Parameter(
-            name = "name",
-            description = "Updated name of the pet")
-        @FormParam("name") String name,
-        @Parameter(
-            name = "status",
-            description = "Updated status of the pet")
-        @FormParam("status") String status) {
-            Pet pet = petData.getPetById(petId);
-            if(pet != null) {
-                if(name != null && !"".equals(name)){
-                    pet.setName(name);
-                }
-                if(status != null && !"".equals(status)){
-                    pet.setStatus(status);
-                }
-                petData.addPet(pet);
-                return Response.ok().build();
-            }
-            else{
-                return Response.status(404).build();
-            }
-        }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/PetStoreResource.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/PetStoreResource.java
deleted file mode 100644
index 1d84ef8..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/PetStoreResource.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.resource;
-
-import org.eclipse.microprofile.openapi.annotations.Operation;
-import org.eclipse.microprofile.openapi.annotations.media.Content;
-import org.eclipse.microprofile.openapi.annotations.media.DiscriminatorMapping;
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
-import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
-import org.eclipse.microprofile.openapi.annotations.enums.SecuritySchemeType;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityScheme;
-import org.eclipse.microprofile.openapi.annotations.security.SecuritySchemes;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirement;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirements;
-
-import org.eclipse.microprofile.openapi.apps.petstore.data.StoreData;
-import org.eclipse.microprofile.openapi.apps.petstore.model.BadOrder;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Order;
-import org.eclipse.microprofile.openapi.apps.petstore.model.Pet;
-import org.eclipse.microprofile.openapi.apps.petstore.exception.NotFoundException;
-import org.eclipse.microprofile.openapi.apps.petstore.data.PetData;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.GET;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-
-@Path("/store")
-@Schema(name="/store")
-@Produces({"application/json", "application/xml"})
-@SecuritySchemes(
-    value = {
-        @SecurityScheme(
-            securitySchemeName = "storeOpenIdConnect",
-            type = SecuritySchemeType.OPENIDCONNECT,
-            description = "openId Connect authentication to access the pet store resource",
-            openIdConnectUrl = "https://petstoreauth.com:4433/oidc/petstore/oidcprovider/authorize"
-        ),
-        @SecurityScheme(
-            securitySchemeName = "storeHttp",
-            type = SecuritySchemeType.HTTP,
-            description = "Basic http authentication to access the pet store resource",
-            scheme = "basic"
-        )
-    }
-)
-@SecurityRequirements(
-    value = {
-        @SecurityRequirement(
-            name  = "storeOpenIdConnect",
-            scopes = {"write:store", "read:store"}
-        ),
-        @SecurityRequirement(
-            name = "storeHttp"
-        )
-    }
-)
-public class PetStoreResource {
-    static StoreData storeData = new StoreData();
-    static PetData petData = new PetData();
-
-    @GET
-    @Path("/inventory")
-    @Produces({"application/json", "application/xml"})
-    @Operation(
-        method = "get",
-        summary = "Returns pet inventories by status", 
-        description = "Returns a map of status codes to quantities", 
-        responses = {
-            @APIResponse(
-                responseCode = "200", 
-                description = "successful operation"
-            )
-        }
-    )
-    public java.util.Map<String, Integer> getInventory() {
-        return petData.getInventoryByStatus();
-    }
-
-    @GET
-    @Path("/order/{orderId}")
-    @Operation(
-        method = "get",
-        summary = "Find purchase order by ID",
-        description = "For valid response try integer IDs with value between the integers of 1 and 10. Other values will generated exceptions",
-        responses = { 
-            @APIResponse(
-                responseCode = "200", 
-                description = "successful operation",
-                content = @Content(
-                    schema = @Schema(implementation = Order.class, 
-                      allOf = { Order.class, Pet.class},
-                      not = BadOrder.class )
-                )
-            ),
-            @APIResponse(
-                responseCode = "400", 
-                description = "Invalid ID supplied",
-                content = @Content(
-                    schema = @Schema(implementation = Order.class,
-                      hidden = true)
-                )
-            ),
-            @APIResponse(
-                responseCode = "404", 
-                description = "Order not found",
-                content = @Content(
-                    schema = @Schema(implementation = Order.class, 
-                      anyOf = { Order.class, BadOrder.class},
-                      discriminatorProperty = "id", 
-                      discriminatorMapping = @DiscriminatorMapping(value = "0", schema = BadOrder.class) )
-                )
-            )
-        }
-    )
-    public Response getOrderById(
-        @Parameter(
-            name = "orderId",
-            description = "ID of pet that needs to be fetched", 
-            schema = @Schema(
-                type = "long", 
-                minimum = "1", 
-                maximum = "10"), 
-            required = true
-        )
-        @PathParam("orderId") Long orderId)
-    throws NotFoundException {
-        Order order = storeData.findOrderById(orderId);
-        if (null != order) {
-            return Response.ok().entity(order).build();
-        } 
-        else {
-            throw new NotFoundException(404, "Order not found");
-        }
-    }
-
-    @POST
-    @Path("/order")
-    @Operation(
-        method = "post",
-        summary = "Place an order for a pet",
-        responses = {
-            @APIResponse(
-                responseCode = "200", 
-                description = "successful operation"
-            ),
-            @APIResponse(
-                responseCode = "400", 
-                description = "Invalid Order"
-            ) 
-        }
-    )
-    public Order placeOrder(
-        @Parameter(
-            description = "order placed for purchasing the pet",
-            required = true
-        ) 
-        Order order) {
-            storeData.placeOrder(order);
-            return storeData.placeOrder(order);
-        }
-
-    @DELETE
-    @Path("/order/{orderId}")
-    @Operation(
-        method = "delete",
-        summary = "Delete purchase order by ID",
-        description = "For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors",
-        responses = { 
-            @APIResponse(
-                responseCode = "400", 
-                description = "Invalid ID supplied"
-                ),
-            @APIResponse(
-                responseCode = "404", 
-                description = "Order not found"
-                ) 
-        }
-    )
-    public Response deleteOrder(
-        @Parameter(
-            name = "orderId",
-            description = "ID of the order that needs to be deleted",  
-            schema = @Schema(
-                type = "long", 
-                minimum = "1"
-            ), 
-            required = true
-        )
-        @PathParam("orderId") Long orderId) {
-            if (storeData.deleteOrder(orderId)) {
-                return Response.ok().entity("").build();
-            } 
-            else {
-                return Response.status(Response.Status.NOT_FOUND).entity("Order not found").build();
-            }
-        }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/UserResource.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/UserResource.java
deleted file mode 100644
index 89109d1..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/UserResource.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.resource;
-
-import org.eclipse.microprofile.openapi.annotations.Operation;
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
-import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
-import org.eclipse.microprofile.openapi.annotations.media.Content;
-import org.eclipse.microprofile.openapi.annotations.enums.SecuritySchemeIn;
-import org.eclipse.microprofile.openapi.annotations.enums.SecuritySchemeType;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityScheme;
-import org.eclipse.microprofile.openapi.annotations.security.SecuritySchemes;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirement;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirements;
-import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirementsSet;
-
-import org.eclipse.microprofile.openapi.apps.petstore.data.UserData;
-import org.eclipse.microprofile.openapi.apps.petstore.model.User;
-import org.eclipse.microprofile.openapi.apps.petstore.exception.ApiException;
-import org.eclipse.microprofile.openapi.apps.petstore.exception.NotFoundException;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.GET;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.Produces;
-
-@Path("/user")
-@Schema(name = "/user")
-@Produces({"application/json", "application/xml"})
-@SecuritySchemes(
-    value = {
-        @SecurityScheme(
-            securitySchemeName = "userApiKey",
-            type = SecuritySchemeType.APIKEY,
-            description = "authentication needed to create a new user profile for the store",
-            apiKeyName = "createOrUpdateUserProfile1",
-            in = SecuritySchemeIn.HEADER
-        ),
-        @SecurityScheme(
-            securitySchemeName = "userBasicHttp",
-            type = SecuritySchemeType.HTTP,
-            description = "authentication needed to create a new user profile for the store",
-            apiKeyName = "createOrUpdateUserProfile2",
-            scheme = "basic"
-        ),
-        @SecurityScheme(
-            securitySchemeName = "userBearerHttp",
-            type = SecuritySchemeType.HTTP,
-            description = "authentication needed to create a new user profile for the store",
-            apiKeyName = "createOrUpdateUserProfile3",
-            scheme = "bearer",
-            bearerFormat = "JWT"
-        )
-    }
-)
-public class UserResource {
-    static UserData userData = new UserData();
-
-    @POST
-    @Operation(
-        method = "post",
-        summary = "Create user",
-        description = "This can only be done by the logged in user.",
-        responses = {
-            @APIResponse(
-                description = "successful operation"
-            )
-        }
-    )
-    @SecurityRequirements(
-        value = {
-            @SecurityRequirement(
-                name = "userApiKey"
-            ),
-            @SecurityRequirement(
-                name = "userBasicHttp"
-            ),
-            @SecurityRequirement(
-                name = "userBearerHttp"
-            )
-        }
-    )
-    public Response createUser(
-        @Parameter(
-            description = "Created user object",
-            schema = @Schema(ref = "#/components/schemas/User"),
-            required = true
-            ) User user) {
-                userData.addUser(user);
-                return Response.ok().entity("").build();
-            }
-
-    @POST
-    @Path("/createWithArray")
-    @Operation(
-        method = "post",
-        summary = "Creates list of users with given input array",
-        responses = {
-            @APIResponse(
-                description = "successful operation"
-            )
-        }
-    )
-    public Response createUsersWithArrayInput(
-        @Parameter(
-            description = "List of user object",
-            required = true
-            ) User[] users) {
-                for (User user : users) {
-                    userData.addUser(user);
-            }
-        return Response.ok().entity("").build();
-    }
-
-    @POST
-    @Path("/createWithList")
-    @Operation(
-        method = "post",
-        summary = "Creates list of users with given input array",
-        responses = {
-            @APIResponse(
-                description = "successful operation"
-            )
-        }
-    )
-    public Response createUsersWithListInput(
-        @Parameter(
-            description = "List of user object",
-            required = true) java.util.List<User> users) {
-                for (User user : users) {
-                    userData.addUser(user);
-                }
-                return Response.ok().entity("").build();
-            }
-
-    @PUT
-    @Path("/{username}")
-    @Operation(
-        method = "put",
-        summary = "Updated user",
-        description = "This can only be done by the logged in user.",
-        responses = {
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid user supplied"
-            ),
-            @APIResponse(
-                responseCode = "404",
-                description = "User not found"
-            )
-        }
-    )
-    @SecurityRequirementsSet(
-        value = {
-            @SecurityRequirement(
-                name = "userApiKey"
-            ),
-            @SecurityRequirement(
-                name = "userBearerHttp"
-            )
-        }
-    )
-    public Response updateUser(
-        @Parameter(
-            name = "username",
-            description = "name that need to be deleted",
-            schema = @Schema(type = "String"),
-            required = true
-        )
-        @PathParam("username") String username,
-        @Parameter(
-            description = "Updated user object",
-            required = true) User user) {
-                userData.addUser(user);
-                return Response.ok().entity("").build();
-            }
-
-    @DELETE
-    @Path("/{username}")
-    @Operation(
-        method = "delete",
-        summary = "Delete user",
-        description = "This can only be done by the logged in user.",
-        responses = {
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid username supplied"
-            ),
-            @APIResponse(
-                responseCode = "404",
-                description = "User not found"
-            )
-        }
-    )
-    public Response deleteUser(
-        @Parameter(
-            name = "username",
-            description = "The name that needs to be deleted",
-            schema = @Schema(type = "String"),
-            required = true
-        )
-        @PathParam("username") String username) {
-            if (userData.removeUser(username)) {
-                return Response.ok().entity("").build();
-            }
-            else {
-                return Response.status(Response.Status.NOT_FOUND).build();
-            }
-        }
-
-    @GET
-    @Path("/{username}")
-    @Operation(
-        method = "get",
-        summary = "Get user by user name",
-        responses = {
-            @APIResponse(
-                responseCode = "200",
-                description = "successful operation",
-                content = @Content(
-                    schema = @Schema(implementation = User.class)
-                )
-            ),
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid username supplied",
-                content = @Content(
-                    schema = @Schema(implementation = User.class)
-                )
-            ),
-            @APIResponse(
-                responseCode = "404",
-                description = "User not found",
-                content = @Content(
-                    schema = @Schema(implementation = User.class)
-                )
-            )
-        }
-    )
-    public Response getUserByName(
-        @Parameter(
-            name = "username",
-            description = "The name that needs to be fetched. Use user1 for testing.",
-            schema = @Schema(type = "String"),
-            required = true
-        )
-        @PathParam("username") String username) throws ApiException {
-            User user = userData.findUserByName(username);
-            if (null != user) {
-                return Response.ok().entity(user).build();
-            }
-            else {
-                throw new NotFoundException(404, "User not found");
-            }
-        }
-
-    @GET
-    @Path("/login")
-    @Operation(
-        method = "get",
-        summary = "Logs user into the system",
-        responses = {
-            @APIResponse(
-                responseCode = "200",
-                description = "successful operation",
-                content = @Content(
-                    schema = @Schema(implementation = String.class)
-                )
-            ),
-            @APIResponse(
-                responseCode = "400",
-                description = "Invalid username/password supplied",
-                content = @Content(
-                    schema = @Schema(implementation = String.class)
-                )
-            )
-        }
-    )
-    public Response loginUser(
-        @Parameter(
-            name = "username",
-            description = "The user name for login",
-            schema = @Schema(type = "String"),
-            required = true
-        )
-        @QueryParam("username") String username,
-        @Parameter(
-            name = "password",
-            description = "The password for login in clear text",
-            schema = @Schema(type = "String"),
-            required = true)
-        @QueryParam("password") String password) {
-            return Response.ok()
-            .entity("logged in user session:" + System.currentTimeMillis())
-            .build();
-        }
-
-    @GET
-    @Path("/logout")
-    @Operation(
-        method = "get",
-        summary = "Logs out current logged in user session",
-        responses = {
-            @APIResponse(
-                description = "successful operation"
-            )
-        }
-    )
-    public Response logoutUser() {
-        return Response.ok().entity("").build();
-    }
-}
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/package-info.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/package-info.java
deleted file mode 100644
index bcf5d1d..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/resource/package-info.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-@org.osgi.annotation.versioning.Version("1.0")
-package org.eclipse.microprofile.openapi.apps.petstore.resource;
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/util/ApiOriginFilter.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/util/ApiOriginFilter.java
deleted file mode 100644
index e75c4b6..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/util/ApiOriginFilter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.eclipse.microprofile.openapi.apps.petstore.util;
-
-import java.io.IOException;
-
-import javax.servlet.Filter;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.FilterConfig;
-import javax.servlet.http.HttpServletResponse;
-
-public class ApiOriginFilter implements Filter {
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response,
-            FilterChain chain) throws IOException, ServletException {
-            HttpServletResponse res = (HttpServletResponse) response;
-            res.addHeader("Access-Control-Allow-Origin", "*");
-            res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
-            res.addHeader("Access-Control-Allow-Headers", "Content-Type, api_key, Authorization");
-            chain.doFilter(request, response);
-    }
-
-    @Override
-    public void destroy() {
-    }
-
-    @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
-    }
-}
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/util/package-info.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/util/package-info.java
deleted file mode 100644
index 7d62416..0000000
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/petstore/util/package-info.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Copyright (c) 2017 Contributors to the Eclipse Foundation
- * <p>
- * Licensed 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-@org.osgi.annotation.versioning.Version("1.0")
-package org.eclipse.microprofile.openapi.apps.petstore.util;
\ No newline at end of file


Test patch:
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java
index aa771e1..b696131 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java
@@ -45,26 +45,11 @@ import org.eclipse.microprofile.openapi.models.info.Contact;
 import org.eclipse.microprofile.openapi.models.info.Info;
 import org.eclipse.microprofile.openapi.models.info.License;
 import org.eclipse.microprofile.openapi.models.links.Link;
-import org.eclipse.microprofile.openapi.models.media.ArraySchema;
-import org.eclipse.microprofile.openapi.models.media.BinarySchema;
-import org.eclipse.microprofile.openapi.models.media.BooleanSchema;
-import org.eclipse.microprofile.openapi.models.media.ByteArraySchema;
-import org.eclipse.microprofile.openapi.models.media.ComposedSchema;
 import org.eclipse.microprofile.openapi.models.media.Content;
-import org.eclipse.microprofile.openapi.models.media.DateSchema;
 import org.eclipse.microprofile.openapi.models.media.Discriminator;
-import org.eclipse.microprofile.openapi.models.media.EmailSchema;
 import org.eclipse.microprofile.openapi.models.media.Encoding;
-import org.eclipse.microprofile.openapi.models.media.FileSchema;
-import org.eclipse.microprofile.openapi.models.media.IntegerSchema;
-import org.eclipse.microprofile.openapi.models.media.MapSchema;
 import org.eclipse.microprofile.openapi.models.media.MediaType;
-import org.eclipse.microprofile.openapi.models.media.NumberSchema;
-import org.eclipse.microprofile.openapi.models.media.ObjectSchema;
-import org.eclipse.microprofile.openapi.models.media.PasswordSchema;
 import org.eclipse.microprofile.openapi.models.media.Schema;
-import org.eclipse.microprofile.openapi.models.media.StringSchema;
-import org.eclipse.microprofile.openapi.models.media.UUIDSchema;
 import org.eclipse.microprofile.openapi.models.media.XML;
 import org.eclipse.microprofile.openapi.models.parameters.CookieParameter;
 import org.eclipse.microprofile.openapi.models.parameters.HeaderParameter;
@@ -83,7 +68,10 @@ import org.eclipse.microprofile.openapi.models.servers.Server;
 import org.eclipse.microprofile.openapi.models.servers.ServerVariable;
 import org.eclipse.microprofile.openapi.models.servers.ServerVariables;
 import org.eclipse.microprofile.openapi.models.tags.Tag;
+import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -97,7 +85,6 @@ import org.junit.runner.RunWith;
 public class ModelConstructionTest {
     
     private static final Map<String,Property> PARAMETER_PROPERTIES = Collections.unmodifiableMap(collectProperties0(Parameter.class));
-    private static final Map<String,Property> SCHEMA_PROPERTIES = Collections.unmodifiableMap(collectProperties0(Schema.class));
     
     // Container for matched getter, setter and builder methods
     static final class Property {
@@ -167,6 +154,12 @@ public class ModelConstructionTest {
         }
     }
     
+    @Deployment
+    public static WebArchive createProxy() {
+        WebArchive war = ShrinkWrap.create(WebArchive.class);
+        return war;
+    }
+    
     @Test
     public void componentsTest() {
         processConstructible(Components.class);
@@ -232,106 +225,31 @@ public class ModelConstructionTest {
         processConstructible(Link.class);
     }
     
-    @Test
-    public void arraySchemaTest() {
-        processConstructible(ArraySchema.class);
-    }
-    
-    @Test
-    public void binarySchemaTest() {
-        processConstructible(BinarySchema.class);
-    }
-    
-    @Test
-    public void booleanSchemaTest() {
-        processConstructible(BooleanSchema.class);
-    }
-    
-    @Test
-    public void byteArraySchemaTest() {
-        processConstructible(ByteArraySchema.class);
-    }
-    
-    @Test
-    public void composedSchemaTest() {
-        processConstructible(ComposedSchema.class);
-    }
-    
     @Test
     public void contentTest() {
         processConstructible(Content.class);
     }
     
-    @Test
-    public void dateSchemaTest() {
-        processConstructible(DateSchema.class);
-    }
-    
     @Test
     public void discriminatorTest() {
         processConstructible(Discriminator.class);
     }
     
-    @Test
-    public void emailSchemaTest() {
-        processConstructible(EmailSchema.class);
-    }
-    
     @Test
     public void encodingTest() {
         processConstructible(Encoding.class);
     }
     
-    @Test
-    public void fileSchemaTest() {
-        processConstructible(FileSchema.class);
-    }
-    
-    @Test
-    public void integerSchemaTest() {
-        processConstructible(IntegerSchema.class);
-    }
-    
-    @Test
-    public void mapSchemaTest() {
-        processConstructible(MapSchema.class);
-    }
-    
     @Test
     public void mediaTypeTest() {
         processConstructible(MediaType.class);
     }
     
-    @Test
-    public void numberSchemaTest() {
-        processConstructible(NumberSchema.class);
-    }
-    
-    @Test
-    public void objectSchemaTest() {
-        processConstructible(ObjectSchema.class);
-    }
-    
-    @Test
-    public void passwordSchemaTest() {
-        processConstructible(PasswordSchema.class);
-    }
-    
     @Test
     public void schemaTest() {
         processConstructible(Schema.class);
     }
     
-    @Test
-    public void stringSchemaTest() {
-        processConstructible(StringSchema.class);
-    }
-    
-    @Test
-    public void uuidSchemaTest() {
-        processConstructible(UUIDSchema.class);
-    }
-    
     @Test
     public void xmlTest() {
         processConstructible(XML.class);
@@ -339,22 +257,34 @@ public class ModelConstructionTest {
     
     @Test
     public void cookieParameterTest() {
-        processConstructible(CookieParameter.class);
+        final CookieParameter cp = processConstructible(CookieParameter.class);
+        // Check value of read-only 'in' property.
+        Assert.assertEquals("The value of the 'in' property is expected to be 'cookie'.",
+                Parameter.In.COOKIE, cp.getIn());
     }
     
     @Test
     public void headerParameterTest() {
-        processConstructible(HeaderParameter.class);
+        final HeaderParameter hp = processConstructible(HeaderParameter.class);
+        // Check value of read-only 'in' property.
+        Assert.assertEquals("The value of the 'in' property is expected to be 'header'.",
+                Parameter.In.HEADER, hp.getIn());
     }
     
     @Test
     public void pathParameterTest() {
-        processConstructible(PathParameter.class);
+        final PathParameter pp = processConstructible(PathParameter.class);
+        // Check value of read-only 'in' property.
+        Assert.assertEquals("The value of the 'in' property is expected to be 'path'.",
+                Parameter.In.PATH, pp.getIn());
     }
     
     @Test
     public void queryParameterTest() {
-        processConstructible(QueryParameter.class);
+        final QueryParameter qp = processConstructible(QueryParameter.class);
+        // Check value of read-only 'in' property.
+        Assert.assertEquals("The value of the 'in' property is expected to be 'query'.",
+                Parameter.In.QUERY, qp.getIn());
     }
     
     @Test
@@ -515,6 +445,9 @@ public class ModelConstructionTest {
     // Returns instances for testing getter, setter and builder methods.
     @SuppressWarnings("unchecked")
     private Object getInstanceOf(Class<?> clazz, boolean alternateEnumValue) {
+        if (clazz == Parameter.class) {
+            clazz = CookieParameter.class;
+        }
         if (Constructible.class.isAssignableFrom(clazz)) {
             return createConstructibleInstance((Class<Constructible>) clazz);
         }
@@ -567,7 +500,7 @@ public class ModelConstructionTest {
             return new BigDecimal("1.0");
         }
         else if (clazz == Object.class) {
-            return new Object();
+            return new String("object");
         }
         return null;
     }
@@ -609,20 +542,11 @@ public class ModelConstructionTest {
     }
     
     private Map<String,Property> collectProperties(Class<?> clazz) {
-        final Map<String,Property> properties;
-        if (clazz == Schema.class) {
-            properties = SCHEMA_PROPERTIES;
-        }
-        else {
-            properties = collectProperties0(clazz);
-            // Schema and Parameter have sub-types.
-            // Add the getter/setter/builder methods from the base type.
-            if (Schema.class.isAssignableFrom(clazz)) {
-                properties.putAll(SCHEMA_PROPERTIES);
-            }
-            else if (Parameter.class.isAssignableFrom(clazz)) {
-                properties.putAll(PARAMETER_PROPERTIES);
-            }  
+        final Map<String,Property> properties = collectProperties0(clazz);
+        // Parameter has sub-types.
+        // Add the getter/setter/builder methods from the base type.
+        if (Parameter.class.isAssignableFrom(clazz)) {
+            properties.putAll(PARAMETER_PROPERTIES);
         }
         return properties;
     }
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java
index 8808920..5f10996 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java
@@ -21,7 +21,10 @@ import java.util.Map;
 import org.eclipse.microprofile.openapi.OASFactory;
 import org.eclipse.microprofile.openapi.models.Constructible;
 import org.eclipse.microprofile.openapi.models.info.License;
+import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -62,6 +65,12 @@ public class OASFactoryErrorTest {
         }
     }
     
+    @Deployment
+    public static WebArchive createProxy() {
+        WebArchive war = ShrinkWrap.create(WebArchive.class);
+        return war;
+    }
+    
     @Test(expected = NullPointerException.class)
     public void nullValueTest() {
         @SuppressWarnings("unused")