001: /*
002: * CoadunationLib: The coaduntion implementation library.
003: * Copyright (C) 2006 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * SessionClientInterceptor.java
020: *
021: * This interceptor is responsible for setting up the client side of the
022: * connection so that a session can be setup on the server side appropriatly.
023: */
024:
025: // package path
026: package com.rift.coad.lib.interceptor.iiop;
027:
028: // java imports
029: import java.util.MissingResourceException;
030: import org.omg.CORBA.TIMEOUT;
031: import org.omg.IOP.ServiceContext;
032: import org.omg.PortableInterceptor.ClientRequestInterceptor;
033: import org.omg.PortableInterceptor.ClientRequestInfo;
034: import org.omg.PortableInterceptor.ForwardRequest;
035: import org.omg.PortableInterceptor.ORBInitInfo;
036:
037: // logging import
038: import org.apache.log4j.Logger;
039:
040: // coadunation imports
041: import com.rift.coad.lib.common.ObjectSerializer;
042: import com.rift.coad.lib.interceptor.credentials.Credential;
043: import com.rift.coad.lib.interceptor.InterceptorWrapper;
044: import com.rift.coad.lib.interceptor.ClientInterceptor;
045:
046: /**
047: * This interceptor is responsible for setting up the client side of the
048: * connection so that a session can be setup on the server side appropriatly.
049: *
050: * @author Brett Chaldecott
051: */
052: public class SessionClientInterceptor extends InterceptorWrapper
053: implements ClientRequestInterceptor {
054:
055: // the class log variable
056: protected static Logger log = Logger
057: .getLogger(SessionClientInterceptor.class.getName());
058:
059: /**
060: * Creates a new instance of SessionClientInterceptor
061: */
062: public SessionClientInterceptor(ORBInitInfo info) {
063: }
064:
065: /**
066: * This method returns the name of this interceptor.
067: *
068: * @return A string containing the name of this interceptor.
069: */
070: public String name() {
071: return "SessionClientInterceptor";
072: }
073:
074: /**
075: * This method is called to distory this object.
076: */
077: public void destroy() {
078: // do nothing for time being
079: }
080:
081: /**
082: * Indicates to the interceptor that an exception occurred.
083: */
084: public void receive_exception(ClientRequestInfo ri)
085: throws ForwardRequest {
086:
087: }
088:
089: /**
090: * Allows an Interceptor to query the information available when a request
091: * results in something other than a normal reply or an exception.
092: */
093: public void receive_other(ClientRequestInfo ri)
094: throws ForwardRequest {
095:
096: }
097:
098: /**
099: * Allows an Interceptor to query the information on a reply after it is
100: * returned from the server and before control is returned to the client.
101: *
102: * @param ri The client request information.
103: * @exception ForwardRequest
104: */
105: public void receive_reply(ClientRequestInfo ri) {
106:
107: }
108:
109: /**
110: * Allows an Interceptor to query information during a Time-Independent
111: * Invocation(TII) polling get reply sequence.
112: */
113: public void send_poll(ClientRequestInfo ri) throws TIMEOUT {
114:
115: }
116:
117: /**
118: * Allows an Interceptor to query request information and modify the service
119: * context before the request is sent to the server.
120: */
121: public void send_request(ClientRequestInfo ri)
122: throws ForwardRequest {
123: try {
124: log.debug("Send a request on the client side");
125: ClientInterceptor clientInterceptor = this
126: .getClientInterceptor();
127: Credential credential = clientInterceptor
128: .getSessionCredential();
129: ServiceContext securityContext = new ServiceContext(
130: Constants.STANDARD_SECURITY_CONTEXT_ID,
131: ObjectSerializer.serialize(credential));
132: ri.add_request_service_context(securityContext, true);
133: } catch (Exception ex) {
134: log
135: .debug("Failed to setup the context for the call to the server : "
136: + ex.getMessage());
137: }
138: }
139:
140: }
|