Methods Summary |
---|
public void | Bind(NameComponent n, org.omg.CORBA.Object obj, BindingType bt)Implements all flavors of binding( bind and bindcontext)
This method will be called from the superclass's doBind( ) method
which takes care of all the conditions before calling this method.
i.e., It checks whether the Name is already Bounded, Then in the
case of rebind it calls Unbind first.
This method does one level binding only, To have n-level binding
with compound names, doBind( ) calls this method recursively.
if( obj == null ) {
// Raise a Valid Exception and Return
return;
}
InternalBindingKey key = new InternalBindingKey(n);
InternalBindingValue value;
try {
if( bt.value() == BindingType._nobject ) {
// If the BindingType is an ObjectRef then Stringify this ref and
// Store it in InternalBindingValue instance. This is required
// because the Object References has to be stored in file
value = new InternalBindingValue(bt, orb.object_to_string(obj) );
value.setObjectRef( obj );
} else {
// If the BindingType is a NamingContext then get it's object key
// from the NameService and store it in the Internal Binding Value instance
String theNCKey = theNameServiceHandle.getObjectKey( obj );
value = new InternalBindingValue( bt, theNCKey );
value.setObjectRef( obj );
}
InternalBindingValue oldValue =
(InternalBindingValue)this.theHashtable.put(key,value);
if( oldValue != null) {
// There was an entry with this name in the Hashtable and hence throw CTX_ALREADY_BOUND
// exception
throw updateWrapper.namingCtxRebindAlreadyBound() ;
} else {
try {
// Everything went smooth so update the NamingContext file with the
// latest Hashtable image
theServantManagerImplHandle.updateContext( objKey, this );
} catch( Exception e ) {
// Something went wrong while updating the context
// so speak the error
throw updateWrapper.bindUpdateContextFailed( e ) ;
}
}
} catch( Exception e ) {
// Something went wrong while Binding the Object Reference
// Speak the error again.
throw updateWrapper.bindFailure( e ) ;
}
|
public void | Destroy()Destroys the NamingContext.
// XXX note that orb.disconnect is illegal here, since the
// POA is used. However, there may be some associated state
// that needs to be cleaned up in ServerManagerImpl which we will
// look into further at another time.
/*
// XXX This needs to be replaced by cleaning up the
// file that backs up the naming context. No explicit
// action is necessary at the POA level, since this is
// created with the non-retain policy.
/*
try { orb.disconnect(
theNameServiceHandle.getObjectReferenceFromKey( this.objKey ) );
} catch( org.omg.CORBA.SystemException e ) {
throw e;
} catch( Exception e ) {
throw updateWrapper.transNcDestroyGotEx( e ) ;
}
*/
|
public boolean | IsEmpty()This is a Debugging Method
return this.theHashtable.isEmpty();
|
public void | List(int how_many, BindingListHolder bl, BindingIteratorHolder bi)List the contents of this NamingContext. It creates a new
PersistentBindingIterator object and passes it a clone of the
hash table and an orb object. It then uses the
newly created object to return the required number of bindings.
if( biPOA == null ) {
createbiPOA( );
}
try {
PersistentBindingIterator bindingIterator =
new PersistentBindingIterator(this.orb,
(Hashtable)this.theHashtable.clone(), biPOA);
// Have it set the binding list
bindingIterator.list(how_many,bl);
byte[] objectId = biPOA.activate_object( bindingIterator );
org.omg.CORBA.Object obj = biPOA.id_to_reference( objectId );
// Get the object reference for the binding iterator servant
org.omg.CosNaming.BindingIterator bindingRef =
org.omg.CosNaming.BindingIteratorHelper.narrow( obj );
bi.value = bindingRef;
} catch (org.omg.CORBA.SystemException e) {
throw e;
} catch( Exception e ) {
throw readWrapper.transNcListGotExc( e ) ;
}
|
public NamingContext | NewContext()Create a NamingContext object and return its object reference.
try {
return theNameServiceHandle.NewContext( );
} catch( org.omg.CORBA.SystemException e ) {
throw e;
} catch( Exception e ) {
throw updateWrapper.transNcNewctxGotExc( e ) ;
}
|
public org.omg.CORBA.Object | Resolve(NameComponent n, BindingTypeHolder bth)This method resolves the NamingContext or Object Reference for one level
The doResolve( ) method calls Resolve( ) recursively to resolve n level
Names.
if( ( n.id.length() == 0 ) &&( n.kind.length() == 0 ) ) {
// If the NameComponent list has no entry then it means the current
// context was requested
bth.value = BindingType.ncontext;
return theNameServiceHandle.getObjectReferenceFromKey(
this.objKey );
}
InternalBindingKey key = new InternalBindingKey(n);
InternalBindingValue value =
(InternalBindingValue) this.theHashtable.get(key);
if( value == null ) {
// No entry was found for the given name and hence return NULL
// NamingContextDataStore throws appropriate exception if
// required.
return null;
}
Object theObjectFromStringifiedReference = null;
bth.value = value.theBindingType;
try {
// Check whether the entry found in the Hashtable starts with NC
// Which means it's a name context. So get the NamingContext reference
// from ServantManager, which would either return from the cache or
// read it from the File.
if( value.strObjectRef.startsWith( "NC" ) ) {
bth.value = BindingType.ncontext;
return theNameServiceHandle.getObjectReferenceFromKey( value.strObjectRef );
} else {
// Else, It is a Object Reference. Check whether Object Reference
// can be obtained directly, If not then convert the stringified
// reference to object and return.
theObjectFromStringifiedReference = value.getObjectRef( );
if (theObjectFromStringifiedReference == null ) {
try {
theObjectFromStringifiedReference =
orb.string_to_object( value.strObjectRef );
value.setObjectRef( theObjectFromStringifiedReference );
} catch( Exception e ) {
throw readWrapper.resolveConversionFailure(
CompletionStatus.COMPLETED_MAYBE, e );
}
}
}
} catch ( Exception e ) {
throw readWrapper.resolveFailure(
CompletionStatus.COMPLETED_MAYBE, e );
}
return theObjectFromStringifiedReference;
|
public org.omg.CORBA.Object | Unbind(NameComponent n)This method Unbinds the NamingContext or Object Reference for one level
The doUnbind( ) method from superclass calls Unbind() to recursively
Unbind using compound Names.
try {
InternalBindingKey key = new InternalBindingKey(n);
InternalBindingValue value = null;
try {
value = (InternalBindingValue) this.theHashtable.remove(key);
} catch( Exception e ) {
// Ignore the exception in Hashtable.remove
}
theServantManagerImplHandle.updateContext( objKey, this );
if( value == null ) {
return null;
}
if( value.strObjectRef.startsWith( "NC" ) ) {
theServantManagerImplHandle.readInContext( value.strObjectRef );
Object theObjectFromStringfiedReference =
theNameServiceHandle.getObjectReferenceFromKey( value.strObjectRef );
return theObjectFromStringfiedReference;
} else {
Object theObjectFromStringifiedReference = value.getObjectRef( );
if( theObjectFromStringifiedReference == null ) {
theObjectFromStringifiedReference =
orb.string_to_object( value.strObjectRef );
}
return theObjectFromStringifiedReference;
}
} catch( Exception e ) {
throw updateWrapper.unbindFailure( CompletionStatus.COMPLETED_MAYBE, e );
}
|
public void | bind(NameComponent[] n, org.omg.CORBA.Object obj)Bind an object under a name in this NamingContext. If the name
contains multiple (n) components, n-1 will be resolved in this
NamingContext and the object bound in resulting NamingContext.
An exception is thrown if a binding with the supplied name already
exists. If the
object to be bound is a NamingContext it will not participate in
a recursive resolve.
if( obj == null ) {
throw updateWrapper.objectIsNull() ;
}
if (debug)
dprint("bind " + nameToString(n) + " to " + obj);
// doBind implements all four flavors of binding
NamingContextDataStore impl = (NamingContextDataStore)this;
doBind(impl,n,obj,false,BindingType.nobject);
|
public void | bind_context(NameComponent[] n, NamingContext nc)Bind a NamingContext under a name in this NamingContext. If the name
contains multiple (n) components, n-1 will be resolved in this
NamingContext and the object bound in resulting NamingContext.
An exception is thrown if a binding with the supplied name already
exists. The NamingContext will participate in recursive resolving.
if( nc == null ) {
throw updateWrapper.objectIsNull() ;
}
// doBind implements all four flavors of binding
NamingContextDataStore impl = (NamingContextDataStore)this;
doBind(impl,n,nc,false,BindingType.ncontext);
|
public NamingContext | bind_new_context(NameComponent[] n)Create a new NamingContext, bind it in this Naming Context and return
its object reference. This is equivalent to using new_context() followed
by bind_context() with the supplied name and the object reference for
the newly created NamingContext.
NamingContext nc = null;
NamingContext rnc = null;
try {
if (debug)
dprint("bind_new_context " + nameToString(n));
// The obvious solution:
nc = this.new_context();
this.bind_context(n,nc);
rnc = nc;
nc = null;
} finally {
try {
if(nc != null)
nc.destroy();
} catch (org.omg.CosNaming.NamingContextPackage.NotEmpty e) {
}
}
return rnc;
|
private synchronized void | createbiPOA()
if( biPOA != null ) {
return;
}
try {
POA rootPOA = (POA) orb.resolve_initial_references(
ORBConstants.ROOT_POA_NAME );
rootPOA.the_POAManager().activate( );
int i = 0;
Policy[] poaPolicy = new Policy[3];
poaPolicy[i++] = rootPOA.create_lifespan_policy(
LifespanPolicyValue.TRANSIENT);
poaPolicy[i++] = rootPOA.create_id_assignment_policy(
IdAssignmentPolicyValue.SYSTEM_ID);
poaPolicy[i++] = rootPOA.create_servant_retention_policy(
ServantRetentionPolicyValue.RETAIN);
biPOA = rootPOA.create_POA("BindingIteratorPOA", null, poaPolicy );
biPOA.the_POAManager().activate( );
} catch( Exception e ) {
throw readWrapper.namingCtxBindingIteratorCreate( e ) ;
}
|
public void | destroy()Destroy this NamingContext object. If this NamingContext contains
no bindings, the NamingContext is deleted.
if (debug)
dprint("destroy ");
NamingContextDataStore impl = (NamingContextDataStore)this;
synchronized (impl) {
if (impl.IsEmpty() == true)
// The context is empty so it can be destroyed
impl.Destroy();
else
// This context is not empty!
throw new org.omg.CosNaming.NamingContextPackage.NotEmpty();
}
|
private void | doBind(com.sun.corba.se.impl.naming.cosnaming.NamingContextDataStore impl, NameComponent[] n, org.omg.CORBA.Object obj, boolean rebind, org.omg.CosNaming.BindingType bt)Implements all four flavors of binding. It uses Resolve() to
check if a binding already exists (for bind and bind_context), and
unbind() to ensure that a binding does not already exist.
If the length of the name is 1, then Bind() is called with
the name and the object to bind. Otherwise, the first component
of the name is resolved in this NamingContext and the appropriate
form of bind passed to the resulting NamingContext.
This method is static for maximal reuse - even for extended naming
context implementations where the recursive semantics still apply.
// Valid name?
if (n.length < 1)
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
// At bottom level?
if (n.length == 1) {
// The identifier must be set
if( (n[0].id.length() == 0) && (n[0].kind.length() == 0) )
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
// Ensure synchronization of backend
synchronized (impl) {
// Yes: bind object in this context under the name
BindingTypeHolder bth = new BindingTypeHolder();
if (rebind) {
org.omg.CORBA.Object objRef = impl.Resolve( n[0], bth );
if( objRef != null ) {
// Refer Naming Service Doc:00-11-01 section 2.2.3.4
// If there is an object already bound with the name
// and the binding type is not ncontext a NotFound
// Exception with a reason of not a context has to be
// raised.
// Fix for bug Id: 4384628
if ( bth.value.value() == BindingType.nobject.value() ) {
if ( bt.value() == BindingType.ncontext.value() ) {
throw new NotFound(NotFoundReason.not_context, n);
}
} else {
// Previously a Context was bound and now trying to
// bind Object. It is invalid.
if ( bt.value() == BindingType.nobject.value() ) {
throw new NotFound(NotFoundReason.not_object, n);
}
}
impl.Unbind(n[0]);
}
} else {
if (impl.Resolve(n[0],bth) != null)
throw new org.omg.CosNaming.NamingContextPackage.AlreadyBound();
}
// Now there are no other bindings under this name
impl.Bind(n[0],obj,bt);
}
} else {
// No: bind in a different context
NamingContext context = resolveFirstAsContext(impl,n);
// Compute tail
NameComponent[] tail = new NameComponent[n.length - 1];
System.arraycopy(n,1,tail,0,n.length-1);
// How should we propagate the bind
switch (bt.value()) {
case BindingType._nobject:
{
// Bind as object
if (rebind)
context.rebind(tail,obj);
else
context.bind(tail,obj);
}
break;
case BindingType._ncontext:
{
// Narrow to a naming context using Java casts. It must work.
NamingContext objContext = (NamingContext)obj;
// Bind as context
if (rebind)
context.rebind_context(tail,objContext);
else
context.bind_context(tail,objContext);
}
break;
default:
// This should not happen
throw updateWrapper.namingCtxBadBindingtype() ;
}
}
|
public static org.omg.CORBA.Object | doResolve(com.sun.corba.se.impl.naming.cosnaming.NamingContextDataStore impl, NameComponent[] n)Implements resolving names in this NamingContext. The first component
of the supplied name is resolved in this NamingContext by calling
Resolve(). If there are no more components in the name, the
resulting object reference is returned. Otherwise, the resulting object
reference must have been bound as a context and be narrowable to
a NamingContext. If this is the case, the remaining
components of the name is resolved in the resulting NamingContext.
This method is static for maximal reuse - even for extended naming
context implementations where the recursive semantics still apply.
org.omg.CORBA.Object obj = null;
BindingTypeHolder bth = new BindingTypeHolder();
// Length must be greater than 0
if (n.length < 1)
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
// The identifier must be set
if (n.length == 1) {
synchronized (impl) {
// Resolve first level in this context
obj = impl.Resolve(n[0],bth);
}
if (obj == null) {
// Object was not found
throw new org.omg.CosNaming.NamingContextPackage.NotFound(NotFoundReason.missing_node,n);
}
return obj;
} else {
// n.length > 1
if ( (n[1].id.length() == 0) && (n[1].kind.length() == 0 ) )
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
NamingContext context = resolveFirstAsContext(impl,n);
// Compute restOfName = name[1..length]
NameComponent[] tail = new NameComponent[n.length -1];
System.arraycopy(n,1,tail,0,n.length-1);
// Resolve rest of name in context
return context.resolve(tail);
}
|
public static void | doUnbind(com.sun.corba.se.impl.naming.cosnaming.NamingContextDataStore impl, NameComponent[] n)Implements unbinding bound names in this NamingContext. If the
name contains only one component, the name is unbound in this
NamingContext using Unbind(). Otherwise, the first component
of the name is resolved in this NamingContext and
unbind passed to the resulting NamingContext.
This method is static for maximal reuse - even for extended naming
context implementations where the recursive semantics still apply.
// Name valid?
if (n.length < 1)
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
// Unbind here?
if (n.length == 1) {
// The identifier must be set
if ( (n[0].id.length() == 0) && (n[0].kind.length() == 0 ) )
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
org.omg.CORBA.Object objRef = null;
synchronized (impl) {
// Yes: unbind in this context
objRef = impl.Unbind(n[0]);
}
if (objRef == null)
// It was not bound
throw new org.omg.CosNaming.NamingContextPackage.NotFound(NotFoundReason.missing_node,n);
// Done
return;
} else {
// No: unbind in a different context
// Resolve first - must be resolveable
NamingContext context = resolveFirstAsContext(impl,n);
// Compute tail
NameComponent[] tail = new NameComponent[n.length - 1];
System.arraycopy(n,1,tail,0,n.length-1);
// Propagate unbind to this context
context.unbind(tail);
}
|
private static void | dprint(java.lang.String msg)
NamingUtils.dprint("NamingContextImpl(" +
Thread.currentThread().getName() + " at " +
System.currentTimeMillis() +
" ems): " + msg);
|
com.sun.corba.se.impl.naming.cosnaming.InterOperableNamingImpl | getINSImpl()
if( insImpl == null )
{
// insImpl will be null if the NamingContext graph is rebuilt from
// the persistence store.
insImpl =
new com.sun.corba.se.impl.naming.cosnaming.InterOperableNamingImpl();
}
return insImpl;
|
public org.omg.PortableServer.POA | getNSPOA()
return theNameServiceHandle.getNSPOA( );
|
public void | list(int how_many, BindingListHolder bl, BindingIteratorHolder bi)List the contents of this NamingContest. A sequence of bindings
is returned (a BindingList) containing up to the number of requested
bindings, and a BindingIterator object reference is returned for
iterating over the remaining bindings.
if (debug)
dprint("list(" + how_many + ")");
// List actually generates the list
NamingContextDataStore impl = (NamingContextDataStore)this;
synchronized (impl) {
impl.List(how_many,bl,bi);
}
if (debug && bl.value != null)
dprint("list(" + how_many + ") -> bindings[" + bl.value.length +
"] + iterator: " + bi.value);
|
public static java.lang.String | nameToString(NameComponent[] name)
StringBuffer s = new StringBuffer("{");
if (name != null || name.length > 0) {
for (int i=0;i<name.length;i++) {
if (i>0)
s.append(",");
s.append("[").
append(name[i].id).
append(",").
append(name[i].kind).
append("]");
}
}
s.append("}");
return s.toString();
|
public synchronized NamingContext | new_context()Create a NamingContext object and return its object reference.
// Create actually creates a new naming context
if (debug)
dprint("new_context()");
NamingContextDataStore impl = (NamingContextDataStore)this;
synchronized (impl) {
return impl.NewContext();
}
|
public void | printSize()This is a Debugging Method
System.out.println( "Hashtable Size = " + theHashtable.size( ) );
java.util.Enumeration e = theHashtable.keys( );
for( ; e.hasMoreElements(); )
{
InternalBindingValue thevalue =
(InternalBindingValue) this.theHashtable.get(e.nextElement());
if( thevalue != null )
{
System.out.println( "value = " + thevalue.strObjectRef);
}
}
|
public void | rebind(NameComponent[] n, org.omg.CORBA.Object obj)Bind an object under a name in this NamingContext. If the name
contains multiple (n) components, n-1 will be resolved in this
NamingContext and the object bound in resulting NamingContext.
If a binding under the supplied name already exists it will be
unbound first. If the
object to be bound is a NamingContext it will not participate in
a recursive resolve.
if( obj == null )
{
throw updateWrapper.objectIsNull() ;
}
try {
if (debug)
dprint("rebind " + nameToString(n) + " to " + obj);
// doBind implements all four flavors of binding
NamingContextDataStore impl = (NamingContextDataStore)this;
doBind(impl,n,obj,true,BindingType.nobject);
} catch (org.omg.CosNaming.NamingContextPackage.AlreadyBound ex) {
// This should not happen
throw updateWrapper.namingCtxRebindAlreadyBound( ex ) ;
}
|
public void | rebind_context(NameComponent[] n, NamingContext nc)Bind a NamingContext under a name in this NamingContext. If the name
contains multiple (n) components, the first n-1 components will be
resolved in this
NamingContext and the object bound in resulting NamingContext.
If a binding under the supplied name already exists it will be
unbound first. The NamingContext will participate in recursive resolving.
try {
if (debug)
dprint("rebind_context " + nameToString(n) + " to " + nc);
// doBind implements all four flavors of binding
NamingContextDataStore impl = (NamingContextDataStore)this;
doBind(impl,n,nc,true,BindingType.ncontext);
} catch (org.omg.CosNaming.NamingContextPackage.AlreadyBound ex) {
// This should not happen
throw updateWrapper.namingCtxRebindAlreadyBound( ex ) ;
}
|
public org.omg.CORBA.Object | resolve(NameComponent[] n)Resolve a name in this NamingContext and return the object reference
bound to the name. If the name contains multiple (n) components,
the first component will be resolved in this NamingContext and the
remaining components resolved in the resulting NamingContext, provided
that the NamingContext bound to the first component of the name was
bound with bind_context().
if (debug)
dprint("resolve " + nameToString(n));
// doResolve actually resolves
NamingContextDataStore impl = (NamingContextDataStore)this;
return doResolve(impl,n);
|
protected static NamingContext | resolveFirstAsContext(com.sun.corba.se.impl.naming.cosnaming.NamingContextDataStore impl, NameComponent[] n)Implements resolving a NameComponent in this context and
narrowing it to CosNaming::NamingContext. It will throw appropriate
exceptions if not found or not narrowable.
org.omg.CORBA.Object topRef = null;
BindingTypeHolder bth = new BindingTypeHolder();
NamingContext context = null;
synchronized (impl) {
// Resolve first - must be resolveable
topRef = impl.Resolve(n[0],bth);
if (topRef == null) {
// It was not bound
throw new org.omg.CosNaming.NamingContextPackage.NotFound(NotFoundReason.missing_node,n);
}
}
// Was it bound as a context?
if (bth.value != BindingType.ncontext) {
// It was not a context
throw new org.omg.CosNaming.NamingContextPackage.NotFound(NotFoundReason.not_context,n);
}
// Narrow to a naming context
try {
context = NamingContextHelper.narrow(topRef);
} catch (org.omg.CORBA.BAD_PARAM ex) {
// It was not a context
throw new org.omg.CosNaming.NamingContextPackage.NotFound(NotFoundReason.not_context,n);
}
// Hmm. must be ok
return context;
|
public org.omg.CORBA.Object | resolve_str(java.lang.String sn)This operation resolves the Stringified name into the object
reference.
org.omg.CORBA.Object theObject = null;
// Name valid?
if ( (sn == null ) || (sn.length() == 0) )
{
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
}
org.omg.CosNaming.NameComponent[] theNameComponents =
getINSImpl().convertToNameComponent( sn );
if( ( theNameComponents == null ) || (theNameComponents.length == 0 ) )
{
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
}
theObject = resolve( theNameComponents );
return theObject;
|
public void | setORB(com.sun.corba.se.spi.orb.ORB theOrb)
orb = theOrb;
|
public void | setRootNameService(NameService theNameService)
theNameServiceHandle = theNameService;
|
public void | setServantManagerImpl(ServantManagerImpl theServantManagerImpl)
theServantManagerImplHandle = theServantManagerImpl;
|
public org.omg.CosNaming.NameComponent[] | to_name(java.lang.String sn)This operation converts a Stringified Name into an equivalent array
of Name Components.
// Name valid?
if ( (sn == null ) || (sn.length() == 0) )
{
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
}
org.omg.CosNaming.NameComponent[] theNameComponents =
getINSImpl().convertToNameComponent( sn );
if( ( theNameComponents == null ) || (theNameComponents.length == 0 ) )
{
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
}
for( int i = 0; i < theNameComponents.length; i++ ) {
// If there is a name component whose id and kind null or
// zero length string, then an invalid name exception needs to be
// raised.
if ( ( ( theNameComponents[i].id == null )
||( theNameComponents[i].id.length() == 0 ) )
&&( ( theNameComponents[i].kind == null )
||( theNameComponents[i].kind.length() == 0 ) ) ) {
throw new InvalidName();
}
}
return theNameComponents;
|
public java.lang.String | to_string(org.omg.CosNaming.NameComponent[] n)This operation creates a stringified name from the array of Name
components.
// Name valid?
if ( (n == null ) || (n.length == 0) )
{
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
}
String theStringifiedName = getINSImpl().convertToString( n );
if( theStringifiedName == null )
{
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
}
return theStringifiedName;
|
public java.lang.String | to_url(java.lang.String addr, java.lang.String sn)This operation creates a URL based "iiopname://" format name
from the Stringified Name of the object.
// Name valid?
if ( (sn == null ) || (sn.length() == 0) )
{
throw new org.omg.CosNaming.NamingContextPackage.InvalidName();
}
if( addr == null )
{
throw new org.omg.CosNaming.NamingContextExtPackage.InvalidAddress();
}
String urlBasedAddress = null;
try {
urlBasedAddress = getINSImpl().createURLBasedAddress( addr, sn );
} catch (Exception e ) {
urlBasedAddress = null;
}
// Extra check to see that corba name url created is valid as per
// INS spec grammer.
try {
INSURLHandler.getINSURLHandler().parseURL( urlBasedAddress );
} catch( BAD_PARAM e ) {
throw new
org.omg.CosNaming.NamingContextExtPackage.InvalidAddress();
}
return urlBasedAddress;
|
public void | unbind(NameComponent[] n)Remove a binding from this NamingContext. If the name contains
multiple (n) components, the first n-1 components will be resolved
from this NamingContext and the final component unbound in
the resulting NamingContext.
if (debug)
dprint("unbind " + nameToString(n));
// doUnbind actually unbinds
NamingContextDataStore impl = (NamingContextDataStore)this;
doUnbind(impl,n);
|