Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/Java/GWT/OldServer/src/org/litesoft/GWT/eventbus/server/nonpublic/ServerEventBusSessionMapper.java

Diff revisions: vs.
  @@ -1,112 +1,112 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.GWT.eventbus.server.nonpublic;
3 -
4 - import org.litesoft.GWT.eventbus.server.*;
5 - import org.litesoft.logger.*;
6 -
7 - import javax.servlet.http.*;
8 -
9 - public class ServerEventBusSessionMapper {
10 - private static final Logger LOGGER = LoggerFactory.getLogger( ServerEventBusSessionMapper.class );
11 -
12 - private static void addServletBrowserData( HttpServletRequest pRequest, ServerEventBus pServerEventBus ) {
13 - if ( pServerEventBus instanceof NonTemporaryServerEventBus ) {
14 - pServerEventBus.setClientWindowInstanceData( ServerEventBus.TRANSLATED_PATH,
15 - pRequest.getPathTranslated() );
16 - pServerEventBus.setClientWindowInstanceData( ServerEventBus.REMOTE_ADDR,
17 - pRequest.getRemoteAddr() );
18 - }
19 - }
20 -
21 - public static ServerEventBus getServerEventBus( HttpServletRequest pRequest,
22 - ThreadLocalContextFactory pThreadLocalContextFactory,
23 - int pClientIdNumber )
24 - throws InvalidSessionException {
25 - ServerEventBus zServerEventBus = ServerEventBusManager.INSTANCE.getServerEventBus( pClientIdNumber );
26 - if ( null != zServerEventBus ) {
27 - if ( !verifyRelatedBusCommonObject( pRequest, pThreadLocalContextFactory, zServerEventBus ) ) {
28 - String zProblem = "Cross Session Request for ClientID '" + pClientIdNumber + "' from '" +
29 - pRequest.getRemoteUser() + "' at: " + pRequest.getRemoteAddr();
30 - LOGGER.warn.log( zProblem );
31 - throw new InvalidSessionException( zProblem );
32 - }
33 - // getRelatedBusCommonObject() == null passes
34 - }
35 - return zServerEventBus;
36 - }
37 -
38 - private static synchronized boolean verifyRelatedBusCommonObject( HttpServletRequest pRequest,
39 - ThreadLocalContextFactory pThreadLocalContextFactory,
40 - ServerEventBus pServerEventBus ) {
41 - Object zRelatedBusCommonObject = pServerEventBus.getRelatedBusCommonObject();
42 - return (zRelatedBusCommonObject == null) ||
43 - (zRelatedBusCommonObject == getSessionTracker( pRequest, pThreadLocalContextFactory ));
44 - }
45 -
46 - private static final String SERVER_EVENT_BUSES = "ServerEventBuses";
47 -
48 - public static synchronized Integer[] getSessionServerEventBusClientIdNumbers( HttpServletRequest pRequest,
49 - ThreadLocalContextFactory pThreadLocalContextFactory ) {
50 - return getSessionTracker( pRequest, pThreadLocalContextFactory ).getClientIdNumbers();
51 - }
52 -
53 - private static synchronized SEBSessionTracker getSessionTracker( HttpServletRequest pRequest,
54 - ThreadLocalContextFactory pThreadLocalContextFactory ) {
55 - HttpSession session = pRequest.getSession();
56 - SEBSessionTracker tracker = (SEBSessionTracker) session.getAttribute( SERVER_EVENT_BUSES );
57 - if ( tracker == null ) {
58 - session.setAttribute( SERVER_EVENT_BUSES,
59 - tracker = new SEBSessionTracker( pThreadLocalContextFactory ) );
60 - }
61 - return tracker;
62 - }
63 -
64 - public static void addServerEventBus( ServerEventBus pParent, ServerEventBus pServerEventBus ) {
65 - // Force use of same stuff
66 - SEBSessionTracker tracker = (SEBSessionTracker) pParent.getRelatedBusCommonObject();
67 -
68 - pServerEventBus.setRelatedBusCommonObject( tracker );
69 - tracker.addServerEventBus( pServerEventBus );
70 - }
71 -
72 - public static void addServerEventBus( HttpServletRequest pRequest,
73 - ThreadLocalContextFactory pThreadLocalContextFactory,
74 - ServerEventBus pServerEventBus ) {
75 - SEBSessionTracker tracker = getSessionTracker( pRequest, pThreadLocalContextFactory );
76 - addServletBrowserData( pRequest, pServerEventBus );
77 -
78 - pServerEventBus.setRelatedBusCommonObject( tracker );
79 - tracker.addServerEventBus( pServerEventBus );
80 - }
81 -
82 - public static SEBSessionTracker addTrackerToServerEventBus( HttpServletRequest pRequest,
83 - ThreadLocalContextFactory pThreadLocalContextFactory,
84 - ServerEventBus pServerEventBus ) {
85 - SEBSessionTracker tracker = getSessionTracker( pRequest, pThreadLocalContextFactory );
86 - addServletBrowserData( pRequest, pServerEventBus );
87 - pServerEventBus.setRelatedBusCommonObject( tracker );
88 - return tracker;
89 - }
90 -
91 - public static String getLogoutMessage( HttpServletRequest pRequest,
92 - ThreadLocalContextFactory pThreadLocalContextFactory ) {
93 - return getSessionTracker( pRequest, pThreadLocalContextFactory ).getLogoutMessage();
94 - }
95 -
96 - public static void setLogoutMessage( HttpServletRequest pRequest,
97 - ThreadLocalContextFactory pThreadLocalContextFactory,
98 - String pLogoutMessage ) {
99 - getSessionTracker( pRequest, pThreadLocalContextFactory ).setLogoutMessage( pLogoutMessage );
100 - }
101 -
102 - public static boolean anyServerEventBusesFor( HttpServletRequest pRequest,
103 - ThreadLocalContextFactory pThreadLocalContextFactory ) {
104 - return getSessionTracker( pRequest, pThreadLocalContextFactory ).anyServerEventBuses();
105 - }
106 -
107 - public static void dropAllServerEventBusesFor( HttpServletRequest pRequest,
108 - ThreadLocalContextFactory pThreadLocalContextFactory,
109 - String pWhy ) {
110 - getSessionTracker( pRequest, pThreadLocalContextFactory ).dropAllServerEventBuses( pWhy );
111 - }
112 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.GWT.eventbus.server.nonpublic;
3 +
4 + import org.litesoft.GWT.eventbus.server.*;
5 + import org.litesoft.logger.*;
6 +
7 + import javax.servlet.http.*;
8 +
9 + public class ServerEventBusSessionMapper {
10 + private static final Logger LOGGER = LoggerFactory.getLogger( ServerEventBusSessionMapper.class );
11 +
12 + private static void addServletBrowserData( HttpServletRequest pRequest, ServerEventBus pServerEventBus ) {
13 + if ( pServerEventBus instanceof NonTemporaryServerEventBus ) {
14 + pServerEventBus.setClientWindowInstanceData( ServerEventBus.TRANSLATED_PATH,
15 + pRequest.getPathTranslated() );
16 + pServerEventBus.setClientWindowInstanceData( ServerEventBus.REMOTE_ADDR,
17 + pRequest.getRemoteAddr() );
18 + }
19 + }
20 +
21 + public static ServerEventBus getServerEventBus( HttpServletRequest pRequest,
22 + ThreadLocalContextFactory pThreadLocalContextFactory,
23 + int pClientIdNumber )
24 + throws InvalidSessionException {
25 + ServerEventBus zServerEventBus = ServerEventBusManager.INSTANCE.getServerEventBus( pClientIdNumber );
26 + if ( null != zServerEventBus ) {
27 + if ( !verifyRelatedBusCommonObject( pRequest, pThreadLocalContextFactory, zServerEventBus ) ) {
28 + String zProblem = "Cross Session Request for ClientID '" + pClientIdNumber + "' from '" +
29 + pRequest.getRemoteUser() + "' at: " + pRequest.getRemoteAddr();
30 + LOGGER.warn.log( zProblem );
31 + throw new InvalidSessionException( zProblem );
32 + }
33 + // getRelatedBusCommonObject() == null passes
34 + }
35 + return zServerEventBus;
36 + }
37 +
38 + private static synchronized boolean verifyRelatedBusCommonObject( HttpServletRequest pRequest,
39 + ThreadLocalContextFactory pThreadLocalContextFactory,
40 + ServerEventBus pServerEventBus ) {
41 + Object zRelatedBusCommonObject = pServerEventBus.getRelatedBusCommonObject();
42 + return (zRelatedBusCommonObject == null) ||
43 + (zRelatedBusCommonObject == getSessionTracker( pRequest, pThreadLocalContextFactory ));
44 + }
45 +
46 + private static final String SERVER_EVENT_BUSES = "ServerEventBuses";
47 +
48 + public static synchronized Integer[] getSessionServerEventBusClientIdNumbers( HttpServletRequest pRequest,
49 + ThreadLocalContextFactory pThreadLocalContextFactory ) {
50 + return getSessionTracker( pRequest, pThreadLocalContextFactory ).getClientIdNumbers();
51 + }
52 +
53 + private static synchronized SEBSessionTracker getSessionTracker( HttpServletRequest pRequest,
54 + ThreadLocalContextFactory pThreadLocalContextFactory ) {
55 + HttpSession session = pRequest.getSession();
56 + SEBSessionTracker tracker = (SEBSessionTracker) session.getAttribute( SERVER_EVENT_BUSES );
57 + if ( tracker == null ) {
58 + session.setAttribute( SERVER_EVENT_BUSES,
59 + tracker = new SEBSessionTracker( pThreadLocalContextFactory ) );
60 + }
61 + return tracker;
62 + }
63 +
64 + public static void addServerEventBus( ServerEventBus pParent, ServerEventBus pServerEventBus ) {
65 + // Force use of same stuff
66 + SEBSessionTracker tracker = (SEBSessionTracker) pParent.getRelatedBusCommonObject();
67 +
68 + pServerEventBus.setRelatedBusCommonObject( tracker );
69 + tracker.addServerEventBus( pServerEventBus );
70 + }
71 +
72 + public static void addServerEventBus( HttpServletRequest pRequest,
73 + ThreadLocalContextFactory pThreadLocalContextFactory,
74 + ServerEventBus pServerEventBus ) {
75 + SEBSessionTracker tracker = getSessionTracker( pRequest, pThreadLocalContextFactory );
76 + addServletBrowserData( pRequest, pServerEventBus );
77 +
78 + pServerEventBus.setRelatedBusCommonObject( tracker );
79 + tracker.addServerEventBus( pServerEventBus );
80 + }
81 +
82 + public static SEBSessionTracker addTrackerToServerEventBus( HttpServletRequest pRequest,
83 + ThreadLocalContextFactory pThreadLocalContextFactory,
84 + ServerEventBus pServerEventBus ) {
85 + SEBSessionTracker tracker = getSessionTracker( pRequest, pThreadLocalContextFactory );
86 + addServletBrowserData( pRequest, pServerEventBus );
87 + pServerEventBus.setRelatedBusCommonObject( tracker );
88 + return tracker;
89 + }
90 +
91 + public static String getLogoutMessage( HttpServletRequest pRequest,
92 + ThreadLocalContextFactory pThreadLocalContextFactory ) {
93 + return getSessionTracker( pRequest, pThreadLocalContextFactory ).getLogoutMessage();
94 + }
95 +
96 + public static void setLogoutMessage( HttpServletRequest pRequest,
97 + ThreadLocalContextFactory pThreadLocalContextFactory,
98 + String pLogoutMessage ) {
99 + getSessionTracker( pRequest, pThreadLocalContextFactory ).setLogoutMessage( pLogoutMessage );
100 + }
101 +
102 + public static boolean anyServerEventBusesFor( HttpServletRequest pRequest,
103 + ThreadLocalContextFactory pThreadLocalContextFactory ) {
104 + return getSessionTracker( pRequest, pThreadLocalContextFactory ).anyServerEventBuses();
105 + }
106 +
107 + public static void dropAllServerEventBusesFor( HttpServletRequest pRequest,
108 + ThreadLocalContextFactory pThreadLocalContextFactory,
109 + String pWhy ) {
110 + getSessionTracker( pRequest, pThreadLocalContextFactory ).dropAllServerEventBuses( pWhy );
111 + }
112 + }