summaryrefslogtreecommitdiff
path: root/objective-c
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2017-07-06 00:18:03 +0200
committerBenoit Foucher <benoit@zeroc.com>2017-07-06 00:18:03 +0200
commit54d8f3fb0d3d53f851051980f1bc941c4e39a60f (patch)
tree0d8259f0cd48b3ba0a3792556821aa41d6f718a7 /objective-c
parentFixed ICE-8223 - renamed cloneImpl to _iceCloneImpl (diff)
downloadice-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.h2
-rw-r--r--objective-c/include/objc/Ice/SlicedData.h2
-rw-r--r--objective-c/src/Ice/Exception.mm5
-rw-r--r--objective-c/src/Ice/SlicedData.mm13
-rw-r--r--objective-c/test/Ice/slicing/exceptions/AllTests.m37
-rw-r--r--objective-c/test/Ice/slicing/exceptions/TestI.m4
-rw-r--r--objective-c/test/Ice/slicing/objects/AllTests.m2
-rw-r--r--objective-c/test/Ice/slicing/objects/TestI.m11
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
}