Package org.apache.yoko.rmi.impl

Source Code of org.apache.yoko.rmi.impl.RMIInterceptor

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

package org.apache.yoko.rmi.impl;

import java.util.logging.Logger;

import org.omg.CORBA.Any;
import org.omg.CORBA.LocalObject;
import org.omg.CORBA.ORB;
import org.omg.IOP.Codec;
import org.omg.IOP.TAG_JAVA_CODEBASE;
import org.omg.IOP.TaggedComponent;
import org.omg.IOP.CodecPackage.InvalidTypeForEncoding;
import org.omg.PortableInterceptor.IORInfo;
import org.omg.PortableInterceptor.IORInterceptor;

public class RMIInterceptor extends LocalObject implements IORInterceptor {

    static final Logger logger = Logger.getLogger(RMIInterceptor.class
            .getName());

    public RMIInterceptor(Codec codec) {
        this.codec = codec;
    }
   
    private Codec codec;

    static ThreadLocal currentCodeBase = new ThreadLocal();

    static void setCurrent(String codeBase) {
        currentCodeBase.set(codeBase);
    }

    /**
     * @see org.omg.PortableInterceptor.IORInterceptorOperations#establish_components(IORInfo)
     */
    public void establish_components(IORInfo info) {

        String codeBase = (String) currentCodeBase.get();
        if (codeBase != null) {

            logger.finer("registering " + codeBase + " for ORB");

            //
            // Create encapsulation
            //
           
            Any any = ORB.init().create_any();
           
            any.insert_string(codeBase);

            try {
                byte[] data = codec.encode(any);
                TaggedComponent component = new TaggedComponent(
                        TAG_JAVA_CODEBASE.value, data);

                info.add_ior_component(component);
            } catch (InvalidTypeForEncoding e) {
                logger.warning("Failed to add java codebase to IOR" + e);
            }
        }
    }

    /**
     * @see org.omg.PortableInterceptor.InterceptorOperations#name()
     */
    public String name() {
        return "RMI IOR Interceptor";
    }

    /**
     * @see org.omg.PortableInterceptor.InterceptorOperations#destroy()
     */
    public void destroy() {
    }
}
TOP

Related Classes of org.apache.yoko.rmi.impl.RMIInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.