| Adding Federation Support

## The Next Naming System

> Once you have done the processing for the current naming system, as described in the previous section, very little work is left to be done to complete the operation.

> Here is a sample implementation of `bind()` from the previous section.

> >     public void bind(Name name, Object bindObj) throws NamingException {
> >         try {
> >     	Name[] nm = parseComponents(name);
> >     	Name mine = nm[0];
> >     	Name rest = nm[1];

> >     	if (rest == null || rest.isEmpty()) {
> >     	    // Terminal; just use head
> >     	    bind_internal(mine, bindObj);
> >     	} else if (rest.get(0).equals("") && rest.size() == 1) {
> >     	    // Terminal nns
> >     	    bind_nns(mine, bindObj);
> >     	} else if (mine.isEmpty() || isAllEmpty(rest)) {
> >     	    // Intermediate; resolve current components as intermediate
> >     	    Object obj = lookup_nns(mine);

> >     	    // Skip the leading forward slash
> >     	    throw fillInCPE(obj, mine, rest.getSuffix(1));
> >     	} else {
> >     	    // Intermediate; resolve current components as intermediate
> >     	    Object obj = resolveIntermediate_nns(mine, rest);

> >     	    throw fillInCPE(obj, mine, rest);
> >     	}
> >         } catch (CannotProceedException e) {
> >     	Context cctx = NamingManager.getContinuationContext(e);
> >     	cctx.bind(e.getRemainingName(), bindObj);
> >         }
> >     }

> Evaluating the code with the `try` clause can result in any of three outcomes.
> - The operation completes successfully.
> - The operation results in an error and throws a `NamingException`.
> - The operation needs to be continued in the nns and throws a `CannotProceedException`
> You handle the last outcome by attempting to find a continuation context, by using `NamingManager.getContinuationContext()` or `DirectoryManager.getContinuationDirContext()`, based on information in the `CannotProceedException`. You then proceed to invoke the same method on the continuation context by using the remaining name.

> The approach described here is based heavily on throwing and catching a `CannotProceedException`. However, it is not the only approach. You could achieve the same results by using an iterative approach.

| Adding Federation Support