diff options
author | Tom Tromey <tromey@redhat.com> | 2001-10-24 21:39:24 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2001-10-24 21:39:24 +0000 |
commit | 6dee3a2320540b9b654d9a5ef7626e90246ffe80 (patch) | |
tree | 77f03cf3fdeebbd2596223d2c7c3196a423c195c /libjava/javax/naming/spi | |
parent | e1cb83c58069ad5b04dcd161564d159562dd8f25 (diff) | |
download | gcc-6dee3a2320540b9b654d9a5ef7626e90246ffe80.zip gcc-6dee3a2320540b9b654d9a5ef7626e90246ffe80.tar.gz gcc-6dee3a2320540b9b654d9a5ef7626e90246ffe80.tar.bz2 |
Makefile.in: Rebuilt.
2001-10-24 Tom Tromey <tromey@redhat.com>
Warren Levy <warrenl@redhat.com>
* Makefile.in: Rebuilt.
* Makefile.am (javax_source_files): New macro.
(ordinary_java_source_files): Added javax_source_files.
(libgcj.jar): Search javax for class files.
* javax/naming/LinkException.java (toString): Wrote.
(toString(boolean)): Likewise.
* javax/naming/ldap/InitialLdapContext.java: New file.
* javax/naming/directory/InitialDirContext.java: Wrote.
* javax/naming/spi/NamingManager.java (getPlusPath): Now has
package-private protection.
(getURLContext): Likewise.
(NamingManager): Likewise.
* javax/naming/spi/DirectoryManager.java: New file.
* javax/naming/directory/BasicAttributes.java: New file.
* javax/naming/directory/BasicAttribute.java: New file.
* javax/naming/spi/ResolveResult.java
(ResolveResult(Object,String)): Wrote.
(appendRemainingName): Uncommented body.
(appendRemainingComponent): Likewise.
* javax/naming/ldap/ControlFactory.java: New file.
* javax/naming/directory/AttributeModificationException.java
(toString): Wrote.
* javax/naming/spi/NamingManager.java (NamingManager): New
constructor.
(setInitialContextFactoryBuilder): Wrote.
(getInitialContext): Look in system properties for class name as
well. Use Class.forName().
(getURLContext): Wrote.
(ofb): New field.
(setObjectFactoryBuilder): Wrote.
(getObjectInstance): Wrote.
(getContinuationContext): Wrote.
(getPlusPath): New private method.
(getStateToBind): Wrote.
* javax/naming/CannotProceedException.java: Added missing methods &
fields.
* javax/naming/LinkException.java: Added missing methods & fields.
* javax/naming/ReferralException.java (ReferralException): Made
constructor protected per spec.
Added missing abstract methods.
* javax/naming/directory/Attribute.java: Updated copyright.
* javax/naming/directory/AttributeModificationException.java: Ditto.
* javax/naming/directory/Attributes.java: Ditto.
* javax/naming/directory/DirContext.java: Ditto.
* javax/naming/spi/NamingManager.java: Ditto.
* javax/naming/spi/ResolveResult.java: Added comment.
* javax/naming/directory/Attribute.java: Added missing interface
methods.
* javax/naming/directory/AttributeModificationException.java:
Added missing methods & fields.
* javax/naming/directory/directory/Attributes.java: Added missing
interface methods.
* javax/naming/directory/SearchControls.java: Maded serialized fields
private.
* javax/naming/event/NamingEvent.java: Added comment.
* javax/naming/event/NamingExceptionEvent.java: Maded serialized field
private.
* javax/naming/ldap/UnsolicitedNotificationEvent.java: Maded
serialized field private.
* javax/naming/spi/NamingManager.java: Added missing field and stubbed
missing methods.
* javax/naming/directory/DirContext.java: Added missing interface
fields & methods.
* javax/naming/directory/InitialDirContext.java: Stubbed missing
methods.
* javax/naming/directory/ModificationItem.java: New class.
* javax/naming/directory/SearchResult.java: New class.
* javax/naming/directory/SearchControls.java: New class.
* javax/naming/event/EventContext.java: New class.
* javax/naming/event/EventDirContext.java: New class.
* javax/naming/event/NamespaceChangeListener.java: New class.
* javax/naming/event/NamingEvent.java: New class.
* javax/naming/event/NamingExceptionEvent.java: New class.
* javax/naming/event/NamingListener.java: New class.
* javax/naming/event/ObjectChangeListener.java: New class.
* javax/naming/ldap/Control.java: New class.
* javax/naming/ldap/ExtendedRequest.java: New class.
* javax/naming/ldap/ExtendedResponse.java: New class.
* javax/naming/ldap/HasControls.java: New class.
* javax/naming/ldap/LdapContext.java: New class.
* javax/naming/ldap/LdapReferralException.java: New class.
* javax/naming/ldap/UnsolicitedNotification.java: New class.
* javax/naming/ldap/UnsolicitedNotificationEvent.java: New class.
* javax/naming/ldap/UnsolicitedNotificationListener.java: New class.
* javax/naming/spi/DirObjectFactory.java: New class.
* javax/naming/spi/DirStateFactory.java: New class.
* javax/naming/spi/ObjectFactoryBuilder.java: New class.
* javax/naming/spi/ResolveResult.java: New class.
* javax/naming/spi/Resolver.java: New class.
* javax/naming/spi/StateFactory.java: New class.
* javax/naming/spi/ObjectFactory.java: Made an interface per spec.
* java/rmi/RemoteException.java: New class.
* javax/transaction/HeuristicCommitException.java: New class.
* javax/transaction/HeuristicMixedException.java: New class.
* javax/transaction/HeuristicRollbackException.java: New class.
* javax/transaction/NotSupportedException.java: New class.
* javax/transaction/RollbackException.java: New class.
* javax/transaction/Status.java: New class.
* javax/transaction/Synchronization.java: New class.
* javax/transaction/SystemException.java: New class.
* javax/transaction/Transaction.java: New class.
* javax/transaction/TransactionManager.java: New class.
* javax/transaction/UserTransaction.java: New class.
* javax/transaction/xa/XAException.java: Added public static fields.
* javax/transaction/xa/XAResource.java: New class.
* javax/transaction/xa/Xid.java: New class.
* javax/naming/CompoundName.java (CompoundName(String)): Reverse
elements if required. Handle case where quote is at end of
string.
* javax/naming/CompoundName.java (CompoundName(String)): Handle
text left at end of parsing.
(toString): Handle empty element at beginning.
* javax/naming/CompositeName.java (toString): Handle empty element
at beginning.
(CompositeName(String)): Handle text left at end of parsing.
Correctly compute boundary condition for quoting.
* javax/naming/CompoundName.java: New file.
* javax/naming/CompositeName.java: New file.
* javax/naming/Binding.java: New file.
* javax/naming/LinkRef.java: New file.
* javax/naming/NameClassPair.java: New file.
* javax/naming/Reference.java (addrs, classFactory,
classFactoryLocation): New fields.
(className): Now protected.
(Reference): New constructors.
(add): Now public. Implemented.
(get(String)): Likewise.
(add(int,RefAddr)): New method.
(clear): Likewise.
(clone): Likewise.
(equals): Likewise.
(get(int)): Likewise.
(getAll): Likewise.
(getFactoryClassLocation): Likewise.
(getFactoryClassName): Likewise.
(hashCode): Likewise.
(remove): Likewise.
(size): Likewise.
(toString): Likewise.
* javax/transaction/xa/XAException.java: New file.
* javax/transaction/TransactionRolledbackException.java: New file.
* javax/transaction/TransactionRequiredException.java: New file.
* javax/transaction/InvalidTransactionException.java: New file.
* javax/naming/directory/SchemaViolationException.java: Use
correct package. Import NamingException.
* javax/naming/directory/NoSuchAttributeException.java,
javax/naming/directory/InvalidSearchFilterException.java,
javax/naming/directory/InvalidSearchControlsException.java,
javax/naming/directory/InvalidAttributesException.java,
javax/naming/directory/InvalidAttributeValueException.java,
javax/naming/directory/InvalidAttributeIdentifierException.java,
javax/naming/directory/AttributeModificationException.java,
javax/naming/directory/AttributeInUseException.java: Likewise.
* javax/naming/directory/InitialDirContext.java (getAttributes):
Stub implementation.
* javax/naming/RefAddr.java (RefAddr): Reindented.
(equals): Renamed and reindented.
* javax/naming/BinaryRefAddr.java (equals): Renamed and
reindented.
Co-Authored-By: Warren Levy <warrenl@redhat.com>
From-SVN: r46474
Diffstat (limited to 'libjava/javax/naming/spi')
-rw-r--r-- | libjava/javax/naming/spi/DirObjectFactory.java | 24 | ||||
-rw-r--r-- | libjava/javax/naming/spi/DirStateFactory.java | 50 | ||||
-rw-r--r-- | libjava/javax/naming/spi/DirectoryManager.java | 204 | ||||
-rw-r--r-- | libjava/javax/naming/spi/NamingManager.java | 315 | ||||
-rw-r--r-- | libjava/javax/naming/spi/ObjectFactory.java | 9 | ||||
-rw-r--r-- | libjava/javax/naming/spi/ObjectFactoryBuilder.java | 23 | ||||
-rw-r--r-- | libjava/javax/naming/spi/ResolveResult.java | 93 | ||||
-rw-r--r-- | libjava/javax/naming/spi/Resolver.java | 23 | ||||
-rw-r--r-- | libjava/javax/naming/spi/StateFactory.java | 22 |
9 files changed, 740 insertions, 23 deletions
diff --git a/libjava/javax/naming/spi/DirObjectFactory.java b/libjava/javax/naming/spi/DirObjectFactory.java new file mode 100644 index 0000000..6749ff3 --- /dev/null +++ b/libjava/javax/naming/spi/DirObjectFactory.java @@ -0,0 +1,24 @@ +/* Copyright (C) 2001 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package javax.naming.spi; +import javax.naming.*; +import javax.naming.directory.*; +import java.util.Hashtable; + +/** + * @author Warren Levy <warrenl@redhat.com> + * @date June 1, 2001 + */ + +public interface DirObjectFactory extends ObjectFactory +{ + public Object getObjectInstance(Object obj, Name name, Context nameCtx, + Hashtable environment, Attributes attrs) + throws Exception; +} diff --git a/libjava/javax/naming/spi/DirStateFactory.java b/libjava/javax/naming/spi/DirStateFactory.java new file mode 100644 index 0000000..dbd35c7 --- /dev/null +++ b/libjava/javax/naming/spi/DirStateFactory.java @@ -0,0 +1,50 @@ +/* Copyright (C) 2001 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package javax.naming.spi; +import javax.naming.*; +import javax.naming.directory.*; +import java.util.Hashtable; + +/** + * @author Warren Levy <warrenl@redhat.com> + * @date June 1, 2001 + */ + +public interface DirStateFactory extends StateFactory +{ + // Inner class + + public static class Result + { + private Object obj; + private Attributes outAttrs; + + public Result(Object obj, Attributes outAttrs) + { + this.obj = obj; + this.outAttrs = outAttrs; + } + + public Object getObject() + { + return obj; + } + + public Attributes getAttributes() + { + return outAttrs; + } + } + + public DirStateFactory.Result getStateToBind(Object obj, Name name, + Context nameCtx, + Hashtable environment, + Attributes inAttrs) + throws NamingException; +} diff --git a/libjava/javax/naming/spi/DirectoryManager.java b/libjava/javax/naming/spi/DirectoryManager.java new file mode 100644 index 0000000..33872f4 --- /dev/null +++ b/libjava/javax/naming/spi/DirectoryManager.java @@ -0,0 +1,204 @@ +/* Copyright (C) 2000, 2001 Free Software Foundation + + This file is part of libgcj. + + This software is copyrighted work licensed under the terms of the + Libgcj License. Please consult the file "LIBGCJ_LICENSE" for + details. */ + +package javax.naming.spi; + +import javax.naming.*; +import javax.naming.directory.*; +import java.util.Hashtable; +import java.util.StringTokenizer; +import java.util.Enumeration; + +/** + * @author Tom Tromey <tromey@redhat.com> + * @date June 25, 2001 + */ +public class DirectoryManager extends NamingManager +{ + // Can't instantiate this class. + DirectoryManager () + { + } + + public static DirContext getContinuationDirContext (CannotProceedException c) + throws NamingException + { + return (DirContext) getContinuationContext (c); + } + + // Try to create an object using the factory. Return null on + // failure. + private static Object tryCreateObject (ObjectFactory factory, + Object refInfo, + Name name, + Context nameCtx, + Hashtable environment, + Attributes attrs) + throws Exception + { + if (factory instanceof DirObjectFactory) + { + DirObjectFactory dof = (DirObjectFactory) factory; + return dof.getObjectInstance (refInfo, name, nameCtx, + environment, attrs); + } + else + return factory.getObjectInstance (refInfo, name, nameCtx, + environment); + } + + public static Object getObjectInstance (Object refInfo, Name name, + Context nameCtx, + Hashtable environment, + Attributes attrs) + throws Exception + { + ObjectFactory factory = null; + + if (ofb != null) + factory = ofb.createObjectFactory (refInfo, environment); + else + { + // First see if we have a Reference or a Referenceable. If so + // we do some special processing. + Object ref2 = refInfo; + if (refInfo instanceof Referenceable) + ref2 = ((Referenceable) refInfo).getReference (); + if (ref2 instanceof Reference) + { + Reference ref = (Reference) ref2; + + // If we have a factory class name then we use that. + String fClass = ref.getFactoryClassName (); + if (fClass != null) + { + // Exceptions here are passed to the caller. + Class k = Class.forName (fClass); + factory = (ObjectFactory) k.newInstance (); + } + else + { + // There's no factory class name. If the address is a + // StringRefAddr with address type `URL', then we try + // the URL's context factory. + Enumeration e = ref.getAll (); + while (e.hasMoreElements ()) + { + RefAddr ra = (RefAddr) e.nextElement (); + if (ra instanceof StringRefAddr + && "URL".equals (ra.getType ())) + { + factory + = (ObjectFactory) getURLContext (refInfo, + name, + nameCtx, + (String) ra.getContent (), + environment); + Object obj = tryCreateObject (factory, + refInfo, + name, + nameCtx, + environment, + attrs); + if (obj != null) + return obj; + } + } + + // Have to try the next step. + factory = null; + } + } + + // Now look at OBJECT_FACTORIES to find the factory. + if (factory == null) + { + StringTokenizer tokens = getPlusPath (Context.OBJECT_FACTORIES, + environment, nameCtx); + + while (tokens.hasMoreTokens ()) + { + String klassName = tokens.nextToken (); + Class k = Class.forName (klassName); + factory = (ObjectFactory) k.newInstance (); + Object obj = tryCreateObject (factory, refInfo, name, + nameCtx, environment, attrs); + if (obj != null) + return obj; + } + + // Failure. + return refInfo; + } + } + + if (factory == null) + return refInfo; + Object obj = tryCreateObject (factory, refInfo, name, + nameCtx, environment, attrs); + return obj == null ? refInfo : obj; + } + + public static DirStateFactory.Result getStateToBind (Object obj, + Name name, + Context nameCtx, + Hashtable environment, + Attributes attrs) + throws NamingException + { + StringTokenizer tokens = getPlusPath (Context.STATE_FACTORIES, + environment, nameCtx); + while (tokens.hasMoreTokens ()) + { + String klassName = tokens.nextToken (); + try + { + Class k = Class.forName (klassName); + StateFactory factory = (StateFactory) k.newInstance (); + + DirStateFactory.Result result = null; + if (factory instanceof DirStateFactory) + { + DirStateFactory dsf = (DirStateFactory) factory; + result = dsf.getStateToBind (obj, name, nameCtx, environment, + attrs); + } + else + { + Object o = factory.getStateToBind (obj, name, nameCtx, + environment); + if (o != null) + result = new DirStateFactory.Result (o, attrs); + } + if (result != null) + return result; + } + catch (ClassNotFoundException _1) + { + // Ignore it. + } + catch (ClassCastException _2) + { + // This means that the class we found was not an + // ObjectFactory or that the factory returned something + // which was not a Context. + } + catch (InstantiationException _3) + { + // If we couldn't instantiate the factory we might get + // this. + } + catch (IllegalAccessException _4) + { + // Another possibility when instantiating. + } + } + + return new DirStateFactory.Result (obj, attrs); + } +} diff --git a/libjava/javax/naming/spi/NamingManager.java b/libjava/javax/naming/spi/NamingManager.java index 9cb814e..53eeb3a 100644 --- a/libjava/javax/naming/spi/NamingManager.java +++ b/libjava/javax/naming/spi/NamingManager.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Copyright (C) 2000, 2001 Free Software Foundation This file is part of libgcj. @@ -8,19 +8,28 @@ package javax.naming.spi; -import java.util.Hashtable; +import java.util.*; import javax.naming.*; public class NamingManager { + public static final String CPE = "java.naming.spi.CannotProceedException"; + private static InitialContextFactoryBuilder icfb = null; + private static ObjectFactoryBuilder ofb = null; + + // This class cannot be instantiated. + NamingManager () + { + } public static boolean hasInitialContextFactoryBuilder () { return icfb != null; } - public static Context getInitialContext (Hashtable environment) throws NamingException + public static Context getInitialContext (Hashtable environment) + throws NamingException { InitialContextFactory icf = null; @@ -33,25 +42,297 @@ public class NamingManager java_naming_factory_initial = (String) environment.get (Context.INITIAL_CONTEXT_FACTORY); if (java_naming_factory_initial == null) - throw new NoInitialContextException ("Can't find property: " + Context.INITIAL_CONTEXT_FACTORY); - - try { - icf = (InitialContextFactory) Thread.currentThread().getContextClassLoader().loadClass(java_naming_factory_initial).newInstance(); - } catch (Exception exception) { - NoInitialContextException e - = new NoInitialContextException("Can't load InitialContextFactory class: " + java_naming_factory_initial); - e.setRootCause(exception); - throw e; - } + java_naming_factory_initial = + System.getProperty (Context.INITIAL_CONTEXT_FACTORY); + if (java_naming_factory_initial == null) + throw new + NoInitialContextException ("Can't find property: " + + Context.INITIAL_CONTEXT_FACTORY); + + try + { + icf = (InitialContextFactory) Class.forName (java_naming_factory_initial).newInstance (); + } + catch (Exception exception) + { + NoInitialContextException e + = new NoInitialContextException ("Can't load InitialContextFactory class: " + + java_naming_factory_initial); + e.setRootCause(exception); + throw e; + } } - + return icf.getInitialContext (environment); } - public static Context getURLContext(String scheme, - Hashtable environment) + static Context getURLContext (Object refInfo, + Name name, + Context nameCtx, + String scheme, + Hashtable environment) + throws NamingException + { + String prefixes = null; + if (environment != null) + prefixes = (String) environment.get (Context.URL_PKG_PREFIXES); + if (prefixes == null) + prefixes = System.getProperty (Context.URL_PKG_PREFIXES); + if (prefixes == null) + { + // Specified as the default in the docs. Unclear if this is + // right for us. + prefixes = "com.sun.jndi.url"; + } + + scheme += "URLContextFactory"; + + StringTokenizer tokens = new StringTokenizer (prefixes, ":"); + while (tokens.hasMoreTokens ()) + { + String aTry = tokens.nextToken (); + try + { + Class factoryClass = Class.forName (aTry + "." + scheme); + ObjectFactory factory = + (ObjectFactory) factoryClass.newInstance (); + Object obj = factory.getObjectInstance (refInfo, name, + nameCtx, environment); + Context ctx = (Context) obj; + if (ctx != null) + return ctx; + } + catch (ClassNotFoundException _1) + { + // Ignore it. + } + catch (ClassCastException _2) + { + // This means that the class we found was not an + // ObjectFactory or that the factory returned something + // which was not a Context. + } + catch (InstantiationException _3) + { + // If we couldn't instantiate the factory we might get + // this. + } + catch (IllegalAccessException _4) + { + // Another possibility when instantiating. + } + catch (NamingException _5) + { + throw _5; + } + catch (Exception _6) + { + // Anything from getObjectInstance. + } + } + + return null; + } + + public static Context getURLContext (String scheme, + Hashtable environment) throws NamingException { - throw new Error ("javax.naming.spi.NamingManager.getURLContext not implemented"); + return getURLContext (null, null, null, scheme, environment); + } + + public static void setObjectFactoryBuilder (ObjectFactoryBuilder builder) + throws NamingException + { + SecurityManager sm = System.getSecurityManager (); + if (sm != null) + sm.checkSetFactory (); + // Once the builder is installed it cannot be replaced. + if (ofb != null) + throw new IllegalStateException ("builder already installed"); + if (builder != null) + ofb = builder; + } + + static StringTokenizer getPlusPath (String property, Hashtable env, + Context nameCtx) + throws NamingException + { + String path = (String) env.get (property); + if (nameCtx == null) + nameCtx = getInitialContext (env); + String path2 = (String) nameCtx.getEnvironment ().get (property); + if (path == null) + path = path2; + else if (path2 != null) + path += ":" + path2; + return new StringTokenizer (path, ":"); + } + + public static Object getObjectInstance (Object refInfo, + Name name, + Context nameCtx, + Hashtable environment) + throws Exception + { + ObjectFactory factory = null; + + if (ofb != null) + factory = ofb.createObjectFactory (refInfo, environment); + else + { + // First see if we have a Reference or a Referenceable. If so + // we do some special processing. + Object ref2 = refInfo; + if (refInfo instanceof Referenceable) + ref2 = ((Referenceable) refInfo).getReference (); + if (ref2 instanceof Reference) + { + Reference ref = (Reference) ref2; + + // If we have a factory class name then we use that. + String fClass = ref.getFactoryClassName (); + if (fClass != null) + { + // Exceptions here are passed to the caller. + Class k = Class.forName (fClass); + factory = (ObjectFactory) k.newInstance (); + } + else + { + // There's no factory class name. If the address is a + // StringRefAddr with address type `URL', then we try + // the URL's context factory. + Enumeration e = ref.getAll (); + while (e.hasMoreElements ()) + { + RefAddr ra = (RefAddr) e.nextElement (); + if (ra instanceof StringRefAddr + && "URL".equals (ra.getType ())) + { + factory + = (ObjectFactory) getURLContext (refInfo, + name, + nameCtx, + (String) ra.getContent (), + environment); + Object obj = factory.getObjectInstance (refInfo, + name, + nameCtx, + environment); + if (obj != null) + return obj; + } + } + + // Have to try the next step. + factory = null; + } + } + + // Now look at OBJECT_FACTORIES to find the factory. + if (factory == null) + { + StringTokenizer tokens = getPlusPath (Context.OBJECT_FACTORIES, + environment, nameCtx); + + while (tokens.hasMoreTokens ()) + { + String klassName = tokens.nextToken (); + Class k = Class.forName (klassName); + factory = (ObjectFactory) k.newInstance (); + Object obj = factory.getObjectInstance (refInfo, name, + nameCtx, environment); + if (obj != null) + return obj; + } + + // Failure. + return refInfo; + } + } + + if (factory == null) + return refInfo; + Object obj = factory.getObjectInstance (refInfo, name, + nameCtx, environment); + return obj == null ? refInfo : obj; + } + + public static void setInitialContextFactoryBuilder (InitialContextFactoryBuilder builder) + throws NamingException + { + SecurityManager sm = System.getSecurityManager (); + if (sm != null) + sm.checkSetFactory (); + // Once the builder is installed it cannot be replaced. + if (icfb != null) + throw new IllegalStateException ("builder already installed"); + if (builder != null) + icfb = builder; + } + + public static Context getContinuationContext (CannotProceedException cpe) + throws NamingException + { + Hashtable env = cpe.getEnvironment (); + if (env != null) + env.put (CPE, cpe); + + // It is really unclear to me if this is right. + try + { + Object obj = getObjectInstance (null, cpe.getAltName (), + cpe.getAltNameCtx (), env); + if (obj != null) + return (Context) obj; + } + catch (Exception _) + { + } + + throw cpe; + } + + public static Object getStateToBind (Object obj, Name name, + Context nameCtx, Hashtable environment) + throws NamingException + { + StringTokenizer tokens = getPlusPath (Context.STATE_FACTORIES, + environment, nameCtx); + while (tokens.hasMoreTokens ()) + { + String klassName = tokens.nextToken (); + try + { + Class k = Class.forName (klassName); + StateFactory factory = (StateFactory) k.newInstance (); + Object o = factory.getStateToBind (obj, name, nameCtx, + environment); + if (o != null) + return o; + } + catch (ClassNotFoundException _1) + { + // Ignore it. + } + catch (ClassCastException _2) + { + // This means that the class we found was not an + // ObjectFactory or that the factory returned something + // which was not a Context. + } + catch (InstantiationException _3) + { + // If we couldn't instantiate the factory we might get + // this. + } + catch (IllegalAccessException _4) + { + // Another possibility when instantiating. + } + } + + return obj; } } diff --git a/libjava/javax/naming/spi/ObjectFactory.java b/libjava/javax/naming/spi/ObjectFactory.java index 760e586..8189628 100644 --- a/libjava/javax/naming/spi/ObjectFactory.java +++ b/libjava/javax/naming/spi/ObjectFactory.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Copyright (C) 2001 Free Software Foundation This file is part of libgcj. @@ -11,14 +11,11 @@ package javax.naming.spi; import java.util.Hashtable; import javax.naming.*; -public class ObjectFactory +public interface ObjectFactory { public Object getObjectInstance (Object obj, Name name, Context nameCtx, Hashtable environment) - throws Exception - { - throw new Error ("javax.naming.spi.ObjectFactory.getObjectInstance not implemented"); - } + throws Exception; } diff --git a/libjava/javax/naming/spi/ObjectFactoryBuilder.java b/libjava/javax/naming/spi/ObjectFactoryBuilder.java new file mode 100644 index 0000000..e879603 --- /dev/null +++ b/libjava/javax/naming/spi/ObjectFactoryBuilder.java @@ -0,0 +1,23 @@ +/* Copyright (C) 2001 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package javax.naming.spi; +import javax.naming.*; +import java.util.Hashtable; + +/** + * @author Warren Levy <warrenl@redhat.com> + * @date June 1, 2001 + */ + +public interface ObjectFactoryBuilder +{ + public ObjectFactory createObjectFactory(Object obj, + Hashtable environment) + throws NamingException; +} diff --git a/libjava/javax/naming/spi/ResolveResult.java b/libjava/javax/naming/spi/ResolveResult.java new file mode 100644 index 0000000..d00aef5 --- /dev/null +++ b/libjava/javax/naming/spi/ResolveResult.java @@ -0,0 +1,93 @@ +/* Copyright (C) 2001 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package javax.naming.spi; +import javax.naming.*; +import java.util.EventObject; +import java.io.Serializable; + +/** + * @author Warren Levy <warrenl@redhat.com> + * @date June 5, 2001 + */ + +public class ResolveResult implements Serializable +{ + // Serialized fields. + protected Object resolvedObj; + protected Name remainingName; + + protected ResolveResult() + { + resolvedObj = null; + remainingName = null; + } + + public ResolveResult(Object robj, String rcomp) + { + if (robj == null || rcomp == null) + throw new IllegalArgumentException (); + resolvedObj = robj; + remainingName = new CompositeName (); + try + { + remainingName.add (rcomp); + } + catch (InvalidNameException _) + { + } + } + + public ResolveResult(Object robj, Name rname) + { + resolvedObj = robj; + remainingName = rname; + } + + public Name getRemainingName() + { + return remainingName; + } + + public Object getResolvedObj() + { + return resolvedObj; + } + + public void setRemainingName(Name name) + { + remainingName = (Name) name.clone(); + } + + public void appendRemainingName(Name name) + { + try + { + remainingName.addAll(name); + } + catch (InvalidNameException _) + { + } + } + + public void appendRemainingComponent(String name) + { + try + { + remainingName.add(name); + } + catch (InvalidNameException _) + { + } + } + + public void setResolvedObj(Object obj) + { + resolvedObj = obj; + } +} diff --git a/libjava/javax/naming/spi/Resolver.java b/libjava/javax/naming/spi/Resolver.java new file mode 100644 index 0000000..ff52f66 --- /dev/null +++ b/libjava/javax/naming/spi/Resolver.java @@ -0,0 +1,23 @@ +/* Copyright (C) 2001 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package javax.naming.spi; +import javax.naming.*; + +/** + * @author Warren Levy <warrenl@redhat.com> + * @date June 1, 2001 + */ + +public interface Resolver +{ + public ResolveResult resolveToClass(Name name, Class contextType) + throws NamingException; + public ResolveResult resolveToClass(String name, Class contextType) + throws NamingException; +} diff --git a/libjava/javax/naming/spi/StateFactory.java b/libjava/javax/naming/spi/StateFactory.java new file mode 100644 index 0000000..3be66d2 --- /dev/null +++ b/libjava/javax/naming/spi/StateFactory.java @@ -0,0 +1,22 @@ +/* Copyright (C) 2001 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package javax.naming.spi; +import javax.naming.*; +import java.util.Hashtable; + +/** + * @author Warren Levy <warrenl@redhat.com> + * @date June 1, 2001 + */ + +public interface StateFactory +{ + public Object getStateToBind(Object obj, Name name, Context nameCtx, + Hashtable environment) throws NamingException; +} |