diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java b/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java index bb4a757fe..300a6feb4 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java @@ -10,8 +10,8 @@ import static com.mysema.query.grammar.types.Factory.createBoolean; import static com.mysema.query.grammar.types.Factory.createConstant; import static com.mysema.query.grammar.types.Factory.createNumber; +import com.mysema.query.grammar.types.CollectionType; import com.mysema.query.grammar.types.Expr; -import com.mysema.query.grammar.types.Expr.CollectionType; /** * Grammar provides the factory methods for the fluent grammar diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Alias.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Alias.java index aed47a87d..3780e71be 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Alias.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Alias.java @@ -11,7 +11,9 @@ package com.mysema.query.grammar.types; * @author tiwe * @version $Id$ */ -public class Alias { +public interface Alias { + + Expr getFrom(); public static class Entity extends Expr.Entity implements ToPath{ private final Expr from; @@ -37,7 +39,7 @@ public class Alias { public Path getTo() {return to;} } - public static class Simple extends Expr.Simple{ + public static class Simple extends Expr.Simple implements Alias{ private final Expr from; private final java.lang.String to; public Simple(Expr from, java.lang.String to) { @@ -52,8 +54,7 @@ public class Alias { public java.lang.String getTo() {return to;} } - public interface ToPath{ - Expr getFrom(); + public interface ToPath extends Alias{ Path getTo(); } diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/CollectionType.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/CollectionType.java new file mode 100644 index 000000000..3547db116 --- /dev/null +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/CollectionType.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2008 Mysema Ltd. + * All rights reserved. + * + */ +package com.mysema.query.grammar.types; + +/** + * CollectionType provides + * + * @author tiwe + * @version $Id$ + */ +public interface CollectionType{ } \ No newline at end of file diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java index 56168dcd2..4c9080af8 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java @@ -29,8 +29,6 @@ public abstract class Expr { public Boolean or(Boolean right) {return IntGrammar.or(this, right);} } - public interface CollectionType{ } - public static abstract class Comparable> extends Literal{ public Comparable(Class type) {super(type);} public Boolean after(D right) {return IntGrammar.after(this,right);} diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java index c538eda9b..4a2f3583f 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java @@ -13,7 +13,6 @@ import static com.mysema.query.grammar.types.Factory.createString; import com.mysema.query.grammar.Ops; import com.mysema.query.grammar.Order; import com.mysema.query.grammar.OrderSpecifier; -import com.mysema.query.grammar.types.Expr.CollectionType; /** * InternalGrammar provides diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Path.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Path.java index d76212b20..4e91677ec 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Path.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Path.java @@ -24,7 +24,7 @@ public interface Path { Expr.Boolean isnotnull(); Expr.Boolean isnull(); - public static class Boolean extends Expr.Boolean implements Simple{ + public static class Boolean extends Expr.Boolean implements Path{ private final PathMetadata metadata; public Boolean(PathMetadata metadata) { this.metadata = metadata; @@ -34,14 +34,14 @@ public interface Path { public Expr.Boolean isnull() {return IntGrammar.isnull(this);} } - public interface Collection extends Path>, Expr.CollectionType{ + public interface Collection extends Path>, CollectionType{ Expr get(Expr index); Expr get(int index); Class getElementType(); Expr.Comparable size(); } - public static class Comparable> extends Expr.Comparable implements Simple{ + public static class Comparable> extends Expr.Comparable implements Path{ private final PathMetadata metadata; public Comparable(Class type, PathMetadata metadata) { super(type); @@ -60,17 +60,16 @@ public interface Path { this.type = type; this.metadata = metadata; } - public Expr.Literal get(Expr index) { - return new Path.Literal(type, forListAccess(this, index)); + public Expr.Simple get(Expr index) { + return new Path.Simple(type, forListAccess(this, index)); } - public Expr.Literal get(int index) { - return new Path.Literal(type, forListAccess(this, index)); + public Expr.Simple get(int index) { + return new Path.Simple(type, forListAccess(this, index)); } public PathMetadata getMetadata() {return metadata;} public Expr.Boolean isnotnull() {return IntGrammar.isnotnull(this);} public Expr.Boolean isnull() {return IntGrammar.isnull(this);} public Expr.Comparable size() { -// return IntGrammar.size(this); return new Path.Comparable(Integer.class, forSize(this)); } public Class getElementType() {return type;} @@ -86,11 +85,11 @@ public interface Path { this.valueType = valueType; this.metadata = metadata; } - public Expr.Literal get(Expr key) { - return new Path.Literal(valueType, forMapAccess(this, key)); + public Expr.Simple get(Expr key) { + return new Path.Simple(valueType, forMapAccess(this, key)); } - public Expr.Literal get(K key) { - return new Path.Literal(valueType, forMapAccess(this, key)); + public Expr.Simple get(K key) { + return new Path.Simple(valueType, forMapAccess(this, key)); } public PathMetadata getMetadata() {return metadata;} public Expr.Boolean isnotnull() {return IntGrammar.isnotnull(this);} @@ -121,8 +120,8 @@ public interface Path { protected EntityCollection _entitycol(java.lang.String path,Class type) { return new EntityCollection(type, forProperty(this, path)); } - protected Expr.Literal _simple(java.lang.String path, Class type){ - return new Path.Literal(type, forProperty(this, path)); + protected Expr.Simple _simple(java.lang.String path, Class type){ + return new Path.Simple(type, forProperty(this, path)); } protected ComponentCollection _simplecol(java.lang.String path,Class type) { return new ComponentCollection(type, forProperty(this, path)); @@ -198,14 +197,10 @@ public interface Path { Class getKeyType(); Class getValueType(); } - - public interface Simple extends Path{ - Expr as(java.lang.String to); - } - - public static class Literal extends Expr.Literal implements Simple{ + + public static class Simple extends Expr.Simple implements Path{ private final PathMetadata metadata; - public Literal(Class type, PathMetadata metadata) { + public Simple(Class type, PathMetadata metadata) { super(type); this.metadata = metadata; } @@ -214,7 +209,7 @@ public interface Path { public Expr.Boolean isnull() {return IntGrammar.isnull(this);} } - public static class String extends Expr.String implements Simple{ + public static class String extends Expr.String implements Path{ private final PathMetadata metadata; public String(PathMetadata metadata) { this.metadata = metadata; diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java index 77d140cf4..1f74261f0 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java @@ -103,8 +103,6 @@ public abstract class Visitor> { protected abstract void visit(Path.Simple expr); - protected abstract void visit(Path.Literal expr); - protected abstract void visit(Path.String expr); } diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java index 19a6c87ba..32da97af3 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java @@ -87,10 +87,6 @@ public abstract class VisitorAdapter> extends Visito visit((Path) expr); } @Override - protected void visit(Path.Literal expr) { - visit((Path) expr); - } - @Override protected void visit(Path.String expr) { visit((Path) expr); } diff --git a/querydsl-core/src/test/java/com/mysema/query/grammar/VisitorTest.java b/querydsl-core/src/test/java/com/mysema/query/grammar/VisitorTest.java index f251a341f..4ed28c1f6 100644 --- a/querydsl-core/src/test/java/com/mysema/query/grammar/VisitorTest.java +++ b/querydsl-core/src/test/java/com/mysema/query/grammar/VisitorTest.java @@ -23,13 +23,6 @@ public class VisitorTest { @Test public void testIteration() throws SecurityException, NoSuchMethodException{ -// for (Class innerType : Types.class.getClasses()){ -// if (!innerType.isInterface() -// && Expr.class.isAssignableFrom(innerType) -// && !innerType.getSimpleName().startsWith("Expr")){ -// Visitor.class.getDeclaredMethod("visit", innerType); -// } -// } List> types = new ArrayList>(); types.addAll(Arrays.asList(Alias.class.getClasses())); types.addAll(Arrays.asList(Operation.class.getClasses())); diff --git a/querydsl-core/src/test/java/com/mysema/query/grammar/types/TypesTest.java b/querydsl-core/src/test/java/com/mysema/query/grammar/types/TypesTest.java new file mode 100644 index 000000000..5a797c000 --- /dev/null +++ b/querydsl-core/src/test/java/com/mysema/query/grammar/types/TypesTest.java @@ -0,0 +1,43 @@ +package com.mysema.query.grammar.types; + +import static org.junit.Assert.*; + +import org.junit.Test; + + +/** + * TypesTest provides + * + * @author tiwe + * @version $Id$ + */ +public class TypesTest { + + @Test + public void testAlias(){ + for (Class cl : Alias.class.getClasses()){ + assertTrue(cl.getName(),Alias.class.isAssignableFrom(cl)); + if (!cl.isInterface()){ + assertTrue(cl.getName(),Expr.class.isAssignableFrom(cl)); + } + } + } + + @Test + public void testExpr(){ + for (Class cl : Expr.class.getClasses()){ + assertTrue(cl.getName(),Expr.class.isAssignableFrom(cl)); + } + } + + @Test + public void testPath(){ + for (Class cl : Path.class.getClasses()){ + assertTrue(cl.getName(),Path.class.isAssignableFrom(cl)); + if (!cl.isInterface()){ + assertTrue(cl.getName(),Expr.class.isAssignableFrom(cl)); + } + } + } + +}