Revision: 22671
          http://sourceforge.net/p/bibdesk/svn/22671
Author:   hofman
Date:     2018-09-25 22:10:29 +0000 (Tue, 25 Sep 2018)
Log Message:
-----------
Non  writable container key is invalid

Modified Paths:
--------------
    trunk/bibdesk/BDSKAddCommand.m
    trunk/bibdesk/BDSKRemoveCommand.m

Modified: trunk/bibdesk/BDSKAddCommand.m
===================================================================
--- trunk/bibdesk/BDSKAddCommand.m      2018-09-25 21:58:33 UTC (rev 22670)
+++ trunk/bibdesk/BDSKAddCommand.m      2018-09-25 22:10:29 UTC (rev 22671)
@@ -130,28 +130,23 @@
             if (containerClassDescription == nil && insertionContainer)
                 containerClassDescription = [insertionContainer 
scriptClassDescription];
             if (insertionContainer == nil || insertionKey == nil ||
-                [[containerClassDescription toManyRelationshipKeys] 
containsObject:insertionKey] == NO ||
-                [containerClassDescription 
hasWritablePropertyForKey:insertionKey] == NO) {
+                [[containerClassDescription toManyRelationshipKeys] 
containsObject:insertionKey] == NO) {
                 [self setScriptErrorNumber:NSArgumentsWrongScriptError];
                 [self setScriptErrorString:NSLocalizedString(@"Could not find 
container to add to", @"Error description")];
                 insertionObjects = nil;
+            } else if ((insertionIndex == -1 && [containerClassDescription 
isLocationRequiredToCreateForKey:insertionKey]) ||
+                       [containerClassDescription 
hasWritablePropertyForKey:insertionKey] == NO ||
+                       [insertionClassDescription 
isKindOfClassDescription:[containerClassDescription 
classDescriptionForKey:insertionKey]] == NO) {
+                [self setScriptErrorNumber:NSArgumentsWrongScriptError];
+                [self setScriptErrorString:NSLocalizedString(@"Invalid 
container to add to", @"Error description")];
             } else {
-                // check if the inserted objects are valid for the insertion 
container key
-                NSScriptClassDescription *requiredClassDescription = 
[containerClassDescription classDescriptionForKey:insertionKey];
-                
-                if ([insertionClassDescription 
isKindOfClassDescription:requiredClassDescription] == NO ||
-                    (insertionIndex == -1 && [containerClassDescription 
isLocationRequiredToCreateForKey:insertionKey])) {
-                    [self setScriptErrorNumber:NSArgumentsWrongScriptError];
-                    [self setScriptErrorString:NSLocalizedString(@"Invalid 
container to add to", @"Error description")];
+                // insert using scripting KVC
+                if (insertionIndex >= 0) {
+                    for (id obj in [insertionObjects reverseObjectEnumerator])
+                        [insertionContainer insertValue:obj 
atIndex:insertionIndex inPropertyWithKey:insertionKey];
                 } else {
-                    // insert using scripting KVC
-                    if (insertionIndex >= 0) {
-                        for (id obj in [insertionObjects 
reverseObjectEnumerator])
-                            [insertionContainer insertValue:obj 
atIndex:insertionIndex inPropertyWithKey:insertionKey];
-                    } else {
-                        for (id obj in insertionObjects)
-                            [insertionContainer insertValue:obj 
inPropertyWithKey:insertionKey];
-                    }
+                    for (id obj in insertionObjects)
+                        [insertionContainer insertValue:obj 
inPropertyWithKey:insertionKey];
                 }
             }
         }

Modified: trunk/bibdesk/BDSKRemoveCommand.m
===================================================================
--- trunk/bibdesk/BDSKRemoveCommand.m   2018-09-25 21:58:33 UTC (rev 22670)
+++ trunk/bibdesk/BDSKRemoveCommand.m   2018-09-25 22:10:29 UTC (rev 22671)
@@ -131,20 +131,16 @@
             if (containerClassDescription == nil && removeContainer)
                 containerClassDescription = [removeContainer 
scriptClassDescription];
             if (removeContainer == nil || removeKey == nil ||
-                [[containerClassDescription toManyRelationshipKeys] 
containsObject:removeKey] == NO ||
-                [containerClassDescription 
hasWritablePropertyForKey:removeKey] == NO) {
+                [[containerClassDescription toManyRelationshipKeys] 
containsObject:removeKey] == NO) {
                 [self setScriptErrorNumber:NSArgumentsWrongScriptError];
                 [self setScriptErrorString:NSLocalizedString(@"Could not find 
container to remove from", @"Error description")];
+            } else if ([containerClassDescription 
hasWritablePropertyForKey:removeKey] == NO ||
+                       [removeClassDescription 
isKindOfClassDescription:[containerClassDescription 
classDescriptionForKey:removeKey]] == NO) {
+                [self setScriptErrorNumber:NSArgumentsWrongScriptError];
+                [self setScriptErrorString:NSLocalizedString(@"Invalid 
container to remove from", @"Error description")];
             } else {
-                NSScriptClassDescription *requiredClassDescription = 
[containerClassDescription classDescriptionForKey:removeKey];
-                
-                if ([removeClassDescription 
isKindOfClassDescription:requiredClassDescription] == NO) {
-                    [self setScriptErrorNumber:NSArgumentsWrongScriptError];
-                    [self setScriptErrorString:NSLocalizedString(@"Invalid 
container to remove from", @"Error description")];
-                } else {
-                    // remove using KVC, I don't know how to use scripting KVC 
as I don't know how to get the indexes in general
-                    [[removeContainer mutableArrayValueForKey:removeKey] 
removeObjectsInArray:removeObjects];
-                }
+                // remove using KVC, I don't know how to use scripting KVC as 
I don't know how to get the indexes in general
+                [[removeContainer mutableArrayValueForKey:removeKey] 
removeObjectsInArray:removeObjects];
             }
         }
     }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to