All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.fge.compiler.DiagnosticsReporting Maven / Gradle / Ivy

package com.github.fge.compiler;

import com.github.fge.jsonschema.core.report.ListProcessingReport;
import com.github.fge.jsonschema.core.report.LogLevel;
import com.github.fge.jsonschema.core.report.ProcessingMessage;
import com.github.fge.jsonschema.core.report.ProcessingReport;
import com.google.common.collect.Maps;

import javax.tools.Diagnostic;
import javax.tools.DiagnosticListener;
import javax.tools.JavaFileObject;
import java.util.EnumMap;
import java.util.Locale;

public final class DiagnosticsReporting
    implements DiagnosticListener
{
    private static final EnumMap LEVEL_MAP
        = Maps.newEnumMap(Diagnostic.Kind.class);

    static  {
        LEVEL_MAP.put(Diagnostic.Kind.ERROR, LogLevel.ERROR);
        LEVEL_MAP.put(Diagnostic.Kind.MANDATORY_WARNING, LogLevel.WARNING);
        LEVEL_MAP.put(Diagnostic.Kind.WARNING, LogLevel.WARNING);
        LEVEL_MAP.put(Diagnostic.Kind.NOTE, LogLevel.INFO);
        LEVEL_MAP.put(Diagnostic.Kind.OTHER, LogLevel.DEBUG);
    }

    private final ListProcessingReport report
        = new ListProcessingReport(LogLevel.DEBUG, LogLevel.NONE);

    @Override
    public void report(final Diagnostic diagnostic)
    {
        final LogLevel level = LEVEL_MAP.get(diagnostic.getKind());
        final ProcessingMessage message = new ProcessingMessage()
            .setMessage(diagnostic.getMessage(Locale.ENGLISH))
            .setLogLevel(level)
            .put("line", diagnostic.getLineNumber())
            .put("column", diagnostic.getColumnNumber());

        report.log(level, message);
    }

    public ProcessingReport getReport()
    {
        return report;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy