]> err.no Git - sope/blobdiff - sope-appserver/NGObjWeb/WOApplication.m
minor improvement to WOHttpAdaptor, bumped framework revisions
[sope] / sope-appserver / NGObjWeb / WOApplication.m
index 62933fc6121af80ddf7e20082f224e1df588086e..a79b58717900cf1707391d9b43ed17946974c167 100644 (file)
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2006      Helge Hess
 
   This file is part of SOPE.
 
@@ -61,7 +62,7 @@ static NSString *rapidTurnAroundPath = nil;
 
 @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";
@@ -192,7 +193,7 @@ 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"];
       }
@@ -248,7 +249,7 @@ static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
 - (id)initWithName:(NSString *)_name {
   [WOApplication _initializeWOApp];
   
-  if ((self = [super init])) {
+  if ((self = [super init]) != nil) {
     NSUserDefaults   *ud;
     WORequestHandler *rh;
     NSString *rk;
@@ -282,19 +283,19 @@ static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
              @"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__
@@ -502,7 +503,7 @@ static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
   WOSession *sn;
 
   sn = [self createSessionForRequest:[_ctx request]];
-  [_ctx setSession:sn];
+  [_ctx setNewSession:sn];
   
   if ([sn respondsToSelector:@selector(prepare)]) {
 #if DEBUG
@@ -526,7 +527,7 @@ static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
   
   /* first look into form values */
   if ((sessionId = [_request formValueForKey:WORequestValueSessionID])!=nil) {
-    if ([sessionId length] > 0)
+    if ([sessionId isNotEmpty])
       return sessionId;
   }
   
@@ -537,12 +538,12 @@ static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
       
       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;
     }
   }
@@ -599,7 +600,7 @@ static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
     }
     else {
       session = [store restoreSessionWithID:_sid request:[_ctx request]];
-      if (session) {
+      if ([session isNotNull]) {
         [_ctx setSession:session];
         [session _awakeWithContext:_ctx];
       }
@@ -829,9 +830,9 @@ static NSString *defaultCompRqHandlerClassName = @"WOComponentRequestHandler";
   
   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:
@@ -910,7 +911,7 @@ nbuckets, nindices, narrays, idxsize);
   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);
@@ -1068,8 +1069,17 @@ nbuckets, nindices, narrays, idxsize);
   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];
@@ -1194,7 +1204,7 @@ nbuckets, nindices, narrays, idxsize);
     
     [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"];
@@ -1278,7 +1288,8 @@ nbuckets, nindices, narrays, idxsize);
   static BOOL  lookedUpForEOEditingContextClass = NO;
   
   if (!lookedUpForEOEditingContextClass) {
-    eoEditingContextClass = NSClassFromString(@"EOEditingContext");
+    if ((eoEditingContextClass = NSClassFromString(@"EOEditingContext")) ==nil)
+      eoEditingContextClass = NSClassFromString(@"NSManagedObjectContext");
     lookedUpForEOEditingContextClass = YES;
   }
   return eoEditingContextClass;