package com.intellij.codeInspection; import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.ArrayUtil; import com.intellij.util.FunctionUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class CommonProblemDescriptorImpl implements CommonProblemDescriptor { private static final Logger LOG = Logger.getInstance(CommonProblemDescriptorImpl.class); private final QuickFix[] myFixes; private final String myDescriptionTemplate; public CommonProblemDescriptorImpl(final QuickFix[] fixes, @NotNull final String descriptionTemplate) { if (fixes == null) { myFixes = null; } else if (fixes.length == 0) { myFixes = QuickFix.EMPTY_ARRAY; } else { // no copy in most cases myFixes = ArrayUtil.contains(null, fixes) ? ContainerUtil.mapNotNull(fixes, FunctionUtil.id(), QuickFix.EMPTY_ARRAY) : fixes; if (!(this instanceof ProblemDescriptor)) { for (QuickFix fix : fixes) { if (fix instanceof LocalQuickFix) { LOG.error("Local quick fix expect ProblemDescriptor, but here only CommonProblemDescriptor available"); } } } } myDescriptionTemplate = descriptionTemplate; } @Override @NotNull public String getDescriptionTemplate() { return myDescriptionTemplate; } @Override @Nullable public QuickFix[] getFixes() { return myFixes; } public String toString() { return myDescriptionTemplate; } }