litesoft
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
117
118
119
120
121
122
123
124
|
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.core;
import java.util.*;
import org.litesoft.core.typeutils.*;
@SuppressWarnings({"UnusedDeclaration"})
public class ServerContext
{
private static final ThreadLocal<ServerContext> DATA = new ThreadLocal<ServerContext>();
/**
* Get the current Thread's (ThreadLocal) Server Context.
*
* @return the current Server Context
*
* @throws IllegalStateException if 'set' has not been called on this Thread.
*/
public static ServerContext get()
{
ServerContext zContext = DATA.get();
if ( zContext == null )
{
throw new IllegalStateException( "No Server Context for current Thread" );
}
return zContext;
}
/**
* Clear (or remove) the current Thread's (ThreadLocal) Server Context.
*/
public static void clear()
{
DATA.remove();
}
/**
* Set the current Thread's (ThreadLocal) Server Context to 'this'.
*/
public void set()
{
DATA.set( this );
}
private ContextID mContextID;
private ServerSession mServerSession;
public ServerContext( ContextID pContextID, ServerSession pServerSession )
{
Objects.assertNotNull( "ContextID", mContextID = pContextID );
Objects.assertNotNull( "ServerSession", mServerSession = pServerSession );
}
public ContextID getContextID()
{
return mContextID;
}
public ServerSession getServerSession()
{
return mServerSession;
}
private static final ServerStore TEMPLATE_ServerStore = new ServerStore();
public static ServerStore getTemplateServerStore()
{
return TEMPLATE_ServerStore;
}
private static final ServerStore MASTER_ServerStore = new ServerStore();
public static ServerStore getMasterServerStore()
{
return MASTER_ServerStore;
}
public ServerStore getServerStore()
{
synchronized ( SERVER_STORES )
{
ServerStore zServerStore = SERVER_STORES.get( mContextID );
if ( zServerStore == null )
{
SERVER_STORES.put( mContextID, zServerStore = new ServerStore( TEMPLATE_ServerStore ) );
}
return zServerStore;
}
}
public static void clearServerStore( ContextID pContextID )
{
if ( pContextID != null )
{
synchronized ( SERVER_STORES )
{
LLremoveServerStore( pContextID );
}
}
}
private static final Map<ContextID, ServerStore> SERVER_STORES = new HashMap<ContextID, ServerStore>();
public static void clearAllServerStores()
{
synchronized ( SERVER_STORES )
{
for ( ContextID zContextID : SERVER_STORES.keySet() )
{
LLremoveServerStore( zContextID );
}
}
}
private static void LLremoveServerStore( ContextID pContextID )
{
ServerStore zServerStore = SERVER_STORES.remove( pContextID );
if ( zServerStore != null )
{
zServerStore.dispose();
}
}
}
|