diff options
author | Benoit Foucher <benoit@zeroc.com> | 2017-07-06 00:18:03 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2017-07-06 00:18:03 +0200 |
commit | 54d8f3fb0d3d53f851051980f1bc941c4e39a60f (patch) | |
tree | 0d8259f0cd48b3ba0a3792556821aa41d6f718a7 /objective-c | |
parent | Fixed ICE-8223 - renamed cloneImpl to _iceCloneImpl (diff) | |
download | ice-54d8f3fb0d3d53f851051980f1bc941c4e39a60f.tar.bz2 ice-54d8f3fb0d3d53f851051980f1bc941c4e39a60f.tar.xz ice-54d8f3fb0d3d53f851051980f1bc941c4e39a60f.zip |
Added Ice::UserException::ice_getSlicedData and Ice::UnkownSlicedValue::ice_id methods
Diffstat (limited to 'objective-c')
-rw-r--r-- | objective-c/include/objc/Ice/Exception.h | 2 | ||||
-rw-r--r-- | objective-c/include/objc/Ice/SlicedData.h | 2 | ||||
-rw-r--r-- | objective-c/src/Ice/Exception.mm | 5 | ||||
-rw-r--r-- | objective-c/src/Ice/SlicedData.mm | 13 | ||||
-rw-r--r-- | objective-c/test/Ice/slicing/exceptions/AllTests.m | 37 | ||||
-rw-r--r-- | objective-c/test/Ice/slicing/exceptions/TestI.m | 4 | ||||
-rw-r--r-- | objective-c/test/Ice/slicing/objects/AllTests.m | 2 | ||||
-rw-r--r-- | objective-c/test/Ice/slicing/objects/TestI.m | 11 |
8 files changed, 58 insertions, 18 deletions
diff --git a/objective-c/include/objc/Ice/Exception.h b/objective-c/include/objc/Ice/Exception.h index 18d50d9ffbd..00a7870f55b 100644 --- a/objective-c/include/objc/Ice/Exception.h +++ b/objective-c/include/objc/Ice/Exception.h @@ -16,6 +16,7 @@ // @protocol ICEOutputStream; @protocol ICEInputStream; +@protocol ICESlicedData; @class NSCoder; @@ -40,6 +41,7 @@ ICE_API @interface ICELocalException : ICEException @end ICE_API @interface ICEUserException : ICEException +-(id<ICESlicedData>)ice_getSlicedData; -(BOOL)iceUsesClasses; -(void)iceWrite:(id<ICEOutputStream>)stream; -(void) iceWriteImpl:(id<ICEOutputStream>)os; diff --git a/objective-c/include/objc/Ice/SlicedData.h b/objective-c/include/objc/Ice/SlicedData.h index b5984caf659..f5575920f5a 100644 --- a/objective-c/include/objc/Ice/SlicedData.h +++ b/objective-c/include/objc/Ice/SlicedData.h @@ -30,6 +30,4 @@ ICE_API @interface ICEUnknownSlicedValue : ICEObject NSString* unknownTypeId_; id<ICESlicedData> slicedData_; } --(NSString*) getUnknownTypeId; --(id<ICESlicedData>) getSlicedData; @end diff --git a/objective-c/src/Ice/Exception.mm b/objective-c/src/Ice/Exception.mm index c0db762d8f7..370f9d92153 100644 --- a/objective-c/src/Ice/Exception.mm +++ b/objective-c/src/Ice/Exception.mm @@ -171,6 +171,11 @@ localExceptionToString(const Ice::LocalException& ex) @end @implementation ICEUserException +-(id<ICESlicedData>)ice_getSlicedData +{ + return nil; +} + -(BOOL)iceUsesClasses { return NO; diff --git a/objective-c/src/Ice/SlicedData.mm b/objective-c/src/Ice/SlicedData.mm index 6173d2e5ced..58d8d2e6fec 100644 --- a/objective-c/src/Ice/SlicedData.mm +++ b/objective-c/src/Ice/SlicedData.mm @@ -64,14 +64,14 @@ [super dealloc]; } --(NSString*) getUnknownTypeId +-(id<ICESlicedData>) ice_getSlicedData { - return [[unknownTypeId_ retain] autorelease]; + return [[slicedData_ retain] autorelease]; } --(ICESlicedData*) getSlicedData +-(NSString*) ice_id { - return [[slicedData_ retain] autorelease]; + return [[unknownTypeId_ retain] autorelease]; } -(void) iceWrite:(id<ICEOutputStream>)os @@ -91,9 +91,4 @@ unknownTypeId_ = toNSString(slicedData->slices[0]->typeId); } --(ICESlicedData*) ice_getSlicedData -{ - return [[slicedData_ retain] autorelease]; -} - @end diff --git a/objective-c/test/Ice/slicing/exceptions/AllTests.m b/objective-c/test/Ice/slicing/exceptions/AllTests.m index 41af9beedef..85cf4a9c72e 100644 --- a/objective-c/test/Ice/slicing/exceptions/AllTests.m +++ b/objective-c/test/Ice/slicing/exceptions/AllTests.m @@ -685,6 +685,43 @@ slicingExceptionsAllTests(id<ICECommunicator> communicator) tprintf("preserved exceptions... "); { + @try + { + [test unknownPreservedAsBase]; + test(false); + } + @catch(TestSlicingExceptionsClientBase* ex) + { + if([[test ice_getEncodingVersion] isEqual:ICEEncoding_1_0]) + { + test([ex ice_getSlicedData] == nil); + } + else + { + id<ICESlicedData> slicedData = [ex ice_getSlicedData]; + test(slicedData != nil); + } + } + + @try + { + [test unknownPreservedAsKnownPreserved]; + test(false); + } + @catch(TestSlicingExceptionsClientKnownPreserved* ex) + { + test([ex.kp isEqualToString:@"preserved"]); + if([[test ice_getEncodingVersion] isEqual:ICEEncoding_1_0]) + { + test([ex ice_getSlicedData] == nil); + } + else + { + id<ICESlicedData> slicedData = [ex ice_getSlicedData]; + test(slicedData != nil); + } + } + id<ICEObjectAdapter> adapter = [communicator createObjectAdapter:@""]; TestSlicingExceptionsClientRelayPrx* relay = [TestSlicingExceptionsClientRelayPrx uncheckedCast:[adapter addWithUUID:[RelayI relay]]]; diff --git a/objective-c/test/Ice/slicing/exceptions/TestI.m b/objective-c/test/Ice/slicing/exceptions/TestI.m index d9587ee8e8d..a2b022f2afb 100644 --- a/objective-c/test/Ice/slicing/exceptions/TestI.m +++ b/objective-c/test/Ice/slicing/exceptions/TestI.m @@ -120,7 +120,7 @@ -(void) unknownPreservedAsBase:(ICECurrent*)current { - TestSlicingExceptionsServerSPreserved2* ex = [TestSlicingExceptionsServerSPreserved2 alloc]; + TestSlicingExceptionsServerSPreserved2* ex = [TestSlicingExceptionsServerSPreserved2 sPreserved2]; ex.b = @"base"; ex.kp = @"preserved"; ex.kpd = @"derived"; @@ -131,7 +131,7 @@ -(void) unknownPreservedAsKnownPreserved:(ICECurrent*)current { - TestSlicingExceptionsServerSPreserved2* ex = [TestSlicingExceptionsServerSPreserved2 alloc]; + TestSlicingExceptionsServerSPreserved2* ex = [TestSlicingExceptionsServerSPreserved2 sPreserved2]; ex.b = @"base"; ex.kp = @"preserved"; ex.kpd = @"derived"; diff --git a/objective-c/test/Ice/slicing/objects/AllTests.m b/objective-c/test/Ice/slicing/objects/AllTests.m index 8856fe40cd8..3b036b68683 100644 --- a/objective-c/test/Ice/slicing/objects/AllTests.m +++ b/objective-c/test/Ice/slicing/objects/AllTests.m @@ -938,7 +938,7 @@ slicingObjectsAllTests(id<ICECommunicator> communicator) o = [test SUnknownAsObject]; test(![[test ice_getEncodingVersion] isEqual:ICEEncoding_1_0]); test([o isKindOfClass:[ICEUnknownSlicedValue class]]); - test([[((ICEUnknownSlicedValue*)o) getUnknownTypeId] isEqualToString:@"::Test::SUnknown"]); + test([[((ICEUnknownSlicedValue*)o) ice_id] isEqualToString:@"::Test::SUnknown"]); test([((ICEUnknownSlicedValue*)o) ice_getSlicedData] != nil); [test checkSUnknown:o]; [[o ice_getSlicedData] clear]; diff --git a/objective-c/test/Ice/slicing/objects/TestI.m b/objective-c/test/Ice/slicing/objects/TestI.m index 8b5a76e6dd3..b32e8cecac9 100644 --- a/objective-c/test/Ice/slicing/objects/TestI.m +++ b/objective-c/test/Ice/slicing/objects/TestI.m @@ -62,9 +62,11 @@ static void breakCycles(id o) TestSlicingObjectsServerPNode* curr = o; while(curr && o != curr.next) { - TestSlicingObjectsServerPNode* next = curr.next; + curr = curr.next; + } + if(curr && o == curr.next) + { curr.next = nil; - curr = next; } } if([o isKindOfClass:[TestSlicingObjectsServerPSUnknown class]]) @@ -75,7 +77,7 @@ static void breakCycles(id o) if([o isKindOfClass:[TestSlicingObjectsServerPSUnknown2 class]]) { TestSlicingObjectsServerPSUnknown2* p = (TestSlicingObjectsServerPSUnknown2*)o; - breakCycles(p.pb); + p.pb = nil; } if([o isKindOfClass:[TestSlicingObjectsServerBaseException class]]) { @@ -143,7 +145,7 @@ static void breakCycles(id o) +(id) serverI { TestSlicingObjectsServerI* impl = [[TestSlicingObjectsServerI alloc] init]; - impl->objects_ = [NSMutableArray array]; + impl->objects_ = [[NSMutableArray alloc] init]; return ICE_AUTORELEASE(impl); } -(void) dealloc @@ -153,6 +155,7 @@ static void breakCycles(id o) breakCycles(o); } #if !__has_feature(objc_arc) + [objects_ release]; [super dealloc]; #endif } |