Skip to content

Commit 102a343

Browse files
committed
Deprecating the defaultX properties in YapDatabase, in favor of the new(ish) YapDatabaseConnectionConfig class.
1 parent 05a3bbf commit 102a343

File tree

6 files changed

+99
-152
lines changed

6 files changed

+99
-152
lines changed

YapDatabase/Internal/YapDatabasePrivate.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,6 @@ static NSString *const ext_key_class = @"class";
111111
+ (NSArray *)columnNamesForTable:(NSString *)tableName using:(sqlite3 *)aDb;
112112
+ (NSDictionary *)columnNamesAndAffinityForTable:(NSString *)tableName using:(sqlite3 *)aDb;
113113

114-
/**
115-
* New connections inherit their default values from this structure.
116-
**/
117-
- (YapDatabaseConnectionConfig *)connectionDefaults;
118-
119114
/**
120115
* Called from YapDatabaseConnection's dealloc method to remove connection's state from connectionStates array.
121116
**/

YapDatabase/Utilities/YapDatabaseConnectionConfig.h

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,32 @@
88
*
99
* Of course, the connection may then override these default configuration values, and configure itself as needed.
1010
*
11-
* @see YapDatabase defaultObjectCacheEnabled
12-
* @see YapDatabase defaultObjectCacheLimit
11+
* For more detailed documentation on these properties, see the YapDatabaseConnection header file.
12+
*
13+
* @see YapDatabaseConnection objectCacheEnabled
14+
* @see YapDatabaseConnection objectCacheLimit
1315
*
14-
* @see YapDatabase defaultMetadataCacheEnabled
15-
* @see YapDatabase defaultMetadataCacheLimit
16+
* @see YapDatabaseConnection metadataCacheEnabled
17+
* @see YapDatabaseConnection metadataCacheLimit
1618
*
17-
* @see YapDatabase defaultObjectPolicy
18-
* @see YapDatabase defaultMetadataPolicy
19+
* @see YapDatabaseConnection objectPolicy
20+
* @see YapDatabaseConnection metadataPolicy
1921
*
20-
* @see YapDatabase defaultAutoFlushMemoryLevel
22+
* @see YapDatabaseConnection autoFlushMemoryLevel
2123
**/
2224
@interface YapDatabaseConnectionConfig : NSObject <NSCopying>
2325

24-
@property (nonatomic, assign, readwrite) BOOL objectCacheEnabled;
25-
@property (nonatomic, assign, readwrite) NSUInteger objectCacheLimit;
26+
@property (atomic, assign, readwrite) BOOL objectCacheEnabled;
27+
@property (atomic, assign, readwrite) NSUInteger objectCacheLimit;
2628

27-
@property (nonatomic, assign, readwrite) BOOL metadataCacheEnabled;
28-
@property (nonatomic, assign, readwrite) NSUInteger metadataCacheLimit;
29+
@property (atomic, assign, readwrite) BOOL metadataCacheEnabled;
30+
@property (atomic, assign, readwrite) NSUInteger metadataCacheLimit;
2931

30-
@property (nonatomic, assign, readwrite) YapDatabasePolicy objectPolicy;
31-
@property (nonatomic, assign, readwrite) YapDatabasePolicy metadataPolicy;
32+
@property (atomic, assign, readwrite) YapDatabasePolicy objectPolicy;
33+
@property (atomic, assign, readwrite) YapDatabasePolicy metadataPolicy;
3234

3335
#if TARGET_OS_IOS || TARGET_OS_TV
34-
@property (nonatomic, assign, readwrite) YapDatabaseConnectionFlushMemoryFlags autoFlushMemoryFlags;
36+
@property (atomic, assign, readwrite) YapDatabaseConnectionFlushMemoryFlags autoFlushMemoryFlags;
3537
#endif
3638

3739
@end

