/**
  * Extract the id from a resource element and add to the resource map then recurse into any
  * contained resources. Also extract the ids from any contained method and its representation or
  * fault elements.
  *
  * @param file the URI of the current WADL file being processed
  * @param r the resource element
  * @throws javax.xml.bind.JAXBException if the WADL file is invalid or if the code generator
  *     encounters a problem.
  * @throws java.io.IOException if the specified WADL file cannot be read.
  */
 protected void extractResourceIds(Resource r, URI file) throws JAXBException, IOException {
   processIDHref(file, r.getId(), null, r);
   for (String type : r.getType()) {
     processIDHref(file, null, type, r);
   }
   for (Object child : r.getMethodOrResource()) {
     if (child instanceof Method) extractMethodIds((Method) child, file);
     else if (child instanceof Resource) extractResourceIds((Resource) child, file);
   }
 }
 /**
  * Add a resource and (recursively) its children to a tree starting at the parent. Follow
  * references to resources across WADL file boundaries
  *
  * @param parent the parent resource in the tree being built
  * @param resource the WADL resource to process
  * @param file the URI of the current WADL file being processed
  */
 protected void buildResourceTree(ResourceNode parent, Resource resource, URI file) {
   if (resource != null) {
     ResourceNode n = parent.addChild(resource);
     for (String type : resource.getType()) {
       addTypeToResource(n, type, file);
     }
     for (Object child : resource.getMethodOrResource()) {
       if (child instanceof Resource) {
         Resource childResource = (Resource) child;
         buildResourceTree(n, childResource, file);
       } else if (child instanceof Method) {
         Method m = (Method) child;
         addMethodToResource(n, m, file);
       }
     }
   }
 }