-
Notifications
You must be signed in to change notification settings - Fork 2
/
XMPPStanzaFactory.m
116 lines (106 loc) · 2.75 KB
/
XMPPStanzaFactory.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//
// XMPPStanzaFactory.m
// Jabber
//
// Created by David Chisnall on 24/05/2006.
// Copyright 2006 __MyCompanyName__. All rights reserved.
//
#import "XMPPStanzaFactory.h"
#import <EtoileXML/ETXMLNullHandler.h>
#import <EtoileFoundation/EtoileFoundation.h>
@implementation XMPPStanzaFactory
+ (id) sharedStazaFactory
{
return nil;
}
- (id) init
{
SUPERINIT;
tagHandlers = [[NSMutableDictionary alloc] init];
namespacedTagHandlers = [[NSMutableDictionary alloc] init];
tagValues = [[NSMutableDictionary alloc] init];
namespacedTagValues = [[NSMutableDictionary alloc] init];
return self;
}
- (void) addHandler:(Class)aHandler withValue:(NSString*)aValue forTag:(NSString*)aTag
{
[self addHandler:aHandler forTag:aTag];
[self addValue:aValue forTag:aTag];
}
- (void) addHandler:(Class)aHandler withValue:(NSString*)aValue forTag:(NSString*)aTag inNamespace:(NSString*)aNamespace
{
[self addHandler:aHandler forTag:aTag inNamespace:aNamespace];
[self addValue:aValue forTag:aTag inNamespace:aNamespace];
}
- (void) addHandler:(Class)aHandler forTag:(NSString*)aTag
{
[tagHandlers setObject:aHandler forKey:aTag];
}
- (void) addHandler:(Class)aHandler forTag:(NSString*)aTag inNamespace:(NSString*)aNamespace
{
NSMutableDictionary * handlers = [namespacedTagHandlers objectForKey:aTag];
if(handlers == nil)
{
handlers = [NSMutableDictionary dictionary];
}
[handlers setObject:aHandler forKey:aNamespace];
[namespacedTagHandlers setObject:handlers forKey:aTag];
}
- (void) addValue:(NSString*)aValue forTag:(NSString*)aTag
{
[tagValues setObject:aValue forKey:aTag];
}
- (void) addValue:(NSString*)aValue forTag:(NSString*)aTag inNamespace:(NSString*)aNamespace
{
NSMutableDictionary * values = [namespacedTagValues objectForKey:aTag];
if(values == nil)
{
values = [NSMutableDictionary dictionary];
}
[values setObject:aValue forKey:aNamespace];
[namespacedTagValues setObject:values forKey:aTag];
}
- (id) parser
{
return nil;
}
- (Class) handlerForTag:(NSString*)aTag
{
return [tagHandlers objectForKey:aTag];
}
- (Class) handlerForTag:(NSString*)aTag inNamespace:(NSString*)aNamespace
{
Class handler = [[namespacedTagHandlers objectForKey:aTag] objectForKey:aNamespace];
if(handler == Nil)
{
handler = [tagHandlers objectForKey:aTag];
}
if(handler == Nil)
{
handler = [ETXMLNullHandler class];
}
return handler;
}
- (NSString*) valueForTag:(NSString*)aTag
{
NSString * value = [tagValues objectForKey:aTag];
if(value != nil)
{
return value;
}
return aTag;
}
- (NSString*) valueForTag:(NSString*)aTag inNamespace:(NSString*)aNamespace
{
NSString * value = [[namespacedTagValues objectForKey:aTag] objectForKey:aNamespace];
if(value == nil)
{
value = [tagValues objectForKey:aTag];
}
if(value == nil)
{
value = aTag;
}
return value;
}
@end