YapDatabase/Utilities/YapDatabaseConnectionConfig.m

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -43,44 +43,66 @@ - (id)copyWithZone:(NSZone __unused *)zone
4343
{
4444
YapDatabaseConnectionConfig *copy = [[[self class] alloc] init];
4545

46-
copy->objectCacheEnabled = objectCacheEnabled;
47-
copy->objectCacheLimit = objectCacheLimit;
46+
copy->objectCacheEnabled = self.objectCacheEnabled;
47+
copy->objectCacheLimit = self.objectCacheLimit;
4848

49-
copy->metadataCacheEnabled = metadataCacheEnabled;
50-
copy->metadataCacheLimit = metadataCacheLimit;
49+
copy->metadataCacheEnabled = self.metadataCacheEnabled;
50+
copy->metadataCacheLimit = self.metadataCacheLimit;
5151

52-
copy->objectPolicy = objectPolicy;
53-
copy->metadataPolicy = metadataPolicy;
52+
copy->objectPolicy = self.objectPolicy;
53+
copy->metadataPolicy = self.metadataPolicy;
5454

5555
#if TARGET_OS_IOS || TARGET_OS_TV
56-
copy->autoFlushMemoryFlags = autoFlushMemoryFlags;
56+
copy->autoFlushMemoryFlags = self.autoFlushMemoryFlags;
5757
#endif
5858

5959
return copy;
6060
}
6161

62-
- (void)setObjectPolicy:(YapDatabasePolicy)newObjectPolicy
62+
- (BOOL)validateObjectPolicy:(id *)ioValue error:(NSError * __autoreleasing *)outError
6363
{
64-
// sanity check
65-
switch (newObjectPolicy)
64+
const YapDatabasePolicy defaultPolicy = YapDatabasePolicyContainment;
65+
66+
if (*ioValue == nil)
67+
{
68+
*ioValue = @(defaultPolicy);
69+
}
70+
else
6671
{
67-
case YapDatabasePolicyContainment :
68-
case YapDatabasePolicyShare :
69-
case YapDatabasePolicyCopy : objectPolicy = newObjectPolicy; break;
70-
default : objectPolicy = YapDatabasePolicyContainment; // revert to default
72+
YapDatabasePolicy policy = (YapDatabasePolicy)[*ioValue integerValue];
73+
switch (policy)
74+
{
75+
case YapDatabasePolicyContainment :
76+
case YapDatabasePolicyShare :
77+
case YapDatabasePolicyCopy : break;
78+
default : *ioValue = @(defaultPolicy);
79+
}
7180
}
81+
82+
return YES;
7283
}
7384

74-
- (void)setMetadataPolicy:(YapDatabasePolicy)newMetadataPolicy
85+
- (BOOL)validateMetadataPolicy:(id *)ioValue error:(NSError * __autoreleasing *)outError
7586
{
76-
// sanity check
77-
switch (newMetadataPolicy)
87+
const YapDatabasePolicy defaultPolicy = YapDatabasePolicyContainment;
88+
89+
if (*ioValue == nil)
90+
{
91+
*ioValue = @(defaultPolicy);
92+
}
93+
else
7894
{
79-
case YapDatabasePolicyContainment :
80-
case YapDatabasePolicyShare :
81-
case YapDatabasePolicyCopy : metadataPolicy = newMetadataPolicy; break;
82-
default : metadataPolicy = YapDatabasePolicyContainment; // revert to default
95+
YapDatabasePolicy policy = (YapDatabasePolicy)[*ioValue integerValue];
96+
switch (policy)
97+
{
98+
case YapDatabasePolicyContainment :
99+
case YapDatabasePolicyShare :
100+
case YapDatabasePolicyCopy : break;
101+
default : *ioValue = @(defaultPolicy);
102+
}
83103
}
104+
105+
return YES;
84106
}
85107

86108
@end

YapDatabase/YapDatabase.h

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,18 @@ extern NSString *const YapDatabaseModifiedExternallyKey;
417417
#pragma mark Defaults
418418
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
419419

