@implementation WOApplication
+#if 1
+static NSString *defaultCompRqHandlerClassName = @"OWViewRequestHandler";
+#else
+static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
+#endif
+
+ (int)version {
return [super version] + 5 /* v6 */;
}
self->requestHandlerRegistry =
NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 8);
- rk = [WOApplication componentRequestHandlerKey];
-#if 1
- rh = [[NSClassFromString(@"OWViewRequestHandler") alloc] init];
-#else
- rh = [[NSClassFromString(@"WOComponentRequestHandler") alloc] init];
-#endif
+ if ((rk = [WOApplication componentRequestHandlerKey]) == nil) {
+ [self logWithFormat:
+ @"WARNING: no component request handler key is specified, "
+ @"this probably means that share/ngobjweb/Defaults.plist "
+ @"could not get loaded (permissions?)"];
+ }
+ rh = [[NSClassFromString(defaultCompRqHandlerClassName) alloc] init];
if ([rk length] > 0 && (rh != nil))
[self registerRequestHandler:rh forKey:rk];
[rh release]; rh = nil;
/* resources */
+- (void)_setupDefaultResourceManager {
+ NSUserDefaults *ud;
+ Class rmClass;
+ NSString *p;
+
+ ud = [NSUserDefaults standardUserDefaults];
+ p = [ud stringForKey:@"WODefaultResourceManager"];
+ rmClass = ([p length] == 0)
+ ? [WOResourceManager class]
+ : NSClassFromString(p);
+
+ if (rmClass == Nil) {
+ [self errorWithFormat:
+ @"failed to locate class of resource manager: '%@'", p];
+ return;
+ }
+
+ if ([rmClass instancesRespondToSelector:@selector(initWithPath:)])
+ self->resourceManager = [[rmClass alloc] init];
+ else {
+ self->resourceManager =
+ [(WOResourceManager *)[rmClass alloc] initWithPath:[self path]];
+ }
+}
+
- (void)setResourceManager:(WOResourceManager *)_manager {
ASSIGN(self->resourceManager, _manager);
}
- (WOResourceManager *)resourceManager {
- if (self->resourceManager == nil) {
- NSString *p;
-
-#if 0 && DEBUG
- if ([(p = [self path]) length] > 0)
- [self debugWithFormat:@"setup WOResourceManager at path '%@' ...", p];
-#else
- p = [self path];
-#endif
-
- self->resourceManager =
- [(WOResourceManager *)[WOResourceManager alloc] initWithPath:p];
- }
+ if (self->resourceManager == nil)
+ [self _setupDefaultResourceManager];
+
return self->resourceManager;
}