package org.jacorb.orb;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1997-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
import java.util.HashSet;
import org.jacorb.config.Configuration;
import org.jacorb.config.ConfigurationException;
import org.jacorb.config.JacORBConfiguration;
import org.jacorb.orb.typecode.NullTypeCodeCache;
import org.jacorb.orb.typecode.NullTypeCodeCompactor;
import org.jacorb.orb.typecode.TypeCodeCache;
import org.jacorb.orb.typecode.TypeCodeCompactor;
import org.omg.CONV_FRAME.CodeSetComponentInfo;
import org.omg.CORBA.BAD_PARAM;
import org.omg.CORBA.BAD_TYPECODE;
import org.omg.CORBA.CompletionStatus;
import org.omg.CORBA.INITIALIZE;
import org.omg.CORBA.INTERNAL;
import org.omg.CORBA.NO_IMPLEMENT;
import org.omg.CORBA.TCKind;
import org.omg.CORBA.TypeCode;
import org.slf4j.Logger;
/**
* @author Gerald Brose, FU Berlin
*/
public class ORBSingleton
extends org.omg.CORBA_2_5.ORB
{
private static final String FACTORY_METHODS_MESG = "The Singleton ORB only permits factory methods";
private boolean doStrictCheckOnTypecodeCreation;
protected Logger logger;
protected IBufferManager bufferManager;
protected TypeCodeCache typeCodeCache;
protected TypeCodeCompactor typeCodeCompactor;
/**
* the configuration object for this ORB instance
*/
protected org.jacorb.config.Configuration configuration;
/**
* The definition of locally supported code sets provided to clients.
*/
protected CodeSetComponentInfo localCodeSetComponentInfo;
/**
* The native code set for wide character data.
*/
protected CodeSet nativeCodeSetWchar = CodeSet.UTF16_CODESET;
/**
* The native code set for character data.
*/
protected CodeSet nativeCodeSetChar = null; // will select from platform default;
/**
* in case a singleton orb is created the c'tor will access the JacORB configuration
* to configure the orb. otherwise configure needs to be called to properly set up
* the created instance.
*
* @param isSingleton determine if a singleton orb is created.
*/
protected ORBSingleton(boolean isSingleton)
{
super();
try
{
if (isSingleton)
{
configuration = JacORBConfiguration.getConfiguration(null, null, null, false);
// Don't call configure method as if this has been called from ORB::ctor
// class construction order can cause issues.
logger = configuration.getLogger("org.jacorb.orb.singleton");
doStrictCheckOnTypecodeCreation = configuration.getAttributeAsBoolean
("jacorb.interop.strict_check_on_tc_creation", true);
final BufferManagerFactory bufferManagerFactory = newBufferManagerFactory(configuration);
bufferManager = bufferManagerFactory.newSingletonBufferManager(configuration);
typeCodeCache = NullTypeCodeCache.getInstance();
typeCodeCompactor = NullTypeCodeCompactor.getInstance();
configureCodeset();
if (logger.isDebugEnabled())
{
logger.debug("BufferManagerFactory: " + bufferManagerFactory);
logger.debug("BufferManager: " + bufferManager);
logger.debug("jacorb.interop.strict_check_on_tc_creation set to " + doStrictCheckOnTypecodeCreation);
ClassLoader omgcl = org.omg.CORBA.ORB.class.getClassLoader ();
ClassLoader thiscl = this.getClass().getClassLoader();
if (omgcl != thiscl)
{
logger.debug ("OMG.ORB classloader (" + omgcl + ") does not match JacORB ORBSingleton classloader (" + thiscl + "). This may cause problems; see the ProgrammingGuide for further details");
}
}
}
}
catch (ConfigurationException e)
{
throw new INTERNAL(e.toString());
}
}
private BufferManagerFactory newBufferManagerFactory(final org.jacorb.config.Configuration configuration) throws ConfigurationException
{
return (BufferManagerFactory) configuration.getAttributeAsObject(BufferManagerFactory.PARAM_NAME, DefaultBufferManagerFactory.class.getName());
}
public ORBSingleton()
{
this(true);
}
protected void configure(Configuration config) throws ConfigurationException
{
configuration = config;
logger = configuration.getLogger("org.jacorb.orb");
doStrictCheckOnTypecodeCreation = configuration.getAttributeAsBoolean
("jacorb.interop.strict_check_on_tc_creation", true);
BufferManagerFactory bufferManagerFactory = newBufferManagerFactory(configuration);
bufferManager = bufferManagerFactory.newBufferManager
(((ORBSingleton)org.omg.CORBA.ORBSingleton.init()).getBufferManager(), configuration);
if (logger.isDebugEnabled())
{
logger.debug("BufferManagerFactory: " + bufferManagerFactory);
logger.debug("BufferManager: " + bufferManager);
logger.debug("jacorb.interop.strict_check_on_tc_creation set to " + doStrictCheckOnTypecodeCreation);
}
configureCodeset();
}
private void configureCodeset()
{
String ncsc = configuration.getAttribute("jacorb.native_char_codeset", "");
String ncsw = configuration.getAttribute("jacorb.native_wchar_codeset", "");
if (ncsc != null && ! ("".equals (ncsc)))
{
CodeSet codeset = CodeSet.getCodeSet(ncsc);
if (codeset != CodeSet.NULL_CODE_SET)
{
nativeCodeSetChar = codeset;
logger.debug ("Set default native char codeset to {} " + codeset);
}
else if (logger.isErrorEnabled())
{
logger.error("Cannot set default NCSC to " + ncsc);
}
}
// Fallback from above if we failed to set nativeCodeSetChar
if ( nativeCodeSetChar == null )
{
String sysenc = CodeSet.DEFAULT_PLATFORM_ENCODING;
for (int i = 0; i < CodeSet.KNOWN_ENCODINGS.length; i++)
{
CodeSet codeset = CodeSet.KNOWN_ENCODINGS[i];
if (codeset.supportsCharacterData( /* wide */ false ) && sysenc.equals( codeset.getName() ))
{
nativeCodeSetChar = codeset;
logger.debug ("Set default native char codeset to {}", codeset);
}
}
if ( nativeCodeSetChar == null )
{
// didn't match any supported char encodings, default to iso 8859-1
if (logger.isWarnEnabled())
{
logger.warn( "Warning - unknown codeset (" + sysenc + ") - defaulting to ISO-8859-1" );
}
nativeCodeSetChar = CodeSet.ISO8859_1_CODESET ;
}
}
if (ncsw != null && ! ("".equals (ncsw)))
{
CodeSet codeset = CodeSet.getCodeSet(ncsw);
if (codeset != CodeSet.NULL_CODE_SET)
{
nativeCodeSetWchar = codeset;
logger.debug ("Set default native wchar codeset to {}", codeset);
}
else if (logger.isErrorEnabled())
{
logger.error("Cannot set default NCSW to " + ncsw);
}
}
localCodeSetComponentInfo = new CodeSetComponentInfo();
localCodeSetComponentInfo.ForCharData = CodeSet.createCodeSetComponent( /* wide */ false, getTCSDefault() );
localCodeSetComponentInfo.ForWcharData = CodeSet.createCodeSetComponent( /* wide */ true, getTCSWDefault() );
}
/**
* Returns the logger of this singleton ORB. Used for testing.
*/
public Logger getLogger()
{
return logger;
}
/* factory methods: */
@Override
public org.omg.CORBA.Any create_any()
{
return new org.jacorb.orb.Any(this);
}
/**
* Determine if a character is ok to start an id.
* (Note that '_' is allowed here - it might have
* been inserted by the IDL compiler to avoid clashes
* with reserved Java identifiers )
* @param character the character in question.
*/
final protected static boolean legalStartChar(int character)
{
return ( character >= 'a' && character <= 'z')
|| ( character == '_')
|| ( character >= 'A' && character <= 'Z');
}
/**
* Some parts of JacORB cannot be elegantly configured from the outside
* and need access to the ORB's configuration retrieve config settings.
* This method should only be used in those restricted cases!
*/
public final org.jacorb.config.Configuration getConfiguration()
{
return configuration;
}
/**
* Determine if a character is ok for the middle of an id.
* @param ch the character in question.
*/
final protected static boolean legalNameChar(int ch)
{
return legalStartChar(ch)
|| (ch == '_')
|| (ch >= '0' && ch <= '9');
}
/**
* code>checkTCName</code> checks that a name is a legal IDL name
* (CORBA 2.6 4-59).
* @throws org.omg.CORBA.BAD_PARAM
*/
private void checkTCName (String name) throws BAD_PARAM
{
checkTCName(name, false);
}
/**
* <code>checkTCName</code> checks the name is a legal IDL name and
* may optionally allow a null string (CORBA 2.6 4-59).
*
* @param name a <code>String</code> value
* @param allowNull a <code>boolean</code> value
* @exception BAD_PARAM if an error occurs
*/
private void checkTCName (String name, boolean allowNull)
throws BAD_PARAM
{
if (name == null)
{
if (allowNull)
{
return;
}
throw new BAD_PARAM("Illegal null IDL name",
15,
CompletionStatus.COMPLETED_NO );
}
if( name.length() > 0 )
{
// check that name begins with an ASCII char
if( !legalStartChar( name.charAt(0)) )
{
throw new BAD_PARAM
(
"Illegal start character to IDL name: " + name,
15,
CompletionStatus.COMPLETED_NO
);
}
for( int i = 0; i < name.length(); i++ )
{
if( ! legalNameChar( name.charAt(i) ))
{
throw new BAD_PARAM("Illegal IDL name: " + name,
15,
CompletionStatus.COMPLETED_NO );
}
}
}
else
{
throw new BAD_PARAM("Illegal blank IDL name",
15,
CompletionStatus.COMPLETED_NO );
}
}
/**
* Check that a repository ID is legal
* (cf. CORBA 2.4 chapter 10, section 7.3
* @param repId a <code>String</code> value
* @exception BAD_PARAM if an error occurs
*/
private void checkTCRepositoryId( String repId )
throws BAD_PARAM
{
if( repId == null || repId.indexOf( ':' ) < 0 )
{
throw new BAD_PARAM("Illegal Repository ID: " + repId,
16,
CompletionStatus.COMPLETED_NO );
}
}
/**
* check that a type is a legal member type
* (cf. CORBA 2.4 chapter 10, section 7.3
* @throws org.omg.CORBA.BAD_PARAM
*/
private void checkTCMemberType( TypeCode typeCode )
throws BAD_TYPECODE
{
if( !org.jacorb.orb.TypeCode.isRecursive(typeCode) &&
(typeCode == null ||
typeCode.kind().value() == TCKind._tk_null ||
typeCode.kind().value() == TCKind._tk_void ||
typeCode.kind().value() == TCKind._tk_except
)
)
{
throw new BAD_TYPECODE("Illegal member TypeCode",
2,
CompletionStatus.COMPLETED_NO );
}
}
/* TypeCode factory section */
@Override
public TypeCode create_alias_tc( String id,
String name,
TypeCode original_type)
{
checkTCRepositoryId( id );
checkTCName (name, true);
checkTCMemberType( original_type );
return new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_alias,
id,
name,
original_type);
}
@Override
public TypeCode create_array_tc( int length, TypeCode element_type)
{
checkTCMemberType( element_type );
return new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_array,
length,
element_type);
}
@Override
public TypeCode create_enum_tc( String id,
String name,
String[] members)
{
return create_enum_tc (id, name, members, true);
}
/**
* Allows the possibility of not checking the name when creating this
* typecode. This is to cater for compact typecodes where the name
* may not be set. Checking of the name will always be true for user
* driven requests
*
* @param id the id
* @param name the name
* @param members the members
* @param checkName the check name
* @return the type code
*/
public TypeCode create_enum_tc( String id,
String name,
String [] members,
boolean checkName)
{
checkTCRepositoryId( id );
checkTCName (name, true);
if (checkName)
{
// check that member names are legal and unique
final HashSet<String> names = new HashSet<String>() ;
for( int i = 0; i < members.length; i++ )
{
boolean fault = false;
try
{
checkTCName( members[i] );
}
catch( BAD_PARAM e )
{
fault = true;
logger.debug("Typecode name check failed", e);
}
if((members[i] != null && names.contains(members[i])) || fault )
{
throw new BAD_PARAM("Illegal enum member name: " + members[i],
17,
CompletionStatus.COMPLETED_NO );
}
names.add(members[i]);
}
}
return new org.jacorb.orb.TypeCode( id, name, members);
}
@Override
public TypeCode create_exception_tc( String id,
String name,
org.omg.CORBA.StructMember[] members)
{
return create_exception_tc(id, name, members, true);
}
/**
* Allows the possibility of not checking the name when creating this
* typecode. This is to cater for compact typecodes where the name
* may not be set. Checking of the name will always be true for user
* driven requests
*
* @param id the id
* @param name the name
* @param members the members
* @param checkName the check name
* @return the type code
*/
public TypeCode create_exception_tc( String id,
String name,
org.omg.CORBA.StructMember[] members,
boolean checkName)
{
checkTCRepositoryId( id );
checkTCName (name, true);
// check that member names are legal and unique
final HashSet<String> names = new HashSet<String>() ;
for( int i = 0; i < members.length; i++ )
{
checkTCMemberType( members[i].type );
if (checkName)
{
boolean fault = false;
try
{
checkTCName( members[i].name );
}
catch( BAD_PARAM e )
{
fault = true;
logger.debug("Typecode name check failed", e);
}
if((members[i].name != null && names.contains( members[i].name )) || fault )
{
throw new BAD_PARAM("Illegal exception member name: " + members[i].name,
17,
CompletionStatus.COMPLETED_NO );
}
names.add(members[i].name);
}
}
return new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_except,
id,
name,
members);
}
@Override
public TypeCode create_interface_tc( String id, String name)
{
checkTCRepositoryId( id );
checkTCName (name, true);
return new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_objref,
id,
name);
}
@Override
public org.omg.CORBA.TypeCode create_fixed_tc( short digits,
short scale)
{
if (digits <= 0 || scale < 0 || scale > digits)
{
throw new org.omg.CORBA.BAD_PARAM
("Invalid combination of digits and scale factor");
}
return new org.jacorb.orb.TypeCode(digits, scale);
}
@Override
public org.omg.CORBA.TypeCode create_recursive_tc( String id )
{
checkTCRepositoryId( id );
return new org.jacorb.orb.TypeCode( id );
}
@Override
public org.omg.CORBA.TypeCode create_recursive_sequence_tc (int bound, int offset)
{
throw new NO_IMPLEMENT ("create_recursive_sequence_tc - NYI");
}
@Override
public TypeCode create_sequence_tc( int bound, TypeCode element_type)
{
checkTCMemberType( element_type );
TypeCode typeCode =
new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_sequence,
bound,
element_type);
return typeCode;
}
@Override
public TypeCode create_string_tc(int bound)
{
return new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_string, bound );
}
@Override
public TypeCode create_wstring_tc(int bound)
{
return new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_wstring, bound);
}
@Override
public TypeCode create_struct_tc(String id,
String name,
org.omg.CORBA.StructMember[] members)
{
return create_struct_tc (id, name, members, true);
}
/**
* Allows the possibility of not checking the name when creating this
* typecode. This is to cater for compact typecodes where the name
* may not be set. Checking of the name will always be true for user
* driven requests
*
* @param id the id
* @param name the name
* @param members the members
* @param checkName the check name
* @return the type code
*/
public TypeCode create_struct_tc(String id,
String name,
org.omg.CORBA.StructMember [] members,
boolean checkName)
{
checkTCRepositoryId( id );
checkTCName (name, true);
// check that member names are legal and unique
final HashSet<String> names = new HashSet<String>();
for( int i = 0; i < members.length; i++ )
{
if (checkName)
{
checkTCMemberType( members[i].type );
boolean fault = false;
try
{
checkTCName( members[i].name );
}
catch( BAD_PARAM e )
{
fault = true;
logger.debug("Typecode name check failed", e);
}
if((members[i].name != null && names.contains(members[i].name)) || fault )
{
throw new BAD_PARAM("Illegal struct member name: " + members[i].name + (fault? " (Bad PARAM) ": "" ),
17,
CompletionStatus.COMPLETED_NO );
}
names.add(members[i].name);
}
}
org.jacorb.orb.TypeCode typeCode =
new org.jacorb.orb.TypeCode( org.omg.CORBA.TCKind._tk_struct,
id,
name,
members);
return typeCode;
}
@Override
public TypeCode create_union_tc( String id,
String name,
TypeCode discriminator_type,
org.omg.CORBA.UnionMember[] members)
{
return create_union_tc(id, name, discriminator_type, members, true);
}
/**
* Allows the possibility of not checking the name when creating this
* typecode. This is to cater for compact typecodes where the name
* may not be set. Checking of the name will always be true for user
* driven requests
*
* @param id the id
* @param name the name
* @param discriminator_type the discriminator_type
* @param members the members
* @param checkName the check name
* @return the type code
*/
public TypeCode create_union_tc( String id,
String name,
TypeCode discriminator_type,
org.omg.CORBA.UnionMember [] members,
boolean checkName)
{
checkTCRepositoryId( id );
checkTCName (name, true);
// check discriminator type
TypeCode disc_tc =
org.jacorb.orb.TypeCode.originalType(discriminator_type);
if (disc_tc == null ||
!(disc_tc.kind().value() == TCKind._tk_short ||
disc_tc.kind().value() == TCKind._tk_long ||
disc_tc.kind().value() == TCKind._tk_longlong ||
disc_tc.kind().value() == TCKind._tk_ushort ||
disc_tc.kind().value() == TCKind._tk_ulong ||
disc_tc.kind().value() == TCKind._tk_ulonglong ||
disc_tc.kind().value() == TCKind._tk_char ||
disc_tc.kind().value() == TCKind._tk_boolean ||
disc_tc.kind().value() == TCKind._tk_enum
)
)
{
throw new BAD_PARAM("Illegal union discriminator type",
20,
CompletionStatus.COMPLETED_NO );
}
// check that member names are legal (they do not need to be unique)
for( int i = 0; i < members.length; i++ )
{
checkTCMemberType( members[i].type );
if (checkName)
{
try
{
checkTCName( members[i].name );
}
catch( BAD_PARAM e )
{
logger.debug("Typecode name check failed", e);
throw new BAD_PARAM("Illegal union member name: " + members[i].name,
17,
CompletionStatus.COMPLETED_NO );
}
}
// check that member type matches discriminator type or is default
org.omg.CORBA.Any label = members[i].label;
if (! discriminator_type.equivalent( label.type() ) &&
! ( label.type().kind().value() == TCKind._tk_octet &&
label.extract_octet() == (byte)0
)
)
{
throw new BAD_PARAM("Label type does not match discriminator type",
19,
CompletionStatus.COMPLETED_NO );
}
// check that member labels are unique
for( int j = 0; j < i; j++ )
{
if( label.equal( members[j].label ))
{
throw new BAD_PARAM("Duplicate union case label",
18,
CompletionStatus.COMPLETED_NO );
}
}
}
org.jacorb.orb.TypeCode typeCode =
new org.jacorb.orb.TypeCode( id,
name,
discriminator_type,
members);
// resolve any recursive references to this TypeCode in its members
return typeCode;
}
@Override
public TypeCode get_primitive_tc(org.omg.CORBA.TCKind tcKind)
{
return org.jacorb.orb.TypeCode.get_primitive_tc( tcKind.value() );
}
@Override
public org.omg.CORBA.TypeCode create_value_tc(String id,
String name,
short type_modifier,
TypeCode concrete_base,
org.omg.CORBA.ValueMember[] members)
{
checkTCRepositoryId( id );
// The name parameter should be a valid IDL name, but in the case of
// an RMI valuetype the ORB in jdk1.4 sends a dotted name (such as
// "some.package.SomeClass") over the wire. For interoperability with
// Sun's ORB we skip the name check in this case.
if ( !id.startsWith("RMI:") )
{
checkTCName (name, true);
}
return new org.jacorb.orb.TypeCode (id,
name,
type_modifier,
concrete_base,
members);
}
@Override
public org.omg.CORBA.TypeCode create_value_box_tc(String id,
String name,
TypeCode boxed_type)
{
checkTCRepositoryId( id );
checkTCName (name, true);
return new org.jacorb.orb.TypeCode (org.omg.CORBA.TCKind._tk_value_box,
id,
name,
boxed_type);
}
@Override
public org.omg.CORBA.TypeCode create_abstract_interface_tc(String id,
String name)
{
checkTCRepositoryId( id );
// strict_check_on_tc_creation is incompatible with Sun's ValueHandler,
// which calls create_abstract_interface_tc() passing an empty string
// as the name parameter. checkTCName() then throws
//`org.omg.CORBA.BAD_PARAM: Illegal blank IDL name'.
if ( doStrictCheckOnTypecodeCreation )
{
checkTCName (name, true);
}
return new org.jacorb.orb.TypeCode (org.omg.CORBA.TCKind._tk_abstract_interface,
id,
name);
}
@Override
public org.omg.CORBA.TypeCode create_local_interface_tc(String id,
String name)
{
checkTCRepositoryId( id );
checkTCName (name, true);
return new org.jacorb.orb.TypeCode (org.omg.CORBA.TCKind._tk_local_interface,
id,
name);
}
@Override
public org.omg.CORBA.TypeCode create_native_tc(String id,
String name)
{
checkTCRepositoryId( id );
checkTCName (name, true);
return new org.jacorb.orb.TypeCode (org.omg.CORBA.TCKind._tk_native,
id,
name);
}
/* not allowed on the singleton: */
@Override
public org.omg.CORBA.ExceptionList create_exception_list()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.NVList create_list (int count)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.NamedValue create_named_value
(String name, org.omg.CORBA.Any value, int flags)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
public org.omg.CORBA.NVList create_operation_list
(org.omg.CORBA.OperationDef oper)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.NVList create_operation_list
(org.omg.CORBA.Object obj)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.Object string_to_object(String str)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.Environment create_environment()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.ContextList create_context_list()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.portable.OutputStream create_output_stream()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.Current get_current()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.Context get_default_context()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.Request get_next_response()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public String[] list_initial_services()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public String object_to_string( org.omg.CORBA.Object obj)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public boolean poll_next_response()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public org.omg.CORBA.Object resolve_initial_references(String identifier)
throws org.omg.CORBA.ORBPackage.InvalidName
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public void send_multiple_requests_deferred(org.omg.CORBA.Request[] req)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public void send_multiple_requests_oneway(org.omg.CORBA.Request[] req)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
protected void set_parameters(String[] args, java.util.Properties props)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
protected void set_parameters(String[] args, java.util.Properties props, String id)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
protected void set_parameters(java.applet.Applet app, java.util.Properties props)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public void run()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public void shutdown(boolean wait_for_completion)
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public boolean work_pending()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
@Override
public void perform_work()
{
throw new org.omg.CORBA.NO_IMPLEMENT (FACTORY_METHODS_MESG);
}
public IBufferManager getBufferManager()
{
if (bufferManager == null)
{
throw new INITIALIZE ("JacORB ORB Singleton not initialized");
}
return bufferManager;
}
public TypeCodeCache getTypeCodeCache()
{
if (bufferManager == null)
{
throw new INITIALIZE ("JacORB ORB Singleton not initialized");
}
return typeCodeCache;
}
public TypeCodeCompactor getTypeCodeCompactor()
{
if (bufferManager == null)
{
throw new INITIALIZE ("JacORB ORB Singleton not initialized");
}
return typeCodeCompactor;
}
public CodeSet getTCSDefault()
{
return nativeCodeSetChar;
}
public CodeSet getTCSWDefault()
{
return nativeCodeSetWchar;
}
public CodeSetComponentInfo getLocalCodeSetComponentInfo()
{
return localCodeSetComponentInfo;
}
}