Repository: olingo-odata4 Updated Branches: refs/heads/OLINGO-834_Filter_Parser d7e23bf89 -> 208f26c74
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/BinaryImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/BinaryImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/BinaryImpl.java index c3530c0..3f2e8f2 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/BinaryImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/BinaryImpl.java @@ -25,21 +25,16 @@ import org.apache.olingo.server.api.uri.queryoption.expression.Expression; import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitException; import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitor; -public class BinaryImpl extends ExpressionImpl implements Binary { +public class BinaryImpl implements Binary { - private BinaryOperatorKind operator; - private ExpressionImpl left; - private ExpressionImpl right; + private final Expression left; + private final BinaryOperatorKind operator; + private final Expression right; - public BinaryImpl() { - // TODO: Delete - } - - public BinaryImpl(Expression left, BinaryOperatorKind operator, Expression right) { - // TODO:DeleteCast - this.left = (ExpressionImpl) left; + public BinaryImpl(final Expression left, final BinaryOperatorKind operator, final Expression right) { + this.left = left; this.operator = operator; - this.right = (ExpressionImpl) right; + this.right = right; } @Override @@ -47,30 +42,16 @@ public class BinaryImpl extends ExpressionImpl implements Binary { return operator; } - public Binary setOperator(final BinaryOperatorKind operator) { - this.operator = operator; - return this; - } - @Override public Expression getLeftOperand() { return left; } - public void setLeftOperand(final ExpressionImpl operand) { - left = operand; - } - @Override public Expression getRightOperand() { return right; } - public void setRightOperand(final ExpressionImpl operand) { - right = operand; - - } - @Override public <T> T accept(final ExpressionVisitor<T> visitor) throws ExpressionVisitException, ODataApplicationException { T left = this.left.accept(visitor); @@ -82,5 +63,4 @@ public class BinaryImpl extends ExpressionImpl implements Binary { public String toString() { return "{" + left + " " + operator.name() + " " + right + '}'; } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/EnumerationImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/EnumerationImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/EnumerationImpl.java index 8f7df3a..256b8d1 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/EnumerationImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/EnumerationImpl.java @@ -18,7 +18,7 @@ */ package org.apache.olingo.server.core.uri.queryoption.expression; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.olingo.commons.api.edm.EdmEnumType; @@ -27,19 +27,14 @@ import org.apache.olingo.server.api.uri.queryoption.expression.Enumeration; import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitException; import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitor; -public class EnumerationImpl extends ExpressionImpl implements Enumeration { +public class EnumerationImpl implements Enumeration { - private EdmEnumType type; - private List<String> values = new ArrayList<String>(); + private final EdmEnumType type; + private final List<String> values; - @Override - public List<String> getValues() { - return values; - } - - public EnumerationImpl addValue(final String enumValue) { - values.add(enumValue); - return this; + public EnumerationImpl(final EdmEnumType type, final List<String> values) { + this.type = type; + this.values = values; } @Override @@ -47,14 +42,15 @@ public class EnumerationImpl extends ExpressionImpl implements Enumeration { return type; } - public EnumerationImpl setType(final EdmEnumType type) { - this.type = type; - return this; + @Override + public List<String> getValues() { + return values == null ? + Collections.<String> emptyList() : + Collections.unmodifiableList(values); } @Override public <T> T accept(final ExpressionVisitor<T> visitor) throws ExpressionVisitException, ODataApplicationException { return visitor.visitEnum(type, values); } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionImpl.java deleted file mode 100644 index c9cc707..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionImpl.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.uri.queryoption.expression; - -import org.apache.olingo.server.api.uri.queryoption.expression.Expression; - -public abstract class ExpressionImpl implements Expression { - // No additional methods needed for now. -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LambdaRefImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LambdaRefImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LambdaRefImpl.java index 8198204..824943a 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LambdaRefImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LambdaRefImpl.java @@ -23,23 +23,21 @@ import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitEx import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitor; import org.apache.olingo.server.api.uri.queryoption.expression.LambdaRef; -public class LambdaRefImpl extends ExpressionImpl implements LambdaRef { +public class LambdaRefImpl implements LambdaRef { - private String variableText; + private final String variableText; + + public LambdaRefImpl(final String text) { + variableText = text; + } @Override public String getVariableName() { return variableText; } - public LambdaRefImpl setVariableText(final String text) { - variableText = text; - return this; - } - @Override public <T> T accept(final ExpressionVisitor<T> visitor) throws ExpressionVisitException, ODataApplicationException { return visitor.visitLambdaReference(variableText); } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LiteralImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LiteralImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LiteralImpl.java index e275fdd..8a3cc8a 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LiteralImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/LiteralImpl.java @@ -24,16 +24,12 @@ import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitEx import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitor; import org.apache.olingo.server.api.uri.queryoption.expression.Literal; -public class LiteralImpl extends ExpressionImpl implements Literal { +public class LiteralImpl implements Literal { - private String text; - private EdmType type; + private final String text; + private final EdmType type; - public LiteralImpl() { - - } - - public LiteralImpl(String text, EdmType type) { + public LiteralImpl(final String text, final EdmType type) { this.text = text; this.type = type; } @@ -43,21 +39,11 @@ public class LiteralImpl extends ExpressionImpl implements Literal { return text; } - public LiteralImpl setText(final String text) { - this.text = text; - return this; - } - @Override public EdmType getType() { return type; } - public LiteralImpl setType(final EdmType type) { - this.type = type; - return this; - } - @Override public <T> T accept(final ExpressionVisitor<T> visitor) throws ExpressionVisitException, ODataApplicationException { return visitor.visitLiteral(this); @@ -65,7 +51,6 @@ public class LiteralImpl extends ExpressionImpl implements Literal { @Override public String toString() { - return "" + text; + return text == null ? "" : text; } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MemberImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MemberImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MemberImpl.java index 5f6162f..a71e382 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MemberImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MemberImpl.java @@ -30,19 +30,24 @@ import org.apache.olingo.server.core.uri.UriResourceImpl; import org.apache.olingo.server.core.uri.UriResourceTypedImpl; import org.apache.olingo.server.core.uri.UriResourceWithKeysImpl; -public class MemberImpl extends ExpressionImpl implements Member { +public class MemberImpl implements Member { - private UriInfoResource path; - private EdmType startTypeFilter; + private final UriInfoResource path; + private final EdmType startTypeFilter; + + public MemberImpl(final UriInfoResource path, final EdmType startTypeFilter) { + this.path = path; + this.startTypeFilter = startTypeFilter; + } @Override public UriInfoResource getResourcePath() { return path; } - public Member setResourcePath(final UriInfoResource pathSegments) { - path = pathSegments; - return this; + @Override + public EdmType getStartTypeFilter() { + return startTypeFilter; } @Override @@ -89,15 +94,4 @@ public class MemberImpl extends ExpressionImpl implements Member { } return false; } - - @Override - public EdmType getStartTypeFilter() { - return startTypeFilter; - } - - public MemberImpl setTypeFilter(final EdmType startTypeFilter) { - this.startTypeFilter = startTypeFilter; - return this; - } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MethodImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MethodImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MethodImpl.java index 8175c85..1c8ce64 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MethodImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MethodImpl.java @@ -19,6 +19,7 @@ package org.apache.olingo.server.core.uri.queryoption.expression; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.olingo.server.api.ODataApplicationException; @@ -28,17 +29,14 @@ import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitor import org.apache.olingo.server.api.uri.queryoption.expression.Method; import org.apache.olingo.server.api.uri.queryoption.expression.MethodKind; -public class MethodImpl extends ExpressionImpl implements Method { +public class MethodImpl implements Method { - private MethodKind method; - private List<ExpressionImpl> parameters = new ArrayList<ExpressionImpl>(); + private final MethodKind method; + private final List<Expression> parameters; - public MethodImpl() { - // TODO: Delete constructor - } - - public MethodImpl(MethodKind method) { + public MethodImpl(final MethodKind method, final List<Expression> parameters) { this.method = method; + this.parameters = parameters; } @Override @@ -46,48 +44,26 @@ public class MethodImpl extends ExpressionImpl implements Method { return method; } - public MethodImpl setMethod(final MethodKind methodCalls) { - method = methodCalls; - return this; - } - @Override public List<Expression> getParameters() { - List<Expression> list = new ArrayList<Expression>(); - for (ExpressionImpl item : parameters) { - list.add(item); - } - return list; - } - - public MethodImpl addParameter(final ExpressionImpl readCommonExpression) { - parameters.add(readCommonExpression); - return this; + return parameters == null ? + Collections.<Expression> emptyList() : + Collections.unmodifiableList(parameters); } @Override public <T> T accept(final ExpressionVisitor<T> visitor) throws ExpressionVisitException, ODataApplicationException { List<T> userParameters = new ArrayList<T>(); - for (ExpressionImpl parameter : parameters) { - userParameters.add(parameter.accept(visitor)); + if (parameters != null) { + for (final Expression parameter : parameters) { + userParameters.add(parameter.accept(visitor)); + } } return visitor.visitMethodCall(method, userParameters); } @Override public String toString() { - String parametersString = "["; - boolean first = true; - for (Expression exp : parameters) { - if(first){ - first = false; - parametersString = parametersString + exp.toString(); - }else { - parametersString = parametersString + ", " + exp.toString(); - } - } - parametersString = parametersString + "]"; - return "{" + method + " " + parametersString + "}"; + return "{" + method + " " + parameters + "}"; } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/TypeLiteralImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/TypeLiteralImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/TypeLiteralImpl.java index f5f6f06..336c203 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/TypeLiteralImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/TypeLiteralImpl.java @@ -24,23 +24,21 @@ import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitEx import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitor; import org.apache.olingo.server.api.uri.queryoption.expression.TypeLiteral; -public class TypeLiteralImpl extends ExpressionImpl implements TypeLiteral { +public class TypeLiteralImpl implements TypeLiteral { - private EdmType type; + private final EdmType type; + + public TypeLiteralImpl(final EdmType type) { + this.type = type; + } @Override public EdmType getType() { return type; } - public TypeLiteralImpl setType(final EdmType type) { - this.type = type; - return this; - } - @Override public <T> T accept(final ExpressionVisitor<T> visitor) throws ExpressionVisitException, ODataApplicationException { return visitor.visitTypeLiteral(type); } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/UnaryImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/UnaryImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/UnaryImpl.java index f1edf91..2438d27 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/UnaryImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/UnaryImpl.java @@ -25,18 +25,14 @@ import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitor import org.apache.olingo.server.api.uri.queryoption.expression.Unary; import org.apache.olingo.server.api.uri.queryoption.expression.UnaryOperatorKind; -public class UnaryImpl extends ExpressionImpl implements Unary { +public class UnaryImpl implements Unary { - private UnaryOperatorKind operator; - private ExpressionImpl expression; + private final UnaryOperatorKind operator; + private final Expression expression; - public UnaryImpl() { - - } - - public UnaryImpl(UnaryOperatorKind operator, Expression expression) { + public UnaryImpl(final UnaryOperatorKind operator, final Expression expression) { this.operator = operator; - this.expression = (ExpressionImpl) expression; + this.expression = expression; } @Override @@ -44,19 +40,11 @@ public class UnaryImpl extends ExpressionImpl implements Unary { return operator; } - public void setOperator(final UnaryOperatorKind operator) { - this.operator = operator; - } - @Override public Expression getOperand() { return expression; } - public void setOperand(final ExpressionImpl expression) { - this.expression = expression; - } - @Override public <T> T accept(final ExpressionVisitor<T> visitor) throws ExpressionVisitException, ODataApplicationException { T operand = expression.accept(visitor); @@ -67,5 +55,4 @@ public class UnaryImpl extends ExpressionImpl implements Unary { public String toString() { return "{" + operator + " " + expression + '}'; } - } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/expression/FilterParserTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/expression/FilterParserTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/expression/FilterParserTest.java deleted file mode 100644 index 7bfc369..0000000 --- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/expression/FilterParserTest.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.uri.expression; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.ArrayList; - -import org.apache.olingo.server.api.uri.queryoption.expression.Expression; -import org.apache.olingo.server.core.uri.expression.FilterParser.TokenKind; -import org.apache.olingo.server.core.uri.expression.FilterParser.Tokenizer; -import org.apache.olingo.server.core.uri.expression.FilterParser.Token; -import org.junit.Test; - -public class FilterParserTest { - - @Test - public void equality() { - Expression expression = parseExpression(TokenKind.EQ_OP); - assertEquals("{5 EQ 5}", expression.toString()); - - expression = parseExpression(TokenKind.NE_OP); - assertEquals("{5 NE 5}", expression.toString()); - } - - @Test - public void relational() { - Expression expression = parseExpression(TokenKind.GT_OP); - assertEquals("{5 GT 5}", expression.toString()); - - expression = parseExpression(TokenKind.GE_OP); - assertEquals("{5 GE 5}", expression.toString()); - - expression = parseExpression(TokenKind.LT_OP); - assertEquals("{5 LT 5}", expression.toString()); - - expression = parseExpression(TokenKind.LE_OP); - assertEquals("{5 LE 5}", expression.toString()); - } - - @Test - public void additive() { - Expression expression = parseExpression(TokenKind.ADD_OP); - assertEquals("{5 ADD 5}", expression.toString()); - - expression = parseExpression(TokenKind.SUB_OP); - assertEquals("{5 SUB 5}", expression.toString()); - } - - @Test - public void multiplicative() { - Expression expression = parseExpression(TokenKind.MUL_OP); - assertEquals("{5 MUL 5}", expression.toString()); - - expression = parseExpression(TokenKind.DIV_OP); - assertEquals("{5 DIV 5}", expression.toString()); - - expression = parseExpression(TokenKind.MOD_OP); - assertEquals("{5 MOD 5}", expression.toString()); - } - - @Test - public void unary() { - ArrayList<Token> tokens = new ArrayList<Token>(); - tokens.add(new Token(TokenKind.MINUS, "")); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - Tokenizer tokenizer = new Tokenizer(tokens); - Expression expression = new FilterParser().parse(tokenizer); - assertEquals("{- 5}", expression.toString()); - - tokens = new ArrayList<Token>(); - tokens.add(new Token(TokenKind.NOT, "")); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - tokenizer = new Tokenizer(tokens); - expression = new FilterParser().parse(tokenizer); - assertEquals("{not 5}", expression.toString()); - } - - @Test - public void grouping() { - ArrayList<Token> tokens = new ArrayList<Token>(); - tokens.add(new Token(TokenKind.MINUS, "")); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - tokens.add(new Token(TokenKind.ADD_OP, "")); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - Tokenizer tokenizer = new Tokenizer(tokens); - Expression expression = new FilterParser().parse(tokenizer); - assertEquals("{{- 5} ADD 5}", expression.toString()); - - tokens = new ArrayList<Token>(); - tokens.add(new Token(TokenKind.MINUS, "")); - tokens.add(new Token(TokenKind.OPEN, "")); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - tokens.add(new Token(TokenKind.ADD_OP, "")); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - tokens.add(new Token(TokenKind.CLOSE, "")); - tokenizer = new Tokenizer(tokens); - expression = new FilterParser().parse(tokenizer); - assertEquals("{- {5 ADD 5}}", expression.toString()); - } - - @Test - public void noParameterMethods() { - Expression expression = parseMethod(TokenKind.Now); - assertEquals("{now []}", expression.toString()); - - expression = parseMethod(TokenKind.Maxdatetime); - assertEquals("{maxdatetime []}", expression.toString()); - - expression = parseMethod(TokenKind.Mindatetime); - assertEquals("{mindatetime []}", expression.toString()); - } - - @Test - public void oneParameterMethods() { - Expression expression = parseMethod(TokenKind.Length, TokenKind.PrimitiveStringValue); - assertEquals("{length [String1]}", expression.toString()); - - expression = parseMethod(TokenKind.Tolower, TokenKind.PrimitiveStringValue); - assertEquals("{tolower [String1]}", expression.toString()); - - expression = parseMethod(TokenKind.Toupper, TokenKind.PrimitiveStringValue); - assertEquals("{toupper [String1]}", expression.toString()); - - expression = parseMethod(TokenKind.Trim, TokenKind.PrimitiveStringValue); - assertEquals("{trim [String1]}", expression.toString()); - - expression = parseMethod(TokenKind.Year, TokenKind.PrimitiveDateValue); - assertEquals("{year [Date1]}", expression.toString()); - - expression = parseMethod(TokenKind.Month, TokenKind.PrimitiveDateValue); - assertEquals("{month [Date1]}", expression.toString()); - - expression = parseMethod(TokenKind.Day, TokenKind.PrimitiveDateValue); - assertEquals("{day [Date1]}", expression.toString()); - - expression = parseMethod(TokenKind.Hour, TokenKind.PrimitiveDateTimeOffsetValue); - assertEquals("{hour [DateTimeOffset1]}", expression.toString()); - - expression = parseMethod(TokenKind.Minute, TokenKind.PrimitiveDateTimeOffsetValue); - assertEquals("{minute [DateTimeOffset1]}", expression.toString()); - - expression = parseMethod(TokenKind.Second, TokenKind.PrimitiveDateTimeOffsetValue); - assertEquals("{second [DateTimeOffset1]}", expression.toString()); - } - - @Test - public void twoParameterMethods() { - - } - - private Expression parseMethod(TokenKind... kind) { - ArrayList<Token> tokens = new ArrayList<Token>(); - tokens.add(new Token(kind[0], "")); - - for (int i = 1; i < kind.length; i++) { - String text = null; - switch (kind[i]) { - case PrimitiveStringValue: - text = "String" + i; - break; - case PrimitiveDateValue: - text = "Date" + i; - break; - case PrimitiveDateTimeOffsetValue: - text = "DateTimeOffset" + i; - break; - default: - text = "" + i; - break; - } - tokens.add(new Token(kind[i], text)); - } - - tokens.add(new Token(TokenKind.CLOSE, "")); - Tokenizer tokenizer = new Tokenizer(tokens); - Expression expression = new FilterParser().parse(tokenizer); - assertNotNull(expression); - return expression; - } - - private Expression parseExpression(TokenKind operator) { - ArrayList<Token> tokens = new ArrayList<Token>(); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - tokens.add(new Token(operator, "")); - tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); - Tokenizer tokenizer = new Tokenizer(tokens); - - Expression expression = new FilterParser().parse(tokenizer); - assertNotNull(expression); - return expression; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/ExpressionParserTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/ExpressionParserTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/ExpressionParserTest.java new file mode 100644 index 0000000..7da823e --- /dev/null +++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/ExpressionParserTest.java @@ -0,0 +1,210 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.server.core.uri.parser; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.ArrayList; + +import org.apache.olingo.server.api.uri.queryoption.expression.Expression; +import org.apache.olingo.server.core.uri.parser.ExpressionParser.Token; +import org.apache.olingo.server.core.uri.parser.ExpressionParser.TokenKind; +import org.apache.olingo.server.core.uri.parser.ExpressionParser.Tokenizer; +import org.junit.Test; + +public class ExpressionParserTest { + + @Test + public void equality() throws Exception { + Expression expression = parseExpression(TokenKind.EQ_OP); + assertEquals("{5 EQ 5}", expression.toString()); + + expression = parseExpression(TokenKind.NE_OP); + assertEquals("{5 NE 5}", expression.toString()); + } + + @Test + public void relational() throws Exception { + Expression expression = parseExpression(TokenKind.GT_OP); + assertEquals("{5 GT 5}", expression.toString()); + + expression = parseExpression(TokenKind.GE_OP); + assertEquals("{5 GE 5}", expression.toString()); + + expression = parseExpression(TokenKind.LT_OP); + assertEquals("{5 LT 5}", expression.toString()); + + expression = parseExpression(TokenKind.LE_OP); + assertEquals("{5 LE 5}", expression.toString()); + } + + @Test + public void additive() throws Exception { + Expression expression = parseExpression(TokenKind.ADD_OP); + assertEquals("{5 ADD 5}", expression.toString()); + + expression = parseExpression(TokenKind.SUB_OP); + assertEquals("{5 SUB 5}", expression.toString()); + } + + @Test + public void multiplicative() throws Exception { + Expression expression = parseExpression(TokenKind.MUL_OP); + assertEquals("{5 MUL 5}", expression.toString()); + + expression = parseExpression(TokenKind.DIV_OP); + assertEquals("{5 DIV 5}", expression.toString()); + + expression = parseExpression(TokenKind.MOD_OP); + assertEquals("{5 MOD 5}", expression.toString()); + } + + @Test + public void unary() throws Exception { + ArrayList<Token> tokens = new ArrayList<Token>(); + tokens.add(new Token(TokenKind.MINUS, "")); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + Tokenizer tokenizer = new Tokenizer(tokens); + Expression expression = new ExpressionParser().parse(tokenizer); + assertEquals("{- 5}", expression.toString()); + + tokens = new ArrayList<Token>(); + tokens.add(new Token(TokenKind.NOT, "")); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + tokenizer = new Tokenizer(tokens); + expression = new ExpressionParser().parse(tokenizer); + assertEquals("{not 5}", expression.toString()); + } + + @Test + public void grouping() throws Exception { + ArrayList<Token> tokens = new ArrayList<Token>(); + tokens.add(new Token(TokenKind.MINUS, "")); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + tokens.add(new Token(TokenKind.ADD_OP, "")); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + Tokenizer tokenizer = new Tokenizer(tokens); + Expression expression = new ExpressionParser().parse(tokenizer); + assertEquals("{{- 5} ADD 5}", expression.toString()); + + tokens = new ArrayList<Token>(); + tokens.add(new Token(TokenKind.MINUS, "")); + tokens.add(new Token(TokenKind.OPEN, "")); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + tokens.add(new Token(TokenKind.ADD_OP, "")); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + tokens.add(new Token(TokenKind.CLOSE, "")); + tokenizer = new Tokenizer(tokens); + expression = new ExpressionParser().parse(tokenizer); + assertEquals("{- {5 ADD 5}}", expression.toString()); + } + + @Test + public void noParameterMethods() throws Exception { + Expression expression = parseMethod(TokenKind.Now); + assertEquals("{now []}", expression.toString()); + + expression = parseMethod(TokenKind.Maxdatetime); + assertEquals("{maxdatetime []}", expression.toString()); + + expression = parseMethod(TokenKind.Mindatetime); + assertEquals("{mindatetime []}", expression.toString()); + } + + @Test + public void oneParameterMethods() throws Exception { + Expression expression = parseMethod(TokenKind.Length, TokenKind.PrimitiveStringValue); + assertEquals("{length [String1]}", expression.toString()); + + expression = parseMethod(TokenKind.Tolower, TokenKind.PrimitiveStringValue); + assertEquals("{tolower [String1]}", expression.toString()); + + expression = parseMethod(TokenKind.Toupper, TokenKind.PrimitiveStringValue); + assertEquals("{toupper [String1]}", expression.toString()); + + expression = parseMethod(TokenKind.Trim, TokenKind.PrimitiveStringValue); + assertEquals("{trim [String1]}", expression.toString()); + + expression = parseMethod(TokenKind.Year, TokenKind.PrimitiveDateValue); + assertEquals("{year [Date1]}", expression.toString()); + + expression = parseMethod(TokenKind.Month, TokenKind.PrimitiveDateValue); + assertEquals("{month [Date1]}", expression.toString()); + + expression = parseMethod(TokenKind.Day, TokenKind.PrimitiveDateValue); + assertEquals("{day [Date1]}", expression.toString()); + + expression = parseMethod(TokenKind.Hour, TokenKind.PrimitiveDateTimeOffsetValue); + assertEquals("{hour [DateTimeOffset1]}", expression.toString()); + + expression = parseMethod(TokenKind.Minute, TokenKind.PrimitiveDateTimeOffsetValue); + assertEquals("{minute [DateTimeOffset1]}", expression.toString()); + + expression = parseMethod(TokenKind.Second, TokenKind.PrimitiveDateTimeOffsetValue); + assertEquals("{second [DateTimeOffset1]}", expression.toString()); + } + + @Test + public void twoParameterMethods() { + + } + + private Expression parseMethod(TokenKind... kind) throws UriParserException { + ArrayList<Token> tokens = new ArrayList<Token>(); + tokens.add(new Token(kind[0], "")); + + for (int i = 1; i < kind.length; i++) { + String text = null; + switch (kind[i]) { + case PrimitiveStringValue: + text = "String" + i; + break; + case PrimitiveDateValue: + text = "Date" + i; + break; + case PrimitiveDateTimeOffsetValue: + text = "DateTimeOffset" + i; + break; + default: + text = "" + i; + break; + } + tokens.add(new Token(kind[i], text)); + } + + tokens.add(new Token(TokenKind.CLOSE, "")); + Tokenizer tokenizer = new Tokenizer(tokens); + Expression expression = new ExpressionParser().parse(tokenizer); + assertNotNull(expression); + return expression; + } + + private Expression parseExpression(TokenKind operator) throws UriParserException { + ArrayList<Token> tokens = new ArrayList<Token>(); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + tokens.add(new Token(operator, "")); + tokens.add(new Token(TokenKind.PrimitiveIntegerValue, "5")); + Tokenizer tokenizer = new Tokenizer(tokens); + + Expression expression = new ExpressionParser().parse(tokenizer); + assertNotNull(expression); + return expression; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java index a5d0ea3..a945d11 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java @@ -43,7 +43,7 @@ import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.uri.UriParameter; import org.apache.olingo.server.api.uri.UriResourceKind; -import org.apache.olingo.server.core.uri.queryoption.expression.ExpressionImpl; +import org.apache.olingo.server.api.uri.queryoption.expression.Expression; import org.apache.olingo.server.core.uri.queryoption.expression.LiteralImpl; import org.apache.olingo.server.tecsvc.provider.ActionProvider; import org.apache.olingo.server.tecsvc.provider.ComplexTypeProvider; @@ -59,7 +59,7 @@ public class UriResourceImplTest { @Test public void testUriParameterImpl() { UriParameterImpl impl = new UriParameterImpl(); - ExpressionImpl expression = new LiteralImpl().setText("Expression"); + Expression expression = new LiteralImpl("Expression", null); impl.setText("Text"); impl.setName("A"); @@ -105,7 +105,7 @@ public class UriResourceImplTest { UriResourceLambdaAllImpl impl = new UriResourceLambdaAllImpl(); assertEquals(UriResourceKind.lambdaAll, impl.getKind()); - ExpressionImpl expression = new LiteralImpl().setText("Expression"); + Expression expression = new LiteralImpl("Expression", null); impl.setExpression(expression); impl.setLamdaVariable("A"); @@ -121,7 +121,7 @@ public class UriResourceImplTest { UriResourceLambdaAnyImpl impl = new UriResourceLambdaAnyImpl(); assertEquals(UriResourceKind.lambdaAny, impl.getKind()); - ExpressionImpl expression = new LiteralImpl().setText("Expression"); + Expression expression = new LiteralImpl("Expression", null); impl.setExpression(expression); impl.setLamdaVariable("A"); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/QueryOptionTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/QueryOptionTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/QueryOptionTest.java index 93cdf86..db9f5be 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/QueryOptionTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/QueryOptionTest.java @@ -44,7 +44,7 @@ public class QueryOptionTest { public void testAliasQueryOption() { AliasQueryOptionImpl option = new AliasQueryOptionImpl(); - Expression expression = new LiteralImpl(); + Expression expression = new LiteralImpl(null, null); option.setAliasValue(expression); assertEquals(expression, option.getValue()); @@ -132,7 +132,7 @@ public class QueryOptionTest { FilterOptionImpl option = new FilterOptionImpl(); assertEquals(SystemQueryOptionKind.FILTER, option.getKind()); - AliasImpl expression = new AliasImpl(); + AliasImpl expression = new AliasImpl(null); option.setExpression(expression); assertEquals(expression, option.getExpression()); @@ -184,7 +184,7 @@ public class QueryOptionTest { public void testOrderByItemImpl() { OrderByItemImpl option = new OrderByItemImpl(); - AliasImpl expression = new AliasImpl(); + AliasImpl expression = new AliasImpl(null); option.setExpression(expression); assertEquals(expression, option.getExpression()); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/208f26c7/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java index e8a9b38..ec5ce6e 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java @@ -37,6 +37,7 @@ import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.uri.UriInfoKind; import org.apache.olingo.server.api.uri.UriInfoResource; import org.apache.olingo.server.api.uri.queryoption.expression.BinaryOperatorKind; +import org.apache.olingo.server.api.uri.queryoption.expression.Expression; import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitException; import org.apache.olingo.server.api.uri.queryoption.expression.MethodKind; import org.apache.olingo.server.api.uri.queryoption.expression.UnaryOperatorKind; @@ -56,7 +57,7 @@ public class ExpressionTest { new EdmTechProvider(), Collections.<EdmxReference> emptyList()).getEdm(); @Test - public void testSupportedOperators() { + public void supportedOperators() { assertEquals(UnaryOperatorKind.MINUS, UnaryOperatorKind.get("-")); assertEquals(null, UnaryOperatorKind.get("XXX")); @@ -68,28 +69,21 @@ public class ExpressionTest { } @Test - public void testAliasExpression() throws ExpressionVisitException, ODataApplicationException { - AliasImpl expression = new AliasImpl(); - - expression.setParameter("Test"); + public void aliasExpression() throws ExpressionVisitException, ODataApplicationException { + AliasImpl expression = new AliasImpl("Test"); assertEquals("Test", expression.getParameterName()); String output = expression.accept(new FilterTreeToText()); assertEquals("<Test>", output); - } @Test - public void testBinaryExpression() throws ExpressionVisitException, ODataApplicationException { - BinaryImpl expression = new BinaryImpl(); - - ExpressionImpl expressionLeft = new LiteralImpl().setText("A"); - ExpressionImpl expressionRight = new LiteralImpl().setText("B"); + public void binaryExpression() throws ExpressionVisitException, ODataApplicationException { + Expression expressionLeft = new LiteralImpl("A", null); + Expression expressionRight = new LiteralImpl("B", null); - expression.setLeftOperand(expressionLeft); - expression.setRightOperand(expressionRight); - expression.setOperator(BinaryOperatorKind.SUB); + BinaryImpl expression = new BinaryImpl(expressionLeft, BinaryOperatorKind.SUB, expressionRight); assertEquals(expressionLeft, expression.getLeftOperand()); assertEquals(expressionRight, expression.getRightOperand()); @@ -100,50 +94,39 @@ public class ExpressionTest { } @Test - public void testEnumerationExpression() throws ExpressionVisitException, ODataApplicationException { - EnumerationImpl expression = new EnumerationImpl(); + public void enumerationExpression() throws ExpressionVisitException, ODataApplicationException { EdmEnumType type = edm.getEnumType(EnumTypeProvider.nameENString); assertNotNull(type); - expression.setType(type); - + EnumerationImpl expression = new EnumerationImpl(type, Arrays.asList("A", "B")); assertEquals(type, expression.getType()); - - expression.addValue("A"); - expression.addValue("B"); assertEquals("A", expression.getValues().get(0)); assertEquals("B", expression.getValues().get(1)); assertEquals("<olingo.odata.test1.ENString<A,B>>", expression.accept(new FilterTreeToText())); } @Test - public void testLambdaRefExpression() throws ExpressionVisitException, ODataApplicationException { - LambdaRefImpl expression = new LambdaRefImpl(); - expression.setVariableText("A"); + public void lambdaRefExpression() throws ExpressionVisitException, ODataApplicationException { + LambdaRefImpl expression = new LambdaRefImpl("A"); assertEquals("A", expression.getVariableName()); - assertEquals("<A>", expression.accept(new FilterTreeToText())); - } @Test - public void testLiteralExpresion() throws ExpressionVisitException, ODataApplicationException { - LiteralImpl expression = new LiteralImpl(); - expression.setText("A"); + public void literalExpression() throws ExpressionVisitException, ODataApplicationException { + LiteralImpl expression = new LiteralImpl("A", null); assertEquals("A", expression.getText()); - assertEquals("<A>", expression.accept(new FilterTreeToText())); } @Test - public void testMemberExpression() throws ExpressionVisitException, ODataApplicationException { - MemberImpl expression = new MemberImpl(); + public void memberExpression() throws ExpressionVisitException, ODataApplicationException { EdmEntityType entityType = edm.getEntityType(EntityTypeProvider.nameETKeyNav); // UriResourceImpl EdmAction action = edm.getUnboundAction(ActionProvider.nameUARTString); UriInfoResource uriInfo = new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( new UriResourceActionImpl().setAction(action)).asUriInfoResource(); - expression.setResourcePath(uriInfo); + MemberImpl expression = new MemberImpl(uriInfo, null); assertEquals(action.getReturnType().getType(), expression.getType()); // check accept and path @@ -155,45 +138,50 @@ public class ExpressionTest { // UriResourceImplTyped check collection = true case action = edm.getUnboundAction(ActionProvider.nameUARTCollStringTwoParam); - expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource) + expression = new MemberImpl(new UriInfoImpl().setKind(UriInfoKind.resource) .addResourcePart(new UriResourceActionImpl().setAction(action)) - .asUriInfoResource()); + .asUriInfoResource(), + null); assertTrue(expression.isCollection()); // UriResourceImplTyped with filter EdmFunction function = edm.getUnboundFunction(FunctionProvider.nameUFCRTETKeyNav, null); - expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( + expression = new MemberImpl(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( new UriResourceFunctionImpl().setFunction(function).setEntryTypeFilter(entityType)) - .asUriInfoResource()); + .asUriInfoResource(), + null); assertEquals(entityType, expression.getType()); // UriResourceImplKeyPred function = edm.getUnboundFunction(FunctionProvider.nameUFCRTETKeyNav, null); - expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( + expression = new MemberImpl(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( new UriResourceFunctionImpl().setFunction(function)) - .asUriInfoResource()); + .asUriInfoResource(), + null); assertEquals(function.getReturnType().getType(), expression.getType()); // UriResourceImplKeyPred typeFilter on entry EdmEntityType entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav); function = edm.getUnboundFunction(FunctionProvider.nameUFCRTCollETTwoKeyNavParam, Arrays.asList("ParameterInt16")); - expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( + expression = new MemberImpl(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( new UriResourceFunctionImpl().setFunction(function).setEntryTypeFilter(entityBaseType)) - .asUriInfoResource()); + .asUriInfoResource(), + null); assertEquals(entityBaseType, expression.getType()); // UriResourceImplKeyPred typeFilter on entry entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav); function = edm.getUnboundFunction(FunctionProvider.nameUFCRTCollETTwoKeyNavParam, Arrays.asList("ParameterInt16")); - expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( + expression = new MemberImpl(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart( new UriResourceFunctionImpl().setFunction(function).setCollectionTypeFilter(entityBaseType)) - .asUriInfoResource()); + .asUriInfoResource(), + null); assertEquals(entityBaseType, expression.getType()); // no typed entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav); function = edm.getUnboundFunction(FunctionProvider.nameUFCRTCollETTwoKeyNavParam, Arrays.asList("ParameterInt16")); - expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.all)); + expression = new MemberImpl(new UriInfoImpl().setKind(UriInfoKind.all), null); assertEquals(null, expression.getType()); // no typed collection else case @@ -201,14 +189,10 @@ public class ExpressionTest { } @Test - public void testMethodCallExpression() throws ExpressionVisitException, ODataApplicationException { - MethodImpl expression = new MethodImpl(); - expression.setMethod(MethodKind.CONCAT); - - ExpressionImpl p0 = new LiteralImpl().setText("A"); - ExpressionImpl p1 = new LiteralImpl().setText("B"); - expression.addParameter(p0); - expression.addParameter(p1); + public void methodCallExpression() throws ExpressionVisitException, ODataApplicationException { + Expression p0 = new LiteralImpl("A", null); + Expression p1 = new LiteralImpl("B", null); + MethodImpl expression = new MethodImpl(MethodKind.CONCAT, Arrays.asList(p0, p1)); assertEquals(MethodKind.CONCAT, expression.getMethod()); assertEquals("<concat(<A>,<B>)>", expression.accept(new FilterTreeToText())); @@ -218,27 +202,22 @@ public class ExpressionTest { } @Test - public void testTypeLiteralExpression() throws ExpressionVisitException, ODataApplicationException { - TypeLiteralImpl expression = new TypeLiteralImpl(); + public void typeLiteralExpression() throws ExpressionVisitException, ODataApplicationException { EdmEntityType entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav); - expression.setType(entityBaseType); + TypeLiteralImpl expression = new TypeLiteralImpl(entityBaseType); assertEquals(entityBaseType, expression.getType()); assertEquals("<olingo.odata.test1.ETBaseTwoKeyNav>", expression.accept(new FilterTreeToText())); } @Test - public void testUnaryExpression() throws ExpressionVisitException, ODataApplicationException { - UnaryImpl expression = new UnaryImpl(); - expression.setOperator(UnaryOperatorKind.MINUS); - - ExpressionImpl operand = new LiteralImpl().setText("A"); - expression.setOperand(operand); + public void unaryExpression() throws ExpressionVisitException, ODataApplicationException { + Expression operand = new LiteralImpl("A", null); + UnaryImpl expression = new UnaryImpl(UnaryOperatorKind.MINUS, operand); assertEquals(UnaryOperatorKind.MINUS, expression.getOperator()); assertEquals(operand, expression.getOperand()); assertEquals("<- <A>>", expression.accept(new FilterTreeToText())); } - }
