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: * InterceptorIntializer.java
020: *
021: * This class is responsible for initializing all the IIOP interceptors.
022: */
023:
024: // package path
025: package com.rift.coad.lib.interceptor.iiop;
026:
027: // imports
028: import java.util.StringTokenizer;
029: import org.omg.CORBA.LocalObject;
030: import org.omg.PortableInterceptor.ORBInitInfo;
031: import org.omg.PortableInterceptor.ORBInitializer;
032: import org.omg.PortableInterceptor.ClientRequestInterceptor;
033: import org.omg.PortableInterceptor.ServerRequestInterceptor;
034: import java.lang.reflect.Constructor;
035: import org.omg.IOP.Codec;
036: import org.omg.IOP.Encoding;
037: import org.omg.IOP.ENCODING_CDR_ENCAPS;
038:
039: // coadunation imports
040: import com.rift.coad.lib.configuration.Configuration;
041: import com.rift.coad.lib.configuration.ConfigurationFactory;
042:
043: /**
044: * This class is responsible for initializing all the IIOP interceptors.
045: *
046: * @author Brett Chaldecott
047: */
048: public class InterceptorIntializer extends LocalObject implements
049: ORBInitializer {
050:
051: // class constants
052: private static final String CLIENT_INTERCEPTORS = "client_interceptors";
053: private static final String SERVER_INTERCEPTORS = "server_interceptors";
054:
055: // local configuration
056: private Configuration config = null;
057:
058: /**
059: * Creates a new instance of InterceptorIntializer
060: *
061: * @exception SecurityInterceptorException
062: */
063: public InterceptorIntializer() throws SecurityInterceptorException {
064: try {
065: config = ConfigurationFactory.getInstance().getConfig(
066: this .getClass());
067: } catch (Exception ex) {
068: throw new SecurityInterceptorException(
069: "Failed to retrieve the configuration : "
070: + ex.getMessage(), ex);
071: }
072: }
073:
074: /**
075: * Called during ORB initialization.
076: *
077: * @param info The object to add the interceptors to
078: */
079: public void pre_init(ORBInitInfo info) {
080:
081: }
082:
083: /**
084: * Called during ORB initialization.
085: *
086: * @param info The object to add the interceptors to
087: */
088: public void post_init(ORBInitInfo info) {
089: try {
090: StringTokenizer tokenizer = new StringTokenizer(config
091: .getString(CLIENT_INTERCEPTORS), ",");
092: while (tokenizer.hasMoreTokens()) {
093: Class ref = Class.forName(tokenizer.nextToken().trim());
094: System.out.println("Retrieve interceptor class : "
095: + ref.getName());
096: Constructor constructor = ref
097: .getConstructor(ORBInitInfo.class);
098: info
099: .add_client_request_interceptor((ClientRequestInterceptor) constructor
100: .newInstance(info));
101:
102: }
103: tokenizer = new StringTokenizer(config
104: .getString(SERVER_INTERCEPTORS), ",");
105: while (tokenizer.hasMoreTokens()) {
106: Class ref = Class.forName(tokenizer.nextToken().trim());
107: System.out.println("Retrieve interceptor class : "
108: + ref.getName());
109: Constructor constructor = ref
110: .getConstructor(ORBInitInfo.class);
111: info
112: .add_server_request_interceptor((ServerRequestInterceptor) constructor
113: .newInstance(info));
114: System.out
115: .println("Add interceptor : " + ref.getName());
116: }
117:
118: // add in the ior interceptor
119: Encoding encoding = new Encoding(ENCODING_CDR_ENCAPS.value,
120: (byte) 1,/* GIOP version */
121: (byte) 2 /* GIOP version */);
122: Codec codec = info.codec_factory().create_codec(encoding);
123: info.add_ior_interceptor(new CodebaseIORInterceptor(codec));
124: } catch (Exception ex) {
125: System.out.println("Failed to initialize the interceptor");
126: ex.printStackTrace(System.out);
127: throw new SecurityInterceptorException(
128: "Failed to init the interceptors : "
129: + ex.getMessage(), ex);
130: }
131: }
132:
133: }
|