123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493 |
- /* Context.java -- A naming context
- Copyright (C) 2000, 2006 Free Software Foundation, Inc.
- This file is part of GNU Classpath.
- GNU Classpath is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- GNU Classpath 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
- General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with GNU Classpath; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA.
- Linking this library statically or dynamically with other modules is
- making a combined work based on this library. Thus, the terms and
- conditions of the GNU General Public License cover the whole
- combination.
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent
- modules, and to copy and distribute the resulting executable under
- terms of your choice, provided that you also meet, for each linked
- independent module, the terms and conditions of the license of that
- module. An independent module is a module which is not derived from
- or based on this library. If you modify this library, you may extend
- this exception to your version of the library, but you are not
- obligated to do so. If you do not wish to do so, delete this
- exception statement from your version. */
- package javax.naming;
- import java.util.Hashtable;
- import javax.naming.directory.InvalidAttributesException;
- public interface Context
- {
- /**
- * Property with name of the inital context factory to use
- */
- String INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial";
- /**
- * Property with colon-separated list of object factories to use.
- */
- String OBJECT_FACTORIES = "java.naming.factory.object";
- /**
- * Property with colon-separated list of state factories to use.
- */
- String STATE_FACTORIES = "java.naming.factory.state";
- /**
- * Property with colon-separated list of package prefixes to use.
- */
- String URL_PKG_PREFIXES = "java.naming.factory.url.pkgs";
- /**
- * Property with URL specifying configuration for the service provider to use.
- */
- String PROVIDER_URL = "java.naming.provider.url";
- /**
- * Property with the DNS host and domain names to use.
- */
- String DNS_URL = "java.naming.dns.url";
- /**
- * Property with the authoritativeness of the service requested.
- */
- String AUTHORITATIVE = "java.naming.authoritative";
- /**
- * Property with the batch size to use when returning data via the service's
- * protocol.
- */
- String BATCHSIZE = "java.naming.batchsize";
- /**
- * Property defining how referrals encountered by the service provider are to
- * be processed.
- */
- String REFERRAL = "java.naming.referral";
- /**
- * Property specifying the security protocol to use.
- */
- String SECURITY_PROTOCOL = "java.naming.security.protocol";
- /**
- * Property specifying the security level to use.
- */
- String SECURITY_AUTHENTICATION = "java.naming.security.authentication";
- /**
- * Property for the identity of the principal for authenticating the caller to
- * the service.
- */
- String SECURITY_PRINCIPAL = "java.naming.security.principal";
- /**
- * Property specifying the credentials of the principal for authenticating the
- * caller to the service.
- */
- String SECURITY_CREDENTIALS = "java.naming.security.credentials";
- /**
- * Property for specifying the preferred language to use with the service.
- */
- String LANGUAGE = "java.naming.language";
- /**
- * Property for the initial context constructor to use when searching for
- * other properties.
- */
- String APPLET = "java.naming.applet";
- /**
- * Give the specified name for the specified object. The passed name must not
- * be already bound to some other object.
- *
- * @param name the name that will be given to the object (in the scope of this
- * context).
- * @param obj the object being named.
- * @throws NameAlreadyBoundException if this name is already used to name some
- * object.
- * @throws InvalidAttributesException if the object does not supply all
- * required attributes.
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void bind(Name name, Object obj) throws NamingException;
- /**
- * Give the specified name for the specified object. The passed name must not
- * be already bound to some other object.
- *
- * @param name the name that will be given to the object (in the scope of this
- * context).
- * @param obj the object being named.
- * @throws NameAlreadyBoundException if this name is already used to name some
- * object.
- * @throws InvalidAttributesException if the object does not supply all
- * required attributes.
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void bind(String name, Object obj) throws NamingException;
- /**
- * Gets the previously named object by name. If the passed name is empty, the
- * method should return a cloned instance of this naming context.
- *
- * @param name the name of the object being searched in this context
- * @return the named object
- * @throws NamingException if the naming fails.
- */
- Object lookup(Name name) throws NamingException;
- /**
- * Gets the previously named object by name. If the passed name is empty, the
- * method should return a cloned instance of this naming context.
- *
- * @param name the name of the object being searched in this context
- * @return the named object
- * @throws NamingException if the naming fails.
- */
- Object lookup(String name) throws NamingException;
- /**
- * Give the specified name for the specified object. Unlike bind, this method
- * silently replaces the existing binding for this name, if one exists.
- *
- * @param name the name that will be given to the object (in the scope of this
- * context).
- * @param obj the object being named.
- * @throws InvalidAttributesException if the object does not supply all
- * required attributes.
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void rebind(Name name, Object obj) throws NamingException;
- /**
- * Give the specified name for the specified object. Unlike bind, this method
- * silently replaces the existing binding for this name, if one exists.
- *
- * @param name the name that will be given to the object (in the scope of this
- * context).
- * @param obj the object being named.
- * @throws InvalidAttributesException if the object does not supply all
- * required attributes.
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void rebind(String name, Object obj) throws NamingException;
- /**
- * Removes the name - object mapping from the current context. This method
- * returns without action if the name is not bound to an object in the
- * terminal context, but throws {@link NameNotFoundException} if one of the
- * intermadiate contexts does not exist.
- *
- * @param name the name to be removed
- * @throws NameNotFoundException if one of the intermediate naming contexts
- * does not exist. Will not be thrown if just the terminal binding
- * is missing.
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void unbind(Name name) throws NamingException;
- /**
- * Removes the name - object mapping from the current context. This method
- * returns without action if the name is not bound to an object in the
- * terminal context, but throws {@link NameNotFoundException} if one of the
- * intermadiate contexts does not exist.
- *
- * @param name the name to be removed
- * @throws NameNotFoundException if one of the intermediate naming contexts
- * does not exist. Will not be thrown if just the terminal binding
- * is missing.
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void unbind(String name) throws NamingException;
- /**
- * Renames the existing binding, removing the existing and giving the new name
- * for the same object.
- *
- * @param oldName the existing name of the known object
- * @param newName the new name of the same object
- * @throws NameNotFoundException if the oldName is unknown for this context
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void rename(Name oldName, Name newName) throws NamingException;
- /**
- * Renames the existing binding, removing the existing and giving the new name
- * for the same object.
- *
- * @param oldName the existing name of the known object
- * @param newName the new name of the same object
- * @throws NameNotFoundException if the oldName is unknown for this context
- * @throws NamingException if the naming operation has failed due other
- * reasons.
- */
- void rename(String oldName, String newName) throws NamingException;
- /**
- * Creates and returns the enumeration over the name bindings that are present
- * the given subcontext. The enumeration elements have the type of
- * {@link NameClassPair}, providing also information about the class of the
- * bound object. The behaviour in the case if the bindings are added or
- * removed later is not defined. The contents of the subcontexts are not
- * included.
- *
- * @param name the name of the subcontext
- * @return the enumeration over the names, known for the given subcontext.
- * @throws NamingException
- */
- NamingEnumeration<NameClassPair> list(Name name) throws NamingException;
- /**
- * Creates and returns the enumeration over the name bindings that are present
- * the given subcontext. The enumeration elements have the type of
- * {@link NameClassPair}, providing also information about the class of the
- * bound object. The behaviour in the case if the bindings are added or
- * removed later is not defined. The contents of the subcontexts are not
- * included.
- *
- * @param name the name of the subcontext
- * @return the enumeration over the names, known for the given subcontext.
- * @throws NamingException
- */
- NamingEnumeration<NameClassPair> list(String name) throws NamingException;
- /**
- * Creates and returns the enumeration over the name - object bindings that
- * are present the given subcontext. The enumeration elements have the type of
- * {@link Binding}, providing also information about the class of the bound
- * object. The behaviour in the case if the bindings are added or removed
- * later is not defined. The contents of the subcontexts are not included.
- *
- * @param name the name of the subcontext
- * @return the enumeration over the names, known for the given subcontext.
- * @throws NamingException
- */
- NamingEnumeration<Binding> listBindings(Name name) throws NamingException;
- /**
- * Creates and returns the enumeration over the name - object bindings that
- * are present the given subcontext. The enumeration elements have the type of
- * {@link Binding}, providing also information about the class of the bound
- * object. The behaviour in the case if the bindings are added or removed
- * later is not defined. The contents of the subcontexts are not included.
- *
- * @param name the name of the subcontext
- * @return the enumeration over the names, known for the given subcontext.
- * @throws NamingException
- */
- NamingEnumeration<Binding> listBindings(String name) throws NamingException;
- /**
- * Creates the new naming subcontext and binds it to the current (this)
- * context.
- *
- * @param name the name of the new context being created
- * @return the newly created context, bound to the instance of the context on
- * that the method has been called
- * @throws NameAlreadyBoundException if this name is already bound
- * @throws InvalidAttributesException if the creation of the new context
- * requires the missing mandatory attributes
- * @throws NamingException
- */
- Context createSubcontext(Name name) throws NamingException;
- /**
- * Creates the new naming subcontext and binds it to the current (this)
- * context.
- *
- * @param name the name of the new context being created
- * @return the newly created context, bound to the instance of the context on
- * that the method has been called
- * @throws NameAlreadyBoundException if this name is already bound
- * @throws InvalidAttributesException if the creation of the new context
- * requires the missing mandatory attributes
- * @throws NamingException
- */
- Context createSubcontext(String name) throws NamingException;
- /**
- * Removes the naming subcontext from this naming context. Returns without
- * action if such subcontext does not exist. The context being destroyed must
- * be empty.
- *
- * @param name the name of the subcontext beig removed.
- * @throws ContextNotEmptyException if the named context is not empty.
- * @throws NamingException
- */
- void destroySubcontext(Name name) throws NamingException;
- /**
- * Removes the naming subcontext from this naming context. Returns without
- * action if such subcontext does not exist. The context being destroyed must
- * be empty.
- *
- * @param name the name of the subcontext beig removed.
- * @throws ContextNotEmptyException if the named context is not empty.
- * @throws NamingException
- */
- void destroySubcontext(String name) throws NamingException;
- /**
- * Retrieves the named object, not following the link of the terminal atomic
- * component of the name. If the object, named by the passed name, is not a
- * link, returns that object itself. The intermediate links, if present, are
- * followed.
- *
- * @param name the name of the object that may be a link, leading to another
- * object.
- * @return the named object, not following the terminal link (if present).
- * @throws NamingException
- */
- Object lookupLink(Name name) throws NamingException;
- /**
- * Retrieves the named object, not following the link of the terminal atomic
- * component of the name. If the object, named by the passed name, is not a
- * link, returns that object itself. The intermediate links, if present, are
- * followed.
- *
- * @param name the name of the object that may be a link, leading to another
- * object.
- * @return the named object, not following the terminal link (if present).
- * @throws NamingException
- */
- Object lookupLink(String name) throws NamingException;
- /**
- * Obtains the name parser for parsing the names of the given naming
- * subcontext.
- *
- * @param name the name of the subcontext for that the parser must be obtained
- * @return the parser to parse the names of that context
- * @throws NamingException
- */
- NameParser getNameParser(Name name) throws NamingException;
- /**
- * Obtains the name parser for parsing the names of the given naming
- * subcontext.
- *
- * @param name the name of the subcontext for that the parser must be obtained
- * @return the parser to parse the names of that context
- * @throws NamingException
- */
- NameParser getNameParser(String name) throws NamingException;
- /**
- * Composes the name of this context together with another name, related to
- * this context.
- *
- * @param name a name, defined in the scope of this context
- * @param prefix a name of this context itself, defined in the scope of some
- * ancestor
- * @return the name of the same object as named by the first parameter, but
- * related to the context of the specified ancestor.
- * @throws NamingException
- */
- Name composeName(Name name, Name prefix) throws NamingException;
- /**
- * Composes the name of this context together with another name, related to
- * this context.
- *
- * @param name a name, defined in the scope of this context
- * @param prefix a name of this context itself, defined in the scope of some
- * ancestor
- * @return the name of the same object as named by the first parameter, but
- * related to the context of the specified ancestor.
- * @throws NamingException
- */
- String composeName(String name, String prefix) throws NamingException;
- /**
- * Add new environment property to the environment of this context. Both name
- * and value of the new property must not be null. If the property is already
- * defined, is current value is replaced by the propVal.
- *
- * @param propName the name of the new property
- * @param propVal the value of the new property
- * @return the previous value of this property or null if the property has not
- * been previously defined
- * @throws NamingException
- */
- Object addToEnvironment(String propName, Object propVal)
- throws NamingException;
- /**
- * Removes the property with the given name from the environment. Returns
- * without action if this property is not defined.
- *
- * @param propName the name of the property being removed.
- * @return the value of the property that has been removed or null if the
- * property was not defined.
- * @throws NamingException
- */
- Object removeFromEnvironment(String propName) throws NamingException;
- /**
- * Returns the environment, associated with this naming context. The returned
- * table should never be modified by the caller. Use {@link #addToEnvironment}
- * and {@link #removeFromEnvironment} to modify the environement, if needed.
- *
- * @return the table, representing the environment of this context
- * @throws NamingException
- */
- Hashtable<?,?> getEnvironment() throws NamingException;
- /**
- * Releases all resources, associated with this context. The close() method
- * can be called several times, but after it has been once invoked, it is not
- * allowed to call any other method of this context,
- *
- * @throws NamingException
- */
- void close() throws NamingException;
- /**
- * Returs the full name of this naming context. The returned string is not a
- * JNDI composite name and should not be passed directly to the methods of the
- * naming context.
- *
- * @return the full name of this naming context, in its own namespace.
- * @throws OperationNotSupportedException if the naming system, represented by
- * this context, does not support the notation of the full name.
- * @throws NamingException
- */
- String getNameInNamespace() throws NamingException;
- }
|