From 6dee3a2320540b9b654d9a5ef7626e90246ffe80 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 24 Oct 2001 21:39:24 +0000 Subject: Makefile.in: Rebuilt. 2001-10-24 Tom Tromey Warren Levy * 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 From-SVN: r46474 --- libjava/javax/naming/spi/DirObjectFactory.java | 24 ++ libjava/javax/naming/spi/DirStateFactory.java | 50 ++++ libjava/javax/naming/spi/DirectoryManager.java | 204 +++++++++++++ libjava/javax/naming/spi/NamingManager.java | 315 +++++++++++++++++++-- libjava/javax/naming/spi/ObjectFactory.java | 9 +- libjava/javax/naming/spi/ObjectFactoryBuilder.java | 23 ++ libjava/javax/naming/spi/ResolveResult.java | 93 ++++++ libjava/javax/naming/spi/Resolver.java | 23 ++ libjava/javax/naming/spi/StateFactory.java | 22 ++ 9 files changed, 740 insertions(+), 23 deletions(-) create mode 100644 libjava/javax/naming/spi/DirObjectFactory.java create mode 100644 libjava/javax/naming/spi/DirStateFactory.java create mode 100644 libjava/javax/naming/spi/DirectoryManager.java create mode 100644 libjava/javax/naming/spi/ObjectFactoryBuilder.java create mode 100644 libjava/javax/naming/spi/ResolveResult.java create mode 100644 libjava/javax/naming/spi/Resolver.java create mode 100644 libjava/javax/naming/spi/StateFactory.java (limited to 'libjava/javax/naming/spi') 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 + * @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 + * @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 + * @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 + * @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 + * @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 + * @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 + * @date June 1, 2001 + */ + +public interface StateFactory +{ + public Object getStateToBind(Object obj, Name name, Context nameCtx, + Hashtable environment) throws NamingException; +} -- cgit v1.1