[Swift3][bug#4318] Bug when handling java date (#4332)

* fix bug #4318

* swift3 samples update
This commit is contained in:
Alvin 2016-12-07 03:58:21 -06:00 committed by wing328
parent 8153f0e89b
commit b7984e55a7
7 changed files with 108 additions and 8 deletions

View File

@ -126,7 +126,8 @@ class Decoders {
"yyyy-MM-dd'T'HH:mm:ssZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SSS"
"yyyy-MM-dd'T'HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss"
].map { (format: String) -> DateFormatter in
let formatter = DateFormatter()
formatter.dateFormat = format
@ -141,7 +142,7 @@ class Decoders {
}
}
}
if let sourceInt = source as? Int {
if let sourceInt = source as? Int64 {
// treat as a java date
return Date(timeIntervalSince1970: Double(sourceInt / 1000) )
}

View File

@ -126,7 +126,8 @@ class Decoders {
"yyyy-MM-dd'T'HH:mm:ssZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SSS"
"yyyy-MM-dd'T'HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss"
].map { (format: String) -> DateFormatter in
let formatter = DateFormatter()
formatter.dateFormat = format
@ -141,7 +142,7 @@ class Decoders {
}
}
}
if let sourceInt = source as? Int {
if let sourceInt = source as? Int64 {
// treat as a java date
return Date(timeIntervalSince1970: Double(sourceInt / 1000) )
}
@ -284,6 +285,20 @@ class Decoders {
}
// Decoder for [ClassModel]
Decoders.addDecoder(clazz: [ClassModel].self) { (source: AnyObject) -> [ClassModel] in
return Decoders.decode(clazz: [ClassModel].self, source: source)
}
// Decoder for ClassModel
Decoders.addDecoder(clazz: ClassModel.self) { (source: AnyObject) -> ClassModel in
let sourceDictionary = source as! [AnyHashable: Any]
let instance = ClassModel()
instance._class = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["_class"] as AnyObject?)
return instance
}
// Decoder for [Client]
Decoders.addDecoder(clazz: [Client].self) { (source: AnyObject) -> [Client] in
return Decoders.decode(clazz: [Client].self, source: source)
@ -371,6 +386,7 @@ class Decoders {
instance.enumNumber = EnumTest.EnumNumber(rawValue: (enumNumber))
}
instance.outerEnum = Decoders.decodeOptional(clazz: OuterEnum.self, source: sourceDictionary["outerEnum"] as AnyObject?)
return instance
}
@ -531,6 +547,21 @@ class Decoders {
}
// Decoder for [OuterEnum]
Decoders.addDecoder(clazz: [OuterEnum].self) { (source: AnyObject) -> [OuterEnum] in
return Decoders.decode(clazz: [OuterEnum].self, source: source)
}
// Decoder for OuterEnum
Decoders.addDecoder(clazz: OuterEnum.self) { (source: AnyObject) -> OuterEnum in
if let source = source as? String {
if let result = OuterEnum(rawValue: source) {
return result
}
}
fatalError("Source \(source) is not convertible to enum type OuterEnum: Maybe swagger file is insufficient")
}
// Decoder for [Pet]
Decoders.addDecoder(clazz: [Pet].self) { (source: AnyObject) -> [Pet] in
return Decoders.decode(clazz: [Pet].self, source: source)

View File

@ -24,6 +24,7 @@ open class EnumTest: JSONEncodable {
public var enumString: EnumString?
public var enumInteger: EnumInteger?
public var enumNumber: EnumNumber?
public var outerEnum: OuterEnum?
public init() {}
@ -33,6 +34,7 @@ open class EnumTest: JSONEncodable {
nillableDictionary["enum_string"] = self.enumString?.rawValue
nillableDictionary["enum_integer"] = self.enumInteger?.rawValue
nillableDictionary["enum_number"] = self.enumNumber?.rawValue
nillableDictionary["outerEnum"] = self.outerEnum?.encodeToJSON()
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary
}

View File

@ -126,7 +126,8 @@ class Decoders {
"yyyy-MM-dd'T'HH:mm:ssZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SSS"
"yyyy-MM-dd'T'HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss"
].map { (format: String) -> DateFormatter in
let formatter = DateFormatter()
formatter.dateFormat = format
@ -141,7 +142,7 @@ class Decoders {
}
}
}
if let sourceInt = source as? Int {
if let sourceInt = source as? Int64 {
// treat as a java date
return Date(timeIntervalSince1970: Double(sourceInt / 1000) )
}
@ -284,6 +285,20 @@ class Decoders {
}
// Decoder for [ClassModel]
Decoders.addDecoder(clazz: [ClassModel].self) { (source: AnyObject) -> [ClassModel] in
return Decoders.decode(clazz: [ClassModel].self, source: source)
}
// Decoder for ClassModel
Decoders.addDecoder(clazz: ClassModel.self) { (source: AnyObject) -> ClassModel in
let sourceDictionary = source as! [AnyHashable: Any]
let instance = ClassModel()
instance._class = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["_class"] as AnyObject?)
return instance
}
// Decoder for [Client]
Decoders.addDecoder(clazz: [Client].self) { (source: AnyObject) -> [Client] in
return Decoders.decode(clazz: [Client].self, source: source)
@ -371,6 +386,7 @@ class Decoders {
instance.enumNumber = EnumTest.EnumNumber(rawValue: (enumNumber))
}
instance.outerEnum = Decoders.decodeOptional(clazz: OuterEnum.self, source: sourceDictionary["outerEnum"] as AnyObject?)
return instance
}
@ -531,6 +547,21 @@ class Decoders {
}
// Decoder for [OuterEnum]
Decoders.addDecoder(clazz: [OuterEnum].self) { (source: AnyObject) -> [OuterEnum] in
return Decoders.decode(clazz: [OuterEnum].self, source: source)
}
// Decoder for OuterEnum
Decoders.addDecoder(clazz: OuterEnum.self) { (source: AnyObject) -> OuterEnum in
if let source = source as? String {
if let result = OuterEnum(rawValue: source) {
return result
}
}
fatalError("Source \(source) is not convertible to enum type OuterEnum: Maybe swagger file is insufficient")
}
// Decoder for [Pet]
Decoders.addDecoder(clazz: [Pet].self) { (source: AnyObject) -> [Pet] in
return Decoders.decode(clazz: [Pet].self, source: source)

View File

@ -24,6 +24,7 @@ open class EnumTest: JSONEncodable {
public var enumString: EnumString?
public var enumInteger: EnumInteger?
public var enumNumber: EnumNumber?
public var outerEnum: OuterEnum?
public init() {}
@ -33,6 +34,7 @@ open class EnumTest: JSONEncodable {
nillableDictionary["enum_string"] = self.enumString?.rawValue
nillableDictionary["enum_integer"] = self.enumInteger?.rawValue
nillableDictionary["enum_number"] = self.enumNumber?.rawValue
nillableDictionary["outerEnum"] = self.outerEnum?.encodeToJSON()
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary
}

View File

@ -126,7 +126,8 @@ class Decoders {
"yyyy-MM-dd'T'HH:mm:ssZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SSS"
"yyyy-MM-dd'T'HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss"
].map { (format: String) -> DateFormatter in
let formatter = DateFormatter()
formatter.dateFormat = format
@ -141,7 +142,7 @@ class Decoders {
}
}
}
if let sourceInt = source as? Int {
if let sourceInt = source as? Int64 {
// treat as a java date
return Date(timeIntervalSince1970: Double(sourceInt / 1000) )
}
@ -284,6 +285,20 @@ class Decoders {
}
// Decoder for [ClassModel]
Decoders.addDecoder(clazz: [ClassModel].self) { (source: AnyObject) -> [ClassModel] in
return Decoders.decode(clazz: [ClassModel].self, source: source)
}
// Decoder for ClassModel
Decoders.addDecoder(clazz: ClassModel.self) { (source: AnyObject) -> ClassModel in
let sourceDictionary = source as! [AnyHashable: Any]
let instance = ClassModel()
instance._class = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["_class"] as AnyObject?)
return instance
}
// Decoder for [Client]
Decoders.addDecoder(clazz: [Client].self) { (source: AnyObject) -> [Client] in
return Decoders.decode(clazz: [Client].self, source: source)
@ -371,6 +386,7 @@ class Decoders {
instance.enumNumber = EnumTest.EnumNumber(rawValue: (enumNumber))
}
instance.outerEnum = Decoders.decodeOptional(clazz: OuterEnum.self, source: sourceDictionary["outerEnum"] as AnyObject?)
return instance
}
@ -531,6 +547,21 @@ class Decoders {
}
// Decoder for [OuterEnum]
Decoders.addDecoder(clazz: [OuterEnum].self) { (source: AnyObject) -> [OuterEnum] in
return Decoders.decode(clazz: [OuterEnum].self, source: source)
}
// Decoder for OuterEnum
Decoders.addDecoder(clazz: OuterEnum.self) { (source: AnyObject) -> OuterEnum in
if let source = source as? String {
if let result = OuterEnum(rawValue: source) {
return result
}
}
fatalError("Source \(source) is not convertible to enum type OuterEnum: Maybe swagger file is insufficient")
}
// Decoder for [Pet]
Decoders.addDecoder(clazz: [Pet].self) { (source: AnyObject) -> [Pet] in
return Decoders.decode(clazz: [Pet].self, source: source)

View File

@ -24,6 +24,7 @@ open class EnumTest: JSONEncodable {
public var enumString: EnumString?
public var enumInteger: EnumInteger?
public var enumNumber: EnumNumber?
public var outerEnum: OuterEnum?
public init() {}
@ -33,6 +34,7 @@ open class EnumTest: JSONEncodable {
nillableDictionary["enum_string"] = self.enumString?.rawValue
nillableDictionary["enum_integer"] = self.enumInteger?.rawValue
nillableDictionary["enum_number"] = self.enumNumber?.rawValue
nillableDictionary["outerEnum"] = self.outerEnum?.encodeToJSON()
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary
}