Subversion Repository Public Repository

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
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.GWT.server;

import org.litesoft.bo.views.caching.*;
import org.litesoft.core.*;

import javax.servlet.http.*;
import java.io.*;

public class ServletSessionHelper {
    public static ContextID callInit( HttpSession pHttpSession ) {
        ContextID zContextID = getContextID( pHttpSession );
        new RequestContext( zContextID, new OurServerSession( pHttpSession ) ).set();
        return zContextID;
    }

    public static void callFini() {
        RequestContext.clear();
    }

    public static void chkInitialized() {
        if ( sCacheManager == null ) {
            throw new IllegalStateException( "App Not Initialized" );
        }
    }

    public static void initialize( VoCacheManager pCacheManager ) {
        sCacheManager = (pCacheManager != null) ? pCacheManager : VoCacheManager.NULL;
    }

    private static volatile VoCacheManager sCacheManager = null; // In Theory this should be non-static, but the UserID needs to access it!

    public static VoCacheManager getCacheManager() {
        return sCacheManager;
    }

    @SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter"})
    private static ContextID getContextID( HttpSession pHttpSession ) {
        WrapperForContextID zWrapper;
        synchronized ( pHttpSession ) {
            if ( null == (zWrapper = (WrapperForContextID) pHttpSession.getAttribute( WrapperForContextID.SESSION_KEY )) ) {
                pHttpSession.setAttribute( WrapperForContextID.SESSION_KEY, //
                                           zWrapper = new WrapperForContextID( new ContextID( "HttpSession", pHttpSession.getId() ) ) );
            }
        }
        return zWrapper.getContextID();
    }

    private static final class WrapperForContextID implements Serializable,
                                                              HttpSessionBindingListener {
        private static final long serialVersionUID = 1L;

        public static final String SESSION_KEY = WrapperForContextID.class.getName();

        private ContextID mContextID;

        private WrapperForContextID( ContextID pContextID ) {
            mContextID = pContextID;
        }

        public ContextID getContextID() {
            return mContextID;
        }

        @Override
        public void valueBound( HttpSessionBindingEvent event ) {
        }

        @Override
        public void valueUnbound( HttpSessionBindingEvent event ) {
            ServerStores.clear( mContextID );
            VoCacheManager zCacheManager = sCacheManager;
            if ( zCacheManager != null ) {
                zCacheManager.drop( mContextID );
            }
        }
    }

    private static class OurServerSession extends ServerSession {
        private final HttpSession mSession;

        private OurServerSession( HttpSession pSession ) {
            mSession = pSession;
        }

        @Override
        protected Serializable LLgetAttribute( String pName ) {
            return (Serializable) mSession.getAttribute( pName );
        }

        @Override
        protected void LLsetAttribute( String pName, Serializable pInstance ) {
            mSession.setAttribute( pName, pInstance );
        }

        @Override
        protected void LLremoveAttribute( String pName ) {
            mSession.removeAttribute( pName );
        }
    }
}

Commits for litesoft/trunk/Java/GWT/Server/src/org/litesoft/GWT/server/ServletSessionHelper.java

Diff revisions: vs.
Revision Author Commited Message
955 Diff Diff GeorgeS picture GeorgeS Sun 22 Jun, 2014 18:11:25 +0000

Add Instance...

953 Diff Diff GeorgeS picture GeorgeS Fri 20 Jun, 2014 23:12:43 +0000

Drop Nas-Video.
Normalize the SecurityPOs.

950 Diff Diff GeorgeS picture GeorgeS Thu 19 Jun, 2014 17:57:04 +0000

New Lines

948 Diff Diff GeorgeS picture GeorgeS Sat 07 Jun, 2014 23:42:39 +0000

Jusefuls Formatter Updated to New Code Format

947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

849 Diff Diff GeorgeS picture GeorgeS Tue 11 Sep, 2012 17:11:59 +0000

Clean up serialization

49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

47 Diff Diff GeorgeS picture GeorgeS Tue 30 Mar, 2010 02:29:07 +0000
25 Diff Diff GeorgeS picture GeorgeS Mon 01 Mar, 2010 14:09:51 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000