diff --git a/querydsl-core/pom.xml b/querydsl-core/pom.xml
index 3f9354f4e..53879cca4 100644
--- a/querydsl-core/pom.xml
+++ b/querydsl-core/pom.xml
@@ -1,4 +1,4 @@
-
+
4.0.0
@@ -72,7 +72,7 @@
jdepend
2.9.1
test
-
+
@@ -141,4 +141,4 @@
1.13
-
+
diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/FactoryExpressionBase.java b/querydsl-core/src/main/java/com/querydsl/core/types/FactoryExpressionBase.java
index 63cd9da6a..487962041 100644
--- a/querydsl-core/src/main/java/com/querydsl/core/types/FactoryExpressionBase.java
+++ b/querydsl-core/src/main/java/com/querydsl/core/types/FactoryExpressionBase.java
@@ -82,4 +82,16 @@ public abstract class FactoryExpressionBase extends ExpressionBase impleme
return new FactoryExpressionWrapper(this);
}
+ @Override
+ public boolean equals(Object o) {
+ if (o == this) {
+ return true;
+ } else if (o instanceof FactoryExpression) {
+ return getClass().equals(o.getClass())
+ && getArgs().equals(((FactoryExpression) o).getArgs());
+ } else {
+ return false;
+ }
+ }
+
}
diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/PathBuilderValidator.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/PathBuilderValidator.java
index d6ad88166..453e5ea01 100644
--- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/PathBuilderValidator.java
+++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/PathBuilderValidator.java
@@ -13,6 +13,7 @@
*/
package com.querydsl.core.types.dsl;
+import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Collection;
@@ -25,7 +26,7 @@ import com.querydsl.core.util.ReflectionUtils;
/**
* {@code PathBuilderValidator} validates {@link PathBuilder} properties at creation time
*/
-public interface PathBuilderValidator {
+public interface PathBuilderValidator extends Serializable {
/**
* Validates the given property of given class
diff --git a/querydsl-core/src/test/java/com/querydsl/core/types/Concatenation.java b/querydsl-core/src/test/java/com/querydsl/core/types/Concatenation.java
index 55b784bd0..d3b1dcb64 100644
--- a/querydsl-core/src/test/java/com/querydsl/core/types/Concatenation.java
+++ b/querydsl-core/src/test/java/com/querydsl/core/types/Concatenation.java
@@ -20,7 +20,7 @@ import java.util.List;
* @author tiwe
*
*/
-public class Concatenation extends ExpressionBase implements FactoryExpression {
+public class Concatenation extends FactoryExpressionBase {
private static final long serialVersionUID = -355693583588722395L;
diff --git a/querydsl-core/src/test/java/com/querydsl/core/types/SerializationTest.java b/querydsl-core/src/test/java/com/querydsl/core/types/SerializationTest.java
index 4cac2958d..8198bb845 100644
--- a/querydsl-core/src/test/java/com/querydsl/core/types/SerializationTest.java
+++ b/querydsl-core/src/test/java/com/querydsl/core/types/SerializationTest.java
@@ -3,15 +3,79 @@ package com.querydsl.core.types;
import static com.querydsl.core.testutil.Serialization.serialize;
import static org.junit.Assert.assertEquals;
-import org.junit.Test;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
-import com.querydsl.core.types.dsl.Expressions;
-import com.querydsl.core.types.dsl.SimplePath;
+import org.junit.Test;
+import org.reflections.Reflections;
+
+import com.google.common.collect.Maps;
+import com.querydsl.core.DefaultQueryMetadata;
+import com.querydsl.core.QueryMetadata;
+import com.querydsl.core.group.GroupBy;
+import com.querydsl.core.group.GroupExpression;
+import com.querydsl.core.testutil.Serialization;
+import com.querydsl.core.types.dsl.*;
public class SerializationTest {
+ public enum Gender { MALE, FEMALE }
+
@Test
- public void roundtrip() throws Exception {
+ public void Expressions() throws Exception {
+ Map, Object> args = Maps.newHashMap();
+ args.put(Object.class, "obj");
+ args.put(BeanPath.class, new EntityPathBase