KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > oracle > toplink > essentials > sessions > SessionEventManager


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the "License"). You may not use this file except
5  * in compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * glassfish/bootstrap/legal/CDDLv1.0.txt or
9  * https://glassfish.dev.java.net/public/CDDLv1.0.html.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * HEADER in each file and include the License file at
15  * glassfish/bootstrap/legal/CDDLv1.0.txt. If applicable,
16  * add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your
18  * own identifying information: Portions Copyright [yyyy]
19  * [name of copyright owner]
20  */

21 // Copyright (c) 1998, 2006, Oracle. All rights reserved.
22
package oracle.toplink.essentials.sessions;
23
24 import java.util.*;
25 import java.io.*;
26 import oracle.toplink.essentials.queryframework.*;
27 import oracle.toplink.essentials.internal.databaseaccess.*;
28 import oracle.toplink.essentials.internal.sessions.*;
29 import oracle.toplink.essentials.threetier.ClientSession;
30 import oracle.toplink.essentials.sessions.SessionProfiler;
31
32 /**
33  * <p><b>Purpose</b>: Used to support session events.
34  * To register for events notification an event listener must be registered with the session.
35  *
36  * @see Session#getEventManager()
37  * @see SessionEvent
38  */

39 public class SessionEventManager implements Cloneable JavaDoc, Serializable {
40     protected Vector listeners;
41     protected Session session;
42
43     /**
44      * INTERNAL:
45      * Default constructor.
46      */

47     public SessionEventManager() {
48         this.listeners = oracle.toplink.essentials.internal.helper.NonSynchronizedVector.newInstance();
49     }
50
51     /**
52      * PUBLIC:
53      * Create a new session event manager for a session
54      */

55     public SessionEventManager(Session session) {
56         this.listeners = oracle.toplink.essentials.internal.helper.NonSynchronizedVector.newInstance();
57         this.session = session;
58     }
59
60     /**
61      * PUBLIC:
62      * Add the event listener to the session.
63      * The listner will receive all events raised by this session.
64      * Also unit of works acquire from this session will inherit the listenrs.
65      */

66     public void addListener(SessionEventListener listener) {
67         getListeners().addElement(listener);
68     }
69
70     /**
71      * INTERNAL:
72      */

73     public Object JavaDoc clone() {
74         try {
75             return super.clone();
76         } catch (Exception JavaDoc e) {
77             return null;
78         }
79     }
80
81     /**
82      * INTERNAL:
83      */

84     public SessionEventManager clone(Session newSession) {
85         SessionEventManager newManager = (SessionEventManager)clone();
86         newManager.setSession(newSession);
87         Vector newListeners = (Vector)(this.getListeners().clone());
88         newManager.setListeners(newListeners);
89         return newManager;
90     }
91
92     /**
93      * PUBLIC:
94      * The event listners will receive all events raised by this session.
95      * Also unit of works acquire from this session will inherit the listenrs.
96      */

97     public Vector getListeners() {
98         return listeners;
99     }
100
101     /**
102      * INTERNAL:
103      * Get the session for this session event manager
104      */

105     public Session getSession() {
106         return session;
107     }
108
109     /**
110      * PUBLIC:
111      * Check if there are any event listeners.
112      */

113     public boolean hasListeners() {
114         return !getListeners().isEmpty();
115     }
116
117     /**
118      * INTERNAL:
119      * Raised for missing descriptors for lazy registration.
120      */

121     public void missingDescriptor(Class JavaDoc missingClass) {
122         if (!hasListeners()) {
123             return;
124         }
125         startOperationProfile();
126         SessionEvent event = new SessionEvent(SessionEvent.MissingDescriptor, getSession());
127         event.setResult(missingClass);
128         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
129             ((SessionEventListener)listenerEnum.nextElement()).missingDescriptor(event);
130         }
131         endOperationProfile();
132     }
133
134     /**
135      * INTERNAL:
136      * Raised for stored proc output parameters.
137      */

138     public void moreRowsDetected(DatabaseCall call) {
139         if (!hasListeners()) {
140             return;
141         }
142         startOperationProfile();
143         SessionEvent event = new SessionEvent(SessionEvent.MoreRowsDetected, getSession());
144         event.setResult(call);
145         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
146             ((SessionEventListener)listenerEnum.nextElement()).moreRowsDetected(event);
147         }
148         endOperationProfile();
149     }
150
151     /**
152      * INTERNAL:
153      * Raised for stored proc output parameters.
154      */

