public void register ( XAttribute attribute ) { if ( keyMap . containsKey ( attribute . getKey ( ) ) == false ) { // create new attribute prototype XAttribute prototype = XAttributeUtils . derivePrototype ( attribute ) ; // add to main map keyMap . put ( attribute . getKey ( ) , prototype ) ; // initialize frequency frequencies . put ( attribute . getKey ( ) , 1 ) ; // register with type map Set < XAttribute > typeSet = typeMap . get ( XAttributeUtils . getType ( prototype ) ) ; if ( typeSet == null ) { typeSet = new HashSet < XAttribute > ( ) ; typeMap . put ( XAttributeUtils . getType ( prototype ) , typeSet ) ; } typeSet . add ( prototype ) ; // register with extension map if ( attribute . getExtension ( ) == null ) { // non-extension attribute noExtensionSet . add ( prototype ) ; } else { // register with extension map Set < XAttribute > extensionSet = extensionMap . get ( attribute . getExtension ( ) ) ; if ( extensionSet == null ) { extensionSet = new HashSet < XAttribute > ( ) ; extensionMap . put ( attribute . getExtension ( ) , extensionSet ) ; } extensionSet . add ( prototype ) ; } } else { // adjust frequency frequencies . put ( attribute . getKey ( ) , frequencies . get ( attribute . getKey ( ) ) + 1 ) ; } // adjust total frequency totalFrequency ++ ; }
Registers a concrete attribute with this registry .