/*
 * @(#)StubFactoryBase.java	1.9 10/03/23
 *
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package com.sun.corba.se.impl.presentation.rmi ;

import javax.rmi.CORBA.Tie ;

import java.lang.reflect.InvocationHandler ;
import java.lang.reflect.Proxy ;

import com.sun.corba.se.spi.presentation.rmi.PresentationManager ;
import com.sun.corba.se.spi.presentation.rmi.DynamicStub ;
import com.sun.corba.se.spi.presentation.rmi.StubAdapter ;

import com.sun.corba.se.spi.orbutil.proxy.InvocationHandlerFactory ;
import com.sun.corba.se.spi.orbutil.proxy.LinkedInvocationHandler ;

public abstract class StubFactoryBase implements PresentationManager.StubFactory 
{
    private String[] typeIds = null ;

    protected final PresentationManager.ClassData classData ;

    protected StubFactoryBase( PresentationManager.ClassData classData ) 
    {
	this.classData = classData ;
    }

    public synchronized String[] getTypeIds()
    {
	if (typeIds == null) {
	    if (classData == null) {
		org.omg.CORBA.Object stub = makeStub() ;
		typeIds = StubAdapter.getTypeIds( stub ) ;
	    } else {
		typeIds = classData.getTypeIds() ;
	    }
	}

	return typeIds ;
    }
}
