- /*
- * @(#)PresentationManager.java 1.9 04/06/21
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.spi.presentation.rmi ;
-
- import java.util.Map ;
-
- import java.lang.reflect.Method ;
- import java.lang.reflect.InvocationHandler ;
-
- import javax.rmi.CORBA.Tie ;
-
- import com.sun.corba.se.spi.orb.ORB ;
- import com.sun.corba.se.spi.orbutil.proxy.InvocationHandlerFactory ;
-
-
- /** Provides access to RMI-IIOP stubs and ties.
- * Any style of stub and tie generation may be used.
- * This includes compiler generated stubs and runtime generated stubs
- * as well as compiled and reflective ties. There is normally
- * only one instance of this interface per VM. The instance
- * is obtained from the static method
- * com.sun.corba.se.spi.orb.ORB.getPresentationManager.
- * <p>
- * Note that
- * the getClassData and getDynamicMethodMarshaller methods
- * maintain caches to avoid redundant computation.
- */
- public interface PresentationManager
- {
- /** Creates StubFactory and Tie instances.
- */
- public interface StubFactoryFactory
- {
- /** Return the standard name of a stub (according to the RMI-IIOP specification
- * and rmic). This is needed so that the name of a stub is known for
- * standalone clients of the app server.
- */
- String getStubName( String className ) ;
-
- /** Create a stub factory for stubs for the interface whose type is given by
- * className. className may identify either an IDL interface or an RMI-IIOP
- * interface.
- * @param className The name of the remote interface as a Java class name.
- * @param isIDLStub True if className identifies an IDL stub, else false.
- * @param remoteCodeBase The CodeBase to use for loading Stub classes, if
- * necessary (may be null or unused).
- * @param expectedClass The expected stub type (may be null or unused).
- * @param classLoader The classLoader to use (may be null).
- */
- PresentationManager.StubFactory createStubFactory( String className,
- boolean isIDLStub, String remoteCodeBase, Class expectedClass,
- ClassLoader classLoader);
-
- /** Return a Tie for the given class.
- */
- Tie getTie( Class cls ) ;
-
- /** Return whether or not this StubFactoryFactory creates StubFactory
- * instances that create dynamic stubs and ties. At the top level,
- * true indicates that rmic -iiop is not needed for generating stubs
- * or ties.
- */
- boolean createsDynamicStubs() ;
- }
-
- /** Creates the actual stub needed for RMI-IIOP remote
- * references.
- */
- public interface StubFactory
- {
- /** Create a new dynamic stub. It has the type that was
- * used to create this factory.
- */
- org.omg.CORBA.Object makeStub() ;
-
- /** Return the repository ID information for all Stubs
- * created by this stub factory.
- */
- String[] getTypeIds() ;
- }
-
- public interface ClassData
- {
- /** Get the class used to create this ClassData instance
- */
- Class getMyClass() ;
-
- /** Get the IDLNameTranslator for the class used to create
- * this ClassData instance.
- */
- IDLNameTranslator getIDLNameTranslator() ;
-
- /** Return the array of repository IDs for all of the remote
- * interfaces implemented by this class.
- */
- String[] getTypeIds() ;
-
- /** Get the InvocationHandlerFactory that is used to create
- * an InvocationHandler for dynamic stubs of the type of the
- * ClassData.
- */
- InvocationHandlerFactory getInvocationHandlerFactory() ;
-
- /** Get the dictionary for this ClassData instance.
- * This is used to hold class-specific information for a Class
- * in the class data. This avoids the need to create other
- * caches for accessing the information.
- */
- Map getDictionary() ;
- }
-
- /** Get the ClassData for a particular class.
- * This class may be an implementation class, in which
- * case the IDLNameTranslator handles all Remote interfaces implemented by
- * the class. If the class implements more than one remote interface, and not
- * all of the remote interfaces are related by inheritance, then the type
- * IDs have the implementation class as element 0.
- */
- ClassData getClassData( Class cls ) ;
-
- /** Given a particular method, return a DynamicMethodMarshaller
- * for that method. This is used for dynamic stubs and ties.
- */
- DynamicMethodMarshaller getDynamicMethodMarshaller( Method method ) ;
-
- /** Return the registered StubFactoryFactory.
- */
- StubFactoryFactory getStubFactoryFactory( boolean isDynamic ) ;
-
- /** Register the StubFactoryFactory. Note that
- * a static StubFactoryFactory is always required for IDL. The
- * dynamic stubFactoryFactory is optional.
- */
- void setStubFactoryFactory( boolean isDynamic, StubFactoryFactory sff ) ;
-
- /** Equivalent to getStubFactoryFactory( true ).getTie( null ).
- * Provided for compatibility with earlier versions of PresentationManager
- * as used in the app server. The class argument is ignored in
- * the dynamic case, so this is safe.
- */
- Tie getTie() ;
-
- /** Returns the value of the com.sun.CORBA.ORBUseDynamicStub
- * property.
- */
- boolean useDynamicStubs() ;
- }