001: /*
002: * All content copyright (c) 2003-2007 Terracotta, Inc., except as may otherwise be noted in a separate copyright
003: * notice. All rights reserved.
004: */
005: package org.terracotta.modules.websphere_6_1;
006:
007: import com.tc.asm.ClassAdapter;
008: import com.tc.asm.ClassVisitor;
009: import com.tc.asm.Label;
010: import com.tc.asm.MethodVisitor;
011: import com.tc.asm.Opcodes;
012: import com.tc.object.bytecode.ClassAdapterFactory;
013:
014: public class SessionContextAdapter extends ClassAdapter implements
015: ClassAdapterFactory, Opcodes {
016:
017: public SessionContextAdapter(ClassVisitor cv) {
018: super (cv);
019: }
020:
021: public SessionContextAdapter() {
022: super (null);
023: }
024:
025: public ClassAdapter create(ClassVisitor visitor, ClassLoader loader) {
026: return new SessionContextAdapter(visitor);
027: }
028:
029: public void visitEnd() {
030: addTCSessionMethods();
031: super .visitEnd();
032: }
033:
034: private void addTCSessionMethods() {
035: MethodVisitor mv;
036:
037: {
038: mv = super .visitMethod(ACC_PUBLIC,
039: "__tc_session_getCookieComment",
040: "()Ljava/lang/String;", null, null);
041: mv.visitCode();
042: Label l0 = new Label();
043: mv.visitLabel(l0);
044: mv.visitLineNumber(14, l0);
045: mv.visitVarInsn(ALOAD, 0);
046: mv
047: .visitMethodInsn(
048: INVOKEVIRTUAL,
049: "com/ibm/ws/webcontainer/httpsession/SessionContext",
050: "getSessionCookieComment",
051: "()Ljava/lang/String;");
052: mv.visitInsn(ARETURN);
053: Label l1 = new Label();
054: mv.visitLabel(l1);
055: mv
056: .visitLocalVariable(
057: "this",
058: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
059: null, l0, l1, 0);
060: mv.visitMaxs(1, 1);
061: mv.visitEnd();
062: }
063: {
064: mv = super .visitMethod(ACC_PUBLIC,
065: "__tc_session_getCookieDomain",
066: "()Ljava/lang/String;", null, null);
067: mv.visitCode();
068: Label l0 = new Label();
069: mv.visitLabel(l0);
070: mv.visitLineNumber(18, l0);
071: mv.visitVarInsn(ALOAD, 0);
072: mv
073: .visitMethodInsn(
074: INVOKEVIRTUAL,
075: "com/ibm/ws/webcontainer/httpsession/SessionContext",
076: "getSessionCookieDomain",
077: "()Ljava/lang/String;");
078: mv.visitInsn(ARETURN);
079: Label l1 = new Label();
080: mv.visitLabel(l1);
081: mv
082: .visitLocalVariable(
083: "this",
084: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
085: null, l0, l1, 0);
086: mv.visitMaxs(1, 1);
087: mv.visitEnd();
088: }
089: {
090: mv = super .visitMethod(ACC_PUBLIC,
091: "__tc_session_getCookieMaxAgeSecs", "()I", null,
092: null);
093: mv.visitCode();
094: Label l0 = new Label();
095: mv.visitLabel(l0);
096: mv.visitLineNumber(22, l0);
097: mv.visitVarInsn(ALOAD, 0);
098: mv
099: .visitMethodInsn(
100: INVOKEVIRTUAL,
101: "com/ibm/ws/webcontainer/httpsession/SessionContext",
102: "getSessionCookieMaxAge", "()I");
103: mv.visitInsn(IRETURN);
104: Label l1 = new Label();
105: mv.visitLabel(l1);
106: mv
107: .visitLocalVariable(
108: "this",
109: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
110: null, l0, l1, 0);
111: mv.visitMaxs(1, 1);
112: mv.visitEnd();
113: }
114: {
115: mv = super .visitMethod(ACC_PUBLIC,
116: "__tc_session_getCookieName",
117: "()Ljava/lang/String;", null, null);
118: mv.visitCode();
119: Label l0 = new Label();
120: mv.visitLabel(l0);
121: mv.visitLineNumber(26, l0);
122: mv.visitVarInsn(ALOAD, 0);
123: mv
124: .visitMethodInsn(
125: INVOKEVIRTUAL,
126: "com/ibm/ws/webcontainer/httpsession/SessionContext",
127: "getSessionCookieName",
128: "()Ljava/lang/String;");
129: mv.visitInsn(ARETURN);
130: Label l1 = new Label();
131: mv.visitLabel(l1);
132: mv
133: .visitLocalVariable(
134: "this",
135: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
136: null, l0, l1, 0);
137: mv.visitMaxs(1, 1);
138: mv.visitEnd();
139: }
140: {
141: mv = super .visitMethod(ACC_PUBLIC,
142: "__tc_session_getCookiePath",
143: "()Ljava/lang/String;", null, null);
144: mv.visitCode();
145: Label l0 = new Label();
146: mv.visitLabel(l0);
147: mv.visitLineNumber(30, l0);
148: mv.visitVarInsn(ALOAD, 0);
149: mv
150: .visitMethodInsn(
151: INVOKEVIRTUAL,
152: "com/ibm/ws/webcontainer/httpsession/SessionContext",
153: "getSessionCookiePath",
154: "()Ljava/lang/String;");
155: mv.visitInsn(ARETURN);
156: Label l1 = new Label();
157: mv.visitLabel(l1);
158: mv
159: .visitLocalVariable(
160: "this",
161: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
162: null, l0, l1, 0);
163: mv.visitMaxs(1, 1);
164: mv.visitEnd();
165: }
166: {
167: mv = super .visitMethod(ACC_PUBLIC,
168: "__tc_session_getCookieSecure", "()Z", null, null);
169: mv.visitCode();
170: Label l0 = new Label();
171: mv.visitLabel(l0);
172: mv.visitLineNumber(34, l0);
173: mv.visitVarInsn(ALOAD, 0);
174: mv
175: .visitMethodInsn(
176: INVOKEVIRTUAL,
177: "com/ibm/ws/webcontainer/httpsession/SessionContext",
178: "getSessionCookieSecure", "()Z");
179: mv.visitInsn(IRETURN);
180: Label l1 = new Label();
181: mv.visitLabel(l1);
182: mv
183: .visitLocalVariable(
184: "this",
185: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
186: null, l0, l1, 0);
187: mv.visitMaxs(1, 1);
188: mv.visitEnd();
189: }
190: {
191: mv = super
192: .visitMethod(ACC_PUBLIC,
193: "__tc_session_getCookiesEnabled", "()Z",
194: null, null);
195: mv.visitCode();
196: Label l0 = new Label();
197: mv.visitLabel(l0);
198: mv.visitLineNumber(38, l0);
199: mv.visitVarInsn(ALOAD, 0);
200: mv
201: .visitMethodInsn(
202: INVOKEVIRTUAL,
203: "com/ibm/ws/webcontainer/httpsession/SessionContext",
204: "isUsingCookies", "()Z");
205: mv.visitInsn(IRETURN);
206: Label l1 = new Label();
207: mv.visitLabel(l1);
208: mv
209: .visitLocalVariable(
210: "this",
211: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
212: null, l0, l1, 0);
213: mv.visitMaxs(1, 1);
214: mv.visitEnd();
215: }
216: {
217: mv = super
218: .visitMethod(
219: ACC_PUBLIC,
220: "__tc_session_getHttpSessionAttributeListeners",
221: "()[Ljavax/servlet/http/HttpSessionAttributeListener;",
222: null, null);
223: mv.visitCode();
224: Label l0 = new Label();
225: mv.visitLabel(l0);
226: mv.visitLineNumber(47, l0);
227: mv.visitVarInsn(ALOAD, 0);
228: mv
229: .visitMethodInsn(
230: INVOKEVIRTUAL,
231: "com/ibm/ws/webcontainer/httpsession/SessionContext",
232: "getHttpSessionAttributeListeners",
233: "()Ljava/util/ArrayList;");
234: mv.visitMethodInsn(INVOKESTATIC, "java/util/Collections",
235: "unmodifiableList",
236: "(Ljava/util/List;)Ljava/util/List;");
237: Label l1 = new Label();
238: mv.visitLabel(l1);
239: mv.visitLineNumber(46, l1);
240: mv.visitVarInsn(ASTORE, 1);
241: Label l2 = new Label();
242: mv.visitLabel(l2);
243: mv.visitLineNumber(48, l2);
244: mv.visitVarInsn(ALOAD, 1);
245: Label l3 = new Label();
246: mv.visitLabel(l3);
247: mv.visitLineNumber(49, l3);
248: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List",
249: "size", "()I");
250: Label l4 = new Label();
251: mv.visitLabel(l4);
252: mv.visitLineNumber(48, l4);
253: mv.visitTypeInsn(ANEWARRAY,
254: "javax/servlet/http/HttpSessionAttributeListener");
255: mv.visitVarInsn(ASTORE, 2);
256: Label l5 = new Label();
257: mv.visitLabel(l5);
258: mv.visitLineNumber(51, l5);
259: mv.visitInsn(ICONST_0);
260: mv.visitVarInsn(ISTORE, 3);
261: Label l6 = new Label();
262: mv.visitLabel(l6);
263: mv.visitLineNumber(52, l6);
264: mv.visitVarInsn(ALOAD, 1);
265: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List",
266: "iterator", "()Ljava/util/Iterator;");
267: mv.visitVarInsn(ASTORE, 4);
268: Label l7 = new Label();
269: mv.visitLabel(l7);
270: Label l8 = new Label();
271: mv.visitJumpInsn(GOTO, l8);
272: Label l9 = new Label();
273: mv.visitLabel(l9);
274: mv.visitLineNumber(53, l9);
275: mv.visitVarInsn(ALOAD, 4);
276: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator",
277: "next", "()Ljava/lang/Object;");
278: mv.visitTypeInsn(CHECKCAST, "java/util/List");
279: mv.visitVarInsn(ASTORE, 5);
280: Label l10 = new Label();
281: mv.visitLabel(l10);
282: mv.visitLineNumber(54, l10);
283: mv.visitVarInsn(ALOAD, 2);
284: mv.visitVarInsn(ILOAD, 3);
285: mv.visitIincInsn(3, 1);
286: mv.visitVarInsn(ALOAD, 5);
287: mv.visitInsn(ICONST_1);
288: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List",
289: "get", "(I)Ljava/lang/Object;");
290: mv.visitTypeInsn(CHECKCAST,
291: "javax/servlet/http/HttpSessionAttributeListener");
292: mv.visitInsn(AASTORE);
293: mv.visitLabel(l8);
294: mv.visitLineNumber(52, l8);
295: mv.visitVarInsn(ALOAD, 4);
296: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator",
297: "hasNext", "()Z");
298: mv.visitJumpInsn(IFNE, l9);
299: Label l11 = new Label();
300: mv.visitLabel(l11);
301: mv.visitLineNumber(56, l11);
302: mv.visitVarInsn(ALOAD, 2);
303: mv.visitInsn(ARETURN);
304: Label l12 = new Label();
305: mv.visitLabel(l12);
306: mv
307: .visitLocalVariable(
308: "this",
309: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
310: null, l0, l12, 0);
311: mv.visitLocalVariable("listeners", "Ljava/util/List;",
312: null, l2, l12, 1);
313: mv
314: .visitLocalVariable(
315: "rv",
316: "[Ljavax/servlet/http/HttpSessionAttributeListener;",
317: null, l5, l12, 2);
318: mv.visitLocalVariable("index", "I", null, l6, l12, 3);
319: mv.visitLocalVariable("i", "Ljava/util/Iterator;", null,
320: l7, l11, 4);
321: mv.visitLocalVariable("l", "Ljava/util/List;", null, l10,
322: l8, 5);
323: mv.visitMaxs(4, 6);
324: mv.visitEnd();
325: }
326: {
327: mv = super .visitMethod(ACC_PUBLIC,
328: "__tc_session_getHttpSessionListener",
329: "()[Ljavax/servlet/http/HttpSessionListener;",
330: null, null);
331: mv.visitCode();
332: Label l0 = new Label();
333: mv.visitLabel(l0);
334: mv.visitLineNumber(65, l0);
335: mv.visitVarInsn(ALOAD, 0);
336: mv
337: .visitMethodInsn(
338: INVOKEVIRTUAL,
339: "com/ibm/ws/webcontainer/httpsession/SessionContext",
340: "getHttpSessionListeners",
341: "()Ljava/util/ArrayList;");
342: mv.visitMethodInsn(INVOKESTATIC, "java/util/Collections",
343: "unmodifiableList",
344: "(Ljava/util/List;)Ljava/util/List;");
345: Label l1 = new Label();
346: mv.visitLabel(l1);
347: mv.visitLineNumber(64, l1);
348: mv.visitVarInsn(ASTORE, 1);
349: Label l2 = new Label();
350: mv.visitLabel(l2);
351: mv.visitLineNumber(66, l2);
352: mv.visitVarInsn(ALOAD, 1);
353: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List",
354: "size", "()I");
355: mv.visitTypeInsn(ANEWARRAY,
356: "javax/servlet/http/HttpSessionListener");
357: mv.visitVarInsn(ASTORE, 2);
358: Label l3 = new Label();
359: mv.visitLabel(l3);
360: mv.visitLineNumber(68, l3);
361: mv.visitInsn(ICONST_0);
362: mv.visitVarInsn(ISTORE, 3);
363: Label l4 = new Label();
364: mv.visitLabel(l4);
365: mv.visitLineNumber(69, l4);
366: mv.visitVarInsn(ALOAD, 1);
367: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List",
368: "iterator", "()Ljava/util/Iterator;");
369: mv.visitVarInsn(ASTORE, 4);
370: Label l5 = new Label();
371: mv.visitLabel(l5);
372: Label l6 = new Label();
373: mv.visitJumpInsn(GOTO, l6);
374: Label l7 = new Label();
375: mv.visitLabel(l7);
376: mv.visitLineNumber(70, l7);
377: mv.visitVarInsn(ALOAD, 4);
378: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator",
379: "next", "()Ljava/lang/Object;");
380: mv.visitTypeInsn(CHECKCAST, "java/util/List");
381: mv.visitVarInsn(ASTORE, 5);
382: Label l8 = new Label();
383: mv.visitLabel(l8);
384: mv.visitLineNumber(71, l8);
385: mv.visitVarInsn(ALOAD, 2);
386: mv.visitVarInsn(ILOAD, 3);
387: mv.visitIincInsn(3, 1);
388: mv.visitVarInsn(ALOAD, 5);
389: mv.visitInsn(ICONST_1);
390: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List",
391: "get", "(I)Ljava/lang/Object;");
392: mv.visitTypeInsn(CHECKCAST,
393: "javax/servlet/http/HttpSessionListener");
394: mv.visitInsn(AASTORE);
395: mv.visitLabel(l6);
396: mv.visitLineNumber(69, l6);
397: mv.visitVarInsn(ALOAD, 4);
398: mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator",
399: "hasNext", "()Z");
400: mv.visitJumpInsn(IFNE, l7);
401: Label l9 = new Label();
402: mv.visitLabel(l9);
403: mv.visitLineNumber(73, l9);
404: mv.visitVarInsn(ALOAD, 2);
405: mv.visitInsn(ARETURN);
406: Label l10 = new Label();
407: mv.visitLabel(l10);
408: mv
409: .visitLocalVariable(
410: "this",
411: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
412: null, l0, l10, 0);
413: mv.visitLocalVariable("listeners", "Ljava/util/List;",
414: null, l2, l10, 1);
415: mv.visitLocalVariable("rv",
416: "[Ljavax/servlet/http/HttpSessionListener;", null,
417: l3, l10, 2);
418: mv.visitLocalVariable("index", "I", null, l4, l10, 3);
419: mv.visitLocalVariable("i", "Ljava/util/Iterator;", null,
420: l5, l9, 4);
421: mv.visitLocalVariable("l", "Ljava/util/List;", null, l8,
422: l6, 5);
423: mv.visitMaxs(4, 6);
424: mv.visitEnd();
425: }
426: {
427: mv = super .visitMethod(ACC_PUBLIC,
428: "__tc_session_getIdLength", "()I", null, null);
429: mv.visitCode();
430: Label l0 = new Label();
431: mv.visitLabel(l0);
432: mv.visitLineNumber(77, l0);
433: mv
434: .visitFieldInsn(
435: GETSTATIC,
436: "com/ibm/ws/webcontainer/httpsession/SessionContext",
437: "sessionIDLength", "I");
438: mv.visitInsn(IRETURN);
439: Label l1 = new Label();
440: mv.visitLabel(l1);
441: mv
442: .visitLocalVariable(
443: "this",
444: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
445: null, l0, l1, 0);
446: mv.visitMaxs(1, 1);
447: mv.visitEnd();
448: }
449: {
450: mv = super .visitMethod(ACC_PUBLIC,
451: "__tc_session_getServerId", "()Ljava/lang/String;",
452: null, null);
453: mv.visitCode();
454: Label l0 = new Label();
455: mv.visitLabel(l0);
456: mv.visitLineNumber(81, l0);
457: mv.visitInsn(ACONST_NULL);
458: mv.visitInsn(ARETURN);
459: Label l1 = new Label();
460: mv.visitLabel(l1);
461: mv
462: .visitLocalVariable(
463: "this",
464: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
465: null, l0, l1, 0);
466: mv.visitMaxs(1, 1);
467: mv.visitEnd();
468: }
469: {
470: mv = super .visitMethod(ACC_PUBLIC,
471: "__tc_session_getSessionDelimiter",
472: "()Ljava/lang/String;", null, null);
473: mv.visitCode();
474: Label l0 = new Label();
475: mv.visitLabel(l0);
476: mv.visitLineNumber(85, l0);
477: mv.visitVarInsn(ALOAD, 0);
478: mv
479: .visitMethodInsn(
480: INVOKEVIRTUAL,
481: "com/ibm/ws/webcontainer/httpsession/SessionContext",
482: "getCloneSeparator", "()Ljava/lang/String;");
483: mv.visitInsn(ARETURN);
484: Label l1 = new Label();
485: mv.visitLabel(l1);
486: mv
487: .visitLocalVariable(
488: "this",
489: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
490: null, l0, l1, 0);
491: mv.visitMaxs(1, 1);
492: mv.visitEnd();
493: }
494: {
495: mv = super .visitMethod(ACC_PUBLIC,
496: "__tc_session_getSessionTimeoutSecs", "()I", null,
497: null);
498: mv.visitCode();
499: Label l0 = new Label();
500: mv.visitLabel(l0);
501: mv.visitLineNumber(89, l0);
502: mv.visitVarInsn(ALOAD, 0);
503: mv
504: .visitMethodInsn(
505: INVOKEVIRTUAL,
506: "com/ibm/ws/webcontainer/httpsession/SessionContext",
507: "getSessionTimeOut", "()I");
508: mv.visitInsn(IRETURN);
509: Label l1 = new Label();
510: mv.visitLabel(l1);
511: mv
512: .visitLocalVariable(
513: "this",
514: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
515: null, l0, l1, 0);
516: mv.visitMaxs(1, 1);
517: mv.visitEnd();
518: }
519: {
520: mv = super .visitMethod(ACC_PUBLIC,
521: "__tc_session_getTrackingEnabled", "()Z", null,
522: null);
523: mv.visitCode();
524: Label l0 = new Label();
525: mv.visitLabel(l0);
526: mv.visitLineNumber(93, l0);
527: mv.visitVarInsn(ALOAD, 0);
528: mv
529: .visitMethodInsn(
530: INVOKEVIRTUAL,
531: "com/ibm/ws/webcontainer/httpsession/SessionContext",
532: "isSessionTrackingActive", "()Z");
533: mv.visitInsn(IRETURN);
534: Label l1 = new Label();
535: mv.visitLabel(l1);
536: mv
537: .visitLocalVariable(
538: "this",
539: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
540: null, l0, l1, 0);
541: mv.visitMaxs(1, 1);
542: mv.visitEnd();
543: }
544: {
545: mv = super .visitMethod(ACC_PUBLIC,
546: "__tc_session_getURLRewritingEnabled", "()Z", null,
547: null);
548: mv.visitCode();
549: Label l0 = new Label();
550: mv.visitLabel(l0);
551: mv.visitLineNumber(97, l0);
552: mv.visitVarInsn(ALOAD, 0);
553: mv
554: .visitMethodInsn(
555: INVOKEVIRTUAL,
556: "com/ibm/ws/webcontainer/httpsession/SessionContext",
557: "isUsingURL", "()Z");
558: mv.visitInsn(IRETURN);
559: Label l1 = new Label();
560: mv.visitLabel(l1);
561: mv
562: .visitLocalVariable(
563: "this",
564: "Lcom/ibm/ws/webcontainer/httpsession/SessionContext;",
565: null, l0, l1, 0);
566: mv.visitMaxs(1, 1);
567: mv.visitEnd();
568: }
569:
570: }
571:
572: /**
573: * The code template for this instrumentation
574: *
575: * <pre>
576: * package com.ibm.ws.webcontainer.httpsession;
577: *
578: * import java.util.Collections;
579: * import java.util.Iterator;
580: * import java.util.List;
581: *
582: * import javax.servlet.http.HttpSessionAttributeListener;
583: * import javax.servlet.http.HttpSessionListener;
584: *
585: * public final class InstrumentedSessionContext extends SessionContext implements com.terracotta.session.WebAppConfig {
586: *
587: * public String __tc_session_getCookieComment() {
588: * return getSessionCookieComment();
589: * }
590: *
591: * public String __tc_session_getCookieDomain() {
592: * return getSessionCookieDomain();
593: * }
594: *
595: * public int __tc_session_getCookieMaxAgeSecs() {
596: * return getSessionCookieMaxAge();
597: * }
598: *
599: * public String __tc_session_getCookieName() {
600: * return getSessionCookieName();
601: * }
602: *
603: * public String __tc_session_getCookiePath() {
604: * return getSessionCookiePath();
605: * }
606: *
607: * public boolean __tc_session_getCookieSecure() {
608: * return getSessionCookieSecure();
609: * }
610: *
611: * public boolean __tc_session_getCookiesEnabled() {
612: * return isUsingCookies();
613: * }
614: *
615: * // IBM adds listeners as a two-entry list: 0 = String, 1 = Object (the
616: * // listener)
617: *
618: * public HttpSessionAttributeListener[] __tc_session_getHttpSessionAttributeListeners() {
619: * List listeners = Collections.unmodifiableList(getHttpSessionAttributeListeners());
620: * HttpSessionAttributeListener[] rv = new HttpSessionAttributeListener[listeners.size()];
621: *
622: * int index = 0;
623: * for (Iterator i = listeners.iterator(); i.hasNext();) {
624: * List l = (List) i.next();
625: * rv[index++] = (HttpSessionAttributeListener) l.get(1);
626: * }
627: * return rv;
628: * }
629: *
630: * // IBM adds listeners as a two-entry list: 0 = String, 1 = Object (the listener)
631: * public HttpSessionListener[] __tc_session_getHttpSessionListener() {
632: * List listeners = Collections.unmodifiableList(getHttpSessionListeners());
633: * HttpSessionListener[] rv = new HttpSessionListener[listeners.size()];
634: *
635: * int index = 0;
636: * for (Iterator i = listeners.iterator(); i.hasNext();) {
637: * List l = (List) i.next();
638: * rv[index++] = (HttpSessionListener) l.get(1);
639: * }
640: * return rv;
641: * }
642: *
643: * public int __tc_session_getIdLength() {
644: * return sessionIDLength;
645: * }
646: *
647: * public String __tc_session_getServerId() {
648: * return null;
649: * }
650: *
651: * public String __tc_session_getSessionDelimiter() {
652: * return getCloneSeparator();
653: * }
654: *
655: * public int __tc_session_getSessionTimeoutSecs() {
656: * return getSessionTimeOut();
657: * }
658: *
659: * public boolean __tc_session_getTrackingEnabled() {
660: * return isSessionTrackingActive();
661: * }
662: *
663: * public boolean __tc_session_getURLRewritingEnabled() {
664: * return isUsingURL();
665: * }
666: *
667: * public InstrumentedSessionContext(SessionContextParameters sessioncontextparameters,
668: * SessionApplicationParameters sessionapplicationparameters) {
669: * super(sessioncontextparameters, sessionapplicationparameters);
670: * }
671: *
672: * IHttpSession createSessionData(String s) {
673: * return null;
674: * }
675: *
676: * void performInvalidation() {
677: * }
678: *
679: * }
680: * </pre>
681: */
682: }
|