diff --git a/samples/client/petstore/java/jersey2/docs/EnumArrays.md b/samples/client/petstore/java/jersey2/docs/EnumArrays.md
new file mode 100644
index 00000000000..4dddc0bfd27
--- /dev/null
+++ b/samples/client/petstore/java/jersey2/docs/EnumArrays.md
@@ -0,0 +1,27 @@
+
+# EnumArrays
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**justSymbol** | [**JustSymbolEnum**](#JustSymbolEnum) | | [optional]
+**arrayEnum** | [**List<ArrayEnumEnum>**](#List<ArrayEnumEnum>) | | [optional]
+
+
+
+## Enum: JustSymbolEnum
+Name | Value
+---- | -----
+GREATER_THAN_OR_EQUAL_TO | ">="
+DOLLAR | "$"
+
+
+
+## Enum: List<ArrayEnumEnum>
+Name | Value
+---- | -----
+FISH | "fish"
+CRAB | "crab"
+
+
+
diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/EnumArrays.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/EnumArrays.java
new file mode 100644
index 00000000000..da9418fec45
--- /dev/null
+++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/EnumArrays.java
@@ -0,0 +1,190 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package io.swagger.client.model;
+
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * EnumArrays
+ */
+
+public class EnumArrays {
+ /**
+ * Gets or Sets justSymbol
+ */
+ public enum JustSymbolEnum {
+ GREATER_THAN_OR_EQUAL_TO(">="),
+
+ DOLLAR("$");
+
+ private String value;
+
+ JustSymbolEnum(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static JustSymbolEnum fromValue(String text) {
+ for (JustSymbolEnum b : JustSymbolEnum.values()) {
+ if (String.valueOf(b.value).equals(text)) {
+ return b;
+ }
+ }
+ return null;
+ }
+ }
+
+ @JsonProperty("just_symbol")
+ private JustSymbolEnum justSymbol = null;
+
+ /**
+ * Gets or Sets arrayEnum
+ */
+ public enum ArrayEnumEnum {
+ FISH("fish"),
+
+ CRAB("crab");
+
+ private String value;
+
+ ArrayEnumEnum(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static ArrayEnumEnum fromValue(String text) {
+ for (ArrayEnumEnum b : ArrayEnumEnum.values()) {
+ if (String.valueOf(b.value).equals(text)) {
+ return b;
+ }
+ }
+ return null;
+ }
+ }
+
+ @JsonProperty("array_enum")
+ private List arrayEnum = new ArrayList();
+
+ public EnumArrays justSymbol(JustSymbolEnum justSymbol) {
+ this.justSymbol = justSymbol;
+ return this;
+ }
+
+ /**
+ * Get justSymbol
+ * @return justSymbol
+ **/
+ @ApiModelProperty(example = "null", value = "")
+ public JustSymbolEnum getJustSymbol() {
+ return justSymbol;
+ }
+
+ public void setJustSymbol(JustSymbolEnum justSymbol) {
+ this.justSymbol = justSymbol;
+ }
+
+ public EnumArrays arrayEnum(List arrayEnum) {
+ this.arrayEnum = arrayEnum;
+ return this;
+ }
+
+ public EnumArrays addArrayEnumItem(ArrayEnumEnum arrayEnumItem) {
+ this.arrayEnum.add(arrayEnumItem);
+ return this;
+ }
+
+ /**
+ * Get arrayEnum
+ * @return arrayEnum
+ **/
+ @ApiModelProperty(example = "null", value = "")
+ public List getArrayEnum() {
+ return arrayEnum;
+ }
+
+ public void setArrayEnum(List arrayEnum) {
+ this.arrayEnum = arrayEnum;
+ }
+
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ EnumArrays enumArrays = (EnumArrays) o;
+ return Objects.equals(this.justSymbol, enumArrays.justSymbol) &&
+ Objects.equals(this.arrayEnum, enumArrays.arrayEnum);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(justSymbol, arrayEnum);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class EnumArrays {\n");
+
+ sb.append(" justSymbol: ").append(toIndentedString(justSymbol)).append("\n");
+ sb.append(" arrayEnum: ").append(toIndentedString(arrayEnum)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(java.lang.Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
+
diff --git a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/client/model/EnumValueTest.java b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/client/model/EnumValueTest.java
new file mode 100644
index 00000000000..867c454bff6
--- /dev/null
+++ b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/client/model/EnumValueTest.java
@@ -0,0 +1,62 @@
+package io.swagger.client.model;
+
+import java.io.StringWriter;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.List;
+
+import io.swagger.client.Pair;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.SerializationFeature.*;
+
+public class EnumValueTest {
+ @Test
+ public void testEnumClass() {
+ assertEquals(EnumClass._ABC.toString(), "_abc");
+ assertEquals(EnumClass._EFG.toString(), "-efg");
+ assertEquals(EnumClass._XYZ_.toString(), "(xyz)");
+ }
+
+ @Test
+ public void testEnumTest() {
+ // test enum value
+ EnumTest enumTest = new EnumTest();
+ enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER);
+ enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1);
+ enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1);
+
+ assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER");
+ assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower");
+
+ assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1");
+ assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1");
+
+ assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1");
+ assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2");
+
+ try {
+ // test serialization (object => json)
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
+ ObjectWriter ow = mapper.writer();
+ String json = ow.writeValueAsString(enumTest);
+ assertEquals(json, "{\"enum_string\":\"lower\",\"enum_integer\":\"1\",\"enum_number\":\"1.1\"}");
+
+ // test deserialization (json => object)
+ EnumTest fromString = mapper.readValue(json, EnumTest.class);
+ assertEquals(fromString.getEnumString().toString(), "lower");
+ assertEquals(fromString.getEnumInteger().toString(), "1");
+ assertEquals(fromString.getEnumNumber().toString(), "1.1");
+
+ } catch (Exception e) {
+ fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage());
+ }
+
+ }
+
+}
diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/model/EnumValueTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/model/EnumValueTest.java
new file mode 100644
index 00000000000..0b7b245d166
--- /dev/null
+++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/model/EnumValueTest.java
@@ -0,0 +1,57 @@
+package io.swagger.client.model;
+
+import java.io.StringWriter;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.List;
+
+import io.swagger.client.Pair;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+import com.google.gson.Gson;
+
+//import com.fasterxml.jackson.databind.*;
+//import com.fasterxml.jackson.databind.SerializationFeature.*;
+
+public class EnumValueTest {
+ @Test
+ public void testEnumClass() {
+ assertEquals(EnumClass._ABC.toString(), "_abc");
+ assertEquals(EnumClass._EFG.toString(), "-efg");
+ assertEquals(EnumClass._XYZ_.toString(), "(xyz)");
+ }
+
+ @Test
+ public void testEnumTest() {
+ // test enum value
+ EnumTest enumTest = new EnumTest();
+ enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER);
+ enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1);
+ enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1);
+
+ assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER");
+ assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower");
+
+ assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1");
+ assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1");
+
+ assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1");
+ assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2");
+
+ // test serialization
+ Gson gson = new Gson();
+ String json = gson.toJson(enumTest);
+ assertEquals(json, "{\"enum_string\":\"lower\",\"enum_integer\":\"1\",\"enum_number\":\"1.1\"}");
+
+ // test deserialization
+ EnumTest fromString = gson.fromJson(json, EnumTest.class);
+ assertEquals(fromString.getEnumString().toString(), "lower");
+ assertEquals(fromString.getEnumInteger().toString(), "1");
+ assertEquals(fromString.getEnumNumber().toString(), "1.1");
+
+ }
+
+}