fix java okhttp (array of enum property)

This commit is contained in:
wing328 2016-08-03 00:49:24 +08:00
parent 25fa3e86f9
commit 1fde95f997
11 changed files with 536 additions and 60 deletions

1
.gitignore vendored
View File

@ -56,6 +56,7 @@ samples/client/petstore/qt5cpp/PetStore/Makefile
#Java/Android
**/.gradle
samples/client/petstore/java/hello.txt
samples/client/petstore/java/okhttp-gson/hello.txt
samples/client/petstore/java/jersey2-java8/hello.txt
samples/client/petstore/android/default/hello.txt
samples/client/petstore/android/volley/.gradle/

View File

@ -1695,7 +1695,7 @@ public class DefaultCodegen {
// set default value for variable with inner enum
if (property.defaultValue != null) {
property.defaultValue = property.defaultValue.replace(property.items.baseType, toEnumName(property.items));
property.defaultValue = property.defaultValue.replace(baseItem.baseType, toEnumName(baseItem));
}
}

View File

@ -1158,15 +1158,16 @@ definitions:
enum:
- fish
- crab
array_array_enum:
type: array
items:
type: array
items:
type: string
enum:
- Cat
- Dog
# comment out the following as 2d array of enum is not supported at the moment
#array_array_enum:
# type: array
# items:
# type: array
# items:
# type: string
# enum:
# - Cat
# - Dog
externalDocs:
description: Find out more about Swagger
url: 'http://swagger.io'

View File

