Additional UnknownResponseObjectErrorCode if response object expected type is an unknown type

This commit is contained in:
Mateusz Mackowiak
2016-05-06 11:41:30 +02:00
parent 75cc10fdfa
commit 385bf6d9ea
6 changed files with 55 additions and 17 deletions

View File

@@ -8,6 +8,9 @@ NSInteger const {{classPrefix}}TypeMismatchErrorCode = 143553;
NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509;
NSInteger const {{classPrefix}}UnknownResponseObjectErrorCode = 143528;
@interface {{classPrefix}}ResponseDeserializer ()
@property (nonatomic, strong) NSNumberFormatter* numberFormatter;
@@ -70,33 +73,31 @@ NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509;
}
NSTextCheckingResult *match = nil;
NSRange range = NSMakeRange(0, [className length]);
// list of models
match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]];
return [self deserializeArrayValue:data innerType:innerType error:error];
}
// list of primitives
match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]];
return [self deserializeArrayValue:data innerType:innerType error:error];
}
// map
match = [self.dictPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.dictPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]];
return [self deserializeDictionaryValue:data valueType:valueType error:error];
}
match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSRange range =[match rangeAtIndex:2];
range = NSMakeRange(range.location, [className length] - range.location -1);
NSString *valueType = [className substringWithRange:range];
NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]];
return [self deserializeDictionaryValue:data valueType:valueType error:error];
}
@@ -106,6 +107,9 @@ NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509;
return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error];
}
if(error) {
*error = [self unknownResponseErrorWithExpectedType:className data:data];
}
return nil;
}
@@ -218,4 +222,10 @@ NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509;
return [NSError errorWithDomain:{{classPrefix}}DeserializationErrorDomainKey code:{{classPrefix}}EmptyValueOccurredErrorCode userInfo:userInfo];
}
-(NSError *)unknownResponseErrorWithExpectedType:(NSString *)expected data:(id)data {
NSString * message = [NSString stringWithFormat:NSLocalizedString(@"Unknown response expected type %@ [reponse: %@]",nil),expected,data];
NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message};
return [NSError errorWithDomain:{{classPrefix}}DeserializationErrorDomainKey code:{{classPrefix}}UnknownResponseObjectErrorCode userInfo:userInfo];
}
@end

View File

@@ -21,6 +21,11 @@ extern NSInteger const {{classPrefix}}TypeMismatchErrorCode;
*/
extern NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode;
/**
* Error code for unknown response
*/
extern NSInteger const {{classPrefix}}UnknownResponseObjectErrorCode;
@protocol {{classPrefix}}ResponseDeserializer <NSObject>
/**

View File

@@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi
- API version: 1.0.0
- Package version:
- Build date: 2016-05-06T10:30:53.676+02:00
- Build date: 2016-05-06T11:35:18.146+02:00
- Build package: class io.swagger.codegen.languages.ObjcClientCodegen
## Requirements

View File

@@ -21,6 +21,11 @@ extern NSInteger const SWGTypeMismatchErrorCode;
*/
extern NSInteger const SWGEmptyValueOccurredErrorCode;
/**
* Error code for unknown response
*/
extern NSInteger const SWGUnknownResponseObjectErrorCode;
@protocol SWGResponseDeserializer <NSObject>
/**

View File

@@ -8,6 +8,9 @@ NSInteger const SWGTypeMismatchErrorCode = 143553;
NSInteger const SWGEmptyValueOccurredErrorCode = 143509;
NSInteger const SWGUnknownResponseObjectErrorCode = 143528;
@interface SWGResponseDeserializer ()
@property (nonatomic, strong) NSNumberFormatter* numberFormatter;
@@ -70,33 +73,31 @@ NSInteger const SWGEmptyValueOccurredErrorCode = 143509;
}
NSTextCheckingResult *match = nil;
NSRange range = NSMakeRange(0, [className length]);
// list of models
match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]];
return [self deserializeArrayValue:data innerType:innerType error:error];
}
// list of primitives
match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]];
return [self deserializeArrayValue:data innerType:innerType error:error];
}
// map
match = [self.dictPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.dictPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]];
return [self deserializeDictionaryValue:data valueType:valueType error:error];
}
match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])];
match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:range];
if (match) {
NSRange range =[match rangeAtIndex:2];
range = NSMakeRange(range.location, [className length] - range.location -1);
NSString *valueType = [className substringWithRange:range];
NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]];
return [self deserializeDictionaryValue:data valueType:valueType error:error];
}
@@ -106,6 +107,9 @@ NSInteger const SWGEmptyValueOccurredErrorCode = 143509;
return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error];
}
if(error) {
*error = [self unknownResponseErrorWithExpectedType:className data:data];
}
return nil;
}
@@ -218,4 +222,10 @@ NSInteger const SWGEmptyValueOccurredErrorCode = 143509;
return [NSError errorWithDomain:SWGDeserializationErrorDomainKey code:SWGEmptyValueOccurredErrorCode userInfo:userInfo];
}
-(NSError *)unknownResponseErrorWithExpectedType:(NSString *)expected data:(id)data {
NSString * message = [NSString stringWithFormat:NSLocalizedString(@"Unknown response expected type %@ [reponse: %@]",nil),expected,data];
NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message};
return [NSError errorWithDomain:SWGDeserializationErrorDomainKey code:SWGUnknownResponseObjectErrorCode userInfo:userInfo];
}
@end

View File

@@ -61,6 +61,14 @@
XCTAssertEqualWithAccuracy([dateTime timeIntervalSinceReferenceDate], [deserializedDateTime timeIntervalSinceReferenceDate], 0.001);
}
- (void)testDeserializeUnknownObject {
NSString *data = @"random string";
NSError* error;
NSNumber *result = [apiClient.responseDeserializer deserialize:data class:@"DeserializationTest*" error:&error];
XCTAssertNotNil(error);
XCTAssertNil(result);
}
- (void)testDeserializeObject {
NSNumber *data = @1;
NSError* error;