155     public void noRowsModified(ModifyQuery query, Object JavaDoc object) {
156         if (!hasListeners()) {
157             return;
158         }
159         startOperationProfile();
160         SessionEvent event = new SessionEvent(SessionEvent.NoRowsModified, getSession());
161         event.setQuery(query);
162         event.setResult(object);
163         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
164             ((SessionEventListener)listenerEnum.nextElement()).noRowsModified(event);
165         }
166         endOperationProfile();
167     }
168
169     /**
170      * INTERNAL:
171      * Raised for stored proc output parameters.
172      */

173     public void outputParametersDetected(AbstractRecord outputRow, DatasourceCall call) {
174         if (!hasListeners()) {
175             return;
176         }
177         startOperationProfile();
178         SessionEvent event = new SessionEvent(SessionEvent.OutputParametersDetected, getSession());
179         event.setResult(outputRow);
180         event.setProperty("call", call);
181         event.setQuery(call.getQuery());
182         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
183             ((SessionEventListener)listenerEnum.nextElement()).outputParametersDetected(event);
184         }
185         endOperationProfile();
186     }
187
188     /**
189      * INTERNAL:
190      * Post acquire client session.
191      */

192     public void postAcquireClientSession() {
193         if (!hasListeners()) {
194             return;
195         }
196         startOperationProfile();
197         SessionEvent event = new SessionEvent(SessionEvent.PostAcquireClientSession, getSession());
198         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
199             ((SessionEventListener)listenerEnum.nextElement()).postAcquireClientSession(event);
200         }
201         endOperationProfile();
202     }
203
204     /**
205      * INTERNAL:
206      * Raised after acquire a connection from a connection pool.
207      */

208     public void postAcquireConnection(Accessor accessor) {
209         if (!hasListeners()) {
210             return;
211         }
212         startOperationProfile();
213         SessionEvent event = new SessionEvent(SessionEvent.PostAcquireConnection, getSession());
214         event.setResult(accessor);
215         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
216             ((SessionEventListener)listenerEnum.nextElement()).postAcquireConnection(event);
217         }
218         endOperationProfile();
219     }
220
221     /**
222      * INTERNAL:
223      * Raised after acquire a connection from a connection pool.
224      */

225     public void postAcquireExclusiveConnection(ClientSession clientSession, Accessor accessor) {
226         if (!hasListeners()) {
227             return;
228         }
229
230         SessionEvent event = new SessionEvent(SessionEvent.PostAcquireExclusiveConnection, clientSession);
231         event.setResult(accessor);
232         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
233             ((SessionEventListener)listenerEnum.nextElement()).postAcquireExclusiveConnection(event);
234         }
235     }
236
237     /**
238      * INTERNAL:
239      * Post acquire unit of work.
240      */

241     public void postAcquireUnitOfWork() {
242         if (!hasListeners()) {
243             return;
244         }
245         startOperationProfile();
246         SessionEvent event = new SessionEvent(SessionEvent.PostAcquireUnitOfWork, getSession());
247         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
248             ((SessionEventListener)listenerEnum.nextElement()).postAcquireUnitOfWork(event);
249         }
250         endOperationProfile();
251     }
252
253     /**
254      * INTERNAL:
255      * Post begin transaction.
256      */

257     public void postBeginTransaction() {
258         if (!hasListeners()) {
259             return;
260         }
261         startOperationProfile();
262         SessionEvent event = new SessionEvent(SessionEvent.PostBeginTransaction, getSession());
263         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
264             ((SessionEventListener)listenerEnum.nextElement()).postBeginTransaction(event);
265         }
266         endOperationProfile();
267     }
268
269     /**
270      * INTERNAL:
271      * Post commit transaction.
272      */

273     public void postCommitTransaction() {
274         if (!hasListeners()) {
275             return;
276         }
277         startOperationProfile();
278         SessionEvent event = new SessionEvent(SessionEvent.PostCommitTransaction, getSession());
279         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
280             ((SessionEventListener)listenerEnum.nextElement()).postCommitTransaction(event);
281         }
282         endOperationProfile();
283     }
284
285     /**
286      * INTERNAL:
287      * Post commit unit of work.
288      */

289     public void postCommitUnitOfWork() {
290         if (!hasListeners()) {
291             return;
292         }
293         startOperationProfile();
294         SessionEvent event = new SessionEvent(SessionEvent.PostCommitUnitOfWork, getSession());
295         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
296             ((SessionEventListener)listenerEnum.nextElement()).postCommitUnitOfWork(event);
297         }
298         endOperationProfile();
299     }
300
301     /**
302      * INTERNAL:
303      * Raised after connecting.
304      */