@ -0,0 +1,27 @@
# EnumArrays
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**justEnum** | [**JustEnumEnum**](#JustEnumEnum) | | [optional]
**arrayEnum** | [**List<ArrayEnumEnum>**](#List<ArrayEnumEnum>) | | [optional]
<a name="JustEnumEnum"></a>
## Enum: JustEnumEnum
Name | Value
---- | -----
BIRD | &quot;bird&quot;
EAGLE | &quot;eagle&quot;
<a name="List<ArrayEnumEnum>"></a>
## Enum: List&lt;ArrayEnumEnum&gt;
Name | Value
---- | -----
FISH | &quot;fish&quot;
CRAB | &quot;crab&quot;

View File

@ -0,0 +1,173 @@
/**
* 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.google.gson.annotations.SerializedName;
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 justEnum
*/
public enum JustEnumEnum {
@SerializedName("bird")
BIRD("bird"),
@SerializedName("eagle")
EAGLE("eagle");
private String value;
JustEnumEnum(String value) {
this.value = value;
}
@Override
public String toString() {
return String.valueOf(value);
}
}
@SerializedName("just_enum")
private JustEnumEnum justEnum = null;
/**
* Gets or Sets arrayEnum
*/
public enum ArrayEnumEnum {
@SerializedName("fish")
FISH("fish"),
@SerializedName("crab")
CRAB("crab");
private String value;
ArrayEnumEnum(String value) {
this.value = value;
}
@Override
public String toString() {
return String.valueOf(value);
}
}
@SerializedName("array_enum")
private List<ArrayEnumEnum> arrayEnum = new ArrayList<ArrayEnumEnum>();
public EnumArrays justEnum(JustEnumEnum justEnum) {
this.justEnum = justEnum;
return this;
}
/**
* Get justEnum
* @return justEnum
**/
@ApiModelProperty(example = "null", value = "")
public JustEnumEnum getJustEnum() {
return justEnum;
}
public void setJustEnum(JustEnumEnum justEnum) {
this.justEnum = justEnum;
}
public EnumArrays arrayEnum(List<ArrayEnumEnum> 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<ArrayEnumEnum> getArrayEnum() {
return arrayEnum;
}
public void setArrayEnum(List<ArrayEnumEnum> 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.justEnum, enumArrays.justEnum) &&
Objects.equals(this.arrayEnum, enumArrays.arrayEnum);
}
@Override
public int hashCode() {
return Objects.hash(justEnum, arrayEnum);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class EnumArrays {\n");
sb.append(" justEnum: ").append(toIndentedString(justEnum)).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 ");
}
}

View File

@ -5,7 +5,6 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**just_enum** | **string** | | [optional]
**array_enum** | **string[]** | | [optional]
**array_array_enum** | [**string[][]**](array.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -67,8 +67,7 @@ class EnumArrays implements ArrayAccess
*/
protected static $swaggerTypes = array(
'just_enum' => 'string',
'array_enum' => 'string[]',
'array_array_enum' => 'string[][]'
'array_enum' => 'string[]'
);
public static function swaggerTypes()
@ -82,8 +81,7 @@ class EnumArrays implements ArrayAccess
*/
protected static $attributeMap = array(
'just_enum' => 'just_enum',
'array_enum' => 'array_enum',
'array_array_enum' => 'array_array_enum'
'array_enum' => 'array_enum'
);
public static function attributeMap()
@ -97,8 +95,7 @@ class EnumArrays implements ArrayAccess
*/
protected static $setters = array(
'just_enum' => 'setJustEnum',
'array_enum' => 'setArrayEnum',
'array_array_enum' => 'setArrayArrayEnum'
'array_enum' => 'setArrayEnum'
);
public static function setters()
@ -112,8 +109,7 @@ class EnumArrays implements ArrayAccess
*/
protected static $getters = array(
'just_enum' => 'getJustEnum',
'array_enum' => 'getArrayEnum',
'array_array_enum' => 'getArrayArrayEnum'
'array_enum' => 'getArrayEnum'
);
public static function getters()
@ -125,8 +121,6 @@ class EnumArrays implements ArrayAccess
const JUST_ENUM_EAGLE = 'eagle';
const ARRAY_ENUM_FISH = 'fish';
const ARRAY_ENUM_CRAB = 'crab';
const ARRAY_ARRAY_ENUM_CAT = 'Cat';
const ARRAY_ARRAY_ENUM_DOG = 'Dog';
@ -154,18 +148,6 @@ class EnumArrays implements ArrayAccess
];
}
/**
* Gets allowable values of the enum
* @return string[]
*/
public function getArrayArrayEnumAllowableValues()
{
return [
self::ARRAY_ARRAY_ENUM_CAT,
self::ARRAY_ARRAY_ENUM_DOG,
];
}
/**
* Associative array for storing property values
@ -181,7 +163,6 @@ class EnumArrays implements ArrayAccess
{
$this->container['just_enum'] = isset($data['just_enum']) ? $data['just_enum'] : null;
$this->container['array_enum'] = isset($data['array_enum']) ? $data['array_enum'] : null;
$this->container['array_array_enum'] = isset($data['array_array_enum']) ? $data['array_array_enum'] : null;
}
/**
@ -265,31 +246,6 @@ class EnumArrays implements ArrayAccess
return $this;
}
/**
* Gets array_array_enum
* @return string[][]
*/
public function getArrayArrayEnum()
{
return $this->container['array_array_enum'];
}
/**
* Sets array_array_enum
* @param string[][] $array_array_enum
* @return $this
*/
public function setArrayArrayEnum($array_array_enum)
{
$allowed_values = array('Cat', 'Dog');
if (!in_array($array_array_enum, $allowed_values)) {
throw new \InvalidArgumentException("Invalid value for 'array_array_enum', must be one of 'Cat', 'Dog'");
}
$this->container['array_array_enum'] = $array_array_enum;
return $this;
}
/**
* Returns true if offset exists. False otherwise.
* @param integer $offset Offset

View File

@ -8,7 +8,7 @@ This SDK is automatically generated by the [Swagger Codegen](https://github.com/
- API version: 1.0.0
- Package version: 1.0.0
- Build date: 2016-08-01T21:53:35.575+08:00
- Build date: 2016-08-03T00:39:31.384+08:00
- Build package: class io.swagger.codegen.languages.RubyClientCodegen
## Installation

View File

@ -0,0 +1,9 @@
# Petstore::EnumArrays
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**just_enum** | **String** | | [optional]
**array_enum** | **Array&lt;String&gt;** | | [optional]

View File

@ -0,0 +1,243 @@
=begin
#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
Generated by: https://github.com/swagger-api/swagger-codegen.git
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.
=end
require 'date'
module Petstore
class EnumArrays
attr_accessor :just_enum
attr_accessor :array_enum
class EnumAttributeValidator
attr_reader :datatype
attr_reader :allowable_values
def initialize(datatype, allowable_values)
@allowable_values = allowable_values.map do |value|
case datatype.to_s
when /Integer/i
value.to_i
when /Float/i
value.to_f
else
value
end
end
end
def valid?(value)
!value || allowable_values.include?(value)
end
end
# Attribute mapping from ruby-style variable name to JSON key.
def self.attribute_map
{
:'just_enum' => :'just_enum',
:'array_enum' => :'array_enum'
}
end
# Attribute type mapping.
def self.swagger_types
{
:'just_enum' => :'String',
:'array_enum' => :'Array<String>'
}
end
# Initializes the object
# @param [Hash] attributes Model attributes in the form of hash
def initialize(attributes = {})
return unless attributes.is_a?(Hash)
# convert string to symbol for hash key
attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
if attributes.has_key?(:'just_enum')
self.just_enum = attributes[:'just_enum']
end
if attributes.has_key?(:'array_enum')
if (value = attributes[:'array_enum']).is_a?(Array)
self.array_enum = value
end
end
end
# Show invalid properties with the reasons. Usually used together with valid?
# @return Array for valid properies with the reasons
def list_invalid_properties
invalid_properties = Array.new
return invalid_properties
end
# Check to see if the all the properties in the model are valid
# @return true if the model is valid
def valid?
just_enum_validator = EnumAttributeValidator.new('String', ["bird", "eagle"])
return false unless just_enum_validator.valid?(@just_enum)
return true
end
# Custom attribute writer method checking allowed values (enum).
# @param [Object] just_enum Object to be assigned
def just_enum=(just_enum)
validator = EnumAttributeValidator.new('String', ["bird", "eagle"])
unless validator.valid?(just_enum)
fail ArgumentError, "invalid value for 'just_enum', must be one of #{validator.allowable_values}."
end
@just_enum = just_enum
end
# Checks equality by comparing each attribute.
# @param [Object] Object to be compared
def ==(o)
return true if self.equal?(o)
self.class == o.class &&
just_enum == o.just_enum &&
array_enum == o.array_enum
end
# @see the `==` method
# @param [Object] Object to be compared
def eql?(o)
self == o
end
# Calculates hash code according to all attributes.
# @return [Fixnum] Hash code
def hash
[just_enum, array_enum].hash
end
# Builds the object from hash
# @param [Hash] attributes Model attributes in the form of hash
# @return [Object] Returns the model itself
def build_from_hash(attributes)
return nil unless attributes.is_a?(Hash)
self.class.swagger_types.each_pair do |key, type|
if type =~ /^Array<(.*)>/i
# check to ensure the input is an array given that the the attribute
# is documented as an array but the input is not
if attributes[self.class.attribute_map[key]].is_a?(Array)
self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
end
elsif !attributes[self.class.attribute_map[key]].nil?
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
end # or else data not found in attributes(hash), not an issue as the data can be optional
end
self
end
# Deserializes the data based on type
# @param string type Data type
# @param string value Value to be deserialized
# @return [Object] Deserialized data
def _deserialize(type, value)
case type.to_sym
when :DateTime
DateTime.parse(value)
when :Date
Date.parse(value)
when :String
value.to_s
when :Integer
value.to_i
when :Float
value.to_f
when :BOOLEAN
if value.to_s =~ /^(true|t|yes|y|1)$/i
true
else
false
end
when :Object
# generic object (usually a Hash), return directly
value
when /\AArray<(?<inner_type>.+)>\z/
inner_type = Regexp.last_match[:inner_type]
value.map { |v| _deserialize(inner_type, v) }
when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
k_type = Regexp.last_match[:k_type]
v_type = Regexp.last_match[:v_type]
{}.tap do |hash|
value.each do |k, v|
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
end
end
else # model
temp_model = Petstore.const_get(type).new
temp_model.build_from_hash(value)
end
end
# Returns the string representation of the object
# @return [String] String presentation of the object
def to_s
to_hash.to_s
end
# to_body is an alias to to_hash (backward compatibility)
# @return [Hash] Returns the object in the form of hash
def to_body
to_hash
end
# Returns the object in the form of hash
# @return [Hash] Returns the object in the form of hash
def to_hash
hash = {}
self.class.attribute_map.each_pair do |attr, param|
value = self.send(attr)
next if value.nil?
hash[param] = _to_hash(value)
end
hash
end
# Outputs non-array value in the form of hash
# For object, use to_hash. Otherwise, just return the value
# @param [Object] value Any valid value
# @return [Hash] Returns the value in the form of hash
def _to_hash(value)
if value.is_a?(Array)
value.compact.map{ |v| _to_hash(v) }
elsif value.is_a?(Hash)
{}.tap do |hash|
value.each { |k, v| hash[k] = _to_hash(v) }
end
elsif value.respond_to? :to_hash
value.to_hash
else
value
end
end
end
end

View File

@ -0,0 +1,67 @@
=begin
#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
Generated by: https://github.com/swagger-api/swagger-codegen.git
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.
=end
require 'spec_helper'
require 'json'
require 'date'
# Unit tests for Petstore::EnumArrays
# Automatically generated by swagger-codegen (github.com/swagger-api/swagger-codegen)
# Please update as you see appropriate
describe 'EnumArrays' do
before do
# run before each test
@instance = Petstore::EnumArrays.new
end
after do
# run after each test
end
describe 'test an instance of EnumArrays' do
it 'should create an instact of EnumArrays' do
expect(@instance).to be_instance_of(Petstore::EnumArrays)
end
end
describe 'test attribute "array_enum"' do
it 'should work' do
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
#validator = Petstore::EnumTest::EnumAttributeValidator.new('Array<String>', [])
#validator.allowable_values.each do |value|
# expect { @instance.array_enum = value }.not_to raise_error
#end
end
end
describe 'test attribute "array_array_enum"' do
it 'should work' do
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
#validator = Petstore::EnumTest::EnumAttributeValidator.new('Array<Array<String>>', [])
#validator.allowable_values.each do |value|
# expect { @instance.array_array_enum = value }.not_to raise_error
#end
end
end
end