Hi,

I have the following code ( see below) and this parser is never registered.

Any ideas why?

br,

//Mike

package jenkins.plugins.parse;

import java.io.IOException;
import java.util.List;
import java.util.logging.Logger;

import jenkins.plugins.qrank.PluginImpl;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

/**
 * Parses findbugs result XMLs generated using into objects that are then
used
 * to display results in Jenkins.
 * http://www.xmlpull.org/v1/download/unpacked/doc/quick_intro.html
 * 
 * 
 * @author mikael petterson
 */
public class FindBugsParser extends AbstractPullParser {

        /** Prints the logs to the web server's console / log files */
        private static final Logger log = Logger.getLogger(FindBugsParser.class
                        .getName());

        private static final String TYPE = "type";
        private static final String PRIORITY = "priority";

        private XmlPullParser xpp;

        private static int highCtr = 0;
        private static int mediumCtr = 0;
        private static int lowCtr = 0;

        private static final int HIGH = 1;
        private static final int MEDIUM = 2;
        private static final int LOW = 3;

        private enum TAGS {
                BUGINSTANCE, UNKNOWN;

                // convert from tagname in xml to value.
                public static TAGS fromString(String val) {
                        if (val == null) {
                                return UNKNOWN;
                        }
                        val = val.toUpperCase().replace('-', '_');
                        try {
                                return TAGS.valueOf(val);
                        } catch (IllegalArgumentException e) {
                                return UNKNOWN;
                        }
                }
        }

        // Register with Factory
        static {
                PullParserFactory.instance().registerParser(PluginImpl.FINDBUGS,
                                new FindBugsParser());
        }

        public AbstractPullParser createParser() {
                return new FindBugsParser();
        }

        @Override
        public void execute() throws IOException, XmlPullParserException {

                while (XmlPullParser.END_DOCUMENT != getParser().nextToken()) {
                        TAGS tag = TAGS.fromString(getParser().getName());
                        int eventType = getParser().getEventType();

                        switch (eventType) {
                        // all opening tags
                        case XmlPullParser.START_TAG:
                                switch (tag) {
                                case BUGINSTANCE:
                                        startBugInstance();
                                        break;
                                }
                                break;
                        }
                }

                getResults().setResult(PluginImpl.FB_HIGH_WARNINGS, highCtr);
                getResults().setResult(PluginImpl.FB_MEDIUM_WARNINGS, 
mediumCtr);
                getResults().setResult(PluginImpl.FB_LOW_WARNINGS, lowCtr);

        }

        private void startBugInstance() throws IOException, 
XmlPullParserException
{
                String type = getParser().getAttributeValue("", TYPE);
                String priority = getParser().getAttributeValue("", PRIORITY);
                count(priority);
        }

        private void count(String priority) {
                int key = Integer.parseInt(priority);
                switch (key) {
                case HIGH:
                        highCtr++;
                        break;
                case MEDIUM:
                        mediumCtr++;
                        break;
                case LOW:
                        mediumCtr++;
                        break;
                default:
                        break;
                }

        }

        public static int getHighCtr() {
                return highCtr;
        }

        public static void setHighCtr(int highCtr) {
                FindBugsParser.highCtr = highCtr;
        }

        public static int getMediumCtr() {
                return mediumCtr;
        }

        public static void setMediumCtr(int mediumCtr) {
                FindBugsParser.mediumCtr = mediumCtr;
        }

        public static int getLowCtr() {
                return lowCtr;
        }

        public static void setLowCtr(int lowCtr) {
                FindBugsParser.lowCtr = lowCtr;
        }

        /**
         * This for registration when testing since static initializer is not
         * called.
         **/
        public static void initForTest() {
                PullParserFactory.instance().registerParser(PluginImpl.FINDBUGS,
                                new FindBugsParser());
        }

}

--
View this message in context: 
http://jenkins.361315.n4.nabble.com/static-initializer-not-working-tp4573686p4573686.html
Sent from the Jenkins dev mailing list archive at Nabble.com.

Reply via email to