opendap/src/main/java/opendap/dap/DAS.java
private void resolveAliases(AttributeTable at) throws MalformedAliasException, UnresolvedAliasException, NoSuchAttributeException
    {
        // Cache the current (parent) Attribute table. This value is
        // null if this method is called from parse();
        AttributeTable cacheAT = currentAT;
        try {

        // Set the current AttributeTable to the one that we are searching.
        currentAT = at;

        if (Debug.isSet("DAS")) {
		    DAPNode.log.debug("DAS.resolveAliases(at=" + at + ")");
	    }

        //getall of the Attributes from the table.
        Enumeration aNames = at.getNames();
        while (aNames.hasMoreElements()) {

            String aName = (String) aNames.nextElement();
            if (Debug.isSet("DAS")) {
		DAPNode.log.debug("DAS.resolveAliases(at=" + at + ") - aName: " + aName);
	    }

            opendap.dap.Attribute thisA = currentAT.getAttribute(aName);

            if (Debug.isSet("DAS")) {
		DAPNode.log.debug("thisA.getClass().getName(): " + thisA.getClass().getName());
	    }

            if (thisA.isAlias()) {
                //Is Alias? Resolve it!
                resolveAlias((Alias) thisA);
                if (Debug.isSet("DAS")) {
		DAPNode.log.debug("Resolved Alias: '" + thisA.getEncodedName() + "'\n");
	    }
            } else if (thisA.isContainer()) {
                //Is AttributeTable (container)? Search it!

                resolveAliases(thisA.getContainer());

            }
        }
    } finally {
        // Restore the previous currentAT state.
        currentAT = cacheAT;
}

    }
private void resolveAliases(AttributeTable at) throws MalformedAliasException, UnresolvedAliasException, NoSuchAttributeException
    {
        // Cache the current (parent) Attribute table. This value is
        // null if this method is called from parse();
        AttributeTable cacheAT = currentAT;
        try {

        // Set the current AttributeTable to the one that we are searching.
        currentAT = at;

        if (Debug.isSet("DAS")) {
		    DAPNode.log.debug("DAS.resolveAliases(at=" + at + ")");
	    }

        //getall of the Attributes from the table.
        Enumeration aNames = at.getNames();
        while (aNames.hasMoreElements()) {

            String aName = (String) aNames.nextElement();
            if (Debug.isSet("DAS")) {
		DAPNode.log.debug("DAS.resolveAliases(at=" + at + ") - aName: " + aName);
	    }

            opendap.dap.Attribute thisA = currentAT.getAttribute(aName);

            if (Debug.isSet("DAS")) {
		DAPNode.log.debug("thisA.getClass().getName(): " + thisA.getClass().getName());
	    }

            if (thisA.isAlias()) {
                //Is Alias? Resolve it!
                resolveAlias((Alias) thisA);
                if (Debug.isSet("DAS")) {
		DAPNode.log.debug("Resolved Alias: '" + thisA.getEncodedName() + "'\n");
	    }
            } else if (thisA.isContainer()) {
                //Is AttributeTable (container)? Search it!

                resolveAliases(thisA.getContainer());

            }
        }
    } finally {
        // Restore the previous currentAT state.
        currentAT = cacheAT;
}

    }
private void resolveAliases ( AttributeTable at ) throws MalformedAliasException , UnresolvedAliasException , NoSuchAttributeException { // Cache the current (parent) Attribute table. This value is
 // null if this method is called from parse();
 AttributeTable cacheAT = currentAT ; try { // Set the current AttributeTable to the one that we are searching.
 currentAT = at ; if ( Debug . isSet ( "DAS" ) ) { DAPNode . log . debug ( "DAS.resolveAliases(at=" + at + ")" ) ; } //getall of the Attributes from the table.
 Enumeration aNames = at . getNames ( ) ; while ( aNames . hasMoreElements ( ) ) { String aName = ( String ) aNames . nextElement ( ) ; if ( Debug . isSet ( "DAS" ) ) { DAPNode . log . debug ( "DAS.resolveAliases(at=" + at + ") - aName: " + aName ) ; } opendap . dap . Attribute thisA = currentAT . getAttribute ( aName ) ; if ( Debug . isSet ( "DAS" ) ) { DAPNode . log . debug ( "thisA.getClass().getName(): " + thisA . getClass ( ) . getName ( ) ) ; } if ( thisA . isAlias ( ) ) { //Is Alias? Resolve it!
 resolveAlias ( ( Alias ) thisA ) ; if ( Debug . isSet ( "DAS" ) ) { DAPNode . log . debug ( "Resolved Alias: '" + thisA . getEncodedName ( ) + "'\n" ) ; } } else if ( thisA . isContainer ( ) ) { //Is AttributeTable (container)? Search it!
 resolveAliases ( thisA . getContainer ( ) ) ; } } } finally { // Restore the previous currentAT state.
 currentAT = cacheAT ; } }
This method recursively searchs through the passed <code>AttributeTable</code> parameter
at for Alias members. When an Alias is found the method attempts to
resolve it to a specific Attribute.
<p/>
This method gets called is invoked by <code>reolveAliases(BaseType bt)</code>, and is
used to search for Aliases in AttributeTables found in a BaseTypes Attributes.
<p/>
This method manipulates the global variable <code>currentBT</code>.

@param at The <code>AttributeTable</code> in which to search for and resolve Alias members
This method recursively searchs through the passed <code > AttributeTable< / code > parameter at for Alias members . When an Alias is found the method attempts to resolve it to a specific Attribute . <p / > This method gets called is invoked by <code > reolveAliases ( BaseType bt ) < / code > and is used to search for Aliases in AttributeTables found in a BaseTypes Attributes . <p / > This method manipulates the global variable <code > currentBT< / code > .