package com.hubspot.jinjava.interpret; import java.util.Optional; public class TagCycleException extends TemplateStateException { private static final long serialVersionUID = -3058494056577268723L; private final String path; private final String tagName; public TagCycleException(String tagName, String path, int lineNumber) { super(tagName + " tag cycle for '" + path + "'", lineNumber); this.path = path; this.tagName = tagName; } public String getPath() { return path; } public String getTagName() { return tagName; } public static TagCycleException create(Class<? extends TagCycleException> clazz, String path, Optional<Integer> linenumber) { final Integer line = linenumber.orElse(-1); if (clazz != null) { if (clazz.equals(ExtendsTagCycleException.class)) { return new ExtendsTagCycleException(path, line); } else if (clazz.equals(ImportTagCycleException.class)) { return new ImportTagCycleException(path, line); } else if (clazz.equals(IncludeTagCycleException.class)) { return new IncludeTagCycleException(path, line); } else if (clazz.equals(MacroTagCycleException.class)) { return new MacroTagCycleException(path, line); } } return new TagCycleException("", path, line); } }