public void checkMessages ( XMLFile messagesDoc ) throws DocumentException { // Detector elements must all have a class attribute // and details child element. for ( Iterator < Node > i = messagesDoc . xpathIterator ( "/MessageCollection/Detector" ) ; i . hasNext ( ) ; ) { Node node = i . next ( ) ; messagesDoc . checkAttribute ( node , "class" ) ; messagesDoc . checkElement ( node , "Details" ) ; } // BugPattern elements must all have type attribute // and ShortDescription, LongDescription, and Details // child elements. for ( Iterator < Node > i = messagesDoc . xpathIterator ( "/MessageCollection/BugPattern" ) ; i . hasNext ( ) ; ) { Node node = i . next ( ) ; messagesDoc . checkAttribute ( node , "type" ) ; messagesDoc . checkElement ( node , "ShortDescription" ) ; messagesDoc . checkElement ( node , "LongDescription" ) ; messagesDoc . checkElement ( node , "Details" ) ; } // BugCode elements must contain abbrev attribute // and have non-empty text for ( Iterator < Node > i = messagesDoc . xpathIterator ( "/MessageCollection/BugCode" ) ; i . hasNext ( ) ; ) { Node node = i . next ( ) ; messagesDoc . checkAttribute ( node , "abbrev" ) ; messagesDoc . checkNonEmptyText ( node ) ; } // Check that all Detectors are described Set < String > describedDetectorsSet = messagesDoc . collectAttributes ( "/MessageCollection/Detector" , "class" ) ; checkDescribed ( "Bug detectors not described by Detector elements" , messagesDoc , declaredDetectorsSet , describedDetectorsSet ) ; // Check that all BugCodes are described Set < String > describedAbbrevsSet = messagesDoc . collectAttributes ( "/MessageCollection/BugCode" , "abbrev" ) ; checkDescribed ( "Abbreviations not described by BugCode elements" , messagesDoc , declaredAbbrevsSet , describedAbbrevsSet ) ; }
Check given messages file for validity .