305     public void postConnect(Accessor accessor) {
306         if (!hasListeners()) {
307             return;
308         }
309         startOperationProfile();
310         SessionEvent event = new SessionEvent(SessionEvent.PostConnect, getSession());
311         event.setResult(accessor);
312         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
313             ((SessionEventListener)listenerEnum.nextElement()).postConnect(event);
314         }
315         endOperationProfile();
316     }
317
318     /**
319      * INTERNAL:
320      * Post execute query.
321      */

322     public void postExecuteQuery(DatabaseQuery query, Object JavaDoc result) {
323         if (!hasListeners()) {
324             return;
325         }
326         startOperationProfile();
327         SessionEvent event = new SessionEvent(SessionEvent.PostExecuteQuery, getSession());
328         event.setQuery(query);
329         event.setResult(result);
330         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
331             ((SessionEventListener)listenerEnum.nextElement()).postExecuteQuery(event);
332         }
333         endOperationProfile();
334     }
335
336     /**
337      * INTERNAL:
338      * Post release client session.
339      */

340     public void postReleaseClientSession() {
341         if (!hasListeners()) {
342             return;
343         }
344         startOperationProfile();
345         SessionEvent event = new SessionEvent(SessionEvent.PostReleaseClientSession, getSession());
346         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
347             ((SessionEventListener)listenerEnum.nextElement()).postReleaseClientSession(event);
348         }
349         endOperationProfile();
350     }
351
352     /**
353      * INTERNAL:
354      * Post release unit of work.
355      */

356     public void postReleaseUnitOfWork() {
357         if (!hasListeners()) {
358             return;
359         }
360         startOperationProfile();
361         SessionEvent event = new SessionEvent(SessionEvent.PostReleaseUnitOfWork, getSession());
362         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
363             ((SessionEventListener)listenerEnum.nextElement()).postReleaseUnitOfWork(event);
364         }
365         endOperationProfile();
366     }
367
368     /**
369      * INTERNAL:
370      * Post resume unit of work.
371      */

372     public void postResumeUnitOfWork() {
373         if (!hasListeners()) {
374             return;
375         }
376         startOperationProfile();
377         SessionEvent event = new SessionEvent(SessionEvent.PostResumeUnitOfWork, getSession());
378         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
379             ((SessionEventListener)listenerEnum.nextElement()).postResumeUnitOfWork(event);
380         }
381         endOperationProfile();
382     }
383
384     /**
385      * INTERNAL:
386      * Post rollback transaction.
387      */

388     public void postRollbackTransaction() {
389         if (!hasListeners()) {
390             return;
391         }
392         startOperationProfile();
393         SessionEvent event = new SessionEvent(SessionEvent.PostRollbackTransaction, getSession());
394         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
395             ((SessionEventListener)listenerEnum.nextElement()).postRollbackTransaction(event);
396         }
397         endOperationProfile();
398     }
399
400     /**
401      * INTERNAL:
402      * Pre execute query.
403      */

404     public void postDistributedMergeUnitOfWorkChangeSet(UnitOfWorkChangeSet changeSet) {
405         if (!hasListeners()) {
406             return;
407         }
408         startOperationProfile();
409         SessionEvent event = new SessionEvent(SessionEvent.PostDistributedMergeUnitOfWorkChangeSet, getSession());
410         event.setProperty("UnitOfWorkChangeSet", changeSet);
411         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
412             ((SessionEventListener)listenerEnum.nextElement()).postDistributedMergeUnitOfWorkChangeSet(event);
413         }
414         endOperationProfile();
415     }
416
417     /**
418      * INTERNAL:
419      * Pre execute query.
420      */

421     public void postMergeUnitOfWorkChangeSet(UnitOfWorkChangeSet changeSet) {
422         if (!hasListeners()) {
423             return;
424         }
425         startOperationProfile();
426         SessionEvent event = new SessionEvent(SessionEvent.PostMergeUnitOfWorkChangeSet, getSession());
427         event.setProperty("UnitOfWorkChangeSet", changeSet);
428         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
429             ((SessionEventListener)listenerEnum.nextElement()).postMergeUnitOfWorkChangeSet(event);
430         }
431         endOperationProfile();
432     }
433
434     /**
435      * INTERNAL:
436      * Pre begin transaction.
437      */

438     public void preBeginTransaction() {
439         if (!hasListeners()) {
440             return;
441         }
442         startOperationProfile();
443         SessionEvent event = new SessionEvent(SessionEvent.PreBeginTransaction, getSession());
444         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
445             ((SessionEventListener)listenerEnum.nextElement()).preBeginTransaction(event);
446         }
447         endOperationProfile();
448     }
449
450     /**
451      * INTERNAL:
452      * Pre calculate UnitOfWork Change Set.
453      */

