/*
Copyright (C) 2000-2005 SKYRIX Software AG
+ Copyright (C) 2006 Helge Hess
This file is part of SOPE.
@implementation WOApplication
-#if 1
+#if 1 // TODO: why is that? why isn't that set by a default?
static NSString *defaultCompRqHandlerClassName = @"OWViewRequestHandler";
#else
static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
pi = [NSProcessInfo processInfo];
env = [pi environment];
- if ([env objectForKey:@"GNUSTEP_SYSTEM_ROOT"] != nil) {
+ if ([[env objectForKey:@"GNUSTEP_SYSTEM_ROOT"] isNotNull]) {
isFlattened = [[[env objectForKey:@"GNUSTEP_FLATTENED"]
lowercaseString] isEqualToString:@"yes"];
}
- (id)initWithName:(NSString *)_name {
[WOApplication _initializeWOApp];
- if ((self = [super init])) {
+ if ((self = [super init]) != nil) {
NSUserDefaults *ud;
WORequestHandler *rh;
NSString *rk;
@"could not get loaded (permissions?)"];
}
rh = [[NSClassFromString(defaultCompRqHandlerClassName) alloc] init];
- if ([rk length] > 0 && (rh != nil))
+ if ([rk isNotEmpty] && [rh isNotNull])
[self registerRequestHandler:rh forKey:rk];
[rh release]; rh = nil;
rk = [WOApplication directActionRequestHandlerKey];
rh = [[NSClassFromString(@"WODirectActionRequestHandler") alloc] init];
- if ([rk length] > 0 && rh != nil)
+ if ([rk isNotEmpty] && [rh isNotNull])
[self registerRequestHandler:rh forKey:rk];
[rh release]; rh = nil;
if ((rh = [[NSClassFromString(@"WOResourceRequestHandler") alloc] init])) {
rk = [WOApplication resourceRequestHandlerKey];
- if ([rk length] > 0)
+ if ([rk isNotEmpty])
[self registerRequestHandler:rh forKey:rk];
[self registerRequestHandler:rh forKey:@"WebServerResources"];
#ifdef __APPLE__
WOSession *sn;
sn = [self createSessionForRequest:[_ctx request]];
- [_ctx setSession:sn];
+ [_ctx setNewSession:sn];
if ([sn respondsToSelector:@selector(prepare)]) {
#if DEBUG
/* first look into form values */
if ((sessionId = [_request formValueForKey:WORequestValueSessionID])!=nil) {
- if ([sessionId length] > 0)
+ if ([sessionId isNotEmpty])
return sessionId;
}
e = [(id)sessionId objectEnumerator];
while ((sessionId = [e nextObject]) != nil) {
- if ([sessionId length] > 0 && ![sessionId isEqual:@"nil"])
+ if ([sessionId isNotEmpty] && ![sessionId isEqual:@"nil"])
return sessionId;
}
}
else {
- if ([sessionId length] > 0 && ![sessionId isEqual:@"nil"])
+ if ([sessionId isNotEmpty] && ![sessionId isEqual:@"nil"])
return sessionId;
}
}
}
else {
session = [store restoreSessionWithID:_sid request:[_ctx request]];
- if (session) {
+ if ([session isNotNull]) {
[_ctx setSession:session];
[session _awakeWithContext:_ctx];
}
ud = [NSUserDefaults standardUserDefaults];
p = [ud stringForKey:@"WODefaultResourceManager"];
- rmClass = ([p length] == 0)
- ? [WOResourceManager class]
- : NSClassFromString(p);
+ rmClass = [p isNotEmpty]
+ ? NSClassFromString(p)
+ : [WOResourceManager class];
if (rmClass == Nil) {
[self errorWithFormat:
else {
WOComponent *page;
- if ((page = [_ctx page])) {
+ if ((page = [_ctx page]) != nil) {
WOContext_enterComponent(_ctx, page, nil);
[page takeValuesFromRequest:_req inContext:_ctx];
WOContext_leaveComponent(_ctx, page);
if ((rm = [[_ctx component] resourceManager]) == nil)
rm = [self resourceManager];
+ /* TODO:
+ * the following ignores the fact that the passed context may be different
+ * from that of WOApplication. During the course of template instantiation
+ * WOApplication's current context gets attached to page which is definitely
+ * wrong. We workaround this problem by using the private API of WOComponent
+ * to explicitly set it. However all accompanied methods should be
+ * extended to pass the correct context where needed.
+ */
page = [rm pageWithName:(_name != nil ? _name : @"Main")
languages:languages];
+ [page _setContext:_ctx];
[page ensureAwakeInContext:_ctx];
page = [page retain];
[r setHeader:@"text/html" forKey:@"content-type"];
[r setHeader:@"no-cache" forKey:@"cache-control"];
- if(rapidTurnAroundPath != nil) {
+ if (rapidTurnAroundPath != nil) {
NSURL *templateURL;
templateURL = [[_exc userInfo] objectForKey:@"templateURL"];
static BOOL lookedUpForEOEditingContextClass = NO;
if (!lookedUpForEOEditingContextClass) {
- eoEditingContextClass = NSClassFromString(@"EOEditingContext");
+ if ((eoEditingContextClass = NSClassFromString(@"EOEditingContext")) ==nil)
+ eoEditingContextClass = NSClassFromString(@"NSManagedObjectContext");
lookedUpForEOEditingContextClass = YES;
}
return eoEditingContextClass;