Differences From Artifact [5660c1a7c6]:
- File
src/OFXMLElement.m
— part of check-in
[457e0e82af]
at
2013-06-16 20:03:47
on branch trunk
— Split OFUnboundNamespaceException.
OFUnboundNamespaceException is now only used when the namespace is not
bound. If the prefix is not bound, OFUnboundPrefixException is used now. (user: js, size: 28405) [annotate] [blame] [check-ins using]
To Artifact [29fe39b5ac]:
- File
src/OFXMLElement.m
— part of check-in
[3d16a30f41]
at
2013-06-22 12:12:36
on branch trunk
— Rework exceptions.
This mostly removes the argument for the class in which the exception
occurred. As backtraces were recently added for all platforms, the
passed class does not give any extra information on where the exception
occurred anymore.This also removes a few other arguments which were not too helpful. In
the past, the idea was to pass as many arguments as possible so that it
is easier to find the origin of the exception. However, as backtraces
are a much better way to find the origin, those are not useful anymore
and just make the exception more cumbersome to use. The rule is now to
only pass arguments that might help in recovering from the exception or
provide information that is otherwise not easily accessible. (user: js, size: 27419) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
163 164 165 166 167 168 169 | namespace: (OFString*)namespace stringValue: (OFString*)stringValue { self = [super init]; @try { if (name == nil) | | < < | 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | namespace: (OFString*)namespace stringValue: (OFString*)stringValue { self = [super init]; @try { if (name == nil) @throw [OFInvalidArgumentException exception]; _name = [name copy]; _namespace = [namespace copy]; _namespaces = [[OFMutableDictionary alloc] initWithKeysAndObjects: @"http://www.w3.org/XML/1998/namespace", @"xml", |
︙ | ︙ | |||
191 192 193 194 195 196 197 | - initWithElement: (OFXMLElement*)element { self = [super init]; @try { if (element == nil) | | < < | 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | - initWithElement: (OFXMLElement*)element { self = [super init]; @try { if (element == nil) @throw [OFInvalidArgumentException exception]; _name = [element->_name copy]; _namespace = [element->_namespace copy]; _defaultNamespace = [element->_defaultNamespace copy]; _attributes = [element->_attributes mutableCopy]; _namespaces = [element->_namespaces mutableCopy]; _children = [element->_children mutableCopy]; |
︙ | ︙ | |||
221 222 223 224 225 226 227 | OFXMLElement_OFXMLElementBuilderDelegate *delegate; Class c; c = [self class]; [self release]; if (string == nil) | | < | < | 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | OFXMLElement_OFXMLElementBuilderDelegate *delegate; Class c; c = [self class]; [self release]; if (string == nil) @throw [OFInvalidArgumentException exception]; pool = objc_autoreleasePoolPush(); parser = [OFXMLParser parser]; builder = [OFXMLElementBuilder elementBuilder]; delegate = [[[OFXMLElement_OFXMLElementBuilderDelegate alloc] init] autorelease]; [parser setDelegate: builder]; [builder setDelegate: delegate]; [parser parseString: string]; if (![parser finishedParsing]) @throw [OFMalformedXMLException exceptionWithParser: parser]; self = [delegate->_element retain]; objc_autoreleasePoolPop(pool); return self; } |
︙ | ︙ | |||
271 272 273 274 275 276 277 | [parser setDelegate: builder]; [builder setDelegate: delegate]; [parser parseFile: path]; if (![parser finishedParsing]) | | < | 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 | [parser setDelegate: builder]; [builder setDelegate: delegate]; [parser parseFile: path]; if (![parser finishedParsing]) @throw [OFMalformedXMLException exceptionWithParser: parser]; self = [delegate->_element retain]; objc_autoreleasePoolPop(pool); return self; } |
︙ | ︙ | |||
294 295 296 297 298 299 300 | OFXMLElement *attributesElement, *namespacesElement; OFXMLElement *childrenElement; OFEnumerator *keyEnumerator, *objectEnumerator; id key, object; if (![[element name] isEqual: [self className]] || ![[element namespace] isEqual: OF_SERIALIZATION_NS]) | | < < | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | OFXMLElement *attributesElement, *namespacesElement; OFXMLElement *childrenElement; OFEnumerator *keyEnumerator, *objectEnumerator; id key, object; if (![[element name] isEqual: [self className]] || ![[element namespace] isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException exception]; _name = [[[element attributeForName: @"name"] stringValue] copy]; _namespace = [[[element attributeForName: @"namespace"] stringValue] copy]; _defaultNamespace = [[[element attributeForName: @"defaultNamespace"] stringValue] copy]; |
︙ | ︙ | |||
331 332 333 334 335 336 337 | /* Sanity checks */ if ((_attributes != nil && ![_attributes isKindOfClass: [OFMutableArray class]]) || (_namespaces != nil && ![_namespaces isKindOfClass: [OFMutableDictionary class]]) || (_children != nil && ![_children isKindOfClass: [OFMutableArray class]])) | | < < | < < | < < | < < | < < | 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 | /* Sanity checks */ if ((_attributes != nil && ![_attributes isKindOfClass: [OFMutableArray class]]) || (_namespaces != nil && ![_namespaces isKindOfClass: [OFMutableDictionary class]]) || (_children != nil && ![_children isKindOfClass: [OFMutableArray class]])) @throw [OFInvalidArgumentException exception]; objectEnumerator = [_attributes objectEnumerator]; while ((object = [objectEnumerator nextObject]) != nil) if (![object isKindOfClass: [OFXMLAttribute class]]) @throw [OFInvalidArgumentException exception]; keyEnumerator = [_namespaces keyEnumerator]; objectEnumerator = [_namespaces objectEnumerator]; while ((key = [keyEnumerator nextObject]) != nil && (object = [objectEnumerator nextObject]) != nil) if (![key isKindOfClass: [OFString class]] || ![object isKindOfClass: [OFString class]]) @throw [OFInvalidArgumentException exception]; objectEnumerator = [_children objectEnumerator]; while ((object = [objectEnumerator nextObject]) != nil) if (![object isKindOfClass: [OFXMLNode class]]) @throw [OFInvalidArgumentException exception]; if (_namespaces == nil) _namespaces = [[OFMutableDictionary alloc] init]; [_namespaces setObject: @"xml" forKey: @"http://www.w3.org/XML/1998/namespace"]; [_namespaces setObject: @"xmlns" forKey: @"http://www.w3.org/2000/xmlns/"]; if (_name == nil) @throw [OFInvalidArgumentException exception]; objc_autoreleasePoolPop(pool); } @catch (id e) { [self release]; @throw e; } |
︙ | ︙ | |||
397 398 399 400 401 402 403 | [super dealloc]; } - (void)setName: (OFString*)name { if (name == nil) | | < < | 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | [super dealloc]; } - (void)setName: (OFString*)name { if (name == nil) @throw [OFInvalidArgumentException exception]; OF_SETTER(_name, name, true, 1) } - (OFString*)name { OF_GETTER(_name, true) |
︙ | ︙ | |||
581 582 583 584 585 586 587 | OFString *tmp = [[attributesObjects[j] stringValue] stringByXMLEscaping]; if ([attributesObjects[j] namespace] != nil && (attributePrefix = [allNamespaces objectForKey: [attributesObjects[j] namespace]]) == nil) @throw [OFUnboundNamespaceException | < | | | | 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 | OFString *tmp = [[attributesObjects[j] stringValue] stringByXMLEscaping]; if ([attributesObjects[j] namespace] != nil && (attributePrefix = [allNamespaces objectForKey: [attributesObjects[j] namespace]]) == nil) @throw [OFUnboundNamespaceException exceptionWithNamespace: [attributesObjects[j] namespace] element: self]; length += [attributeName UTF8StringLength] + (attributePrefix != nil ? [attributePrefix UTF8StringLength] + 1 : 0) + [tmp UTF8StringLength] + 4; @try { |
︙ | ︙ | |||
919 920 921 922 923 924 925 | } } - (void)setPrefix: (OFString*)prefix forNamespace: (OFString*)namespace { if ([prefix length] == 0) | | < < | 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 | } } - (void)setPrefix: (OFString*)prefix forNamespace: (OFString*)namespace { if ([prefix length] == 0) @throw [OFInvalidArgumentException exception]; if (namespace == nil) namespace = @""; [_namespaces setObject: prefix forKey: namespace]; } |
︙ | ︙ | |||
952 953 954 955 956 957 958 | { OF_SETTER(_defaultNamespace, defaultNamespace, true, 1) } - (void)addChild: (OFXMLNode*)child { if ([child isKindOfClass: [OFXMLAttribute class]]) | | < < | < < | < < | < < | < < | < < | 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 | { OF_SETTER(_defaultNamespace, defaultNamespace, true, 1) } - (void)addChild: (OFXMLNode*)child { if ([child isKindOfClass: [OFXMLAttribute class]]) @throw [OFInvalidArgumentException exception]; if (_children == nil) _children = [[OFMutableArray alloc] init]; [_children addObject: child]; } - (void)insertChild: (OFXMLNode*)child atIndex: (size_t)index { if ([child isKindOfClass: [OFXMLAttribute class]]) @throw [OFInvalidArgumentException exception]; if (_children == nil) _children = [[OFMutableArray alloc] init]; [_children insertObject: child atIndex: index]; } - (void)insertChildren: (OFArray*)children atIndex: (size_t)index { void *pool = objc_autoreleasePoolPush(); OFEnumerator *enumerator = [children objectEnumerator]; OFXMLNode *node; while ((node = [enumerator nextObject]) != nil) if ([node isKindOfClass: [OFXMLAttribute class]]) @throw [OFInvalidArgumentException exception]; [_children insertObjectsFromArray: children atIndex: index]; objc_autoreleasePoolPop(pool); } - (void)removeChild: (OFXMLNode*)child { if ([child isKindOfClass: [OFXMLAttribute class]]) @throw [OFInvalidArgumentException exception]; [_children removeObject: child]; } - (void)removeChildAtIndex: (size_t)index { [_children removeObjectAtIndex: index]; } - (void)replaceChild: (OFXMLNode*)child withNode: (OFXMLNode*)node { if ([node isKindOfClass: [OFXMLAttribute class]] || [child isKindOfClass: [OFXMLAttribute class]]) @throw [OFInvalidArgumentException exception]; [_children replaceObject: child withObject: node]; } - (void)replaceChildAtIndex: (size_t)index withNode: (OFXMLNode*)node { if ([node isKindOfClass: [OFXMLAttribute class]]) @throw [OFInvalidArgumentException exception]; [_children replaceObjectAtIndex: index withObject: node]; } - (OFXMLElement*)elementForName: (OFString*)elementName { |
︙ | ︙ |