KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > mina > handler > multiton > SingleSessionIoHandlerDelegate


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

20 package org.apache.mina.handler.multiton;
21
22 import org.apache.mina.common.IdleStatus;
23 import org.apache.mina.common.IoHandler;
24 import org.apache.mina.common.IoSession;
25
26 /**
27  * An {@link IoHandler} implementation which delegates all requests to
28  * {@link SingleSessionIoHandler}s. A {@link SingleSessionIoHandlerFactory}
29  * is used to create a new {@link SingleSessionIoHandler} for each newly
30  * created session.
31  *
32  * @author The Apache Directory Project (mina-dev@directory.apache.org)
33  * @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (금, 13 7월 2007) $
34  */

35 public class SingleSessionIoHandlerDelegate implements IoHandler {
36     /**
37      * The key used to store the {@link SingleSessionIoHandler} as a session
38      * attribute.
39      */

40     public static final String JavaDoc HANDLER = SingleSessionIoHandlerDelegate.class
41             .getName()
42             + ".handler";
43
44     /**
45      * The {@link SingleSessionIoHandlerFactory} used to create new
46      * {@link SingleSessionIoHandler}s.
47      */

48     private final SingleSessionIoHandlerFactory factory;
49
50     /**
51      * Creates a new instance that uses the passed in
52      * {@link SingleSessionIoHandlerFactory} to create new
53      * {@link SingleSessionIoHandler}s.
54      *
55      * @param factory the factory for {@link SingleSessionIoHandler}s
56      */

57     public SingleSessionIoHandlerDelegate(SingleSessionIoHandlerFactory factory) {
58         if (factory == null) {
59             throw new NullPointerException JavaDoc("factory");
60         }
61         this.factory = factory;
62     }
63
64     /**
65      * Creates a new instance with the factory passed to the constructor of
66      * this class. The created handler is stored as a session
67      * attribute named {@link #HANDLER}.
68      *
69      * @see org.apache.mina.common.IoHandler#sessionCreated(org.apache.mina.common.IoSession)
70      */

71     public void sessionCreated(IoSession session) throws Exception JavaDoc {
72         SingleSessionIoHandler handler = factory.getHandler(session);
73         session.setAttribute(HANDLER, handler);
74         handler.sessionCreated();
75     }
76
77     /**
78      * Delegates the method call to the
79      * {@link SingleSessionIoHandler#sessionOpened()} method of the handler
80      * assigned to this session.
81      */

82     public void sessionOpened(IoSession session) throws Exception JavaDoc {
83         SingleSessionIoHandler handler = (SingleSessionIoHandler) session
84                 .getAttribute(HANDLER);
85         handler.sessionOpened();
86     }
87
88     /**
89      * Delegates the method call to the
90      * {@link SingleSessionIoHandler#sessionClosed()} method of the handler
91      * assigned to this session.
92      */

93     public void sessionClosed(IoSession session) throws Exception JavaDoc {
94         SingleSessionIoHandler handler = (SingleSessionIoHandler) session
95                 .getAttribute(HANDLER);
96         handler.sessionClosed();
97     }
98
99     /**
100      * Delegates the method call to the
101      * {@link SingleSessionIoHandler#sessionIdle(IdleStatus)} method of the
102      * handler assigned to this session.
103      */

104     public void sessionIdle(IoSession session, IdleStatus status)
105             throws Exception JavaDoc {
106         SingleSessionIoHandler handler = (SingleSessionIoHandler) session
107                 .getAttribute(HANDLER);
108         handler.sessionIdle(status);
109     }
110
111     /**
112      * Delegates the method call to the
113      * {@link SingleSessionIoHandler#exceptionCaught(Throwable)} method of the
114      * handler assigned to this session.
115      */

116     public void exceptionCaught(IoSession session, Throwable JavaDoc cause)
117             throws Exception JavaDoc {
118         SingleSessionIoHandler handler = (SingleSessionIoHandler) session
119                 .getAttribute(HANDLER);
120         handler.exceptionCaught(cause);
121     }
122
123     /**
124      * Delegates the method call to the
125      * {@link SingleSessionIoHandler#messageReceived(Object)} method of the
126      * handler assigned to this session.
127      */

128     public void messageReceived(IoSession session, Object JavaDoc message)
129             throws Exception JavaDoc {
130         SingleSessionIoHandler handler = (SingleSessionIoHandler) session
131                 .getAttribute(HANDLER);
132         handler.messageReceived(message);
133     }
134
135     /**
136      * Delegates the method call to the
137      * {@link SingleSessionIoHandler#messageSent(Object)} method of the handler
138      * assigned to this session.
139      */

140     public void messageSent(IoSession session, Object JavaDoc message) throws Exception JavaDoc {
141         SingleSessionIoHandler handler = (SingleSessionIoHandler) session
142                 .getAttribute(HANDLER);
143         handler.messageSent(message);
144     }
145 }
146
Popular Tags