private AttributeActionSet getAttributeActionsExplicit ( String ns ) { AttributeActionSet actions = ( AttributeActionSet ) attributeMap . get ( ns ) ; if ( actions == null ) { // iterate namespace specifications. for ( Enumeration e = nssAttributeMap . keys ( ) ; e . hasMoreElements ( ) && actions == null ; ) { NamespaceSpecification nssI = ( NamespaceSpecification ) e . nextElement ( ) ; // If a namespace specification convers the current namespace URI then we get those actions. if ( nssI . covers ( ns ) ) { actions = ( AttributeActionSet ) nssAttributeMap . get ( nssI ) ; } } // Store them in the element Map for faster access next time. if ( actions != null ) { attributeMap . put ( ns , actions ) ; } } // Look into the included modes if ( actions == null && includedModes != null ) { Iterator i = includedModes . iterator ( ) ; while ( actions == null && i . hasNext ( ) ) { Mode includedMode = ( Mode ) i . next ( ) ; actions = includedMode . getAttributeActionsExplicit ( ns ) ; } if ( actions != null ) { attributeMap . put ( ns , actions ) ; } } if ( actions == null && baseMode != null ) { actions = baseMode . getAttributeActionsExplicit ( ns ) ; if ( actions != null ) attributeMap . put ( ns , actions ) ; } if ( actions != null && actions . getCancelNestedActions ( ) ) { actions = null ; } return actions ; }
Look for attribute actions specifically specified for this namespace . If the current mode does not have actions for that namespace look at base modes . If the actions are defined in a base mode we need to get a copy of those actions associated with this mode so we call changeCurrentMode on them .