Class SAXBugCollectionHandler

  • All Implemented Interfaces:
    org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

    public class SAXBugCollectionHandler
    extends org.xml.sax.helpers.DefaultHandler
    Build a BugCollection based on SAX events. This is intended to replace the old DOM-based parsing of XML bug result files, which was very slow.
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
      • FIND_BUGS_FILTER

        private static final java.lang.String FIND_BUGS_FILTER
        See Also:
        Constant Field Values
      • bugCollection

        @CheckForNull
        private final BugCollection bugCollection
      • project

        @CheckForNull
        private final Project project
      • matcherStack

        private final java.util.Stack<CompoundMatcher> matcherStack
      • filter

        private Filter filter
      • cache

        private final MapCache<java.lang.String,​java.lang.String> cache
      • elementStack

        private final java.util.ArrayList<java.lang.String> elementStack
      • textBuffer

        private final java.lang.StringBuilder textBuffer
      • stackTrace

        private final java.util.ArrayList<java.lang.String> stackTrace
      • nestingOfIgnoredElements

        private int nestingOfIgnoredElements
      • base

        @CheckForNull
        private final java.io.File base
      • topLevelName

        private final java.lang.String topLevelName
      • qnameCache

        private final java.util.Map<java.lang.String,​java.lang.reflect.Method> qnameCache
      • ignoredElement

        java.util.regex.Pattern ignoredElement
      • DEBUG

        private static boolean DEBUG
      • nextMatchedIsDisabled

        boolean nextMatchedIsDisabled
      • outerElementTags

        private final java.util.Set<java.lang.String> outerElementTags
      • sourceDirs

        java.util.List<java.lang.String> sourceDirs
    • Constructor Detail

      • SAXBugCollectionHandler

        private SAXBugCollectionHandler​(java.lang.String topLevelName,
                                        @CheckForNull
                                        BugCollection bugCollection,
                                        @CheckForNull
                                        Project project,
                                        @CheckForNull
                                        java.io.File base)
      • SAXBugCollectionHandler

        public SAXBugCollectionHandler​(BugCollection bugCollection,
                                       @CheckForNull
                                       java.io.File base)
      • SAXBugCollectionHandler

        public SAXBugCollectionHandler​(BugCollection bugCollection)
      • SAXBugCollectionHandler

        public SAXBugCollectionHandler​(Project project,
                                       java.io.File base)
      • SAXBugCollectionHandler

        public SAXBugCollectionHandler​(Filter filter,
                                       java.io.File base)
    • Method Detail

      • getOptionalAttribute

        public java.lang.String getOptionalAttribute​(org.xml.sax.Attributes attributes,
                                                     java.lang.String qName)
      • discardedElement

        public boolean discardedElement​(java.lang.String qName)
      • getTextContents

        public java.lang.String getTextContents()
      • memoized

        private java.lang.String memoized​(java.lang.String s)
      • startElement

        public void startElement​(java.lang.String uri,
                                 java.lang.String name,
                                 java.lang.String qName,
                                 org.xml.sax.Attributes attributes)
                          throws org.xml.sax.SAXException
        Specified by:
        startElement in interface org.xml.sax.ContentHandler
        Overrides:
        startElement in class org.xml.sax.helpers.DefaultHandler
        Throws:
        org.xml.sax.SAXException
      • isCompoundElementTag

        private boolean isCompoundElementTag​(java.lang.String qName)
      • isTopLevelFilter

        private boolean isTopLevelFilter​(java.lang.String qName)
      • addMatcher

        private void addMatcher​(Matcher m)
      • pushCompoundMatcherAsChild

        private void pushCompoundMatcherAsChild​(CompoundMatcher m)
      • pushCompoundMatcher

        private void pushCompoundMatcher​(CompoundMatcher m)
      • parseMatcher

        private void parseMatcher​(java.lang.String qName,
                                  org.xml.sax.Attributes attributes)
                           throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • parseBugInstanceContents

        private void parseBugInstanceContents​(java.lang.String qName,
                                              org.xml.sax.Attributes attributes)
                                       throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • parseLong

        private long parseLong​(java.lang.String s,
                               long defaultValue)
      • setAnnotationRole

        private void setAnnotationRole​(org.xml.sax.Attributes attributes,
                                       BugAnnotation bugAnnotation)
      • createSourceLineAnnotation

        private SourceLineAnnotation createSourceLineAnnotation​(java.lang.String qName,
                                                                org.xml.sax.Attributes attributes)
                                                         throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • endElement

        public void endElement​(java.lang.String uri,
                               java.lang.String name,
                               java.lang.String qName)
                        throws org.xml.sax.SAXException
        Specified by:
        endElement in interface org.xml.sax.ContentHandler
        Overrides:
        endElement in class org.xml.sax.helpers.DefaultHandler
        Throws:
        org.xml.sax.SAXException
      • makeAbsolute

        private java.lang.String makeAbsolute​(java.lang.String possiblyRelativePath)
      • characters

        public void characters​(char[] ch,
                               int start,
                               int length)
        Specified by:
        characters in interface org.xml.sax.ContentHandler
        Overrides:
        characters in class org.xml.sax.helpers.DefaultHandler
      • getRequiredAttribute

        private java.lang.String getRequiredAttribute​(org.xml.sax.Attributes attributes,
                                                      java.lang.String attrName,
                                                      java.lang.String elementName)
                                               throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException