- /*
- * @(#)StubFactoryFactoryDynamicBase.java 1.11 04/05/25
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.impl.presentation.rmi;
-
- import java.rmi.Remote ;
- import javax.rmi.CORBA.Tie ;
-
- import javax.rmi.CORBA.Util;
-
- import org.omg.CORBA.CompletionStatus;
-
- import org.omg.CORBA.portable.IDLEntity ;
-
- import com.sun.corba.se.spi.presentation.rmi.PresentationManager;
- import com.sun.corba.se.spi.presentation.rmi.PresentationDefaults;
-
- import com.sun.corba.se.spi.orb.ORB;
-
- import com.sun.corba.se.spi.logging.CORBALogDomains ;
-
- import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
-
- public abstract class StubFactoryFactoryDynamicBase extends
- StubFactoryFactoryBase
- {
- protected final ORBUtilSystemException wrapper ;
-
- public StubFactoryFactoryDynamicBase()
- {
- wrapper = ORBUtilSystemException.get(
- CORBALogDomains.RPC_PRESENTATION ) ;
- }
-
- public PresentationManager.StubFactory createStubFactory(
- String className, boolean isIDLStub, String remoteCodeBase,
- Class expectedClass, ClassLoader classLoader)
- {
- Class cls = null ;
-
- try {
- cls = Util.loadClass( className, remoteCodeBase, classLoader ) ;
- } catch (ClassNotFoundException exc) {
- throw wrapper.classNotFound3(
- CompletionStatus.COMPLETED_MAYBE, exc, className ) ;
- }
-
- PresentationManager pm = ORB.getPresentationManager() ;
-
- if (IDLEntity.class.isAssignableFrom( cls ) &&
- !Remote.class.isAssignableFrom( cls )) {
- // IDL stubs must always use static factories.
- PresentationManager.StubFactoryFactory sff =
- pm.getStubFactoryFactory( false ) ;
- PresentationManager.StubFactory sf =
- sff.createStubFactory( className, true, remoteCodeBase,
- expectedClass, classLoader ) ;
- return sf ;
- } else {
- PresentationManager.ClassData classData = pm.getClassData( cls ) ;
- return makeDynamicStubFactory( pm, classData, classLoader ) ;
- }
- }
-
- public abstract PresentationManager.StubFactory makeDynamicStubFactory(
- PresentationManager pm, PresentationManager.ClassData classData,
- ClassLoader classLoader ) ;
-
- public Tie getTie( Class cls )
- {
- PresentationManager pm = ORB.getPresentationManager() ;
- return new ReflectiveTie( pm, wrapper ) ;
- }
-
- public boolean createsDynamicStubs()
- {
- return true ;
- }
- }