454     public void preCalculateUnitOfWorkChangeSet() {
455         if (!hasListeners()) {
456             return;
457         }
458         startOperationProfile();
459         SessionEvent event = new SessionEvent(SessionEvent.PreCalculateUnitOfWorkChangeSet, getSession());
460         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
461             ((SessionEventListener)listenerEnum.nextElement()).preCalculateUnitOfWorkChangeSet(event);
462         }
463         endOperationProfile();
464     }
465
466     /**
467      * INTERNAL:
468      * Post calculate UnitOfWork Change Set.
469      */

470     public void postCalculateUnitOfWorkChangeSet(UnitOfWorkChangeSet changeSet) {
471         if (!hasListeners()) {
472             return;
473         }
474         startOperationProfile();
475         SessionEvent event = new SessionEvent(SessionEvent.PostCalculateUnitOfWorkChangeSet, getSession());
476         event.setProperty("UnitOfWorkChangeSet", changeSet);
477         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
478             ((SessionEventListener)listenerEnum.nextElement()).postCalculateUnitOfWorkChangeSet(event);
479         }
480         endOperationProfile();
481     }
482
483     /**
484        * INTERNAL:
485        * Pre commit transaction.
486        */

487     public void preCommitTransaction() {
488         if (!hasListeners()) {
489             return;
490         }
491         startOperationProfile();
492         SessionEvent event = new SessionEvent(SessionEvent.PreCommitTransaction, getSession());
493         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
494             ((SessionEventListener)listenerEnum.nextElement()).preCommitTransaction(event);
495         }
496         endOperationProfile();
497     }
498
499     /**
500      * INTERNAL:
501      * Pre commit unit of work.
502      */

503     public void preCommitUnitOfWork() {
504         if (!hasListeners()) {
505             return;
506         }
507         startOperationProfile();
508         SessionEvent event = new SessionEvent(SessionEvent.PreCommitUnitOfWork, getSession());
509         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
510             ((SessionEventListener)listenerEnum.nextElement()).preCommitUnitOfWork(event);
511         }
512         endOperationProfile();
513     }
514
515     /**
516      * INTERNAL:
517      * Pre execute query.
518      */

519     public void preExecuteQuery(DatabaseQuery query) {
520         if (!hasListeners()) {
521             return;
522         }
523         startOperationProfile();
524         SessionEvent event = new SessionEvent(SessionEvent.PreExecuteQuery, getSession());
525         event.setQuery(query);
526         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
527             ((SessionEventListener)listenerEnum.nextElement()).preExecuteQuery(event);
528         }
529         endOperationProfile();
530     }
531
532     /**
533      * INTERNAL:
534      * Pre login to the session.
535      */

536     public void preLogin(Session session) {
537         if (!hasListeners()) {
538             return;
539         }
540         startOperationProfile();
541         SessionEvent event = new SessionEvent(SessionEvent.PreLogin, session);
542         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
543             ((SessionEventListener)listenerEnum.nextElement()).preLogin(event);
544         }
545         endOperationProfile();
546     }
547
548     /**
549      * INTERNAL:
550      * post login to the session.
551      */

552     public void postLogin(Session session) {
553         if (!hasListeners()) {
554             return;
555         }
556         startOperationProfile();
557         SessionEvent event = new SessionEvent(SessionEvent.PostLogin, session);
558         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
559             ((SessionEventListener)listenerEnum.nextElement()).postLogin(event);
560         }
561         endOperationProfile();
562     }
563
564     /**
565      * INTERNAL:
566      * Prepare unit of work.
567      */

568     public void prepareUnitOfWork() {
569         if (!hasListeners()) {
570             return;
571         }
572         startOperationProfile();
573         SessionEvent event = new SessionEvent(SessionEvent.PrepareUnitOfWork, getSession());
574         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
575             ((SessionEventListener)listenerEnum.nextElement()).prepareUnitOfWork(event);
576         }
577         endOperationProfile();
578     }
579
580     /**
581      * INTERNAL:
582      * Pre release client session.
583      */

584     public void preReleaseClientSession() {
585         if (!hasListeners()) {
586             return;
587         }
588         startOperationProfile();
589         SessionEvent event = new SessionEvent(SessionEvent.PreReleaseClientSession, getSession());
590         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
591             ((SessionEventListener)listenerEnum.nextElement()).preReleaseClientSession(event);
592         }
593         endOperationProfile();
594     }
595
596     /**
597      * INTERNAL:
598      * Raised before release a connection to a connection pool.
599      */

