@Override public void bind(Name name, Object obj) throws NamingException { if (name.isEmpty()) { throw new InvalidNameException("Cannot bind empty name"); } Name nm = getMyComponents(name); String atom = nm.get(0); Object inter = iBindings.get(atom); if (nm.size() == 1) { if (inter != null) throw new NameAlreadyBoundException("Use rebind to override"); obj = NamingManager.getStateToBind(obj, new CompositeName().add(atom), this, iEnv); iBindings.put(atom, obj); } else { if (!(inter instanceof Context)) throw new NotContextException(atom + " does not name a context"); ((Context) inter).bind(nm.getSuffix(1), obj); } }
@Override public void rebind(Name name, Object obj) throws NamingException { if (name.isEmpty()) throw new InvalidNameException("Cannot bind empty name"); Name nm = getMyComponents(name); String atom = nm.get(0); if (nm.size() == 1) { obj = NamingManager.getStateToBind(obj, new CompositeName().add(atom), this, iEnv); iBindings.put(atom, obj); } else { Object inter = iBindings.get(atom); if (!(inter instanceof Context)) throw new NotContextException(atom + " does not name a context"); ((Context) inter).rebind(nm.getSuffix(1), obj); } }
static private javax.naming.Context getContinuationContext(CannotProceedException cpe) throws NamingException { try { return NamingManager.getContinuationContext(cpe); } catch (CannotProceedException e) { java.lang.Object resObj = e.getResolvedObj(); if (resObj instanceof Reference) { Reference ref = (Reference)resObj; RefAddr addr = ref.get("nns"); if (addr.getContent() instanceof javax.naming.Context) { NamingException ne = new NameNotFoundException( "No object reference bound for specified name"); ne.setRootCause(cpe.getRootCause()); ne.setRemainingName(cpe.getRemainingName()); throw ne; } } throw e; } }
/** * Encodes an object prior to binding it in the registry. First, * NamingManager.getStateToBind() is invoked. If the resulting * object is Remote, it is returned. If it is a Reference or * Referenceable, the reference is wrapped in a Remote object. * Otherwise, an exception is thrown. * * @param name The object's name relative to this context. */ private Remote encodeObject(Object obj, Name name) throws NamingException, RemoteException { obj = NamingManager.getStateToBind(obj, name, this, environment); if (obj instanceof Remote) { return (Remote)obj; } if (obj instanceof Reference) { return (new ReferenceWrapper((Reference)obj)); } if (obj instanceof Referenceable) { return (new ReferenceWrapper(((Referenceable)obj).getReference())); } throw (new IllegalArgumentException( "RegistryContext: " + "object to bind must be Remote, Reference, or Referenceable")); }
public Object lookup(Name name) throws NamingException { PartialCompositeContext ctx = this; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); Object answer; Name nm = name; try { answer = ctx.p_lookup(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); answer = ctx.p_lookup(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); answer = cctx.lookup(e.getRemainingName()); } return answer; }
public void bind(Name name, Object newObj) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { ctx.p_bind(nm, newObj, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); ctx.p_bind(nm, newObj, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); cctx.bind(e.getRemainingName(), newObj); } }
public void rebind(Name name, Object newObj) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { ctx.p_rebind(nm, newObj, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); ctx.p_rebind(nm, newObj, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); cctx.rebind(e.getRemainingName(), newObj); } }
public void unbind(Name name) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { ctx.p_unbind(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); ctx.p_unbind(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); cctx.unbind(e.getRemainingName()); } }
public void rename(Name oldName, Name newName) throws NamingException { PartialCompositeContext ctx = this; Name nm = oldName; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(oldName, env); try { ctx.p_rename(nm, newName, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); ctx.p_rename(nm, newName, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); if (e.getRemainingNewName() != null) { // %%% e.getRemainingNewName() should never be null newName = e.getRemainingNewName(); } cctx.rename(e.getRemainingName(), newName); } }
public NamingEnumeration<NameClassPair> list(Name name) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; NamingEnumeration<NameClassPair> answer; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { answer = ctx.p_list(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); answer = ctx.p_list(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); answer = cctx.list(e.getRemainingName()); } return answer; }
public NamingEnumeration<Binding> listBindings(Name name) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; NamingEnumeration<Binding> answer; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { answer = ctx.p_listBindings(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); answer = ctx.p_listBindings(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); answer = cctx.listBindings(e.getRemainingName()); } return answer; }
public void destroySubcontext(Name name) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { ctx.p_destroySubcontext(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); ctx.p_destroySubcontext(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); cctx.destroySubcontext(e.getRemainingName()); } }
public Context createSubcontext(Name name) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; Context answer; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { answer = ctx.p_createSubcontext(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); answer = ctx.p_createSubcontext(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); answer = cctx.createSubcontext(e.getRemainingName()); } return answer; }
public Object lookupLink(Name name) throws NamingException { PartialCompositeContext ctx = this; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); Object answer; Name nm = name; try { answer = ctx.p_lookupLink(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); answer = ctx.p_lookupLink(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); answer = cctx.lookupLink(e.getRemainingName()); } return answer; }
public NameParser getNameParser(Name name) throws NamingException { PartialCompositeContext ctx = this; Name nm = name; NameParser answer; Hashtable<?,?> env = p_getEnvironment(); Continuation cont = new Continuation(name, env); try { answer = ctx.p_getNameParser(nm, cont); while (cont.isContinue()) { nm = cont.getRemainingName(); ctx = getPCContext(cont); answer = ctx.p_getNameParser(nm, cont); } } catch (CannotProceedException e) { Context cctx = NamingManager.getContinuationContext(e); answer = cctx.getNameParser(e.getRemainingName()); } return answer; }