/** * This function is used when implementing a naming system that supports junctions. For example, * when the a_bind_nns(name, newobj) method is invoked, that means the caller is attempting to * bind the object 'newobj' to the nns of 'name'. For context that supports junctions, 'name' * names a junction and is pointing to the root of another naming system, which in turn might have * an nns. This means that a_bind_nns() should first resolve 'name' and attempt to continue the * operation in the context named by 'name'. (i.e. bind to the nns of the context named by * 'name'). If name is already empty, then throw NameNotFoundException because this context by * default does not have any nns. */ protected void a_processJunction_nns(String name, Continuation cont) throws NamingException { if (name.equals("")) { NameNotFoundException e = new NameNotFoundException(); cont.setErrorNNS(this, name); throw cont.fillInException(e); } try { // lookup name to continue operation in nns Object target = a_lookup(name, cont); if (cont.isContinue()) cont.appendRemainingComponent(""); // add nns back else { cont.setContinueNNS(target, name, this); } } catch (NamingException e) { e.appendRemainingComponent(""); // add nns back throw e; } }