600     public void preReleaseConnection(Accessor accessor) {
601         if (!hasListeners()) {
602             return;
603         }
604         startOperationProfile();
605         SessionEvent event = new SessionEvent(SessionEvent.PreReleaseConnection, getSession());
606         event.setResult(accessor);
607         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
608             ((SessionEventListener)listenerEnum.nextElement()).preReleaseConnection(event);
609         }
610         endOperationProfile();
611     }
612
613     /**
614      * INTERNAL:
615      * This event is fired just before a Client Session, with isolated data,
616      * releases its Exclusive Connection
617      */

618     public void preReleaseExclusiveConnection(ClientSession clientSession, Accessor accessor) {
619         if (!hasListeners()) {
620             return;
621         }
622
623         SessionEvent event = new SessionEvent(SessionEvent.PreReleaseExclusiveConnection, clientSession);
624         event.setResult(accessor);
625         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
626             ((SessionEventListener)listenerEnum.nextElement()).preReleaseExclusiveConnection(event);
627         }
628     }
629
630     /**
631      * INTERNAL:
632      * Pre release unit of work.
633      */

634     public void preReleaseUnitOfWork() {
635         if (!hasListeners()) {
636             return;
637         }
638         startOperationProfile();
639         SessionEvent event = new SessionEvent(SessionEvent.PreReleaseUnitOfWork, getSession());
640         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
641             ((SessionEventListener)listenerEnum.nextElement()).preReleaseUnitOfWork(event);
642         }
643         endOperationProfile();
644     }
645
646     /**
647      * INTERNAL:
648      * Pre rollback transaction.
649      */

650     public void preRollbackTransaction() {
651         if (!hasListeners()) {
652             return;
653         }
654         startOperationProfile();
655         SessionEvent event = new SessionEvent(SessionEvent.PreRollbackTransaction, getSession());
656         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
657             ((SessionEventListener)listenerEnum.nextElement()).preRollbackTransaction(event);
658         }
659         endOperationProfile();
660     }
661
662     /**
663      * INTERNAL:
664      * Pre merge Distributed UnitOfWorkChangeSet
665      */

666     public void preDistributedMergeUnitOfWorkChangeSet(UnitOfWorkChangeSet changeSet) {
667         if (!hasListeners()) {
668             return;
669         }
670         startOperationProfile();
671         SessionEvent event = new SessionEvent(SessionEvent.PreDistributedMergeUnitOfWorkChangeSet, getSession());
672         event.setProperty("UnitOfWorkChangeSet", changeSet);
673         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
674             ((SessionEventListener)listenerEnum.nextElement()).preDistributedMergeUnitOfWorkChangeSet(event);
675         }
676         endOperationProfile();
677     }
678
679     /**
680      * INTERNAL:
681      * Pre merge UnitOfWorkChangeSet
682      */

683     public void preMergeUnitOfWorkChangeSet(UnitOfWorkChangeSet changeSet) {
684         if (!hasListeners()) {
685             return;
686         }
687         startOperationProfile();
688         SessionEvent event = new SessionEvent(SessionEvent.PreMergeUnitOfWorkChangeSet, getSession());
689         event.setProperty("UnitOfWorkChangeSet", changeSet);
690         for (Enumeration listenerEnum = getListeners().elements(); listenerEnum.hasMoreElements();) {
691             ((SessionEventListener)listenerEnum.nextElement()).preMergeUnitOfWorkChangeSet(event);
692         }
693         endOperationProfile();
694     }
695
696     /**
697      * PUBLIC:
698      * Remove the event listener from the session.
699      */

700     public void removeListener(SessionEventListener listener) {
701         getListeners().removeElement(listener);
702     }
703
704     /**
705      * The event listners will receive all events raised by this session.
706      * Also unit of works acquire from this session will inherit the listenrs.
707      */

708     protected void setListeners(Vector listeners) {
709         this.listeners = listeners;
710     }
711
712     /**
713      * INTERNAL:
714      * Set the session for this session event manager
715      */

716     public void setSession(Session session) {
717         this.session = session;
718     }
719
720     /**
721        * INTERNAL:
722        * Start call
723        */

724     protected void startOperationProfile() {
725         if (getSession().isInProfile()) {
726             getSession().getProfiler().startOperationProfile(SessionProfiler.SessionEvent);
727         }
728     }
729
730     /**
731        * INTERNAL:
732        * End call
733        */

734     protected void endOperationProfile() {
735         if (getSession().isInProfile()) {
736             getSession().getProfiler().endOperationProfile(SessionProfiler.SessionEvent);
737         }
738     }
739 }
740
Popular Tags