You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ko...@apache.org on 2013/12/18 11:24:18 UTC

git commit: [OLINGO-63] Uri Parser: Add support for II

Updated Branches:
  refs/heads/master 021afffb5 -> cf4df9be8


[OLINGO-63] Uri Parser: Add support for  II


Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/cf4df9be
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/cf4df9be
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/cf4df9be

Branch: refs/heads/master
Commit: cf4df9be8a31ec97f1f6387db8ae776efde92778
Parents: 021afff
Author: Sven Kobler <sv...@sap.com>
Authored: Wed Dec 18 11:23:48 2013 +0100
Committer: Sven Kobler <sv...@sap.com>
Committed: Wed Dec 18 11:23:48 2013 +0100

----------------------------------------------------------------------
 .../producer/core/uri/UriInfoImplPath.java      | 20 +++-----
 .../odata4/producer/core/uri/UriParserImpl.java | 17 +++++--
 .../producer/core/uri/expression/Alias.java     |  6 +--
 .../producer/core/uri/expression/Binary.java    | 50 ++++++++++++++++++++
 .../core/uri/expression/BinaryOperator.java     | 50 --------------------
 .../expression/ExceptionVisitExpression.java    |  5 ++
 .../core/uri/expression/ExpressionVisitor.java  |  6 ++-
 .../producer/core/uri/expression/Literal.java   |  1 -
 .../producer/core/uri/expression/Member.java    | 23 +++++----
 .../core/uri/expression/MethodCall.java         |  9 ++--
 .../expression/SupportedBinaryOperators.java    | 20 +++++---
 .../core/uri/expression/UnaryOperator.java      |  8 ++--
 .../producer/core/uri/expression/Visitable.java |  1 -
 .../producer/core/uri/queryoption/Filter.java   | 13 +++++
 .../core/testutil/FilterTreeToText.java         | 32 +++++++------
 .../producer/core/testutil/FilterValidator.java |  9 ++--
 .../core/testutil/UriResourcePathValidator.java |  2 +-
 17 files changed, 153 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImplPath.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImplPath.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImplPath.java
index 156704a..62ceaf9 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImplPath.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImplPath.java
@@ -19,19 +19,19 @@
 package org.apache.olingo.odata4.producer.core.uri;
 
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.olingo.odata4.producer.api.uri.UriInfoKind;
 import org.apache.olingo.odata4.producer.core.uri.expression.Expression;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.Filter;
 
 public class UriInfoImplPath extends UriInfoImpl {
 
   private List<UriPathInfoImpl> pathInfos = new ArrayList<UriPathInfoImpl>();
 
-  private Expression spFilter;
+  
+  //TODO add other systemQueryParamters
+  private Filter spFilter;
 
   public UriInfoImplPath() {
     this.setKind(UriInfoKind.path);
@@ -54,11 +54,11 @@ public class UriInfoImplPath extends UriInfoImpl {
   }
 
   public void setSystemParameter(SystemQueryParameter filter, Expression expression) {
-    spFilter = expression;
+    spFilter = new Filter(expression);
     addQueryParameter(filter.toString(), expression);
   }
 
-  public Expression getFilter() {
+  public Filter getFilter() {
     return this.spFilter;
   }
 
@@ -70,17 +70,11 @@ public class UriInfoImplPath extends UriInfoImpl {
       if ( i > 0 ) { 
         ret += "/";
       }
-        
+
       ret += pathInfos.get(i).toString();
-      
-      
-      
       i++;
-      
     }
     
-    
-
     return ret;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParserImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParserImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParserImpl.java
index e1f8afd..e0d58c1 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParserImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParserImpl.java
@@ -21,8 +21,6 @@ package org.apache.olingo.odata4.producer.core.uri;
 
 import java.util.List;
 
-import javax.annotation.processing.SupportedAnnotationTypes;
-
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
@@ -82,7 +80,16 @@ import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SkipCont
 import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SkiptokenContext;
 import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SystemQueryOptionContext;
 import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.TopContext;
-import org.apache.olingo.odata4.producer.core.uri.expression.*;
+import org.apache.olingo.odata4.producer.core.uri.expression.Alias;
+import org.apache.olingo.odata4.producer.core.uri.expression.Binary;
+import org.apache.olingo.odata4.producer.core.uri.expression.Expression;
+import org.apache.olingo.odata4.producer.core.uri.expression.Literal;
+import org.apache.olingo.odata4.producer.core.uri.expression.Member;
+import org.apache.olingo.odata4.producer.core.uri.expression.MethodCall;
+import org.apache.olingo.odata4.producer.core.uri.expression.SupportedBinaryOperators;
+import org.apache.olingo.odata4.producer.core.uri.expression.SupportedMethodCalls;
+import org.apache.olingo.odata4.producer.core.uri.expression.SupportedUnaryOperators;
+import org.apache.olingo.odata4.producer.core.uri.expression.UnaryOperator;
 
 public class UriParserImpl {
   private Edm edm = null;
@@ -158,7 +165,7 @@ public class UriParserImpl {
     } else if (firstChild instanceof CustomQueryOptionContext) {
       // TODO read custom request option
     } else if (firstChild.getText().equals("@")) {
-      // TODO read ailas and value
+      // TODO read alias and value
     }
 
   }
@@ -274,7 +281,7 @@ public class UriParserImpl {
   }
 
   private Expression readBinary(ParseTree expressionContext) {
-    BinaryOperator expression = new BinaryOperator();
+    Binary expression = new Binary();
     expression.setLeftOperand(readCommonExpression(expressionContext.getChild(0)));
     expression.setOperator(SupportedBinaryOperators.get(expressionContext.getChild(2).getText()));
     expression.setRightOperand(readCommonExpression(expressionContext.getChild(4)));

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Alias.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Alias.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Alias.java
index c494ece..a5630f1 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Alias.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Alias.java
@@ -22,16 +22,14 @@ package org.apache.olingo.odata4.producer.core.uri.expression;
 public class Alias extends Expression {
 
   private String referenceName;
-  //TODO add object which is referenced
 
   public void setReference(String referenceName) {
     this.referenceName = referenceName;
   }
 
   @Override
-  public Object accept(ExpressionVisitor visitor) throws ExceptionVisitExpression {
-    // TODO Auto-generated method stub
-    return null;
+  public <T> T accept(ExpressionVisitor<T> visitor) throws ExceptionVisitExpression {
+    return visitor.visitAlias(referenceName);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Binary.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Binary.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Binary.java
new file mode 100644
index 0000000..5ee51a8
--- /dev/null
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Binary.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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.odata4.producer.core.uri.expression;
+
+public class Binary extends Expression implements Visitable {
+
+  private SupportedBinaryOperators operator;
+  private Expression left;
+  private Expression right;
+
+  public Binary setOperator(SupportedBinaryOperators operator) {
+    this.operator = operator;
+    return this;
+  }
+
+  public void setLeftOperand(Expression operand) {
+    this.left = operand;
+
+  }
+
+  public void setRightOperand(Expression operand) {
+    this.right = operand;
+
+  }
+
+  @Override
+  public <T> T accept(ExpressionVisitor<T> visitor) throws ExceptionVisitExpression {
+    T left = this.left.accept(visitor);
+    T right = this.right.accept(visitor);
+    return visitor.visitBinaryOperator(operator,left,right);
+  }
+ 
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/BinaryOperator.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/BinaryOperator.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/BinaryOperator.java
deleted file mode 100644
index 0d437a4..0000000
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/BinaryOperator.java
+++ /dev/null
@@ -1,50 +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.odata4.producer.core.uri.expression;
-
-public class BinaryOperator extends Expression implements Visitable {
-
-  private SupportedBinaryOperators operator;
-  private Expression left;
-  private Expression right;
-
-  public BinaryOperator setOperator(SupportedBinaryOperators operator) {
-    this.operator = operator;
-    return this;
-  }
-
-  public void setLeftOperand(Expression operand) {
-    this.left = operand;
-
-  }
-
-  public void setRightOperand(Expression operand) {
-    this.right = operand;
-
-  }
-
-  @Override
-  public <T> T accept(ExpressionVisitor<T> visitor) throws ExceptionVisitExpression {
-    T left = this.left.accept(visitor);
-    T right = this.right.accept(visitor);
-    return visitor.visitBinaryOperator(operator,left,right);
-  }
- 
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExceptionVisitExpression.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExceptionVisitExpression.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExceptionVisitExpression.java
index 4619add..8cbc166 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExceptionVisitExpression.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExceptionVisitExpression.java
@@ -20,4 +20,9 @@ package org.apache.olingo.odata4.producer.core.uri.expression;
 
 public class ExceptionVisitExpression extends Exception {
 
+  /**
+   * 
+   */
+  private static final long serialVersionUID = 822365726050299076L;
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExpressionVisitor.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExpressionVisitor.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExpressionVisitor.java
index 105a330..92e4dc1 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExpressionVisitor.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/ExpressionVisitor.java
@@ -26,9 +26,11 @@ public interface ExpressionVisitor<T> {
   
   T visitUnaryOperator( SupportedUnaryOperators operator, T operand) throws ExceptionVisitExpression;
   
-  T visitMethoCall( SupportedMethodCalls methodCall, List<T> parameters)throws ExceptionVisitExpression;
+  T visitMethodCall( SupportedMethodCalls methodCall, List<T> parameters)throws ExceptionVisitExpression;
   
   T visitLiteral(String literal) throws ExceptionVisitExpression;
 
-  T visitMember(Member member) throws ExceptionVisitExpression;;
+  T visitMember(Member member) throws ExceptionVisitExpression;
+
+  T visitAlias(String referenceName) throws ExceptionVisitExpression;
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Literal.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Literal.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Literal.java
index ed830ba..2b20f4f 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Literal.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Literal.java
@@ -24,7 +24,6 @@ public class Literal extends Expression implements Visitable {
 
   public void setText(String text) {
     this.text = text;
-
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Member.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Member.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Member.java
index 0ea4511..c3132a2 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Member.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Member.java
@@ -22,30 +22,33 @@ import org.apache.olingo.odata4.producer.core.uri.UriInfoImplPath;
 
 public class Member extends Expression implements Visitable {
 
-  private boolean isIT;
-  UriInfoImplPath path;
+  private boolean isIT; // means $it as defined in the ABNF 
+  private UriInfoImplPath path;
 
+  public boolean isIT() {
+    return isIT;
+  }
+  
   public Member setIT(boolean isIT) {
     this.isIT = isIT;
     return this;
-  }
+  } 
 
-  public boolean isIT() {
-    return isIT;
+  
+  public UriInfoImplPath getPath() {
+    return path;
   }
-
+  
   public Member setPath(UriInfoImplPath pathSegments) {
     this.path = pathSegments;
     return this;
   }
+   
 
   @Override
   public <T> T accept(ExpressionVisitor<T> visitor) throws ExceptionVisitExpression {
     return visitor.visitMember(this);
-
   }
 
-  public UriInfoImplPath getPath() {
-    return path;
-  }
+  
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/MethodCall.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/MethodCall.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/MethodCall.java
index 185c8bb..6872ad9 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/MethodCall.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/MethodCall.java
@@ -35,9 +35,12 @@ public class MethodCall extends Expression  implements Visitable{
   }
 
   @Override
-  public Object accept(ExpressionVisitor visitor) throws ExceptionVisitExpression {
-
-    return null;
+  public <T> T accept(ExpressionVisitor<T>  visitor) throws ExceptionVisitExpression {
+    List<T> userParameters = new ArrayList<T>();
+    for (Expression parameter : parameters ) {
+      userParameters.add(parameter.accept(visitor));
+    }
+    return visitor.visitMethodCall(method, userParameters);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/SupportedBinaryOperators.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/SupportedBinaryOperators.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/SupportedBinaryOperators.java
index 71ce440..72fb9df 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/SupportedBinaryOperators.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/SupportedBinaryOperators.java
@@ -19,10 +19,17 @@
 package org.apache.olingo.odata4.producer.core.uri.expression;
 
 public enum SupportedBinaryOperators {
+  //multiplicative
   MUL("mul"), DIV("div"), MOD("mod"),
-  ADD("add"), SUB("sub"), GT("gt"), GE("ge"), LT("lt"), LE("le"),
+  //additive
+  ADD("add"), SUB("sub"),
+  //comparism
+  GT("gt"), GE("ge"), LT("lt"), LE("le"),
+  //isof
   ISOF("isof"),
+  //equality
   EQ("eq"), NE("ne"),
+  //and/or
   AND("and"), OR("or");
 
   private String syntax;
@@ -31,11 +38,6 @@ public enum SupportedBinaryOperators {
     this.syntax = syntax;
   }
 
-  @Override
-  public String toString() {
-    return syntax;
-  }
-
   public static SupportedBinaryOperators get(String operator) {
     for (SupportedBinaryOperators op : SupportedBinaryOperators.values()) {
       if (op.toString().equals(operator)) {
@@ -44,5 +46,11 @@ public enum SupportedBinaryOperators {
     }
     return null;
   }
+  
+  @Override
+  public String toString() {
+    return syntax;
+  }
+
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/UnaryOperator.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/UnaryOperator.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/UnaryOperator.java
index b6a405b..2e7cc90 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/UnaryOperator.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/UnaryOperator.java
@@ -25,18 +25,16 @@ public class UnaryOperator extends Expression implements Visitable {
 
   public void setOperand(Expression expression) {
     this.expression = expression;
-
   }
 
   public void setOperator(SupportedUnaryOperators operator) {
     this.operator = operator;
-
   }
 
   @Override
-  public Object accept(ExpressionVisitor visitor) throws ExceptionVisitExpression {
-    // TODO Auto-generated method stub
-    return null;
+  public <T> T accept(ExpressionVisitor<T> visitor) throws ExceptionVisitExpression {
+    T operand = expression.accept(visitor); 
+    return visitor.visitUnaryOperator(operator, operand);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Visitable.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Visitable.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Visitable.java
index 4316c47..76cfe7c 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Visitable.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/expression/Visitable.java
@@ -18,7 +18,6 @@
  ******************************************************************************/
 package org.apache.olingo.odata4.producer.core.uri.expression;
 
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/Filter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/Filter.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/Filter.java
index 37ad276..0f45289 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/Filter.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/Filter.java
@@ -18,6 +18,19 @@
  ******************************************************************************/
 package org.apache.olingo.odata4.producer.core.uri.queryoption;
 
+import org.apache.olingo.odata4.producer.core.uri.expression.Expression;
+
 public class Filter extends SystemQueryOption {
   
+  
+  Expression expression;
+
+  public Filter(Expression expression) {
+    this.expression = expression;
+  }
+
+  public Expression getTree() {
+    return expression;
+  }
+  
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterTreeToText.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterTreeToText.java b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterTreeToText.java
index 459b0e4..3ee3ff3 100644
--- a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterTreeToText.java
+++ b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterTreeToText.java
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.olingo.odata4.producer.core.uri.UriInfoImplPath;
 import org.apache.olingo.odata4.producer.core.uri.expression.ExceptionVisitExpression;
 import org.apache.olingo.odata4.producer.core.uri.expression.ExpressionVisitor;
-import org.apache.olingo.odata4.producer.core.uri.expression.Literal;
 import org.apache.olingo.odata4.producer.core.uri.expression.Member;
 import org.apache.olingo.odata4.producer.core.uri.expression.SupportedBinaryOperators;
 import org.apache.olingo.odata4.producer.core.uri.expression.SupportedMethodCalls;
@@ -43,13 +42,13 @@ public class FilterTreeToText implements ExpressionVisitor<String> {
   }
 
   @Override
-  public String visitMethoCall(SupportedMethodCalls methodCall, List<String> parameters)
+  public String visitMethodCall(SupportedMethodCalls methodCall, List<String> parameters)
       throws ExceptionVisitExpression {
     String text = "<" + methodCall + "(";
     int i = 0;
-    while (i< parameters.size()) {
-      if (i > 0 ) {
-        text +=",";
+    while (i < parameters.size()) {
+      if (i > 0) {
+        text += ",";
       }
       text += parameters.get(i);
       i++;
@@ -58,10 +57,9 @@ public class FilterTreeToText implements ExpressionVisitor<String> {
     return text + ")";
   }
 
-
   @Override
   public String visitLiteral(String literal) throws ExceptionVisitExpression {
-    return "" + literal + "";
+    return literal;
   }
 
   @Override
@@ -72,16 +70,22 @@ public class FilterTreeToText implements ExpressionVisitor<String> {
     }
 
     UriInfoImplPath path = member.getPath();
-    if (path!= null) {
-      /*if (member.isIT()) {
-        ret +="/";
-      }*/
-      
+    if (path != null) {
+      /*
+       * if (member.isIT()) {
+       * ret +="/";
+       * }
+       */
+
       ret += path.toString();
-      
-      
+
     }
     return ret;
   }
 
+  @Override
+  public String visitAlias(String referenceName) throws ExceptionVisitExpression {
+    return "<" + referenceName + ">";
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterValidator.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterValidator.java b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterValidator.java
index b21c75c..dadb9b1 100644
--- a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterValidator.java
+++ b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/FilterValidator.java
@@ -24,18 +24,19 @@ import static org.junit.Assert.fail;
 import org.apache.olingo.odata4.producer.core.uri.UriInfoImplPath;
 import org.apache.olingo.odata4.producer.core.uri.expression.ExceptionVisitExpression;
 import org.apache.olingo.odata4.producer.core.uri.expression.Expression;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.Filter;
 
 public class FilterValidator {
 
   UriResourcePathValidator uriResourcePathValidator;
-  Expression filterTree;
+  Filter filter;
 
   public FilterValidator(UriResourcePathValidator uriResourcePathValidator) {
 
     this.uriResourcePathValidator = uriResourcePathValidator;
 
-    filterTree = ((UriInfoImplPath) uriResourcePathValidator.uriInfo).getFilter();
-    if (filterTree == null) {
+    filter = ((UriInfoImplPath) uriResourcePathValidator.uriInfo).getFilter();
+    if (filter.getTree() == null) {
       fail("FilterValidator: no filter found");
     }
     return;
@@ -49,7 +50,7 @@ public class FilterValidator {
 
   public FilterValidator is(String expectedFilterAsString) {
     try {
-      String actualFilterAsText = filterTree.accept(new FilterTreeToText());
+      String actualFilterAsText = filter.getTree().accept(new FilterTreeToText());
       assertEquals(expectedFilterAsString, actualFilterAsText);
     } catch (ExceptionVisitExpression e) {
       fail("Exception occured while converting the filterTree into text" + "\n"

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cf4df9be/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/UriResourcePathValidator.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/UriResourcePathValidator.java b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/UriResourcePathValidator.java
index 296df0a..b71e283 100644
--- a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/UriResourcePathValidator.java
+++ b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/UriResourcePathValidator.java
@@ -180,7 +180,7 @@ public class UriResourcePathValidator {
   }
 
   public UriResourcePathValidator isFilterString(String expectedFilterTreeAsString) {
-    Expression filterTree = this.uriInfo.getFilter();
+    Expression filterTree = this.uriInfo.getFilter().getTree();
     try {
       String filterTreeAsString = filterTree.accept(new FilterTreeToText());
       assertEquals(expectedFilterTreeAsString, filterTreeAsString);