diff --git a/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java index a8a069ef2..2cdf8b65d 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java @@ -1,6 +1,6 @@ /* * Copyright 2011, Mysema Ltd - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -21,7 +21,7 @@ import com.google.common.collect.ImmutableList; /** * Default implementation of the {@link TemplateExpression} interface - * + * * @author tiwe * * @param expression type @@ -38,15 +38,15 @@ public class TemplateExpressionImpl extends ExpressionBase implements Temp public static Expression create(Class cl, String template) { return new TemplateExpressionImpl(cl, TemplateFactory.DEFAULT.create(template), ImmutableList.of()); } - + public static Expression create(Class cl, String template, Object one) { return new TemplateExpressionImpl(cl, TemplateFactory.DEFAULT.create(template), ImmutableList.of(one)); } - + public static Expression create(Class cl, String template, Object one, Object two) { return new TemplateExpressionImpl(cl, TemplateFactory.DEFAULT.create(template), ImmutableList.of(one, two)); } - + public static Expression create(Class cl, String template, Object... args) { return new TemplateExpressionImpl(cl, TemplateFactory.DEFAULT.create(template), args); } @@ -57,8 +57,8 @@ public class TemplateExpressionImpl extends ExpressionBase implements Temp protected TemplateExpressionImpl(Class type, Template template, Object... args) { this(type, template, ImmutableList.copyOf(args)); - } - + } + public TemplateExpressionImpl(Class type, Template template, ImmutableList args) { super(type); this.args = args; @@ -87,12 +87,14 @@ public class TemplateExpressionImpl extends ExpressionBase implements Temp } else if (o instanceof TemplateExpression) { TemplateExpression c = (TemplateExpression)o; return c.getTemplate().equals(template) - && c.getType().equals(getType()); + && c.getType().equals(getType()) + && c.getArgs().equals(args); + } else { return false; } } - + @Override public final R accept(Visitor v, C context) { return v.visit(this, context); diff --git a/querydsl-core/src/test/java/com/mysema/query/types/TemplateExpressionImplTest.java b/querydsl-core/src/test/java/com/mysema/query/types/TemplateExpressionImplTest.java new file mode 100644 index 000000000..acc5c4407 --- /dev/null +++ b/querydsl-core/src/test/java/com/mysema/query/types/TemplateExpressionImplTest.java @@ -0,0 +1,16 @@ +package com.mysema.query.types; + +import static org.junit.Assert.assertFalse; + +import org.junit.Test; + +public class TemplateExpressionImplTest { + + @Test + public void Equals() { + Expression expr1 = TemplateExpressionImpl.create(String.class, "abc", "abc"); + Expression expr2 = TemplateExpressionImpl.create(String.class, "abc", "def"); + assertFalse(expr1.equals(expr2)); + } + +}