2002-10-12 Manuel Guesdon <mguesdon@orange-concept.com>

o added -templateParserTypeForResourcesNamed:
		o added ivar _templateParserTypeCache
		o change +templateNamed:... call


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@14736 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Manuel Guesdon 2002-10-12 11:25:06 +00:00
parent 25cec67d33
commit d11da395ee
2 changed files with 62 additions and 9 deletions

View file

@ -42,6 +42,7 @@
NSMutableDictionary* _archiveCache; NSMutableDictionary* _archiveCache;
NSMutableDictionary* _apiCache;//NDFN NSMutableDictionary* _apiCache;//NDFN
NSMutableDictionary* _encodingCache; NSMutableDictionary* _encodingCache;
NSMutableDictionary* _templateParserTypeCache;//NDFN
NSMutableDictionary* _pathCache; NSMutableDictionary* _pathCache;
NSMutableDictionary* _urlCache; NSMutableDictionary* _urlCache;
NSMutableDictionary* _stringsTableCache; NSMutableDictionary* _stringsTableCache;
@ -133,6 +134,8 @@
-(NSStringEncoding)encodingForResourcesNamed:(NSString*)aName; -(NSStringEncoding)encodingForResourcesNamed:(NSString*)aName;
-(GSWTemplateParserType)templateParserTypeForResourcesNamed:(NSString*)aName;//NDFN
-(NSDictionary*)archiveNamed:(NSString*)aName; -(NSDictionary*)archiveNamed:(NSString*)aName;
-(NSDictionary*)apiNamed:(NSString*)aName;//NDFN -(NSDictionary*)apiNamed:(NSString*)aName;//NDFN

View file

@ -101,6 +101,7 @@ objectForReference:(NSString*)keyPath
_archiveCache=[NSMutableDictionary new]; _archiveCache=[NSMutableDictionary new];
_apiCache=[NSMutableDictionary new]; _apiCache=[NSMutableDictionary new];
_encodingCache=[NSMutableDictionary new]; _encodingCache=[NSMutableDictionary new];
_templateParserTypeCache=[NSMutableDictionary new];
_pathCache=[NSMutableDictionary new]; _pathCache=[NSMutableDictionary new];
_urlCache=[NSMutableDictionary new]; _urlCache=[NSMutableDictionary new];
_stringsTableCache=[NSMutableDictionary new]; _stringsTableCache=[NSMutableDictionary new];
@ -127,6 +128,8 @@ objectForReference:(NSString*)keyPath
DESTROY(_apiCache); DESTROY(_apiCache);
GSWLogC("Dealloc GSWBundle: encodingCache"); GSWLogC("Dealloc GSWBundle: encodingCache");
DESTROY(_encodingCache); DESTROY(_encodingCache);
GSWLogC("Dealloc GSWBundle: templateParserTypeCache");
DESTROY(_templateParserTypeCache);
GSWLogC("Dealloc GSWBundle: pathCache"); GSWLogC("Dealloc GSWBundle: pathCache");
DESTROY(_pathCache); DESTROY(_pathCache);
GSWLogC("Dealloc GSWBundle: urlCache"); GSWLogC("Dealloc GSWBundle: urlCache");
@ -579,6 +582,7 @@ objectForReference:(NSString*)keyPath
} }
else else
{ {
GSWTemplateParserType templateParserType=[self templateParserTypeForResourcesNamed:aName];
NSStringEncoding encoding=[self encodingForResourcesNamed:aName]; NSStringEncoding encoding=[self encodingForResourcesNamed:aName];
NSString* pageDefString=nil; NSString* pageDefString=nil;
//TODO use encoding ! //TODO use encoding !
@ -626,15 +630,16 @@ objectForReference:(NSString*)keyPath
{ {
NSDebugMLLog(@"bundles",@"GSWTemplateParser on template named %@", NSDebugMLLog(@"bundles",@"GSWTemplateParser on template named %@",
aName); aName);
template=[GSWTemplateParserXML templateNamed:aName template=[GSWTemplateParser templateNamed:aName
inFrameworkNamed:[self frameworkName] inFrameworkNamed:[self frameworkName]
withParserClassName:nil withParserType:templateParserType
withString:htmlString parserClassName:nil
encoding:encoding withString:htmlString
fromPath:absoluteTemplatePath encoding:encoding
definitionsString:pageDefString fromPath:absoluteTemplatePath
languages:someLanguages definitionsString:pageDefString
definitionPath:absoluteDefinitionPath]; languages:someLanguages
definitionPath:absoluteDefinitionPath];
} }
#ifndef NDEBUG #ifndef NDEBUG
NS_HANDLER NS_HANDLER
@ -969,6 +974,51 @@ objectForReference:(NSString*)keyPath
return encoding; return encoding;
}; };
//--------------------------------------------------------------------
-(GSWTemplateParserType)templateParserTypeForResourcesNamed:(NSString*)aName
{
NSDictionary* archive=nil;
GSWTemplateParserType templateParserType=GSWTemplateParserType_Default;
id templateParserTypeObject=nil;
LOGObjectFnStart();
[self lock];
NS_DURING
{
NSDebugMLLog(@"bundles",@"aName=%@",aName);
NSDebugMLLog(@"bundles",@"templateParserTypeCache=%@",_templateParserTypeCache);
NSDebugMLLog(@"bundles",@"archiveCache=%@",_archiveCache);
templateParserTypeObject=[_templateParserTypeCache objectForKey:aName];
if (!templateParserTypeObject)
{
archive=[self archiveNamed:aName];
if (archive)
{
templateParserTypeObject=[archive objectForKey:@"templateParserType"];
if (templateParserTypeObject)
{
templateParserTypeObject=[NSNumber valueWithInt:[GSWTemplateParser templateParserTypeFromString:templateParserTypeObject]];
[_templateParserTypeCache setObject:templateParserTypeObject
forKey:aName];
};
};
};
if (templateParserTypeObject)
templateParserType=[templateParserTypeObject intValue];
}
NS_HANDLER
{
NSDebugMLLog(@"bundles",@"EXCEPTION:%@ (%@) [%s %d]",
localException,[localException reason],__FILE__,__LINE__);
//TODO
[self unlock];
[localException raise];
};
NS_ENDHANDLER;
[self unlock];
LOGObjectFnStop();
return templateParserType;
};
//-------------------------------------------------------------------- //--------------------------------------------------------------------
-(NSDictionary*)archiveNamed:(NSString*)aName -(NSDictionary*)archiveNamed:(NSString*)aName
{ {