diff --git a/pom.xml b/pom.xml index 896d0d8d0..60069a74c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.hubspot basepom - 56.1 + 56.2 com.hubspot.jinjava @@ -14,11 +14,6 @@ Jinja templating engine implemented in Java - false - - 0.7.0 - false - 3.24.1-GA 0.8.3 31.1-jre diff --git a/src/main/java/com/hubspot/jinjava/Jinjava.java b/src/main/java/com/hubspot/jinjava/Jinjava.java index d0019c370..21179b86d 100644 --- a/src/main/java/com/hubspot/jinjava/Jinjava.java +++ b/src/main/java/com/hubspot/jinjava/Jinjava.java @@ -61,6 +61,7 @@ * @author jstehler */ public class Jinjava { + private ExpressionFactory expressionFactory; private ExpressionFactory eagerExpressionFactory; private ResourceLocator resourceLocator; diff --git a/src/main/java/com/hubspot/jinjava/JinjavaConfig.java b/src/main/java/com/hubspot/jinjava/JinjavaConfig.java index 9aef50cee..9cdee6f85 100644 --- a/src/main/java/com/hubspot/jinjava/JinjavaConfig.java +++ b/src/main/java/com/hubspot/jinjava/JinjavaConfig.java @@ -52,6 +52,7 @@ import javax.el.ELResolver; public class JinjavaConfig { + private final Charset charset; private final Locale locale; private final ZoneId timeZone; @@ -314,6 +315,7 @@ public Features getFeatures() { } public static class Builder { + private Charset charset = StandardCharsets.UTF_8; private Locale locale = Locale.ENGLISH; private ZoneId timeZone = ZoneOffset.UTC; @@ -495,8 +497,8 @@ public Builder withTokenScannerSymbols(TokenScannerSymbols tokenScannerSymbols) @Deprecated public Builder withIterateOverMapKeys(boolean iterateOverMapKeys) { return withLegacyOverrides( - LegacyOverrides - .Builder.from(legacyOverrides) + LegacyOverrides.Builder + .from(legacyOverrides) .withIterateOverMapKeys(iterateOverMapKeys) .build() ); diff --git a/src/main/java/com/hubspot/jinjava/LegacyOverrides.java b/src/main/java/com/hubspot/jinjava/LegacyOverrides.java index ce7b8d436..c29fcd711 100644 --- a/src/main/java/com/hubspot/jinjava/LegacyOverrides.java +++ b/src/main/java/com/hubspot/jinjava/LegacyOverrides.java @@ -6,6 +6,7 @@ * LegacyOverrides.ALL signifies that all new functionality will be used; avoid legacy "bugs". */ public class LegacyOverrides { + public static final LegacyOverrides NONE = new LegacyOverrides.Builder().build(); public static final LegacyOverrides ALL = new LegacyOverrides.Builder() .withEvaluateMapKeys(true) @@ -88,6 +89,7 @@ public boolean isKeepNullableLoopValues() { } public static class Builder { + private boolean evaluateMapKeys = false; private boolean iterateOverMapKeys = false; private boolean usePyishObjectMapper = false; diff --git a/src/main/java/com/hubspot/jinjava/doc/JinjavaDoc.java b/src/main/java/com/hubspot/jinjava/doc/JinjavaDoc.java index ef4bb042b..2b03a8728 100644 --- a/src/main/java/com/hubspot/jinjava/doc/JinjavaDoc.java +++ b/src/main/java/com/hubspot/jinjava/doc/JinjavaDoc.java @@ -4,6 +4,7 @@ import java.util.TreeMap; public class JinjavaDoc { + private final Map expTests = new TreeMap<>(); private final Map filters = new TreeMap<>(); private final Map functions = new TreeMap<>(); diff --git a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocFactory.java b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocFactory.java index 0a1af9cb8..fcb7b14cc 100644 --- a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocFactory.java +++ b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocFactory.java @@ -21,6 +21,7 @@ import org.slf4j.LoggerFactory; public class JinjavaDocFactory { + private static final Logger LOG = LoggerFactory.getLogger(JinjavaDocFactory.class); private static final Class JINJAVA_DOC_CLASS = @@ -61,9 +62,8 @@ private void addCodeSnippets(JinjavaDoc doc) { if (tag instanceof EndTag) { continue; } - com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = getJinjavaDocAnnotation( - tag.getClass() - ); + com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = + getJinjavaDocAnnotation(tag.getClass()); if (docAnnotation == null) { LOG.warn( @@ -92,9 +92,8 @@ private void addCodeSnippets(JinjavaDoc doc) { private void addExpTests(JinjavaDoc doc) { for (ExpTest t : jinjava.getGlobalContextCopy().getAllExpTests()) { - com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = getJinjavaDocAnnotation( - t.getClass() - ); + com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = + getJinjavaDocAnnotation(t.getClass()); if (docAnnotation == null) { LOG.warn( @@ -133,9 +132,8 @@ private void addExpTests(JinjavaDoc doc) { private void addFilterDocs(JinjavaDoc doc) { for (Filter f : jinjava.getGlobalContextCopy().getAllFilters()) { - com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = getJinjavaDocAnnotation( - f.getClass() - ); + com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = + getJinjavaDocAnnotation(f.getClass()); if (docAnnotation == null) { LOG.warn( @@ -190,9 +188,8 @@ private void addFnDocs(JinjavaDoc doc) { } } - com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = realMethod.getAnnotation( - com.hubspot.jinjava.doc.annotations.JinjavaDoc.class - ); + com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = + realMethod.getAnnotation(com.hubspot.jinjava.doc.annotations.JinjavaDoc.class); if (docAnnotation == null) { LOG.warn( @@ -235,9 +232,8 @@ private void addTagDocs(JinjavaDoc doc) { if (t instanceof EndTag) { continue; } - com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = getJinjavaDocAnnotation( - t.getClass() - ); + com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = + getJinjavaDocAnnotation(t.getClass()); if (docAnnotation == null) { LOG.warn( @@ -330,9 +326,8 @@ private String getTagSnippet(Tag tag) { if (annotation != null) { return annotation.code(); } - com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = getJinjavaDocAnnotation( - tag.getClass() - ); + com.hubspot.jinjava.doc.annotations.JinjavaDoc docAnnotation = + getJinjavaDocAnnotation(tag.getClass()); StringBuilder snippet = new StringBuilder("{% "); snippet.append(tag.getName()); int i = 1; diff --git a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocItem.java b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocItem.java index f7212a1f8..543957ad2 100644 --- a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocItem.java +++ b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocItem.java @@ -3,6 +3,7 @@ import java.util.Map; public abstract class JinjavaDocItem { + private final String name; private final String desc; private final String aliasOf; diff --git a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocParam.java b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocParam.java index 863b6cd0b..8ff38dacb 100644 --- a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocParam.java +++ b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocParam.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.doc; public class JinjavaDocParam { + private final String name; private final String type; private final String desc; diff --git a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocSnippet.java b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocSnippet.java index c673352c5..78ba4c7f5 100644 --- a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocSnippet.java +++ b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocSnippet.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.doc; public class JinjavaDocSnippet { + private final String desc; private final String code; private final String output; diff --git a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocTag.java b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocTag.java index e2ca84ce0..39ae25d96 100644 --- a/src/main/java/com/hubspot/jinjava/doc/JinjavaDocTag.java +++ b/src/main/java/com/hubspot/jinjava/doc/JinjavaDocTag.java @@ -3,6 +3,7 @@ import java.util.Map; public class JinjavaDocTag extends JinjavaDocItem { + private final boolean empty; public JinjavaDocTag( diff --git a/src/main/java/com/hubspot/jinjava/el/ExpressionResolver.java b/src/main/java/com/hubspot/jinjava/el/ExpressionResolver.java index cd4b9f321..2283293e0 100644 --- a/src/main/java/com/hubspot/jinjava/el/ExpressionResolver.java +++ b/src/main/java/com/hubspot/jinjava/el/ExpressionResolver.java @@ -36,6 +36,7 @@ * Resolves Jinja expressions. */ public class ExpressionResolver { + private final JinjavaInterpreter interpreter; private final ExpressionFactory expressionFactory; private final JinjavaInterpreterResolver resolver; @@ -92,8 +93,8 @@ private Object resolveExpression(String expression, boolean addToResolvedExpress if (WhitespaceUtils.isWrappedWith(expression, "[", "]")) { Arrays .stream(expression.substring(1, expression.length() - 1).split(",")) - .forEach( - substring -> interpreter.getContext().addResolvedExpression(substring.trim()) + .forEach(substring -> + interpreter.getContext().addResolvedExpression(substring.trim()) ); } try { diff --git a/src/main/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilder.java b/src/main/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilder.java index c63401272..1dc7ad5dd 100644 --- a/src/main/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilder.java +++ b/src/main/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilder.java @@ -12,6 +12,7 @@ * */ public class ExtendedSyntaxBuilder extends Builder { + private static final long serialVersionUID = 1L; public ExtendedSyntaxBuilder() { diff --git a/src/main/java/com/hubspot/jinjava/el/JinjavaELContext.java b/src/main/java/com/hubspot/jinjava/el/JinjavaELContext.java index 962b33ea4..15365de2c 100644 --- a/src/main/java/com/hubspot/jinjava/el/JinjavaELContext.java +++ b/src/main/java/com/hubspot/jinjava/el/JinjavaELContext.java @@ -6,6 +6,7 @@ import javax.el.ELResolver; public class JinjavaELContext extends SimpleContext { + private JinjavaInterpreter interpreter; private MacroFunctionMapper functionMapper; diff --git a/src/main/java/com/hubspot/jinjava/el/JinjavaInterpreterResolver.java b/src/main/java/com/hubspot/jinjava/el/JinjavaInterpreterResolver.java index 3c81ca19a..0627a02ba 100644 --- a/src/main/java/com/hubspot/jinjava/el/JinjavaInterpreterResolver.java +++ b/src/main/java/com/hubspot/jinjava/el/JinjavaInterpreterResolver.java @@ -49,8 +49,8 @@ import org.apache.commons.lang3.StringUtils; public class JinjavaInterpreterResolver extends SimpleResolver { - public static final ELResolver DEFAULT_RESOLVER_READ_ONLY = new CompositeELResolver() { + public static final ELResolver DEFAULT_RESOLVER_READ_ONLY = new CompositeELResolver() { { add(new ArrayELResolver(true)); add(new JinjavaListELResolver(true)); @@ -61,7 +61,6 @@ public class JinjavaInterpreterResolver extends SimpleResolver { }; public static final ELResolver DEFAULT_RESOLVER_READ_WRITE = new CompositeELResolver() { - { add(new ArrayELResolver(false)); add(new JinjavaListELResolver(false)); diff --git a/src/main/java/com/hubspot/jinjava/el/JinjavaProcessors.java b/src/main/java/com/hubspot/jinjava/el/JinjavaProcessors.java index b8d3e2c68..01195f64a 100644 --- a/src/main/java/com/hubspot/jinjava/el/JinjavaProcessors.java +++ b/src/main/java/com/hubspot/jinjava/el/JinjavaProcessors.java @@ -5,6 +5,7 @@ import java.util.function.BiConsumer; public class JinjavaProcessors { + private final BiConsumer nodePreProcessor; private final BiConsumer nodePostProcessor; @@ -30,6 +31,7 @@ public static Builder newBuilder(JinjavaProcessors processors) { } public static class Builder { + private BiConsumer nodePreProcessor = (n, i) -> {}; private BiConsumer nodePostProcessor = (n, i) -> {}; diff --git a/src/main/java/com/hubspot/jinjava/el/MacroFunctionMapper.java b/src/main/java/com/hubspot/jinjava/el/MacroFunctionMapper.java index 449bc2f98..a685abb19 100644 --- a/src/main/java/com/hubspot/jinjava/el/MacroFunctionMapper.java +++ b/src/main/java/com/hubspot/jinjava/el/MacroFunctionMapper.java @@ -12,6 +12,7 @@ import javax.el.FunctionMapper; public class MacroFunctionMapper extends FunctionMapper { + private final JinjavaInterpreter interpreter; private Map map = Collections.emptyMap(); diff --git a/src/main/java/com/hubspot/jinjava/el/NoInvokeELContext.java b/src/main/java/com/hubspot/jinjava/el/NoInvokeELContext.java index 4e7900d6f..1f05ec464 100644 --- a/src/main/java/com/hubspot/jinjava/el/NoInvokeELContext.java +++ b/src/main/java/com/hubspot/jinjava/el/NoInvokeELContext.java @@ -6,6 +6,7 @@ import javax.el.VariableMapper; public class NoInvokeELContext extends ELContext { + private ELContext delegate; private NoInvokeELResolver elResolver; diff --git a/src/main/java/com/hubspot/jinjava/el/NoInvokeELResolver.java b/src/main/java/com/hubspot/jinjava/el/NoInvokeELResolver.java index b007aad3d..cdc1030cb 100644 --- a/src/main/java/com/hubspot/jinjava/el/NoInvokeELResolver.java +++ b/src/main/java/com/hubspot/jinjava/el/NoInvokeELResolver.java @@ -12,6 +12,7 @@ * so disallows modification and invocation which may result in modification of values. */ public class NoInvokeELResolver extends ELResolver { + private ELResolver delegate; public NoInvokeELResolver(ELResolver delegate) { diff --git a/src/main/java/com/hubspot/jinjava/el/TruthyTypeConverter.java b/src/main/java/com/hubspot/jinjava/el/TruthyTypeConverter.java index 74b163f23..25babab14 100644 --- a/src/main/java/com/hubspot/jinjava/el/TruthyTypeConverter.java +++ b/src/main/java/com/hubspot/jinjava/el/TruthyTypeConverter.java @@ -11,6 +11,7 @@ import javax.el.ELException; public class TruthyTypeConverter extends TypeConverterImpl { + private static final long serialVersionUID = 1L; public static final int MAX_COLLECTION_STRING_LENGTH = 1_000_000; diff --git a/src/main/java/com/hubspot/jinjava/el/TypeConvertingMapELResolver.java b/src/main/java/com/hubspot/jinjava/el/TypeConvertingMapELResolver.java index 4a3a78ea3..1c6304e7b 100644 --- a/src/main/java/com/hubspot/jinjava/el/TypeConvertingMapELResolver.java +++ b/src/main/java/com/hubspot/jinjava/el/TypeConvertingMapELResolver.java @@ -7,6 +7,7 @@ import javax.el.MapELResolver; public class TypeConvertingMapELResolver extends MapELResolver { + private static final TruthyTypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); public TypeConvertingMapELResolver(boolean readOnly) { diff --git a/src/main/java/com/hubspot/jinjava/el/ext/AbsOperator.java b/src/main/java/com/hubspot/jinjava/el/ext/AbsOperator.java index 6e5ef9d29..5fc001db4 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/AbsOperator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/AbsOperator.java @@ -11,6 +11,7 @@ import de.odysseus.el.tree.impl.ast.AstUnary.SimpleOperator; public class AbsOperator extends SimpleOperator { + public static final ExtensionToken TOKEN = new Scanner.ExtensionToken("+"); public static final AbsOperator OP = new AbsOperator(); @@ -47,7 +48,6 @@ public String toString() { public static ExtensionHandler getHandler(boolean eager) { return new ExtensionHandler(ExtensionPoint.UNARY) { - @Override public AstNode createAstNode(AstNode... children) { return eager ? new EagerAstUnary(children[0], OP) : new AstUnary(children[0], OP); diff --git a/src/main/java/com/hubspot/jinjava/el/ext/AbstractCallableMethod.java b/src/main/java/com/hubspot/jinjava/el/ext/AbstractCallableMethod.java index ebf4e6ce1..91b95550c 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/AbstractCallableMethod.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/AbstractCallableMethod.java @@ -14,6 +14,7 @@ * */ public abstract class AbstractCallableMethod { + public static final Method EVAL_METHOD; static { diff --git a/src/main/java/com/hubspot/jinjava/el/ext/AstDict.java b/src/main/java/com/hubspot/jinjava/el/ext/AstDict.java index 36d52e4f8..938449834 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/AstDict.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/AstDict.java @@ -14,6 +14,7 @@ import javax.el.ELContext; public class AstDict extends AstLiteral { + protected final Map dict; public AstDict(Map dict) { diff --git a/src/main/java/com/hubspot/jinjava/el/ext/AstList.java b/src/main/java/com/hubspot/jinjava/el/ext/AstList.java index df63b3fe4..75648e4d4 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/AstList.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/AstList.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; public class AstList extends AstLiteral { + protected final AstParameters elements; public AstList(AstParameters elements) { diff --git a/src/main/java/com/hubspot/jinjava/el/ext/AstNamedParameter.java b/src/main/java/com/hubspot/jinjava/el/ext/AstNamedParameter.java index cc0134be5..2a78251eb 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/AstNamedParameter.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/AstNamedParameter.java @@ -7,6 +7,7 @@ import javax.el.ELContext; public class AstNamedParameter extends AstLiteral { + private final AstIdentifier name; private final AstNode value; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/AstRangeBracket.java b/src/main/java/com/hubspot/jinjava/el/ext/AstRangeBracket.java index 3de83c028..33b65fcba 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/AstRangeBracket.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/AstRangeBracket.java @@ -17,6 +17,7 @@ import javax.el.PropertyNotFoundException; public class AstRangeBracket extends AstBracket { + protected final AstNode rangeMax; public AstRangeBracket( diff --git a/src/main/java/com/hubspot/jinjava/el/ext/BeanELResolver.java b/src/main/java/com/hubspot/jinjava/el/ext/BeanELResolver.java index 0c5fc32c3..a37720465 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/BeanELResolver.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/BeanELResolver.java @@ -55,11 +55,12 @@ * @see ELResolver */ public class BeanELResolver extends ELResolver { - private static PropertyNotFoundException propertyNotFoundException = new PropertyNotFoundException( - "Could not find property" - ); + + private static PropertyNotFoundException propertyNotFoundException = + new PropertyNotFoundException("Could not find property"); protected static final class BeanProperties { + private final Map map = new HashMap(); public BeanProperties(Class baseClass) { @@ -80,6 +81,7 @@ public BeanProperty getBeanProperty(String property) { } protected static final class BeanProperty { + private final PropertyDescriptor descriptor; private Method readMethod; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperator.java b/src/main/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperator.java index dc72bbcaa..b8ac7f7ee 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperator.java @@ -81,7 +81,8 @@ public String toString() { return TOKEN.getImage(); } - public static final CollectionMembershipOperator OP = new CollectionMembershipOperator(); + public static final CollectionMembershipOperator OP = + new CollectionMembershipOperator(); public static final Scanner.ExtensionToken TOKEN = new Scanner.ExtensionToken("in"); public static final ExtensionHandler HANDLER = getHandler(false); @@ -89,7 +90,6 @@ public String toString() { private static ExtensionHandler getHandler(boolean eager) { return new ExtensionHandler(ExtensionPoint.CMP) { - @Override public AstNode createAstNode(AstNode... children) { return eager diff --git a/src/main/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperator.java b/src/main/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperator.java index dc1e6b4f5..cd7bb681f 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperator.java @@ -21,8 +21,10 @@ public String toString() { return TOKEN.getImage(); } - public static final CollectionNonMembershipOperator NOT_IN_OP = new CollectionNonMembershipOperator(); - public static final CollectionMembershipOperator IN_OP = new CollectionMembershipOperator(); + public static final CollectionNonMembershipOperator NOT_IN_OP = + new CollectionNonMembershipOperator(); + public static final CollectionMembershipOperator IN_OP = + new CollectionMembershipOperator(); public static final Scanner.ExtensionToken TOKEN = new Scanner.ExtensionToken("not in"); public static final ExtensionHandler HANDLER = getHandler(false); @@ -30,7 +32,6 @@ public String toString() { private static ExtensionHandler getHandler(boolean eager) { return new ExtensionHandler(ExtensionPoint.CMP) { - @Override public AstNode createAstNode(AstNode... children) { return eager diff --git a/src/main/java/com/hubspot/jinjava/el/ext/DeferredParsingException.java b/src/main/java/com/hubspot/jinjava/el/ext/DeferredParsingException.java index a58df5984..dc9314412 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/DeferredParsingException.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/DeferredParsingException.java @@ -3,6 +3,7 @@ import com.hubspot.jinjava.interpret.DeferredValueException; public class DeferredParsingException extends DeferredValueException { + private final String deferredEvalResult; private final Object sourceNode; private final IdentifierPreservationStrategy identifierPreservationStrategy; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/ExtendedParser.java b/src/main/java/com/hubspot/jinjava/el/ext/ExtendedParser.java index fa0a1704f..c8d619f14 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/ExtendedParser.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/ExtendedParser.java @@ -51,6 +51,7 @@ import javax.el.ELException; public class ExtendedParser extends Parser { + public static final String INTERPRETER = "____int3rpr3t3r____"; public static final String FILTER_PREFIX = "filter:"; public static final String EXPTEST_PREFIX = "exptest:"; @@ -116,7 +117,6 @@ public ExtendedParser(Builder context, String input) { putExtensionHandler( PIPE, new ExtensionHandler(ExtensionPoint.AND) { - @Override public AstNode createAstNode(AstNode... children) { throw new ELException("Illegal use of '|' operator"); @@ -626,7 +626,6 @@ protected Scanner createScanner(String expression) { } private static final ExtensionHandler NULL_EXT_HANDLER = new ExtensionHandler(null) { - @Override public AstNode createAstNode(AstNode... children) { return null; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolver.java b/src/main/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolver.java index c5c02086a..af5f25cc9 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolver.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolver.java @@ -19,6 +19,7 @@ * {@link BeanELResolver} supporting snake case property names. */ public class JinjavaBeanELResolver extends BeanELResolver { + private static final Set DEFAULT_RESTRICTED_PROPERTIES = ImmutableSet .builder() .add("class") @@ -176,17 +177,13 @@ protected Method findMethod( .stream() .filter(method -> checkAssignableParameterTypes(params, method)) .min(JinjavaBeanELResolver::pickMoreSpecificMethod) - .orElseGet( - () -> - potentialMethods - .stream() - .findAny() - .orElseGet( - () -> - finalVarArgsMethod == null - ? null - : findAccessibleMethod(finalVarArgsMethod) - ) + .orElseGet(() -> + potentialMethods + .stream() + .findAny() + .orElseGet(() -> + finalVarArgsMethod == null ? null : findAccessibleMethod(finalVarArgsMethod) + ) ); } diff --git a/src/main/java/com/hubspot/jinjava/el/ext/NamedParameter.java b/src/main/java/com/hubspot/jinjava/el/ext/NamedParameter.java index 9cf11269b..b47ba1133 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/NamedParameter.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/NamedParameter.java @@ -5,6 +5,7 @@ import java.util.Objects; public class NamedParameter implements PyishSerializable { + private final String name; private final Object value; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/NamedParameterOperator.java b/src/main/java/com/hubspot/jinjava/el/ext/NamedParameterOperator.java index 369995c80..3d50953de 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/NamedParameterOperator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/NamedParameterOperator.java @@ -9,13 +9,13 @@ import javax.el.ELException; public class NamedParameterOperator { + public static final Scanner.ExtensionToken TOKEN = new Scanner.ExtensionToken("="); public static final ExtensionHandler HANDLER = getHandler(false); public static ExtensionHandler getHandler(boolean eager) { return new ExtensionHandler(ExtensionPoint.ADD) { - @Override public AstNode createAstNode(AstNode... children) { if (!(children[0] instanceof AstIdentifier)) { diff --git a/src/main/java/com/hubspot/jinjava/el/ext/PowerOfOperator.java b/src/main/java/com/hubspot/jinjava/el/ext/PowerOfOperator.java index 166a42cc8..1858e67c7 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/PowerOfOperator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/PowerOfOperator.java @@ -10,6 +10,7 @@ import de.odysseus.el.tree.impl.ast.AstNode; public class PowerOfOperator extends SimpleOperator { + public static final Scanner.ExtensionToken TOKEN = new Scanner.ExtensionToken("**"); public static final PowerOfOperator OP = new PowerOfOperator(); @@ -50,7 +51,6 @@ public String toString() { public static ExtensionHandler getHandler(boolean eager) { return new ExtensionHandler(ExtensionPoint.MUL) { - @Override public AstNode createAstNode(AstNode... children) { return eager diff --git a/src/main/java/com/hubspot/jinjava/el/ext/StringConcatOperator.java b/src/main/java/com/hubspot/jinjava/el/ext/StringConcatOperator.java index d00073eee..4e78a3f50 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/StringConcatOperator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/StringConcatOperator.java @@ -31,7 +31,6 @@ public String toString() { public static ExtensionHandler getHandler(boolean eager) { return new ExtensionHandler(ExtensionPoint.ADD) { - @Override public AstNode createAstNode(AstNode... children) { return eager diff --git a/src/main/java/com/hubspot/jinjava/el/ext/TruncDivOperator.java b/src/main/java/com/hubspot/jinjava/el/ext/TruncDivOperator.java index d8b4fd146..b28e4d0a1 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/TruncDivOperator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/TruncDivOperator.java @@ -10,6 +10,7 @@ import de.odysseus.el.tree.impl.ast.AstNode; public class TruncDivOperator extends SimpleOperator { + public static final Scanner.ExtensionToken TOKEN = new Scanner.ExtensionToken("//"); public static final TruncDivOperator OP = new TruncDivOperator(); @@ -50,7 +51,6 @@ public String toString() { public static ExtensionHandler getHandler(boolean eager) { return new ExtensionHandler(ExtensionPoint.MUL) { - @Override public AstNode createAstNode(AstNode... children) { return eager diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBinary.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBinary.java index 63611056a..ea8c27ef1 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBinary.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBinary.java @@ -10,6 +10,7 @@ import javax.el.ELContext; public class EagerAstBinary extends AstBinary implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; protected final EvalResultHolder left; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBracket.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBracket.java index fd72a726d..c02d71524 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBracket.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBracket.java @@ -8,6 +8,7 @@ import javax.el.ELContext; public class EagerAstBracket extends AstBracket implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstChoice.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstChoice.java index 17c709bb3..b4bbd43dc 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstChoice.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstChoice.java @@ -10,6 +10,7 @@ import javax.el.ELException; public class EagerAstChoice extends AstChoice implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; protected final EvalResultHolder question; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDict.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDict.java index ea4ebd339..4bfac2111 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDict.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDict.java @@ -14,6 +14,7 @@ import javax.el.ELContext; public class EagerAstDict extends AstDict implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; @@ -41,50 +42,46 @@ public String getPartiallyResolved( .getELResolver() .getValue(context, null, ExtendedParser.INTERPRETER); StringJoiner joiner = new StringJoiner(", "); - dict.forEach( - (key, value) -> { - StringJoiner kvJoiner = new StringJoiner(": "); - if (key instanceof AstIdentifier) { - kvJoiner.add(((AstIdentifier) key).getName()); - } else if (key instanceof EvalResultHolder) { - kvJoiner.add( - EvalResultHolder.reconstructNode( - bindings, - context, - (EvalResultHolder) key, - deferredParsingException, - IdentifierPreservationStrategy.preserving( - !interpreter.getConfig().getLegacyOverrides().isEvaluateMapKeys() - ) - ) - ); - } else { - kvJoiner.add( - EagerExpressionResolver.getValueAsJinjavaStringSafe( - key.eval(bindings, context) - ) - ); - } - if (value instanceof EvalResultHolder) { - kvJoiner.add( - EvalResultHolder.reconstructNode( - bindings, - context, - (EvalResultHolder) value, - deferredParsingException, - identifierPreservationStrategy + dict.forEach((key, value) -> { + StringJoiner kvJoiner = new StringJoiner(": "); + if (key instanceof AstIdentifier) { + kvJoiner.add(((AstIdentifier) key).getName()); + } else if (key instanceof EvalResultHolder) { + kvJoiner.add( + EvalResultHolder.reconstructNode( + bindings, + context, + (EvalResultHolder) key, + deferredParsingException, + IdentifierPreservationStrategy.preserving( + !interpreter.getConfig().getLegacyOverrides().isEvaluateMapKeys() ) - ); - } else { - kvJoiner.add( - EagerExpressionResolver.getValueAsJinjavaStringSafe( - value.eval(bindings, context) - ) - ); - } - joiner.add(kvJoiner.toString()); + ) + ); + } else { + kvJoiner.add( + EagerExpressionResolver.getValueAsJinjavaStringSafe(key.eval(bindings, context)) + ); } - ); + if (value instanceof EvalResultHolder) { + kvJoiner.add( + EvalResultHolder.reconstructNode( + bindings, + context, + (EvalResultHolder) value, + deferredParsingException, + identifierPreservationStrategy + ) + ); + } else { + kvJoiner.add( + EagerExpressionResolver.getValueAsJinjavaStringSafe( + value.eval(bindings, context) + ) + ); + } + joiner.add(kvJoiner.toString()); + }); String joined = joiner.toString(); if (joined.endsWith("}")) { // prevent 2 closing braces from being interpreted as a closing expression token diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDot.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDot.java index 73e56ab3a..67638b1c5 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDot.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDot.java @@ -9,6 +9,7 @@ import javax.el.ELException; public class EagerAstDot extends AstDot implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; protected final EvalResultHolder base; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifier.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifier.java index ee72b3f7e..86ef61009 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifier.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifier.java @@ -7,6 +7,7 @@ import javax.el.ELContext; public class EagerAstIdentifier extends AstIdentifier implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstList.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstList.java index d0b80658a..fc1272366 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstList.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstList.java @@ -9,6 +9,7 @@ import javax.el.ELContext; public class EagerAstList extends AstList implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMacroFunction.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMacroFunction.java index 287a51c16..082828cbf 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMacroFunction.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMacroFunction.java @@ -17,6 +17,7 @@ import javax.el.ELException; public class EagerAstMacroFunction extends AstMacroFunction implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; // instanceof AstParameters @@ -71,8 +72,7 @@ protected Object invoke( ELContext context, Object base, Method method - ) - throws InvocationTargetException, IllegalAccessException { + ) throws InvocationTargetException, IllegalAccessException { Class[] types = method.getParameterTypes(); Object[] params = null; if (types.length > 0) { diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMethod.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMethod.java index a68e91ca9..aec8fa234 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMethod.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMethod.java @@ -12,6 +12,7 @@ import javax.el.ELException; public class EagerAstMethod extends AstMethod implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; // instanceof AstProperty diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNamedParameter.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNamedParameter.java index 5f70202cd..0cedd9839 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNamedParameter.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNamedParameter.java @@ -11,6 +11,7 @@ public class EagerAstNamedParameter extends AstNamedParameter implements EvalResultHolder { + protected boolean hasEvalResult; protected Object evalResult; protected final AstIdentifier name; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNested.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNested.java index 749006117..03d016175 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNested.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNested.java @@ -12,6 +12,7 @@ * AstNested is final so this decorates AstRightValue. */ public class EagerAstNested extends AstRightValue implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; protected final AstNode child; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNodeDecorator.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNodeDecorator.java index 7ea532357..8c978c506 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNodeDecorator.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstNodeDecorator.java @@ -15,6 +15,7 @@ * be an EvalResultHolder or wrapped with this decorator. */ public class EagerAstNodeDecorator extends AstNode implements EvalResultHolder { + private final AstNode astNode; protected Object evalResult; protected boolean hasEvalResult; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstParameters.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstParameters.java index f6deaf6cd..2c1cca48e 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstParameters.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstParameters.java @@ -16,6 +16,7 @@ import javax.el.ELException; public class EagerAstParameters extends AstParameters implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; protected final List nodes; @@ -78,17 +79,16 @@ public String getPartiallyResolved( nodes .stream() .map(node -> (EvalResultHolder) node) - .forEach( - node -> - joiner.add( - EvalResultHolder.reconstructNode( - bindings, - context, - node, - deferredParsingException, - identifierPreservationStrategy - ) + .forEach(node -> + joiner.add( + EvalResultHolder.reconstructNode( + bindings, + context, + node, + deferredParsingException, + identifierPreservationStrategy ) + ) ); return joiner.toString(); } diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRangeBracket.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRangeBracket.java index c2fe057e3..81771d3a4 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRangeBracket.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRangeBracket.java @@ -8,6 +8,7 @@ import javax.el.ELContext; public class EagerAstRangeBracket extends AstRangeBracket implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRoot.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRoot.java index d785cd63d..1b8f1314a 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRoot.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstRoot.java @@ -8,6 +8,7 @@ import javax.el.ValueReference; public class EagerAstRoot extends AstNode { + private AstNode rootNode; public EagerAstRoot(AstNode rootNode) { diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstTuple.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstTuple.java index ab731cbee..46d6aa4d2 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstTuple.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstTuple.java @@ -9,6 +9,7 @@ import javax.el.ELContext; public class EagerAstTuple extends AstTuple implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstUnary.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstUnary.java index 344f92701..da38314b9 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstUnary.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstUnary.java @@ -8,6 +8,7 @@ import javax.el.ELContext; public class EagerAstUnary extends AstUnary implements EvalResultHolder { + protected Object evalResult; protected boolean hasEvalResult; protected final EvalResultHolder child; diff --git a/src/main/java/com/hubspot/jinjava/el/ext/eager/MacroFunctionTempVariable.java b/src/main/java/com/hubspot/jinjava/el/ext/eager/MacroFunctionTempVariable.java index 8250454a2..32fe8bd43 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/eager/MacroFunctionTempVariable.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/eager/MacroFunctionTempVariable.java @@ -4,6 +4,7 @@ import java.util.Objects; public class MacroFunctionTempVariable implements PyishBlockSetSerializable { + private static final String CONTEXT_KEY_PREFIX = "__macro_%s_%d_temp_variable_%d__"; private final String deferredResult; diff --git a/src/main/java/com/hubspot/jinjava/features/DateTimeFeatureActivationStrategy.java b/src/main/java/com/hubspot/jinjava/features/DateTimeFeatureActivationStrategy.java index 6885e45d3..8fba08836 100644 --- a/src/main/java/com/hubspot/jinjava/features/DateTimeFeatureActivationStrategy.java +++ b/src/main/java/com/hubspot/jinjava/features/DateTimeFeatureActivationStrategy.java @@ -4,6 +4,7 @@ import java.time.ZonedDateTime; public class DateTimeFeatureActivationStrategy implements FeatureActivationStrategy { + private final ZonedDateTime activateAt; public static DateTimeFeatureActivationStrategy of(ZonedDateTime activateAt) { diff --git a/src/main/java/com/hubspot/jinjava/features/FeatureConfig.java b/src/main/java/com/hubspot/jinjava/features/FeatureConfig.java index 1374745a7..cf3653d3d 100644 --- a/src/main/java/com/hubspot/jinjava/features/FeatureConfig.java +++ b/src/main/java/com/hubspot/jinjava/features/FeatureConfig.java @@ -5,6 +5,7 @@ import java.util.Map; public class FeatureConfig { + Map features; private FeatureConfig(Map features) { @@ -20,6 +21,7 @@ public static FeatureConfig.Builder newBuilder() { } public static class Builder { + private final Map features = new HashMap<>(); public Builder add(String name, FeatureActivationStrategy strategy) { diff --git a/src/main/java/com/hubspot/jinjava/features/FeatureStrategies.java b/src/main/java/com/hubspot/jinjava/features/FeatureStrategies.java index 5c4b679d9..9171c2e91 100644 --- a/src/main/java/com/hubspot/jinjava/features/FeatureStrategies.java +++ b/src/main/java/com/hubspot/jinjava/features/FeatureStrategies.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.features; public class FeatureStrategies { + public static final FeatureActivationStrategy INACTIVE = c -> false; public static final FeatureActivationStrategy ACTIVE = c -> true; } diff --git a/src/main/java/com/hubspot/jinjava/features/Features.java b/src/main/java/com/hubspot/jinjava/features/Features.java index 9920b9d0d..9cba433ed 100644 --- a/src/main/java/com/hubspot/jinjava/features/Features.java +++ b/src/main/java/com/hubspot/jinjava/features/Features.java @@ -3,6 +3,7 @@ import com.hubspot.jinjava.interpret.Context; public class Features { + private final FeatureConfig featureConfig; public Features(FeatureConfig featureConfig) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/CallStack.java b/src/main/java/com/hubspot/jinjava/interpret/CallStack.java index 1b876a4f9..83bff5d69 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/CallStack.java +++ b/src/main/java/com/hubspot/jinjava/interpret/CallStack.java @@ -4,6 +4,7 @@ import java.util.Stack; public class CallStack { + private final CallStack parent; private final Class exceptionClass; private final Stack stack = new Stack<>(); diff --git a/src/main/java/com/hubspot/jinjava/interpret/CannotReconstructValueException.java b/src/main/java/com/hubspot/jinjava/interpret/CannotReconstructValueException.java index 8fe54ec20..64a7e2d83 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/CannotReconstructValueException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/CannotReconstructValueException.java @@ -4,6 +4,7 @@ @Beta public class CannotReconstructValueException extends DeferredValueException { + public static final String CANNOT_RECONSTRUCT_MESSAGE = "Cannot reconstruct value"; public CannotReconstructValueException(String key) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/CollectionTooBigException.java b/src/main/java/com/hubspot/jinjava/interpret/CollectionTooBigException.java index 465be10aa..bae6f52a8 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/CollectionTooBigException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/CollectionTooBigException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class CollectionTooBigException extends RuntimeException { + private final int maxSize; private final int size; diff --git a/src/main/java/com/hubspot/jinjava/interpret/Context.java b/src/main/java/com/hubspot/jinjava/interpret/Context.java index 61b3c5eda..c7625c4bd 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/Context.java +++ b/src/main/java/com/hubspot/jinjava/interpret/Context.java @@ -51,6 +51,7 @@ import java.util.stream.Collectors; public class Context extends ScopeMap { + public static final String GLOBAL_MACROS_SCOPE_KEY = "__macros__"; public static final String IMPORT_RESOURCE_PATH_KEY = "import_resource_path"; public static final String DEFERRED_IMPORT_RESOURCE_PATH_KEY = @@ -74,7 +75,7 @@ public enum Library { EXP_TEST, FILTER, FUNCTION, - TAG + TAG, } private final CallStack extendPathStack; @@ -412,13 +413,11 @@ public void checkNumberOfDeferredTokens() { .getCurrentMaybe() .map(i -> i.getConfig().getMaxNumDeferredTokens()) .filter(maxNumDeferredTokens -> currentNumDeferredTokens >= maxNumDeferredTokens) - .ifPresent( - maxNumDeferredTokens -> { - throw new DeferredValueException( - "Too many Deferred Tokens, max is " + maxNumDeferredTokens - ); - } - ); + .ifPresent(maxNumDeferredTokens -> { + throw new DeferredValueException( + "Too many Deferred Tokens, max is " + maxNumDeferredTokens + ); + }); } @Beta @@ -800,6 +799,7 @@ public TemporaryValueClosable withUnwrapRawOverride() { } public static class TemporaryValueClosable implements AutoCloseable { + private final T previousValue; private final Consumer resetValueConsumer; diff --git a/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReference.java b/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReference.java index 1417006b8..43d0561bd 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReference.java +++ b/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReference.java @@ -5,6 +5,7 @@ @Beta public class DeferredLazyReference implements DeferredValue, Cloneable, OneTimeReconstructible { + private final LazyReference lazyReference; private boolean reconstructed; diff --git a/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReferenceSource.java b/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReferenceSource.java index ccd5ccee1..f73c1f8ee 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReferenceSource.java +++ b/src/main/java/com/hubspot/jinjava/interpret/DeferredLazyReferenceSource.java @@ -6,7 +6,9 @@ public class DeferredLazyReferenceSource extends DeferredValueImpl implements OneTimeReconstructible { - private static final DeferredLazyReferenceSource INSTANCE = new DeferredLazyReferenceSource(); + + private static final DeferredLazyReferenceSource INSTANCE = + new DeferredLazyReferenceSource(); private boolean reconstructed; diff --git a/src/main/java/com/hubspot/jinjava/interpret/DeferredMacroValueImpl.java b/src/main/java/com/hubspot/jinjava/interpret/DeferredMacroValueImpl.java index 687ba5020..3aaaf20ec 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/DeferredMacroValueImpl.java +++ b/src/main/java/com/hubspot/jinjava/interpret/DeferredMacroValueImpl.java @@ -4,6 +4,7 @@ @Beta public class DeferredMacroValueImpl implements DeferredValue { + private static final DeferredValue INSTANCE = new DeferredMacroValueImpl(); private DeferredMacroValueImpl() {} diff --git a/src/main/java/com/hubspot/jinjava/interpret/DeferredValueException.java b/src/main/java/com/hubspot/jinjava/interpret/DeferredValueException.java index a5a37da9f..884f59e7c 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/DeferredValueException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/DeferredValueException.java @@ -6,6 +6,7 @@ * and instead echo its contents to the output. */ public class DeferredValueException extends InterpretException { + public static final String MESSAGE_PREFIX = "Encountered a deferred value: "; public DeferredValueException(String message) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/DeferredValueImpl.java b/src/main/java/com/hubspot/jinjava/interpret/DeferredValueImpl.java index 0dc7f2689..4b001ca94 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/DeferredValueImpl.java +++ b/src/main/java/com/hubspot/jinjava/interpret/DeferredValueImpl.java @@ -3,6 +3,7 @@ import java.util.Objects; public class DeferredValueImpl implements DeferredValue { + private static final DeferredValue INSTANCE = new DeferredValueImpl(); private Object originalValue; diff --git a/src/main/java/com/hubspot/jinjava/interpret/DisabledException.java b/src/main/java/com/hubspot/jinjava/interpret/DisabledException.java index 072110550..d1521a2b2 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/DisabledException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/DisabledException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class DisabledException extends InterpretException { + private final String token; public DisabledException(String token) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/ExtendsTagCycleException.java b/src/main/java/com/hubspot/jinjava/interpret/ExtendsTagCycleException.java index cc27f4fca..3c3a63431 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/ExtendsTagCycleException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/ExtendsTagCycleException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class ExtendsTagCycleException extends TagCycleException { + private static final long serialVersionUID = 3183769038400532542L; public ExtendsTagCycleException(String path, int lineNumber, int startPosition) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/FatalTemplateErrorsException.java b/src/main/java/com/hubspot/jinjava/interpret/FatalTemplateErrorsException.java index c3c7a7386..41c1f69e6 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/FatalTemplateErrorsException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/FatalTemplateErrorsException.java @@ -8,6 +8,7 @@ * @author jstehler */ public class FatalTemplateErrorsException extends InterpretException { + private static final long serialVersionUID = 1L; private final String template; diff --git a/src/main/java/com/hubspot/jinjava/interpret/FromTagCycleException.java b/src/main/java/com/hubspot/jinjava/interpret/FromTagCycleException.java index 20f395260..35715af8e 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/FromTagCycleException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/FromTagCycleException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class FromTagCycleException extends TagCycleException { + private static final long serialVersionUID = -5487642459443650227L; public FromTagCycleException(String path, int lineNumber, int startPosition) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/ImportTagCycleException.java b/src/main/java/com/hubspot/jinjava/interpret/ImportTagCycleException.java index 5dff0b6ca..4b37b9dc3 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/ImportTagCycleException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/ImportTagCycleException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class ImportTagCycleException extends TagCycleException { + private static final long serialVersionUID = 1092085697026161185L; public ImportTagCycleException(String path, int lineNumber, int startPosition) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/IncludeTagCycleException.java b/src/main/java/com/hubspot/jinjava/interpret/IncludeTagCycleException.java index 8ddbc6ae5..5060b3079 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/IncludeTagCycleException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/IncludeTagCycleException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class IncludeTagCycleException extends TagCycleException { + private static final long serialVersionUID = -5487642459443650227L; public IncludeTagCycleException(String path, int lineNumber, int startPosition) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/InterpretException.java b/src/main/java/com/hubspot/jinjava/interpret/InterpretException.java index 301a3a13c..476d0dd99 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/InterpretException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/InterpretException.java @@ -16,6 +16,7 @@ package com.hubspot.jinjava.interpret; public class InterpretException extends RuntimeException { + private static final long serialVersionUID = -3471306977643126138L; private int lineNumber = -1; diff --git a/src/main/java/com/hubspot/jinjava/interpret/InvalidArgumentException.java b/src/main/java/com/hubspot/jinjava/interpret/InvalidArgumentException.java index 72883c807..2c4272d85 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/InvalidArgumentException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/InvalidArgumentException.java @@ -3,6 +3,7 @@ import com.hubspot.jinjava.lib.Importable; public class InvalidArgumentException extends RuntimeException { + private final int lineNumber; private final int startPosition; private final String message; diff --git a/src/main/java/com/hubspot/jinjava/interpret/InvalidInputException.java b/src/main/java/com/hubspot/jinjava/interpret/InvalidInputException.java index dabbcd5a3..96d39f35a 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/InvalidInputException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/InvalidInputException.java @@ -3,6 +3,7 @@ import com.hubspot.jinjava.lib.Importable; public class InvalidInputException extends RuntimeException { + private final int lineNumber; private final int startPosition; private final String message; diff --git a/src/main/java/com/hubspot/jinjava/interpret/JinjavaInterpreter.java b/src/main/java/com/hubspot/jinjava/interpret/JinjavaInterpreter.java index 475355a16..285b6465c 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/JinjavaInterpreter.java +++ b/src/main/java/com/hubspot/jinjava/interpret/JinjavaInterpreter.java @@ -74,6 +74,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils; public class JinjavaInterpreter implements PyishSerializable { + public static final String IGNORED_OUTPUT_FROM_EXTENDS_NOTE = "ignored_output_from_extends"; private final Multimap blocks = ArrayListMultimap.create(); @@ -828,17 +829,15 @@ public void addAllChildErrors( childErrors .stream() .limit(MAX_ERROR_SIZE - errors.size()) - .forEach( - error -> { - if (!error.getSourceTemplate().isPresent()) { - error.setMessage(getWrappedErrorMessage(childTemplateName, error)); - error.setSourceTemplate(childTemplateName); - } - error.setStartPosition(this.getPosition()); - error.setLineno(this.getLineNumber()); - this.addError(error); + .forEach(error -> { + if (!error.getSourceTemplate().isPresent()) { + error.setMessage(getWrappedErrorMessage(childTemplateName, error)); + error.setSourceTemplate(childTemplateName); } - ); + error.setStartPosition(this.getPosition()); + error.setLineno(this.getLineNumber()); + this.addError(error); + }); } // We cannot just remove this, other projects may depend on it. @@ -851,9 +850,8 @@ public List getErrorsCopy() { return Lists.newArrayList(errors); } - private static final ThreadLocal> CURRENT_INTERPRETER = ThreadLocal.withInitial( - Stack::new - ); + private static final ThreadLocal> CURRENT_INTERPRETER = + ThreadLocal.withInitial(Stack::new); public static JinjavaInterpreter getCurrent() { if (CURRENT_INTERPRETER.get().isEmpty()) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/LazyExpression.java b/src/main/java/com/hubspot/jinjava/interpret/LazyExpression.java index 7ce13fc35..ee248f05a 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/LazyExpression.java +++ b/src/main/java/com/hubspot/jinjava/interpret/LazyExpression.java @@ -4,6 +4,7 @@ import java.util.function.Supplier; public class LazyExpression implements Supplier { + private final Supplier supplier; private final String image; private final Memoization memoization; @@ -11,7 +12,7 @@ public class LazyExpression implements Supplier { public enum Memoization { ON, - OFF + OFF, } protected LazyExpression(Supplier supplier, String image, Memoization memoization) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/LazyReference.java b/src/main/java/com/hubspot/jinjava/interpret/LazyReference.java index 18cbecb16..06ffe2398 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/LazyReference.java +++ b/src/main/java/com/hubspot/jinjava/interpret/LazyReference.java @@ -4,6 +4,7 @@ import java.io.IOException; public class LazyReference extends LazyExpression implements PyishSerializable { + private String referenceKey; protected LazyReference(Context referenceContext, String referenceKey) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/MacroTagCycleException.java b/src/main/java/com/hubspot/jinjava/interpret/MacroTagCycleException.java index ef17412b5..f71bfb6a2 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/MacroTagCycleException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/MacroTagCycleException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class MacroTagCycleException extends TagCycleException { + private static final long serialVersionUID = -7552850581260771832L; public MacroTagCycleException(String path, int lineNumber, int startPosition) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/MissingEndTagException.java b/src/main/java/com/hubspot/jinjava/interpret/MissingEndTagException.java index 764c008fc..bdf154417 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/MissingEndTagException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/MissingEndTagException.java @@ -3,6 +3,7 @@ import org.apache.commons.lang3.StringUtils; public class MissingEndTagException extends TemplateSyntaxException { + private static final long serialVersionUID = 1L; private final String endTag; diff --git a/src/main/java/com/hubspot/jinjava/interpret/NullValue.java b/src/main/java/com/hubspot/jinjava/interpret/NullValue.java index ed3d7f0d3..866c989dc 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/NullValue.java +++ b/src/main/java/com/hubspot/jinjava/interpret/NullValue.java @@ -6,6 +6,7 @@ * we treat it as the there is not key "a" in the map. */ public final class NullValue { + public static final NullValue INSTANCE = new NullValue(); private NullValue() {} diff --git a/src/main/java/com/hubspot/jinjava/interpret/OutputTooBigException.java b/src/main/java/com/hubspot/jinjava/interpret/OutputTooBigException.java index 79ac4fe64..d13e59530 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/OutputTooBigException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/OutputTooBigException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class OutputTooBigException extends RuntimeException { + private long maxSize; private final long size; diff --git a/src/main/java/com/hubspot/jinjava/interpret/RenderResult.java b/src/main/java/com/hubspot/jinjava/interpret/RenderResult.java index 7fd811ee1..4c2d1fd7a 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/RenderResult.java +++ b/src/main/java/com/hubspot/jinjava/interpret/RenderResult.java @@ -6,6 +6,7 @@ import java.util.Optional; public class RenderResult { + private final String output; private final Context context; private final List errors; diff --git a/src/main/java/com/hubspot/jinjava/interpret/RevertibleObject.java b/src/main/java/com/hubspot/jinjava/interpret/RevertibleObject.java index e19ec94fe..acee72604 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/RevertibleObject.java +++ b/src/main/java/com/hubspot/jinjava/interpret/RevertibleObject.java @@ -5,6 +5,7 @@ @Beta public class RevertibleObject { + private final Object hashCode; private final Optional pyishString; diff --git a/src/main/java/com/hubspot/jinjava/interpret/TagCycleException.java b/src/main/java/com/hubspot/jinjava/interpret/TagCycleException.java index 4128f52ff..a27248840 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/TagCycleException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/TagCycleException.java @@ -3,6 +3,7 @@ import java.util.Optional; public class TagCycleException extends TemplateStateException { + private static final long serialVersionUID = -3058494056577268723L; private final String path; diff --git a/src/main/java/com/hubspot/jinjava/interpret/TemplateError.java b/src/main/java/com/hubspot/jinjava/interpret/TemplateError.java index c3bbc541c..495f617ed 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/TemplateError.java +++ b/src/main/java/com/hubspot/jinjava/interpret/TemplateError.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils; public class TemplateError { + private static final Pattern GENERIC_TOSTRING_PATTERN = Pattern.compile( "@[0-9a-z]{4,}$" ); @@ -17,7 +18,7 @@ public class TemplateError { public enum ErrorType { FATAL, - WARNING + WARNING, } public enum ErrorReason { @@ -32,7 +33,7 @@ public enum ErrorReason { OUTPUT_TOO_BIG, OVER_LIMIT, COLLECTION_TOO_BIG, - OTHER + OTHER, } public enum ErrorItem { @@ -43,7 +44,7 @@ public enum ErrorItem { PROPERTY, FILTER, EXPRESSION_TEST, - OTHER + OTHER, } private final ErrorType severity; diff --git a/src/main/java/com/hubspot/jinjava/interpret/TemplateStateException.java b/src/main/java/com/hubspot/jinjava/interpret/TemplateStateException.java index 1e1b75bf5..e98aaeb32 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/TemplateStateException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/TemplateStateException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class TemplateStateException extends InterpretException { + private static final long serialVersionUID = 426925445445430522L; public TemplateStateException(String msg) { diff --git a/src/main/java/com/hubspot/jinjava/interpret/TemplateSyntaxException.java b/src/main/java/com/hubspot/jinjava/interpret/TemplateSyntaxException.java index c31a22d23..1ac4ff731 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/TemplateSyntaxException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/TemplateSyntaxException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class TemplateSyntaxException extends InterpretException { + private static final long serialVersionUID = 1L; private final String code; diff --git a/src/main/java/com/hubspot/jinjava/interpret/UnexpectedTokenException.java b/src/main/java/com/hubspot/jinjava/interpret/UnexpectedTokenException.java index 1e231471b..1d1ae33a3 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/UnexpectedTokenException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/UnexpectedTokenException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class UnexpectedTokenException extends TemplateSyntaxException { + private static final long serialVersionUID = 1L; private final String token; diff --git a/src/main/java/com/hubspot/jinjava/interpret/UnknownTagException.java b/src/main/java/com/hubspot/jinjava/interpret/UnknownTagException.java index 216c86110..a07621ce7 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/UnknownTagException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/UnknownTagException.java @@ -3,6 +3,7 @@ import com.hubspot.jinjava.tree.parse.TagToken; public class UnknownTagException extends TemplateSyntaxException { + private static final long serialVersionUID = 1L; private final String tag; diff --git a/src/main/java/com/hubspot/jinjava/interpret/UnknownTokenException.java b/src/main/java/com/hubspot/jinjava/interpret/UnknownTokenException.java index 3e0425a1e..243473826 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/UnknownTokenException.java +++ b/src/main/java/com/hubspot/jinjava/interpret/UnknownTokenException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.interpret; public class UnknownTokenException extends InterpretException { + private static final long serialVersionUID = -388757722051666198L; private final String token; diff --git a/src/main/java/com/hubspot/jinjava/interpret/errorcategory/BasicTemplateErrorCategory.java b/src/main/java/com/hubspot/jinjava/interpret/errorcategory/BasicTemplateErrorCategory.java index ccfcaa912..e17932a44 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/errorcategory/BasicTemplateErrorCategory.java +++ b/src/main/java/com/hubspot/jinjava/interpret/errorcategory/BasicTemplateErrorCategory.java @@ -8,5 +8,5 @@ public enum BasicTemplateErrorCategory implements TemplateErrorCategory { UNKNOWN, UNKNOWN_DATE, UNKNOWN_LOCALE, - UNKNOWN_PROPERTY + UNKNOWN_PROPERTY, } diff --git a/src/main/java/com/hubspot/jinjava/lib/SimpleLibrary.java b/src/main/java/com/hubspot/jinjava/lib/SimpleLibrary.java index 5f6945a3d..93afea000 100644 --- a/src/main/java/com/hubspot/jinjava/lib/SimpleLibrary.java +++ b/src/main/java/com/hubspot/jinjava/lib/SimpleLibrary.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; public abstract class SimpleLibrary { + private Map lib = new HashMap<>(); private Set disabled = new HashSet<>(); diff --git a/src/main/java/com/hubspot/jinjava/lib/expression/DefaultExpressionStrategy.java b/src/main/java/com/hubspot/jinjava/lib/expression/DefaultExpressionStrategy.java index cc1c2b589..9bb27fed8 100644 --- a/src/main/java/com/hubspot/jinjava/lib/expression/DefaultExpressionStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/expression/DefaultExpressionStrategy.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils; public class DefaultExpressionStrategy implements ExpressionStrategy { + private static final long serialVersionUID = 436239440273704843L; public RenderedOutputNode interpretOutput( diff --git a/src/main/java/com/hubspot/jinjava/lib/expression/EagerExpressionStrategy.java b/src/main/java/com/hubspot/jinjava/lib/expression/EagerExpressionStrategy.java index 73c13c182..66f1f43a1 100644 --- a/src/main/java/com/hubspot/jinjava/lib/expression/EagerExpressionStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/expression/EagerExpressionStrategy.java @@ -19,6 +19,7 @@ @Beta public class EagerExpressionStrategy implements ExpressionStrategy { + private static final long serialVersionUID = -6792345439237764193L; @Override @@ -38,8 +39,8 @@ private String eagerResolveExpression( eagerInterpreter -> EagerExpressionResolver.resolveExpression(master.getExpr(), interpreter), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withTakeNewValue(true) .withPartialMacroEvaluation( interpreter.getConfig().isNestedInterpretationEnabled() @@ -131,10 +132,9 @@ private static long getParsingErrorsCount(JinjavaInterpreter interpreter) { .getErrors() .stream() .filter(Objects::nonNull) - .filter( - error -> - "Unclosed comment".equals(error.getMessage()) || - error.getReason() == ErrorReason.DISABLED + .filter(error -> + "Unclosed comment".equals(error.getMessage()) || + error.getReason() == ErrorReason.DISABLED ) .count(); } diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/CollectionExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/CollectionExpTest.java index 05062b693..d2190bca7 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/CollectionExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/CollectionExpTest.java @@ -4,6 +4,8 @@ import com.hubspot.jinjava.el.ext.CollectionMembershipOperator; public abstract class CollectionExpTest implements ExpTest { + protected static final TruthyTypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); - protected static final CollectionMembershipOperator COLLECTION_MEMBERSHIP_OPERATOR = new CollectionMembershipOperator(); + protected static final CollectionMembershipOperator COLLECTION_MEMBERSHIP_OPERATOR = + new CollectionMembershipOperator(); } diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsBooleanExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsBooleanExpTest.java index 89b053481..daa4c5574 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsBooleanExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsBooleanExpTest.java @@ -13,7 +13,7 @@ code = "{% if true is boolean %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsBooleanExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsDefinedExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsDefinedExpTest.java index ca4429803..3b850322f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsDefinedExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsDefinedExpTest.java @@ -13,7 +13,7 @@ code = "{% if variable is defined %}\n" + "\n" + "{% endif %}" - ) + ), } ) public class IsDefinedExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsDivisibleByExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsDivisibleByExpTest.java index ffcd9f073..1beb4a0f8 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsDivisibleByExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsDivisibleByExpTest.java @@ -24,7 +24,7 @@ "{% else %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsDivisibleByExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTest.java index a14c3220a..d3095b139 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTest.java @@ -18,7 +18,7 @@ type = "object", desc = "Another object to check equality against", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -29,10 +29,11 @@ @JinjavaSnippet( desc = "Usage with the selectattr filter", code = "{{ users|selectattr(\"email\", \"equalto\", \"foo@bar.invalid\") }}" - ) + ), } ) public class IsEqualToExpTest implements ExpTest { + private static final TypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsEvenExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsEvenExpTest.java index de0fa2842..707ffb875 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsEvenExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsEvenExpTest.java @@ -15,7 +15,7 @@ "{% else %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsEvenExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsFalseExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsFalseExpTest.java index 54b6711e3..e3c15fd0c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsFalseExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsFalseExpTest.java @@ -13,7 +13,7 @@ code = "{% if false is false %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsFalseExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTest.java index e77cf544e..7b0af240a 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTest.java @@ -14,7 +14,7 @@ code = "{% if num is float %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsFloatExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsGeTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsGeTest.java index 7e9a9f260..dbcf6279b 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsGeTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsGeTest.java @@ -18,7 +18,7 @@ type = "object", desc = "Another object to compare against", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -29,10 +29,11 @@ @JinjavaSnippet( desc = "Usage with the selectattr filter", code = "{{ users|selectattr(\"num\", \"ge\", \"2\") }}" - ) + ), } ) public class IsGeTest implements ExpTest { + private static final TypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsGtTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsGtTest.java index 0e24de3ec..c88dcd481 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsGtTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsGtTest.java @@ -18,7 +18,7 @@ type = "object", desc = "Another object to compare against", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -29,10 +29,11 @@ @JinjavaSnippet( desc = "Usage with the selectattr filter", code = "{{ users|selectattr(\"num\", \"gt\", \"2\") }}" - ) + ), } ) public class IsGtTest implements ExpTest { + private static final TypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java index 6b6c4fe8b..f40d2b37e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java @@ -21,7 +21,7 @@ snippets = { @JinjavaSnippet(code = "{{ 2 is in [1, 2, 3] }}"), @JinjavaSnippet(code = "{{ 'b' is in 'abc' }}"), - @JinjavaSnippet(code = "{{ 'k2' is in {'k1':'v1', 'k2':'v2'} }}") + @JinjavaSnippet(code = "{{ 'k2' is in {'k1':'v1', 'k2':'v2'} }}"), } ) public class IsInExpTest extends CollectionExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTest.java index 79f646ee4..1500abad3 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTest.java @@ -15,7 +15,7 @@ code = "{% if num is integer %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsIntegerExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsIterableExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsIterableExpTest.java index 9c2bb2b85..61b34face 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsIterableExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsIterableExpTest.java @@ -13,7 +13,7 @@ code = "{% if variable is iterable %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsIterableExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsLeTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsLeTest.java index 956f3a2b5..e1423cf10 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsLeTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsLeTest.java @@ -18,7 +18,7 @@ type = "object", desc = "Another object to compare against", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -29,10 +29,11 @@ @JinjavaSnippet( desc = "Usage with the selectattr filter", code = "{{ users|selectattr(\"num\", \"le\", \"2\") }}" - ) + ), } ) public class IsLeTest implements ExpTest { + private static final TypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsLowerExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsLowerExpTest.java index c9be8e4ef..810067a49 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsLowerExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsLowerExpTest.java @@ -14,7 +14,7 @@ code = "{% if variable is lower %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsLowerExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsLtTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsLtTest.java index afea491f3..ebcc184ce 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsLtTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsLtTest.java @@ -18,7 +18,7 @@ type = "object", desc = "Another object to compare against", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -29,10 +29,11 @@ @JinjavaSnippet( desc = "Usage with the selectattr filter", code = "{{ users|selectattr(\"num\", \"lt\", \"2\") }}" - ) + ), } ) public class IsLtTest implements ExpTest { + private static final TypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsMappingExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsMappingExpTest.java index cb0c415f2..5cd697544 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsMappingExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsMappingExpTest.java @@ -14,7 +14,7 @@ code = "{% if variable is mapping %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsMappingExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsNeExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsNeExpTest.java index 311a4e192..057382094 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsNeExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsNeExpTest.java @@ -18,7 +18,7 @@ type = "object", desc = "Another object to check inequality against", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -29,10 +29,11 @@ @JinjavaSnippet( desc = "Usage with the selectattr filter", code = "{{ users|selectattr(\"email\", \"ne\", \"foo@bar.invalid\") }}" - ) + ), } ) public class IsNeExpTest implements ExpTest { + private static final TypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsNoneExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsNoneExpTest.java index 87a2b2683..93ff43f1e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsNoneExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsNoneExpTest.java @@ -13,7 +13,7 @@ code = "{% unless variable is none %}\n" + " \n" + "{% endunless %}" - ) + ), } ) public class IsNoneExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsNumberExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsNumberExpTest.java index 9d03e6133..a024a8c06 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsNumberExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsNumberExpTest.java @@ -15,7 +15,7 @@ "{% else %}\n" + " The variable is not a number.\n" + "{% endif %}" - ) + ), } ) public class IsNumberExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsOddExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsOddExpTest.java index c22de8edb..287d15374 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsOddExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsOddExpTest.java @@ -15,7 +15,7 @@ "{% else %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsOddExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsSameAsExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsSameAsExpTest.java index 1c13627a9..c357210d0 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsSameAsExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsSameAsExpTest.java @@ -20,7 +20,7 @@ code = "{% if var_one is sameas var_two %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsSameAsExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsSequenceExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsSequenceExpTest.java index e2e2cfa53..c48c5e133 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsSequenceExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsSequenceExpTest.java @@ -15,7 +15,7 @@ code = "{% if variable is sequence %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsSequenceExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTest.java index c5fa1fd2b..01d17d707 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTest.java @@ -20,7 +20,7 @@ code = "{% if variable is string_containing 'foo' %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsStringContainingExpTest extends IsStringExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringExpTest.java index 47a49c3ab..b9cb56cdb 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringExpTest.java @@ -14,7 +14,7 @@ code = "{% if variable is string %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsStringExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTest.java index 398115035..8a7b527c0 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTest.java @@ -20,7 +20,7 @@ code = "{% if variable is string_startingwith 'foo' %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsStringStartingWithExpTest extends IsStringExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsTrueExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsTrueExpTest.java index c1c5407d3..31338ee4e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsTrueExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsTrueExpTest.java @@ -13,7 +13,7 @@ code = "{% if false is true %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsTrueExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsTruthyExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsTruthyExpTest.java index 911dbb816..8a7d09875 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsTruthyExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsTruthyExpTest.java @@ -14,7 +14,7 @@ code = "{% if variable is truthy %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsTruthyExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsUndefinedExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsUndefinedExpTest.java index 13c481cbb..f1cb78e4b 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsUndefinedExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsUndefinedExpTest.java @@ -13,7 +13,7 @@ code = "{% if variable is undefined %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsUndefinedExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTest.java index e7ca084e1..61d8246fe 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTest.java @@ -15,7 +15,7 @@ code = "{% if variable is upper %}\n" + " \n" + "{% endif %}" - ) + ), } ) public class IsUpperExpTest implements ExpTest { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/AbsFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/AbsFilter.java index ea860b024..578a92407 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/AbsFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/AbsFilter.java @@ -33,7 +33,7 @@ required = true ), snippets = { - @JinjavaSnippet(code = "{% set my_number = -53 %}\n" + "{{ my_number|abs }}") + @JinjavaSnippet(code = "{% set my_number = -53 %}\n" + "{{ my_number|abs }}"), } ) public class AbsFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java index 978ce559a..d53d2a97f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java @@ -43,8 +43,11 @@ * @see JinjavaParam */ public abstract class AbstractFilter implements Filter { - private static final Map> NAMED_ARGUMENTS_CACHE = new ConcurrentHashMap<>(); - private static final Map> DEFAULT_VALUES_CACHE = new ConcurrentHashMap<>(); + + private static final Map> NAMED_ARGUMENTS_CACHE = + new ConcurrentHashMap<>(); + private static final Map> DEFAULT_VALUES_CACHE = + new ConcurrentHashMap<>(); private final Map namedArguments; private final Map defaultValues; @@ -114,8 +117,8 @@ public Object filter( //Parse args based on their declared types Map parsedArgs = new HashMap<>(); - namedArgs.forEach( - (k, v) -> parsedArgs.put(k, parseArg(interpreter, namedArguments.get(k), v)) + namedArgs.forEach((k, v) -> + parsedArgs.put(k, parseArg(interpreter, namedArguments.get(k), v)) ); validateArgs(interpreter, parsedArgs); @@ -204,9 +207,8 @@ public String getIndexedArgumentName(int position) { .ofNullable(namedArguments) .map(Map::keySet) .map(ArrayList::new) - .flatMap( - argNames -> - Optional.ofNullable(argNames.size() > position ? argNames.get(position) : null) + .flatMap(argNames -> + Optional.ofNullable(argNames.size() > position ? argNames.get(position) : null) ) .orElse(null); } @@ -220,12 +222,13 @@ public Map initNamedArguments() { } if (jinjavaDoc != null) { - ImmutableMap.Builder namedArgsBuilder = ImmutableMap.builder(); + ImmutableMap.Builder namedArgsBuilder = + ImmutableMap.builder(); Arrays .stream(jinjavaDoc.params()) - .forEachOrdered( - jinjavaParam -> namedArgsBuilder.put(jinjavaParam.value(), jinjavaParam) + .forEachOrdered(jinjavaParam -> + namedArgsBuilder.put(jinjavaParam.value(), jinjavaParam) ); return namedArgsBuilder.build(); diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/AddFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/AddFilter.java index 100f5a390..9670f6946 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/AddFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/AddFilter.java @@ -39,10 +39,10 @@ type = "number", desc = "The number added to the base number", required = true - ) + ), }, snippets = { - @JinjavaSnippet(code = "{% set my_num = 40 %} \n" + "{{ my_num|add(13) }}") + @JinjavaSnippet(code = "{% set my_num = 40 %} \n" + "{{ my_num|add(13) }}"), } ) public class AddFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/AllowSnakeCaseFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/AllowSnakeCaseFilter.java index 3b9868968..044df68f8 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/AllowSnakeCaseFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/AllowSnakeCaseFilter.java @@ -20,6 +20,7 @@ snippets = { @JinjavaSnippet(code = "{{ {'fooBar': 'baz'}|allow_snake_case }}") } ) public class AllowSnakeCaseFilter implements Filter { + public static final String NAME = "allow_snake_case"; @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/AttrFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/AttrFilter.java index d21f24a86..fef32e1a3 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/AttrFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/AttrFilter.java @@ -20,13 +20,13 @@ value = "name", desc = "The dictionary attribute name to access", required = true - ) + ), }, snippets = { @JinjavaSnippet( desc = "The filter example below is equivalent to rendering a variable that exists within a dictionary, such as content.absolute_url.", code = "{{ content|attr('absolute_url') }}" - ) + ), } ) public class AttrFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/Base64DecodeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/Base64DecodeFilter.java index e43080e80..ca4dae9dc 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/Base64DecodeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/Base64DecodeFilter.java @@ -24,7 +24,7 @@ type = "string", desc = "The string encoding charset to use.", defaultValue = "UTF-8" - ) + ), }, snippets = { @JinjavaSnippet( @@ -34,10 +34,11 @@ @JinjavaSnippet( desc = "Decode a Base 64-encoded ASCII string into a UTF-16 Little Endian string", code = "{{ 'Adg33A=='|b64decode(encoding='utf-16le') }}" - ) + ), } ) public class Base64DecodeFilter implements Filter { + public static final String NAME = "b64decode"; @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/Base64EncodeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/Base64EncodeFilter.java index cb504483b..9dbfeb3f3 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/Base64EncodeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/Base64EncodeFilter.java @@ -30,7 +30,7 @@ type = "string", desc = "The string encoding charset to use.", defaultValue = "UTF-8" - ) + ), }, snippets = { @JinjavaSnippet( @@ -40,10 +40,11 @@ @JinjavaSnippet( desc = "Encode a value with UTF-16 Little Endian encoding into a Base 64 ASCII string", code = "{{ '\uD801\uDC37'|b64encode(encoding='utf-16le') }}" - ) + ), } ) public class Base64EncodeFilter implements Filter { + public static final String NAME = "b64encode"; public static final String AVAILABLE_CHARSETS = Joiner .on(", ") diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/BaseDateFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/BaseDateFilter.java index 52ec2c9bd..1ff22d089 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/BaseDateFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/BaseDateFilter.java @@ -11,6 +11,7 @@ import java.util.stream.Collectors; public abstract class BaseDateFilter implements AdvancedFilter { + private static final Map unitMap = Arrays .stream(ChronoUnit.values()) .collect(Collectors.toMap(u -> u.toString().toLowerCase(), u -> u)); diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/BatchFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/BatchFilter.java index 1714c734f..e58f7fc58 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/BatchFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/BatchFilter.java @@ -25,7 +25,7 @@ desc = "Number of items to include in the batch", defaultValue = "0" ), - @JinjavaParam(value = "fill_with", desc = "Value used to fill up missing items") + @JinjavaParam(value = "fill_with", desc = "Value used to fill up missing items"), }, snippets = { @JinjavaSnippet( @@ -51,7 +51,7 @@ "  \n" + " \n" + "" - ) + ), } ) public class BatchFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/BetweenTimesFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/BetweenTimesFilter.java index b3adff1b8..2154578ca 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/BetweenTimesFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/BetweenTimesFilter.java @@ -36,7 +36,7 @@ desc = "Datetime object or timestamp at the end of the period", required = true ), - @JinjavaParam(value = "unit", desc = "Which temporal unit to use", required = true) + @JinjavaParam(value = "unit", desc = "Which temporal unit to use", required = true), }, snippets = { @JinjavaSnippet(code = "{{ begin|between_times(end, 'hours') }}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/BoolFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/BoolFilter.java index e2483dd26..a31ffdaec 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/BoolFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/BoolFilter.java @@ -33,7 +33,7 @@ @JinjavaSnippet( desc = "This example converts a text string value to a boolean", code = "{% if \"true\"|bool == true %}hello world{% endif %}" - ) + ), } ) public class BoolFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/CapitalizeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/CapitalizeFilter.java index 2ad6b2c9c..692aca07c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/CapitalizeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/CapitalizeFilter.java @@ -17,7 +17,7 @@ @JinjavaSnippet( code = "{% set sentence = \"the first letter of a sentence should always be capitalized.\" %}\n" + "{{ sentence|capitalize }}" - ) + ), } ) public class CapitalizeFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/CenterFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/CenterFilter.java index 5ba86fdbd..4c1f90c98 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/CenterFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/CenterFilter.java @@ -16,7 +16,7 @@ type = "number", defaultValue = "80", desc = "Width of field to center value in" - ) + ), }, snippets = { @JinjavaSnippet( @@ -25,7 +25,7 @@ " {% set var = \"string to center\" %}\n" + " {{ var|center(80) }}\n" + "" - ) + ), } ) public class CenterFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/CutFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/CutFilter.java index 04a4c8138..d8f64843f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/CutFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/CutFilter.java @@ -31,12 +31,12 @@ value = "to_remove", desc = "String to remove from the original string", required = true - ) + ), }, snippets = { @JinjavaSnippet( code = "{% set my_string = \"Hello world.\" %}\n" + "{{ my_string|cut(' world') }}" - ) + ), } ) public class CutFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilter.java index 270e4a8c4..e886b03ba 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilter.java @@ -35,13 +35,13 @@ type = "string", defaultValue = "us", desc = "The language code to use when formatting the datetime" - ) + ), }, snippets = { @JinjavaSnippet(code = "{% content.updated|datetimeformat('%B %e, %Y') %}"), @JinjavaSnippet( code = "{% content.updated|datetimeformat('%a %A %w %d %e %b %B %m %y %Y %H %I %k %l %p %M %S %f %z %Z %j %U %W %c %x %X %%') %}" - ) + ), }, deprecated = true ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java index c23548428..d93170d6a 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java @@ -44,7 +44,7 @@ type = "boolean", defaultValue = "False", desc = "Set to True to use with variables which evaluate to false" - ) + ), }, snippets = { @JinjavaSnippet( @@ -54,10 +54,11 @@ @JinjavaSnippet( desc = "If you want to use default with variables that evaluate to false you have to set the second parameter to true", code = "{{ ''|default('the string was empty', true) }}" - ) + ), } ) public class DefaultFilter extends AbstractFilter implements AdvancedFilter { + public static final String DEFAULT_VALUE_PARAM = "default_value"; public static final String TRUTHY_PARAM = "truthy"; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/DictSortFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/DictSortFilter.java index 5f1f24f3a..4a7135dfd 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/DictSortFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/DictSortFilter.java @@ -27,7 +27,7 @@ type = "enum key|value", defaultValue = "key", desc = "Sort by dict key or value" - ) + ), }, snippets = { @JinjavaSnippet( @@ -35,7 +35,7 @@ code = "{% for item in contact|dictsort(false, 'value') %}\n" + " {{item}}\n" + "{% endfor %}" - ) + ), } ) public class DictSortFilter implements Filter { @@ -72,6 +72,7 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args) private static class MapEntryComparator implements Comparator>, Serializable { + private static final long serialVersionUID = 1L; private final boolean caseSensitive; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/DifferenceFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/DifferenceFilter.java index 46b4c7cab..2cc71f83d 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/DifferenceFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/DifferenceFilter.java @@ -21,7 +21,7 @@ type = "sequence", desc = "The second list", required = true - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ [1, 2, 3]|difference([2, 3, 4]) }}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/DivideFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/DivideFilter.java index 12ad0e752..b950a0c76 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/DivideFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/DivideFilter.java @@ -41,13 +41,14 @@ type = "number", desc = "The divisor to divide the value", required = true - ) + ), }, snippets = { - @JinjavaSnippet(code = "{% set numerator = 106 %}\n" + "{% numerator|divide(2) %}") + @JinjavaSnippet(code = "{% set numerator = 106 %}\n" + "{% numerator|divide(2) %}"), } ) public class DivideFilter implements AdvancedFilter { + private static final TruthyTypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/DivisibleFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/DivisibleFilter.java index 8e4f12346..c7471cc4c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/DivisibleFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/DivisibleFilter.java @@ -35,7 +35,7 @@ type = "number", desc = "The divisor to check if the value is divisible by", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -44,7 +44,7 @@ "{% if num|divisible(2) %}\n" + " The number is divisble by 2\n" + "{% endif %}" - ) + ), } ) public class DivisibleFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/EscapeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/EscapeFilter.java index 76bb539ed..b48891a0b 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/EscapeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/EscapeFilter.java @@ -31,10 +31,11 @@ @JinjavaSnippet( code = "{% set escape_string = \"
This markup is printed as text
\" %}\n" + "{{ escape_string|escape }}" - ) + ), } ) public class EscapeFilter implements Filter { + private static final String SAMP = "&"; private static final String BAMP = "&"; private static final String SGT = ">"; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilter.java index 45dc8f0a9..57823de6d 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilter.java @@ -33,16 +33,17 @@ type = "boolean", desc = "Whether to only escape all curly braces or just when there are default expression, tag, or comment marks", defaultValue = "true" - ) + ), }, snippets = { @JinjavaSnippet( code = "{% set escape_string = \"{{This markup is printed as text}}\" %}\n" + "{{ escape_string|escape_jinjava }}" - ) + ), } ) public class EscapeJinjavaFilter implements Filter { + private static final String SLBRACE = "{"; private static final String BLBRACE = "{"; private static final String SRBRACE = "}"; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJsFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJsFilter.java index 540f4bca6..0b41d5421 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJsFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/EscapeJsFilter.java @@ -30,7 +30,7 @@ @JinjavaSnippet( code = "{% set escape_string = \"This string can safely be inserted into JavaScript\" %}\n" + "{{ escape_string|escapejs }}" - ) + ), } ) public class EscapeJsFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilter.java index 80df3efe8..3d3f5b348 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilter.java @@ -21,10 +21,10 @@ type = "boolean", defaultValue = "False", desc = "Use binary prefixes (Mebi, Gibi)" - ) + ), }, snippets = { - @JinjavaSnippet(code = "{% set bytes = 100000 %}\n" + "{{ bytes|filesizeformat }}") + @JinjavaSnippet(code = "{% set bytes = 100000 %}\n" + "{{ bytes|filesizeformat }}"), } ) public class FileSizeFormatFilter implements Filter { @@ -76,7 +76,7 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args) "PiB", "EiB", "ZiB", - "YiB" + "YiB", }; private static final String[] DECIMAL_SIZES = { "KB", @@ -86,6 +86,6 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args) "PB", "EB", "ZB", - "YB" + "YB", }; } diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/FirstFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/FirstFilter.java index d2d3dde5f..2f9ff5e1a 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/FirstFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/FirstFilter.java @@ -19,7 +19,7 @@ @JinjavaSnippet( code = "{% set my_sequence = ['Item 1', 'Item 2', 'Item 3'] %}\n" + "{{ my_sequence|first }}" - ) + ), } ) public class FirstFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/FloatFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/FloatFilter.java index 867f8f134..ffbca6231 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/FloatFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/FloatFilter.java @@ -22,14 +22,14 @@ type = "float", defaultValue = "0.0", desc = "Value to return if conversion fails" - ) + ), }, snippets = { @JinjavaSnippet( desc = "This example converts a text field string value to a float", code = "{% text \"my_text\" value='25', export_to_template_context=True %}\n" + "{% widget_data.my_text.value|float + 28 %}" - ) + ), } ) public class FloatFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/ForceEscapeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/ForceEscapeFilter.java index fa13305c2..c6acfea55 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/ForceEscapeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/ForceEscapeFilter.java @@ -14,7 +14,7 @@ @JinjavaSnippet( code = "{% set escape_string = \"
This markup is printed as text
\" %}\n" + "{{ escape_string|forceescape }}\n" - ) + ), } ) public class ForceEscapeFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/FormatFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/FormatFilter.java index 3051248cb..a22fa6f22 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/FormatFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/FormatFilter.java @@ -24,16 +24,17 @@ value = "args", type = "String...", desc = "Values to insert into string" - ) + ), }, snippets = { @JinjavaSnippet( desc = "%s can be replaced with other variables or values", code = "{{ \"Hi %s %s\"|format(contact.firstname, contact.lastname) }} " - ) + ), } ) public class FormatFilter implements AdvancedFilter { + public static final String NAME = "format"; @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/FormatNumberFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/FormatNumberFilter.java index 924e8e325..7a721b56c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/FormatNumberFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/FormatNumberFilter.java @@ -33,15 +33,16 @@ value = "max decimal precision", type = "number", desc = "A number input that determines the decimal precision of the formatted value. If the number of decimal digits from the input value is less than the decimal precision number, use the number of decimal digits from the input value. Otherwise, use the decimal precision number. The default is the number of decimal digits from the input value." - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ number|format_number }}"), @JinjavaSnippet(code = "{{ number|format_number(\"en-US\") }}"), - @JinjavaSnippet(code = "{{ number|format_number(\"en-US\", 3) }}") + @JinjavaSnippet(code = "{{ number|format_number(\"en-US\", 3) }}"), } ) public class FormatNumberFilter implements Filter { + private static final String FORMAT_NUMBER_FILTER_NAME = "format_number"; @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/FromYamlFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/FromYamlFilter.java index 5b1c732a9..7f79e709e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/FromYamlFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/FromYamlFilter.java @@ -19,6 +19,7 @@ snippets = { @JinjavaSnippet(code = "{{object|fromYaml}}") } ) public class FromYamlFilter implements Filter { + private static final YAMLMapper OBJECT_MAPPER = new YAMLMapper(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/GroupByFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/GroupByFilter.java index f425f78d3..d19c7620c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/GroupByFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/GroupByFilter.java @@ -28,7 +28,7 @@ value = "attribute", desc = "The common attribute to group by", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -41,7 +41,7 @@ " {% endfor %}\n" + " {% endfor %}\n" + "" - ) + ), } ) public class GroupByFilter implements Filter { @@ -89,6 +89,7 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args) } public static class Group { + private final String grouper; private final Object grouperObject; private final List list; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/IndentFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/IndentFilter.java index edab3b037..d40745594 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/IndentFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/IndentFilter.java @@ -27,7 +27,7 @@ type = "boolean", defaultValue = "False", desc = "If True, first line will be indented" - ) + ), }, snippets = { @JinjavaSnippet( @@ -36,10 +36,11 @@ " {% set var = \"string to indent\" %}\n" + " {{ var|indent(2, true) }}\n" + "" - ) + ), } ) public class IndentFilter extends AbstractFilter { + public static final String INDENT_FIRST_PARAM = "indentfirst"; public static final String WIDTH_PARAM = "width"; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/IntFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/IntFilter.java index 9e1689f09..59d2176e9 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/IntFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/IntFilter.java @@ -25,14 +25,14 @@ type = "number", defaultValue = "0", desc = "Value to return if the conversion fails" - ) + ), }, snippets = { @JinjavaSnippet( desc = "This example converts a text field string value to a integer", code = "{% text \"my_text\" value='25', export_to_template_context=True %}\n" + "{% widget_data.my_text.value|int + 28 %}" - ) + ), } ) public class IntFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/IntersectFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/IntersectFilter.java index 99a54d800..c08453b29 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/IntersectFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/IntersectFilter.java @@ -21,7 +21,7 @@ type = "sequence", desc = "The second list", required = true - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ [1, 2, 3]|intersect([2, 3, 4]) }}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/IpAddrFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/IpAddrFilter.java index 4412dc30f..5a550ace3 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/IpAddrFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/IpAddrFilter.java @@ -35,7 +35,7 @@ type = "string", defaultValue = "prefix", desc = "Name of function. Supported functions: 'prefix', 'netmask', 'network', 'address', 'broadcast'" - ) + ), }, snippets = { @JinjavaSnippet( @@ -49,10 +49,11 @@ desc = "This example shows how to filter list of ip addresses", code = "{{ ['192.108.0.1', null, True, 13, '2000::'] | ipaddr }}", output = "['192.108.0.1', '2000::']" - ) + ), } ) public class IpAddrFilter implements Filter { + private static final Pattern IP4_PATTERN = Pattern.compile( "(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])" ); diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/Ipv4Filter.java b/src/main/java/com/hubspot/jinjava/lib/filter/Ipv4Filter.java index ddb3f7f2b..361b74fd7 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/Ipv4Filter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/Ipv4Filter.java @@ -19,7 +19,7 @@ defaultValue = "prefix", desc = "Name of function. " + "Supported functions: 'prefix', 'netmask', 'network', 'address', 'broadcast'" - ) + ), }, snippets = { @JinjavaSnippet( @@ -33,7 +33,7 @@ desc = "This example shows how to filter list of ipv4 addresses", code = "{{ ['192.108.0.1', null, True, 13, '2000::'] | ipv4 }}", output = "['192.108.0.']" - ) + ), } ) public class Ipv4Filter extends IpAddrFilter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/Ipv6Filter.java b/src/main/java/com/hubspot/jinjava/lib/filter/Ipv6Filter.java index c0cf68d63..2032f95f9 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/Ipv6Filter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/Ipv6Filter.java @@ -19,7 +19,7 @@ defaultValue = "prefix", desc = "Name of function. " + "Supported functions: 'prefix', 'netmask', 'network', 'address', 'broadcast'" - ) + ), }, snippets = { @JinjavaSnippet( @@ -33,7 +33,7 @@ desc = "This example shows how to filter list of ipv6 addresses", code = "{{ ['192.108.0.1', null, True, 13, '2000::'] | ipv6 }}", output = "['2000::']" - ) + ), } ) public class Ipv6Filter extends IpAddrFilter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/JoinFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/JoinFilter.java index 210c3f5fe..853966e1e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/JoinFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/JoinFilter.java @@ -26,7 +26,7 @@ @JinjavaParam( value = "attr", desc = "Optional dict object attribute to use in joining" - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ [1, 2, 3]|join('|') }}", output = "1|2|3"), @@ -34,7 +34,7 @@ @JinjavaSnippet( desc = "It is also possible to join certain attributes of an object", code = "{{ users|join(', ', attribute='username') }}" - ) + ), } ) public class JoinFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/LastFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/LastFilter.java index f0d22a0f8..51d197289 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/LastFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/LastFilter.java @@ -19,7 +19,7 @@ @JinjavaSnippet( code = "{% set my_sequence = ['Item 1', 'Item 2', 'Item 3'] %}\n" + "{{ my_sequence|last }}" - ) + ), } ) public class LastFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/LengthFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/LengthFilter.java index 445c8523b..28269113e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/LengthFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/LengthFilter.java @@ -35,7 +35,7 @@ @JinjavaSnippet( code = "{% set services = ['Web design', 'SEO', 'Inbound Marketing', 'PPC'] %}\n" + "{{ services|length }}" - ) + ), } ) public class LengthFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/ListFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/ListFilter.java index 950c74058..764a3719d 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/ListFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/ListFilter.java @@ -25,7 +25,7 @@ "{% set three = 3 %}\n" + "{% set list_num = one|list + two|list + three|list %}\n" + "{{ list_num|list }}" - ) + ), } ) public class ListFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/LogFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/LogFilter.java index 2d889dd86..23c879463 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/LogFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/LogFilter.java @@ -31,6 +31,7 @@ snippets = { @JinjavaSnippet(code = "{{ 25|log(5) }}") } ) public class LogFilter implements Filter { + private static final MathContext PRECISION = new MathContext(50); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/MapFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/MapFilter.java index b0a1515a7..ec5db716a 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/MapFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/MapFilter.java @@ -28,7 +28,7 @@ value = "attribute", desc = "Filter to apply to an object or dict attribute to lookup", required = true - ) + ), }, snippets = { @JinjavaSnippet( @@ -38,10 +38,11 @@ @JinjavaSnippet( desc = "Alternatively you can let it invoke a filter by passing the name of the filter and the arguments afterwards. A good example would be applying a text conversion filter on a sequence", code = "{% set seq = ['item1', 'item2', 'item3'] %}\n" + "{{ seq|map('upper') }}" - ) + ), } ) public class MapFilter implements AdvancedFilter { + private static final String ATTRIBUTE_ARGUMENT = "attribute"; @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/Md5Filter.java b/src/main/java/com/hubspot/jinjava/lib/filter/Md5Filter.java index 1817dfe18..9f1e54e00 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/Md5Filter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/Md5Filter.java @@ -35,6 +35,7 @@ snippets = { @JinjavaSnippet(code = "{{ content.absolute_url|md5 }}") } ) public class Md5Filter implements Filter { + private static final String[] NOSTR = { "0", "1", @@ -51,7 +52,7 @@ public class Md5Filter implements Filter { "c", "d", "e", - "f" + "f", }; private static final String MD5 = "MD5"; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/MinusTimeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/MinusTimeFilter.java index d5b00f1a2..30b812c40 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/MinusTimeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/MinusTimeFilter.java @@ -32,7 +32,7 @@ desc = "The amount to subtract from the datetime", required = true ), - @JinjavaParam(value = "unit", desc = "Which temporal unit to use", required = true) + @JinjavaParam(value = "unit", desc = "Which temporal unit to use", required = true), }, snippets = { @JinjavaSnippet(code = "{% mydatetime|minus_time(3, 'days') %}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/MultiplyFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/MultiplyFilter.java index d8cf7fb85..269ecd2d2 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/MultiplyFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/MultiplyFilter.java @@ -41,11 +41,12 @@ type = "number", desc = "The multiplier", required = true - ) + ), }, snippets = { @JinjavaSnippet(code = "{% set n = 20 %}\n" + "{{ n|multiply(3) }}") } ) public class MultiplyFilter implements AdvancedFilter { + private static final TruthyTypeConverter TYPE_CONVERTER = new TruthyTypeConverter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/PlusTimeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/PlusTimeFilter.java index 9cfab8e7a..733e4818f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/PlusTimeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/PlusTimeFilter.java @@ -32,7 +32,7 @@ desc = "The amount to add to the datetime", required = true ), - @JinjavaParam(value = "unit", desc = "Which temporal unit to use", required = true) + @JinjavaParam(value = "unit", desc = "Which temporal unit to use", required = true), }, snippets = { @JinjavaSnippet(code = "{% mydatetime|plus_time(3, 'days') %}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilter.java index 41440d367..a0777f701 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilter.java @@ -23,7 +23,7 @@ @JinjavaSnippet( code = "{% set this_var =\"Variable that I want to debug\" %}\n" + "{{ this_var|pprint }}" - ) + ), } ) public class PrettyPrintFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/RandomFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/RandomFilter.java index 77a4b798c..1a4fef65f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/RandomFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/RandomFilter.java @@ -39,7 +39,7 @@ code = "{% for content in contents|random %}\n" + "
Post item markup
" + "{% endfor %}" - ) + ), } ) public class RandomFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilter.java index 77c270124..387cf78ab 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilter.java @@ -33,13 +33,13 @@ value = "new", desc = "The new string that you replace the matched substring", required = true - ) + ), }, snippets = { @JinjavaSnippet( code = "{{ \"It costs $300\"|regex_replace(\"[^a-zA-Z]\", \"\") }}", output = "Itcosts" - ) + ), } ) public class RegexReplaceFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/RejectAttrFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/RejectAttrFilter.java index 664e5d157..c4c780a64 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/RejectAttrFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/RejectAttrFilter.java @@ -26,7 +26,7 @@ type = "name of expression test", defaultValue = "truthy", desc = "Specify which expression test to run for making the rejection" - ) + ), }, snippets = { @JinjavaSnippet( @@ -34,7 +34,7 @@ code = "{% for content in contents|rejectattr('post_list_summary_featured_image') %}\n" + "
Post in listing markup
\n" + "{% endfor %}" - ) + ), } ) public class RejectAttrFilter extends SelectAttrFilter implements AdvancedFilter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/RejectFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/RejectFilter.java index 0807e27d6..d14f6cfd7 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/RejectFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/RejectFilter.java @@ -15,13 +15,13 @@ type = "name of expression test", desc = "Specify which expression test to run for making the selection", required = true - ) + ), }, snippets = { @JinjavaSnippet( code = "{% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %}\n" + "{% some_numbers|reject('even') %}" - ) + ), } ) public class RejectFilter extends SelectFilter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/RenderFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/RenderFilter.java index 4cd6763cb..0c5f7c3bb 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/RenderFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/RenderFilter.java @@ -14,7 +14,7 @@ snippets = { @JinjavaSnippet( code = "{{ \"{% if my_val %} Hello {% else %} world {% endif %}\"|render }}" - ) + ), } ) public class RenderFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/ReplaceFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/ReplaceFilter.java index cebede1f0..dd0a0927e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/ReplaceFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/ReplaceFilter.java @@ -35,7 +35,7 @@ value = "count", type = "number", desc = "Replace only the first N occurrences" - ) + ), }, snippets = { @JinjavaSnippet( @@ -45,7 +45,7 @@ @JinjavaSnippet( code = "{{ \"aaaaargh\"|replace(\"a\", \"d'oh, \", 2) }}", output = "d'oh, d'oh, aaargh" - ) + ), } ) public class ReplaceFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/ReverseFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/ReverseFilter.java index cd5e29ba7..8d946ac68 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/ReverseFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/ReverseFilter.java @@ -36,7 +36,7 @@ "{% for num in nums|reverse %}\n" + " {{ num }}\n" + "{% endfor %}" - ) + ), } ) public class ReverseFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/RootFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/RootFilter.java index bacfe0c51..e6b718add 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/RootFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/RootFilter.java @@ -30,6 +30,7 @@ snippets = { @JinjavaSnippet(code = "{{ 125|root(3) }}") } ) public class RootFilter implements Filter { + private static final MathContext PRECISION = new MathContext(50); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/RoundFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/RoundFilter.java index 9f72bd49f..0110a8309 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/RoundFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/RoundFilter.java @@ -30,7 +30,7 @@ type = "enum common|ceil|floor", defaultValue = "common", desc = "Method of rounding: 'common' rounds either up or down, 'ceil' always rounds up, and 'floor' always rounds down." - ) + ), }, snippets = { @JinjavaSnippet( @@ -43,7 +43,7 @@ code = "{{ 42.55|round|int }}", output = "43", desc = "If you need a real integer, pipe it through int" - ) + ), } ) public class RoundFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/SelectAttrFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/SelectAttrFilter.java index a71234e6e..8ee249135 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/SelectAttrFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/SelectAttrFilter.java @@ -35,7 +35,7 @@ type = "name of expression test", defaultValue = "truthy", desc = "Specify which expression test to run for making the selection" - ) + ), }, snippets = { @JinjavaSnippet( @@ -43,7 +43,7 @@ code = "{% for content in contents|selectattr('post_list_summary_featured_image') %}\n" + "
Post in listing markup
\n" + "{% endfor %}" - ) + ), } ) public class SelectAttrFilter implements AdvancedFilter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/SelectFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/SelectFilter.java index da4922922..131b9b1ad 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/SelectFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/SelectFilter.java @@ -29,13 +29,13 @@ type = "name of expression test", defaultValue = "truthy", desc = "Specify which expression test to run for making the selection" - ) + ), }, snippets = { @JinjavaSnippet( code = "{% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %}\n" + "{% some_numbers|select('even') %}" - ) + ), } ) public class SelectFilter implements AdvancedFilter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/ShuffleFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/ShuffleFilter.java index bff1bd2ef..9eaecbf88 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/ShuffleFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/ShuffleFilter.java @@ -24,7 +24,7 @@ code = "{% for content in contents|shuffle %}\n" + "
Markup of each post
\n" + "{% endfor %}" - ) + ), } ) public class ShuffleFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/SliceFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/SliceFilter.java index 7f654b00b..5199cd61d 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/SliceFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/SliceFilter.java @@ -33,7 +33,7 @@ type = "object", desc = "Specifies which object to use to fill missing values on final iteration", required = false - ) + ), }, snippets = { @JinjavaSnippet( @@ -48,7 +48,7 @@ " \n" + " {% endfor %}\n" + "\n" - ) + ), } ) public class SliceFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/SortFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/SortFilter.java index ecdbb37ab..688a158d6 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/SortFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/SortFilter.java @@ -39,7 +39,7 @@ defaultValue = "False", desc = "Determines whether or not the sorting is case sensitive" ), - @JinjavaParam(value = "attribute", desc = "Specifies an attribute to sort by") + @JinjavaParam(value = "attribute", desc = "Specifies an attribute to sort by"), }, snippets = { @JinjavaSnippet( @@ -51,10 +51,11 @@ "{% for item in my_posts|sort(False, False,'name') %}\n" + " {{ item.name }}
\n" + "{% endfor %}" - ) + ), } ) public class SortFilter implements Filter { + private static final Splitter DOT_SPLITTER = Splitter.on('.').omitEmptyStrings(); private static final Joiner DOT_JOINER = Joiner.on('.'); @@ -118,6 +119,7 @@ private Object mapObject( } private static class ObjectComparator implements Comparator, Serializable { + private final boolean reverse; private final boolean caseSensitive; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/SplitFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/SplitFilter.java index 2a6b5c58e..064e2a3b9 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/SplitFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/SplitFilter.java @@ -33,7 +33,7 @@ type = "number", defaultValue = "0", desc = "Limits resulting list by putting remainder of string into last list item" - ) + ), }, snippets = { @JinjavaSnippet( @@ -44,7 +44,7 @@ "
  • {{ name }}
  • \n" + " {% endfor %}\n" + "" - ) + ), } ) public class SplitFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/StringFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/StringFilter.java index a1087ee78..622800f5f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/StringFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/StringFilter.java @@ -16,7 +16,7 @@ snippets = { @JinjavaSnippet( code = "{% set number_to_string = 45 %}\n" + "{{ number_to_string|string }}" - ) + ), } ) public class StringFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/StringToDateFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/StringToDateFilter.java index 28268dab5..1c5b7754b 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/StringToDateFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/StringToDateFilter.java @@ -15,7 +15,7 @@ value = "dateFormat", desc = "Format of the date string", required = true - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ '3/3/21'|strtodate('M/d/yy') }}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/StringToTimeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/StringToTimeFilter.java index 30b49fe73..b778cd33e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/StringToTimeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/StringToTimeFilter.java @@ -21,7 +21,7 @@ value = "datetimeFormat", desc = "Format of the datetime string", required = true - ) + ), }, snippets = { @JinjavaSnippet(code = "{% mydatetime|unixtimestamp %}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/StripTagsFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/StripTagsFilter.java index ac8b78bbd..9d8db5a19 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/StripTagsFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/StripTagsFilter.java @@ -23,10 +23,11 @@ @JinjavaSnippet( code = "{% set some_html = \"
    Some text
    \" %}\n" + "{{ some_html|striptags }}" - ) + ), } ) public class StripTagsFilter implements Filter { + private static final Pattern WHITESPACE = Pattern.compile("\\s{2,}"); @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/SumFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/SumFilter.java index 43a1c0153..47962a2d1 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/SumFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/SumFilter.java @@ -28,7 +28,7 @@ @JinjavaParam( value = "attribute", desc = "Specify an optional attribute of dict to sum" - ) + ), }, snippets = { @JinjavaSnippet( @@ -37,7 +37,7 @@ @JinjavaSnippet( desc = "Sum up only certain attributes", code = "Total: {{ items|sum(attribute='price') }}" - ) + ), } ) public class SumFilter implements AdvancedFilter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilter.java index 5f9743024..a329ede86 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilter.java @@ -21,7 +21,7 @@ type = "sequence", desc = "The second list", required = true - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ [1, 2, 3]|symmetric_difference([2, 3, 4]) }}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/ToYamlFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/ToYamlFilter.java index cce29dc19..a78d02876 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/ToYamlFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/ToYamlFilter.java @@ -20,8 +20,9 @@ snippets = { @JinjavaSnippet(code = "{{object|toyaml}}") } ) public class ToYamlFilter implements Filter { + private static final YAMLMapper OBJECT_MAPPER = new YAMLMapper() - .disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER); + .disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER); @Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/TruncateFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/TruncateFilter.java index 9b008855b..1309ccf5d 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/TruncateFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/TruncateFilter.java @@ -48,7 +48,7 @@ value = "end", defaultValue = "...", desc = "The characters that will be added to indicate where the text was truncated" - ) + ), }, snippets = { @JinjavaSnippet( @@ -58,7 +58,7 @@ @JinjavaSnippet( code = "{{ \"I only want to show the first sentence. Not the second.\"|truncate(35, True, '..') }}", output = "I only want to show the first sente.." - ) + ), } ) public class TruncateFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilter.java index f1b3b45c3..defef913e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilter.java @@ -39,16 +39,17 @@ type = "boolean", defaultValue = "false", desc = "If set to true, text will be truncated in the middle of words" - ) + ), }, snippets = { @JinjavaSnippet( code = "{{ \"

    I want to truncate this text without breaking my HTML

    \"|truncatehtml(28, '..', false) }}", output = "

    I want to truncate this text without breaking my HTML

    " - ) + ), } ) public class TruncateHtmlFilter implements AdvancedFilter { + private static final int DEFAULT_TRUNCATE_LENGTH = 255; private static final String DEFAULT_END = "..."; private static final String LENGTH_KEY = "length"; @@ -156,6 +157,7 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args) } private static class ContentTruncatingNodeVisitor implements NodeVisitor { + private final int maxTextLen; private int textLen; private final String ending; diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilter.java index 2f6934ad9..fa7919469 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilter.java @@ -29,7 +29,7 @@ @JinjavaSnippet( code = "{% set escaped_string = \"
    This & that
    \" %}\n" + "{{ escaped_string|unescape_html }}" - ) + ), } ) public class UnescapeHtmlFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/UnionFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/UnionFilter.java index 40daf4853..eb74124ef 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/UnionFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/UnionFilter.java @@ -21,7 +21,7 @@ type = "sequence", desc = "The second list", required = true - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ [1, 2, 3]|union([2, 3, 4]) }}") } ) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/UniqueFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/UniqueFilter.java index 19439978c..908ece3dc 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/UniqueFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/UniqueFilter.java @@ -21,7 +21,7 @@ @JinjavaParam( value = "attr", type = "Optional attribute on object to use as unique identifier" - ) + ), }, snippets = { @JinjavaSnippet( @@ -32,7 +32,7 @@ @JinjavaSnippet( desc = "Filter out duplicate blog posts", code = "{% for content in contents|unique(attr='slug') %}\n" + "\n{% endfor %}" - ) + ), } ) public class UniqueFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilter.java index abf34e244..af1f279d5 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilter.java @@ -24,7 +24,7 @@ @JinjavaSnippet( code = "{{ \"http%3A%2F%2Ffoo.com%3Fbar%26food\"|urldecode }}", output = "http://foo.com?bar&food" - ) + ), } ) public class UrlDecodeFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilter.java index 1f0b2a357..e4ce1a1bc 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilter.java @@ -21,7 +21,7 @@ required = true ), snippets = { - @JinjavaSnippet(code = "{{ \"Escape & URL encode this string\"|urlencode }}") + @JinjavaSnippet(code = "{{ \"Escape & URL encode this string\"|urlencode }}"), } ) public class UrlEncodeFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/UrlizeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/UrlizeFilter.java index 3b5c3bda4..fa2a339ac 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/UrlizeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/UrlizeFilter.java @@ -31,7 +31,7 @@ defaultValue = "False", desc = "Adds nofollow to generated link tag" ), - @JinjavaParam(value = "target", desc = "Adds target attr to generated link tag") + @JinjavaParam(value = "target", desc = "Adds target attr to generated link tag"), }, snippets = { @JinjavaSnippet( @@ -41,7 +41,7 @@ @JinjavaSnippet( desc = "If target is specified, the target attribute will be added to the tag", code = "{{ \"http://www.hubspot.com\"|urlize(10, true, target='_blank') }}" - ) + ), } ) public class UrlizeFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/WordCountFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/WordCountFilter.java index 428a17ae4..9c504185f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/WordCountFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/WordCountFilter.java @@ -20,7 +20,7 @@ @JinjavaSnippet( code = "{% set count_words = \"Count the number of words in this variable\" %}\n" + "{{ count_words|wordcount }}" - ) + ), } ) public class WordCountFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/WordWrapFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/WordWrapFilter.java index ea96d082d..47f3f9483 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/WordWrapFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/WordWrapFilter.java @@ -29,7 +29,7 @@ type = "boolean", defaultValue = "True", desc = "If true, long words will be broken when wrapped" - ) + ), }, snippets = { @JinjavaSnippet( @@ -37,7 +37,7 @@ code = "
    \n" +
           "    {{ \"Lorem ipsum dolor sit amet, consectetur adipiscing elit\"|wordwrap(10) }}\n" +
           "
    " - ) + ), } ) public class WordWrapFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/XmlAttrFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/XmlAttrFilter.java index d09f41051..838d6bf7c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/XmlAttrFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/XmlAttrFilter.java @@ -26,13 +26,13 @@ type = "boolean", defaultValue = "True", desc = "Automatically prepend a space in front of the item" - ) + ), }, snippets = { @JinjavaSnippet( code = "{% set html_attributes = {'class': 'bold', 'id': 'sidebar'} %}\n" + "
    " - ) + ), } ) public class XmlAttrFilter implements Filter { diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/time/DateTimeFormatHelper.java b/src/main/java/com/hubspot/jinjava/lib/filter/time/DateTimeFormatHelper.java index 3673fd948..6d65d3821 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/time/DateTimeFormatHelper.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/time/DateTimeFormatHelper.java @@ -19,6 +19,7 @@ import java.util.function.Function; public final class DateTimeFormatHelper { + public static final String FIXED_DATE_TIME_FILTER_NULL_ARG = "FIXED_DATE_TIME_FILTER_NULL_ARG"; private final String name; @@ -37,13 +38,12 @@ String format(Object var, String... args) { ZoneId zoneId = arg(args, 1).map(this::parseZone).orElse(ZoneOffset.UTC); Locale locale = arg(args, 2) .map(this::parseLocale) - .orElseGet( - () -> - JinjavaInterpreter - .getCurrentMaybe() - .map(JinjavaInterpreter::getConfig) - .map(JinjavaConfig::getLocale) - .orElse(Locale.ENGLISH) + .orElseGet(() -> + JinjavaInterpreter + .getCurrentMaybe() + .map(JinjavaInterpreter::getConfig) + .map(JinjavaConfig::getLocale) + .orElse(Locale.ENGLISH) ); return buildFormatter(format) diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilter.java index e1cc8eedc..5b3908b59 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilter.java @@ -29,17 +29,18 @@ value = "locale", defaultValue = "Locale specified on JinjavaConfig", desc = "The locale to use for locale-aware formats" - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ content.updated | format_date('long') }}"), @JinjavaSnippet(code = "{{ content.updated | format_date('yyyyy.MMMM.dd') }}"), @JinjavaSnippet( code = "{{ content.updated | format_date('medium', 'America/New_York', 'de-DE') }}" - ) + ), } ) public class FormatDateFilter implements Filter { + private static final String NAME = "format_date"; private static final DateTimeFormatHelper HELPER = new DateTimeFormatHelper( NAME, diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilter.java index 2abf8f55f..5de652fac 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilter.java @@ -29,7 +29,7 @@ value = "locale", defaultValue = "Locale specified on JinjavaConfig", desc = "The locale to use for locale-aware formats" - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ content.updated | format_datetime('long') }}"), @@ -38,10 +38,11 @@ ), @JinjavaSnippet( code = "{{ content.updated | format_datetime('medium', 'America/New_York', 'de-DE') }}" - ) + ), } ) public class FormatDatetimeFilter implements Filter { + private static final String NAME = "format_datetime"; private static final DateTimeFormatHelper HELPER = new DateTimeFormatHelper( NAME, diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilter.java index c3206165f..6133c457d 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilter.java @@ -29,17 +29,18 @@ value = "locale", defaultValue = "Locale specified on JinjavaConfig", desc = "The locale to use for locale-aware formats" - ) + ), }, snippets = { @JinjavaSnippet(code = "{{ content.updated | format_time('long') }}"), @JinjavaSnippet(code = "{{ content.updated | format_time('hh:mm a') }}"), @JinjavaSnippet( code = "{{ content.updated | format_time('medium', 'America/New_York', 'de-DE') }}" - ) + ), } ) public class FormatTimeFilter implements Filter { + private static final String NAME = "format_time"; private static final DateTimeFormatHelper HELPER = new DateTimeFormatHelper( NAME, diff --git a/src/main/java/com/hubspot/jinjava/lib/fn/ELFunctionDefinition.java b/src/main/java/com/hubspot/jinjava/lib/fn/ELFunctionDefinition.java index 6f1f10ef6..a11b0d833 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/ELFunctionDefinition.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/ELFunctionDefinition.java @@ -5,6 +5,7 @@ import java.lang.reflect.Method; public class ELFunctionDefinition implements Importable { + private String namespace; private String localName; private Method method; diff --git a/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java b/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java index be904358f..bdb9f7509 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java @@ -43,6 +43,7 @@ import org.apache.commons.lang3.math.NumberUtils; public class Functions { + public static final String STRING_TO_TIME_FUNCTION = "stringToTime"; public static final String STRING_TO_DATE_FUNCTION = "stringToDate"; @@ -58,7 +59,7 @@ public class Functions { " ...\n" + " {{ super() }}\n" + "{% endblock %}" - ) + ), } ) public static String renderSuperBlock() { @@ -91,12 +92,12 @@ public static String renderSuperBlock() { value = "kwargs", type = "NamedParameter...", desc = "Keyword arguments to put into the namespace dictionary" - ) + ), }, snippets = { @JinjavaSnippet(code = "{% set ns = namespace() %}"), @JinjavaSnippet(code = "{% set ns = namespace(b=false) %}"), - @JinjavaSnippet(code = "{% set ns = namespace(my_map, b=false) %}") + @JinjavaSnippet(code = "{% set ns = namespace(my_map, b=false) %}"), } ) public static Namespace createNamespace(Object... parameters) { @@ -118,8 +119,8 @@ public static Namespace createNamespace(Object... parameters) { namespace.putAll( Arrays .stream(parameters) - .filter( - p -> p instanceof NamedParameter && ((NamedParameter) p).getValue() != null + .filter(p -> + p instanceof NamedParameter && ((NamedParameter) p).getValue() != null ) .map(p -> (NamedParameter) p) .collect(Collectors.toMap(NamedParameter::getName, NamedParameter::getValue)) @@ -135,7 +136,7 @@ public static List immutableListOf(Object... items) { value = "converts a key-value pair into a Map.Entry", params = { @JinjavaParam(value = "key", type = "object"), - @JinjavaParam(value = "value", type = "object") + @JinjavaParam(value = "value", type = "object"), }, hidden = true ) @@ -151,7 +152,7 @@ public static List immutableListOf(Object... items) { type = "string", defaultValue = "utc", desc = "timezone" - ) + ), } ) public static ZonedDateTime today(String... var) { @@ -185,7 +186,7 @@ public static ZonedDateTime today(String... var) { value = "timezone", defaultValue = "utc", desc = "Time zone of output date" - ) + ), } ) public static String dateTimeFormat(Object var, String... format) { @@ -305,7 +306,7 @@ public static ZonedDateTime getDateTimeArg(Object var, ZoneId zoneOffset) { @JinjavaDoc( value = "gets the unix timestamp milliseconds value of a datetime", params = { - @JinjavaParam(value = "var", type = "date", defaultValue = "current time") + @JinjavaParam(value = "var", type = "date", defaultValue = "current time"), } ) public static long unixtimestamp(Object... var) { @@ -351,7 +352,7 @@ public static long unixtimestamp(Object... var) { value = "var", type = "datetimeFormat", desc = "format of the datetime string" - ) + ), } ) public static PyishDate stringToTime(String datetimeString, String datetimeFormat) { @@ -400,7 +401,7 @@ public static PyishDate stringToTime(String datetimeString, String datetimeForma value = "dateFormat", type = "string", desc = "format of the date string" - ) + ), } ) public static PyishDate stringToDate(String dateString, String dateFormat) { @@ -469,7 +470,7 @@ public static PyishDate stringToDate(String dateString, String dateFormat) { value = "end", defaultValue = "...", desc = "The characters that will be added to indicate where the text was truncated" - ) + ), } ) public static Object truncate(Object var, Object... arg) { @@ -558,7 +559,7 @@ public static int movePointerToJustBeforeLastWord(int pointer, String s) { params = { @JinjavaParam(value = "start", type = "number", defaultValue = "0"), @JinjavaParam(value = "end", type = "number"), - @JinjavaParam(value = "step", type = "number", defaultValue = "1") + @JinjavaParam(value = "step", type = "number", defaultValue = "1"), } ) public static List range(Object arg1, Object... args) { diff --git a/src/main/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxy.java b/src/main/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxy.java index 48147742f..bc4f86ce0 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxy.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxy.java @@ -13,6 +13,7 @@ import javassist.bytecode.AccessFlag; public class InjectedContextFunctionProxy { + private static final String GUICE_CLASS_INDICATOR = "$$EnhancerByGuice$$"; public static ELFunctionDefinition defineProxy( diff --git a/src/main/java/com/hubspot/jinjava/lib/fn/MacroFunction.java b/src/main/java/com/hubspot/jinjava/lib/fn/MacroFunction.java index 7f9c14fac..9e6cd9a17 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/MacroFunction.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/MacroFunction.java @@ -22,6 +22,7 @@ * */ public class MacroFunction extends AbstractCallableMethod { + public static final String KWARGS_KEY = "kwargs"; public static final String VARARGS_KEY = "varargs"; protected final List content; @@ -85,16 +86,15 @@ public Optional getImportFile(JinjavaInterpreter interpreter) { ); // pushWithoutCycleCheck() is used to here so that macros calling macros from the same file will not throw a TagCycleException - importFile.ifPresent( - path -> - interpreter - .getContext() - .getCurrentPathStack() - .pushWithoutCycleCheck( - path, - interpreter.getLineNumber(), - interpreter.getPosition() - ) + importFile.ifPresent(path -> + interpreter + .getContext() + .getCurrentPathStack() + .pushWithoutCycleCheck( + path, + interpreter.getLineNumber(), + interpreter.getPosition() + ) ); return importFile; } @@ -214,17 +214,15 @@ private boolean alreadyDeferredInEarlierCall( return penultimateParent .getDeferredTokens() .stream() - .filter( - deferredToken -> - Objects.equals(importResourcePath, deferredToken.getImportResourcePath()) + .filter(deferredToken -> + Objects.equals(importResourcePath, deferredToken.getImportResourcePath()) ) - .anyMatch( - deferredToken -> - deferredToken.getSetDeferredWords().contains(key) || - deferredToken - .getUsedDeferredWords() - .stream() - .anyMatch(used -> key.equals(used.split("\\.", 2)[0])) + .anyMatch(deferredToken -> + deferredToken.getSetDeferredWords().contains(key) || + deferredToken + .getUsedDeferredWords() + .stream() + .anyMatch(used -> key.equals(used.split("\\.", 2)[0])) ); } return false; diff --git a/src/main/java/com/hubspot/jinjava/lib/fn/TypeFunction.java b/src/main/java/com/hubspot/jinjava/lib/fn/TypeFunction.java index b5297b3a8..d2a387949 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/TypeFunction.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/TypeFunction.java @@ -16,6 +16,7 @@ value = "Get a string that describes the type of the object, similar to Python's type()" ) public class TypeFunction { + private static Map, String> CLASS_TYPE_TO_NAME = ImmutableMap ., String>builder() .put(AstDict.class, "dict") diff --git a/src/main/java/com/hubspot/jinjava/lib/fn/eager/EagerMacroFunction.java b/src/main/java/com/hubspot/jinjava/lib/fn/eager/EagerMacroFunction.java index 7e56b7e9a..f5eb68029 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/eager/EagerMacroFunction.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/eager/EagerMacroFunction.java @@ -34,6 +34,7 @@ @Beta public class EagerMacroFunction extends MacroFunction { + private AtomicInteger callCount = new AtomicInteger(); private boolean reconstructing = false; @@ -79,8 +80,7 @@ public Object doEvaluate( } return result.asTemplateString(); } finally { - importFile.ifPresent( - path -> interpreter.getContext().getCurrentPathStack().pop() + importFile.ifPresent(path -> interpreter.getContext().getCurrentPathStack().pop() ); } } @@ -103,10 +103,11 @@ public Object doEvaluate( interpreter.getContext().isDeferredExecutionMode() ) ) { - PrefixToPreserveState prefixToPreserveState = EagerReconstructionUtils.resetAndDeferSpeculativeBindings( - interpreter, - eagerExecutionResult - ); + PrefixToPreserveState prefixToPreserveState = + EagerReconstructionUtils.resetAndDeferSpeculativeBindings( + interpreter, + eagerExecutionResult + ); String tempVarName = MacroFunctionTempVariable.getVarName( getName(), diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/AutoEscapeTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/AutoEscapeTag.java index 4f330e206..5804258e8 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/AutoEscapeTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/AutoEscapeTag.java @@ -16,10 +16,11 @@ snippets = { @JinjavaSnippet( code = "{% autoescape %}\n" + "
    Code to escape
    \n" + "{% endautoescape %}" - ) + ), } ) public class AutoEscapeTag implements Tag { + public static final String TAG_NAME = "autoescape"; private static final long serialVersionUID = 786006577642541285L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/BlockTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/BlockTag.java index fe525acc0..0d73d9cd8 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/BlockTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/BlockTag.java @@ -39,7 +39,7 @@ @JinjavaParam( value = "block_name", desc = "A unique name for the block that should be used in both the parent and child template" - ) + ), }, snippets = { @JinjavaSnippet( @@ -47,12 +47,13 @@ "{% block my_sidebar %}\n" + " \n" + "{% endblock %}" - ) + ), } ) @JinjavaHasCodeBody @JinjavaTextMateSnippet(code = "{% block ${1:name} %}\n$0\n{% endblock $1 %}") public class BlockTag implements Tag { + public static final String TAG_NAME = "block"; private static final long serialVersionUID = -2362317415797088108L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/CallTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/CallTag.java index cfcc8d1be..b6107a864 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/CallTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/CallTag.java @@ -46,13 +46,14 @@ "
    {{ user.description }}
    \n" + " \n" + " {% endcall %}" - ) + ), } ) @JinjavaTextMateSnippet( code = "{% call ${1:macro_name}(${2:argument_names}) %}\n" + "$0\n" + "{% endcall %}" ) public class CallTag implements Tag { + public static final String TAG_NAME = "call"; private static final long serialVersionUID = 7231253469979314727L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/CycleTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/CycleTag.java index 75bb5fc09..a6f305936 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/CycleTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/CycleTag.java @@ -38,7 +38,7 @@ @JinjavaParam( value = "string_to_print", desc = "A comma separated list of strings to print with each interation. The list will repeat if there are more iterations than string parameter values." - ) + ), }, snippets = { @JinjavaSnippet( @@ -46,11 +46,12 @@ code = "{% for content in contents %}\n" + "
    Blog post content
    \n" + "{% endfor %}" - ) + ), } ) @JinjavaTextMateSnippet(code = "{% cycle '${1:string_to_print}' %}") public class CycleTag implements Tag { + public static final String TAG_NAME = "cycle"; public static final String LOOP_INDEX = "loop.index0"; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/DoTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/DoTag.java index eec66d106..3fce9a353 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/DoTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/DoTag.java @@ -18,11 +18,12 @@ "{% set foo = [] %}\n" + "{{ foo.append('a') }}\n" + "{% enddo %}" - ) + ), } ) @JinjavaTextMateSnippet(code = "{% do ${1:expr} %}") public class DoTag implements Tag, FlexibleTag { + public static final String TAG_NAME = "do"; @Override diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/ElseIfTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/ElseIfTag.java index 0f76510b5..bc1063aa0 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/ElseIfTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/ElseIfTag.java @@ -13,12 +13,13 @@ value = "condition", type = "conditional expression", desc = "An expression that evaluates to either true or false" - ) + ), }, hidden = true ) @JinjavaHasCodeBody public class ElseIfTag implements Tag { + public static final String TAG_NAME = "elif"; private static final long serialVersionUID = -7988057025956316803L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/ElseTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/ElseTag.java index 0e58ef664..bc08314a6 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/ElseTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/ElseTag.java @@ -23,6 +23,7 @@ @JinjavaDoc(value = "", hidden = true) @JinjavaHasCodeBody public class ElseTag implements Tag { + public static final String TAG_NAME = "else"; private static final long serialVersionUID = 1082768429113702148L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/EndTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/EndTag.java index 223d92eaa..748a25c5e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/EndTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/EndTag.java @@ -6,6 +6,7 @@ @JinjavaDoc(value = "", hidden = true) public final class EndTag implements Tag { + private static final long serialVersionUID = -3309842733119867221L; private final String endTagName; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/ExtendsTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/ExtendsTag.java index ab9a14fb0..a17bbea02 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/ExtendsTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/ExtendsTag.java @@ -32,7 +32,7 @@ value = "Template inheritance allows you to build a base “skeleton” template that contains all the " + "common elements of your site and defines blocks that child templates can override.", params = { - @JinjavaParam(value = "path", desc = "Design Manager file path to parent template") + @JinjavaParam(value = "path", desc = "Design Manager file path to parent template"), }, snippets = { @JinjavaSnippet( @@ -76,11 +76,12 @@ " Welcome to my awesome homepage.\n" + "

    \n" + "{% endblock %}" - ) + ), } ) @JinjavaTextMateSnippet(code = "{% extends '${1:path}' %}") public class ExtendsTag implements Tag { + public static final String TAG_NAME = "extends"; private static final long serialVersionUID = 4692863362280761393L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/ForTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/ForTag.java index c56008470..9a3317f4e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/ForTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/ForTag.java @@ -66,7 +66,7 @@ @JinjavaParam( value = "items_to_iterate", desc = "Specifies the name of a single item in the sequence or dict." - ) + ), }, snippets = { @JinjavaSnippet( @@ -87,7 +87,7 @@ code = "{% for content in contents %}\n" + " Post content variables\n" + "{% endfor %}" - ) + ), } ) @JinjavaHasCodeBody @@ -95,6 +95,7 @@ code = "{% for ${1:items} in ${2:list} %}\n" + "$0\n" + "{% endfor %}" ) public class ForTag implements Tag { + public static final String TAG_NAME = "for"; public static final String LOOP = "loop"; @@ -164,10 +165,11 @@ public String renderForCollection( ) { ForLoop loop = ObjectIterator.getLoop(collection); - Set removedMetaContextVariables = EagerReconstructionUtils.removeMetaContextVariables( - loopVars.stream(), - interpreter.getContext() - ); + Set removedMetaContextVariables = + EagerReconstructionUtils.removeMetaContextVariables( + loopVars.stream(), + interpreter.getContext() + ); try (InterpreterScopeClosable c = interpreter.enterScope()) { if (interpreter.isValidationMode() && !loop.hasNext()) { loop = ObjectIterator.getLoop(new DummyObject()); diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/FromTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/FromTag.java index feac95fac..ce00eceef 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/FromTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/FromTag.java @@ -37,7 +37,7 @@ @JinjavaParam( value = "macro_name", desc = "Name of macro or comma separated macros to import (import macro_name)" - ) + ), }, snippets = { @JinjavaSnippet( @@ -53,11 +53,12 @@ desc = "The macro html file is accessed from a different template, but only the footer macro is imported and executed", code = "{% from 'custom/page/web_page_basic/my_macros.html' import footer %}\n" + "{{ footer('h2', 'My footer info') }}" - ) + ), } ) @JinjavaTextMateSnippet(code = "{% from '${1:path}' import ${2:macro_name} %}") public class FromTag implements Tag { + public static final String TAG_NAME = "from"; private static final long serialVersionUID = 6152691434172265022L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/IfTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/IfTag.java index 96e6f8cc8..85040036d 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/IfTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/IfTag.java @@ -38,7 +38,7 @@ value = "condition", type = "conditional expression", desc = "An expression that evaluates to either true or false" - ) + ), }, snippets = { @JinjavaSnippet( @@ -56,12 +56,13 @@ "{% else %}\n" + "Variable named number is greater than 6.\n" + "{% endif %}" - ) + ), } ) @JinjavaTextMateSnippet(code = "{% if '${1:condition}' %}\n\n{% endif %}") @JinjavaHasCodeBody public class IfTag implements Tag { + public static final String TAG_NAME = "if"; private static final long serialVersionUID = -3784039314941268904L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/IfchangedTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/IfchangedTag.java index 8025e0a77..b2e1e996f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/IfchangedTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/IfchangedTag.java @@ -32,11 +32,12 @@ code = "{% ifchanged var %}\n" + "Variable to test if changed\n" + "{% endifchanged %}" - ) + ), } ) @JinjavaHasCodeBody public class IfchangedTag implements Tag { + public static final String TAG_NAME = "ifchanged"; private static final long serialVersionUID = 3567908136629704724L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/ImportTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/ImportTag.java index 2ffdcedaa..aa9ffbd30 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/ImportTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/ImportTag.java @@ -43,7 +43,7 @@ @JinjavaParam( value = "import_name", desc = "Give a name to the imported file to access macros from" - ) + ), }, snippets = { @JinjavaSnippet( @@ -60,11 +60,12 @@ code = "{% import 'custom/page/web_page_basic/my_macros.html' as header_footer %}\n" + "{{ header_footer.header('h1', 'My page title') }}\n" + "{{ header_footer.footer('h3', 'Company footer info') }}" - ) + ), } ) @JinjavaTextMateSnippet(code = "{% import '${1:path}' ${2: as ${3:import_name}} %}") public class ImportTag implements Tag { + public static final String TAG_NAME = "import"; private static final long serialVersionUID = 8433638845398005260L; @@ -184,8 +185,7 @@ public static void handleDeferredNodesDuringImport( ) { node .getChildren() - .forEach( - deferredChild -> interpreter.getContext().handleDeferredNode(deferredChild) + .forEach(deferredChild -> interpreter.getContext().handleDeferredNode(deferredChild) ); if (StringUtils.isBlank(contextVar)) { for (MacroFunction macro : child.getContext().getGlobalMacros().values()) { @@ -213,8 +213,7 @@ public static void handleDeferredNodesDuringImport( public static Node parseTemplateAsNode( JinjavaInterpreter interpreter, String templateFile - ) - throws IOException { + ) throws IOException { interpreter .getContext() .getCurrentPathStack() diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java index d4028898a..cd5ad675e 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java @@ -41,16 +41,17 @@ @JinjavaParam( value = "path", desc = "Design Manager path to the file that you would like to include" - ) + ), }, snippets = { @JinjavaSnippet(code = "{% include \"custom/page/web_page_basic/my_footer.html\" %}"), @JinjavaSnippet(code = "{% include \"generated_global_groups/2781996615.html\" %}"), - @JinjavaSnippet(code = "{% include \"hubspot/styles/patches/recommended.css\" %}") + @JinjavaSnippet(code = "{% include \"hubspot/styles/patches/recommended.css\" %}"), } ) @JinjavaTextMateSnippet(code = "{% include '${1:path}' %}") public class IncludeTag implements Tag { + public static final String TAG_NAME = "include"; private static final long serialVersionUID = -8391753639874726854L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/MacroTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/MacroTag.java index 0fa60dac9..fd52f6c5a 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/MacroTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/MacroTag.java @@ -30,7 +30,7 @@ @JinjavaParam( value = "argument_names", desc = "Named arguments that are dynamically, when the macro is run" - ) + ), }, snippets = { @JinjavaSnippet( @@ -54,12 +54,13 @@ @JinjavaSnippet( desc = "The macro can then be called like a function. The macro is printed for anchor tags in CSS.", code = "a { {{ trans(\"all .2s ease-in-out\") }} }" - ) + ), } ) @JinjavaHasCodeBody @JinjavaTextMateSnippet(code = "{% macro ${1:name}(${2:values) %}\n\t$0\n{% endmacro %}") public class MacroTag implements Tag { + public static final String TAG_NAME = "macro"; private static final long serialVersionUID = 8397609322126956077L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/PrintTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/PrintTag.java index 0beb1b73f..8d1e7ef55 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/PrintTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/PrintTag.java @@ -17,10 +17,11 @@ snippets = { @JinjavaSnippet( code = "{% set string_to_echo = \"Print me\" %}\n" + "{% print string_to_echo %}" - ) + ), } ) public class PrintTag implements Tag { + public static final String TAG_NAME = "print"; private static final long serialVersionUID = -8613906103187594569L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/RawTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/RawTag.java index 53e943dde..7b06e3e8b 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/RawTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/RawTag.java @@ -15,10 +15,11 @@ code = "{% raw %}\n" + " The personalization token for a contact's first name is {{ contact.firstname }}\n" + "{% endraw %}" - ) + ), } ) public class RawTag implements Tag { + public static final String TAG_NAME = "raw"; private static final long serialVersionUID = -6963360187396753883L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/SetTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/SetTag.java index 380738650..703255fbd 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/SetTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/SetTag.java @@ -54,7 +54,7 @@ value = "expr", type = "expression", desc = "The value stored in the variable (string, number, boolean, or sequence" - ) + ), }, snippets = { @JinjavaSnippet( @@ -73,11 +73,12 @@ "{% set message %}\n" + "My name is {{ name }}\n" + "{% endset %}" - ) + ), } ) @JinjavaTextMateSnippet(code = "{% set ${1:var} = ${2:expr} %}") public class SetTag implements Tag, FlexibleTag { + public static final String TAG_NAME = "set"; public static final String IGNORED_VARIABLE_NAME = "__ignored__"; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/UnlessTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/UnlessTag.java index 9c49bc077..90afb734c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/UnlessTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/UnlessTag.java @@ -32,6 +32,7 @@ @JinjavaHasCodeBody @JinjavaTextMateSnippet(code = "{% unless ${1:condition} %}\n\t$0\n{% endunless %}") public class UnlessTag extends IfTag { + public static final String TAG_NAME = "unless"; private static final long serialVersionUID = 1562284758153763419L; diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/DeferredToken.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/DeferredToken.java index 607302fd3..963f1e346 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/DeferredToken.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/DeferredToken.java @@ -25,6 +25,7 @@ public class DeferredToken { public static class DeferredTokenBuilder { + private final Token token; private Stream usedDeferredWords; private Stream setDeferredWords; @@ -41,10 +42,9 @@ public DeferredToken build() { ? usedDeferredWords .map(prop -> prop.split("\\.", 2)[0]) .distinct() - .filter( - word -> - interpreter == null || - !(interpreter.getContext().get(word) instanceof DeferredMacroValueImpl) + .filter(word -> + interpreter == null || + !(interpreter.getContext().get(word) instanceof DeferredMacroValueImpl) ) .collect(Collectors.toSet()) : Collections.emptySet(), @@ -251,12 +251,10 @@ public void addTo(Context context) { context, usedDeferredWords .stream() - .filter( - word -> { - Object value = context.get(word); - return value != null && !(value instanceof DeferredValue); - } - ) + .filter(word -> { + Object value = context.get(word); + return value != null && !(value instanceof DeferredValue); + }) .collect(Collectors.toCollection(HashSet::new)) ); } @@ -312,37 +310,32 @@ private static void deferDuplicatePointers(Context context, String word) { .getScope() .entrySet() .stream() - .filter( - entry -> - entry.getValue() == wordValue || - ( - entry.getValue() instanceof DeferredValue && - ((DeferredValue) entry.getValue()).getOriginalValue() == wordValue - ) + .filter(entry -> + entry.getValue() == wordValue || + ( + entry.getValue() instanceof DeferredValue && + ((DeferredValue) entry.getValue()).getOriginalValue() == wordValue + ) ) - .forEach( - entry -> { - matchingEntries.add(entry); - deferredLazyReference.getOriginalValue().setReferenceKey(entry.getKey()); - } - ); + .forEach(entry -> { + matchingEntries.add(entry); + deferredLazyReference.getOriginalValue().setReferenceKey(entry.getKey()); + }); temp = temp.getParent(); } if (matchingEntries.size() > 1) { // at least one duplicate - matchingEntries.forEach( - entry -> { - if ( - deferredLazyReference - .getOriginalValue() - .getReferenceKey() - .equals(entry.getKey()) - ) { - convertToDeferredLazyReferenceSource(context, entry); - } else { - entry.setValue(deferredLazyReference.clone()); - } + matchingEntries.forEach(entry -> { + if ( + deferredLazyReference + .getOriginalValue() + .getReferenceKey() + .equals(entry.getKey()) + ) { + convertToDeferredLazyReferenceSource(context, entry); + } else { + entry.setValue(deferredLazyReference.clone()); } - ); + }); } } } @@ -355,9 +348,10 @@ private static void convertToDeferredLazyReferenceSource( if (val instanceof DeferredLazyReferenceSource) { return; } - DeferredLazyReferenceSource deferredLazyReferenceSource = DeferredLazyReferenceSource.instance( - val instanceof DeferredValue ? ((DeferredValue) val).getOriginalValue() : val - ); + DeferredLazyReferenceSource deferredLazyReferenceSource = + DeferredLazyReferenceSource.instance( + val instanceof DeferredValue ? ((DeferredValue) val).getOriginalValue() : val + ); context.replace(entry.getKey(), deferredLazyReferenceSource); entry.setValue(deferredLazyReferenceSource); @@ -370,25 +364,21 @@ private static Collection markDeferredWordsAndFindSources( ) { return wordsToDefer .stream() - .filter( - prop -> { - Object val = context.get(prop); - if (replacing) { - return ( - !(val instanceof DeferredValue) || context.getScope().containsKey(prop) - ); - } - return !(val instanceof DeferredValue); + .filter(prop -> { + Object val = context.get(prop); + if (replacing) { + return ( + !(val instanceof DeferredValue) || context.getScope().containsKey(prop) + ); } - ) + return !(val instanceof DeferredValue); + }) .filter(prop -> !context.getMetaContextVariables().contains(prop)) - .filter( - prop -> { - DeferredValue deferredValue = convertToDeferredValue(context, prop); - context.put(prop, deferredValue); - return !(deferredValue instanceof DeferredValueShadow); - } - ) + .filter(prop -> { + DeferredValue deferredValue = convertToDeferredValue(context, prop); + context.put(prop, deferredValue); + return !(deferredValue instanceof DeferredValueShadow); + }) .collect(Collectors.toList()); } diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerBlockSetTagStrategy.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerBlockSetTagStrategy.java index 124cd90e2..e4b319963 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerBlockSetTagStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerBlockSetTagStrategy.java @@ -17,6 +17,7 @@ @Beta public class EagerBlockSetTagStrategy extends EagerSetTagStrategy { + public static final EagerBlockSetTagStrategy INSTANCE = new EagerBlockSetTagStrategy( new SetTag() ); @@ -39,8 +40,8 @@ protected EagerExecutionResult getEagerExecutionResult( eagerInterpreter ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withTakeNewValue(true) .build() ); @@ -74,12 +75,13 @@ protected Optional resolveSet( true ); if (filterPos >= 0) { - EagerExecutionResult filterResult = EagerInlineSetTagStrategy.INSTANCE.getEagerExecutionResult( - tagNode, - variables, - tagNode.getHelpers().trim(), - interpreter - ); + EagerExecutionResult filterResult = + EagerInlineSetTagStrategy.INSTANCE.getEagerExecutionResult( + tagNode, + variables, + tagNode.getHelpers().trim(), + interpreter + ); if (filterResult.getResult().isFullyResolved()) { setTag.executeSet( (TagToken) tagNode.getMaster(), @@ -117,10 +119,10 @@ protected Triple getPrefixTokenAndSuffix( .add(tagNode.getSymbols().getExpressionEndWithTag()); PrefixToPreserveState prefixToPreserveState = getPrefixToPreserveState( - eagerExecutionResult, - variables, - interpreter - ) + eagerExecutionResult, + variables, + interpreter + ) .withAllInFront( EagerReconstructionUtils.handleDeferredTokenAndReconstructReferences( interpreter, @@ -168,12 +170,13 @@ protected String buildImage( int filterPos = tagNode.getHelpers().indexOf('|'); String filterSetPostfix = ""; if (filterPos >= 0) { - EagerExecutionResult filterResult = EagerInlineSetTagStrategy.INSTANCE.getEagerExecutionResult( - tagNode, - variables, - tagNode.getHelpers().trim(), - interpreter - ); + EagerExecutionResult filterResult = + EagerInlineSetTagStrategy.INSTANCE.getEagerExecutionResult( + tagNode, + variables, + tagNode.getHelpers().trim(), + interpreter + ); if (filterResult.getResult().isFullyResolved()) { setTag.executeSet( (TagToken) tagNode.getMaster(), @@ -203,12 +206,13 @@ private String runInlineStrategy( EagerExecutionResult eagerExecutionResult, JinjavaInterpreter interpreter ) { - Triple triple = EagerInlineSetTagStrategy.INSTANCE.getPrefixTokenAndSuffix( - tagNode, - variables, - eagerExecutionResult, - interpreter - ); + Triple triple = + EagerInlineSetTagStrategy.INSTANCE.getPrefixTokenAndSuffix( + tagNode, + variables, + eagerExecutionResult, + interpreter + ); if ( eagerExecutionResult.getResult().isFullyResolved() && interpreter.getContext().isDeferredExecutionMode() diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCallTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCallTag.java index b1faab124..e00d2de6c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCallTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCallTag.java @@ -63,8 +63,8 @@ public String eagerInterpret( interpreter ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withTakeNewValue(true) .withPartialMacroEvaluation( interpreter.getConfig().isNestedInterpretationEnabled() @@ -115,7 +115,7 @@ public String eagerInterpret( eagerExecutionResult.getResult(), eagerExecutionResult.getSpeculativeBindings() ) - .getPrefixToPreserveState() + .getPrefixToPreserveState() ); joiner = new LengthLimitingStringJoiner(interpreter.getConfig().getMaxOutputSize(), " "); @@ -143,8 +143,8 @@ public String eagerInterpret( eagerInterpreter -> EagerExpressionResult.fromString(renderChildren(tagNode, eagerInterpreter)), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withForceDeferredExecutionMode(true) .build() ) diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTag.java index b144b119f..41df6cf5c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTag.java @@ -51,8 +51,8 @@ public String getEagerTagImage(TagToken tagToken, JinjavaInterpreter interpreter eagerInterpreter -> EagerExpressionResolver.resolveExpression(expression, interpreter), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withTakeNewValue(true) .build() ); diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTag.java index 702a28091..87eb19292 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTag.java @@ -30,18 +30,19 @@ public String eagerInterpret( InterpretException e ) { if (hasEndTag((TagToken) tagNode.getMaster())) { - EagerExecutionResult eagerExecutionResult = EagerContextWatcher.executeInChildContext( - eagerInterpreter -> - EagerExpressionResult.fromSupplier( - () -> renderChildren(tagNode, interpreter), - eagerInterpreter - ), - interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() - .withTakeNewValue(true) - .build() - ); + EagerExecutionResult eagerExecutionResult = + EagerContextWatcher.executeInChildContext( + eagerInterpreter -> + EagerExpressionResult.fromSupplier( + () -> renderChildren(tagNode, interpreter), + eagerInterpreter + ), + interpreter, + EagerContextWatcher.EagerChildContextConfig + .newBuilder() + .withTakeNewValue(true) + .build() + ); PrefixToPreserveState prefixToPreserveState = new PrefixToPreserveState(); if (interpreter.getContext().isDeferredExecutionMode()) { prefixToPreserveState.withAll(eagerExecutionResult.getPrefixToPreserveState()); diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerExecutionResult.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerExecutionResult.java index fbe8cfabf..2637ec3dd 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerExecutionResult.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerExecutionResult.java @@ -25,6 +25,7 @@ */ @Beta public class EagerExecutionResult { + private final EagerExpressionResult result; private final Map speculativeBindings; private PrefixToPreserveState prefixToPreserveState; @@ -54,52 +55,46 @@ public PrefixToPreserveState getPrefixToPreserveState() { Collection> filteredEntries = speculativeBindings .entrySet() .stream() - .filter( - entry -> { - Object contextValue = interpreter.getContext().get(entry.getKey()); - if (contextValue instanceof DeferredLazyReferenceSource) { - ((DeferredLazyReferenceSource) contextValue).setReconstructed(true); - } - return !(contextValue instanceof DeferredValueShadow); + .filter(entry -> { + Object contextValue = interpreter.getContext().get(entry.getKey()); + if (contextValue instanceof DeferredLazyReferenceSource) { + ((DeferredLazyReferenceSource) contextValue).setReconstructed(true); } - ) + return !(contextValue instanceof DeferredValueShadow); + }) .collect(Collectors.toList()); filteredEntries .stream() .filter(entry -> !(entry.getValue() instanceof LazyReference)) - .forEach( - entry -> - EagerReconstructionUtils.hydrateBlockOrInlineSetTagRecursively( - prefixToPreserveState, - entry.getKey(), - entry.getValue(), - interpreter - ) + .forEach(entry -> + EagerReconstructionUtils.hydrateBlockOrInlineSetTagRecursively( + prefixToPreserveState, + entry.getKey(), + entry.getValue(), + interpreter + ) ); filteredEntries .stream() .filter(entry -> (entry.getValue() instanceof LazyReference)) - .map( - entry -> - new AbstractMap.SimpleImmutableEntry<>( - entry.getKey(), - PyishObjectMapper.getAsPyishString(entry.getValue()) - ) + .map(entry -> + new AbstractMap.SimpleImmutableEntry<>( + entry.getKey(), + PyishObjectMapper.getAsPyishString(entry.getValue()) + ) ) - .sorted( - (a, b) -> - a.getValue().equals(b.getKey()) ? 1 : b.getValue().equals(a.getKey()) ? -1 : 0 + .sorted((a, b) -> + a.getValue().equals(b.getKey()) ? 1 : b.getValue().equals(a.getKey()) ? -1 : 0 ) - .forEach( - entry -> - prefixToPreserveState.put( - entry.getKey(), - buildSetTag( - Collections.singletonMap(entry.getKey(), entry.getValue()), - interpreter, - false - ) + .forEach(entry -> + prefixToPreserveState.put( + entry.getKey(), + buildSetTag( + Collections.singletonMap(entry.getKey(), entry.getValue()), + interpreter, + false ) + ) ); return prefixToPreserveState; } diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerForTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerForTag.java index 50ec3f5f2..a42738704 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerForTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerForTag.java @@ -46,8 +46,8 @@ public String innerInterpret(TagNode tagNode, JinjavaInterpreter interpreter) { interpreter ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withCheckForContextChanges(!interpreter.getContext().isDeferredExecutionMode()) .build() ); @@ -184,12 +184,13 @@ private EagerExecutionResult runLoopOnce( List loopVars = getTag() .getLoopVarsAndExpression((TagToken) tagNode.getMaster()) .getLeft(); - Set removedMetaContextVariables = EagerReconstructionUtils.removeMetaContextVariables( - loopVars.stream(), - interpreter.getContext() - ); - loopVars.forEach( - var -> interpreter.getContext().put(var, DeferredValue.instance()) + Set removedMetaContextVariables = + EagerReconstructionUtils.removeMetaContextVariables( + loopVars.stream(), + interpreter.getContext() + ); + loopVars.forEach(var -> + interpreter.getContext().put(var, DeferredValue.instance()) ); try { return EagerExpressionResult.fromString( @@ -203,8 +204,8 @@ private EagerExecutionResult runLoopOnce( } }, interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withForceDeferredExecutionMode(true) .build() ); @@ -217,10 +218,8 @@ public String getEagerTagImage(TagToken tagToken, JinjavaInterpreter interpreter List loopVars = loopVarsAndExpression.getLeft(); String loopExpression = loopVarsAndExpression.getRight(); - EagerExpressionResult eagerExpressionResult = EagerExpressionResolver.resolveExpression( - loopExpression, - interpreter - ); + EagerExpressionResult eagerExpressionResult = + EagerExpressionResolver.resolveExpression(loopExpression, interpreter); LengthLimitingStringJoiner joiner = new LengthLimitingStringJoiner( interpreter.getConfig().getMaxOutputSize(), @@ -234,11 +233,12 @@ public String getEagerTagImage(TagToken tagToken, JinjavaInterpreter interpreter .add("in") .add(eagerExpressionResult.toString()) .add(tagToken.getSymbols().getExpressionEndWithTag()); - PrefixToPreserveState prefixToPreserveState = EagerReconstructionUtils.hydrateReconstructionFromContextBeforeDeferring( - new PrefixToPreserveState(), - eagerExpressionResult.getDeferredWords(), - interpreter - ); + PrefixToPreserveState prefixToPreserveState = + EagerReconstructionUtils.hydrateReconstructionFromContextBeforeDeferring( + new PrefixToPreserveState(), + eagerExpressionResult.getDeferredWords(), + interpreter + ); prefixToPreserveState.withAllInFront( EagerReconstructionUtils.handleDeferredTokenAndReconstructReferences( interpreter, diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTag.java index 284dc22f4..937a4ca17 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTag.java @@ -40,21 +40,19 @@ public String getEagerTagImage(TagToken tagToken, JinjavaInterpreter interpreter } catch (DeferredValueException e) { imports .values() - .forEach( - value -> { - MacroFunction deferredMacro = new MacroFunction( - null, - value, - null, - false, - null, - tagToken.getLineNumber(), - tagToken.getStartPosition() - ); - deferredMacro.setDeferred(true); - interpreter.getContext().addGlobalMacro(deferredMacro); - } - ); + .forEach(value -> { + MacroFunction deferredMacro = new MacroFunction( + null, + value, + null, + false, + null, + tagToken.getLineNumber(), + tagToken.getStartPosition() + ); + deferredMacro.setDeferred(true); + interpreter.getContext().addGlobalMacro(deferredMacro); + }); return ( EagerReconstructionUtils.buildBlockOrInlineSetTag( RelativePathResolver.CURRENT_PATH_CONTEXT_KEY, @@ -138,10 +136,9 @@ private static Map getNewToOldWithoutMacros( .entrySet() .stream() .filter(e -> !e.getKey().equals(e.getValue())) - .filter( - e -> - interpreter.getContext().containsKey(e.getValue()) || - !interpreter.getContext().isGlobalMacro(e.getValue()) + .filter(e -> + interpreter.getContext().containsKey(e.getValue()) || + !interpreter.getContext().isGlobalMacro(e.getValue()) ) .collect(Collectors.toMap(Entry::getValue, Entry::getKey)); // flip order } diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTag.java index d9bf720cc..202789bc0 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTag.java @@ -61,8 +61,8 @@ public String eagerInterpret( eagerRenderBranches(tagNode, eagerInterpreter, e) ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withForceDeferredExecutionMode(true) .build() ) @@ -114,8 +114,8 @@ public String eagerRenderBranches( evaluateBranch(tagNode, finalBranchStart, branchEnd, interpreter) ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withForceDeferredExecutionMode(true) .build() ); @@ -154,10 +154,11 @@ public String eagerRenderBranches( } branchStart = branchEnd + 1; } - PrefixToPreserveState prefixToPreserveState = EagerReconstructionUtils.deferWordsAndReconstructReferences( - interpreter, - bindingsToDefer - ); + PrefixToPreserveState prefixToPreserveState = + EagerReconstructionUtils.deferWordsAndReconstructReferences( + interpreter, + bindingsToDefer + ); return prefixToPreserveState + sb.toString(); } diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTag.java index b0054c47e..7bfa805f4 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTag.java @@ -30,9 +30,8 @@ public String innerInterpret(TagNode tagNode, JinjavaInterpreter interpreter) { tagNode.getStartPosition() ); templateFile = interpreter.resolveResourceLocation(templateFile); - final String initialPathSetter = EagerImportingStrategyFactory.getSetTagForCurrentPath( - interpreter - ); + final String initialPathSetter = + EagerImportingStrategyFactory.getSetTagForCurrentPath(interpreter); final String newPathSetter = EagerReconstructionUtils.buildBlockOrInlineSetTag( RelativePathResolver.CURRENT_PATH_CONTEXT_KEY, templateFile, diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerInlineSetTagStrategy.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerInlineSetTagStrategy.java index d40a94d85..50c7682c9 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerInlineSetTagStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerInlineSetTagStrategy.java @@ -18,6 +18,7 @@ @Beta public class EagerInlineSetTagStrategy extends EagerSetTagStrategy { + public static final EagerInlineSetTagStrategy INSTANCE = new EagerInlineSetTagStrategy( new SetTag() ); @@ -37,8 +38,8 @@ public EagerExecutionResult getEagerExecutionResult( eagerInterpreter -> EagerExpressionResolver.resolveExpression('[' + expression + ']', interpreter), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withTakeNewValue(true) .build() ); diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerPrintTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerPrintTag.java index ee3bcb12c..fe48831e5 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerPrintTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerPrintTag.java @@ -57,8 +57,8 @@ public static String interpretExpression( EagerExecutionResult eagerExecutionResult = EagerContextWatcher.executeInChildContext( eagerInterpreter -> EagerExpressionResolver.resolveExpression(expr, interpreter), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withTakeNewValue(true) .build() ); diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagStrategy.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagStrategy.java index 8ce0faac3..078ed6a4f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagStrategy.java @@ -18,6 +18,7 @@ @Beta public abstract class EagerSetTagStrategy { + protected final SetTag setTag; protected EagerSetTagStrategy(SetTag setTag) { @@ -159,9 +160,8 @@ public static String getSuffixToPreserveState( return ""; } StringBuilder suffixToPreserveState = new StringBuilder(); - Optional maybeTemporaryImportAlias = AliasedEagerImportingStrategy.getTemporaryImportAlias( - interpreter.getContext() - ); + Optional maybeTemporaryImportAlias = + AliasedEagerImportingStrategy.getTemporaryImportAlias(interpreter.getContext()); if ( maybeTemporaryImportAlias.isPresent() && !AliasedEagerImportingStrategy.isTemporaryImportAlias(variables) && diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecorator.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecorator.java index c6ff85dbd..c6b73218f 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecorator.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecorator.java @@ -23,6 +23,7 @@ @Beta public abstract class EagerTagDecorator implements Tag { + private final T tag; public EagerTagDecorator(T tag) { @@ -123,8 +124,8 @@ public String eagerInterpret( renderChildren(tagNode, eagerInterpreter) ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withForceDeferredExecutionMode(true) .build() ) @@ -216,10 +217,11 @@ public String getEagerTagImage(TagToken tagToken, JinjavaInterpreter interpreter .add(tagToken.getSymbols().getExpressionStartWithTag()) .add(tagToken.getTagName()); - EagerExpressionResult eagerExpressionResult = EagerExpressionResolver.resolveExpression( - tagToken.getHelpers().trim(), - interpreter - ); + EagerExpressionResult eagerExpressionResult = + EagerExpressionResolver.resolveExpression( + tagToken.getHelpers().trim(), + interpreter + ); String resolvedString = eagerExpressionResult.toString(); if (StringUtils.isNotBlank(resolvedString)) { joiner.add(resolvedString); diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactory.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactory.java index b6321dc50..b019e68cf 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactory.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactory.java @@ -29,20 +29,22 @@ @Beta public class EagerTagFactory { - public static final Map, Class>> EAGER_TAG_OVERRIDES = ImmutableMap - ., Class>>builder() - .put(SetTag.class, EagerSetTag.class) - .put(DoTag.class, EagerDoTag.class) - .put(PrintTag.class, EagerPrintTag.class) - .put(FromTag.class, EagerFromTag.class) - .put(ImportTag.class, EagerImportTag.class) - .put(IncludeTag.class, EagerIncludeTag.class) - .put(ForTag.class, EagerForTag.class) - .put(CycleTag.class, EagerCycleTag.class) - .put(IfTag.class, EagerIfTag.class) - .put(UnlessTag.class, EagerUnlessTag.class) - .put(CallTag.class, EagerCallTag.class) - .build(); + + public static final Map, Class>> EAGER_TAG_OVERRIDES = + ImmutableMap + ., Class>>builder() + .put(SetTag.class, EagerSetTag.class) + .put(DoTag.class, EagerDoTag.class) + .put(PrintTag.class, EagerPrintTag.class) + .put(FromTag.class, EagerFromTag.class) + .put(ImportTag.class, EagerImportTag.class) + .put(IncludeTag.class, EagerIncludeTag.class) + .put(ForTag.class, EagerForTag.class) + .put(CycleTag.class, EagerCycleTag.class) + .put(IfTag.class, EagerIfTag.class) + .put(UnlessTag.class, EagerUnlessTag.class) + .put(CallTag.class, EagerCallTag.class) + .build(); // These classes don't need an eager decorator. public static final Set> TAG_CLASSES_TO_SKIP = ImmutableSet .>builder() @@ -63,9 +65,8 @@ public static Optional> getEagerTagDecorato if (TAG_CLASSES_TO_SKIP.contains(clazz)) { return Optional.empty(); } - Class> eagerOverrideClass = EAGER_TAG_OVERRIDES.get( - clazz - ); + Class> eagerOverrideClass = + EAGER_TAG_OVERRIDES.get(clazz); if (eagerOverrideClass != null) { EagerTagDecorator decorator = eagerOverrideClass .getDeclaredConstructor(clazz) diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java index 9558c4b4b..c96454701 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java @@ -22,6 +22,7 @@ import java.util.stream.Stream; public class AliasedEagerImportingStrategy implements EagerImportingStrategy { + private static final String TEMPORARY_IMPORT_ALIAS_PREFIX = "__temp_import_alias_"; private static final String TEMPORARY_IMPORT_ALIAS_FORMAT = TEMPORARY_IMPORT_ALIAS_PREFIX + "%d__"; @@ -118,12 +119,11 @@ public void integrateChild(JinjavaInterpreter child) { childBindings .entrySet() .stream() - .filter( - entry -> - !( - entry.getKey().equals(Context.GLOBAL_MACROS_SCOPE_KEY) || - entry.getKey().equals(Context.IMPORT_RESOURCE_ALIAS_KEY) - ) + .filter(entry -> + !( + entry.getKey().equals(Context.GLOBAL_MACROS_SCOPE_KEY) || + entry.getKey().equals(Context.IMPORT_RESOURCE_ALIAS_KEY) + ) ) .forEach(entry -> mapForCurrentContextAlias.put(entry.getKey(), entry.getValue())); } diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategy.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategy.java index a149e3b2d..77ac4ab7c 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategy.java @@ -22,20 +22,18 @@ static String getSetTagForDeferredChildBindings( return childBindings .entrySet() .stream() - .filter( - entry -> - entry.getValue() instanceof DeferredValue && - ((DeferredValue) entry.getValue()).getOriginalValue() != null + .filter(entry -> + entry.getValue() instanceof DeferredValue && + ((DeferredValue) entry.getValue()).getOriginalValue() != null ) .filter(entry -> !interpreter.getContext().containsKey(entry.getKey())) .filter(entry -> !entry.getKey().equals(currentImportAlias)) - .map( - entry -> - EagerReconstructionUtils.buildBlockOrInlineSetTag( // don't register deferred token so that we don't defer them on higher context scopes; they only exist in the child scope - entry.getKey(), - ((DeferredValue) entry.getValue()).getOriginalValue(), - interpreter - ) + .map(entry -> + EagerReconstructionUtils.buildBlockOrInlineSetTag( // don't register deferred token so that we don't defer them on higher context scopes; they only exist in the child scope + entry.getKey(), + ((DeferredValue) entry.getValue()).getOriginalValue(), + interpreter + ) ) .collect(Collectors.joining()); } diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategyFactory.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategyFactory.java index cb3a227ba..c8833852b 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategyFactory.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/EagerImportingStrategyFactory.java @@ -34,11 +34,10 @@ public static String getSetTagForCurrentPath(JinjavaInterpreter interpreter) { .getContext() .getCurrentPathStack() .peek() - .orElseGet( - () -> - (String) interpreter - .getContext() - .getOrDefault(RelativePathResolver.CURRENT_PATH_CONTEXT_KEY, "") + .orElseGet(() -> + (String) interpreter + .getContext() + .getOrDefault(RelativePathResolver.CURRENT_PATH_CONTEXT_KEY, "") ), interpreter ); diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/FlatEagerImportingStrategy.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/FlatEagerImportingStrategy.java index 7004d3e11..6a596d3ba 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/FlatEagerImportingStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/FlatEagerImportingStrategy.java @@ -14,6 +14,7 @@ import java.util.stream.Collectors; public class FlatEagerImportingStrategy implements EagerImportingStrategy { + private final ImportingData importingData; @VisibleForTesting @@ -46,17 +47,15 @@ public void integrateChild(JinjavaInterpreter child) { childBindings.remove(Context.GLOBAL_MACROS_SCOPE_KEY); childBindings.remove(Context.IMPORT_RESOURCE_ALIAS_KEY); - Map childBindingsWithoutImportResourcePath = ImportTag.getChildBindingsWithoutImportResourcePath( - childBindings - ); + Map childBindingsWithoutImportResourcePath = + ImportTag.getChildBindingsWithoutImportResourcePath(childBindings); if (parent.getContext().isDeferredExecutionMode()) { childBindingsWithoutImportResourcePath .keySet() - .forEach( - key -> - parent - .getContext() - .put(key, DeferredValue.instance(parent.getContext().get(key))) + .forEach(key -> + parent + .getContext() + .put(key, DeferredValue.instance(parent.getContext().get(key))) ); } else { parent.getContext().putAll(childBindingsWithoutImportResourcePath); @@ -81,9 +80,8 @@ public String getFinalOutput( .getSessionBindings() .entrySet() .stream() - .filter( - entry -> - !(entry.getValue() instanceof DeferredValue) && entry.getValue() != null + .filter(entry -> + !(entry.getValue() instanceof DeferredValue) && entry.getValue() != null ) .filter(entry -> !metaContextVariables.contains(entry.getKey())) .collect(Collectors.toMap(Entry::getKey, entry -> "")), diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/ImportingData.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/ImportingData.java index 95b9de1b6..579b3bff6 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/ImportingData.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/ImportingData.java @@ -5,6 +5,7 @@ import java.util.List; public class ImportingData { + private final JinjavaInterpreter originalInterpreter; private final TagToken tagToken; private final List helpers; diff --git a/src/main/java/com/hubspot/jinjava/loader/CascadingResourceLocator.java b/src/main/java/com/hubspot/jinjava/loader/CascadingResourceLocator.java index 61c5898b9..a32b28950 100644 --- a/src/main/java/com/hubspot/jinjava/loader/CascadingResourceLocator.java +++ b/src/main/java/com/hubspot/jinjava/loader/CascadingResourceLocator.java @@ -6,6 +6,7 @@ import java.util.Arrays; public class CascadingResourceLocator implements ResourceLocator { + private Iterable locators; public CascadingResourceLocator(ResourceLocator... locators) { @@ -17,8 +18,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { for (ResourceLocator locator : locators) { try { return locator.getString(fullName, encoding, interpreter); diff --git a/src/main/java/com/hubspot/jinjava/loader/ClasspathResourceLocator.java b/src/main/java/com/hubspot/jinjava/loader/ClasspathResourceLocator.java index 57c77a199..9989c608e 100644 --- a/src/main/java/com/hubspot/jinjava/loader/ClasspathResourceLocator.java +++ b/src/main/java/com/hubspot/jinjava/loader/ClasspathResourceLocator.java @@ -12,8 +12,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { try { return Resources.toString(Resources.getResource(fullName), encoding); } catch (IllegalArgumentException e) { diff --git a/src/main/java/com/hubspot/jinjava/loader/FileLocator.java b/src/main/java/com/hubspot/jinjava/loader/FileLocator.java index e1cb39458..de02a7173 100644 --- a/src/main/java/com/hubspot/jinjava/loader/FileLocator.java +++ b/src/main/java/com/hubspot/jinjava/loader/FileLocator.java @@ -23,6 +23,7 @@ import java.nio.charset.Charset; public class FileLocator implements ResourceLocator { + private File baseDir; /** diff --git a/src/main/java/com/hubspot/jinjava/loader/RelativePathResolver.java b/src/main/java/com/hubspot/jinjava/loader/RelativePathResolver.java index 9fb17a98e..77690aef5 100644 --- a/src/main/java/com/hubspot/jinjava/loader/RelativePathResolver.java +++ b/src/main/java/com/hubspot/jinjava/loader/RelativePathResolver.java @@ -5,6 +5,7 @@ import java.nio.file.Paths; public class RelativePathResolver implements LocationResolver { + public static final String CURRENT_PATH_CONTEXT_KEY = "current_path"; @Override @@ -14,9 +15,8 @@ public String resolve(String path, JinjavaInterpreter interpreter) { .getContext() .getCurrentPathStack() .peek() - .orElseGet( - () -> - (String) interpreter.getContext().getOrDefault(CURRENT_PATH_CONTEXT_KEY, "") + .orElseGet(() -> + (String) interpreter.getContext().getOrDefault(CURRENT_PATH_CONTEXT_KEY, "") ); Path templatePath = Paths.get(parentPath); diff --git a/src/main/java/com/hubspot/jinjava/loader/ResourceNotFoundException.java b/src/main/java/com/hubspot/jinjava/loader/ResourceNotFoundException.java index c8ea6416d..2dbee08b9 100644 --- a/src/main/java/com/hubspot/jinjava/loader/ResourceNotFoundException.java +++ b/src/main/java/com/hubspot/jinjava/loader/ResourceNotFoundException.java @@ -3,6 +3,7 @@ import java.io.IOException; public class ResourceNotFoundException extends IOException { + private static final long serialVersionUID = 1L; public ResourceNotFoundException(String message) { diff --git a/src/main/java/com/hubspot/jinjava/mode/DefaultExecutionMode.java b/src/main/java/com/hubspot/jinjava/mode/DefaultExecutionMode.java index 24b652c8c..99f28b6c5 100644 --- a/src/main/java/com/hubspot/jinjava/mode/DefaultExecutionMode.java +++ b/src/main/java/com/hubspot/jinjava/mode/DefaultExecutionMode.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.mode; public class DefaultExecutionMode implements ExecutionMode { + private static final ExecutionMode INSTANCE = new DefaultExecutionMode(); private DefaultExecutionMode() {} diff --git a/src/main/java/com/hubspot/jinjava/mode/EagerExecutionMode.java b/src/main/java/com/hubspot/jinjava/mode/EagerExecutionMode.java index 3d8055c0b..00276918a 100644 --- a/src/main/java/com/hubspot/jinjava/mode/EagerExecutionMode.java +++ b/src/main/java/com/hubspot/jinjava/mode/EagerExecutionMode.java @@ -9,16 +9,18 @@ import java.util.Optional; public class EagerExecutionMode implements ExecutionMode { + private static final ExecutionMode INSTANCE = new EagerExecutionMode(); // These meta context variables should never be removed from the set of meta context variables - public static final ImmutableSet STATIC_META_CONTEXT_VARIABLES = ImmutableSet.of( - Context.GLOBAL_MACROS_SCOPE_KEY, - Context.IMPORT_RESOURCE_PATH_KEY, - Context.DEFERRED_IMPORT_RESOURCE_PATH_KEY, - Context.IMPORT_RESOURCE_ALIAS_KEY, - RelativePathResolver.CURRENT_PATH_CONTEXT_KEY - ); + public static final ImmutableSet STATIC_META_CONTEXT_VARIABLES = + ImmutableSet.of( + Context.GLOBAL_MACROS_SCOPE_KEY, + Context.IMPORT_RESOURCE_PATH_KEY, + Context.DEFERRED_IMPORT_RESOURCE_PATH_KEY, + Context.IMPORT_RESOURCE_ALIAS_KEY, + RelativePathResolver.CURRENT_PATH_CONTEXT_KEY + ); protected EagerExecutionMode() {} diff --git a/src/main/java/com/hubspot/jinjava/mode/NonRevertingEagerExecutionMode.java b/src/main/java/com/hubspot/jinjava/mode/NonRevertingEagerExecutionMode.java index 2e180584f..536e2c0ff 100644 --- a/src/main/java/com/hubspot/jinjava/mode/NonRevertingEagerExecutionMode.java +++ b/src/main/java/com/hubspot/jinjava/mode/NonRevertingEagerExecutionMode.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.mode; public class NonRevertingEagerExecutionMode extends EagerExecutionMode { + private static final ExecutionMode INSTANCE = new NonRevertingEagerExecutionMode(); protected NonRevertingEagerExecutionMode() {} diff --git a/src/main/java/com/hubspot/jinjava/mode/PreserveRawExecutionMode.java b/src/main/java/com/hubspot/jinjava/mode/PreserveRawExecutionMode.java index ca24d5098..152cf67dd 100644 --- a/src/main/java/com/hubspot/jinjava/mode/PreserveRawExecutionMode.java +++ b/src/main/java/com/hubspot/jinjava/mode/PreserveRawExecutionMode.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.mode; public class PreserveRawExecutionMode implements ExecutionMode { + private static final ExecutionMode INSTANCE = new PreserveRawExecutionMode(); private PreserveRawExecutionMode() {} diff --git a/src/main/java/com/hubspot/jinjava/objects/Namespace.java b/src/main/java/com/hubspot/jinjava/objects/Namespace.java index 67e8b8125..4069cf722 100644 --- a/src/main/java/com/hubspot/jinjava/objects/Namespace.java +++ b/src/main/java/com/hubspot/jinjava/objects/Namespace.java @@ -24,8 +24,8 @@ public Namespace(Map map, int maxSize) { @SuppressWarnings("unchecked") public T appendPyishString(T appendable) throws IOException { - return (T) PyishSerializable - .super.appendPyishString((T) appendable.append("namespace(")) + return (T) PyishSerializable.super + .appendPyishString((T) appendable.append("namespace(")) .append(')'); } } diff --git a/src/main/java/com/hubspot/jinjava/objects/SafeString.java b/src/main/java/com/hubspot/jinjava/objects/SafeString.java index bc4bd77a1..2d2d0fc58 100644 --- a/src/main/java/com/hubspot/jinjava/objects/SafeString.java +++ b/src/main/java/com/hubspot/jinjava/objects/SafeString.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonValue; public class SafeString { + private final String value; public SafeString(String value) { diff --git a/src/main/java/com/hubspot/jinjava/objects/collections/PyList.java b/src/main/java/com/hubspot/jinjava/objects/collections/PyList.java index e710bf316..30a99f8d9 100644 --- a/src/main/java/com/hubspot/jinjava/objects/collections/PyList.java +++ b/src/main/java/com/hubspot/jinjava/objects/collections/PyList.java @@ -9,6 +9,7 @@ import java.util.Objects; public class PyList extends ForwardingList implements PyWrapper { + private boolean computingHashCode = false; private final List list; diff --git a/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java b/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java index 96954f06e..09a018d81 100644 --- a/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java +++ b/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java @@ -7,6 +7,7 @@ import java.util.Set; public class PyMap extends ForwardingMap implements PyWrapper { + private boolean computingHashCode = false; private final Map map; diff --git a/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyList.java b/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyList.java index 13147e95c..ef2830631 100644 --- a/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyList.java +++ b/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyList.java @@ -12,6 +12,7 @@ import javax.annotation.Nonnull; public class SizeLimitingPyList extends PyList implements PyWrapper { + private int maxSize; private boolean hasWarned; diff --git a/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyMap.java b/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyMap.java index f688ac568..e4c7b0b16 100644 --- a/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyMap.java +++ b/src/main/java/com/hubspot/jinjava/objects/collections/SizeLimitingPyMap.java @@ -10,6 +10,7 @@ import java.util.Map; public class SizeLimitingPyMap extends PyMap implements PyWrapper { + private int maxSize; private boolean hasWarned; diff --git a/src/main/java/com/hubspot/jinjava/objects/date/FixedDateTimeProvider.java b/src/main/java/com/hubspot/jinjava/objects/date/FixedDateTimeProvider.java index 75bc71ce8..5eae9cabe 100644 --- a/src/main/java/com/hubspot/jinjava/objects/date/FixedDateTimeProvider.java +++ b/src/main/java/com/hubspot/jinjava/objects/date/FixedDateTimeProvider.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.objects.date; public class FixedDateTimeProvider implements DateTimeProvider { + private long currentTimeMillis; public FixedDateTimeProvider(long currentTimeMillis) { diff --git a/src/main/java/com/hubspot/jinjava/objects/date/FormattedDate.java b/src/main/java/com/hubspot/jinjava/objects/date/FormattedDate.java index 0d964e4aa..3f31b88bc 100644 --- a/src/main/java/com/hubspot/jinjava/objects/date/FormattedDate.java +++ b/src/main/java/com/hubspot/jinjava/objects/date/FormattedDate.java @@ -3,6 +3,7 @@ import java.time.ZonedDateTime; public class FormattedDate { + private final String format; private final String language; private final ZonedDateTime date; diff --git a/src/main/java/com/hubspot/jinjava/objects/date/InvalidDateFormatException.java b/src/main/java/com/hubspot/jinjava/objects/date/InvalidDateFormatException.java index a8e03b146..ac09a4cf2 100644 --- a/src/main/java/com/hubspot/jinjava/objects/date/InvalidDateFormatException.java +++ b/src/main/java/com/hubspot/jinjava/objects/date/InvalidDateFormatException.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.objects.date; public class InvalidDateFormatException extends IllegalArgumentException { + private static final long serialVersionUID = -1577669116818659228L; private final String format; diff --git a/src/main/java/com/hubspot/jinjava/objects/date/PyishDate.java b/src/main/java/com/hubspot/jinjava/objects/date/PyishDate.java index f67c80f11..498bf4cb7 100644 --- a/src/main/java/com/hubspot/jinjava/objects/date/PyishDate.java +++ b/src/main/java/com/hubspot/jinjava/objects/date/PyishDate.java @@ -25,6 +25,7 @@ public final class PyishDate extends Date implements Serializable, PyWrapper, PyishSerializable { + private static final long serialVersionUID = 1L; public static final String PYISH_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String FULL_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; @@ -54,14 +55,13 @@ public PyishDate(Long epochMillis) { Instant.ofEpochMilli( Optional .ofNullable(epochMillis) - .orElseGet( - () -> - JinjavaInterpreter - .getCurrentMaybe() - .map(JinjavaInterpreter::getConfig) - .map(JinjavaConfig::getDateTimeProvider) - .map(DateTimeProvider::getCurrentTimeMillis) - .orElseGet(System::currentTimeMillis) + .orElseGet(() -> + JinjavaInterpreter + .getCurrentMaybe() + .map(JinjavaInterpreter::getConfig) + .map(JinjavaConfig::getDateTimeProvider) + .map(DateTimeProvider::getCurrentTimeMillis) + .orElseGet(System::currentTimeMillis) ) ), ZoneOffset.UTC diff --git a/src/main/java/com/hubspot/jinjava/objects/date/StrftimeFormatter.java b/src/main/java/com/hubspot/jinjava/objects/date/StrftimeFormatter.java index 0f4a2da45..d36229872 100644 --- a/src/main/java/com/hubspot/jinjava/objects/date/StrftimeFormatter.java +++ b/src/main/java/com/hubspot/jinjava/objects/date/StrftimeFormatter.java @@ -21,6 +21,7 @@ * @author jstehler */ public class StrftimeFormatter { + public static final String DEFAULT_DATE_FORMAT = "%H:%M / %d-%m-%Y"; /* * Mapped from http://strftime.org/, http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html @@ -106,12 +107,11 @@ public static DateTimeFormatter toDateTimeFormatter(String strftime) { Optional .ofNullable(components.get(finalChar)) - .orElseThrow( - () -> - new InvalidDateFormatException( - strftime, - String.format("unknown format code '%s'", finalChar) - ) + .orElseThrow(() -> + new InvalidDateFormatException( + strftime, + String.format("unknown format code '%s'", finalChar) + ) ) .append(builder, stripLeadingZero); } diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/BothCasingBeanSerializer.java b/src/main/java/com/hubspot/jinjava/objects/serialization/BothCasingBeanSerializer.java index f966065be..ad7e0b5e8 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/BothCasingBeanSerializer.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/BothCasingBeanSerializer.java @@ -7,6 +7,7 @@ import java.io.IOException; public class BothCasingBeanSerializer extends JsonSerializer { + private final JsonSerializer orignalSerializer; private BothCasingBeanSerializer(JsonSerializer jsonSerializer) { @@ -24,8 +25,7 @@ public void serialize( T value, JsonGenerator gen, SerializerProvider serializerProvider - ) - throws IOException { + ) throws IOException { if ( Boolean.TRUE.equals( serializerProvider.getAttribute(PyishObjectMapper.ALLOW_SNAKE_CASE_ATTRIBUTE) diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingJsonProcessingException.java b/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingJsonProcessingException.java index 7cacf2f95..bcd6789e2 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingJsonProcessingException.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingJsonProcessingException.java @@ -5,6 +5,7 @@ @Beta public class LengthLimitingJsonProcessingException extends JsonProcessingException { + private final int maxSize; private final int attemptedSize; diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingWriter.java b/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingWriter.java index c624aecb2..84f6281a4 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingWriter.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/LengthLimitingWriter.java @@ -8,6 +8,7 @@ @Beta public class LengthLimitingWriter extends Writer { + public static final String REMAINING_LENGTH_ATTRIBUTE = "remainingLength"; private final CharArrayWriter charArrayWriter; private final AtomicInteger remainingLength; diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/MapEntrySerializer.java b/src/main/java/com/hubspot/jinjava/objects/serialization/MapEntrySerializer.java index 4c5a2ecdf..69c90aa68 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/MapEntrySerializer.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/MapEntrySerializer.java @@ -12,6 +12,7 @@ @Beta public class MapEntrySerializer extends JsonSerializer> { + public static final MapEntrySerializer INSTANCE = new MapEntrySerializer(); private MapEntrySerializer() {} @@ -21,8 +22,7 @@ public void serialize( Entry entry, JsonGenerator jsonGenerator, SerializerProvider serializerProvider - ) - throws IOException { + ) throws IOException { AtomicInteger remainingLength = (AtomicInteger) serializerProvider.getAttribute( LengthLimitingWriter.REMAINING_LENGTH_ATTRIBUTE ); diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishBeanSerializerModifier.java b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishBeanSerializerModifier.java index bb1a1d68f..255c34cdf 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishBeanSerializerModifier.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishBeanSerializerModifier.java @@ -10,7 +10,9 @@ @Beta public class PyishBeanSerializerModifier extends BeanSerializerModifier { - public static final PyishBeanSerializerModifier INSTANCE = new PyishBeanSerializerModifier(); + + public static final PyishBeanSerializerModifier INSTANCE = + new PyishBeanSerializerModifier(); private PyishBeanSerializerModifier() {} diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishCharacterEscapes.java b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishCharacterEscapes.java index d9cf36ea7..f7207ec1d 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishCharacterEscapes.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishCharacterEscapes.java @@ -8,6 +8,7 @@ @Beta public class PyishCharacterEscapes extends CharacterEscapes { + public static final PyishCharacterEscapes INSTANCE = new PyishCharacterEscapes(); private final int[] asciiEscapes; diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapper.java b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapper.java index 2cb00da50..d57398d7c 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapper.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapper.java @@ -22,6 +22,7 @@ @Beta public class PyishObjectMapper { + public static final ObjectWriter PYISH_OBJECT_WRITER; public static final ObjectWriter SNAKE_CASE_PYISH_OBJECT_WRITER; public static final String ALLOW_SNAKE_CASE_ATTRIBUTE = "allowSnakeCase"; @@ -43,7 +44,7 @@ private static ObjectMapper getPyishObjectMapper() { ObjectMapper mapper = new ObjectMapper( new JsonFactoryBuilder().quoteChar('\'').build() ) - .registerModule( + .registerModule( new SimpleModule() .setSerializerModifier(PyishBeanSerializerModifier.INSTANCE) .addSerializer(PyishSerializable.class, PyishSerializer.INSTANCE) @@ -95,9 +96,8 @@ public static String getAsPyishStringOrThrow(Object val, boolean forOutput) throws IOException { boolean useSnakeCaseMappingOverride = JinjavaInterpreter .getCurrentMaybe() - .map( - interpreter -> - interpreter.getConfig().getLegacyOverrides().isUseSnakeCasePropertyNaming() + .map(interpreter -> + interpreter.getConfig().getLegacyOverrides().isUseSnakeCasePropertyNaming() ) .orElse(false); ObjectWriter objectWriter = useSnakeCaseMappingOverride @@ -136,8 +136,7 @@ public void serialize( Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider - ) - throws IOException { + ) throws IOException { jsonGenerator.writeFieldName(""); } } diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishPrettyPrinter.java b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishPrettyPrinter.java index 70b66f700..b74ab5afe 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishPrettyPrinter.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishPrettyPrinter.java @@ -7,6 +7,7 @@ @Beta public class PyishPrettyPrinter extends DefaultPrettyPrinter { + public static final PyishPrettyPrinter INSTANCE = new PyishPrettyPrinter(); @Override diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializable.java b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializable.java index 374e05377..16c0bd353 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializable.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializable.java @@ -48,17 +48,16 @@ default T appendPyishString(T appendable) default void writePyishSelf( JsonGenerator jsonGenerator, SerializerProvider serializerProvider - ) - throws IOException { + ) throws IOException { AtomicInteger remainingLength = (AtomicInteger) serializerProvider.getAttribute( LengthLimitingWriter.REMAINING_LENGTH_ATTRIBUTE ); jsonGenerator.writeRawValue( appendPyishString( - remainingLength == null - ? new StringBuilder() - : new LengthLimitingStringBuilder(remainingLength.get()) - ) + remainingLength == null + ? new StringBuilder() + : new LengthLimitingStringBuilder(remainingLength.get()) + ) .toString() ); } diff --git a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializer.java b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializer.java index 5ec1ffe3a..f4c7a9b6d 100644 --- a/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializer.java +++ b/src/main/java/com/hubspot/jinjava/objects/serialization/PyishSerializer.java @@ -10,6 +10,7 @@ @Beta public class PyishSerializer extends JsonSerializer { + public static final PyishSerializer INSTANCE = new PyishSerializer(); private PyishSerializer() {} @@ -18,8 +19,7 @@ public void serialize( Object object, JsonGenerator jsonGenerator, SerializerProvider serializerProvider - ) - throws IOException { + ) throws IOException { jsonGenerator.setPrettyPrinter(PyishPrettyPrinter.INSTANCE); jsonGenerator.setCharacterEscapes(PyishCharacterEscapes.INSTANCE); String string; diff --git a/src/main/java/com/hubspot/jinjava/random/DeferredRandomNumberGenerator.java b/src/main/java/com/hubspot/jinjava/random/DeferredRandomNumberGenerator.java index 4394a88e4..d7db11119 100644 --- a/src/main/java/com/hubspot/jinjava/random/DeferredRandomNumberGenerator.java +++ b/src/main/java/com/hubspot/jinjava/random/DeferredRandomNumberGenerator.java @@ -10,6 +10,7 @@ * A random number generator that throws {@link com.hubspot.jinjava.interpret.DeferredValueException} for all supported methods. */ public class DeferredRandomNumberGenerator extends Random { + private static final String EXCEPTION_MESSAGE = "Generating random number"; @Override diff --git a/src/main/java/com/hubspot/jinjava/random/RandomNumberGeneratorStrategy.java b/src/main/java/com/hubspot/jinjava/random/RandomNumberGeneratorStrategy.java index 29912dd09..bcb0ec9fc 100644 --- a/src/main/java/com/hubspot/jinjava/random/RandomNumberGeneratorStrategy.java +++ b/src/main/java/com/hubspot/jinjava/random/RandomNumberGeneratorStrategy.java @@ -3,5 +3,5 @@ public enum RandomNumberGeneratorStrategy { THREAD_LOCAL, CONSTANT_ZERO, - DEFERRED + DEFERRED, } diff --git a/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java b/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java index 7bdc49d18..ecaaef954 100644 --- a/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java @@ -24,6 +24,7 @@ import com.hubspot.jinjava.tree.parse.ExpressionToken; public class ExpressionNode extends Node { + private static final long serialVersionUID = -6063173739682221042L; private final ExpressionStrategy expressionStrategy; diff --git a/src/main/java/com/hubspot/jinjava/tree/Node.java b/src/main/java/com/hubspot/jinjava/tree/Node.java index cae9f5ef5..56a8817f4 100644 --- a/src/main/java/com/hubspot/jinjava/tree/Node.java +++ b/src/main/java/com/hubspot/jinjava/tree/Node.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.StringUtils; public abstract class Node implements Serializable { + private static final long serialVersionUID = -6194634312533310816L; private final Token master; diff --git a/src/main/java/com/hubspot/jinjava/tree/RootNode.java b/src/main/java/com/hubspot/jinjava/tree/RootNode.java index 9db3bd0bb..7cf34432a 100644 --- a/src/main/java/com/hubspot/jinjava/tree/RootNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/RootNode.java @@ -20,6 +20,7 @@ import com.hubspot.jinjava.tree.parse.TokenScannerSymbols; public class RootNode extends Node { + private static final long serialVersionUID = 5904181260202954424L; private final TokenScannerSymbols symbols; diff --git a/src/main/java/com/hubspot/jinjava/tree/TagNode.java b/src/main/java/com/hubspot/jinjava/tree/TagNode.java index acf4f9eb2..495064a0b 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TagNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/TagNode.java @@ -29,6 +29,7 @@ import com.hubspot.jinjava.tree.parse.TokenScannerSymbols; public class TagNode extends Node { + private static final long serialVersionUID = -6971280448795354252L; private final Tag tag; diff --git a/src/main/java/com/hubspot/jinjava/tree/TextNode.java b/src/main/java/com/hubspot/jinjava/tree/TextNode.java index e6c6a39a9..64f572e2a 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TextNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/TextNode.java @@ -21,6 +21,7 @@ import com.hubspot.jinjava.tree.parse.TextToken; public class TextNode extends Node { + private static final long serialVersionUID = 127827773323298439L; private final TextToken master; diff --git a/src/main/java/com/hubspot/jinjava/tree/TreeParser.java b/src/main/java/com/hubspot/jinjava/tree/TreeParser.java index ca739829f..9c3198188 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TreeParser.java +++ b/src/main/java/com/hubspot/jinjava/tree/TreeParser.java @@ -41,6 +41,7 @@ import org.apache.commons.lang3.StringUtils; public class TreeParser { + private final PeekingIterator scanner; private final JinjavaInterpreter interpreter; private final TokenScannerSymbols symbols; diff --git a/src/main/java/com/hubspot/jinjava/tree/output/BlockInfo.java b/src/main/java/com/hubspot/jinjava/tree/output/BlockInfo.java index e82d48ca7..8af0914e7 100644 --- a/src/main/java/com/hubspot/jinjava/tree/output/BlockInfo.java +++ b/src/main/java/com/hubspot/jinjava/tree/output/BlockInfo.java @@ -6,6 +6,7 @@ @SuppressWarnings("OptionalUsedAsFieldOrParameterType") public class BlockInfo { + private final List nodes; private final Optional parentPath; diff --git a/src/main/java/com/hubspot/jinjava/tree/output/BlockPlaceholderOutputNode.java b/src/main/java/com/hubspot/jinjava/tree/output/BlockPlaceholderOutputNode.java index a9cb694d9..c2801ab3a 100644 --- a/src/main/java/com/hubspot/jinjava/tree/output/BlockPlaceholderOutputNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/output/BlockPlaceholderOutputNode.java @@ -4,6 +4,7 @@ import java.nio.charset.Charset; public class BlockPlaceholderOutputNode implements OutputNode { + private final String blockName; private String output; diff --git a/src/main/java/com/hubspot/jinjava/tree/output/OutputList.java b/src/main/java/com/hubspot/jinjava/tree/output/OutputList.java index 3ab3ec9f3..ef2967e96 100644 --- a/src/main/java/com/hubspot/jinjava/tree/output/OutputList.java +++ b/src/main/java/com/hubspot/jinjava/tree/output/OutputList.java @@ -9,6 +9,7 @@ import java.util.List; public class OutputList { + public static final String PREVENT_ACCIDENTAL_EXPRESSIONS = "PREVENT_ACCIDENTAL_EXPRESSIONS"; private final List nodes = new LinkedList<>(); @@ -54,15 +55,14 @@ public String getValue() { return JinjavaInterpreter .getCurrentMaybe() .map(JinjavaInterpreter::getConfig) - .filter( - config -> - config - .getFeatures() - .getActivationStrategy(PREVENT_ACCIDENTAL_EXPRESSIONS) - .isActive(null) + .filter(config -> + config + .getFeatures() + .getActivationStrategy(PREVENT_ACCIDENTAL_EXPRESSIONS) + .isActive(null) ) - .map( - config -> joinNodesWithoutAddingExpressions(val, config.getTokenScannerSymbols()) + .map(config -> + joinNodesWithoutAddingExpressions(val, config.getTokenScannerSymbols()) ) .orElseGet(() -> joinNodes(val)); } diff --git a/src/main/java/com/hubspot/jinjava/tree/output/RenderedOutputNode.java b/src/main/java/com/hubspot/jinjava/tree/output/RenderedOutputNode.java index f85ad4bc6..7c97ddf7d 100644 --- a/src/main/java/com/hubspot/jinjava/tree/output/RenderedOutputNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/output/RenderedOutputNode.java @@ -4,6 +4,7 @@ import java.nio.charset.Charset; public class RenderedOutputNode implements OutputNode { + private final String output; public RenderedOutputNode(String output) { diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/DefaultTokenScannerSymbols.java b/src/main/java/com/hubspot/jinjava/tree/parse/DefaultTokenScannerSymbols.java index 79a79913e..e0ca20e20 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/DefaultTokenScannerSymbols.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/DefaultTokenScannerSymbols.java @@ -1,6 +1,7 @@ package com.hubspot.jinjava.tree.parse; public class DefaultTokenScannerSymbols extends TokenScannerSymbols { + private static final long serialVersionUID = 3825893609777542598L; char TOKEN_PREFIX_CHAR = '{'; diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/ExpressionToken.java b/src/main/java/com/hubspot/jinjava/tree/parse/ExpressionToken.java index 3379e8049..2587b06d8 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/ExpressionToken.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/ExpressionToken.java @@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils; public class ExpressionToken extends Token { + private static final long serialVersionUID = 6336768632140743908L; private String expr; diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/NoteToken.java b/src/main/java/com/hubspot/jinjava/tree/parse/NoteToken.java index 1bbc9bca5..33b1375af 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/NoteToken.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/NoteToken.java @@ -16,6 +16,7 @@ package com.hubspot.jinjava.tree.parse; public class NoteToken extends Token { + private static final long serialVersionUID = -3859011447900311329L; public NoteToken( diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/TagToken.java b/src/main/java/com/hubspot/jinjava/tree/parse/TagToken.java index d73c33b22..17d380b47 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/TagToken.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/TagToken.java @@ -18,6 +18,7 @@ import com.hubspot.jinjava.interpret.TemplateSyntaxException; public class TagToken extends Token { + private static final long serialVersionUID = -4927751270481832992L; private String tagName; diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/TextToken.java b/src/main/java/com/hubspot/jinjava/tree/parse/TextToken.java index edfbb4d3e..c43b6b57c 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/TextToken.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/TextToken.java @@ -18,6 +18,7 @@ import org.apache.commons.lang3.StringUtils; public class TextToken extends Token { + private static final long serialVersionUID = -6168990984496468543L; public TextToken( diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/Token.java b/src/main/java/com/hubspot/jinjava/tree/parse/Token.java index 487987626..d33908bff 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/Token.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/Token.java @@ -22,6 +22,7 @@ import java.io.Serializable; public abstract class Token implements Serializable { + private static final long serialVersionUID = 3359084948763661809L; protected String image; diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/TokenScanner.java b/src/main/java/com/hubspot/jinjava/tree/parse/TokenScanner.java index ec8a45bcf..54671d644 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/TokenScanner.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/TokenScanner.java @@ -21,6 +21,7 @@ import com.hubspot.jinjava.JinjavaConfig; public class TokenScanner extends AbstractIterator { + private final JinjavaConfig config; private final char[] is; diff --git a/src/main/java/com/hubspot/jinjava/tree/parse/TokenScannerSymbols.java b/src/main/java/com/hubspot/jinjava/tree/parse/TokenScannerSymbols.java index 5f561d198..771dbda41 100644 --- a/src/main/java/com/hubspot/jinjava/tree/parse/TokenScannerSymbols.java +++ b/src/main/java/com/hubspot/jinjava/tree/parse/TokenScannerSymbols.java @@ -18,6 +18,7 @@ import java.io.Serializable; public abstract class TokenScannerSymbols implements Serializable { + private static final long serialVersionUID = -4810220023023256534L; private String expressionStart = null; diff --git a/src/main/java/com/hubspot/jinjava/util/DeferredValueUtils.java b/src/main/java/com/hubspot/jinjava/util/DeferredValueUtils.java index ec9df74b4..aa2747e37 100644 --- a/src/main/java/com/hubspot/jinjava/util/DeferredValueUtils.java +++ b/src/main/java/com/hubspot/jinjava/util/DeferredValueUtils.java @@ -23,6 +23,7 @@ import java.util.stream.Stream; public class DeferredValueUtils { + private static final String TEMPLATE_TAG_REGEX = "(\\w+(?:\\.\\w+)*)"; private static final Pattern TEMPLATE_TAG_PATTERN = Pattern.compile(TEMPLATE_TAG_REGEX); @@ -40,21 +41,19 @@ public static HashMap getDeferredContextWithOriginalValues( Set keysToKeep ) { HashMap deferredContext = new HashMap<>(context.size()); - context.forEach( - (contextKey, contextItem) -> { - if (keysToKeep.size() > 0 && !keysToKeep.contains(contextKey)) { - return; - } - if (contextItem instanceof DeferredValue) { - if (((DeferredValue) contextItem).getOriginalValue() != null) { - deferredContext.put( - contextKey, - ((DeferredValue) contextItem).getOriginalValue() - ); - } + context.forEach((contextKey, contextItem) -> { + if (keysToKeep.size() > 0 && !keysToKeep.contains(contextKey)) { + return; + } + if (contextItem instanceof DeferredValue) { + if (((DeferredValue) contextItem).getOriginalValue() != null) { + deferredContext.put( + contextKey, + ((DeferredValue) contextItem).getOriginalValue() + ); } } - ); + }); return deferredContext; } @@ -116,17 +115,15 @@ private static void markDeferredProperties(Context context, Set props) { .stream() .filter(prop -> !(context.get(prop) instanceof DeferredValue)) .filter(prop -> !context.getMetaContextVariables().contains(prop)) - .forEach( - prop -> { - Object value = context.get(prop); - if (value != null) { - context.put(prop, DeferredValue.instance(value)); - } else { - //Handle set props - context.put(prop, DeferredValue.instance()); - } + .forEach(prop -> { + Object value = context.get(prop); + if (value != null) { + context.put(prop, DeferredValue.instance(value)); + } else { + //Handle set props + context.put(prop, DeferredValue.instance()); } - ); + }); } private static Set getDeferredTags(Node node, int depth) { @@ -210,6 +207,7 @@ private static String getNormalizedTag(Node node) { } private static class DeferredTag { + String tag; String normalizedTag; diff --git a/src/main/java/com/hubspot/jinjava/util/EagerContextWatcher.java b/src/main/java/com/hubspot/jinjava/util/EagerContextWatcher.java index e30e66c6d..0242e2e00 100644 --- a/src/main/java/com/hubspot/jinjava/util/EagerContextWatcher.java +++ b/src/main/java/com/hubspot/jinjava/util/EagerContextWatcher.java @@ -59,11 +59,8 @@ public static EagerExecutionResult executeInChildContext( entrySet, metaContextVariables ); - final Map initiallyResolvedAsStrings = getInitiallyResolvedAsStrings( - interpreter, - entrySet, - initiallyResolvedHashes - ); + final Map initiallyResolvedAsStrings = + getInitiallyResolvedAsStrings(interpreter, entrySet, initiallyResolvedHashes); initialResult = applyFunction(function, interpreter, eagerChildContextConfig); speculativeBindings = getAllSpeculativeBindings( @@ -129,17 +126,16 @@ private static Map getInitiallyResolvedAsStrings( : interpreter.getContext().getCombinedScope().entrySet() ).stream() .filter(entry -> initiallyResolvedHashes.containsKey(entry.getKey())) - .filter( - entry -> EagerExpressionResolver.isResolvableObject(entry.getValue(), 4, 400) // TODO make this configurable + .filter(entry -> + EagerExpressionResolver.isResolvableObject(entry.getValue(), 4, 400) // TODO make this configurable ); - entryStream.forEach( - entry -> - cacheRevertibleObject( - interpreter, - initiallyResolvedHashes, - initiallyResolvedAsStrings, - entry - ) + entryStream.forEach(entry -> + cacheRevertibleObject( + interpreter, + initiallyResolvedHashes, + initiallyResolvedAsStrings, + entry + ) ); return initiallyResolvedAsStrings; } @@ -152,11 +148,11 @@ private static Map getInitiallyResolvedHashes( entrySet .stream() .filter(entry -> !metaContextVariables.contains(entry.getKey())) - .filter( - entry -> !(entry.getValue() instanceof DeferredValue) && entry.getValue() != null + .filter(entry -> + !(entry.getValue() instanceof DeferredValue) && entry.getValue() != null ) - .forEach( - entry -> mapOfHashes.put(entry.getKey(), getObjectOrHashCode(entry.getValue())) + .forEach(entry -> + mapOfHashes.put(entry.getKey(), getObjectOrHashCode(entry.getValue())) ); // Avoid NPE when getObjectOrHashCode(entry.getValue()) is null) return mapOfHashes; } @@ -201,13 +197,12 @@ private static Map getBasicSpeculativeBindings( .getScope() .entrySet() .stream() - .filter( - entry -> - entry.getValue() instanceof OneTimeReconstructible && - !(((OneTimeReconstructible) entry.getValue()).isReconstructed()) + .filter(entry -> + entry.getValue() instanceof OneTimeReconstructible && + !(((OneTimeReconstructible) entry.getValue()).isReconstructed()) ) - .peek( - entry -> ((OneTimeReconstructible) entry.getValue()).setReconstructed(true) + .peek(entry -> + ((OneTimeReconstructible) entry.getValue()).setReconstructed(true) ) .collect(Collectors.toMap(Entry::getKey, Entry::getValue)) ); @@ -218,33 +213,31 @@ private static Map getBasicSpeculativeBindings( .stream() .filter(entry -> !ignoredKeys.contains(entry.getKey())) .filter(entry -> !"loop".equals(entry.getKey())) - .map( - entry -> { - if ( - eagerExecutionResult.getResult().isFullyResolved() || - eagerChildContextConfig.takeNewValue - ) { - return entry; - } + .map(entry -> { + if ( + eagerExecutionResult.getResult().isFullyResolved() || + eagerChildContextConfig.takeNewValue + ) { + return entry; + } - Object contextValue = interpreter.getContext().get(entry.getKey()); + Object contextValue = interpreter.getContext().get(entry.getKey()); + if ( + contextValue instanceof DeferredValue && + ((DeferredValue) contextValue).getOriginalValue() != null + ) { if ( - contextValue instanceof DeferredValue && - ((DeferredValue) contextValue).getOriginalValue() != null + !eagerChildContextConfig.takeNewValue && + !EagerExpressionResolver.isResolvableObject( + ((DeferredValue) contextValue).getOriginalValue() + ) ) { - if ( - !eagerChildContextConfig.takeNewValue && - !EagerExpressionResolver.isResolvableObject( - ((DeferredValue) contextValue).getOriginalValue() - ) - ) { - throw new CannotReconstructValueException(entry.getKey()); - } - return new AbstractMap.SimpleImmutableEntry<>(entry.getKey(), contextValue); + throw new CannotReconstructValueException(entry.getKey()); } - return null; + return new AbstractMap.SimpleImmutableEntry<>(entry.getKey(), contextValue); } - ) + return null; + }) .filter(Objects::nonNull) .filter(entry -> entry.getValue() != null) .filter(entry -> !isDeferredWithOriginalValueNull(entry.getValue())) @@ -263,29 +256,26 @@ private static Map getAllSpeculativeBindings( .getSpeculativeBindings() .entrySet() .stream() - .filter( - entry -> - entry.getValue() != null && - !entry.getValue().equals(interpreter.getContext().get(entry.getKey())) + .filter(entry -> + entry.getValue() != null && + !entry.getValue().equals(interpreter.getContext().get(entry.getKey())) ) - .filter( - entry -> !(interpreter.getContext().get(entry.getKey()) instanceof DeferredValue) + .filter(entry -> + !(interpreter.getContext().get(entry.getKey()) instanceof DeferredValue) ) .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); speculativeBindings.putAll( initiallyResolvedHashes .keySet() .stream() - .map( - key -> - new AbstractMap.SimpleImmutableEntry<>(key, interpreter.getContext().get(key)) + .map(key -> + new AbstractMap.SimpleImmutableEntry<>(key, interpreter.getContext().get(key)) ) - .filter( - entry -> - !Objects.equals( - initiallyResolvedHashes.get(entry.getKey()), - getObjectOrHashCode(entry.getValue()) - ) + .filter(entry -> + !Objects.equals( + initiallyResolvedHashes.get(entry.getKey()), + getObjectOrHashCode(entry.getValue()) + ) ) .collect( Collectors.toMap( @@ -345,8 +335,8 @@ private static void cacheRevertibleObject( } revertibleObject .getPyishString() - .ifPresent( - pyishString -> initiallyResolvedAsStrings.put(entry.getKey(), pyishString) + .ifPresent(pyishString -> + initiallyResolvedAsStrings.put(entry.getKey(), pyishString) ); } catch (Exception e) { interpreter @@ -408,6 +398,7 @@ private static Object getObjectOrHashCode(Object o) { } public static class EagerChildContextConfig { + private final boolean takeNewValue; private final boolean discardSessionBindings; @@ -435,6 +426,7 @@ public static Builder newBuilder() { } public static class Builder { + private boolean takeNewValue; private boolean discardSessionBindings; diff --git a/src/main/java/com/hubspot/jinjava/util/EagerExpressionResolver.java b/src/main/java/com/hubspot/jinjava/util/EagerExpressionResolver.java index c9cd69317..0018a31f4 100644 --- a/src/main/java/com/hubspot/jinjava/util/EagerExpressionResolver.java +++ b/src/main/java/com/hubspot/jinjava/util/EagerExpressionResolver.java @@ -35,6 +35,7 @@ @Beta public class EagerExpressionResolver { + public static final String JINJAVA_NULL = "null"; public static final String JINJAVA_EMPTY_STRING = "''"; @@ -348,6 +349,7 @@ public static boolean isPrimitive(Object val) { } public static class EagerExpressionResult { + private final Object resolvedObject; private final Set deferredWords; private final ResolutionState resolutionState; @@ -509,6 +511,7 @@ public enum ResolutionState { } private static class FoundQuotedExpressionTags { + Integer firstStartTagFoundLocation; Integer lastEndTagFoundLocation; diff --git a/src/main/java/com/hubspot/jinjava/util/EagerReconstructionUtils.java b/src/main/java/com/hubspot/jinjava/util/EagerReconstructionUtils.java index d5370c891..3345af374 100644 --- a/src/main/java/com/hubspot/jinjava/util/EagerReconstructionUtils.java +++ b/src/main/java/com/hubspot/jinjava/util/EagerReconstructionUtils.java @@ -226,15 +226,13 @@ private static Set filterToRelevantBases( deferredWordBases = deferredWordBases .stream() - .filter( - word -> { - Object parentValue = finalParent.get(word); - return ( - !(parentValue instanceof DeferredValue) && - interpreter.getContext().get(word) != finalParent.get(word) - ); - } - ) + .filter(word -> { + Object parentValue = finalParent.get(word); + return ( + !(parentValue instanceof DeferredValue) && + interpreter.getContext().get(word) != finalParent.get(word) + ); + }) .collect(Collectors.toSet()); } return deferredWordBases; @@ -279,22 +277,21 @@ private static PrefixToPreserveState hydrateReconstructionOfMacroFunctionsBefore .stream() .peek(entry -> toRemove.add(entry.getKey())) .peek(entry -> entry.getValue().setDeferred(true)) - .map( - entry -> - new AbstractMap.SimpleImmutableEntry<>( - entry.getKey(), - EagerContextWatcher.executeInChildContext( - eagerInterpreter -> - EagerExpressionResult.fromString( - ((EagerMacroFunction) entry.getValue()).reconstructImage(entry.getKey()) - ), - interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() - .withForceDeferredExecutionMode(true) - .build() - ) + .map(entry -> + new AbstractMap.SimpleImmutableEntry<>( + entry.getKey(), + EagerContextWatcher.executeInChildContext( + eagerInterpreter -> + EagerExpressionResult.fromString( + ((EagerMacroFunction) entry.getValue()).reconstructImage(entry.getKey()) + ), + interpreter, + EagerContextWatcher.EagerChildContextConfig + .newBuilder() + .withForceDeferredExecutionMode(true) + .build() ) + ) ) .collect( Collectors.toMap(Entry::getKey, entry -> entry.getValue().asTemplateString()) @@ -316,22 +313,20 @@ private static PrefixToPreserveState hydrateReconstructionOfVariablesBeforeDefer .stream() .filter(w -> !metaContextVariables.contains(w)) .filter(w -> !prefixToPreserveState.containsKey(w)) - .map( - word -> - new AbstractMap.SimpleImmutableEntry<>(word, interpreter.getContext().get(word)) + .map(word -> + new AbstractMap.SimpleImmutableEntry<>(word, interpreter.getContext().get(word)) ) - .filter( - entry -> entry.getValue() != null && !(entry.getValue() instanceof DeferredValue) + .filter(entry -> + entry.getValue() != null && !(entry.getValue() instanceof DeferredValue) ) - .forEach( - entry -> - hydrateBlockOrInlineSetTagRecursively( - prefixToPreserveState, - entry.getKey(), - entry.getValue(), - interpreter, - depth - ) + .forEach(entry -> + hydrateBlockOrInlineSetTagRecursively( + prefixToPreserveState, + entry.getKey(), + entry.getValue(), + interpreter, + depth + ) ); return prefixToPreserveState; } @@ -477,16 +472,14 @@ public static String buildSetTag( StringJoiner vars = new StringJoiner(","); StringJoiner values = new StringJoiner(","); StringJoiner varsRequiringSuffix = new StringJoiner(","); - deferredValuesToSet.forEach( - (key, value) -> { - // This ensures they are properly aligned to each other. - vars.add(key); - values.add(value); - if (!AliasedEagerImportingStrategy.isTemporaryImportAlias(value)) { - varsRequiringSuffix.add(key); - } + deferredValuesToSet.forEach((key, value) -> { + // This ensures they are properly aligned to each other. + vars.add(key); + values.add(value); + if (!AliasedEagerImportingStrategy.isTemporaryImportAlias(value)) { + varsRequiringSuffix.add(key); } - ); + }); LengthLimitingStringJoiner result = new LengthLimitingStringJoiner( interpreter.getConfig().getMaxOutputSize(), " " @@ -825,30 +818,26 @@ public static Map reconstructDeferredReferences( .getScope() .entrySet() .stream() - .filter( - entry -> - entry.getValue() instanceof OneTimeReconstructible && - !((OneTimeReconstructible) entry.getValue()).isReconstructed() + .filter(entry -> + entry.getValue() instanceof OneTimeReconstructible && + !((OneTimeReconstructible) entry.getValue()).isReconstructed() ) - .filter( - entry -> - // Always reconstruct the DeferredLazyReferenceSource, but only reconstruct DeferredLazyReferences when they are used - entry.getValue() instanceof DeferredLazyReferenceSource || - usedDeferredWords.contains(entry.getKey()) + .filter(entry -> + // Always reconstruct the DeferredLazyReferenceSource, but only reconstruct DeferredLazyReferences when they are used + entry.getValue() instanceof DeferredLazyReferenceSource || + usedDeferredWords.contains(entry.getKey()) ) .peek(entry -> ((OneTimeReconstructible) entry.getValue()).setReconstructed(true)) - .map( - entry -> - new AbstractMap.SimpleImmutableEntry<>( - entry.getKey(), - PyishObjectMapper.getAsPyishString( - ((DeferredValue) entry.getValue()).getOriginalValue() - ) + .map(entry -> + new AbstractMap.SimpleImmutableEntry<>( + entry.getKey(), + PyishObjectMapper.getAsPyishString( + ((DeferredValue) entry.getValue()).getOriginalValue() ) + ) ) - .sorted( - (a, b) -> - a.getValue().equals(b.getKey()) ? 1 : b.getValue().equals(a.getKey()) ? -1 : 0 + .sorted((a, b) -> + a.getValue().equals(b.getKey()) ? 1 : b.getValue().equals(a.getKey()) ? -1 : 0 ) .collect( Collectors.toMap( @@ -897,14 +886,12 @@ public static Set resetSpeculativeBindings( ) { result .getSpeculativeBindings() - .forEach( - (k, v) -> { - if (v instanceof DeferredValue) { - v = ((DeferredValue) v).getOriginalValue(); - } - replace(interpreter.getContext(), k, v); + .forEach((k, v) -> { + if (v instanceof DeferredValue) { + v = ((DeferredValue) v).getOriginalValue(); } - ); + replace(interpreter.getContext(), k, v); + }); return result.getSpeculativeBindings().keySet(); } diff --git a/src/main/java/com/hubspot/jinjava/util/ForLoop.java b/src/main/java/com/hubspot/jinjava/util/ForLoop.java index 8d249a6cd..071a2f887 100644 --- a/src/main/java/com/hubspot/jinjava/util/ForLoop.java +++ b/src/main/java/com/hubspot/jinjava/util/ForLoop.java @@ -18,6 +18,7 @@ import java.util.Iterator; public class ForLoop implements Iterator { + private static final int NULL_VALUE = Integer.MIN_VALUE; private int index = -1; diff --git a/src/main/java/com/hubspot/jinjava/util/HelperStringTokenizer.java b/src/main/java/com/hubspot/jinjava/util/HelperStringTokenizer.java index 38e8a321f..4cc1013c1 100644 --- a/src/main/java/com/hubspot/jinjava/util/HelperStringTokenizer.java +++ b/src/main/java/com/hubspot/jinjava/util/HelperStringTokenizer.java @@ -26,6 +26,7 @@ * */ public class HelperStringTokenizer extends AbstractIterator { + private final char[] value; private final int length; diff --git a/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringBuilder.java b/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringBuilder.java index c8fb929fb..850d7df5f 100644 --- a/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringBuilder.java +++ b/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringBuilder.java @@ -6,6 +6,7 @@ public class LengthLimitingStringBuilder implements Serializable, CharSequence, Appendable { + private static final long serialVersionUID = -1891922886257965755L; private final StringBuilder builder; diff --git a/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringJoiner.java b/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringJoiner.java index 10337d49e..c4f278b80 100644 --- a/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringJoiner.java +++ b/src/main/java/com/hubspot/jinjava/util/LengthLimitingStringJoiner.java @@ -4,6 +4,7 @@ import java.util.StringJoiner; public class LengthLimitingStringJoiner { + private final StringJoiner joiner; private final int delimiterLength; private final long maxLength; diff --git a/src/main/java/com/hubspot/jinjava/util/PrefixToPreserveState.java b/src/main/java/com/hubspot/jinjava/util/PrefixToPreserveState.java index cf9e4d25e..999cfb051 100644 --- a/src/main/java/com/hubspot/jinjava/util/PrefixToPreserveState.java +++ b/src/main/java/com/hubspot/jinjava/util/PrefixToPreserveState.java @@ -7,6 +7,7 @@ @Beta public class PrefixToPreserveState extends ForwardingMap { + private Map reconstructedValues; public PrefixToPreserveState() { diff --git a/src/main/java/com/hubspot/jinjava/util/ScopeMap.java b/src/main/java/com/hubspot/jinjava/util/ScopeMap.java index 28d3662f2..14ae90f34 100644 --- a/src/main/java/com/hubspot/jinjava/util/ScopeMap.java +++ b/src/main/java/com/hubspot/jinjava/util/ScopeMap.java @@ -14,6 +14,7 @@ import javax.annotation.Nonnull; public class ScopeMap implements Map { + private final Map scope; private final ScopeMap parent; @@ -214,6 +215,7 @@ public Set> entrySet() { } public static class ScopeMapEntry implements Map.Entry { + private final Map map; private final K key; private V value; diff --git a/src/main/java/com/hubspot/jinjava/util/Variable.java b/src/main/java/com/hubspot/jinjava/util/Variable.java index 31ed6b320..5649ce408 100644 --- a/src/main/java/com/hubspot/jinjava/util/Variable.java +++ b/src/main/java/com/hubspot/jinjava/util/Variable.java @@ -22,6 +22,7 @@ import java.util.List; public class Variable { + private static final Splitter DOT_SPLITTER = Splitter.on('.'); private final JinjavaInterpreter interpreter; diff --git a/src/main/java/com/hubspot/jinjava/util/WhitespaceUtils.java b/src/main/java/com/hubspot/jinjava/util/WhitespaceUtils.java index 5183910c0..d18ce584d 100644 --- a/src/main/java/com/hubspot/jinjava/util/WhitespaceUtils.java +++ b/src/main/java/com/hubspot/jinjava/util/WhitespaceUtils.java @@ -5,6 +5,7 @@ import javax.annotation.Nullable; public final class WhitespaceUtils { + private static final char[] QUOTE_CHARS = new char[] { '\'', '"' }; public static boolean startsWith(String s, String prefix) { diff --git a/src/test/java/com/hubspot/jinjava/BaseInterpretingTest.java b/src/test/java/com/hubspot/jinjava/BaseInterpretingTest.java index d5db9d74d..7fdf9c4c4 100644 --- a/src/test/java/com/hubspot/jinjava/BaseInterpretingTest.java +++ b/src/test/java/com/hubspot/jinjava/BaseInterpretingTest.java @@ -6,6 +6,7 @@ import org.junit.Before; public abstract class BaseInterpretingTest extends BaseJinjavaTest { + public JinjavaInterpreter interpreter; public Context context; diff --git a/src/test/java/com/hubspot/jinjava/BaseJinjavaTest.java b/src/test/java/com/hubspot/jinjava/BaseJinjavaTest.java index e2a29d4b1..790f0ec98 100644 --- a/src/test/java/com/hubspot/jinjava/BaseJinjavaTest.java +++ b/src/test/java/com/hubspot/jinjava/BaseJinjavaTest.java @@ -3,6 +3,7 @@ import org.junit.Before; public abstract class BaseJinjavaTest { + public Jinjava jinjava; @Before diff --git a/src/test/java/com/hubspot/jinjava/EagerTest.java b/src/test/java/com/hubspot/jinjava/EagerTest.java index 9dcba381f..1f6339706 100644 --- a/src/test/java/com/hubspot/jinjava/EagerTest.java +++ b/src/test/java/com/hubspot/jinjava/EagerTest.java @@ -33,6 +33,7 @@ import org.junit.Test; public class EagerTest { + private JinjavaInterpreter interpreter; private Jinjava jinjava; private ExpectedTemplateInterpreter expectedTemplateInterpreter; @@ -56,8 +57,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("tags/macrotag/%s", fullName)), StandardCharsets.UTF_8 @@ -117,10 +117,10 @@ public void itReconstructsMapWithNullValues() { @Test public void itDefersNodeWhenModifiedInForLoop() { assertThat( - interpreter.render( - "{% set bar = 'bar' %}{% set foo = 0 %}{% for i in deferred %}{{ bar ~ foo ~ bar }} {% set foo = foo + 1 %}{% endfor %}" - ) + interpreter.render( + "{% set bar = 'bar' %}{% set foo = 0 %}{% for i in deferred %}{{ bar ~ foo ~ bar }} {% set foo = foo + 1 %}{% endfor %}" ) + ) .isEqualTo( "{% set foo = 0 %}{% for i in deferred %}{{ 'bar' ~ foo ~ 'bar' }} {% set foo = foo + 1 %}{% endfor %}" ); @@ -364,9 +364,8 @@ public void itDefersAllVariablesUsedInDeferredNode() { DeferredValue varInScopeDeferred = (DeferredValue) varInScope; assertThat(varInScopeDeferred.getOriginalValue()).isEqualTo("outside if statement"); - HashMap deferredContext = DeferredValueUtils.getDeferredContextWithOriginalValues( - localContext - ); + HashMap deferredContext = + DeferredValueUtils.getDeferredContextWithOriginalValues(localContext); deferredContext.forEach(localContext::put); String secondRender = interpreter.render(output); assertThat(secondRender).isEqualTo("outside if statement entered if statement"); @@ -396,9 +395,8 @@ public void itDefersVariablesComparedAgainstDeferredVals() { assertThat(output.trim()) .isEqualTo("{% if deferred == 'testvalue' %} true {% else %} false {% endif %}"); - HashMap deferredContext = DeferredValueUtils.getDeferredContextWithOriginalValues( - localContext - ); + HashMap deferredContext = + DeferredValueUtils.getDeferredContextWithOriginalValues(localContext); deferredContext.forEach(localContext::put); String secondRender = interpreter.render(output); assertThat(secondRender.trim()).isEqualTo("true"); @@ -421,9 +419,8 @@ public void itPutsDeferredVariablesOnParentScopes() { ); localContext.put("deferredValue", DeferredValue.instance("resolved")); String output = interpreter.render(template); - HashMap deferredContext = DeferredValueUtils.getDeferredContextWithOriginalValues( - localContext - ); + HashMap deferredContext = + DeferredValueUtils.getDeferredContextWithOriginalValues(localContext); deferredContext.forEach(localContext::put); String secondRender = interpreter.render(output); assertThat(secondRender.trim()).isEqualTo("inside first scope".trim()); @@ -438,9 +435,8 @@ public void puttingDeferredVariablesOnParentScopesDoesNotBreakSetTag() { localContext.put("deferredValue", DeferredValue.instance("resolved")); String output = interpreter.render(template); - HashMap deferredContext = DeferredValueUtils.getDeferredContextWithOriginalValues( - localContext - ); + HashMap deferredContext = + DeferredValueUtils.getDeferredContextWithOriginalValues(localContext); deferredContext.forEach(localContext::put); String secondRender = interpreter.render(output); assertThat(secondRender.trim()) @@ -484,8 +480,8 @@ public void itMarksVariablesUsedAsMapKeysAsDeferred() { Object deferredValue2 = localContext.get("deferredValue2"); localContext .getDeferredNodes() - .forEach( - node -> DeferredValueUtils.findAndMarkDeferredProperties(localContext, node) + .forEach(node -> + DeferredValueUtils.findAndMarkDeferredProperties(localContext, node) ); assertThat(deferredValue2).isInstanceOf(DeferredValue.class); assertThat(output) @@ -504,20 +500,20 @@ public void itEagerlyDefersSet() { public void itEvaluatesNonEagerSet() { expectedTemplateInterpreter.assertExpectedOutput("evaluates-non-eager-set"); assertThat( - localContext - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + localContext + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .isEmpty(); assertThat( - localContext - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + localContext + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .contains("deferred"); } @@ -786,7 +782,7 @@ public void itWrapsCertainOutputInRaw() { JinjavaInterpreter.pushCurrent(noNestedInterpreter); try { new ExpectedTemplateInterpreter(jinjava, noNestedInterpreter, "eager") - .assertExpectedOutput("wraps-certain-output-in-raw"); + .assertExpectedOutput("wraps-certain-output-in-raw"); assertThat(noNestedInterpreter.getErrors()).isEmpty(); } finally { JinjavaInterpreter.popCurrent(); @@ -863,7 +859,7 @@ public void itHandlesUnknownFunctionErrors() { try { JinjavaInterpreter.pushCurrent(eagerInterpreter); new ExpectedTemplateInterpreter(jinjava, eagerInterpreter, "eager") - .assertExpectedOutput("handles-unknown-function-errors"); + .assertExpectedOutput("handles-unknown-function-errors"); } finally { JinjavaInterpreter.popCurrent(); } @@ -871,7 +867,7 @@ public void itHandlesUnknownFunctionErrors() { JinjavaInterpreter.pushCurrent(defaultInterpreter); new ExpectedTemplateInterpreter(jinjava, defaultInterpreter, "eager") - .assertExpectedOutput("handles-unknown-function-errors"); + .assertExpectedOutput("handles-unknown-function-errors"); } finally { JinjavaInterpreter.popCurrent(); } diff --git a/src/test/java/com/hubspot/jinjava/ExpectedNodeInterpreter.java b/src/test/java/com/hubspot/jinjava/ExpectedNodeInterpreter.java index 3bb712a01..404bbf41f 100644 --- a/src/test/java/com/hubspot/jinjava/ExpectedNodeInterpreter.java +++ b/src/test/java/com/hubspot/jinjava/ExpectedNodeInterpreter.java @@ -12,6 +12,7 @@ import java.nio.charset.StandardCharsets; public class ExpectedNodeInterpreter { + private JinjavaInterpreter interpreter; private Tag tag; private String path; diff --git a/src/test/java/com/hubspot/jinjava/ExpectedTemplateInterpreter.java b/src/test/java/com/hubspot/jinjava/ExpectedTemplateInterpreter.java index 4f6748344..6931f491c 100644 --- a/src/test/java/com/hubspot/jinjava/ExpectedTemplateInterpreter.java +++ b/src/test/java/com/hubspot/jinjava/ExpectedTemplateInterpreter.java @@ -10,6 +10,7 @@ import java.nio.charset.StandardCharsets; public class ExpectedTemplateInterpreter { + private Jinjava jinjava; private JinjavaInterpreter interpreter; private String path; diff --git a/src/test/java/com/hubspot/jinjava/FeaturesTest.java b/src/test/java/com/hubspot/jinjava/FeaturesTest.java index 6de6d2807..19291da5a 100644 --- a/src/test/java/com/hubspot/jinjava/FeaturesTest.java +++ b/src/test/java/com/hubspot/jinjava/FeaturesTest.java @@ -14,6 +14,7 @@ import org.junit.Test; public class FeaturesTest { + private static final String ALWAYS_OFF = "alwaysOff"; private static final String ALWAYS_ON = "alwaysOn"; private static final String DATE_PAST = "datePast"; diff --git a/src/test/java/com/hubspot/jinjava/FullSnippetsTest.java b/src/test/java/com/hubspot/jinjava/FullSnippetsTest.java index ad7d0fff1..06fca73db 100644 --- a/src/test/java/com/hubspot/jinjava/FullSnippetsTest.java +++ b/src/test/java/com/hubspot/jinjava/FullSnippetsTest.java @@ -17,6 +17,7 @@ import org.junit.Test; public class FullSnippetsTest { + private JinjavaInterpreter interpreter; private Jinjava jinjava; private ExpectedTemplateInterpreter expectedTemplateInterpreter; @@ -36,8 +37,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("tags/macrotag/%s", fullName)), StandardCharsets.UTF_8 diff --git a/src/test/java/com/hubspot/jinjava/el/ExpressionResolverPerformanceTest.java b/src/test/java/com/hubspot/jinjava/el/ExpressionResolverPerformanceTest.java index 8338a351c..1e370331f 100644 --- a/src/test/java/com/hubspot/jinjava/el/ExpressionResolverPerformanceTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ExpressionResolverPerformanceTest.java @@ -17,6 +17,7 @@ public static void main(String[] args) { } public static class PerformanceTester { + private JinjavaInterpreter interpreter; private Context context; private long startTime; diff --git a/src/test/java/com/hubspot/jinjava/el/ExpressionResolverTest.java b/src/test/java/com/hubspot/jinjava/el/ExpressionResolverTest.java index dfbe62a7a..4543ee667 100644 --- a/src/test/java/com/hubspot/jinjava/el/ExpressionResolverTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ExpressionResolverTest.java @@ -34,6 +34,7 @@ @SuppressWarnings("unchecked") public class ExpressionResolverTest { + private JinjavaInterpreter interpreter; private Context context; private Jinjava jinjava; @@ -70,11 +71,11 @@ public void testTuplesAreImmutable() { public void itCanCompareStrings() { context.put("foo", "white"); assertThat( - interpreter.resolveELExpression( - "'2013-12-08 16:00:00+00:00' > '2013-12-08 13:00:00+00:00'", - -1 - ) + interpreter.resolveELExpression( + "'2013-12-08 16:00:00+00:00' > '2013-12-08 13:00:00+00:00'", + -1 ) + ) .isEqualTo(Boolean.TRUE); assertThat(interpreter.resolveELExpression("foo == \"white\"", -1)) .isEqualTo(Boolean.TRUE); @@ -190,6 +191,7 @@ public void itResolvesOtherMethodsOnCustomMapObject() { } public static final class MyCustomMap implements Map { + Map data = ImmutableMap.of("foo", "bar", "two", "2", "size", "777"); @Override @@ -273,6 +275,7 @@ public void itResolvesInnerListVal() { } public static class MyCustomList extends ForwardingList implements PyWrapper { + private final List list; public MyCustomList(List list) { @@ -315,8 +318,8 @@ public void complexInWithOrCondition() { assertThat(interpreter.resolveELExpression("\"
    \" in bar or \"
    \" in bar", -1)) .isEqualTo(true); assertThat( - interpreter.resolveELExpression("\"\" in foo or \"\" in foo", -1) - ) + interpreter.resolveELExpression("\"\" in foo or \"\" in foo", -1) + ) .isEqualTo(false); } @@ -548,8 +551,8 @@ public void presentNestedNestedOptionalProperty() { new NestedOptionalProperty(new OptionalProperty(new MyClass(new Date(0)), "foo")) ); assertThat( - Objects.toString(interpreter.resolveELExpression("myobj.nested.nested.date", -1)) - ) + Objects.toString(interpreter.resolveELExpression("myobj.nested.nested.date", -1)) + ) .isEqualTo("1970-01-01 00:00:00"); assertThat(interpreter.getErrorsCopy()).isEmpty(); } @@ -607,48 +610,48 @@ public void itResolvesAlternateExpTestSyntax() { assertThat(interpreter.render("{% if 2 is even %}yes{% endif %}")).isEqualTo("yes"); assertThat( - interpreter.render( - "{% if exptest:even.evaluate(2, ____int3rpr3t3r____) %}yes{% endif %}" - ) + interpreter.render( + "{% if exptest:even.evaluate(2, ____int3rpr3t3r____) %}yes{% endif %}" ) + ) .isEqualTo("yes"); assertThat( - interpreter.render( - "{% if exptest:false.evaluate(false, ____int3rpr3t3r____) %}yes{% endif %}" - ) + interpreter.render( + "{% if exptest:false.evaluate(false, ____int3rpr3t3r____) %}yes{% endif %}" ) + ) .isEqualTo("yes"); } @Test public void itResolvesAlternateExpTestSyntaxForTrueAndFalseExpTests() { assertThat( - interpreter.render( - "{% if exptest:false.evaluate(false, ____int3rpr3t3r____) %}yes{% endif %}" - ) + interpreter.render( + "{% if exptest:false.evaluate(false, ____int3rpr3t3r____) %}yes{% endif %}" ) + ) .isEqualTo("yes"); assertThat( - interpreter.render( - "{% if exptest:true.evaluate(true, ____int3rpr3t3r____) %}yes{% endif %}" - ) + interpreter.render( + "{% if exptest:true.evaluate(true, ____int3rpr3t3r____) %}yes{% endif %}" ) + ) .isEqualTo("yes"); } @Test public void itResolvesAlternateExpTestSyntaxForInExpTests() { assertThat( - interpreter.render( - "{% if exptest:in.evaluate(1, ____int3rpr3t3r____, [1]) %}yes{% endif %}" - ) + interpreter.render( + "{% if exptest:in.evaluate(1, ____int3rpr3t3r____, [1]) %}yes{% endif %}" ) + ) .isEqualTo("yes"); assertThat( - interpreter.render( - "{% if exptest:in.evaluate(2, ____int3rpr3t3r____, [1]) %}yes{% else %}no{% endif %}" - ) + interpreter.render( + "{% if exptest:in.evaluate(2, ____int3rpr3t3r____, [1]) %}yes{% else %}no{% endif %}" ) + ) .isEqualTo("no"); } @@ -667,6 +670,7 @@ public String result(String value, TestClass testClass) { } public static class TestClass { + private boolean touched = false; private String name = "Amazing test class"; @@ -684,6 +688,7 @@ public String getName() { } public static final class MyClass { + private Date date; MyClass(Date date) { @@ -700,6 +705,7 @@ public Date getDate() { } public static final class OptionalProperty { + private MyClass nested; private String val; @@ -718,6 +724,7 @@ public Optional getVal() { } public static final class NestedOptionalProperty { + private OptionalProperty nested; public NestedOptionalProperty(OptionalProperty nested) { diff --git a/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java b/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java index 972198642..c3e9d49fe 100644 --- a/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java @@ -20,6 +20,7 @@ @SuppressWarnings("unchecked") public class ExtendedSyntaxBuilderTest { + private Context context; private JinjavaInterpreter interpreter; @@ -339,10 +340,10 @@ public void invalidPipeOperatorExpr() { @Test public void itReturnsCorrectSyntaxErrorPositions() { assertThat( - interpreter.render( - "hi {{ missing thing }}{{ missing thing }}\nI am {{ blah blabbity }} too" - ) + interpreter.render( + "hi {{ missing thing }}{{ missing thing }}\nI am {{ blah blabbity }} too" ) + ) .isEqualTo("hi \nI am too"); assertThat(interpreter.getErrorsCopy().size()).isEqualTo(3); assertThat(interpreter.getErrorsCopy().get(0).getLineno()).isEqualTo(1); diff --git a/src/test/java/com/hubspot/jinjava/el/TypeConvertingMapELResolverTest.java b/src/test/java/com/hubspot/jinjava/el/TypeConvertingMapELResolverTest.java index bd6e02b93..931ea762c 100644 --- a/src/test/java/com/hubspot/jinjava/el/TypeConvertingMapELResolverTest.java +++ b/src/test/java/com/hubspot/jinjava/el/TypeConvertingMapELResolverTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class TypeConvertingMapELResolverTest { + private TypeConvertingMapELResolver typeConvertingMapELResolver; @Before diff --git a/src/test/java/com/hubspot/jinjava/el/ext/AdditionOperatorTest.java b/src/test/java/com/hubspot/jinjava/el/ext/AdditionOperatorTest.java index 02aa043ed..5c7f3165d 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/AdditionOperatorTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/AdditionOperatorTest.java @@ -12,6 +12,7 @@ @SuppressWarnings("unchecked") public class AdditionOperatorTest { + private JinjavaInterpreter interpreter; @Before @@ -38,30 +39,30 @@ public void itConcatsNumberWithString() { @Test public void itCombinesTwoLists() { assertThat( - (Collection) interpreter.resolveELExpression( - "['foo', 'bar'] + ['other', 'one']", - -1 - ) + (Collection) interpreter.resolveELExpression( + "['foo', 'bar'] + ['other', 'one']", + -1 ) + ) .containsExactly("foo", "bar", "other", "one"); } @Test public void itAddsToList() { assertThat( - (Collection) interpreter.resolveELExpression("['foo'] + 'bar'", -1) - ) + (Collection) interpreter.resolveELExpression("['foo'] + 'bar'", -1) + ) .containsExactly("foo", "bar"); } @Test public void itCombinesTwoDicts() { assertThat( - (Map) interpreter.resolveELExpression( - "{'k1':'v1'} + {'k2':'v2'}", - -1 - ) + (Map) interpreter.resolveELExpression( + "{'k1':'v1'} + {'k2':'v2'}", + -1 ) + ) .containsOnly(entry("k1", "v1"), entry("k2", "v2")); } } diff --git a/src/test/java/com/hubspot/jinjava/el/ext/AstDictTest.java b/src/test/java/com/hubspot/jinjava/el/ext/AstDictTest.java index a225ea956..cdfbbf064 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/AstDictTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/AstDictTest.java @@ -12,6 +12,7 @@ import org.junit.Test; public class AstDictTest { + private JinjavaInterpreter interpreter; @Before @@ -67,6 +68,7 @@ public void itGetsDictValuesWithEnumKeysInObjects() { } public class TestClass { + private Map myMap; public TestClass(Map myMap) { diff --git a/src/test/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperatorTest.java b/src/test/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperatorTest.java index 6f9a2580e..24e0469d5 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperatorTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/CollectionMembershipOperatorTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class CollectionMembershipOperatorTest { + private JinjavaInterpreter interpreter; @Before diff --git a/src/test/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperatorTest.java b/src/test/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperatorTest.java index cc5520bf9..92a68aa5a 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperatorTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/CollectionNonMembershipOperatorTest.java @@ -8,6 +8,7 @@ import org.junit.Test; public class CollectionNonMembershipOperatorTest { + private JinjavaInterpreter interpreter; @Before diff --git a/src/test/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolverTest.java b/src/test/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolverTest.java index 041ad5fdf..642539f80 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolverTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/JinjavaBeanELResolverTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class JinjavaBeanELResolverTest { + private JinjavaBeanELResolver jinjavaBeanELResolver; private ELContext elContext; @@ -32,24 +33,24 @@ public void setUp() throws Exception { @Test public void itInvokesProperStringReplace() { assertThat( - jinjavaBeanELResolver.invoke( - elContext, - "abcd", - "replace", - null, - new Object[] { "abcd", "efgh" } - ) + jinjavaBeanELResolver.invoke( + elContext, + "abcd", + "replace", + null, + new Object[] { "abcd", "efgh" } ) + ) .isEqualTo("efgh"); assertThat( - jinjavaBeanELResolver.invoke( - elContext, - "abcd", - "replace", - null, - new Object[] { 'a', 'e' } - ) + jinjavaBeanELResolver.invoke( + elContext, + "abcd", + "replace", + null, + new Object[] { 'a', 'e' } ) + ) .isEqualTo("ebcd"); } @@ -75,34 +76,28 @@ public String getResult(CharSequence a) { } Temp var = new Temp(); assertThat( - jinjavaBeanELResolver.invoke( - elContext, - var, - "getResult", - null, - new Object[] { 1 } - ) - ) + jinjavaBeanELResolver.invoke(elContext, var, "getResult", null, new Object[] { 1 }) + ) .isEqualTo("int"); assertThat( - jinjavaBeanELResolver.invoke( - elContext, - var, - "getResult", - null, - new Object[] { "1" } - ) + jinjavaBeanELResolver.invoke( + elContext, + var, + "getResult", + null, + new Object[] { "1" } ) + ) .isEqualTo("String"); assertThat( - jinjavaBeanELResolver.invoke( - elContext, - var, - "getResult", - null, - new Object[] { new Object() } - ) + jinjavaBeanELResolver.invoke( + elContext, + var, + "getResult", + null, + new Object[] { new Object() } ) + ) .isEqualTo("Object"); } @@ -124,34 +119,34 @@ public String getResult(Number a, int b) { } Temp var = new Temp(); assertThat( - jinjavaBeanELResolver.invoke( - elContext, - var, - "getResult", - null, - new Object[] { 1, 2 } - ) + jinjavaBeanELResolver.invoke( + elContext, + var, + "getResult", + null, + new Object[] { 1, 2 } ) + ) .isEqualTo("int Integer"); assertThat( - jinjavaBeanELResolver.invoke( - elContext, - var, - "getResult", - null, - new Object[] { 1, Integer.valueOf(2) } - ) + jinjavaBeanELResolver.invoke( + elContext, + var, + "getResult", + null, + new Object[] { 1, Integer.valueOf(2) } ) + ) .isEqualTo("int Integer"); // should be "int object", but we can't figure that out assertThat( - jinjavaBeanELResolver.invoke( - elContext, - var, - "getResult", - null, - new Object[] { Integer.valueOf(1), 2 } - ) + jinjavaBeanELResolver.invoke( + elContext, + var, + "getResult", + null, + new Object[] { Integer.valueOf(1), 2 } ) + ) .isEqualTo("int Integer"); // should be "Number int", but we can't figure that out } @@ -159,9 +154,8 @@ public String getResult(Number a, int b) { public void itThrowsExceptionWhenMethodIsRestrictedFromConfig() { JinjavaInterpreter.pushCurrent(interpreter); when(config.getRestrictedMethods()).thenReturn(ImmutableSet.of("foo")); - assertThatThrownBy( - () -> - jinjavaBeanELResolver.invoke(elContext, "abcd", "foo", null, new Object[] { 1 }) + assertThatThrownBy(() -> + jinjavaBeanELResolver.invoke(elContext, "abcd", "foo", null, new Object[] { 1 }) ) .isInstanceOf(MethodNotFoundException.class) .hasMessageStartingWith("Cannot find method 'foo'"); @@ -172,8 +166,8 @@ public void itThrowsExceptionWhenMethodIsRestrictedFromConfig() { public void itThrowsExceptionWhenPropertyIsRestrictedFromConfig() { JinjavaInterpreter.pushCurrent(interpreter); when(config.getRestrictedProperties()).thenReturn(ImmutableSet.of("property1")); - assertThatThrownBy( - () -> jinjavaBeanELResolver.getValue(elContext, "abcd", "property1") + assertThatThrownBy(() -> + jinjavaBeanELResolver.getValue(elContext, "abcd", "property1") ) .isInstanceOf(PropertyNotFoundException.class) .hasMessageStartingWith("Could not find property"); diff --git a/src/test/java/com/hubspot/jinjava/el/ext/PowerOfTest.java b/src/test/java/com/hubspot/jinjava/el/ext/PowerOfTest.java index 3eb5314d2..2163eb12d 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/PowerOfTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/PowerOfTest.java @@ -36,7 +36,7 @@ public void testPowerOfInteger() { { "{% set x = base ** negativeExponent %}{{x}}", "0" }, { "{% set x = 2 ** -8 %}{{x}}", "0" }, { "{% set x = negativeBase ** oddExponent %}{{x}}", "-128" }, - { "{% set x = -2 ** 7 %}{{x}}", "-128" } + { "{% set x = -2 ** 7 %}{{x}}", "-128" }, }; for (String[] testCase : testCases) { @@ -66,7 +66,7 @@ public void testPowerOfFractional() { { "{% set x = base ** negativeExponent %}{{x}}", "0.00390625" }, { "{% set x = 2 ** -8.0 %}{{x}}", "0.00390625" }, { "{% set x = negativeBase ** oddExponent %}{{x}}", "-128.0" }, - { "{% set x = -2 ** 7.0 %}{{x}}", "-128.0" } + { "{% set x = -2 ** 7.0 %}{{x}}", "-128.0" }, }; for (String[] testCase : testCases) { diff --git a/src/test/java/com/hubspot/jinjava/el/ext/RangeStringTest.java b/src/test/java/com/hubspot/jinjava/el/ext/RangeStringTest.java index 09311230d..b5f98d4a6 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/RangeStringTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/RangeStringTest.java @@ -25,6 +25,7 @@ * Created by anev on 11/05/16. */ public class RangeStringTest { + private Jinjava jinjava; private Map context; diff --git a/src/test/java/com/hubspot/jinjava/el/ext/TruncDivTest.java b/src/test/java/com/hubspot/jinjava/el/ext/TruncDivTest.java index 5fe4553fd..f9fbaae96 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/TruncDivTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/TruncDivTest.java @@ -11,6 +11,7 @@ import org.junit.Test; public class TruncDivTest { + private Jinjava jinja; @Before @@ -39,7 +40,7 @@ public void testTruncDivInteger() { { "{% set x = dividend // negativeDivisor %}{{x}}", "-3" }, { "{% set x = 5 // -2 %}{{x}}", "-3" }, { "{% set x = negativeDividend // negativeDivisor %}{{x}}", "2" }, - { "{% set x = -5 // -2 %}{{x}}", "2" } + { "{% set x = -5 // -2 %}{{x}}", "2" }, }; for (String[] testCase : testCases) { @@ -71,7 +72,7 @@ public void testTruncDivFractional() { { "{% set x = dividend // negativeDivisor %}{{x}}", "-3.0" }, { "{% set x = 5.0 // -2 %}{{x}}", "-3.0" }, { "{% set x = negativeDividend // negativeDivisor %}{{x}}", "2.0" }, - { "{% set x = -5.0 // -2 %}{{x}}", "2.0" } + { "{% set x = -5.0 // -2 %}{{x}}", "2.0" }, }; for (String[] testCase : testCases) { diff --git a/src/test/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifierTest.java b/src/test/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifierTest.java index e618e3d66..2aa6fd09f 100644 --- a/src/test/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifierTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifierTest.java @@ -12,6 +12,7 @@ import org.junit.Test; public class EagerAstIdentifierTest extends BaseInterpretingTest { + private JinjavaELContext elContext; @Before @@ -29,7 +30,7 @@ public void itSavesNullEvalResult() { new ValueExpression[] { jinjava .getEagerExpressionFactory() - .createValueExpression(elContext, "#{foo}", Object.class) + .createValueExpression(elContext, "#{foo}", Object.class), } ), elContext diff --git a/src/test/java/com/hubspot/jinjava/interpret/ContextTest.java b/src/test/java/com/hubspot/jinjava/interpret/ContextTest.java index e3565fcb2..7ed722a58 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/ContextTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/ContextTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class ContextTest { + private static final String RESOLVED_EXPRESSION = "exp"; private static final String RESOLVED_FUNCTION = "func"; private static final String RESOLVED_VALUE = "val"; diff --git a/src/test/java/com/hubspot/jinjava/interpret/DeferredTest.java b/src/test/java/com/hubspot/jinjava/interpret/DeferredTest.java index c81a1a3ca..cdf3ea825 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/DeferredTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/DeferredTest.java @@ -17,6 +17,7 @@ import org.junit.Test; public class DeferredTest { + private JinjavaInterpreter interpreter; private Jinjava jinjava = new Jinjava(); Context globalContext = new Context(); @@ -251,9 +252,8 @@ public void itDefersAllVariablesUsedInDeferredNode() { DeferredValue varInScopeDeferred = (DeferredValue) varInScope; assertThat(varInScopeDeferred.getOriginalValue()).isEqualTo("outside if statement"); - HashMap deferredContext = DeferredValueUtils.getDeferredContextWithOriginalValues( - localContext - ); + HashMap deferredContext = + DeferredValueUtils.getDeferredContextWithOriginalValues(localContext); deferredContext.forEach(localContext::put); String secondRender = interpreter.render(output); assertThat(secondRender).isEqualTo("outside if statement entered if statement"); @@ -317,9 +317,8 @@ public void puttingDeferredVariablesOnParentScopesDoesNotBreakSetTag() { DeferredValue varSetInsideDeferred = (DeferredValue) varSetInside; assertThat(varSetInsideDeferred.getOriginalValue()).isEqualTo("inside first scope"); - HashMap deferredContext = DeferredValueUtils.getDeferredContextWithOriginalValues( - localContext - ); + HashMap deferredContext = + DeferredValueUtils.getDeferredContextWithOriginalValues(localContext); deferredContext.forEach(localContext::put); String secondRender = interpreter.render(output); assertThat(secondRender.trim()) @@ -359,8 +358,8 @@ public void itMarksVariablesUsedAsMapKeysAsDeferred() { Object deferredValue2 = localContext.get("deferredValue2"); localContext .getDeferredNodes() - .forEach( - node -> DeferredValueUtils.findAndMarkDeferredProperties(localContext, node) + .forEach(node -> + DeferredValueUtils.findAndMarkDeferredProperties(localContext, node) ); assertThat(deferredValue2).isInstanceOf(DeferredValue.class); assertThat(output) diff --git a/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java b/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java index 16e3d990b..e8e9641a1 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java @@ -32,6 +32,7 @@ import org.junit.Test; public class JinjavaInterpreterTest { + private Jinjava jinjava; private JinjavaInterpreter interpreter; private TokenScannerSymbols symbols; @@ -102,6 +103,7 @@ public void resolveBlockStubsWithCycle() { // Ex VariableChain stuff static class Foo { + private String bar; public Foo(String bar) { @@ -154,10 +156,10 @@ public void jsonIgnore() { @Test public void triesBeanMethodFirst() { assertThat( - interpreter - .resolveProperty(ZonedDateTime.parse("2013-09-19T12:12:12+00:00"), "year") - .toString() - ) + interpreter + .resolveProperty(ZonedDateTime.parse("2013-09-19T12:12:12+00:00"), "year") + .toString() + ) .isEqualTo("2013"); } @@ -298,7 +300,7 @@ public void itKnowsThatMethodIsResolved() { "{% set a, b = {}, [] %}{% macro a.foo()%} 1-{{ b.bar() }}. {% endmacro %} {{ a.foo() }}"; RenderResult renderResult = new Jinjava() - .renderForResult(input, ImmutableMap.of("deferred", DeferredValue.instance())); + .renderForResult(input, ImmutableMap.of("deferred", DeferredValue.instance())); assertThat(renderResult.getOutput().trim()).isEqualTo("1-."); // Does not contain an error about 'a.foo()' being unknown. assertThat(renderResult.getErrors()).hasSize(1); @@ -307,20 +309,19 @@ public void itKnowsThatMethodIsResolved() { @Test public void itThrowsFatalErrors() { interpreter.getContext().setThrowInterpreterErrors(true); - assertThatThrownBy( - () -> - interpreter.addError( - new TemplateError( - ErrorType.FATAL, - ErrorReason.UNKNOWN, - ErrorItem.PROPERTY, - "", - "", - interpreter.getLineNumber(), - interpreter.getPosition(), - new RuntimeException() - ) + assertThatThrownBy(() -> + interpreter.addError( + new TemplateError( + ErrorType.FATAL, + ErrorReason.UNKNOWN, + ErrorItem.PROPERTY, + "", + "", + interpreter.getLineNumber(), + interpreter.getPosition(), + new RuntimeException() ) + ) ) .isInstanceOf(TemplateSyntaxException.class); assertThat(interpreter.getErrors()).isEmpty(); diff --git a/src/test/java/com/hubspot/jinjava/interpret/LegacyOperatorPrecedenceTest.java b/src/test/java/com/hubspot/jinjava/interpret/LegacyOperatorPrecedenceTest.java index 649e6ec02..576193902 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/LegacyOperatorPrecedenceTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/LegacyOperatorPrecedenceTest.java @@ -11,6 +11,7 @@ import org.junit.Test; public class LegacyOperatorPrecedenceTest { + Jinjava legacy; Jinjava modern; diff --git a/src/test/java/com/hubspot/jinjava/interpret/LegacyWhitespaceControlParsingTest.java b/src/test/java/com/hubspot/jinjava/interpret/LegacyWhitespaceControlParsingTest.java index c87e0228c..2033ee939 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/LegacyWhitespaceControlParsingTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/LegacyWhitespaceControlParsingTest.java @@ -11,6 +11,7 @@ import org.junit.Test; public class LegacyWhitespaceControlParsingTest { + Jinjava legacy; Jinjava modern; diff --git a/src/test/java/com/hubspot/jinjava/interpret/TemplateErrorTest.java b/src/test/java/com/hubspot/jinjava/interpret/TemplateErrorTest.java index c0e4d9ad2..7abeec039 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/TemplateErrorTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/TemplateErrorTest.java @@ -56,7 +56,7 @@ public void itRetainsFieldNameCaseForUnknownToken() { @Test public void itSetsFieldNameCaseForSyntaxErrorInFor() { RenderResult renderResult = new Jinjava() - .renderForResult("{% for item inna navigation %}{% endfor %}", ImmutableMap.of()); + .renderForResult("{% for item inna navigation %}{% endfor %}", ImmutableMap.of()); assertThat(renderResult.getErrors().get(0).getFieldName()) .isEqualTo("item inna navigation"); } diff --git a/src/test/java/com/hubspot/jinjava/interpret/VariableFunctionTest.java b/src/test/java/com/hubspot/jinjava/interpret/VariableFunctionTest.java index 132935be3..a0b8169f7 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/VariableFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/VariableFunctionTest.java @@ -21,6 +21,7 @@ import org.junit.Test; public class VariableFunctionTest { + private static final DynamicVariableResolver VARIABLE_FUNCTION = s -> { switch (s) { case "name": diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingAllExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingAllExpTestTest.java index 89d381816..37e2d5cbd 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingAllExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingAllExpTestTest.java @@ -7,72 +7,73 @@ import org.junit.Test; public class IsContainingAllExpTestTest extends BaseJinjavaTest { + private static final String CONTAINING_TEMPLATE = "{%% if %s is containingall %s %%}pass{%% else %%}fail{%% endif %%}"; @Test public void itPassesOnContainedValues() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "[1, 2]"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "[1, 2]"), + new HashMap<>() ) + ) .isEqualTo("pass"); } @Test public void itPassesOnContainedDuplicatedValues() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "[1, 2, 2]"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "[1, 2, 2]"), + new HashMap<>() ) + ) .isEqualTo("pass"); } @Test public void itFailsOnOnlySomeContainedValues() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "[1, 2, 4]"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "[1, 2, 4]"), + new HashMap<>() ) + ) .isEqualTo("fail"); } @Test public void itFailsOnNullSequence() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "null", "[1, 2, 4]"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "null", "[1, 2, 4]"), + new HashMap<>() ) + ) .isEqualTo("fail"); } @Test public void itFailsOnNullValues() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "null"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "null"), + new HashMap<>() ) + ) .isEqualTo("fail"); } @Test public void itPerformsTypeConversion() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "['2', '3']"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "['2', '3']"), + new HashMap<>() ) + ) .isEqualTo("pass"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingExpTestTest.java index 652270fc6..bceab173d 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsContainingExpTestTest.java @@ -7,80 +7,78 @@ import org.junit.Test; public class IsContainingExpTestTest extends BaseJinjavaTest { + private static final String CONTAINING_TEMPLATE = "{%% if %s is containing %s %%}pass{%% else %%}fail{%% endif %%}"; @Test public void itPassesOnContainedValue() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "2"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "2"), + new HashMap<>() ) + ) .isEqualTo("pass"); } @Test public void itFailsOnNullContainedValue() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, null]", "null"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, null]", "null"), + new HashMap<>() ) + ) .isEqualTo("fail"); } @Test public void itFailsOnMissingValue() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "4"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "4"), + new HashMap<>() ) + ) .isEqualTo("fail"); } @Test public void itFailsOnEmptyValue() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", ""), - new HashMap<>() - ) - ) + jinjava.render(String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", ""), new HashMap<>()) + ) .isEqualTo("fail"); } @Test public void itFailsOnNullValue() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "null"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "null"), + new HashMap<>() ) + ) .isEqualTo("fail"); } @Test public void itFailsOnNullSequence() { assertThat( - jinjava.render(String.format(CONTAINING_TEMPLATE, "null", "2"), new HashMap<>()) - ) + jinjava.render(String.format(CONTAINING_TEMPLATE, "null", "2"), new HashMap<>()) + ) .isEqualTo("fail"); } @Test public void itPerformsTypeConversion() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "'2'"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "'2'"), + new HashMap<>() ) + ) .isEqualTo("pass"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTestTest.java index fbe98aa63..12c774ca4 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsEqualToExpTestTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class IsEqualToExpTestTest extends BaseJinjavaTest { + private static final String EQUAL_TEMPLATE = "{{ %s is equalto %s }}"; @Test @@ -22,37 +23,37 @@ public void itEquatesNumbers() { @Test public void itEquatesStrings() { assertThat( - jinjava.render( - String.format(EQUAL_TEMPLATE, "\"jinjava\"", "\"jinjava\""), - new HashMap<>() - ) + jinjava.render( + String.format(EQUAL_TEMPLATE, "\"jinjava\"", "\"jinjava\""), + new HashMap<>() ) + ) .isEqualTo("true"); assertThat( - jinjava.render( - String.format(EQUAL_TEMPLATE, "\"jinjava\"", "\"not jinjava\""), - new HashMap<>() - ) + jinjava.render( + String.format(EQUAL_TEMPLATE, "\"jinjava\"", "\"not jinjava\""), + new HashMap<>() ) + ) .isEqualTo("false"); } @Test public void itEquatesCollectionsToStrings() { assertThat( - jinjava.render( - String.format(EQUAL_TEMPLATE, "\"[1, 2, 3]\"", "[1, 2, 3]"), - new HashMap<>() - ) + jinjava.render( + String.format(EQUAL_TEMPLATE, "\"[1, 2, 3]\"", "[1, 2, 3]"), + new HashMap<>() ) + ) .isEqualTo("true"); assertThat( - jinjava.render( - String.format(EQUAL_TEMPLATE, "\"[1, 2, 3]\"", "[1, 2, 4]"), - new HashMap<>() - ) + jinjava.render( + String.format(EQUAL_TEMPLATE, "\"[1, 2, 3]\"", "[1, 2, 4]"), + new HashMap<>() ) + ) .isEqualTo("false"); } @@ -84,32 +85,32 @@ private String compareStringAndCollection(int size) { @Test public void itEquatesBooleans() { assertThat( - jinjava.render(String.format(EQUAL_TEMPLATE, "true", "true"), new HashMap<>()) - ) + jinjava.render(String.format(EQUAL_TEMPLATE, "true", "true"), new HashMap<>()) + ) .isEqualTo("true"); assertThat( - jinjava.render(String.format(EQUAL_TEMPLATE, "true", "false"), new HashMap<>()) - ) + jinjava.render(String.format(EQUAL_TEMPLATE, "true", "false"), new HashMap<>()) + ) .isEqualTo("false"); } @Test public void itEquatesDifferentTypes() { assertThat( - jinjava.render(String.format(EQUAL_TEMPLATE, "4", "\"4\""), new HashMap<>()) - ) + jinjava.render(String.format(EQUAL_TEMPLATE, "4", "\"4\""), new HashMap<>()) + ) .isEqualTo("true"); assertThat( - jinjava.render(String.format(EQUAL_TEMPLATE, "4", "\"5\""), new HashMap<>()) - ) + jinjava.render(String.format(EQUAL_TEMPLATE, "4", "\"5\""), new HashMap<>()) + ) .isEqualTo("false"); assertThat( - jinjava.render(String.format(EQUAL_TEMPLATE, "'c'", "\"c\""), new HashMap<>()) - ) + jinjava.render(String.format(EQUAL_TEMPLATE, "'c'", "\"c\""), new HashMap<>()) + ) .isEqualTo("true"); assertThat( - jinjava.render(String.format(EQUAL_TEMPLATE, "'c'", "\"b\""), new HashMap<>()) - ) + jinjava.render(String.format(EQUAL_TEMPLATE, "'c'", "\"b\""), new HashMap<>()) + ) .isEqualTo("false"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTestTest.java index e93272d27..9667a6bbe 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsFloatExpTestTest.java @@ -34,17 +34,14 @@ public void testWithAddFilter() { assertThat(jinjava.render("{{ (4|add(-4.5)) is float }}", new HashMap<>())) .isEqualTo("true"); assertThat( - jinjava.render( - "{{ (4|add(4.0000000000000000000001)) is float }}", - new HashMap<>() - ) - ) + jinjava.render("{{ (4|add(4.0000000000000000000001)) is float }}", new HashMap<>()) + ) .isEqualTo("true"); assertThat(jinjava.render("{{ (4|add(40.0)) is float }}", new HashMap<>())) .isEqualTo("true"); assertThat( - jinjava.render("{{ (4|add(1000000000000000000)) is float }}", new HashMap<>()) - ) + jinjava.render("{{ (4|add(1000000000000000000)) is float }}", new HashMap<>()) + ) .isEqualTo("false"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTestTest.java index 62ae20da4..458767471 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsIntegerExpTestTest.java @@ -14,8 +14,8 @@ public void testValidIntegers() { assertThat(jinjava.render("{{ -1 is integer }}", new HashMap<>())).isEqualTo("true"); long number = Integer.MAX_VALUE; assertThat( - jinjava.render(String.format("{{ %d is integer }}", number + 1), new HashMap<>()) - ) + jinjava.render(String.format("{{ %d is integer }}", number + 1), new HashMap<>()) + ) .isEqualTo("true"); assertThat(jinjava.render("{{ 1000000000000000000 is integer }}", new HashMap<>())) .isEqualTo("true"); @@ -40,17 +40,17 @@ public void testWithAddFilter() { assertThat(jinjava.render("{{ (4|add(-4.5)) is integer }}", new HashMap<>())) .isEqualTo("false"); assertThat( - jinjava.render( - "{{ (4|add(4.0000000000000000000001)) is integer }}", - new HashMap<>() - ) + jinjava.render( + "{{ (4|add(4.0000000000000000000001)) is integer }}", + new HashMap<>() ) + ) .isEqualTo("false"); assertThat(jinjava.render("{{ (4|add(40.0)) is integer }}", new HashMap<>())) .isEqualTo("false"); assertThat( - jinjava.render("{{ (4|add(1000000000000000000)) is integer }}", new HashMap<>()) - ) + jinjava.render("{{ (4|add(1000000000000000000)) is integer }}", new HashMap<>()) + ) .isEqualTo("true"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTestTest.java index 268445679..e582316f0 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringContainingExpTestTest.java @@ -8,38 +8,39 @@ import org.junit.Test; public class IsStringContainingExpTestTest extends BaseJinjavaTest { + private static final String CONTAINING_TEMPLATE = "{{ var is string_containing arg }}"; @Test public void itReturnsTrueForContainedString() { assertThat( - jinjava.render( - CONTAINING_TEMPLATE, - ImmutableMap.of("var", "testing", "arg", "esti") - ) + jinjava.render( + CONTAINING_TEMPLATE, + ImmutableMap.of("var", "testing", "arg", "esti") ) + ) .isEqualTo("true"); assertThat( - jinjava.render(CONTAINING_TEMPLATE, ImmutableMap.of("var", "testing", "arg", "")) - ) + jinjava.render(CONTAINING_TEMPLATE, ImmutableMap.of("var", "testing", "arg", "")) + ) .isEqualTo("true"); assertThat( - jinjava.render( - CONTAINING_TEMPLATE, - ImmutableMap.of("var", "testing", "arg", "testing") - ) + jinjava.render( + CONTAINING_TEMPLATE, + ImmutableMap.of("var", "testing", "arg", "testing") ) + ) .isEqualTo("true"); } @Test public void itReturnsFalseForExcludedString() { assertThat( - jinjava.render( - CONTAINING_TEMPLATE, - ImmutableMap.of("var", "testing", "arg", "blah") - ) + jinjava.render( + CONTAINING_TEMPLATE, + ImmutableMap.of("var", "testing", "arg", "blah") ) + ) .isEqualTo("false"); } @@ -52,11 +53,11 @@ public void itReturnsFalseForNull() { @Test public void itWorksForSafeString() { assertThat( - jinjava.render( - CONTAINING_TEMPLATE, - ImmutableMap.of("var", "testing", "arg", new SafeString("testing")) - ) + jinjava.render( + CONTAINING_TEMPLATE, + ImmutableMap.of("var", "testing", "arg", new SafeString("testing")) ) + ) .isEqualTo("true"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTestTest.java index 4793bd376..0c3aa585c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsStringStartingWithExpTestTest.java @@ -8,35 +8,36 @@ import org.junit.Test; public class IsStringStartingWithExpTestTest extends BaseJinjavaTest { + private static final String STARTING_TEMPLATE = "{{ var is string_startingwith arg }}"; @Test public void itReturnsTrueForContainedString() { assertThat( - jinjava.render(STARTING_TEMPLATE, ImmutableMap.of("var", "testing", "arg", "tes")) - ) + jinjava.render(STARTING_TEMPLATE, ImmutableMap.of("var", "testing", "arg", "tes")) + ) .isEqualTo("true"); assertThat( - jinjava.render(STARTING_TEMPLATE, ImmutableMap.of("var", "testing", "arg", "")) - ) + jinjava.render(STARTING_TEMPLATE, ImmutableMap.of("var", "testing", "arg", "")) + ) .isEqualTo("true"); assertThat( - jinjava.render( - STARTING_TEMPLATE, - ImmutableMap.of("var", "testing", "arg", "testing") - ) + jinjava.render( + STARTING_TEMPLATE, + ImmutableMap.of("var", "testing", "arg", "testing") ) + ) .isEqualTo("true"); } @Test public void itReturnsFalseForExcludedString() { assertThat( - jinjava.render( - STARTING_TEMPLATE, - ImmutableMap.of("var", "testing", "arg", "esting") - ) + jinjava.render( + STARTING_TEMPLATE, + ImmutableMap.of("var", "testing", "arg", "esting") ) + ) .isEqualTo("false"); } @@ -49,11 +50,11 @@ public void itReturnsFalseForNull() { @Test public void itWorksForSafeString() { assertThat( - jinjava.render( - STARTING_TEMPLATE, - ImmutableMap.of("var", "testing", "arg", new SafeString("tes")) - ) + jinjava.render( + STARTING_TEMPLATE, + ImmutableMap.of("var", "testing", "arg", new SafeString("tes")) ) + ) .isEqualTo("true"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTestTest.java index e0a7dfd94..e6de57dbc 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsUpperExpTestTest.java @@ -8,6 +8,7 @@ import org.junit.Test; public class IsUpperExpTestTest extends BaseJinjavaTest { + private static final String STARTING_TEMPLATE = "{{ var is upper }}"; private static final String SAFE_TEMPLATE = "{{ (var|safe) is upper }}"; @@ -26,8 +27,8 @@ public void itReturnsFalseForLowerString() { @Test public void itWorksForSafeStrings() { assertThat( - jinjava.render(STARTING_TEMPLATE, ImmutableMap.of("var", new SafeString("UPPER"))) - ) + jinjava.render(STARTING_TEMPLATE, ImmutableMap.of("var", new SafeString("UPPER"))) + ) .isEqualTo("true"); assertThat(jinjava.render(SAFE_TEMPLATE, ImmutableMap.of("var", "UPPER"))) .isEqualTo("true"); diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/IsWithinExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/IsWithinExpTestTest.java index 62b6b705b..664ec5e1b 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/IsWithinExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/IsWithinExpTestTest.java @@ -7,14 +7,15 @@ import org.junit.Test; public class IsWithinExpTestTest extends BaseJinjavaTest { + private static final String IN_TEMPLATE = "{%% if %s is within %s %%}pass{%% else %%}fail{%% endif %%}"; @Test public void itPassesOnValueInSequence() { assertThat( - jinjava.render(String.format(IN_TEMPLATE, "2", "[1, 2, 3]"), new HashMap<>()) - ) + jinjava.render(String.format(IN_TEMPLATE, "2", "[1, 2, 3]"), new HashMap<>()) + ) .isEqualTo("pass"); } @@ -33,27 +34,27 @@ public void itPassesOnValueInSequence() { @Test public void itFailsOnValueNotInSequence() { assertThat( - jinjava.render(String.format(IN_TEMPLATE, "4", "[1, 2, 3]"), new HashMap<>()) - ) + jinjava.render(String.format(IN_TEMPLATE, "4", "[1, 2, 3]"), new HashMap<>()) + ) .isEqualTo("fail"); } @Test public void itFailsOnNullValueNotInSequence() { assertThat( - jinjava.render(String.format(IN_TEMPLATE, "null", "[1, 2, 3]"), new HashMap<>()) - ) + jinjava.render(String.format(IN_TEMPLATE, "null", "[1, 2, 3]"), new HashMap<>()) + ) .isEqualTo("fail"); } @Test public void itPerformsTypeConversion() { assertThat( - jinjava.render( - String.format(IN_TEMPLATE, "'1'", "[100000000000, 1]"), - new HashMap<>() - ) + jinjava.render( + String.format(IN_TEMPLATE, "'1'", "[100000000000, 1]"), + new HashMap<>() ) + ) .isEqualTo("pass"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/NegatedExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/NegatedExpTestTest.java index 2720b983e..58f3c0700 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/NegatedExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/NegatedExpTestTest.java @@ -7,6 +7,7 @@ import org.junit.Test; public class NegatedExpTestTest extends BaseJinjavaTest { + private static final String TEMPLATE = "{%% if %s is %s %s %%}pass{%% else %%}fail{%% endif %%}"; private static final String CONTAINING_TEMPLATE = @@ -15,23 +16,23 @@ public class NegatedExpTestTest extends BaseJinjavaTest { @Test public void itNegatesDefined() { assertThat( - jinjava.render(String.format(TEMPLATE, "blah", "", "defined"), new HashMap<>()) - ) + jinjava.render(String.format(TEMPLATE, "blah", "", "defined"), new HashMap<>()) + ) .isEqualTo("fail"); assertThat( - jinjava.render(String.format(TEMPLATE, "blah", "not", "defined"), new HashMap<>()) - ) + jinjava.render(String.format(TEMPLATE, "blah", "not", "defined"), new HashMap<>()) + ) .isEqualTo("pass"); } @Test public void itNegatesContaining() { assertThat( - jinjava.render( - String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "4"), - new HashMap<>() - ) + jinjava.render( + String.format(CONTAINING_TEMPLATE, "[1, 2, 3]", "4"), + new HashMap<>() ) + ) .isEqualTo("pass"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/exptest/isDivisibleByExpTestTest.java b/src/test/java/com/hubspot/jinjava/lib/exptest/isDivisibleByExpTestTest.java index f01e4d7bc..a9976a30c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/exptest/isDivisibleByExpTestTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/exptest/isDivisibleByExpTestTest.java @@ -11,6 +11,7 @@ import org.junit.Test; public class isDivisibleByExpTestTest extends BaseJinjavaTest { + private static final String DIVISIBLE_BY_TEMPLATE = "{{ %s is divisibleby %s }}"; @Test diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/AbstractFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/AbstractFilterTest.java index 35a45bb43..5a449af72 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/AbstractFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/AbstractFilterTest.java @@ -15,6 +15,7 @@ import org.junit.Test; public class AbstractFilterTest extends BaseInterpretingTest { + private ArgCapturingFilter filter; public static class NoJinjavaDocFilter extends ArgCapturingFilter {} @@ -37,7 +38,7 @@ public void itDoesNotRequireParams() { params = { @JinjavaParam(value = "1st", desc = "1st"), @JinjavaParam(value = "2nd", desc = "2nd"), - @JinjavaParam(value = "3rd", desc = "3rd") + @JinjavaParam(value = "3rd", desc = "3rd"), } ) public static class TwoParamTypesFilter extends ArgCapturingFilter {} @@ -65,7 +66,7 @@ public void itSupportsMixingOfPositionalAndNamedArgs() { @JinjavaParam(value = "double", type = "double", desc = "double"), @JinjavaParam(value = "number", type = "number", desc = "number"), @JinjavaParam(value = "object", type = "object", desc = "object"), - @JinjavaParam(value = "dict", type = "dict", desc = "dict") + @JinjavaParam(value = "dict", type = "dict", desc = "dict"), } ) public static class AllParamTypesFilter extends ArgCapturingFilter {} @@ -107,8 +108,8 @@ public void itParsesNumericAndBooleanInput() { public void itValidatesRequiredArgs() { filter = new AllParamTypesFilter(); - assertThatThrownBy( - () -> filter.filter(null, interpreter, new Object[] {}, Collections.emptyMap()) + assertThatThrownBy(() -> + filter.filter(null, interpreter, new Object[] {}, Collections.emptyMap()) ) .hasMessageContaining("Argument named 'boolean' is required"); } @@ -117,14 +118,13 @@ public void itValidatesRequiredArgs() { public void itErrorsOnTooManyArgs() { filter = new AllParamTypesFilter(); - assertThatThrownBy( - () -> - filter.filter( - null, - interpreter, - new Object[] { true, null, null, null, null, null, null, null, null }, - Collections.emptyMap() - ) + assertThatThrownBy(() -> + filter.filter( + null, + interpreter, + new Object[] { true, null, null, null, null, null, null, null, null }, + Collections.emptyMap() + ) ) .hasMessageContaining("Argument at index") .hasMessageContaining("is invalid"); @@ -134,19 +134,19 @@ public void itErrorsOnTooManyArgs() { public void itErrorsUnknownNamedArg() { filter = new AllParamTypesFilter(); - assertThatThrownBy( - () -> - filter.filter( - null, - interpreter, - new Object[] { true }, - ImmutableMap.of("unknown", "unknown") - ) + assertThatThrownBy(() -> + filter.filter( + null, + interpreter, + new Object[] { true }, + ImmutableMap.of("unknown", "unknown") + ) ) .hasMessageContaining("Argument named 'unknown' is invalid"); } public static class ArgCapturingFilter extends AbstractFilter { + public Map parsedArgs; @Override diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/AbstractSetFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/AbstractSetFilterTest.java index a1543765f..cc2455ffc 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/AbstractSetFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/AbstractSetFilterTest.java @@ -11,6 +11,7 @@ import org.junit.Test; public class AbstractSetFilterTest extends BaseJinjavaTest { + private static final IntersectFilter concreteSetFilter = new IntersectFilter(); @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/AdvancedFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/AdvancedFilterTest.java index ef16c4cab..6988a94f6 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/AdvancedFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/AdvancedFilterTest.java @@ -28,7 +28,6 @@ public void testOnlyArgs() { public void testOnlyKwargs() { Object[] expectedArgs = new Object[] {}; Map expectedKwargs = new HashMap() { - { put("named10", "str"); put("named2", 3L); @@ -41,11 +40,11 @@ public void testOnlyKwargs() { .registerFilter(new MyMirrorFilter(expectedArgs, expectedKwargs)); assertThat( - jinjava.render( - "{{ 'test'|mirror(named2=3, named10='str', namedB=true) }}", - new HashMap<>() - ) + jinjava.render( + "{{ 'test'|mirror(named2=3, named10='str', namedB=true) }}", + new HashMap<>() ) + ) .isEqualTo("test"); } @@ -53,7 +52,6 @@ public void testOnlyKwargs() { public void itTestsNullKwargs() { Object[] expectedArgs = new Object[] {}; Map expectedKwargs = new HashMap() { - { put("named1", null); } @@ -71,7 +69,6 @@ public void itTestsNullKwargs() { public void testMixedArgsAndKwargs() { Object[] expectedArgs = new Object[] { 1L, 2L }; Map expectedKwargs = new HashMap() { - { put("named", "test"); } @@ -89,7 +86,6 @@ public void testMixedArgsAndKwargs() { public void testUnorderedArgsAndKwargs() { Object[] expectedArgs = new Object[] { "1", 2L }; Map expectedKwargs = new HashMap() { - { put("named", "test"); } @@ -100,8 +96,8 @@ public void testUnorderedArgsAndKwargs() { .registerFilter(new MyMirrorFilter(expectedArgs, expectedKwargs)); assertThat( - jinjava.render("{{ 'test'|mirror('1', named='test', 2) }}", new HashMap<>()) - ) + jinjava.render("{{ 'test'|mirror('1', named='test', 2) }}", new HashMap<>()) + ) .isEqualTo("test"); } @@ -109,7 +105,6 @@ public void testUnorderedArgsAndKwargs() { public void testRepeatedKwargs() { Object[] expectedArgs = new Object[] { true }; Map expectedKwargs = new HashMap() { - { put("named", "overwrite"); } @@ -120,15 +115,16 @@ public void testRepeatedKwargs() { .registerFilter(new MyMirrorFilter(expectedArgs, expectedKwargs)); assertThat( - jinjava.render( - "{{ 'test'|mirror(true, named='test', named='overwrite') }}", - new HashMap<>() - ) + jinjava.render( + "{{ 'test'|mirror(true, named='test', named='overwrite') }}", + new HashMap<>() ) + ) .isEqualTo("test"); } private static class MyMirrorFilter implements AdvancedFilter { + private Object[] expectedArgs; private Map expectedKwargs; diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/Base64FilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/Base64FilterTest.java index e9e5d915d..eb4563949 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/Base64FilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/Base64FilterTest.java @@ -20,41 +20,41 @@ public void itEncodesWithDefaultCharset() { @Test public void itEncodesWithUtf16Le() { assertThat( - jinjava.render( - "{{ '\uD801\uDC37'|b64encode(encoding='utf-16le') }}", - Collections.emptyMap() - ) + jinjava.render( + "{{ '\uD801\uDC37'|b64encode(encoding='utf-16le') }}", + Collections.emptyMap() ) + ) .isEqualTo("Adg33A=="); } @Test public void itDecodesWithUtf16Le() { assertThat( - jinjava.render( - "{{ 'Adg33A=='|b64decode(encoding='utf-16le') }}", - Collections.emptyMap() - ) + jinjava.render( + "{{ 'Adg33A=='|b64decode(encoding='utf-16le') }}", + Collections.emptyMap() ) + ) .isEqualTo("\uD801\uDC37"); } @Test public void itEncodesAndDecodesDefaultCharset() { assertThat( - jinjava.render("{{ 123456789|b64encode|b64decode }}", Collections.emptyMap()) - ) + jinjava.render("{{ 123456789|b64encode|b64decode }}", Collections.emptyMap()) + ) .isEqualTo("123456789"); } @Test public void itEncodesAndDecodesUtf16Le() { assertThat( - jinjava.render( - "{{ 123456789|b64encode(encoding='utf-16le')|b64decode(encoding='utf-16le') }}", - Collections.emptyMap() - ) + jinjava.render( + "{{ 123456789|b64encode(encoding='utf-16le')|b64decode(encoding='utf-16le') }}", + Collections.emptyMap() ) + ) .isEqualTo("123456789"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/BoolFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/BoolFilterTest.java index d3700982b..e34a2a97a 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/BoolFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/BoolFilterTest.java @@ -20,6 +20,7 @@ import org.junit.Test; public class BoolFilterTest extends BaseInterpretingTest { + BoolFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/CloseHtmlFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/CloseHtmlFilterTest.java index 4b7f3be51..c733d9835 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/CloseHtmlFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/CloseHtmlFilterTest.java @@ -7,6 +7,7 @@ import org.junit.Test; public class CloseHtmlFilterTest extends BaseInterpretingTest { + CloseHtmlFilter f; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DAliasedDefaultFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DAliasedDefaultFilterTest.java index 5e95309ce..3234d0111 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/DAliasedDefaultFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DAliasedDefaultFilterTest.java @@ -11,8 +11,8 @@ public class DAliasedDefaultFilterTest extends BaseJinjavaTest { @Test public void itSetsDefaultStringValues() { assertThat( - jinjava.render("{% set d=d |d(\"some random value\") %}{{ d }}", new HashMap<>()) - ) + jinjava.render("{% set d=d |d(\"some random value\") %}{{ d }}", new HashMap<>()) + ) .isEqualTo("some random value"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilterTest.java index 7700d3d8e..13761e0b9 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DateTimeFormatFilterTest.java @@ -24,6 +24,7 @@ import org.junit.Test; public class DateTimeFormatFilterTest extends BaseInterpretingTest { + DateTimeFormatFilter filter; ZonedDateTime d; @@ -76,17 +77,17 @@ public void itSupportsTimezones() { assertThat(filter.filter(1539277785000L, interpreter, "%B %d, %Y, at %I:%M %p")) .isEqualTo("October 11, 2018, at 05:09 PM"); assertThat( - filter.filter( - 1539277785000L, - interpreter, - "%B %d, %Y, at %I:%M %p", - "America/New_York" - ) + filter.filter( + 1539277785000L, + interpreter, + "%B %d, %Y, at %I:%M %p", + "America/New_York" ) + ) .isEqualTo("October 11, 2018, at 01:09 PM"); assertThat( - filter.filter(1539277785000L, interpreter, "%B %d, %Y, at %I:%M %p", "UTC+8") - ) + filter.filter(1539277785000L, interpreter, "%B %d, %Y, at %I:%M %p", "UTC+8") + ) .isEqualTo("October 12, 2018, at 01:09 AM"); } @@ -116,24 +117,24 @@ public void itConvertsDatetimesByLocales() { @Test public void itConvertsToLocaleSpecificDateTimeFormat() { assertThat( - filter.filter( - 1539277785000L, - interpreter, - "%x %X - %c", - "America/New_York", - "en-US" - ) + filter.filter( + 1539277785000L, + interpreter, + "%x %X - %c", + "America/New_York", + "en-US" ) + ) .isEqualTo("10/11/18 1:09:45 PM - Oct 11, 2018, 1:09:45 PM"); assertThat( - filter.filter( - 1539277785000L, - interpreter, - "%x %X - %c", - "America/New_York", - "de-DE" - ) + filter.filter( + 1539277785000L, + interpreter, + "%x %X - %c", + "America/New_York", + "de-DE" ) + ) .isEqualTo("11.10.18 13:09:45 - 11.10.2018, 13:09:45"); } @@ -142,10 +143,8 @@ public void itDefaultsToEnglishForBadLocaleValues() { interpreter.getContext().put("d", d); assertThat( - interpreter.renderFlat( - "{{ d|datetimeformat('%A, %e %B', 'UTC', 'not_a_locale') }}" - ) - ) + interpreter.renderFlat("{{ d|datetimeformat('%A, %e %B', 'UTC', 'not_a_locale') }}") + ) .isEqualTo(Functions.dateTimeFormat(d, "%A, %e %B", "UTC", "America/Los_Angeles")); } @@ -154,10 +153,8 @@ public void itDefaultsToUtcForNullTimezone() { interpreter.getContext().put("d", d); assertThat( - interpreter.renderFlat( - "{{ d|datetimeformat('%A, %e %B, %I:%M %p', null, 'sv') }}" - ) - ) + interpreter.renderFlat("{{ d|datetimeformat('%A, %e %B, %I:%M %p', null, 'sv') }}") + ) .isEqualTo("onsdag, 6 november, 02:22 em"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java index ca9977c53..0faa5d4bc 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java @@ -21,84 +21,84 @@ public void setup() { @Test public void itSetsDefaultStringValues() { assertThat( - jinjava.render( - "{% set d=d | default(\"some random value\") %}{{ d }}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default(\"some random value\") %}{{ d }}", + new HashMap<>() ) + ) .isEqualTo("some random value"); } @Test public void itSetsDefaultObjectValue() { assertThat( - jinjava.render( - "{% set d=d | default({\"key\": \"value\"}) %}Value = {{ d.key }}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default({\"key\": \"value\"}) %}Value = {{ d.key }}", + new HashMap<>() ) + ) .isEqualTo("Value = value"); } @Test public void itChecksForType() { assertThat( - jinjava.render( - "{% set d=d | default({\"key\": \"value\"}) %}Type = {{ type(d.key) }}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default({\"key\": \"value\"}) %}Type = {{ type(d.key) }}", + new HashMap<>() ) + ) .isEqualTo("Type = str"); assertThat( - jinjava.render( - "{% set d=d | default(\"some random value\") %}{{ type(d) }}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default(\"some random value\") %}{{ type(d) }}", + new HashMap<>() ) + ) .isEqualTo("str"); } @Test public void itCorrectlyProcessesNamedParameters() { assertThat( - jinjava.render( - "{% set d=d | default(truthy=False, default_value={\"key\": \"value\"}) %}Type = {{ type(d.key) }}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default(truthy=False, default_value={\"key\": \"value\"}) %}Type = {{ type(d.key) }}", + new HashMap<>() ) + ) .isEqualTo("Type = str"); } @Test public void itIgnoresBadTruthyValue() { assertThat( - jinjava.render( - "{% set d=d | default({\"key\": \"value\"}, \"Blah\") %}Type = {{ type(d.key) }}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default({\"key\": \"value\"}, \"Blah\") %}Type = {{ type(d.key) }}", + new HashMap<>() ) + ) .isEqualTo("Type = str"); } @Test public void itDefaultsNullToNull() { assertThat( - jinjava.render( - "{% set d=d | default(null) %}{% if (d == null) %}default yields real null{% else %}default yields something other than null{% endif %}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default(null) %}{% if (d == null) %}default yields real null{% else %}default yields something other than null{% endif %}", + new HashMap<>() ) + ) .isEqualTo("default yields real null"); } @Test public void itDefaultsNullToNullWithTruthyParam() { assertThat( - jinjava.render( - "{% set d=d | default(null, true) %}{% if (d == null) %}default with truthy yields real null{% else %}default with truthy yields something other than null{% endif %}", - new HashMap<>() - ) + jinjava.render( + "{% set d=d | default(null, true) %}{% if (d == null) %}default with truthy yields real null{% else %}default with truthy yields something other than null{% endif %}", + new HashMap<>() ) + ) .isEqualTo("default with truthy yields real null"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DictSortFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DictSortFilterTest.java index 56943e76f..37c7ad299 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/DictSortFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DictSortFilterTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class DictSortFilterTest extends BaseJinjavaTest { + private static Map context; @BeforeClass diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DifferenceFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DifferenceFilterTest.java index 4a2ce8d0a..d5269d990 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/DifferenceFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DifferenceFilterTest.java @@ -17,12 +17,12 @@ public void setup() { @Test public void itComputesSetDifferences() { assertThat( - jinjava.render("{{ [1, 2, 3, 3, 4]|difference([1, 2, 5, 6]) }}", new HashMap<>()) - ) + jinjava.render("{{ [1, 2, 3, 3, 4]|difference([1, 2, 5, 6]) }}", new HashMap<>()) + ) .isEqualTo("[3, 4]"); assertThat( - jinjava.render("{{ ['do', 'ray']|difference(['ray', 'me']) }}", new HashMap<>()) - ) + jinjava.render("{{ ['do', 'ray']|difference(['ray', 'me']) }}", new HashMap<>()) + ) .isEqualTo("['do']"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DivideFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DivideFilterTest.java index 4f2bcf59c..9091d334b 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/DivideFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DivideFilterTest.java @@ -14,36 +14,36 @@ public class DivideFilterTest extends BaseJinjavaTest { @Test public void itDivides() { assertThat( - jinjava.render( - "{{ numerator|divide(denominator) }}", - ImmutableMap.of("numerator", 10, "denominator", 2) - ) + jinjava.render( + "{{ numerator|divide(denominator) }}", + ImmutableMap.of("numerator", 10, "denominator", 2) ) + ) .isEqualTo("5"); assertThat( - jinjava.render( - "{{ numerator // denominator }}", - ImmutableMap.of("numerator", 10, "denominator", 2) - ) + jinjava.render( + "{{ numerator // denominator }}", + ImmutableMap.of("numerator", 10, "denominator", 2) ) + ) .isEqualTo("5"); assertThat( - jinjava.render( - "{{ numerator / denominator }}", - ImmutableMap.of("numerator", 10, "denominator", 2) - ) + jinjava.render( + "{{ numerator / denominator }}", + ImmutableMap.of("numerator", 10, "denominator", 2) ) + ) .isEqualTo("5.0"); } @Test public void itDividesIntegersWithNonIntegerResult() { assertThat( - jinjava.render( - "{{ numerator|divide(denominator) }} {{ numerator / denominator }}", - ImmutableMap.of("numerator", 9, "denominator", 10) - ) + jinjava.render( + "{{ numerator|divide(denominator) }} {{ numerator / denominator }}", + ImmutableMap.of("numerator", 9, "denominator", 10) ) + ) .isEqualTo("1 0.9"); } @@ -60,19 +60,19 @@ public void itRendersWithMorePrecisionWithConfigOption() { ); assertThat( - jinjava.render( - "{{ numerator|divide(denominator) }}", - ImmutableMap.of("numerator", 2, "denominator", 100) - ) + jinjava.render( + "{{ numerator|divide(denominator) }}", + ImmutableMap.of("numerator", 2, "denominator", 100) ) + ) .isEqualTo("0"); assertThat( - customJinjava.render( - "{{ numerator|divide(denominator) }}", - ImmutableMap.of("numerator", 2, "denominator", 100) - ) + customJinjava.render( + "{{ numerator|divide(denominator) }}", + ImmutableMap.of("numerator", 2, "denominator", 100) ) + ) .isEqualTo("0.02"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeFilterTest.java index 40668a1da..8516c95d0 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeFilterTest.java @@ -14,6 +14,7 @@ import org.junit.Test; public class EscapeFilterTest extends BaseInterpretingTest { + EscapeFilter f; @Before @@ -33,10 +34,8 @@ public void testEscape() { @Test public void testSafeStringCanBeEscaped() { assertThat( - f - .filter(new SafeString("Previously marked as safe"), interpreter) - .toString() - ) + f.filter(new SafeString("Previously marked as safe"), interpreter).toString() + ) .isEqualTo("<a>Previously marked as safe<a/>"); assertThat(f.filter(new SafeString("Previously marked as safe"), interpreter)) .isInstanceOf(SafeString.class); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilterTest.java index 0fdd75835..b5d6be5b6 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJinjavaFilterTest.java @@ -8,6 +8,7 @@ import org.junit.Test; public class EscapeJinjavaFilterTest extends BaseInterpretingTest { + EscapeJinjavaFilter f; @Before @@ -34,8 +35,8 @@ public void testSafeStringCanBeEscaped() { @Test public void testDoesNotEscapeJson() { assertThat( - f.filter("{'foo': 'bar', '{{{ foo }}}': '{% bar %}'}", interpreter, "false") - ) + f.filter("{'foo': 'bar', '{{{ foo }}}': '{% bar %}'}", interpreter, "false") + ) .isEqualTo( "{'foo': 'bar', '{{{ foo }}}': '{% bar %}'}" ); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsFilterTest.java index 1b53149f8..e10fd6283 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsFilterTest.java @@ -44,19 +44,16 @@ public void testHandlesWhitespace() { @Test public void testHandlesDoubleQuotes() { assertThat( - jinjava.render( - "{{ 'Testing a \"quote for the week\"'|escapejs }}", - new HashMap<>() - ) - ) + jinjava.render("{{ 'Testing a \"quote for the week\"'|escapejs }}", new HashMap<>()) + ) .isEqualTo("Testing a \\\"quote for the week\\\""); } @Test public void testSafeStringCanBeEscaped() { assertThat( - jinjava.render("{{ 'Testing\nlineb\"reak\n'|safe|escapejs }}", new HashMap<>()) - ) + jinjava.render("{{ 'Testing\nlineb\"reak\n'|safe|escapejs }}", new HashMap<>()) + ) .isEqualTo("Testing\\nlineb\\\"reak\\n"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsonFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsonFilterTest.java index deed2d99a..c4569eef9 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsonFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/EscapeJsonFilterTest.java @@ -41,11 +41,11 @@ public void testHandlesWhitespace() { @Test public void testHandlesDoubleQuotes() { assertThat( - jinjava.render( - "{{ 'Testing a \"quote for the week\"'|escapejson }}", - new HashMap<>() - ) + jinjava.render( + "{{ 'Testing a \"quote for the week\"'|escapejson }}", + new HashMap<>() ) + ) .isEqualTo("Testing a \\\"quote for the week\\\""); } @@ -62,8 +62,8 @@ public void testHandleSingleQuote() { @Test public void testSafeStringCanBeEscaped() { assertThat( - jinjava.render("{{ 'Testing\nlineb\"reak\n'|safe|escapejs }}", new HashMap<>()) - ) + jinjava.render("{{ 'Testing\nlineb\"reak\n'|safe|escapejs }}", new HashMap<>()) + ) .isEqualTo("Testing\\nlineb\\\"reak\\n"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilterTest.java index 247149b67..58449a4b5 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/FileSizeFormatFilterTest.java @@ -22,16 +22,16 @@ public void testFileSizeFormatFilter() { assertThat(jinjava.render("{{1000|filesizeformat}}", new HashMap())) .isEqualTo("1.0 KB"); assertThat( - jinjava.render("{{1024|filesizeformat(true)}}", new HashMap()) - ) + jinjava.render("{{1024|filesizeformat(true)}}", new HashMap()) + ) .isEqualTo("1.0 KiB"); assertThat( - jinjava.render("{{3531836|filesizeformat(true)}}", new HashMap()) - ) + jinjava.render("{{3531836|filesizeformat(true)}}", new HashMap()) + ) .isEqualTo("3.4 MiB"); assertThat( - jinjava.render("{{1000000000|filesizeformat}}", new HashMap()) - ) + jinjava.render("{{1000000000|filesizeformat}}", new HashMap()) + ) .isEqualTo("1.0 GB"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/FirstFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/FirstFilterTest.java index b2dce50af..badd01a44 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/FirstFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/FirstFilterTest.java @@ -7,6 +7,7 @@ import org.junit.Test; public class FirstFilterTest { + FirstFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/FloatFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/FloatFilterTest.java index 24b5418d1..82cd59a88 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/FloatFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/FloatFilterTest.java @@ -28,6 +28,7 @@ import org.junit.Test; public class FloatFilterTest extends BaseInterpretingTest { + private static final Locale FRENCH_LOCALE = new Locale("fr", "FR"); private static final JinjavaConfig FRENCH_LOCALE_CONFIG = new JinjavaConfig( StandardCharsets.UTF_8, @@ -116,14 +117,14 @@ public void itDoesntInterpretUsCommasAndPeriodsWithFrenchLocale() { public void itInterpretsFrenchCommasAndPeriodsWithFrenchLocale() { interpreter = new Jinjava(FRENCH_LOCALE_CONFIG).newInterpreter(); assertThat( - filter.filter( - String.format( - "123%c123,45", - DecimalFormatSymbols.getInstance(Locale.FRENCH).getGroupingSeparator() - ), - interpreter - ) + filter.filter( + String.format( + "123%c123,45", + DecimalFormatSymbols.getInstance(Locale.FRENCH).getGroupingSeparator() + ), + interpreter ) + ) .isEqualTo(123123.45f); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/FormatFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/FormatFilterTest.java index c333d426f..c7e156ab4 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/FormatFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/FormatFilterTest.java @@ -20,8 +20,8 @@ public static void beforeClass() { @Test public void testFormatFilter() { assertThat( - jinjava.render("{{ '%s - %s'|format(\"Hello?\", \"Foo!\") }}", new HashMap<>()) - ) + jinjava.render("{{ '%s - %s'|format(\"Hello?\", \"Foo!\") }}", new HashMap<>()) + ) .isEqualTo("Hello? - Foo!"); } @@ -33,8 +33,8 @@ public void testFormatNumber() { @Test public void itThrowsExceptionOnMissingFormatArgument() { - assertThatThrownBy( - () -> jinjava.render("{{ '%s %s'|format(10000) }}", new HashMap<>()) + assertThatThrownBy(() -> + jinjava.render("{{ '%s %s'|format(10000) }}", new HashMap<>()) ) .isInstanceOf(FatalTemplateErrorsException.class) .hasMessageContaining("Missing format argument"); @@ -49,8 +49,7 @@ public void itThrowsExceptionOnBadConversion() { @Test public void itThrowsExceptionOnFormat() { - assertThatThrownBy( - () -> jinjava.render("{{ '%0.0f'|format(1000) }}", new HashMap<>()) + assertThatThrownBy(() -> jinjava.render("{{ '%0.0f'|format(1000) }}", new HashMap<>()) ) .isInstanceOf(FatalTemplateErrorsException.class) .hasMessageContaining("'%0.0f' is missing a width"); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/FormatNumberFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/FormatNumberFilterTest.java index d0134165d..aff5df24b 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/FormatNumberFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/FormatNumberFilterTest.java @@ -17,27 +17,27 @@ public void setup() {} @Test public void testFormatNumberFilter() { assertThat( - jinjava.render("{{1000|format_number('en-US')}}", new HashMap()) - ) + jinjava.render("{{1000|format_number('en-US')}}", new HashMap()) + ) .isEqualTo("1,000"); assertThat( - jinjava.render( - "{{ 1000.333|format_number('en-US') }}", - new HashMap() - ) + jinjava.render( + "{{ 1000.333|format_number('en-US') }}", + new HashMap() ) + ) .isEqualTo("1,000.333"); assertThat( - jinjava.render( - "{{ 1000.333|format_number('en-US', 2) }}", - new HashMap() - ) + jinjava.render( + "{{ 1000.333|format_number('en-US', 2) }}", + new HashMap() ) + ) .isEqualTo("1,000.33"); assertThat( - jinjava.render("{{ 1000|format_number('fr') }}", new HashMap()) - ) + jinjava.render("{{ 1000|format_number('fr') }}", new HashMap()) + ) .isEqualTo( String.format( "1%s000", @@ -45,11 +45,8 @@ public void testFormatNumberFilter() { ) ); assertThat( - jinjava.render( - "{{ 1000.333|format_number('fr') }}", - new HashMap() - ) - ) + jinjava.render("{{ 1000.333|format_number('fr') }}", new HashMap()) + ) .isEqualTo( String.format( "1%s000,333", @@ -57,11 +54,11 @@ public void testFormatNumberFilter() { ) ); assertThat( - jinjava.render( - "{{ 1000.333|format_number('fr', 2) }}", - new HashMap() - ) + jinjava.render( + "{{ 1000.333|format_number('fr', 2) }}", + new HashMap() ) + ) .isEqualTo( String.format( "1%s000,33", @@ -70,22 +67,19 @@ public void testFormatNumberFilter() { ); assertThat( - jinjava.render("{{ 1000|format_number('es') }}", new HashMap()) - ) + jinjava.render("{{ 1000|format_number('es') }}", new HashMap()) + ) .isEqualTo("1.000"); assertThat( - jinjava.render( - "{{ 1000.333|format_number('es') }}", - new HashMap() - ) - ) + jinjava.render("{{ 1000.333|format_number('es') }}", new HashMap()) + ) .isEqualTo("1.000,333"); assertThat( - jinjava.render( - "{{ 1000.333|format_number('es', 2) }}", - new HashMap() - ) + jinjava.render( + "{{ 1000.333|format_number('es', 2) }}", + new HashMap() ) + ) .isEqualTo("1.000,33"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/FromJsonFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/FromJsonFilterTest.java index ac7ff4f19..d8d337936 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/FromJsonFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/FromJsonFilterTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class FromJsonFilterTest extends BaseInterpretingTest { + private FromJsonFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/FromYamlFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/FromYamlFilterTest.java index dddb2d6ca..f7ff45bc5 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/FromYamlFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/FromYamlFilterTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class FromYamlFilterTest extends BaseInterpretingTest { + private FromYamlFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/GroupByFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/GroupByFilterTest.java index 524ea0a6e..6d65ebf4d 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/GroupByFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/GroupByFilterTest.java @@ -41,6 +41,7 @@ public void testGroupByAttr() throws Exception { } public static class Person { + private String gender; private String firstName; private String lastName; diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/IndentFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/IndentFilterTest.java index 24be2dc35..1c9bcac8d 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/IndentFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/IndentFilterTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class IndentFilterTest extends BaseJinjavaTest { + private final Map VARS = new HashMap<>(); @Before @@ -27,11 +28,11 @@ public void itDoesntIndentFirstlineByDefault() { @Test public void itIndentsFirstline() { assertThat( - jinjava.render( - "{% set d=multiLine | indent(indentfirst= True, width=1) %}{{ d }}", - VARS - ) + jinjava.render( + "{% set d=multiLine | indent(indentfirst= True, width=1) %}{{ d }}", + VARS ) + ) .isEqualTo(" 1\n" + " 2\n" + " 3"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/IntFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/IntFilterTest.java index 972fe6661..65d2b4733 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/IntFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/IntFilterTest.java @@ -13,6 +13,7 @@ import org.junit.Test; public class IntFilterTest extends BaseInterpretingTest { + private static final Locale FRENCH_LOCALE = new Locale("fr", "FR"); private static final JinjavaConfig FRENCH_LOCALE_CONFIG = new JinjavaConfig( StandardCharsets.UTF_8, @@ -112,14 +113,14 @@ public void itDoesntInterpretUsCommasAndPeriodsWithFrenchLocale() { public void itInterpretsFrenchCommasAndPeriodsWithFrenchLocale() { interpreter = new Jinjava(FRENCH_LOCALE_CONFIG).newInterpreter(); assertThat( - filter.filter( - String.format( - "123%c123,12", - DecimalFormatSymbols.getInstance(Locale.FRENCH).getGroupingSeparator() - ), - interpreter - ) + filter.filter( + String.format( + "123%c123,12", + DecimalFormatSymbols.getInstance(Locale.FRENCH).getGroupingSeparator() + ), + interpreter ) + ) .isEqualTo(123123); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/IntersectFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/IntersectFilterTest.java index 2161fe58f..a7cb02c5e 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/IntersectFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/IntersectFilterTest.java @@ -17,12 +17,12 @@ public void setup() { @Test public void itComputesSetIntersections() { assertThat( - jinjava.render("{{ [1, 1, 2, 3]|intersect([1, 2, 5, 6]) }}", new HashMap<>()) - ) + jinjava.render("{{ [1, 1, 2, 3]|intersect([1, 2, 5, 6]) }}", new HashMap<>()) + ) .isEqualTo("[1, 2]"); assertThat( - jinjava.render("{{ ['do', 'ray']|intersect(['ray', 'me']) }}", new HashMap<>()) - ) + jinjava.render("{{ ['do', 'ray']|intersect(['ray', 'me']) }}", new HashMap<>()) + ) .isEqualTo("['ray']"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/IpAddrFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/IpAddrFilterTest.java index 6e1bd7a4a..639e113af 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/IpAddrFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/IpAddrFilterTest.java @@ -15,6 +15,7 @@ import org.junit.Test; public class IpAddrFilterTest extends BaseInterpretingTest { + private IpAddrFilter ipAddrFilter; private Ipv4Filter ipv4Filter; private Ipv6Filter ipv6Filter; @@ -46,8 +47,8 @@ public void itRejectsInvalidIpV4Address() { @Test public void itAcceptsValidIpV6Address() { assertThat( - ipAddrFilter.filter("1200:0000:AB00:1234:0000:2552:7777:1313", interpreter) - ) + ipAddrFilter.filter("1200:0000:AB00:1234:0000:2552:7777:1313", interpreter) + ) .isEqualTo(true); assertThat(ipAddrFilter.filter("21DA:D3:0:2F3B:2AA:FF:FE28:9C5A", interpreter)) .isEqualTo(true); @@ -59,8 +60,8 @@ public void itRejectsInvalidIpV6Address() { assertThat(ipAddrFilter.filter("1200::AB00:1234::2552:7777:1313", interpreter)) .isEqualTo(false); assertThat( - ipAddrFilter.filter("1200:0000:AB00:1234:O000:2552:7777:1313", interpreter) - ) + ipAddrFilter.filter("1200:0000:AB00:1234:O000:2552:7777:1313", interpreter) + ) .isEqualTo(false); assertThat(ipAddrFilter.filter("1200::AB00:1234::2552:7777:1313:1232", interpreter)) .isEqualTo(false); @@ -76,12 +77,12 @@ public void itReturnsIpv4AddressPrefix() { @Test public void itReturnsIpv6AddressPrefix() { assertThat( - ipAddrFilter.filter( - "1200:0000:AB00:1234:0000:2552:7777:1313/43", - interpreter, - "prefix" - ) + ipAddrFilter.filter( + "1200:0000:AB00:1234:0000:2552:7777:1313/43", + interpreter, + "prefix" ) + ) .isEqualTo(43); } @@ -100,12 +101,12 @@ public void itReturnsIpv4AddressNetMask() { @Test public void itReturnsIpv6AddressNetMask() { assertThat( - ipAddrFilter.filter( - "1200:0000:AB00:1234:0000:2552:7777:1313/43", - interpreter, - "netmask" - ) + ipAddrFilter.filter( + "1200:0000:AB00:1234:0000:2552:7777:1313/43", + interpreter, + "netmask" ) + ) .isEqualTo("ffff:ffff:ffe0::"); } @@ -118,12 +119,12 @@ public void itReturnsIpv4AddressBroadcast() { @Test public void itReturnsIpv6AddressBroadcast() { assertThat( - ipAddrFilter.filter( - "1200:0000:AB00:1234:0000:2552:7777:1313/43", - interpreter, - "broadcast" - ) + ipAddrFilter.filter( + "1200:0000:AB00:1234:0000:2552:7777:1313/43", + interpreter, + "broadcast" ) + ) .isEqualTo("1200:0:ab1f:ffff:ffff:ffff:ffff:ffff"); } @@ -138,20 +139,20 @@ public void itReturnsIpv4AddressAddress() { @Test public void itReturnsIpv6AddressAddress() { assertThat( - ipAddrFilter.filter( - "1200:0000:AB00:1234:0000:2552:7777:1313/43", - interpreter, - "address" - ) + ipAddrFilter.filter( + "1200:0000:AB00:1234:0000:2552:7777:1313/43", + interpreter, + "address" ) + ) .isEqualTo("1200:0000:AB00:1234:0000:2552:7777:1313"); assertThat( - ipAddrFilter.filter( - "1200:0000:AB00:1234:0000:2552:7777:1314", - interpreter, - "address" - ) + ipAddrFilter.filter( + "1200:0000:AB00:1234:0000:2552:7777:1314", + interpreter, + "address" ) + ) .isEqualTo("1200:0000:AB00:1234:0000:2552:7777:1314"); } @@ -164,12 +165,12 @@ public void itReturnsIpv4AddressNetwork() { @Test public void itReturnsIpv6AddressNetwork() { assertThat( - ipAddrFilter.filter( - "1200:0000:AB00:1234:0000:2552:7777:1313/43", - interpreter, - "network" - ) + ipAddrFilter.filter( + "1200:0000:AB00:1234:0000:2552:7777:1313/43", + interpreter, + "network" ) + ) .isEqualTo("1200:0:ab00::"); } @@ -182,27 +183,27 @@ public void itReturnsIpv4AddressGateway() { @Test public void itReturnsIpv6AddressGateway() { assertThat( - ipAddrFilter.filter( - "1200:0000:AB00:1234:0000:2552:7777:1313/43", - interpreter, - "gateway" - ) + ipAddrFilter.filter( + "1200:0000:AB00:1234:0000:2552:7777:1313/43", + interpreter, + "gateway" ) + ) .isEqualTo("1200:0:ab00::1"); } @Test public void itAddsErrorOnInvalidCidrAddress() { - assertThatThrownBy( - () -> ipAddrFilter.filter("192.168.0.1/200", interpreter, "broadcast") + assertThatThrownBy(() -> + ipAddrFilter.filter("192.168.0.1/200", interpreter, "broadcast") ) .hasMessageContaining("must be a valid CIDR address"); } @Test public void itAddsErrorOnInvalidFunctionName() { - assertThatThrownBy( - () -> ipAddrFilter.filter("192.168.0.1/20", interpreter, "notAFunction") + assertThatThrownBy(() -> + ipAddrFilter.filter("192.168.0.1/20", interpreter, "notAFunction") ) .hasMessageContaining("must be one of"); } @@ -402,19 +403,19 @@ public void itFiltersIpAddressesBroadcast() { @Test public void itWorksWithSafeString() throws Exception { assertThat( - ipAddrFilter.filter( - new SafeString("1200:0000:AB00:1234:0000:2552:7777:1313"), - interpreter - ) + ipAddrFilter.filter( + new SafeString("1200:0000:AB00:1234:0000:2552:7777:1313"), + interpreter ) + ) .isEqualTo(true); assertThat(ipAddrFilter.filter(new SafeString("255.182.100.abc"), interpreter)) .isEqualTo(false); assertThat(ipAddrFilter.filter(new SafeString(" 128.0.0.1 "), interpreter)) .isEqualTo(true); assertThat( - ipAddrFilter.filter(new SafeString("255.182.100.1/10"), interpreter, "netmask") - ) + ipAddrFilter.filter(new SafeString("255.182.100.1/10"), interpreter, "netmask") + ) .isEqualTo("255.192.0.0"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/JoinFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/JoinFilterTest.java index 57040ac00..6b555b925 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/JoinFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/JoinFilterTest.java @@ -29,8 +29,8 @@ public void testJoinVals() { @Test public void testJoinAttrs() { assertThat( - jinjava.render("{{ users|join(', ', attribute='username') }}", new HashMap<>()) - ) + jinjava.render("{{ users|join(', ', attribute='username') }}", new HashMap<>()) + ) .isEqualTo("foo, bar"); } @@ -49,6 +49,7 @@ public void itTruncatesStringToConfigLimit() { } public static class User { + private String username; public User(String username) { diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/LastFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/LastFilterTest.java index cace67a32..57600765c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/LastFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/LastFilterTest.java @@ -8,6 +8,7 @@ import org.junit.Test; public class LastFilterTest { + LastFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/ListFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/ListFilterTest.java index 451adc584..c99ccca2d 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/ListFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/ListFilterTest.java @@ -31,6 +31,7 @@ import org.junit.Test; public class ListFilterTest { + ListFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/LogFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/LogFilterTest.java index 53f4701f2..54625dc43 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/LogFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/LogFilterTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class LogFilterTest extends BaseInterpretingTest { + LogFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/MapFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/MapFilterTest.java index 7a244b596..f4456aa1c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/MapFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/MapFilterTest.java @@ -14,105 +14,99 @@ public class MapFilterTest extends BaseJinjavaTest { @Test public void mapAttr() { assertThat( - jinjava.render( - "{{ users|map(attribute='username')|join(', ') }}", - ImmutableMap.of( - "users", - (Object) Lists.newArrayList(new User("foo"), new User("bar")) - ) + jinjava.render( + "{{ users|map(attribute='username')|join(', ') }}", + ImmutableMap.of( + "users", + (Object) Lists.newArrayList(new User("foo"), new User("bar")) ) ) + ) .isEqualTo("foo, bar"); } @Test public void mapFilter() { assertThat( - jinjava.render( - "{{ titles|map('lower')|join(', ') }}", - ImmutableMap.of( - "titles", - (Object) Lists.newArrayList("Happy Day", "FOO", "bar") - ) - ) + jinjava.render( + "{{ titles|map('lower')|join(', ') }}", + ImmutableMap.of("titles", (Object) Lists.newArrayList("Happy Day", "FOO", "bar")) ) + ) .isEqualTo("happy day, foo, bar"); } @Test public void itPassesAdditionalArgumentsIntoFilter() { assertThat( - jinjava.render( - "{{ titles|map('truncate', 5, true, '')|join(', ') }}", - ImmutableMap.of( - "titles", - (Object) Lists.newArrayList("Happy Day", "FOOBAR", "barfoo") - ) + jinjava.render( + "{{ titles|map('truncate', 5, true, '')|join(', ') }}", + ImmutableMap.of( + "titles", + (Object) Lists.newArrayList("Happy Day", "FOOBAR", "barfoo") ) ) + ) .isEqualTo("Happy, FOOBA, barfo"); } @Test public void itUsesAttributeIfAttributeNameClashesWithFilter() { assertThat( - jinjava.render( - "{{ titles|map(attribute='date')|join(' ') }}", - ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) - ) + jinjava.render( + "{{ titles|map(attribute='date')|join(' ') }}", + ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) ) + ) .isEqualTo("12345"); } @Test public void itMapsFirstArgumentToFilterIfFilterExists() { - assertThatThrownBy( - () -> - jinjava.render( - "{{ titles|map('date')|join(' ') }}", - ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) - ) + assertThatThrownBy(() -> + jinjava.render( + "{{ titles|map('date')|join(' ') }}", + ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) + ) ) .hasMessageContaining("Input to function must be a date object"); } @Test public void itAddsErrorIfFirstArgumentIsNull() { - assertThatThrownBy( - () -> - jinjava.render( - "{{ titles|map(null)|join(' ') }}", - ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) - ) + assertThatThrownBy(() -> + jinjava.render( + "{{ titles|map(null)|join(' ') }}", + ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) + ) ) .hasMessageContaining("1st argument cannot be null"); } @Test public void itAddsErrorIfAttributeArgumentIsNull() { - assertThatThrownBy( - () -> - jinjava.render( - "{{ titles|map(attribute=null)|join(' ') }}", - ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) - ) + assertThatThrownBy(() -> + jinjava.render( + "{{ titles|map(attribute=null)|join(' ') }}", + ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) + ) ) .hasMessageContaining("'attribute' argument cannot be null"); } @Test public void itAddsErrorIfNoArgumentsAreProvided() { - assertThatThrownBy( - () -> - jinjava.render( - "{{ titles|map()|join(' ') }}", - ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) - ) + assertThatThrownBy(() -> + jinjava.render( + "{{ titles|map()|join(' ') }}", + ImmutableMap.of("titles", (Object) Lists.newArrayList(new TestClass(12345))) + ) ) .hasMessageContaining("requires 1 argument"); } public class TestClass { + private final long date; public TestClass(long date) { diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java index 822a83c97..22cf1b650 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class PrettyPrintFilterTest { + JinjavaInterpreter i; PrettyPrintFilter f; @@ -41,11 +42,11 @@ public void ppInt() { @Test public void ppPyDate() { assertThat( - f.filter( - new PyishDate(ZonedDateTime.of(2014, 8, 4, 0, 0, 0, 0, ZoneOffset.UTC)), - null - ) + f.filter( + new PyishDate(ZonedDateTime.of(2014, 8, 4, 0, 0, 0, 0, ZoneOffset.UTC)), + null ) + ) .isEqualTo("{% raw %}(PyishDate: 2014-08-04 00:00:00){% endraw %}"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/RandomFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/RandomFilterTest.java index 6be389632..1a579de12 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/RandomFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/RandomFilterTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class RandomFilterTest { + RandomFilter filter = new RandomFilter(); JinjavaInterpreter interpreter = mock(JinjavaInterpreter.class); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilterTest.java index 28aa520aa..2e1032396 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/RegexReplaceFilterTest.java @@ -13,6 +13,7 @@ import org.junit.Test; public class RegexReplaceFilterTest extends BaseInterpretingTest { + RegexReplaceFilter filter; @Before @@ -28,8 +29,8 @@ public void expects2Args() { @Test public void expectsNotNullArgs() { - assertThatThrownBy( - () -> filter.filter("foo", interpreter, new String[] { null, null }) + assertThatThrownBy(() -> + filter.filter("foo", interpreter, new String[] { null, null }) ) .hasMessageContaining("both a valid regex"); } @@ -52,10 +53,10 @@ public void isThrowsExceptionOnInvalidRegex() { @Test public void itMatchesRegexAndReplacesStringForSafeString() { assertThat( - filter - .filter(new SafeString("It costs $300"), interpreter, "[^a-zA-Z]", "") - .toString() - ) + filter + .filter(new SafeString("It costs $300"), interpreter, "[^a-zA-Z]", "") + .toString() + ) .isEqualTo("Itcosts"); } @@ -65,15 +66,14 @@ public void itLimitsLongInput() { for (int i = 0; i < 101; i++) { sb.append('a'); } - assertThatThrownBy( - () -> - filter.filter( - sb.toString(), - new Jinjava(JinjavaConfig.newBuilder().withMaxStringLength(10).build()) + assertThatThrownBy(() -> + filter.filter( + sb.toString(), + new Jinjava(JinjavaConfig.newBuilder().withMaxStringLength(10).build()) .newInterpreter(), - "O", - "0" - ) + "O", + "0" + ) ) .isInstanceOf(InvalidInputException.class) .hasMessageContaining( diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java index cd4366ab5..9d7ed44e7 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java @@ -29,56 +29,54 @@ public void setup() { @Test public void rejectAttrWithNoExp() { assertThat( - jinjava.render( - "{{ users|rejectattr('is_active') }}", - new HashMap() - ) - ) + jinjava.render("{{ users|rejectattr('is_active') }}", new HashMap()) + ) .isEqualTo("[0, 2]"); } @Test public void rejectAttrWithExp() { assertThat( - jinjava.render( - "{{ users|rejectattr('email', 'none') }}", - new HashMap() - ) + jinjava.render( + "{{ users|rejectattr('email', 'none') }}", + new HashMap() ) + ) .isEqualTo("[0, 1]"); } @Test public void rejectAttrWithIsEqualToExp() { assertThat( - jinjava.render( - "{{ users|rejectattr('email', 'equalto', 'bar@bar.com') }}", - new HashMap() - ) + jinjava.render( + "{{ users|rejectattr('email', 'equalto', 'bar@bar.com') }}", + new HashMap() ) + ) .isEqualTo("[0, 2]"); } @Test public void rejectAttrWithNestedProperty() { assertThat( - jinjava.render( - "{{ users|rejectattr('option.id', 'equalto', 1) }}", - new HashMap() - ) + jinjava.render( + "{{ users|rejectattr('option.id', 'equalto', 1) }}", + new HashMap() ) + ) .isEqualTo("[0, 2]"); assertThat( - jinjava.render( - "{{ users|rejectattr('option.name', 'equalto', 'option0') }}", - new HashMap() - ) + jinjava.render( + "{{ users|rejectattr('option.name', 'equalto', 'option0') }}", + new HashMap() ) + ) .isEqualTo("[1, 2]"); } public static class User implements PyishSerializable { + private int num; private boolean isActive; private String email; @@ -121,6 +119,7 @@ public T appendPyishString(T appendable) } public static class Option { + private long id; private String name; diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/RenderFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/RenderFilterTest.java index 156720a10..61fdd8bb9 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/RenderFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/RenderFilterTest.java @@ -7,6 +7,7 @@ import org.junit.Test; public class RenderFilterTest extends BaseInterpretingTest { + private RenderFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/ReplaceFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/ReplaceFilterTest.java index 369f8adf4..4ada03886 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/ReplaceFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/ReplaceFilterTest.java @@ -13,6 +13,7 @@ import org.junit.Test; public class ReplaceFilterTest extends BaseInterpretingTest { + ReplaceFilter filter; @Before @@ -44,10 +45,10 @@ public void replaceWithCount() { @Test public void replaceSafeStringWithCount() { assertThat( - filter - .filter(new SafeString("aaaaargh"), interpreter, "a", "d'oh, ", "2") - .toString() - ) + filter + .filter(new SafeString("aaaaargh"), interpreter, "a", "d'oh, ", "2") + .toString() + ) .isEqualTo("d'oh, d'oh, aaargh"); } @@ -63,15 +64,14 @@ public void itLimitsLongInput() { for (int i = 0; i < 101; i++) { sb.append('a'); } - assertThatThrownBy( - () -> - filter.filter( - sb.toString(), - new Jinjava(JinjavaConfig.newBuilder().withMaxStringLength(10).build()) + assertThatThrownBy(() -> + filter.filter( + sb.toString(), + new Jinjava(JinjavaConfig.newBuilder().withMaxStringLength(10).build()) .newInterpreter(), - "O", - "0" - ) + "O", + "0" + ) ) .isInstanceOf(InvalidInputException.class) .hasMessageContaining( diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/RootFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/RootFilterTest.java index 64fd310b5..ee2c04a72 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/RootFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/RootFilterTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class RootFilterTest extends BaseInterpretingTest { + RootFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/SafeFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/SafeFilterTest.java index c2787fa05..4ddda5775 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/SafeFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/SafeFilterTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class SafeFilterTest extends BaseInterpretingTest { + private static final String HTML = "Link"; private static final List TEST_NUMBERS = ImmutableList.of(43, 1, 24); private static final List TEST_STRINGS = ImmutableList.of( @@ -88,8 +89,8 @@ public void itWorksForAllRelevantFilters() throws Exception { for (String testString : TEST_STRINGS) { interpreter.getContext().put("string_under_test", testString); assertThat( - interpreter.renderFlat("{{ string_under_test|safe|" + testFilter + "|safe }}") - ) + interpreter.renderFlat("{{ string_under_test|safe|" + testFilter + "|safe }}") + ) .as( "Testing behaviour of filter with and without safe filter: " + testFilter + @@ -105,8 +106,8 @@ public void itWorksForAllRelevantFilters() throws Exception { for (Integer testInt : TEST_NUMBERS) { interpreter.getContext().put("string_under_test", testInt); assertThat( - interpreter.renderFlat("{{ string_under_test|safe|" + testFilter + " }}") - ) + interpreter.renderFlat("{{ string_under_test|safe|" + testFilter + " }}") + ) .as( "Testing behaviour of filter with and without safe filter: " + testFilter + diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/SelectAttrFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/SelectAttrFilterTest.java index 8a4422811..b3b845f3e 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/SelectAttrFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/SelectAttrFilterTest.java @@ -42,122 +42,120 @@ public void setup() { @Test public void selectAttrWithNoExp() { assertThat( - jinjava.render( - "{{ users|selectattr('is_active') }}", - new HashMap() - ) - ) + jinjava.render("{{ users|selectattr('is_active') }}", new HashMap()) + ) .isEqualTo("[1]"); } @Test public void selectAttrWithExp() { assertThat( - jinjava.render( - "{{ users|selectattr('email', 'none') }}", - new HashMap() - ) + jinjava.render( + "{{ users|selectattr('email', 'none') }}", + new HashMap() ) + ) .isEqualTo("[2]"); } @Test public void selectAttrWithSymbolicExp() { assertThat( - jinjava.render( - "{{ users|selectattr('isActive', '==', 'true') }}", - new HashMap() - ) + jinjava.render( + "{{ users|selectattr('isActive', '==', 'true') }}", + new HashMap() ) + ) .isEqualTo("[1]"); } @Test public void selectAttrWithIsEqualToExp() { assertThat( - jinjava.render( - "{{ users|selectattr('email', 'equalto', 'bar@bar.com') }}", - new HashMap() - ) + jinjava.render( + "{{ users|selectattr('email', 'equalto', 'bar@bar.com') }}", + new HashMap() ) + ) .isEqualTo("[1]"); } @Test public void selectAttrWithNumericIsEqualToExp() { assertThat( - jinjava.render( - "{{ users|selectattr('num', 'equalto', 1) }}", - new HashMap() - ) + jinjava.render( + "{{ users|selectattr('num', 'equalto', 1) }}", + new HashMap() ) + ) .isEqualTo("[1]"); } @Test public void selectAttrWithNestedProperty() { assertThat( - jinjava.render( - "{{ users|selectattr('option.id', 'equalto', 1) }}", - new HashMap() - ) + jinjava.render( + "{{ users|selectattr('option.id', 'equalto', 1) }}", + new HashMap() ) + ) .isEqualTo("[1]"); assertThat( - jinjava.render( - "{{ users|selectattr('option.name', 'equalto', 'option2') }}", - new HashMap() - ) + jinjava.render( + "{{ users|selectattr('option.name', 'equalto', 'option2') }}", + new HashMap() ) + ) .isEqualTo("[2]"); } @Test public void selectAttrWithSymbolicLtExp() { assertThat( - jinjava.render( - "{{ numbers|selectattr('number', '<', '3')|map('number') }}", - new HashMap() - ) + jinjava.render( + "{{ numbers|selectattr('number', '<', '3')|map('number') }}", + new HashMap() ) + ) .isEqualTo("[1, 2]"); } @Test public void selectAttrWithSymbolicLeExp() { assertThat( - jinjava.render( - "{{ numbers|selectattr('number', '<=', '3')|map('number') }}", - new HashMap() - ) + jinjava.render( + "{{ numbers|selectattr('number', '<=', '3')|map('number') }}", + new HashMap() ) + ) .isEqualTo("[1, 2, 3]"); } @Test public void selectAttrWithSymbolicGtExp() { assertThat( - jinjava.render( - "{{ numbers|selectattr('number', '>', '3')|map('number') }}", - new HashMap() - ) + jinjava.render( + "{{ numbers|selectattr('number', '>', '3')|map('number') }}", + new HashMap() ) + ) .isEqualTo("[4]"); } @Test public void selectAttrWithSymbolicGeExp() { assertThat( - jinjava.render( - "{{ numbers|selectattr('number', '>=', '3')|map('number') }}", - new HashMap() - ) + jinjava.render( + "{{ numbers|selectattr('number', '>=', '3')|map('number') }}", + new HashMap() ) + ) .isEqualTo("[3, 4]"); } public static class User implements PyishSerializable { + private long num; private boolean isActive; private String email; @@ -200,6 +198,7 @@ public T appendPyishString(T appendable) } public static class Option implements PyishSerializable { + private long id; private String name; diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/ShuffleFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/ShuffleFilterTest.java index 31f111ea2..bd1646d49 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/ShuffleFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/ShuffleFilterTest.java @@ -14,6 +14,7 @@ import org.junit.Test; public class ShuffleFilterTest { + ShuffleFilter filter = new ShuffleFilter(); JinjavaInterpreter interpreter = mock(JinjavaInterpreter.class); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/SortFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/SortFilterTest.java index 180ec8b75..b258a0563 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/SortFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/SortFilterTest.java @@ -33,13 +33,13 @@ public void sortStringsCaseSensitive() { public void sortWithNamedAttributes() throws Exception { // even if named attributes were never supported for this filter, ensure parameters are passed in order and it works assertThat( - render( - "(reverse=false, case_sensitive=false, attribute='foo.date')", - new MyBar(new MyFoo(new Date(250L))), - new MyBar(new MyFoo(new Date(0L))), - new MyBar(new MyFoo(new Date(100000000L))) - ) + render( + "(reverse=false, case_sensitive=false, attribute='foo.date')", + new MyBar(new MyFoo(new Date(250L))), + new MyBar(new MyFoo(new Date(0L))), + new MyBar(new MyFoo(new Date(100000000L))) ) + ) .isEqualTo("0250100000000"); } @@ -51,26 +51,26 @@ public void sortStringsCaseInsensitive() { @Test public void sortWithAttr() { assertThat( - render( - "(false, false, 'date')", - new MyFoo(new Date(250L)), - new MyFoo(new Date(0L)), - new MyFoo(new Date(100000000L)) - ) + render( + "(false, false, 'date')", + new MyFoo(new Date(250L)), + new MyFoo(new Date(0L)), + new MyFoo(new Date(100000000L)) ) + ) .isEqualTo("0250100000000"); } @Test public void sortWithNestedAttr() { assertThat( - render( - "(false, false, 'foo.date')", - new MyBar(new MyFoo(new Date(250L))), - new MyBar(new MyFoo(new Date(0L))), - new MyBar(new MyFoo(new Date(100000000L))) - ) + render( + "(false, false, 'foo.date')", + new MyBar(new MyFoo(new Date(250L))), + new MyBar(new MyFoo(new Date(0L))), + new MyBar(new MyFoo(new Date(100000000L))) ) + ) .isEqualTo("0250100000000"); } @@ -138,6 +138,7 @@ RenderResult renderForResult(String sortExtra, Object... items) { } public static class MyFoo implements PyishSerializable { + private Date date; MyFoo(Date date) { @@ -162,6 +163,7 @@ public T appendPyishString(T appendable) } public static class MyBar implements PyishSerializable { + private MyFoo foo; MyBar(MyFoo foo) { diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/SplitFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/SplitFilterTest.java index 4ccf06dd3..b1c2bc424 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/SplitFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/SplitFilterTest.java @@ -9,6 +9,7 @@ @SuppressWarnings("unchecked") public class SplitFilterTest extends BaseInterpretingTest { + SplitFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/StringToTimeFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/StringToTimeFilterTest.java index fd01ab4bd..483a9f296 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/StringToTimeFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/StringToTimeFilterTest.java @@ -34,8 +34,8 @@ public void itErrorsOnNonStringInput() { Map vars = ImmutableMap.of("datetime", datetime, "format", format); assertThat( - jinjava.renderForResult("{{ datetime|strtotime(format) }}", vars).getErrors() - ) + jinjava.renderForResult("{{ datetime|strtotime(format) }}", vars).getErrors() + ) .hasSize(1); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/StripTagsFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/StripTagsFilterTest.java index ad90ebea8..a754e2243 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/StripTagsFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/StripTagsFilterTest.java @@ -23,6 +23,7 @@ @RunWith(MockitoJUnitRunner.class) public class StripTagsFilterTest { + private JinjavaInterpreter interpreter; @InjectMocks @@ -105,8 +106,8 @@ public void itAddsWhitespaceBetweenParagraphTags() { @Test public void itExecutesJinjavaInsideTag() { assertThat( - filter.filter("{% for i in [1, 2, 3] %}
    {{i}}
    {% endfor %}", interpreter) - ) + filter.filter("{% for i in [1, 2, 3] %}
    {{i}}
    {% endfor %}", interpreter) + ) .isEqualTo("1 2 3"); } @@ -123,19 +124,18 @@ public void itThrowsDeferredValueExceptionWhenDeferredTokensAreLeft() { Context mockedContext = mock(Context.class); when(mockedInterpreter.getContext()).thenReturn(mockedContext); when(mockedContext.getDeferredTokens()) - .thenAnswer( - i -> - counter.getAndIncrement() == 0 - ? Collections.emptySet() - : Collections.singleton( - DeferredToken - .builderFromImage( - "{{ deferred && other }}", - ExpressionToken.class, - interpreter - ) - .build() - ) + .thenAnswer(i -> + counter.getAndIncrement() == 0 + ? Collections.emptySet() + : Collections.singleton( + DeferredToken + .builderFromImage( + "{{ deferred && other }}", + ExpressionToken.class, + interpreter + ) + .build() + ) ); assertThatThrownBy(() -> filter.filter("{{ deferred && other }}", mockedInterpreter)) .isInstanceOf(DeferredValueException.class); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/SumFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/SumFilterTest.java index fc12cf8ca..5aea7bdd9 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/SumFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/SumFilterTest.java @@ -38,6 +38,7 @@ public void sumOfSeq() { } public static class Item { + private Number price; public Item(Number price) { diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilterTest.java index a9535849a..29323ab53 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/SymmetricDifferenceFilterTest.java @@ -17,26 +17,26 @@ public void setup() { @Test public void itComputesSetDifferences() { assertThat( - jinjava.render( - "{{ [1, 2, 3, 3, 4]|symmetric_difference([1, 2, 5, 6]) }}", - new HashMap<>() - ) + jinjava.render( + "{{ [1, 2, 3, 3, 4]|symmetric_difference([1, 2, 5, 6]) }}", + new HashMap<>() ) + ) .isEqualTo("[3, 4, 5, 6]"); assertThat( - jinjava.render( - "{{ ['do', 'ray']|symmetric_difference(['ray', 'me']) }}", - new HashMap<>() - ) + jinjava.render( + "{{ ['do', 'ray']|symmetric_difference(['ray', 'me']) }}", + new HashMap<>() ) + ) .isEqualTo("['do', 'me']"); } @Test public void itReturnsEmptyOnNullParameters() { assertThat( - jinjava.render("{{ [1, 2, 3]|symmetric_difference(null) }}", new HashMap<>()) - ) + jinjava.render("{{ [1, 2, 3]|symmetric_difference(null) }}", new HashMap<>()) + ) .isEqualTo("[1, 2, 3]"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/ToJsonFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/ToJsonFilterTest.java index c28a92cc4..06a9eb00f 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/ToJsonFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/ToJsonFilterTest.java @@ -14,6 +14,7 @@ import org.junit.Test; public class ToJsonFilterTest extends BaseInterpretingTest { + private ToJsonFilter filter; @Before @@ -44,7 +45,7 @@ public void itLimitsLength() { } interpreter = new Jinjava(JinjavaConfig.newBuilder().withMaxOutputSize(500).build()) - .newInterpreter(); + .newInterpreter(); assertThat(filter.filter(original, interpreter)).asString().contains("[[]]]]"); for (int i = 0; i < 400; i++) { List> nested = new ArrayList<>(); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/ToYamlFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/ToYamlFilterTest.java index 0bce7f660..16b27de62 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/ToYamlFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/ToYamlFilterTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class ToYamlFilterTest extends BaseInterpretingTest { + private ToYamlFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/TrimFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/TrimFilterTest.java index 245a33cb2..a45c7558c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/TrimFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/TrimFilterTest.java @@ -8,6 +8,7 @@ import org.junit.Test; public class TrimFilterTest extends BaseInterpretingTest { + TrimFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/TruncateFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/TruncateFilterTest.java index cdb8fc64c..a5208b36e 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/TruncateFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/TruncateFilterTest.java @@ -12,6 +12,7 @@ @RunWith(MockitoJUnitRunner.class) public class TruncateFilterTest { + @Mock JinjavaInterpreter interpreter; @@ -27,10 +28,10 @@ public void itPassesThroughSmallEnoughText() throws Exception { @Test public void itTruncatesText() throws Exception { assertThat( - filter - .filter(StringUtils.rightPad("", 256, 'x') + "y", interpreter, "255", "True") - .toString() - ) + filter + .filter(StringUtils.rightPad("", 256, 'x') + "y", interpreter, "255", "True") + .toString() + ) .hasSize(258) .endsWith("x..."); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilterTest.java index 065d7c7e2..963bc2e85 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/TruncateHtmlFilterTest.java @@ -11,6 +11,7 @@ import org.junit.Test; public class TruncateHtmlFilterTest extends BaseInterpretingTest { + TruncateHtmlFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilterTest.java index 75dbeeca2..1d4b12a82 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/UnescapeHtmlFilterTest.java @@ -7,6 +7,7 @@ import org.junit.Test; public class UnescapeHtmlFilterTest extends BaseInterpretingTest { + UnescapeHtmlFilter f; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/UnionFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/UnionFilterTest.java index 134ac990f..5188b270d 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/UnionFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/UnionFilterTest.java @@ -19,8 +19,8 @@ public void itComputesSetUnions() { assertThat(jinjava.render("{{ [1, 2, 3, 3]|union([1, 2, 5, 6]) }}", new HashMap<>())) .isEqualTo("[1, 2, 3, 5, 6]"); assertThat( - jinjava.render("{{ ['do', 'ray']|union(['ray', 'me']) }}", new HashMap<>()) - ) + jinjava.render("{{ ['do', 'ray']|union(['ray', 'me']) }}", new HashMap<>()) + ) .isEqualTo("['do', 'ray', 'me']"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/UniqueFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/UniqueFilterTest.java index 0aaf16bbd..9183d431e 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/UniqueFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/UniqueFilterTest.java @@ -25,14 +25,14 @@ public void itFiltersDuplicatesFromSeq() { @Test public void itFiltersDuplicatesFromSeqByAttr() { assertThat( - render( - "name", - new MyClass("a"), - new MyClass("b"), - new MyClass("a"), - new MyClass("c") - ) + render( + "name", + new MyClass("a"), + new MyClass("b"), + new MyClass("a"), + new MyClass("c") ) + ) .isEqualTo("[Name:a][Name:b][Name:c]"); } @@ -56,6 +56,7 @@ String render(String attr, Object... items) { } public static class MyClass implements PyishSerializable { + private final String name; public MyClass(String name) { diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/UnixTimestampFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/UnixTimestampFilterTest.java index b0f3e11c7..06fa10165 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/UnixTimestampFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/UnixTimestampFilterTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class UnixTimestampFilterTest extends BaseInterpretingTest { + private final ZonedDateTime d = ZonedDateTime.parse( "2013-11-06T14:22:00.000+00:00[UTC]" ); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/UpperFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/UpperFilterTest.java index 475754f87..1c0461f44 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/UpperFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/UpperFilterTest.java @@ -7,6 +7,7 @@ import org.junit.Test; public class UpperFilterTest extends BaseInterpretingTest { + private UpperFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilterTest.java index b675b4376..96914cf91 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/UrlDecodeFilterTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class UrlDecodeFilterTest extends BaseInterpretingTest { + private UrlDecodeFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilterTest.java index 865fd4bc7..f2021c064 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/UrlEncodeFilterTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class UrlEncodeFilterTest extends BaseInterpretingTest { + UrlEncodeFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/WordCountFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/WordCountFilterTest.java index 40f0c78a5..42c42073c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/WordCountFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/WordCountFilterTest.java @@ -6,6 +6,7 @@ import org.junit.Test; public class WordCountFilterTest { + WordCountFilter filter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilterTest.java index 3d35fc869..da9915f41 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDateFilterTest.java @@ -17,6 +17,7 @@ import org.junit.Test; public class FormatDateFilterTest { + private static final ZonedDateTime DATE_TIME = ZonedDateTime.of( 2022, 11, @@ -39,8 +40,8 @@ public void setUp() throws Exception { @Test public void itFormatsNumbers() { assertThat( - jinjava.render("{{ d | format_date }}", ImmutableMap.of("d", 1668120547000L)) - ) + jinjava.render("{{ d | format_date }}", ImmutableMap.of("d", 1668120547000L)) + ) .isEqualTo("Nov 10, 2022"); } @@ -73,43 +74,43 @@ public void itHandlesInvalidDateInput() { @Test public void itUsesShortFormat() { assertThat( - jinjava.render("{{ d | format_date('short') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_date('short') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("11/10/22"); } @Test public void itUsesMediumFormat() { assertThat( - jinjava.render("{{ d | format_date('medium') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_date('medium') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("Nov 10, 2022"); } @Test public void itUsesLongFormat() { assertThat( - jinjava.render("{{ d | format_date('long') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_date('long') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("November 10, 2022"); } @Test public void itUsesFullFormat() { assertThat( - jinjava.render("{{ d | format_date('full') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_date('full') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("Thursday, November 10, 2022"); } @Test public void itUsesCustomFormats() { assertThat( - jinjava.render( - "{{ d | format_date('yyyyy.MMMM.dd') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_date('yyyyy.MMMM.dd') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("02022.November.10"); } @@ -129,11 +130,11 @@ public void itHandlesInvalidFormats() { @Test public void itUsesGivenTimeZone() { assertThat( - jinjava.render( - "{{ d | format_date('long', 'Asia/Jakarta') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_date('long', 'Asia/Jakarta') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("November 11, 2022"); } @@ -163,11 +164,11 @@ public void itHandlesEmptyTimeZones() { @Test public void itUsesGivenLocale() { assertThat( - jinjava.render( - "{{ d | format_date('medium', 'America/New_York', 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_date('medium', 'America/New_York', 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("10.11.2022"); } @@ -197,33 +198,33 @@ public void itHandlesEmptyLocales() { @Test public void itUsesMediumIfNullFormatPassed() { assertThat( - jinjava.render( - "{{ d | format_date(null, 'America/New_York', 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_date(null, 'America/New_York', 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("10.11.2022"); } @Test public void itUsesUtcIfNullZonePassed() { assertThat( - jinjava.render( - "{{ d | format_date('short', null, 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_date('short', null, 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("10.11.22"); } @Test public void itUsesJinjavaConfigIfNullLocalePassed() { assertThat( - jinjava.render( - "{{ d | format_date('short', 'America/New_York', null) }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_date('short', 'America/New_York', null) }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("11/10/22"); } @@ -255,11 +256,11 @@ public void itDefaultsToCurrentDateOnMissingFilterArg() { ); assertThat( - jinjava.render( - "{{ d | format_date('short', 'America/New_York', null) }}", - ImmutableMap.of() - ) + jinjava.render( + "{{ d | format_date('short', 'America/New_York', null) }}", + ImmutableMap.of() ) + ) .isEqualTo("1/30/09"); } @@ -283,11 +284,11 @@ public void itDefaultsToDeprecationDateOnMissingFilterArg() { ); assertThat( - jinjava.render( - "{{ d | format_date('short', 'America/New_York', null) }}", - ImmutableMap.of() - ) + jinjava.render( + "{{ d | format_date('short', 'America/New_York', null) }}", + ImmutableMap.of() ) + ) .isEqualTo("11/10/22"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilterTest.java index a1d4c7266..03977ea2d 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatDatetimeFilterTest.java @@ -12,6 +12,7 @@ import org.junit.Test; public class FormatDatetimeFilterTest { + private static final ZonedDateTime DATE_TIME = ZonedDateTime.of( 2022, 11, @@ -34,8 +35,8 @@ public void setUp() throws Exception { @Test public void itFormatsNumbers() { assertThat( - jinjava.render("{{ d | format_datetime }}", ImmutableMap.of("d", 1668120547000L)) - ) + jinjava.render("{{ d | format_datetime }}", ImmutableMap.of("d", 1668120547000L)) + ) .isEqualTo("Nov 10, 2022, 10:49:07 PM"); } @@ -44,16 +45,16 @@ public void itFormatsPyishDates() { PyishDate pyishDate = new PyishDate(1668120547000L); assertThat( - jinjava.render("{{ d | format_datetime }}", ImmutableMap.of("d", pyishDate)) - ) + jinjava.render("{{ d | format_datetime }}", ImmutableMap.of("d", pyishDate)) + ) .isEqualTo("Nov 10, 2022, 10:49:07 PM"); } @Test public void itFormatsZonedDateTime() { assertThat( - jinjava.render("{{ d | format_datetime }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_datetime }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("Nov 10, 2022, 10:49:07 PM"); } @@ -72,55 +73,49 @@ public void itHandlesInvalidDateInput() { @Test public void itUsesShortFormat() { assertThat( - jinjava.render( - "{{ d | format_datetime('short') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime('short') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("11/10/22, 10:49 PM"); } @Test public void itUsesMediumFormat() { assertThat( - jinjava.render( - "{{ d | format_datetime('medium') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime('medium') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("Nov 10, 2022, 10:49:07 PM"); } @Test public void itUsesLongFormat() { assertThat( - jinjava.render( - "{{ d | format_datetime('long') }}", - ImmutableMap.of("d", DATE_TIME) - ) - ) + jinjava.render("{{ d | format_datetime('long') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("November 10, 2022 at 10:49:07 PM Z"); } @Test public void itUsesFullFormat() { assertThat( - jinjava.render( - "{{ d | format_datetime('full') }}", - ImmutableMap.of("d", DATE_TIME) - ) - ) + jinjava.render("{{ d | format_datetime('full') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("Thursday, November 10, 2022 at 10:49:07 PM Z"); } @Test public void itUsesCustomFormats() { assertThat( - jinjava.render( - "{{ d | format_datetime('yyyyy.MMMM.dd GGG hh:mm a') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime('yyyyy.MMMM.dd GGG hh:mm a') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("02022.November.10 AD 10:49 PM"); } @@ -140,11 +135,11 @@ public void itHandlesInvalidFormats() { @Test public void itUsesGivenTimeZone() { assertThat( - jinjava.render( - "{{ d | format_datetime('long', 'America/New_York') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime('long', 'America/New_York') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("November 10, 2022 at 5:49:07 PM EST"); } @@ -174,11 +169,11 @@ public void itHandlesEmptyTimeZones() { @Test public void itUsesGivenLocale() { assertThat( - jinjava.render( - "{{ d | format_datetime('medium', 'America/New_York', 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime('medium', 'America/New_York', 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("10.11.2022, 17:49:07"); } @@ -208,33 +203,33 @@ public void itHandlesEmptyLocales() { @Test public void itUsesMediumIfNullFormatPassed() { assertThat( - jinjava.render( - "{{ d | format_datetime(null, 'America/New_York', 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime(null, 'America/New_York', 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("10.11.2022, 17:49:07"); } @Test public void itUsesUtcIfNullZonePassed() { assertThat( - jinjava.render( - "{{ d | format_datetime('short', null, 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime('short', null, 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("10.11.22, 22:49"); } @Test public void itUsesJinjavaConfigIfNullLocalePassed() { assertThat( - jinjava.render( - "{{ d | format_datetime('short', 'America/New_York', null) }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_datetime('short', 'America/New_York', null) }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("11/10/22, 5:49 PM"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilterTest.java index f41f45731..4f6a96f9a 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/time/FormatTimeFilterTest.java @@ -12,6 +12,7 @@ import org.junit.Test; public class FormatTimeFilterTest { + private static final ZonedDateTime DATE_TIME = ZonedDateTime.of( 2022, 11, @@ -34,8 +35,8 @@ public void setUp() throws Exception { @Test public void itFormatsNumbers() { assertThat( - jinjava.render("{{ d | format_time }}", ImmutableMap.of("d", 1668120547000L)) - ) + jinjava.render("{{ d | format_time }}", ImmutableMap.of("d", 1668120547000L)) + ) .isEqualTo("10:49:07 PM"); } @@ -68,43 +69,40 @@ public void itHandlesInvalidDateInput() { @Test public void itUsesShortFormat() { assertThat( - jinjava.render("{{ d | format_time('short') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_time('short') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("10:49 PM"); } @Test public void itUsesMediumFormat() { assertThat( - jinjava.render("{{ d | format_time('medium') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_time('medium') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("10:49:07 PM"); } @Test public void itUsesLongFormat() { assertThat( - jinjava.render("{{ d | format_time('long') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_time('long') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("10:49:07 PM Z"); } @Test public void itUsesFullFormat() { assertThat( - jinjava.render("{{ d | format_time('full') }}", ImmutableMap.of("d", DATE_TIME)) - ) + jinjava.render("{{ d | format_time('full') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("10:49:07 PM Z"); } @Test public void itUsesCustomFormats() { assertThat( - jinjava.render( - "{{ d | format_time('hh:mm a') }}", - ImmutableMap.of("d", DATE_TIME) - ) - ) + jinjava.render("{{ d | format_time('hh:mm a') }}", ImmutableMap.of("d", DATE_TIME)) + ) .isEqualTo("10:49 PM"); } @@ -124,11 +122,11 @@ public void itHandlesInvalidFormats() { @Test public void itUsesGivenTimeZone() { assertThat( - jinjava.render( - "{{ d | format_time('long', 'America/New_York') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_time('long', 'America/New_York') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("5:49:07 PM EST"); } @@ -158,11 +156,11 @@ public void itHandlesEmptyTimeZones() { @Test public void itUsesGivenLocale() { assertThat( - jinjava.render( - "{{ d | format_time('medium', 'America/New_York', 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_time('medium', 'America/New_York', 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("17:49:07"); } @@ -192,33 +190,33 @@ public void itHandlesEmptyLocales() { @Test public void itUsesMediumIfNullFormatPassed() { assertThat( - jinjava.render( - "{{ d | format_time(null, 'America/New_York', 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_time(null, 'America/New_York', 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("17:49:07"); } @Test public void itUsesUtcIfNullZonePassed() { assertThat( - jinjava.render( - "{{ d | format_time('short', null, 'de-DE') }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_time('short', null, 'de-DE') }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("22:49"); } @Test public void itUsesJinjavaConfigIfNullLocalePassed() { assertThat( - jinjava.render( - "{{ d | format_time('short', 'America/New_York', null) }}", - ImmutableMap.of("d", DATE_TIME) - ) + jinjava.render( + "{{ d | format_time('short', 'America/New_York', null) }}", + ImmutableMap.of("d", DATE_TIME) ) + ) .isEqualTo("5:49 PM"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/DateFormatFunctionsTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/DateFormatFunctionsTest.java index c0d104f59..1dde7928c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/DateFormatFunctionsTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/DateFormatFunctionsTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class DateFormatFunctionsTest { + Jinjava jinjava; @Before @@ -20,42 +21,33 @@ public void setUp() throws Exception { @Test public void itFormatsDates() { assertThat( - jinjava.render( - "{{ format_date(d, 'medium') }}", - ImmutableMap.of( - "d", - ZonedDateTime.of(2022, 11, 28, 16, 30, 4, 0, ZoneOffset.UTC) - ) - ) + jinjava.render( + "{{ format_date(d, 'medium') }}", + ImmutableMap.of("d", ZonedDateTime.of(2022, 11, 28, 16, 30, 4, 0, ZoneOffset.UTC)) ) + ) .isEqualTo("Nov 28, 2022"); } @Test public void itFormatsTimes() { assertThat( - jinjava.render( - "{{ format_time(d, 'medium') }}", - ImmutableMap.of( - "d", - ZonedDateTime.of(2022, 11, 28, 16, 30, 4, 0, ZoneOffset.UTC) - ) - ) + jinjava.render( + "{{ format_time(d, 'medium') }}", + ImmutableMap.of("d", ZonedDateTime.of(2022, 11, 28, 16, 30, 4, 0, ZoneOffset.UTC)) ) + ) .isEqualTo("4:30:04 PM"); } @Test public void itFormatsDateTimes() { assertThat( - jinjava.render( - "{{ format_datetime(d, 'medium') }}", - ImmutableMap.of( - "d", - ZonedDateTime.of(2022, 11, 28, 16, 30, 4, 0, ZoneOffset.UTC) - ) - ) + jinjava.render( + "{{ format_datetime(d, 'medium') }}", + ImmutableMap.of("d", ZonedDateTime.of(2022, 11, 28, 16, 30, 4, 0, ZoneOffset.UTC)) ) + ) .isEqualTo("Nov 28, 2022, 4:30:04 PM"); } } diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxyTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxyTest.java index f03f722f4..6b4c00a0e 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxyTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/InjectedContextFunctionProxyTest.java @@ -8,6 +8,7 @@ public class InjectedContextFunctionProxyTest { public static class MyClass { + private String state; public MyClass(String state) { @@ -20,6 +21,7 @@ public String concatState(String in) { } public static class OtherClass { + private String state; public OtherClass(String state) { diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/RangeFunctionTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/RangeFunctionTest.java index cc6073406..0ca785267 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/RangeFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/RangeFunctionTest.java @@ -15,6 +15,7 @@ import org.junit.Test; public class RangeFunctionTest { + private JinjavaConfig config; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/StringToTimeFunctionTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/StringToTimeFunctionTest.java index 36c6e66bf..04e8550f4 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/StringToTimeFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/StringToTimeFunctionTest.java @@ -17,16 +17,16 @@ public void itConvertsStringToTime() { ZonedDateTime.of(2018, 7, 14, 14, 31, 30, 0, ZoneOffset.ofHoursMinutes(5, 30)) ); assertThat( - Functions.stringToTime("2018-07-14T14:31:30+0530", "yyyy-MM-dd'T'HH:mm:ssZ") - ) + Functions.stringToTime("2018-07-14T14:31:30+0530", "yyyy-MM-dd'T'HH:mm:ssZ") + ) .isEqualTo(expected); } @Test public void itFailsOnInvalidFormat() { assertThatExceptionOfType(InterpretException.class) - .isThrownBy( - () -> Functions.stringToTime("2018-07-14T14:31:30+0530", "not a time format") + .isThrownBy(() -> + Functions.stringToTime("2018-07-14T14:31:30+0530", "not a time format") ) .withMessageContaining("requires valid datetime format"); } @@ -34,12 +34,11 @@ public void itFailsOnInvalidFormat() { @Test public void itFailsOnTimeFormatMismatch() { assertThatExceptionOfType(InterpretException.class) - .isThrownBy( - () -> - Functions.stringToTime( - "Saturday, Jul 14, 2018 14:31:06 PM", - "yyyy-MM-dd'T'HH:mm:ssZ" - ) + .isThrownBy(() -> + Functions.stringToTime( + "Saturday, Jul 14, 2018 14:31:06 PM", + "yyyy-MM-dd'T'HH:mm:ssZ" + ) ) .withMessageContaining("could not match datetime input"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java index 63cbd9fcb..c94faef4f 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java @@ -17,6 +17,7 @@ import org.junit.Test; public class TodayFunctionTest extends BaseInterpretingTest { + private static final String ZONE_NAME = "America/New_York"; private static final ZoneId ZONE_ID = ZoneId.of(ZONE_NAME); diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java index b237fe76c..58aca72f9 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java @@ -33,8 +33,8 @@ public void testDouble() { @Test public void testDate() { assertThat( - TypeFunction.type(ZonedDateTime.parse("2013-11-06T14:22:00.000+00:00[UTC]")) - ) + TypeFunction.type(ZonedDateTime.parse("2013-11-06T14:22:00.000+00:00[UTC]")) + ) .isEqualTo("datetime"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/UnixTimestampFunctionTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/UnixTimestampFunctionTest.java index 52208e0b9..5c7bc5cff 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/UnixTimestampFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/UnixTimestampFunctionTest.java @@ -15,6 +15,7 @@ import org.junit.Test; public class UnixTimestampFunctionTest { + private final ZonedDateTime d = ZonedDateTime.parse( "2013-11-06T14:22:12.345+00:00[UTC]" ); diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/ExtendsTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/ExtendsTagTest.java index a65765131..b5c091151 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/ExtendsTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/ExtendsTagTest.java @@ -25,6 +25,7 @@ import org.junit.Test; public class ExtendsTagTest extends BaseInterpretingTest { + private ExtendsTagTestResourceLocator locator; @Before @@ -258,6 +259,7 @@ public void itLimitsExtendsWithMultipleLevels() throws IOException { } private static class ExtendsTagTestResourceLocator implements ResourceLocator { + private RelativePathResolver relativePathResolver = new RelativePathResolver(); @Override @@ -265,8 +267,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return fixture(fullName); } diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/ForTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/ForTagTest.java index ec36d07f5..2709bb736 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/ForTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/ForTagTest.java @@ -33,6 +33,7 @@ import org.junit.Test; public class ForTagTest extends BaseInterpretingTest { + public Tag tag; @Before @@ -77,12 +78,12 @@ public void forLoopUsingScalarValue() { public void forLoopNestedFor() { TagNode tagNode = (TagNode) fixture("nested-fors"); assertThat( - Splitter - .on("\n") - .trimResults() - .omitEmptyStrings() - .split(tag.interpret(tagNode, interpreter)) - ) + Splitter + .on("\n") + .trimResults() + .omitEmptyStrings() + .split(tag.interpret(tagNode, interpreter)) + ) .contains("02", "03", "12", "13"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/FromTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/FromTagTest.java index 6a601c798..36dd47886 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/FromTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/FromTagTest.java @@ -33,8 +33,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("tags/macrotag/%s", fullName)), StandardCharsets.UTF_8 diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/IfTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/IfTagTest.java index 6216973eb..91b039f87 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/IfTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/IfTagTest.java @@ -15,6 +15,7 @@ import org.junit.Test; public class IfTagTest extends BaseInterpretingTest { + public Tag tag; @Before @@ -132,6 +133,7 @@ private TagNode fixture(String name) { } private class TestObject implements HasObjectTruthValue { + private boolean objectTruthValue = false; public TestObject setObjectTruthValue(boolean objectTruthValue) { diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/ImportTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/ImportTagTest.java index 0c9ae2bd1..7b3d0734f 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/ImportTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/ImportTagTest.java @@ -31,12 +31,11 @@ public class ImportTagTest extends BaseInterpretingTest { @Before public void setup() { - jinjava.setResourceLocator( - (fullName, encoding, interpreter) -> - Resources.toString( - Resources.getResource(String.format("tags/macrotag/%s", fullName)), - StandardCharsets.UTF_8 - ) + jinjava.setResourceLocator((fullName, encoding, interpreter) -> + Resources.toString( + Resources.getResource(String.format("tags/macrotag/%s", fullName)), + StandardCharsets.UTF_8 + ) ); context.put("padding", 42); @@ -189,11 +188,11 @@ public void itAddsAllDeferredNodesOfImport() { .map(Node::reconstructImage) .collect(Collectors.toSet()); assertThat( - deferredImages - .stream() - .filter(image -> image.contains("{% set primary_line_height")) - .collect(Collectors.toSet()) - ) + deferredImages + .stream() + .filter(image -> image.contains("{% set primary_line_height")) + .collect(Collectors.toSet()) + ) .isNotEmpty(); } @@ -210,11 +209,11 @@ public void itAddsAllDeferredNodesOfGlobalImport() { .map(Node::reconstructImage) .collect(Collectors.toSet()); assertThat( - deferredImages - .stream() - .filter(image -> image.contains("{% set primary_line_height")) - .collect(Collectors.toSet()) - ) + deferredImages + .stream() + .filter(image -> image.contains("{% set primary_line_height")) + .collect(Collectors.toSet()) + ) .isNotEmpty(); } @@ -275,8 +274,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("%s", fullName)), StandardCharsets.UTF_8 @@ -373,10 +371,10 @@ public void itSetsErrorLineNumbersCorrectlyForImportedMacros() throws IOExceptio public void itCorrectlySetsNestedPaths() { context.put("foo", "foo"); assertThat( - interpreter.render( - "{% import 'double-import-macro.jinja' %}{{ print_path_macro2(foo) }}" - ) + interpreter.render( + "{% import 'double-import-macro.jinja' %}{{ print_path_macro2(foo) }}" ) + ) .isEqualTo("double-import-macro.jinja\n\nimport-macro.jinja\nfoo\n"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java index c724a14a0..9db12d53c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java @@ -126,8 +126,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("%s", fullName)), StandardCharsets.UTF_8 diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/MacroTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/MacroTagTest.java index 84a1f0160..108204510 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/MacroTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/MacroTagTest.java @@ -60,11 +60,11 @@ public void testFnWithArgs() { assertThat(fn.getArguments()).containsExactly("link", "text"); assertThat( - snippet("{{section_link('mylink', 'mytext')}}") - .render(interpreter) - .getValue() - .trim() - ) + snippet("{{section_link('mylink', 'mytext')}}") + .render(interpreter) + .getValue() + .trim() + ) .isEqualTo("link: mylink, text: mytext"); } @@ -83,11 +83,8 @@ public void testFnWithDeferredArgs() { interpreter.getContext().put("mylink", DeferredValue.instance()); assertThat( - snippet("{{section_link(mylink, 'mytext')}}") - .render(interpreter) - .getValue() - .trim() - ) + snippet("{{section_link(mylink, 'mytext')}}").render(interpreter).getValue().trim() + ) .isEqualTo("{{section_link(mylink, 'mytext')}}"); } @@ -120,20 +117,20 @@ public void testFnWithArgsWithDefVals() { assertThat(fn.getDefaults()).contains(entry("last", false)); assertThat( - snippet("{{ article('mytitle','mythumb','mylink','mysummary') }}") - .render(interpreter) - .getValue() - .trim() - ) + snippet("{{ article('mytitle','mythumb','mylink','mysummary') }}") + .render(interpreter) + .getValue() + .trim() + ) .isEqualTo( "title: mytitle, thumb: mythumb, link: mylink, summary: mysummary, last: false" ); assertThat( - snippet("{{ article('mytitle','mythumb','mylink','mysummary', last=true) }}") - .render(interpreter) - .getValue() - .trim() - ) + snippet("{{ article('mytitle','mythumb','mylink','mysummary', last=true) }}") + .render(interpreter) + .getValue() + .trim() + ) .isEqualTo( "title: mytitle, thumb: mythumb, link: mylink, summary: mysummary, last: true" ); @@ -213,7 +210,7 @@ public void itAllowsMacroRecursionWhenEnabledInConfiguration() throws IOExceptio // I need a different configuration here therefore interpreter = new Jinjava(JinjavaConfig.newBuilder().withEnableRecursiveMacroCalls(true).build()) - .newInterpreter(); + .newInterpreter(); JinjavaInterpreter.pushCurrent(interpreter); try { @@ -237,7 +234,7 @@ public void itAllowsMacroRecursionWithMaxDepth() throws IOException { .withMaxMacroRecursionDepth(10) .build() ) - .newInterpreter(); + .newInterpreter(); JinjavaInterpreter.pushCurrent(interpreter); try { @@ -261,7 +258,7 @@ public void itAllowsMacroRecursionWithMaxDepthInValidationMode() throws IOExcept .withValidationMode(true) .build() ) - .newInterpreter(); + .newInterpreter(); JinjavaInterpreter.pushCurrent(interpreter); try { @@ -284,7 +281,7 @@ public void itEnforcesMacroRecursionWithMaxDepth() throws IOException { .withMaxMacroRecursionDepth(2) .build() ) - .newInterpreter(); + .newInterpreter(); JinjavaInterpreter.pushCurrent(interpreter); try { @@ -355,7 +352,7 @@ public void itCorrectlyScopesNestedMacroTags() { .withMaxMacroRecursionDepth(2) .build() ) - .newInterpreter(); + .newInterpreter(); JinjavaInterpreter.pushCurrent(interpreter); try { String result = interpreter.render(fixtureText("scoping")); diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/RawTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/RawTagTest.java index d2349f203..ea51cc878 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/RawTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/RawTagTest.java @@ -21,6 +21,7 @@ import org.junit.Test; public class RawTagTest extends BaseInterpretingTest { + Tag tag; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/SetTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/SetTagTest.java index 7323bf53b..5d4650a63 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/SetTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/SetTagTest.java @@ -23,6 +23,7 @@ @SuppressWarnings("unchecked") public class SetTagTest extends BaseInterpretingTest { + public Tag tag; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/TagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/TagTest.java index 3db11962c..fc76db597 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/TagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/TagTest.java @@ -28,6 +28,7 @@ import org.junit.Test; public class TagTest { + Jinjava jinjava; String script; diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/UnlessTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/UnlessTagTest.java index 7e314a799..877e9498a 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/UnlessTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/UnlessTagTest.java @@ -12,6 +12,7 @@ import org.junit.Test; public class UnlessTagTest extends BaseInterpretingTest { + public Tag tag; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java index 27cbadf9e..0f2d19d66 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java @@ -25,6 +25,7 @@ @RunWith(MockitoJUnitRunner.class) public class ValidationModeTest { + JinjavaInterpreter interpreter; JinjavaInterpreter validatingInterpreter; @@ -34,6 +35,7 @@ public class ValidationModeTest { ValidationFilter validationFilter; class ValidationFilter implements Filter { + private int executionCount = 0; @Override @@ -235,6 +237,7 @@ public void itDoesNotPrintValuesInNestedValidatedBlocks() { } private class InstrumentedMacroFunction extends MacroFunction { + private int invocationCount = 0; InstrumentedMacroFunction( diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTagTest.java index 89893aa3f..64a014188 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerCycleTagTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class EagerCycleTagTest extends CycleTagTest { + private static final long MAX_OUTPUT_SIZE = 500L; private Tag tag; diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTagTest.java index 1bfb629ef..d380df199 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerDoTagTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class EagerDoTagTest extends DoTagTest { + private static final long MAX_OUTPUT_SIZE = 500L; private Tag tag; private ExpectedNodeInterpreter expectedNodeInterpreter; diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerExtendsTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerExtendsTagTest.java index 945a2e9a4..3c49558c1 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerExtendsTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerExtendsTagTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class EagerExtendsTagTest extends ExtendsTagTest { + private ExpectedTemplateInterpreter expectedTemplateInterpreter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerForTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerForTagTest.java index c1ab9af63..9cc8de2a5 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerForTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerForTagTest.java @@ -18,6 +18,7 @@ import org.junit.Test; public class EagerForTagTest extends ForTagTest { + private static final long MAX_OUTPUT_SIZE = 5000L; private ExpectedNodeInterpreter expectedNodeInterpreter; @@ -100,13 +101,13 @@ public void itLimitsLength() { @Test public void itUsesDeferredExecutionModeWhenChildrenAreLarge() { assertThat( - interpreter.render( - String.format( - "{%% for item in range(%d) %%}1234567890{%% endfor %%}", - MAX_OUTPUT_SIZE / 10 - 1 - ) + interpreter.render( + String.format( + "{%% for item in range(%d) %%}1234567890{%% endfor %%}", + MAX_OUTPUT_SIZE / 10 - 1 ) ) + ) .hasSize((int) MAX_OUTPUT_SIZE - 10); assertThat(interpreter.getContext().getDeferredTokens()).isEmpty(); assertThat(interpreter.getContext().getDeferredNodes()).isEmpty(); diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTagTest.java index 0496b3ab3..5bf876ed6 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerFromTagTest.java @@ -35,8 +35,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("tags/macrotag/%s", fullName)), StandardCharsets.UTF_8 diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTagTest.java index 4ced5d48e..0839a101c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIfTagTest.java @@ -15,6 +15,7 @@ import org.junit.Test; public class EagerIfTagTest extends IfTagTest { + private ExpectedNodeInterpreter expectedNodeInterpreter; @Before diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerImportTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerImportTagTest.java index 3414d64a2..fdff7e2a2 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerImportTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerImportTagTest.java @@ -39,6 +39,7 @@ import org.junit.Test; public class EagerImportTagTest extends ImportTagTest { + private static final String CONTEXT_VAR = "context_var"; private static final String TEMPLATE_FILE = "template.jinja"; @@ -145,21 +146,21 @@ public void itHandlesMultiLayerAliased() { assertThat(interpreter.getContext().get(CONTEXT_VAR)).isInstanceOf(Map.class); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get(child2Alias) - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get(child2Alias) + ) .isInstanceOf(Map.class); assertThat( - ( - (Map) ( - (Map) interpreter.getContext().get(CONTEXT_VAR) - ).get(child2Alias) - ).get("foo") - ) + ( + (Map) ( + (Map) interpreter.getContext().get(CONTEXT_VAR) + ).get(child2Alias) + ).get("foo") + ) .isEqualTo("foo val"); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("bar") - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("bar") + ) .isEqualTo("bar val"); } @@ -175,37 +176,37 @@ public void itHandlesMultiLayerAliasedAndDeferred() { assertThat(result.getContext().get(CONTEXT_VAR)).isInstanceOf(DeferredValue.class); assertThat( - ( - (Map) ( - (DeferredValue) result.getContext().get(CONTEXT_VAR) - ).getOriginalValue() - ).get(child2Alias) - ) + ( + (Map) ( + (DeferredValue) result.getContext().get(CONTEXT_VAR) + ).getOriginalValue() + ).get(child2Alias) + ) .isInstanceOf(DeferredValue.class); assertThat( + ( ( - ( - (Map) ( - (DeferredValue) ( - ( - (Map) ( - (DeferredValue) result.getContext().get(CONTEXT_VAR) - ).getOriginalValue() - ) - ).get(child2Alias) - ).getOriginalValue() - ).get("foo") - ) + (Map) ( + (DeferredValue) ( + ( + (Map) ( + (DeferredValue) result.getContext().get(CONTEXT_VAR) + ).getOriginalValue() + ) + ).get(child2Alias) + ).getOriginalValue() + ).get("foo") ) + ) .isEqualTo("foo val"); assertThat( - ( - (Map) ( - (DeferredValue) result.getContext().get(CONTEXT_VAR) - ).getOriginalValue() - ).get("bar") - ) + ( + (Map) ( + (DeferredValue) result.getContext().get(CONTEXT_VAR) + ).getOriginalValue() + ).get("bar") + ) .isEqualTo("bar val"); } @@ -221,14 +222,14 @@ public void itHandlesMultiLayerDeferred() { getFlatStrategy(interpreter).integrateChild(child); assertThat(interpreter.getContext().get("foo")).isInstanceOf(DeferredValue.class); assertThat( - (((DeferredValue) (interpreter.getContext().get("foo"))).getOriginalValue()) - ) + (((DeferredValue) (interpreter.getContext().get("foo"))).getOriginalValue()) + ) .isEqualTo("foo val"); assertThat(interpreter.getContext().get("bar")).isInstanceOf(DeferredValue.class); assertThat( - (((DeferredValue) (interpreter.getContext().get("bar"))).getOriginalValue()) - ) + (((DeferredValue) (interpreter.getContext().get("bar"))).getOriginalValue()) + ) .isEqualTo("bar val"); } @@ -250,25 +251,25 @@ public void itHandlesMultiLayerSomeAliased() { assertThat(interpreter.getContext().get(CONTEXT_VAR)).isInstanceOf(Map.class); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get(child3Alias) - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get(child3Alias) + ) .isInstanceOf(Map.class); assertThat( - ( - (Map) ( - (Map) interpreter.getContext().get(CONTEXT_VAR) - ).get(child3Alias) - ).get("foobar") - ) + ( + (Map) ( + (Map) interpreter.getContext().get(CONTEXT_VAR) + ).get(child3Alias) + ).get("foobar") + ) .isEqualTo("foobar val"); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("bar") - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("bar") + ) .isEqualTo("bar val"); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("foo") - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("foo") + ) .isEqualTo("foo val"); } @@ -292,35 +293,33 @@ public void itHandlesMultiLayerAliasedAndParallel() { assertThat(interpreter.getContext().get(CONTEXT_VAR)).isInstanceOf(Map.class); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get(child2Alias) - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get(child2Alias) + ) .isInstanceOf(Map.class); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get( - child2BAlias - ) - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get(child2BAlias) + ) .isInstanceOf(Map.class); assertThat( - ( - (Map) ( - (Map) interpreter.getContext().get(CONTEXT_VAR) - ).get(child2Alias) - ).get("foo") - ) + ( + (Map) ( + (Map) interpreter.getContext().get(CONTEXT_VAR) + ).get(child2Alias) + ).get("foo") + ) .isEqualTo("foo val"); assertThat( - ( - (Map) ( - (Map) interpreter.getContext().get(CONTEXT_VAR) - ).get(child2BAlias) - ).get("foo_b") - ) + ( + (Map) ( + (Map) interpreter.getContext().get(CONTEXT_VAR) + ).get(child2BAlias) + ).get("foo_b") + ) .isEqualTo("foo_b val"); assertThat( - ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("bar") - ) + ((Map) interpreter.getContext().get(CONTEXT_VAR)).get("bar") + ) .isEqualTo("bar val"); } @@ -732,8 +731,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("tags/eager/importtag/%s", fullName)), StandardCharsets.UTF_8 diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTagTest.java index ed360c99b..8bf760a8e 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerIncludeTagTest.java @@ -23,6 +23,7 @@ import org.junit.Test; public class EagerIncludeTagTest extends IncludeTagTest { + private ExpectedTemplateInterpreter expectedTemplateInterpreter; @Before @@ -52,8 +53,7 @@ public String getString( String fullName, Charset encoding, JinjavaInterpreter interpreter - ) - throws IOException { + ) throws IOException { return Resources.toString( Resources.getResource(String.format("tags/eager/includetag/%s", fullName)), StandardCharsets.UTF_8 @@ -78,20 +78,20 @@ public void itIncludesDeferred() { setupResourceLocator(); expectedTemplateInterpreter.assertExpectedOutputNonIdempotent("includes-deferred"); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactlyInAnyOrder("foo", "deferred"); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactlyInAnyOrder("foo"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagTest.java index f8a0bec7a..189e4cd2b 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerSetTagTest.java @@ -18,6 +18,7 @@ import org.junit.Test; public class EagerSetTagTest extends SetTagTest { + private static final long MAX_OUTPUT_SIZE = 500L; private ExpectedNodeInterpreter expectedNodeInterpreter; @@ -117,20 +118,20 @@ public void itDefersBlock() { assertThat(result).isEqualTo("{% set foo %}i am{{ deferred }}{% endset %}{{ foo }}"); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactly("foo"); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactlyInAnyOrder("foo", "deferred"); } @@ -145,20 +146,20 @@ public void itDefersBlockWithFilter() { "{% set foo = filter:add.filter(2, ____int3rpr3t3r____, deferred) %}{{ foo }}" ); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactly("foo"); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactlyInAnyOrder("deferred", "foo", "add"); } @@ -197,20 +198,20 @@ public void itDefersInDeferredExecutionModeWithFilter() { "{% set foo %}1{% endset %}{% set foo = filter:add.filter(1, ____int3rpr3t3r____, deferred) %}{{ foo }}" ); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getSetDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactly("foo"); assertThat( - context - .getDeferredTokens() - .stream() - .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) - .collect(Collectors.toSet()) - ) + context + .getDeferredTokens() + .stream() + .flatMap(deferredToken -> deferredToken.getUsedDeferredWords().stream()) + .collect(Collectors.toSet()) + ) .containsExactlyInAnyOrder("deferred", "foo", "add"); context.remove("foo"); context.put("deferred", 2); diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java index 07b65e75b..f50f929c9 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java @@ -28,6 +28,7 @@ @RunWith(MockitoJUnitRunner.class) public class EagerTagDecoratorTest extends BaseInterpretingTest { + private static final long MAX_OUTPUT_SIZE = 50L; private Tag mockTag; private EagerGenericTag eagerTagDecorator; @@ -122,9 +123,8 @@ public void itLimitsTagLength() { TagNode tagNode = (TagNode) ( interpreter.parse("{% print range(0, 50) %}").getChildren().get(0) ); - assertThatThrownBy( - () -> - eagerTagDecorator.getEagerTagImage((TagToken) tagNode.getMaster(), interpreter) + assertThatThrownBy(() -> + eagerTagDecorator.getEagerTagImage((TagToken) tagNode.getMaster(), interpreter) ) .isInstanceOf(OutputTooBigException.class); } @@ -146,8 +146,8 @@ public void itModifiesContextInChildContext() { public void itDoesntModifyContextWhenResultIsDeferred() { context.put("foo", new ArrayList<>()); assertThat( - interpreter.render("{{ modify_context('foo', 'bar') ~ deferred }}{{ foo }}") - ) + interpreter.render("{{ modify_context('foo', 'bar') ~ deferred }}{{ foo }}") + ) .isEqualTo("{{ null ~ deferred }}[bar]"); } diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactoryTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactoryTest.java index c87f049b9..491c16415 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactoryTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagFactoryTest.java @@ -14,18 +14,16 @@ public class EagerTagFactoryTest { @Test public void itGetsEagerTagDecoratorForOverrides() { - Set> eagerTagDecoratorSet = EagerTagFactory - .EAGER_TAG_OVERRIDES.keySet() + Set> eagerTagDecoratorSet = EagerTagFactory.EAGER_TAG_OVERRIDES + .keySet() .stream() - .map( - clazz -> { - try { - return clazz.getDeclaredConstructor().newInstance(); - } catch (Exception ignored) { - return null; - } + .map(clazz -> { + try { + return clazz.getDeclaredConstructor().newInstance(); + } catch (Exception ignored) { + return null; } - ) + }) .filter(Objects::nonNull) .map(EagerTagFactory::getEagerTagDecorator) .filter(Optional::isPresent) @@ -34,19 +32,18 @@ public void itGetsEagerTagDecoratorForOverrides() { assertThat(eagerTagDecoratorSet.size()) .isEqualTo(EagerTagFactory.EAGER_TAG_OVERRIDES.keySet().size()); assertThat( - eagerTagDecoratorSet - .stream() - .map(e -> e.getTag().getClass()) - .collect(Collectors.toSet()) - ) + eagerTagDecoratorSet + .stream() + .map(e -> e.getTag().getClass()) + .collect(Collectors.toSet()) + ) .isEqualTo(EagerTagFactory.EAGER_TAG_OVERRIDES.keySet()); } @Test public void itGetsEagerTagDecoratorForNonOverride() { - Optional> maybeEagerGenericTag = EagerTagFactory.getEagerTagDecorator( - new IfchangedTag() - ); + Optional> maybeEagerGenericTag = + EagerTagFactory.getEagerTagDecorator(new IfchangedTag()); assertThat(maybeEagerGenericTag).isPresent(); assertThat(maybeEagerGenericTag.get()).isInstanceOf(EagerGenericTag.class); assertThat(maybeEagerGenericTag.get().getTag()).isInstanceOf(IfchangedTag.class); diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerUnlessTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerUnlessTagTest.java index 9e87ee14d..1ea138092 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerUnlessTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerUnlessTagTest.java @@ -15,6 +15,7 @@ import org.junit.Test; public class EagerUnlessTagTest extends UnlessTagTest { + private ExpectedNodeInterpreter expectedNodeInterpreter; @Before diff --git a/src/test/java/com/hubspot/jinjava/loader/CascadingResourceLocatorTest.java b/src/test/java/com/hubspot/jinjava/loader/CascadingResourceLocatorTest.java index 2d3750202..0145429c1 100644 --- a/src/test/java/com/hubspot/jinjava/loader/CascadingResourceLocatorTest.java +++ b/src/test/java/com/hubspot/jinjava/loader/CascadingResourceLocatorTest.java @@ -14,6 +14,7 @@ @RunWith(MockitoJUnitRunner.class) @SuppressWarnings("unchecked") public class CascadingResourceLocatorTest { + @Mock ResourceLocator first; diff --git a/src/test/java/com/hubspot/jinjava/loader/ClasspathResourceLocatorTest.java b/src/test/java/com/hubspot/jinjava/loader/ClasspathResourceLocatorTest.java index 7e6c0c574..3b63b2711 100644 --- a/src/test/java/com/hubspot/jinjava/loader/ClasspathResourceLocatorTest.java +++ b/src/test/java/com/hubspot/jinjava/loader/ClasspathResourceLocatorTest.java @@ -11,9 +11,9 @@ public class ClasspathResourceLocatorTest extends BaseInterpretingTest { @Test public void testLoadFromClasspath() throws Exception { assertThat( - new ClasspathResourceLocator() + new ClasspathResourceLocator() .getString("loader/cp/foo/bar.jinja", StandardCharsets.UTF_8, interpreter) - ) + ) .isEqualTo("hello world."); } diff --git a/src/test/java/com/hubspot/jinjava/loader/FileLocatorTest.java b/src/test/java/com/hubspot/jinjava/loader/FileLocatorTest.java index ff0e5854b..9e13e51d3 100644 --- a/src/test/java/com/hubspot/jinjava/loader/FileLocatorTest.java +++ b/src/test/java/com/hubspot/jinjava/loader/FileLocatorTest.java @@ -13,6 +13,7 @@ import org.junit.Test; public class FileLocatorTest extends BaseInterpretingTest { + FileLocator locatorWorkingDir; FileLocator locatorTmpDir; @@ -23,8 +24,8 @@ public class FileLocatorTest extends BaseInterpretingTest { public void setUp() throws Exception { locatorWorkingDir = new FileLocator(); - File tmpDir = java - .nio.file.Files.createTempDirectory(getClass().getSimpleName()) + File tmpDir = java.nio.file.Files + .createTempDirectory(getClass().getSimpleName()) .toFile(); locatorTmpDir = new FileLocator(tmpDir); @@ -41,44 +42,44 @@ public void setUp() throws Exception { @Test public void testWorkingDirRelative() throws Exception { assertThat( - locatorWorkingDir.getString( - "target/loader-test-data/second.jinja", - StandardCharsets.UTF_8, - interpreter - ) + locatorWorkingDir.getString( + "target/loader-test-data/second.jinja", + StandardCharsets.UTF_8, + interpreter ) + ) .isEqualTo("second"); } @Test public void testWorkingDirAbs() throws Exception { assertThat( - locatorWorkingDir.getString( - second.getAbsolutePath(), - StandardCharsets.UTF_8, - interpreter - ) + locatorWorkingDir.getString( + second.getAbsolutePath(), + StandardCharsets.UTF_8, + interpreter ) + ) .isEqualTo("second"); } @Test public void testTmpDirRel() throws Exception { assertThat( - locatorTmpDir.getString("foo/first.jinja", StandardCharsets.UTF_8, interpreter) - ) + locatorTmpDir.getString("foo/first.jinja", StandardCharsets.UTF_8, interpreter) + ) .isEqualTo("first"); } @Test public void testTmpDirAbs() throws Exception { assertThat( - locatorTmpDir.getString( - first.getAbsolutePath(), - StandardCharsets.UTF_8, - interpreter - ) + locatorTmpDir.getString( + first.getAbsolutePath(), + StandardCharsets.UTF_8, + interpreter ) + ) .isEqualTo("first"); } diff --git a/src/test/java/com/hubspot/jinjava/objects/NamespaceTest.java b/src/test/java/com/hubspot/jinjava/objects/NamespaceTest.java index 9b9d866b8..8f6e78732 100644 --- a/src/test/java/com/hubspot/jinjava/objects/NamespaceTest.java +++ b/src/test/java/com/hubspot/jinjava/objects/NamespaceTest.java @@ -6,6 +6,7 @@ import org.junit.Test; public class NamespaceTest { + private Namespace namespace; @Before diff --git a/src/test/java/com/hubspot/jinjava/objects/collections/PyListTest.java b/src/test/java/com/hubspot/jinjava/objects/collections/PyListTest.java index 4352a0431..d511a9e7f 100644 --- a/src/test/java/com/hubspot/jinjava/objects/collections/PyListTest.java +++ b/src/test/java/com/hubspot/jinjava/objects/collections/PyListTest.java @@ -15,66 +15,66 @@ public class PyListTest extends BaseJinjavaTest { @Test public void itSupportsAppendOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.append(4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.append(4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 3, 4]"); } @Test public void itSupportsExtendOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.extend([4, 5, 6]) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.extend([4, 5, 6]) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 3, 4, 5, 6]"); } @Test public void itSupportsExtendOperationWithNullList() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.extend(null) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.extend(null) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 3]"); } @Test public void itSupportsInsertOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.insert(1, 4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.insert(1, 4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 4, 2, 3]"); } @Test public void itSupportsInsertOperationWithNegativeIndex() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.insert(-1, 4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.insert(-1, 4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 4, 3]"); } @Test public void itSupportsInsertOperationWithLargeNegativeIndex() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.insert(-99, 4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.insert(-99, 4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[4, 1, 2, 3]"); } @@ -94,33 +94,33 @@ public void itHandlesInsertOperationOutOfRange() { @Test public void itSupportsPopOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{{ test.pop() }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{{ test.pop() }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("3[1, 2]"); } @Test public void itSupportsPopAtIndexOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{{ test.pop(1) }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{{ test.pop(1) }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("2[1, 3]"); } @Test public void itSupportsPopAtNegativeIndexOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{{ test.pop(-1) }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{{ test.pop(-1) }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("3[1, 2]"); } @@ -153,113 +153,113 @@ public void itThrowsIndexOutOfRangeForPopOutOfRange() { @Test public void itSupportsClearOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.clear() %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.clear() %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[]"); } @Test public void itSupportsCountOperation() { assertThat( - jinjava.render( - "{% set test = [1, 1, 2, 2, 2, 3] %}" + "{{ test.count(2) }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 1, 2, 2, 2, 3] %}" + "{{ test.count(2) }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("3[1, 1, 2, 2, 2, 3]"); } @Test public void itSupportsReverseOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.reverse() %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.reverse() %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[3, 2, 1]"); } @Test public void itSupportsCopyOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + - "{% set test2 = test.copy() %}" + - "{% do test.append(4) %}" + - "{{ test }}{{test2}}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + + "{% set test2 = test.copy() %}" + + "{% do test.append(4) %}" + + "{{ test }}{{test2}}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 3, 4][1, 2, 3]"); } @Test public void itSupportsIndexOperation() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20) }}", + Collections.emptyMap() ) + ) .isEqualTo("1"); } @Test public void itSupportsIndexWithinBoundsOperation() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20, 2, 6) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20, 2, 6) }}", + Collections.emptyMap() ) + ) .isEqualTo("4"); } @Test public void itReturnsNegativeOneForMissingObjectForIndex() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999) }}", + Collections.emptyMap() ) + ) .isEqualTo("-1"); } @Test public void itReturnsNegativeOneForMissingObjectForIndexWithinBounds() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999, 1, 5) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999, 1, 5) }}", + Collections.emptyMap() ) + ) .isEqualTo("-1"); } @Test public void itDisallowsInsertingSelf() { assertThat( - jinjava.render( - "{% set test = [1,2] %}" + "{% do test.insert(0, test) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1,2] %}" + "{% do test.insert(0, test) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2]"); } @Test public void itDisallowsAppendingSelf() { assertThat( - jinjava.render( - "{% set test = [1, 2] %}" + "{% do test.append(test) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2] %}" + "{% do test.append(test) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2]"); } diff --git a/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java b/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java index 051208aeb..9403c1e19 100644 --- a/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java +++ b/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java @@ -21,55 +21,55 @@ public class PyMapTest extends BaseJinjavaTest { @Test public void itSupportsAppendOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.append(4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.append(4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 3, 4]"); } @Test public void itSupportsExtendOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.extend([4, 5, 6]) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.extend([4, 5, 6]) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 3, 4, 5, 6]"); } @Test public void itSupportsInsertOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.insert(1, 4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.insert(1, 4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 4, 2, 3]"); } @Test public void itSupportsInsertOperationWithNegativeIndex() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.insert(-1, 4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.insert(-1, 4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 4, 3]"); } @Test public void itSupportsInsertOperationWithLargeNegativeIndex() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.insert(-99, 4) %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.insert(-99, 4) %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[4, 1, 2, 3]"); } @@ -89,33 +89,33 @@ public void itHandlesInsertOperationOutOfRange() { @Test public void itSupportsPopOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{{ test.pop() }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{{ test.pop() }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("3[1, 2]"); } @Test public void itSupportsPopAtIndexOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{{ test.pop(1) }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{{ test.pop(1) }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("2[1, 3]"); } @Test public void itSupportsPopAtNegativeIndexOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{{ test.pop(-1) }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{{ test.pop(-1) }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("3[1, 2]"); } @@ -148,91 +148,91 @@ public void itThrowsIndexOutOfRangeForPopOutOfRange() { @Test public void itSupportsClearOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.clear() %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.clear() %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[]"); } @Test public void itSupportsCountOperation() { assertThat( - jinjava.render( - "{% set test = [1, 1, 2, 2, 2, 3] %}" + "{{ test.count(2) }}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 1, 2, 2, 2, 3] %}" + "{{ test.count(2) }}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("3[1, 1, 2, 2, 2, 3]"); } @Test public void itSupportsReverseOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + "{% do test.reverse() %}" + "{{ test }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + "{% do test.reverse() %}" + "{{ test }}", + Collections.emptyMap() ) + ) .isEqualTo("[3, 2, 1]"); } @Test public void itSupportsCopyOperation() { assertThat( - jinjava.render( - "{% set test = [1, 2, 3] %}" + - "{% set test2 = test.copy() %}" + - "{% do test.append(4) %}" + - "{{ test }}{{test2}}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [1, 2, 3] %}" + + "{% set test2 = test.copy() %}" + + "{% do test.append(4) %}" + + "{{ test }}{{test2}}", + Collections.emptyMap() ) + ) .isEqualTo("[1, 2, 3, 4][1, 2, 3]"); } @Test public void itSupportsIndexOperation() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20) }}", + Collections.emptyMap() ) + ) .isEqualTo("1"); } @Test public void itSupportsIndexWithinBoundsOperation() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20, 2, 6) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(20, 2, 6) }}", + Collections.emptyMap() ) + ) .isEqualTo("4"); } @Test public void itReturnsNegativeOneForMissingObjectForIndex() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999) }}", + Collections.emptyMap() ) + ) .isEqualTo("-1"); } @Test public void itReturnsNegativeOneForMissingObjectForIndexWithinBounds() { assertThat( - jinjava.render( - "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999, 1, 5) }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = [10, 20, 30, 10, 20, 30] %}" + "{{ test.index(999, 1, 5) }}", + Collections.emptyMap() ) + ) .isEqualTo("-1"); } @@ -263,26 +263,26 @@ public void itDisallowsSelfReferencingPutAll() { @Test public void itUpdatesKeysWithStaticName() { assertThat( - jinjava.render( - "{% set test = {\"key1\": \"value1\"} %}" + - "{% do test.update({\"key1\": \"value2\"}) %}" + - "{{ test[\"key1\"] }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = {\"key1\": \"value1\"} %}" + + "{% do test.update({\"key1\": \"value2\"}) %}" + + "{{ test[\"key1\"] }}", + Collections.emptyMap() ) + ) .isEqualTo("value2"); } @Test public void itDoesntSetKeysWithVariableNameByDefault() { assertThat( - jinjava.render( - "{% set keyName = \"key1\" %}" + - "{% set test = {keyName: \"value1\"} %}" + - "{{ test['keyName'] }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set keyName = \"key1\" %}" + + "{% set test = {keyName: \"value1\"} %}" + + "{{ test['keyName'] }}", + Collections.emptyMap() ) + ) .isEqualTo("value1"); } @@ -299,51 +299,51 @@ public void itSetsKeysWithVariableName() { ); assertThat( - jinjava.render( - "{% set keyName = \"key1\" %}" + - "{% set test = {keyName: \"value1\"} %}" + - "{{ test[keyName] }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set keyName = \"key1\" %}" + + "{% set test = {keyName: \"value1\"} %}" + + "{{ test[keyName] }}", + Collections.emptyMap() ) + ) .isEqualTo("value1"); } @Test public void itGetsKeysWithVariableName() { assertThat( - jinjava.render( - "{% set test = {\"key1\": \"value1\"} %}" + - "{% set keyName = \"key1\" %}" + - "{{ test[keyName] }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = {\"key1\": \"value1\"} %}" + + "{% set keyName = \"key1\" %}" + + "{{ test[keyName] }}", + Collections.emptyMap() ) + ) .isEqualTo("value1"); } @Test public void itFallsBackUnknownVariableNameToString() { assertThat( - jinjava.render( - "{% set test = {keyName: \"value1\"} %}" + "{{ test[\"keyName\"] }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = {keyName: \"value1\"} %}" + "{{ test[\"keyName\"] }}", + Collections.emptyMap() ) + ) .isEqualTo("value1"); } @Test public void itDoesntUpdateKeysWithVariableNameByDefault() { assertThat( - jinjava.render( - "{% set test = {\"key1\": \"value1\"} %}" + - "{% set keyName = \"key1\" %}" + - "{% do test.update({keyName: \"value2\"}) %}" + - "{{ test['key1'] }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = {\"key1\": \"value1\"} %}" + + "{% set keyName = \"key1\" %}" + + "{% do test.update({keyName: \"value2\"}) %}" + + "{{ test['key1'] }}", + Collections.emptyMap() ) + ) .isEqualTo("value1"); } @@ -359,14 +359,14 @@ public void itUpdatesKeysWithVariableName() { .build() ); assertThat( - jinjava.render( - "{% set test = {\"key1\": \"value1\"} %}" + - "{% set keyName = \"key1\" %}" + - "{% do test.update({keyName: \"value2\"}) %}" + - "{{ test[keyName] }}", - Collections.emptyMap() - ) + jinjava.render( + "{% set test = {\"key1\": \"value1\"} %}" + + "{% set keyName = \"key1\" %}" + + "{% do test.update({keyName: \"value2\"}) %}" + + "{{ test[keyName] }}", + Collections.emptyMap() ) + ) .isEqualTo("value2"); } diff --git a/src/test/java/com/hubspot/jinjava/objects/date/StrftimeFormatterTest.java b/src/test/java/com/hubspot/jinjava/objects/date/StrftimeFormatterTest.java index 0f4fd9651..3cda22f7c 100644 --- a/src/test/java/com/hubspot/jinjava/objects/date/StrftimeFormatterTest.java +++ b/src/test/java/com/hubspot/jinjava/objects/date/StrftimeFormatterTest.java @@ -13,6 +13,7 @@ import org.junit.Test; public class StrftimeFormatterTest { + ZonedDateTime d; @Before @@ -117,8 +118,8 @@ public void itConvertsNominativeFormats() { ZonedDateTime zonedDateTime = ZonedDateTime.parse("2019-06-06T14:22:00.000+00:00"); assertThat( - StrftimeFormatter.format(zonedDateTime, "%OB", Locale.forLanguageTag("ru")) - ) + StrftimeFormatter.format(zonedDateTime, "%OB", Locale.forLanguageTag("ru")) + ) .isIn("Июнь", "июнь"); } diff --git a/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java b/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java index 0e0020be7..dd5db54ff 100644 --- a/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java +++ b/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java @@ -122,10 +122,10 @@ public void itSerializesToSnakeCaseAccessibleMap() { @Test public void itSerializesToSnakeCaseAccessibleMapWhenInMapEntry() { assertThat( - PyishObjectMapper.getAsPyishString( - new AbstractMap.SimpleImmutableEntry<>("foo", new Foo("bar")) - ) + PyishObjectMapper.getAsPyishString( + new AbstractMap.SimpleImmutableEntry<>("foo", new Foo("bar")) ) + ) .isEqualTo("fn:map_entry('foo', {'fooBar': 'bar'} |allow_snake_case)"); } @@ -169,6 +169,7 @@ public void itSerializesToSnakeCaseWhenLegacyOverrideIsSet() { } static class Foo { + private final String bar; public Foo(String bar) { diff --git a/src/test/java/com/hubspot/jinjava/tree/FailOnUnknownTokensTest.java b/src/test/java/com/hubspot/jinjava/tree/FailOnUnknownTokensTest.java index 9b6190b43..1567435c3 100644 --- a/src/test/java/com/hubspot/jinjava/tree/FailOnUnknownTokensTest.java +++ b/src/test/java/com/hubspot/jinjava/tree/FailOnUnknownTokensTest.java @@ -13,6 +13,7 @@ import org.junit.Test; public class FailOnUnknownTokensTest { + private static Jinjava jinjava; @Before diff --git a/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java b/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java index 105fc6d9a..b4279523a 100644 --- a/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java +++ b/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java @@ -138,7 +138,7 @@ public void trimAndLstripBlocks() { new Jinjava( JinjavaConfig.newBuilder().withLstripBlocks(true).withTrimBlocks(true).build() ) - .newInterpreter(); + .newInterpreter(); assertThat(interpreter.render(parse("parse/tokenizer/whitespace-tags.jinja"))) .isEqualTo("
    \n" + " yay\n" + "
    \n"); @@ -242,7 +242,7 @@ public void itTrimsNotes() { ) .build() ) - .newInterpreter(); + .newInterpreter(); final Node newTree = new TreeParser(interpreter, expression).buildTree(); assertThat(interpreter.render(newTree)).isEqualTo("AB"); } @@ -264,7 +264,7 @@ public void itAllowsTrailingNote() { ) .build() ) - .newInterpreter(); + .newInterpreter(); final Node newTree = new TreeParser(interpreter, expression).buildTree(); assertThat(interpreter.render(newTree)).isEqualTo("A\n"); } @@ -286,7 +286,7 @@ public void itAllowsTrailingExpression() { ) .build() ) - .newInterpreter(); + .newInterpreter(); final Node newTree = new TreeParser(interpreter, expression).buildTree(); assertThat(interpreter.render(newTree)).isEqualTo("A\n{{ "); } @@ -308,7 +308,7 @@ public void itAllowsTrailingTag() { ) .build() ) - .newInterpreter(); + .newInterpreter(); final Node newTree = new TreeParser(interpreter, expression).buildTree(); assertThat(interpreter.render(newTree)).isEqualTo("A\n{% "); } @@ -337,7 +337,7 @@ public void itTrimsExpressions() { ) .build() ) - .newInterpreter(); + .newInterpreter(); final Node newTree = new TreeParser(interpreter, expression).buildTree(); assertThat(interpreter.render(newTree)).isEqualTo("ABC"); } @@ -356,7 +356,7 @@ public void itDoesNotMergeAdjacentTextNodesWhenLegacyOverrideIsApplied() { ) .build() ) - .newInterpreter(); + .newInterpreter(); final Node overriddenTree = new TreeParser(interpreter, expression).buildTree(); assertThat(interpreter.render(overriddenTree)).isEqualTo("A\nB"); } @@ -367,7 +367,7 @@ Node parse(String fixture) { interpreter, Resources.toString(Resources.getResource(fixture), StandardCharsets.UTF_8) ) - .buildTree(); + .buildTree(); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/src/test/java/com/hubspot/jinjava/tree/parse/CustomTokenScannerSymbolsTest.java b/src/test/java/com/hubspot/jinjava/tree/parse/CustomTokenScannerSymbolsTest.java index e3df96f09..037f0368e 100644 --- a/src/test/java/com/hubspot/jinjava/tree/parse/CustomTokenScannerSymbolsTest.java +++ b/src/test/java/com/hubspot/jinjava/tree/parse/CustomTokenScannerSymbolsTest.java @@ -12,6 +12,7 @@ import org.junit.Test; public class CustomTokenScannerSymbolsTest { + private Jinjava jinjava; private JinjavaConfig config; @@ -33,25 +34,25 @@ public void itRendersWithCustomTokens() { @Test public void itRendersFiltersWithCustomTokens() { assertThat( - jinjava.render( - "<% set d=d | default(\"some random value\") %><< d >>", - new HashMap<>() - ) + jinjava.render( + "<% set d=d | default(\"some random value\") %><< d >>", + new HashMap<>() ) + ) .isEqualTo("some random value"); assertThat(jinjava.render("<< [1, 2, 3, 3]|union(null) >>", new HashMap<>())) .isEqualTo("[1, 2, 3]"); assertThat(jinjava.render("<< numbers|select('equalto', 3) >>", new HashMap<>())) .isEqualTo("[3]"); assertThat( - jinjava.render( - "<< users|map(attribute='username')|join(', ') >>", - ImmutableMap.of( - "users", - (Object) Lists.newArrayList(new User("foo"), new User("bar")) - ) + jinjava.render( + "<< users|map(attribute='username')|join(', ') >>", + ImmutableMap.of( + "users", + (Object) Lists.newArrayList(new User("foo"), new User("bar")) ) ) + ) .isEqualTo("foo, bar"); } diff --git a/src/test/java/com/hubspot/jinjava/tree/parse/TagTokenTest.java b/src/test/java/com/hubspot/jinjava/tree/parse/TagTokenTest.java index 83bd6b96d..0eba63d63 100644 --- a/src/test/java/com/hubspot/jinjava/tree/parse/TagTokenTest.java +++ b/src/test/java/com/hubspot/jinjava/tree/parse/TagTokenTest.java @@ -7,6 +7,7 @@ import org.junit.Test; public class TagTokenTest { + private static final TokenScannerSymbols SYMBOLS = new DefaultTokenScannerSymbols(); @Test diff --git a/src/test/java/com/hubspot/jinjava/tree/parse/TokenScannerTest.java b/src/test/java/com/hubspot/jinjava/tree/parse/TokenScannerTest.java index 8ba2955e7..9bf9f0f3d 100644 --- a/src/test/java/com/hubspot/jinjava/tree/parse/TokenScannerTest.java +++ b/src/test/java/com/hubspot/jinjava/tree/parse/TokenScannerTest.java @@ -16,6 +16,7 @@ import org.junit.Test; public class TokenScannerTest { + private JinjavaConfig config; private String script; @@ -208,10 +209,10 @@ public void itProperlyTokenizesCommentWithTrailingTokens() { assertThat(tokens).hasSize(2); assertThat(tokens.get(tokens.size() - 1)).isInstanceOf(TextToken.class); assertThat( - StringUtils - .substringBetween(tokens.get(tokens.size() - 1).toString(), "{~", "~}") - .trim() - ) + StringUtils + .substringBetween(tokens.get(tokens.size() - 1).toString(), "{~", "~}") + .trim() + ) .isEqualTo("and here's some extra."); } diff --git a/src/test/java/com/hubspot/jinjava/util/DeferredValueUtilsTest.java b/src/test/java/com/hubspot/jinjava/util/DeferredValueUtilsTest.java index 9d401cb0a..f232ed034 100644 --- a/src/test/java/com/hubspot/jinjava/util/DeferredValueUtilsTest.java +++ b/src/test/java/com/hubspot/jinjava/util/DeferredValueUtilsTest.java @@ -47,9 +47,8 @@ public void itFindsGlobalProperties() { Set deferredProperties = context .getDeferredNodes() .stream() - .flatMap( - node -> - DeferredValueUtils.findAndMarkDeferredProperties(finalContext, node).stream() + .flatMap(node -> + DeferredValueUtils.findAndMarkDeferredProperties(finalContext, node).stream() ) .collect(Collectors.toSet()); @@ -66,8 +65,8 @@ public void itDefersWholePropertyOnArrayAccess() { Set deferredProperties = context .getDeferredNodes() .stream() - .flatMap( - node -> DeferredValueUtils.findAndMarkDeferredProperties(context, node).stream() + .flatMap(node -> + DeferredValueUtils.findAndMarkDeferredProperties(context, node).stream() ) .collect(Collectors.toSet()); assertThat(deferredProperties).contains("array"); @@ -83,8 +82,8 @@ public void itDefersWholePropertyOnDictAccess() { Set deferredProperties = context .getDeferredNodes() .stream() - .flatMap( - node -> DeferredValueUtils.findAndMarkDeferredProperties(context, node).stream() + .flatMap(node -> + DeferredValueUtils.findAndMarkDeferredProperties(context, node).stream() ) .collect(Collectors.toSet()); assertThat(deferredProperties).contains("dict"); @@ -111,8 +110,8 @@ public void itDefersTheCompleteObjectWhenAtLeastOnePropertyIsUsed() { Context finalContext = context; context .getDeferredNodes() - .forEach( - node -> DeferredValueUtils.findAndMarkDeferredProperties(finalContext, node) + .forEach(node -> + DeferredValueUtils.findAndMarkDeferredProperties(finalContext, node) ); assertThat(context.containsKey("java_bean")).isTrue(); assertThat(context.get("java_bean")).isInstanceOf(DeferredValue.class); @@ -180,9 +179,8 @@ public void itRestoresContextSuccessfully() { context.put("java_bean_undeferred", javaBean); context.put("nested_map_undeferred", nestedMap); - HashMap result = DeferredValueUtils.getDeferredContextWithOriginalValues( - context - ); + HashMap result = + DeferredValueUtils.getDeferredContextWithOriginalValues(context); assertThat(result).contains(entry("simple_var", "SimpleVar")); assertThat(result).contains(entry("java_bean", javaBean)); assertThat(result).contains(entry("simple_bool", true)); @@ -202,9 +200,8 @@ public void itIgnoresUnrestorableValuesFromDeferredContext() { context.put("simple_var", DeferredValue.instance()); context.put("java_bean", DeferredValue.instance()); - HashMap result = DeferredValueUtils.getDeferredContextWithOriginalValues( - context - ); + HashMap result = + DeferredValueUtils.getDeferredContextWithOriginalValues(context); assertThat(result).isEmpty(); } @@ -306,6 +303,7 @@ private JavaBean getPopulatedJavaBean() { } private class JavaBean { + String propertyOne; String propertyTwo; diff --git a/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java b/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java index 2a2b22605..2a95cfdc4 100644 --- a/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java +++ b/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java @@ -42,6 +42,7 @@ import org.junit.Test; public class EagerExpressionResolverTest { + private static final TokenScannerSymbols SYMBOLS = new DefaultTokenScannerSymbols(); private JinjavaInterpreter interpreter; @@ -320,10 +321,10 @@ public void itSerializesDateProperly() throws IOException { " %}" ); assertThat( - ( - (PyishDate) ((Map) interpreter.getContext().get("foo")).get("a") - ).toDateTime() - ) + ( + (PyishDate) ((Map) interpreter.getContext().get("foo")).get("a") + ).toDateTime() + ) .isEqualTo(date.toDateTime()); } @@ -371,14 +372,14 @@ public void itHandlesCancellingSlashes() { @Test public void itOutputsEmptyForVoidFunctions() throws Exception { assertThat( - WhitespaceUtils.unquoteAndUnescape(interpreter.render("{{ void_function(2) }}")) - ) + WhitespaceUtils.unquoteAndUnescape(interpreter.render("{{ void_function(2) }}")) + ) .isEmpty(); assertThat( - WhitespaceUtils.unquoteAndUnescape( - eagerResolveExpression("void_function(2)").toString() - ) + WhitespaceUtils.unquoteAndUnescape( + eagerResolveExpression("void_function(2)").toString() ) + ) .isEmpty(); } @@ -571,10 +572,10 @@ public void itHandlesNegativeZero() { public void itHandlesPyishSerializable() { context.put("foo", new SomethingPyish("yes")); assertThat( - interpreter.render( - String.format("{{ %s.name }}", eagerResolveExpression("foo").toString()) - ) + interpreter.render( + String.format("{{ %s.name }}", eagerResolveExpression("foo").toString()) ) + ) .isEqualTo("yes"); } @@ -736,7 +737,6 @@ public void itHandlesDeferredBracketMethod() throws NoSuchMethodException { new PyList( Collections.singletonList( new AbstractCallableMethod("echo", map) { - @Override public Object doEvaluate( Map argMap, @@ -758,10 +758,10 @@ public Object doEvaluate( @Test public void itHandlesOrOperator() { assertThat( - WhitespaceUtils.unquoteAndUnescape( - eagerResolveExpression("false == true || (true) ? 'yes' : 'no'").toString() - ) + WhitespaceUtils.unquoteAndUnescape( + eagerResolveExpression("false == true || (true) ? 'yes' : 'no'").toString() ) + ) .isEqualTo("yes"); } @@ -870,6 +870,7 @@ public static long sleeper() throws InterruptedException { } private static class Foo { + private final String bar; Foo(String bar) { @@ -886,6 +887,7 @@ String echo(String toEcho) { } public class SomethingPyish implements PyishSerializable { + private String name; public SomethingPyish(String name) { @@ -898,6 +900,7 @@ public String getName() { } public class SomethingExceptionallyPyish implements PyishSerializable { + private String name; public SomethingExceptionallyPyish(String name) { diff --git a/src/test/java/com/hubspot/jinjava/util/EagerReconstructionUtilsTest.java b/src/test/java/com/hubspot/jinjava/util/EagerReconstructionUtilsTest.java index 2cbe68c9d..04ee6917e 100644 --- a/src/test/java/com/hubspot/jinjava/util/EagerReconstructionUtilsTest.java +++ b/src/test/java/com/hubspot/jinjava/util/EagerReconstructionUtilsTest.java @@ -43,6 +43,7 @@ @RunWith(MockitoJUnitRunner.class) public class EagerReconstructionUtilsTest extends BaseInterpretingTest { + private static final long MAX_OUTPUT_SIZE = 50L; @Before @@ -77,8 +78,8 @@ public void itExecutesInChildContextAndTakesNewValue() { } ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withTakeNewValue(true) .withForceDeferredExecutionMode(true) .withCheckForContextChanges(true) @@ -108,8 +109,8 @@ public void itExecutesInChildContextAndDefersNewValue() { } ), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withForceDeferredExecutionMode(true) .withCheckForContextChanges(true) .build() @@ -197,11 +198,12 @@ public void itReconstructsVariablesAndMacroFunctions() { @Test public void itBuildsSetTagForDeferredAndRegisters() { - String result = EagerReconstructionUtils.buildBlockOrInlineSetTagAndRegisterDeferredToken( - "foo", - "bar", - interpreter - ); + String result = + EagerReconstructionUtils.buildBlockOrInlineSetTagAndRegisterDeferredToken( + "foo", + "bar", + interpreter + ); assertThat(result).isEqualTo("{% set foo = 'bar' %}"); assertThat(context.getDeferredTokens()).hasSize(1); DeferredToken deferredToken = context @@ -250,13 +252,12 @@ public void itLimitsSetTagConstruction() { for (int i = 0; i < MAX_OUTPUT_SIZE; i++) { tooLong.append(i); } - assertThatThrownBy( - () -> - EagerReconstructionUtils.buildBlockOrInlineSetTagAndRegisterDeferredToken( - "foo", - tooLong.toString(), - interpreter - ) + assertThatThrownBy(() -> + EagerReconstructionUtils.buildBlockOrInlineSetTagAndRegisterDeferredToken( + "foo", + tooLong.toString(), + interpreter + ) ) .isInstanceOf(OutputTooBigException.class); } @@ -269,11 +270,11 @@ public void itWrapsInRawTag() { .withExecutionMode(PreserveRawExecutionMode.instance()) .build(); assertThat( - EagerReconstructionUtils.wrapInRawIfNeeded( - toWrap, - new JinjavaInterpreter(jinjava, context, preserveRawConfig) - ) + EagerReconstructionUtils.wrapInRawIfNeeded( + toWrap, + new JinjavaInterpreter(jinjava, context, preserveRawConfig) ) + ) .isEqualTo(String.format("{%% raw %%}%s{%% endraw %%}", toWrap)); } @@ -285,11 +286,11 @@ public void itDoesntWrapInRawTagUnnecessarily() { .withExecutionMode(PreserveRawExecutionMode.instance()) .build(); assertThat( - EagerReconstructionUtils.wrapInRawIfNeeded( - toWrap, - new JinjavaInterpreter(jinjava, context, preserveRawConfig) - ) + EagerReconstructionUtils.wrapInRawIfNeeded( + toWrap, + new JinjavaInterpreter(jinjava, context, preserveRawConfig) ) + ) .isEqualTo(toWrap); } @@ -301,11 +302,11 @@ public void itDoesntWrapInRawTagForDefaultConfig() { .build(); String toWrap = "{{ foo }}"; assertThat( - EagerReconstructionUtils.wrapInRawIfNeeded( - toWrap, - new JinjavaInterpreter(jinjava, context, defaultConfig) - ) + EagerReconstructionUtils.wrapInRawIfNeeded( + toWrap, + new JinjavaInterpreter(jinjava, context, defaultConfig) ) + ) .isEqualTo(toWrap); } @@ -340,11 +341,11 @@ public void itIgnoresMetaContextVariables() { .getContext() .put(Context.IMPORT_RESOURCE_ALIAS_KEY, DeferredValue.instance()); assertThat( - EagerReconstructionUtils.reconstructFromContextBeforeDeferring( - Collections.singleton(Context.IMPORT_RESOURCE_ALIAS_KEY), - interpreter - ) + EagerReconstructionUtils.reconstructFromContextBeforeDeferring( + Collections.singleton(Context.IMPORT_RESOURCE_ALIAS_KEY), + interpreter ) + ) .isEmpty(); } @@ -382,24 +383,25 @@ public void itDiscardsSessionBindings() { return EagerExpressionResult.fromString(""); }, interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withDiscardSessionBindings(false) .withCheckForContextChanges(true) .build() ); - EagerExecutionResult withoutSessionBindings = EagerContextWatcher.executeInChildContext( - eagerInterpreter -> { - interpreter.getContext().put("foo", "foobar"); - return EagerExpressionResult.fromString(""); - }, - interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() - .withDiscardSessionBindings(true) - .withCheckForContextChanges(true) - .build() - ); + EagerExecutionResult withoutSessionBindings = + EagerContextWatcher.executeInChildContext( + eagerInterpreter -> { + interpreter.getContext().put("foo", "foobar"); + return EagerExpressionResult.fromString(""); + }, + interpreter, + EagerContextWatcher.EagerChildContextConfig + .newBuilder() + .withDiscardSessionBindings(true) + .withCheckForContextChanges(true) + .build() + ); assertThat(withSessionBindings.getSpeculativeBindings()) .containsEntry("foo", "foobar"); assertThat(withoutSessionBindings.getSpeculativeBindings()).doesNotContainKey("foo"); @@ -412,8 +414,8 @@ public void itDoesNotBreakOnNullLazyExpressions() { eagerInterpreter -> EagerExpressionResult.fromString(interpreter.render("{% set foo = 'bar' %}")), interpreter, - EagerContextWatcher - .EagerChildContextConfig.newBuilder() + EagerContextWatcher.EagerChildContextConfig + .newBuilder() .withDiscardSessionBindings(false) .withCheckForContextChanges(true) .withTakeNewValue(true) diff --git a/src/test/java/com/hubspot/jinjava/util/ForLoopTest.java b/src/test/java/com/hubspot/jinjava/util/ForLoopTest.java index 826312fca..262485438 100644 --- a/src/test/java/com/hubspot/jinjava/util/ForLoopTest.java +++ b/src/test/java/com/hubspot/jinjava/util/ForLoopTest.java @@ -23,9 +23,11 @@ import org.junit.Test; public class ForLoopTest { + private static final int NULL_VAL = Integer.MIN_VALUE; public static class AIterator implements Iterator { + int i = 0; @Override diff --git a/src/test/java/com/hubspot/jinjava/util/HelperStringTokenizerTest.java b/src/test/java/com/hubspot/jinjava/util/HelperStringTokenizerTest.java index 80964a74f..7a75d05a5 100644 --- a/src/test/java/com/hubspot/jinjava/util/HelperStringTokenizerTest.java +++ b/src/test/java/com/hubspot/jinjava/util/HelperStringTokenizerTest.java @@ -21,6 +21,7 @@ import org.junit.Test; public class HelperStringTokenizerTest { + private HelperStringTokenizer tk; @Test @@ -104,10 +105,10 @@ public void test8() { @Test public void itDoesntReturnTrailingNull() { assertThat( - new HelperStringTokenizer("product in collections.frontpage.products ") - .splitComma(true) - .allTokens() - ) + new HelperStringTokenizer("product in collections.frontpage.products ") + .splitComma(true) + .allTokens() + ) .containsExactly("product", "in", "collections.frontpage.products") .doesNotContainNull(); } diff --git a/src/test/java/com/hubspot/jinjava/util/ObjectIteratorTest.java b/src/test/java/com/hubspot/jinjava/util/ObjectIteratorTest.java index e5ea61104..82797da17 100644 --- a/src/test/java/com/hubspot/jinjava/util/ObjectIteratorTest.java +++ b/src/test/java/com/hubspot/jinjava/util/ObjectIteratorTest.java @@ -29,6 +29,7 @@ import org.junit.Test; public class ObjectIteratorTest { + private Object items = null; private ForLoop loop = null; diff --git a/src/test/java/com/hubspot/jinjava/util/ObjectTruthValueTest.java b/src/test/java/com/hubspot/jinjava/util/ObjectTruthValueTest.java index bcb4c7750..f02f53cfa 100644 --- a/src/test/java/com/hubspot/jinjava/util/ObjectTruthValueTest.java +++ b/src/test/java/com/hubspot/jinjava/util/ObjectTruthValueTest.java @@ -45,6 +45,7 @@ private void checkNumberTruthiness(Object a, Object b) { } private class TestObject implements HasObjectTruthValue { + private boolean objectTruthValue = false; public TestObject setObjectTruthValue(boolean objectTruthValue) { diff --git a/src/test/java/com/hubspot/jinjava/util/RenderLimitUtilsTest.java b/src/test/java/com/hubspot/jinjava/util/RenderLimitUtilsTest.java index 898e5a40d..8c080ada5 100644 --- a/src/test/java/com/hubspot/jinjava/util/RenderLimitUtilsTest.java +++ b/src/test/java/com/hubspot/jinjava/util/RenderLimitUtilsTest.java @@ -10,33 +10,33 @@ public class RenderLimitUtilsTest { @Test public void itPicksLowerLimitWhenConfigIsSet() { assertThat( - RenderLimitUtils.clampProvidedRenderLimitToConfig(100, configWithOutputSize(10)) - ) + RenderLimitUtils.clampProvidedRenderLimitToConfig(100, configWithOutputSize(10)) + ) .isEqualTo(10); } @Test public void itKeepsConfigLimitWhenConfigSetAndUnlimitedProvided() { assertThat( - RenderLimitUtils.clampProvidedRenderLimitToConfig(0, configWithOutputSize(10)) - ) + RenderLimitUtils.clampProvidedRenderLimitToConfig(0, configWithOutputSize(10)) + ) .isEqualTo(10); assertThat( - RenderLimitUtils.clampProvidedRenderLimitToConfig(-10, configWithOutputSize(10)) - ) + RenderLimitUtils.clampProvidedRenderLimitToConfig(-10, configWithOutputSize(10)) + ) .isEqualTo(10); } @Test public void itUsesProvidedLimitWhenConfigIsUnlimited() { assertThat( - RenderLimitUtils.clampProvidedRenderLimitToConfig(10, configWithOutputSize(0)) - ) + RenderLimitUtils.clampProvidedRenderLimitToConfig(10, configWithOutputSize(0)) + ) .isEqualTo(10); assertThat( - RenderLimitUtils.clampProvidedRenderLimitToConfig(10, configWithOutputSize(-10)) - ) + RenderLimitUtils.clampProvidedRenderLimitToConfig(10, configWithOutputSize(-10)) + ) .isEqualTo(10); } diff --git a/src/test/java/com/hubspot/jinjava/util/ScopeMapTest.java b/src/test/java/com/hubspot/jinjava/util/ScopeMapTest.java index f33ed7b26..66f064568 100644 --- a/src/test/java/com/hubspot/jinjava/util/ScopeMapTest.java +++ b/src/test/java/com/hubspot/jinjava/util/ScopeMapTest.java @@ -10,6 +10,7 @@ import org.junit.Test; public class ScopeMapTest { + Map a, b, c; @Before