# Provider resource file for the LDAP service provider.

# Factory for the response controls supported by this release.
java.naming.factory.control=com.sun.jndi.ldap.ctl.ResponseControlFactory

# AttrsToCorba: Turn entry with corbaObject objectclass into a org.omg.CORBA.Object
# MarshalledToObject: Turn entry with javaMarshalledObject into UnmarshalledObject
java.naming.factory.object=com.sun.jndi.ldap.obj.AttrsToCorba:com.sun.jndi.ldap.obj.MarshalledToObject

# RemoteToAttrs: Turn RMI/JRMP and RMI/IIOP object into javaMarshalledObject or
# 		corbaObject LDAP entry
# CorbaToAttrs: Turn CORBA object into corbaObject LDAP entry
# RemoteToCorbaToAttrs: Turn RMI/IIOP object into corbaObject LDAP entry. 
#  Note that there is no need to specify this in list unless RemoteToAttrs is
#  removed because RemotetoAttrs already handles this case
java.naming.factory.state=com.sun.jndi.ldap.obj.RemoteToAttrs:com.sun.jndi.ldap.obj.CorbaToAttrs