420+
/**
421+
* Allows you to configure the default values for new connections.
422+
*
423+
* When you create a connection via [database newConnection], that new connection will inherit
424+
* its initial configuration via the default values configured for the parent database.
425+
* Of course, the connection may then override these default configuration values, and configure itself as needed.
426+
*
427+
* Changing the default values only affects future connections that will be created.
428+
* It does not affect connections that have already been created.
429+
**/
430+
@property (atomic, readonly) YapDatabaseConnectionConfig *connectionDefaults;
431+
420432
/**
421433
* Allows you to set the default objectCacheEnabled and objectCacheLimit for all new connections.
422434
*
@@ -430,12 +442,10 @@ extern NSString *const YapDatabaseModifiedExternallyKey;
430442
* The default defaultObjectCacheEnabled is YES.
431443
* The default defaultObjectCacheLimit is 250.
432444
*
433-
* For more detailed documentation on these properties, see the YapDatabaseConnection header file.
434-
* @see YapDatabaseConnection objectCacheEnabled
435-
* @see YapDatabaseConnection objectCacheLimit
445+
* @deprecated Use `connectionDefaults` property instead.
436446
**/
437-
@property (atomic, assign, readwrite) BOOL defaultObjectCacheEnabled;
438-
@property (atomic, assign, readwrite) NSUInteger defaultObjectCacheLimit;
447+
@property (atomic, assign, readwrite) BOOL defaultObjectCacheEnabled __attribute((deprecated));
448+
@property (atomic, assign, readwrite) NSUInteger defaultObjectCacheLimit __attribute((deprecated));
439449

440450
/**
441451
* Allows you to set the default metadataCacheEnabled and metadataCacheLimit for all new connections.
@@ -450,12 +460,10 @@ extern NSString *const YapDatabaseModifiedExternallyKey;
450460
* The default defaultMetadataCacheEnabled is YES.
451461
* The default defaultMetadataCacheLimit is 500.
452462
*
453-
* For more detailed documentation on these properties, see the YapDatabaseConnection header file.
454-
* @see YapDatabaseConnection metadataCacheEnabled
455-
* @see YapDatabaseConnection metadataCacheLimit
463+
* @deprecated Use `connectionDefaults` property instead.
456464
**/
457-
@property (atomic, assign, readwrite) BOOL defaultMetadataCacheEnabled;
458-
@property (atomic, assign, readwrite) NSUInteger defaultMetadataCacheLimit;
465+
@property (atomic, assign, readwrite) BOOL defaultMetadataCacheEnabled __attribute((deprecated));
466+
@property (atomic, assign, readwrite) NSUInteger defaultMetadataCacheLimit __attribute((deprecated));
459467

460468
/**
461469
* Allows you to set the default objectPolicy and metadataPolicy for all new connections.
@@ -469,13 +477,11 @@ extern NSString *const YapDatabaseModifiedExternallyKey;
469477
*
470478
* The default defaultObjectPolicy is YapDatabasePolicyContainment.
471479
* The default defaultMetadataPolicy is YapDatabasePolicyContainment.
472-
*
473-
* For more detailed documentation on these properties, see the YapDatabaseConnection header file.
474-
* @see YapDatabaseConnection objectPolicy
475-
* @see YapDatabaseConnection metadataPolicy
480+
*
481+
* @deprecated Use `connectionDefaults` property instead.
476482
**/
477-
@property (atomic, assign, readwrite) YapDatabasePolicy defaultObjectPolicy;
478-
@property (atomic, assign, readwrite) YapDatabasePolicy defaultMetadataPolicy;
483+
@property (atomic, assign, readwrite) YapDatabasePolicy defaultObjectPolicy __attribute((deprecated));
484+
@property (atomic, assign, readwrite) YapDatabasePolicy defaultMetadataPolicy __attribute((deprecated));
479485

480486
#if TARGET_OS_IOS || TARGET_OS_TV
481487
/**
@@ -490,10 +496,9 @@ extern NSString *const YapDatabaseModifiedExternallyKey;
490496
*
491497
* The default defaultAutoFlushMemoryFlags is YapDatabaseConnectionFlushMemoryFlags_All.
492498
*
493-
* For more detailed documentation on these properties, see the YapDatabaseConnection header file.
494-
* @see YapDatabaseConnection autoFlushMemoryFlags
499+
* @deprecated Use `connectionDefaults` property instead.
495500
**/
496-
@property (atomic, assign, readwrite) YapDatabaseConnectionFlushMemoryFlags defaultAutoFlushMemoryFlags;
501+
@property (atomic, assign, readwrite) YapDatabaseConnectionFlushMemoryFlags defaultAutoFlushMemoryFlags __attribute((deprecated));
497502
#endif
498503

499504
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)