gnu.CORBA.NamingService

Class TransientContext

Implemented Interfaces:
IDLEntity, InvokeHandler, NamingContext, NamingContextOperations, Object, SafeForDirectCalls, Serializable

public class TransientContext
extends _NamingContextImplBase
implements NamingContext, NamingContextOperations, SafeForDirectCalls

This class implements the transient naming service, defined by NamingContext. The 'transient' means that the service does not store its state into the persistent memory. If the service is restarted, the named objects must be re-registered again. TODO Write the persistent naming service.

Field Summary

protected NamingMap
named_contexts
The already named contexts.
protected NamingMap
named_objects
The already named objects.

Constructor Summary

TransientContext()
Create the naming conetxt with default (transient) naming maps.
TransientContext(NamingMap context_map, NamingMap object_map)
Create the naming conetxt with the two provided naming maps.

Method Summary

void
bind(NameComponent[] a_name, Object an_object)
Gives the object a name, valid in this context.
void
bind_context(NameComponent[] a_name, NamingContext a_context)
Gives a child context name, valid in this context.
NamingContext
bind_new_context(NameComponent[] a_name)
Create a new context and give it a given name (bound it) in the current context.
void
destroy()
Destroy this context (must be empty).
void
list(int amount, BindingListHolder a_list, BindingIteratorHolder an_iter)
Iterate over all bindings, defined in this namind context.
NamingContext
new_context()
Creates a new naming context, not bound to any name.
void
rebind(NameComponent[] a_name, Object an_object)
Names or renames the object.
void
rebind_context(NameComponent[] a_name, NamingContext a_context)
Names or renames the child context.
Object
resolve(NameComponent[] a_name)
Get the object, bound to the specified name in this context.
void
unbind(NameComponent[] a_name)
Removes the name from the binding context.

Methods inherited from class org.omg.CosNaming._NamingContextImplBase

_ids, _invoke, invoke

Methods inherited from class org.omg.CORBA.DynamicImplementation

_ids, invoke

Methods inherited from class org.omg.CORBA.portable.ObjectImpl

_create_request, _create_request, _duplicate, _get_delegate, _get_domain_managers, _get_interface_def, _get_policy, _hash, _ids, _invoke, _is_a, _is_equivalent, _is_local, _non_existent, _orb, _release, _releaseReply, _request, _request, _servant_postinvoke, _set_delegate, _set_policy_override, equals, toString

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

named_contexts

protected final NamingMap named_contexts
The already named contexts.

named_objects

protected final NamingMap named_objects
The already named objects.

Constructor Details

TransientContext

public TransientContext()
Create the naming conetxt with default (transient) naming maps.

TransientContext

public TransientContext(NamingMap context_map,
                        NamingMap object_map)
Create the naming conetxt with the two provided naming maps.
Parameters:
context_map - the map for contexts
object_map - the map for objectss

Method Details

bind

public void bind(NameComponent[] a_name,
                 Object an_object)
            throws NotFound,
                   CannotProceed,
                   InvalidName,
                   AlreadyBound
Gives the object a name, valid in this context.
Specified by:
bind in interface NamingContext
bind in interface NamingContextOperations
Parameters:
a_name - the name, being given to the object.
an_object - the object, being named.
Throws:
AlreadyBound - if the object is already named in this context.
InvalidName - if the name has zero length or otherwise invalid.

bind_context

public void bind_context(NameComponent[] a_name,
                         NamingContext a_context)
            throws NotFound,
                   CannotProceed,
                   InvalidName,
                   AlreadyBound
Gives a child context name, valid in this context.
Specified by:
bind_context in interface NamingContext
bind_context in interface NamingContextOperations
Parameters:
a_name - the name, being given to the child context.
a_context - the child context being named.
Throws:
AlreadyBound - if the child context is already named in the current context.

bind_new_context

public NamingContext bind_new_context(NameComponent[] a_name)
            throws NotFound,
                   AlreadyBound,
                   CannotProceed,
                   InvalidName
Create a new context and give it a given name (bound it) in the current context. The context being created is returned by calling new_context().
Specified by:
bind_new_context in interface NamingContext
bind_new_context in interface NamingContextOperations
Parameters:
a_name - the name being given to the new context.
Returns:
the newly created context.
Throws:
AlreadyBound - if the name is already in use.
InvalidName - if the name has zero length or otherwise invalid.

destroy

public void destroy()
            throws NotEmpty
Destroy this context (must be empty).
Specified by:
destroy in interface NamingContext
destroy in interface NamingContextOperations
Throws:
NotEmpty - if the context being destroyed is not empty.

list

public void list(int amount,
                 BindingListHolder a_list,
                 BindingIteratorHolder an_iter)
Iterate over all bindings, defined in this namind context.
Specified by:
list in interface NamingContext
list in interface NamingContextOperations
Parameters:
amount - the maximal number of context to return in the holder a_list. The remaining bindings are accessible via iterator an_iter. If the parameter amount is zero, all bindings are accessed only via this iterator. This implementation list contexts first, then objects.
a_list - the holder, where the returned bindigs are stored.
an_iter - the iterator that can be used to access the remaining bindings.

new_context

public NamingContext new_context()
Creates a new naming context, not bound to any name.
Specified by:
new_context in interface NamingContext
new_context in interface NamingContextOperations

rebind

public void rebind(NameComponent[] a_name,
                   Object an_object)
            throws NotFound,
                   CannotProceed,
                   InvalidName
Names or renames the object.
Specified by:
rebind in interface NamingContext
rebind in interface NamingContextOperations
Parameters:
a_name - the new name, being given to the object in the scope of the current context. If the object is already named in this context, it is renamed.
an_object - the object, being named.
Throws:
InvalidName - if the name has zero length or otherwise invalid.

rebind_context

public void rebind_context(NameComponent[] a_name,
                           NamingContext a_context)
            throws NotFound,
                   CannotProceed,
                   InvalidName
Names or renames the child context. If the child context is already named in the current context, it is renamed. The the name being given is in use, the old meaning of the name is discarded.
Specified by:
rebind_context in interface NamingContext
rebind_context in interface NamingContextOperations
Parameters:
a_name - the name, being given to the child context in the scope of the current context.
a_context - the child context being named.
Throws:
InvalidName - if the name has zero length or otherwise invalid.

resolve

public Object resolve(NameComponent[] a_name)
            throws NotFound,
                   CannotProceed,
                   InvalidName
Get the object, bound to the specified name in this context. The given object must match the bound name. This implementation resolves the names as defined in specification of the CORBA naming service. This means, if the beginning of the name can be resolved to some naming context, the request is forwarded to this context, passing the unresolved name part as a parameter. In this way, it is possible to have a hierarchy of the naming services. The central services resolve the the beginning of the name. The local services resolve the remaining nodes of the name that may be relevant to some local details. It can be three or more ranks of the naming services.
Specified by:
resolve in interface NamingContext
resolve in interface NamingContextOperations
Parameters:
a_name - the object name.
Returns:
the object, matching this name. The client usually casts or narrows (using the helper) the returned value to the more specific type.
Throws:
NotFound - if the name cannot be resolved.
InvalidName - if the name has zero length or otherwise invalid.

unbind

public void unbind(NameComponent[] a_name)
            throws NotFound,
                   CannotProceed,
                   InvalidName
Removes the name from the binding context.
Specified by:
unbind in interface NamingContext
unbind in interface NamingContextOperations
Parameters:
a_name - a name to remove.
Throws:
InvalidName - if the name has zero length or otherwise invalid.

nContext.java -- implementation of NamingContext Copyright (C) 2005 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.