- /*
- * @(#)IdentifiableFactoryFinderBase.java 1.4 03/12/19
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.impl.ior ;
-
- import org.omg.CORBA_2_3.portable.InputStream ;
-
- import java.util.Map ;
- import java.util.HashMap ;
-
- import com.sun.corba.se.spi.orb.ORB ;
-
- import com.sun.corba.se.spi.ior.Identifiable ;
- import com.sun.corba.se.spi.ior.IdentifiableFactory ;
- import com.sun.corba.se.spi.ior.IdentifiableFactoryFinder ;
-
- import com.sun.corba.se.spi.logging.CORBALogDomains ;
-
- import com.sun.corba.se.impl.logging.IORSystemException ;
-
- public abstract class IdentifiableFactoryFinderBase implements
- IdentifiableFactoryFinder
- {
- private ORB orb ;
- private Map map ;
- protected IORSystemException wrapper ;
-
- protected IdentifiableFactoryFinderBase( ORB orb )
- {
- map = new HashMap() ;
- this.orb = orb ;
- wrapper = IORSystemException.get( orb,
- CORBALogDomains.OA_IOR ) ;
- }
-
- protected IdentifiableFactory getFactory(int id)
- {
- Integer ident = new Integer( id ) ;
- IdentifiableFactory factory = (IdentifiableFactory)(map.get(
- ident ) ) ;
- return factory ;
- }
-
- public abstract Identifiable handleMissingFactory( int id, InputStream is ) ;
-
- public Identifiable create(int id, InputStream is)
- {
- IdentifiableFactory factory = getFactory( id ) ;
-
- if (factory != null)
- return factory.create( is ) ;
- else
- return handleMissingFactory( id, is ) ;
- }
-
- public void registerFactory(IdentifiableFactory factory)
- {
- Integer ident = new Integer( factory.getId() ) ;
- map.put( ident, factory ) ;
- }
- }