private void removeDiscriminatorNode ( Discriminator d ) throws DiscriminationProcessException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . entry ( tc , "removeDiscriminatorNode: " + d ) ; } if ( d == null ) { DiscriminationProcessException e = new DiscriminationProcessException ( "Can't remove a null discriminator" ) ; FFDCFilter . processException ( e , getClass ( ) . getName ( ) + ".removeDiscriminatorNode" , "484" , this ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . exit ( tc , "removeDiscriminatorNode" ) ; } throw e ; } if ( discriminators . disc . equals ( d ) ) { // removing the first discriminator discriminators = discriminators . next ; if ( discriminators != null ) { discriminators . prev = null ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . exit ( tc , "removeDiscriminatorNode" ) ; } return ; } // search through the list of discriminators DiscriminatorNode thisDN = discriminators . next , lastDN = discriminators ; while ( thisDN . next != null ) { if ( thisDN . disc . equals ( d ) ) { thisDN . next . prev = lastDN ; lastDN . next = thisDN . next ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . exit ( tc , "removeDiscriminatorNode" ) ; } return ; } // somewhere in the middle lastDN = thisDN ; thisDN = thisDN . next ; } if ( thisDN . disc . equals ( d ) ) { // found it! lastDN . next = null ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . exit ( tc , "removeDiscriminatorNode" ) ; } return ; } // Does not exist? if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . exit ( tc , "removeDiscriminatorNode: not found" ) ; } throw new NoSuchElementException ( ) ; }
remove the discriminatorNode from the linkedList .