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 2014/01/30 09:25:24 UTC
[2/2] git commit: [OLINGO-63] Uri Parser: Improve API for $select and
extend testcases
[OLINGO-63] Uri Parser: Improve API for $select and extend testcases
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/fb833de3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/fb833de3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/fb833de3
Branch: refs/heads/master
Commit: fb833de3aeee54f5839501019672f63c311bc765
Parents: 1ef03f9
Author: Sven Kobler <sv...@sap.com>
Authored: Wed Jan 29 15:27:00 2014 +0100
Committer: Sven Kobler <sv...@sap.com>
Committed: Thu Jan 30 09:24:01 2014 +0100
----------------------------------------------------------------------
.../odata4/producer/api/uri/UriResourceAll.java | 29 --
.../odata4/producer/api/uri/UriResourceAny.java | 29 --
.../producer/api/uri/UriResourceLambdaAll.java | 30 ++
.../producer/api/uri/UriResourceLambdaAny.java | 29 ++
.../producer/api/uri/UriResourceLambdaRef.java | 7 -
.../producer/api/uri/UriResourcePartTyped.java | 2 +
.../api/uri/queryoption/AliasQueryOption.java | 2 +-
.../api/uri/queryoption/SelectItem.java | 9 +-
.../api/uri/queryoption/expression/Member.java | 5 +
.../odata4/producer/core/uri/UriInfoImpl.java | 1 -
.../producer/core/uri/UriParseTreeVisitor.java | 225 +++++++++++----
.../core/uri/UriResourceActionImpl.java | 1 +
.../producer/core/uri/UriResourceAllImpl.java | 8 +-
.../producer/core/uri/UriResourceAnyImpl.java | 6 +-
.../uri/UriResourceComplexPropertyImpl.java | 2 +
.../core/uri/UriResourceEntitySetImpl.java | 2 +
.../core/uri/UriResourceImplKeyPred.java | 40 ++-
.../producer/core/uri/UriResourceImplTyped.java | 13 +
.../core/uri/UriResourceLambdaRefImpl.java | 1 -
.../uri/queryoption/AliasQueryOptionImpl.java | 2 +-
.../core/uri/queryoption/ExpandItemImpl.java | 2 -
.../core/uri/queryoption/ExpandOptionImpl.java | 1 -
.../core/uri/queryoption/SelectItemImpl.java | 115 ++++++++
.../uri/queryoption/SelectItemOptionImpl.java | 109 --------
.../core/uri/queryoption/SelectOptionImpl.java | 6 +-
.../core/uri/queryoption/SelectSegmentImpl.java | 78 ------
.../uri/queryoption/SystemQueryOptionImpl.java | 2 +-
.../uri/queryoption/expression/MemberImpl.java | 42 +++
.../producer/core/testutil/ExpandValidator.java | 4 -
.../core/testutil/FilterTreeToText.java | 49 +---
.../producer/core/testutil/FilterValidator.java | 109 ++++++--
.../core/testutil/UriResourceValidator.java | 5 +-
.../core/uri/antlr/TestByAbapResourcePath.java | 271 +++++++++++++------
.../producer/core/uri/antlr/TestLexer.java | 3 +-
.../core/uri/antlr/TestUriParserImpl.java | 37 ++-
35 files changed, 778 insertions(+), 498 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAll.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAll.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAll.java
deleted file mode 100644
index 660a0a5..0000000
--- a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAll.java
+++ /dev/null
@@ -1,29 +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.api.uri;
-
-import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
-
-public interface UriResourceAll extends UriResourcePartTyped {
-
- public String getLamdaVariable();
-
- public Expression getExpression();
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAny.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAny.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAny.java
deleted file mode 100644
index 25e9ce9..0000000
--- a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceAny.java
+++ /dev/null
@@ -1,29 +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.api.uri;
-
-import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
-
-public interface UriResourceAny extends UriResourcePartTyped {
-
- public String getLamdaVariable();
-
- public Expression getExpression();
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAll.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAll.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAll.java
new file mode 100644
index 0000000..f77649e
--- /dev/null
+++ b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAll.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * 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.api.uri;
+
+import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
+
+public interface UriResourceLambdaAll extends UriResourcePartTyped {
+
+ public String getVariable();
+
+ public Expression getExpression();
+
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAny.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAny.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAny.java
new file mode 100644
index 0000000..871dd65
--- /dev/null
+++ b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaAny.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * 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.api.uri;
+
+import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
+
+public interface UriResourceLambdaAny extends UriResourcePartTyped {
+
+ public String getVariable();
+
+ public Expression getExpression();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaRef.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaRef.java
index dddf34c..1a79f87 100644
--- a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaRef.java
+++ b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourceLambdaRef.java
@@ -18,14 +18,7 @@
******************************************************************************/
package org.apache.olingo.odata4.producer.api.uri;
-import org.apache.olingo.odata4.commons.api.edm.EdmType;
-/**
- * Class indicating the $it reference. $it may be used within filter to
- * refer to the last EDM object reference in the resource path. Since $it is
- * optional in some cases ( e.g. first member expressions) the {@link #isExplicitIt()}
- * method can be used to check if $it was explicitly noted in the URI
- */
public interface UriResourceLambdaRef extends UriResourcePartTyped {
public String getVariableText();
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourcePartTyped.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourcePartTyped.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourcePartTyped.java
index 54771e9..5224413 100644
--- a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourcePartTyped.java
+++ b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/UriResourcePartTyped.java
@@ -26,5 +26,7 @@ public interface UriResourcePartTyped extends UriResourcePart {
EdmType getType();
boolean isCollection();
+
+ String toString(boolean includeFilters);
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/AliasQueryOption.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/AliasQueryOption.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/AliasQueryOption.java
index 1b98aba..33901b0 100644
--- a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/AliasQueryOption.java
+++ b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/AliasQueryOption.java
@@ -22,6 +22,6 @@ import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expressi
public interface AliasQueryOption extends QueryOption {
- public Expression getAliasValue();
+ public Expression getValue();
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/SelectItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/SelectItem.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/SelectItem.java
index 1a03d31..ea37d9b 100644
--- a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/SelectItem.java
+++ b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/SelectItem.java
@@ -20,10 +20,9 @@ package org.apache.olingo.odata4.producer.api.uri.queryoption;
import java.util.List;
-import org.apache.olingo.odata4.commons.api.edm.EdmAction;
import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
-import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceProperty;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
+import org.apache.olingo.odata4.producer.api.uri.UriResourcePart;
public interface SelectItem {
@@ -31,10 +30,10 @@ public interface SelectItem {
boolean isAllOperationsInSchema();
- String getNameSpace();
+ FullQualifiedName getAllOperationsInSchemaNameSpace();
EdmEntityType getEntityTypeCast();
- List<UriResourceProperty> getPropertyChainList();
+ List<UriResourcePart> getPropertyChainList();
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/expression/Member.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/expression/Member.java b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/expression/Member.java
index 2af920e..a15d422 100644
--- a/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/expression/Member.java
+++ b/odata4-lib/odata4-producer-api/src/main/java/org/apache/olingo/odata4/producer/api/uri/queryoption/expression/Member.java
@@ -18,10 +18,15 @@
******************************************************************************/
package org.apache.olingo.odata4.producer.api.uri.queryoption.expression;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
import org.apache.olingo.odata4.producer.api.uri.UriInfoResource;
public interface Member extends Expression {
public UriInfoResource getPath();
+ public EdmType getType();
+
+ public boolean isCollection();
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImpl.java
index abcbc32..6e0e414 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriInfoImpl.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.apache.olingo.odata4.commons.api.edm.Edm;
import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
import org.apache.olingo.odata4.producer.api.uri.UriInfo;
import org.apache.olingo.odata4.producer.api.uri.UriInfoAll;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParseTreeVisitor.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParseTreeVisitor.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParseTreeVisitor.java
index 4e07ae4..b51b003 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParseTreeVisitor.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriParseTreeVisitor.java
@@ -46,17 +46,119 @@ import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
import org.apache.olingo.odata4.producer.api.uri.UriInfoKind;
import org.apache.olingo.odata4.producer.api.uri.UriResourcePart;
import org.apache.olingo.odata4.producer.api.uri.UriResourcePartTyped;
-import org.apache.olingo.odata4.producer.api.uri.queryoption.SelectItem;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.SupportedBinaryOperators;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.SupportedMethodCalls;
import org.apache.olingo.odata4.producer.core.uri.antlr.UriLexer;
import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserBaseVisitor;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AliasAndValueContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AllExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltAddContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltAllContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltAndContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltAnyContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltBatchContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltComparismContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltEntityCastContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltEntityContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltEqualityContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltLiteralContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltMetadataContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltMultContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltOrContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AltResourcePathContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.AnyExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.CastExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.CeilingMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ConcatMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ConstSegmentContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ContainsMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.CrossjoinContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.CustomQueryOptionContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.DayMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.DistanceMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.EndsWithMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.EntityOptionCastContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.EntityOptionContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.EntityOptionsCastContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.EntityOptionsContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ExpandContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ExpandCountOptionContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ExpandItemContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ExpandOptionContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ExpandPathContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ExpandPathExtensionContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ExpandRefOptionContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.FilterContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.FloorMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.FormatContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.FractionalsecondsMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.GeoLengthMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.HourMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.IdContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.IndexOfMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.InlinecountContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.IntersectsMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.IsofExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.LengthMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.MaxDateTimeMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.MemberExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.MinDateTimeMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.MinuteMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.MonthMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.NameValueOptListContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.NameValuePairContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.NamespaceContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.NowMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.OdataIdentifierContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.OdataRelativeUriEOFContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.OrderByContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.PathSegmentContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.PathSegmentsContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.QueryOptionContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.QueryOptionsContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ResourcePathContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.RootExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.RoundMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SecondMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SelectContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SelectItemContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SelectSegmentContext;
import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SkipContext;
import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SkiptokenContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.StartsWithMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.SubstringMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.TimeMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ToLowerMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.ToUpperMethodCallExprContext;
import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.TopContext;
-import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.*;
-import org.apache.olingo.odata4.producer.core.uri.queryoption.*;
-import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.*;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.TotalOffsetMinutesMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.TotalsecondsMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.TrimMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.UnaryContext;
+import org.apache.olingo.odata4.producer.core.uri.antlr.UriParserParser.YearMethodCallExprContext;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.AliasQueryOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.CustomQueryOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.ExpandItemImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.ExpandOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.FilterOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.FormatOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.IdOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.InlineCountOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.LevelExpandOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.OrderByOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.QueryOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.SelectItemImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.SelectOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.SkipOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.SkiptokenOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.SystemQueryOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.TopOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.BinaryImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.ExpressionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.LiteralImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.MemberImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.MethodCallImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.TypeLiteralImpl;
/**
* UriVisitor
@@ -122,9 +224,9 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
/**
* Set within method {@link #visitSelectItem(SelectItemContext ctx)} to allow nodes
* deeper in the expand tree at {@link #visitSelectSegment(SelectSegmentContext ctx)} appending path segments to the
- * currently processed {@link SelectItemOptionImpl}.
+ * currently processed {@link SelectItemImpl}.
*/
- private SelectItemOptionImpl contextSelectItem;
+ private SelectItemImpl contextSelectItem;
private Stack<LastTypeColl> contextTypes = new Stack<LastTypeColl>();
@@ -310,7 +412,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
if (lastKeyPred.getTypeFilterOnEntry() != null) {
throw wrap(new UriParserSemanticException("Single type filters are not chainable"));
}
- lastKeyPred.setSingleTypeFilter(filterEntityType);
+ lastKeyPred.setEntryTypeFilter(filterEntityType);
return null;
} else {
if (lastKeyPred.getTypeFilterOnCollection() != null) {
@@ -350,7 +452,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
if (lastKeyPred.getTypeFilterOnEntry() != null) {
throw wrap(new UriParserSemanticException("Single TypeFilter are not chainable"));
}
- lastKeyPred.setSingleTypeFilter(filterComplexType);
+ lastKeyPred.setEntryTypeFilter(filterComplexType);
return null;
} else {
if (lastKeyPred.getTypeFilterOnCollection() != null) {
@@ -1002,13 +1104,12 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
}
}
String text = ctx.children.get(2).getText();
- if ( ctx.getChildCount()> 4) {
+ if (ctx.getChildCount() > 4) {
text += ctx.children.get(3).getText();
text += ctx.children.get(4).getText();
}
-
+
format.setText(text);
-
return format;
}
@@ -1349,10 +1450,10 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
@Override
public Object visitSelect(final SelectContext ctx) {
- List<SelectItemOptionImpl> selectItems = new ArrayList<SelectItemOptionImpl>();
+ List<SelectItemImpl> selectItems = new ArrayList<SelectItemImpl>();
for (SelectItemContext si : ctx.vlSI) {
- selectItems.add((SelectItemOptionImpl) si.accept(this));
+ selectItems.add((SelectItemImpl) si.accept(this));
}
return new SelectOptionImpl().setSelectItems(selectItems);
@@ -1360,7 +1461,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
@Override
public Object visitSelectItem(final SelectItemContext ctx) {
- SelectItemOptionImpl selectItem = new SelectItemOptionImpl();
+ SelectItemImpl selectItem = new SelectItemImpl();
contextSelectItem = selectItem;
for (SelectSegmentContext si : ctx.vlSS) {
@@ -1381,7 +1482,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
FullQualifiedName fullName = new FullQualifiedName(namespace, "*");
contextSelectItem.addAllOperationsInSchema(fullName);
} else {
- contextSelectItem.addStar();
+ contextSelectItem.setStar(true);
}
return null;
}
@@ -1392,6 +1493,10 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
EdmType prevType = contextSelectItem.getType();
if (prevType == null) {
prevType = this.contextTypes.peek().type;
+ // add It to selectItem
+ UriResourceItImpl it = new UriResourceItImpl();
+ it.setType(prevType);
+ it.setCollection(this.contextTypes.peek().isCollection);
}
if (!(prevType instanceof EdmStructuralType)) {
@@ -1399,16 +1504,28 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
}
EdmStructuralType structType = (EdmStructuralType) prevType;
- EdmElement property = (EdmElement) structType.getProperty(odi);
- if (property == null) {
+ EdmElement element = structType.getProperty(odi);
+ if (element == null) {
throw wrap(new UriParserSemanticException("Previous select item has not property: " + odi));
-
}
// create new segment
- SelectSegmentImpl newSegment = new SelectSegmentImpl().setProperty(property);
- contextSelectItem.addSegment(newSegment);
-
+ // SelectSegmentImpl newSegment = new SelectSegmentImpl().setProperty(property);
+ // contextSelectItem.addSegment(newSegment);
+ if (element instanceof EdmProperty) {
+ EdmProperty property = (EdmProperty) element;
+ if (property.isPrimitive()) {
+ UriResourceSimplePropertyImpl simple = new UriResourceSimplePropertyImpl();
+ simple.setProperty(property);
+ contextSelectItem.addPath(simple);
+ } else {
+ UriResourceComplexPropertyImpl complex = new UriResourceComplexPropertyImpl();
+ complex.setProperty(property);
+ contextSelectItem.addPath(complex);
+ }
+ } else {
+ throw wrap(new UriParserSemanticException("Only Simple and Complex properties within select allowed"));
+ }
return this;
} else {
@@ -1424,47 +1541,58 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
EdmComplexType ct = edm.getComplexType(fullName);
if (ct != null) {
if (((EdmStructuralType) prevType).compatibleTo(ct)) {
- SelectSegmentImpl lastSegment = contextSelectItem.getLastSegment();
- lastSegment.setTypeCast(ct);
- return this;
+ UriResourcePart lastSegment = contextSelectItem.getLastPart();
+ if (lastSegment instanceof UriResourceImplKeyPred) {
+ UriResourceImplKeyPred lastKeyPred = (UriResourceImplKeyPred) lastSegment;
+ lastKeyPred.setCollectionTypeFilter(ct);
+ } else if (lastSegment instanceof UriResourceImplTyped) {
+ {
+ UriResourceImplTyped lastTyped = (UriResourceImplTyped) lastSegment;
+ lastTyped.setTypeFilter(ct);
+ }
+
+ return this;
+ }
}
}
- }
- } else {
- prevType = this.contextTypes.peek().type;
- if (prevType instanceof EdmEntityType) {
- EdmEntityType et = edm.getEntityType(fullName);
- if (((EdmStructuralType) prevType).compatibleTo(et)) {
- contextSelectItem.setEntityTypeCast(et);
- return this;
+ } else {
+ prevType = this.contextTypes.peek().type;
+ if (prevType instanceof EdmEntityType) {
+ EdmEntityType et = edm.getEntityType(fullName);
+ if (((EdmStructuralType) prevType).compatibleTo(et)) {
+ contextSelectItem.setEntityTypeCast(et);
+ return this;
+ }
}
}
- }
- FullQualifiedName finalTypeName = new FullQualifiedName(prevType.getNamespace(), prevType.getName());
+ FullQualifiedName finalTypeName = new FullQualifiedName(prevType.getNamespace(), prevType.getName());
- // check for action
- EdmAction action = edm.getAction(fullName, finalTypeName, null);
- // TODO verify that null ignores if it is a collection
+ // check for action
+ EdmAction action = edm.getAction(fullName, finalTypeName, null);
+ // TODO verify that null ignores if it is a collection
- if (action != null) {
- contextSelectItem.addSegment(new SelectSegmentImpl().setAction(action));
- }
+ if (action != null) {
+ UriResourceActionImpl uriAction = new UriResourceActionImpl();
+ uriAction.setAction(action);
+ contextSelectItem.addPath(uriAction);
+ }
- // check for function
- EdmFunction function = edm.getFunction(fullName, finalTypeName, null, null);
- // TODO verify that null ignores if it is a collection
+ // check for function
+ EdmFunction function = edm.getFunction(fullName, finalTypeName, null, null);
+ // TODO verify that null ignores if it is a collection
- if (function != null) {
- contextSelectItem.addSegment(new SelectSegmentImpl().setFunction(function));
- }
+ if (function != null) {
+ UriResourceFunctionImpl uriFunction = new UriResourceFunctionImpl();
+ uriFunction.setFunction(function);
+ contextSelectItem.addPath(uriFunction);
+ }
+ }
}
-
return null;
}
-
@Override
public Object visitSkip(SkipContext ctx) {
SkipOptionImpl skiptoken = new SkipOptionImpl();
@@ -1512,7 +1640,6 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
.addParameter((ExpressionImpl) ctx.vE1.accept(this));
}
-
@Override
public Object visitTop(TopContext ctx) {
TopOptionImpl top = new TopOptionImpl();
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceActionImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceActionImpl.java
index 5b418ef..f9bcd6a 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceActionImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceActionImpl.java
@@ -76,4 +76,5 @@ public class UriResourceActionImpl extends UriResourceImplTyped implements UriRe
}
return "";
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAllImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAllImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAllImpl.java
index 0bd66f7..7be33aa 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAllImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAllImpl.java
@@ -21,12 +21,12 @@ package org.apache.olingo.odata4.producer.core.uri;
import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
import org.apache.olingo.odata4.commons.api.edm.EdmType;
import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceAll;
import org.apache.olingo.odata4.producer.api.uri.UriResourceKind;
+import org.apache.olingo.odata4.producer.api.uri.UriResourceLambdaAll;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.ExpressionImpl;
-public class UriResourceAllImpl extends UriResourceImplTyped implements UriResourceAll {
+public class UriResourceAllImpl extends UriResourceImplTyped implements UriResourceLambdaAll {
protected EdmProperty property;
private String lamdaVariable;
private ExpressionImpl expression;
@@ -46,7 +46,7 @@ public class UriResourceAllImpl extends UriResourceImplTyped implements UriResou
}
@Override
- public String getLamdaVariable() {
+ public String getVariable() {
return lamdaVariable;
}
@@ -69,4 +69,6 @@ public class UriResourceAllImpl extends UriResourceImplTyped implements UriResou
public String toString() {
return "all";
}
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAnyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAnyImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAnyImpl.java
index ba4f4f8..19597a9 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAnyImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceAnyImpl.java
@@ -21,12 +21,12 @@ package org.apache.olingo.odata4.producer.core.uri;
import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
import org.apache.olingo.odata4.commons.api.edm.EdmType;
import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceAny;
import org.apache.olingo.odata4.producer.api.uri.UriResourceKind;
+import org.apache.olingo.odata4.producer.api.uri.UriResourceLambdaAny;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.ExpressionImpl;
-public class UriResourceAnyImpl extends UriResourceImplTyped implements UriResourceAny {
+public class UriResourceAnyImpl extends UriResourceImplTyped implements UriResourceLambdaAny {
protected EdmProperty property;
private String lamdaVariable;
private ExpressionImpl expression;
@@ -46,7 +46,7 @@ public class UriResourceAnyImpl extends UriResourceImplTyped implements UriResou
}
@Override
- public String getLamdaVariable() {
+ public String getVariable() {
return lamdaVariable;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceComplexPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceComplexPropertyImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceComplexPropertyImpl.java
index 0ef7ce3..05bbe09 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceComplexPropertyImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceComplexPropertyImpl.java
@@ -67,4 +67,6 @@ public class UriResourceComplexPropertyImpl extends UriResourceImplTyped impleme
return property.getName();
}
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceEntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceEntitySetImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceEntitySetImpl.java
index 523901e..8e85c25 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceEntitySetImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceEntitySetImpl.java
@@ -67,4 +67,6 @@ public class UriResourceEntitySetImpl extends UriResourceImplKeyPred implements
return edmEntitySet.getName();
}
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplKeyPred.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplKeyPred.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplKeyPred.java
index 6af51d9..5349faf 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplKeyPred.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplKeyPred.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
import org.apache.olingo.odata4.producer.api.uri.UriParameter;
import org.apache.olingo.odata4.producer.api.uri.UriResourceKind;
@@ -29,15 +30,15 @@ public abstract class UriResourceImplKeyPred extends UriResourceImplTyped {
protected EdmType collectionTypeFilter = null;
protected List<UriParameterImpl> keyPredicates = null;
- protected EdmType singleTypeFilter = null;
+ protected EdmType entryTypeFilter = null;
public UriResourceImplKeyPred(final UriResourceKind kind) {
super(kind);
}
public EdmType getComplexTypeFilter() {
- if (singleTypeFilter != null) {
- return singleTypeFilter;
+ if (entryTypeFilter != null) {
+ return entryTypeFilter;
}
return collectionTypeFilter;
}
@@ -47,7 +48,7 @@ public abstract class UriResourceImplKeyPred extends UriResourceImplTyped {
}
public EdmType getTypeFilterOnEntry() {
- return singleTypeFilter;
+ return entryTypeFilter;
}
public List<UriParameter> getKeyPredicates() {
@@ -63,12 +64,39 @@ public abstract class UriResourceImplKeyPred extends UriResourceImplTyped {
return this;
}
- public void setSingleTypeFilter(final EdmType singleTypeFilter) {
- this.singleTypeFilter = singleTypeFilter;
+ public void setEntryTypeFilter(final EdmType singleTypeFilter) {
+ this.entryTypeFilter = singleTypeFilter;
}
public void setCollectionTypeFilter(final EdmType collectionTypeFilter) {
this.collectionTypeFilter = collectionTypeFilter;
}
+ @Override
+ public String toString(boolean includeFilters) {
+
+ if (includeFilters == true) {
+ String tmp = "";
+ if (collectionTypeFilter != null) {
+ tmp += getFQN(collectionTypeFilter).toString();
+ }
+
+ if (entryTypeFilter != null) {
+ if (tmp.length() == 0) {
+ tmp = getFQN(entryTypeFilter).toString();
+ } else {
+ tmp += "/()" + getFQN(entryTypeFilter).toString();
+ }
+ }
+ if (tmp.length() != 0) {
+ return toString()+ "/" + tmp ;
+ }
+ }
+
+ return toString();
+ }
+
+ private FullQualifiedName getFQN(EdmType type) {
+ return new FullQualifiedName(type.getNamespace(), type.getName());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplTyped.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplTyped.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplTyped.java
index 4a1e3ef..5bf2d77 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplTyped.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceImplTyped.java
@@ -20,6 +20,7 @@ package org.apache.olingo.odata4.producer.core.uri;
import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
import org.apache.olingo.odata4.producer.api.uri.UriResourceKind;
import org.apache.olingo.odata4.producer.api.uri.UriResourcePartTyped;
@@ -40,4 +41,16 @@ public abstract class UriResourceImplTyped extends UriResourcePartImpl implement
return this;
}
+ @Override
+ public String toString(boolean includeFilters) {
+ if (typeFilter != null) {
+ return toString() + "/" + getFQN(typeFilter).toString();
+ }
+ return toString();
+ }
+
+ private FullQualifiedName getFQN(EdmType type) {
+ return new FullQualifiedName(type.getNamespace(), type.getName());
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceLambdaRefImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceLambdaRefImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceLambdaRefImpl.java
index 4b0d4f3..5130613 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceLambdaRefImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/UriResourceLambdaRefImpl.java
@@ -19,7 +19,6 @@
package org.apache.olingo.odata4.producer.core.uri;
import org.apache.olingo.odata4.commons.api.edm.EdmType;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceIt;
import org.apache.olingo.odata4.producer.api.uri.UriResourceKind;
import org.apache.olingo.odata4.producer.api.uri.UriResourceLambdaRef;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/AliasQueryOptionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/AliasQueryOptionImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/AliasQueryOptionImpl.java
index d5ed1ec..9a35ada 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/AliasQueryOptionImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/AliasQueryOptionImpl.java
@@ -26,7 +26,7 @@ public class AliasQueryOptionImpl extends QueryOptionImpl implements AliasQueryO
private ExpressionImpl aliasValue;
@Override
- public ExpressionImpl getAliasValue() {
+ public ExpressionImpl getValue() {
return aliasValue;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandItemImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandItemImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandItemImpl.java
index 896f062..428f411 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandItemImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandItemImpl.java
@@ -19,12 +19,10 @@
******************************************************************************/
package org.apache.olingo.odata4.producer.core.uri.queryoption;
-import java.util.ArrayList;
import java.util.List;
import org.apache.olingo.odata4.commons.api.edm.Edm;
import org.apache.olingo.odata4.producer.api.uri.UriInfoResource;
-import org.apache.olingo.odata4.producer.api.uri.queryoption.ExceptionVisitExpand;
import org.apache.olingo.odata4.producer.api.uri.queryoption.ExpandItem;
import org.apache.olingo.odata4.producer.api.uri.queryoption.ExpandOption;
import org.apache.olingo.odata4.producer.api.uri.queryoption.FilterOption;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandOptionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandOptionImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandOptionImpl.java
index ad330fc..bbac6a1 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandOptionImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/ExpandOptionImpl.java
@@ -21,7 +21,6 @@ package org.apache.olingo.odata4.producer.core.uri.queryoption;
import java.util.ArrayList;
import java.util.List;
-import org.apache.olingo.odata4.producer.api.uri.queryoption.ExceptionVisitExpand;
import org.apache.olingo.odata4.producer.api.uri.queryoption.ExpandItem;
import org.apache.olingo.odata4.producer.api.uri.queryoption.ExpandOption;
import org.apache.olingo.odata4.producer.api.uri.queryoption.SupportedQueryOptions;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemImpl.java
new file mode 100644
index 0000000..4244449
--- /dev/null
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemImpl.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * 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.queryoption;
+
+//TODO rework this
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
+import org.apache.olingo.odata4.producer.api.uri.UriResourcePart;
+import org.apache.olingo.odata4.producer.api.uri.queryoption.SelectItem;
+import org.apache.olingo.odata4.producer.core.uri.UriResourceImplKeyPred;
+import org.apache.olingo.odata4.producer.core.uri.UriResourceImplTyped;
+import org.apache.olingo.odata4.producer.core.uri.UriResourcePartImpl;
+
+public class SelectItemImpl implements SelectItem {
+
+ private UriResourceImplTyped lastResourcePart;
+ private List<UriResourcePartImpl> parts = new ArrayList<UriResourcePartImpl>();
+ private boolean isStar;
+ private FullQualifiedName addOperationsInSchemaNameSpace;
+ private EdmEntityType entityTypeCast;
+
+ public EdmType getType() {
+ if (lastResourcePart != null) {
+ if (lastResourcePart instanceof UriResourceImplKeyPred) {
+ UriResourceImplKeyPred lastKeyPred = (UriResourceImplKeyPred) lastResourcePart;
+ if (lastKeyPred.getTypeFilterOnEntry() != null) {
+ return lastKeyPred.getTypeFilterOnEntry();
+ } else if (lastKeyPred.getTypeFilterOnCollection() != null) {
+ return lastKeyPred.getTypeFilterOnCollection();
+ }
+ }
+ EdmType type = lastResourcePart.getTypeFilter();
+ if (type != null) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isStar() {
+ return isStar;
+ }
+
+ public SelectItemImpl setStar(boolean isStar) {
+ this.isStar = isStar;
+ return this;
+ }
+
+ @Override
+ public boolean isAllOperationsInSchema() {
+ if (addOperationsInSchemaNameSpace == null) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ @Override
+ public FullQualifiedName getAllOperationsInSchemaNameSpace() {
+ return addOperationsInSchemaNameSpace;
+ }
+
+ public void addAllOperationsInSchema(final FullQualifiedName addOperationsInSchemaNameSpace) {
+ this.addOperationsInSchemaNameSpace = addOperationsInSchemaNameSpace;
+ }
+
+ @Override
+ public EdmEntityType getEntityTypeCast() {
+ return entityTypeCast;
+ }
+
+ public SelectItemImpl setEntityTypeCast(EdmEntityType entityTypeCast) {
+ this.entityTypeCast = entityTypeCast;
+ return this;
+ }
+
+ @Override
+ public List<UriResourcePart> getPropertyChainList() {
+
+ return null;
+ }
+
+
+ public UriResourcePart getLastPart() {
+ return lastResourcePart;
+ }
+
+ public SelectItemImpl addPath(UriResourceImplTyped resourcePart) {
+ parts.add(resourcePart);
+ this.lastResourcePart = resourcePart;
+ return this;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemOptionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemOptionImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemOptionImpl.java
deleted file mode 100644
index 28a2e93..0000000
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectItemOptionImpl.java
+++ /dev/null
@@ -1,109 +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.queryoption;
-
-//TODO rework this
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata4.commons.api.edm.Edm;
-import org.apache.olingo.odata4.commons.api.edm.EdmAction;
-import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
-import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
-import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
-import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
-import org.apache.olingo.odata4.commons.api.edm.EdmType;
-import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceProperty;
-import org.apache.olingo.odata4.producer.api.uri.queryoption.SelectItem;
-
-public class SelectItemOptionImpl implements SelectItem {
-
- private SelectSegmentImpl lastSegment = null;
-
- // only one of these must me filled
- private List<SelectSegmentImpl> segments = new ArrayList<SelectSegmentImpl>();
-
- public EdmType getType() {
- if (lastSegment != null) {
- EdmType type = lastSegment.getTypeCast();
- if (type != null) {
- return type;
- }
- return lastSegment.getType();
- }
- return null;
- }
-
-
- public void addSegment(SelectSegmentImpl newSegment) {
- segments.add(newSegment);
- lastSegment = newSegment;
-
- }
-
- public void addStar() {}
-
- public void addAllOperationsInSchema(final FullQualifiedName addOperationsInSchema) {}
-
-
-
- @Override
- public boolean isStar() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public boolean isAllOperationsInSchema() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public String getNameSpace() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public EdmEntityType getEntityTypeCast() {
- // TODO Auto-generated method stub
- return null;
- }
-
-
- @Override
- public List<UriResourceProperty> getPropertyChainList() {
- // TODO Auto-generated method stub
- return null;
- }
-
-
- public SelectSegmentImpl getLastSegment() {
- return lastSegment;
- }
-
-
- public void setEntityTypeCast(EdmEntityType et) {
- // TODO Auto-generated method stub
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectOptionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectOptionImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectOptionImpl.java
index 7365c6b..4298b75 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectOptionImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectOptionImpl.java
@@ -27,13 +27,13 @@ import org.apache.olingo.odata4.producer.api.uri.queryoption.SupportedQueryOptio
public class SelectOptionImpl extends SystemQueryOptionImpl implements SelectOption {
- private List<SelectItemOptionImpl> selectItems;
+ private List<SelectItemImpl> selectItems;
public SelectOptionImpl() {
setKind(SupportedQueryOptions.SELECT);
}
- public SelectOptionImpl setSelectItems(final List<SelectItemOptionImpl> selectItems) {
+ public SelectOptionImpl setSelectItems(final List<SelectItemImpl> selectItems) {
this.selectItems = selectItems;
return this;
}
@@ -41,7 +41,7 @@ public class SelectOptionImpl extends SystemQueryOptionImpl implements SelectOpt
@Override
public List<SelectItem> getSelectItems() {
List<SelectItem> retList = new ArrayList<SelectItem>();
- for (SelectItemOptionImpl item : selectItems) {
+ for (SelectItemImpl item : selectItems) {
retList.add(item);
}
return retList;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectSegmentImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectSegmentImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectSegmentImpl.java
deleted file mode 100644
index 7fbad91..0000000
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SelectSegmentImpl.java
+++ /dev/null
@@ -1,78 +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.queryoption;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmAction;
-import org.apache.olingo.odata4.commons.api.edm.EdmElement;
-import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
-import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
-import org.apache.olingo.odata4.commons.api.edm.EdmType;
-
-public class SelectSegmentImpl {
-
- private EdmElement property;
- private EdmAction action;
- private EdmFunction function;
-
- private EdmType typeCast;
-
- public EdmElement getProperty() {
- return property;
- }
-
- public SelectSegmentImpl setProperty(final EdmElement property) {
- this.property = property;
-
- return this;
- }
-
- public EdmType getType() {
- return property.getType();
- }
-
- public EdmType getTypeCast() {
- return typeCast;
- }
-
- public SelectSegmentImpl setTypeCast(final EdmStructuralType type) {
- typeCast = type;
- return this;
- }
-
-
-
- public EdmAction getAction() {
- return action;
- }
-
- public SelectSegmentImpl setAction(EdmAction action) {
- this.action = action;
- return this;
- }
-
- public EdmFunction getFunction() {
- return function;
- }
-
- public SelectSegmentImpl setFunction(EdmFunction function) {
- this.function = function;
- return this;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SystemQueryOptionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SystemQueryOptionImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SystemQueryOptionImpl.java
index 388b712..580cc89 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SystemQueryOptionImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/SystemQueryOptionImpl.java
@@ -18,8 +18,8 @@
******************************************************************************/
package org.apache.olingo.odata4.producer.core.uri.queryoption;
-import org.apache.olingo.odata4.producer.api.uri.queryoption.SystemQueryOption;
import org.apache.olingo.odata4.producer.api.uri.queryoption.SupportedQueryOptions;
+import org.apache.olingo.odata4.producer.api.uri.queryoption.SystemQueryOption;
public class SystemQueryOptionImpl extends QueryOptionImpl implements SystemQueryOption {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/expression/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/expression/MemberImpl.java b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/expression/MemberImpl.java
index 641ed7e..719964e 100644
--- a/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/expression/MemberImpl.java
+++ b/odata4-lib/odata4-producer-core/src/main/java/org/apache/olingo/odata4/producer/core/uri/queryoption/expression/MemberImpl.java
@@ -18,12 +18,17 @@
******************************************************************************/
package org.apache.olingo.odata4.producer.core.uri.queryoption.expression;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
import org.apache.olingo.odata4.commons.api.exception.ODataApplicationException;
import org.apache.olingo.odata4.producer.api.uri.UriInfoResource;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.ExceptionVisitExpression;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.ExpressionVisitor;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Member;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.VisitableExression;
+import org.apache.olingo.odata4.producer.core.uri.UriInfoImpl;
+import org.apache.olingo.odata4.producer.core.uri.UriResourceImplKeyPred;
+import org.apache.olingo.odata4.producer.core.uri.UriResourceImplTyped;
+import org.apache.olingo.odata4.producer.core.uri.UriResourcePartImpl;
public class MemberImpl extends ExpressionImpl implements Member, VisitableExression {
@@ -44,4 +49,41 @@ public class MemberImpl extends ExpressionImpl implements Member, VisitableExres
return visitor.visitMember(path);
}
+ @Override
+ public EdmType getType() {
+
+ UriInfoImpl uriInfo = (UriInfoImpl) path;
+ UriResourcePartImpl lastResourcePart = (UriResourcePartImpl) uriInfo.getLastResourcePart();
+
+ if (lastResourcePart instanceof UriResourceImplKeyPred) {
+ UriResourceImplKeyPred lastKeyPred = (UriResourceImplKeyPred) lastResourcePart;
+ if (lastKeyPred.getTypeFilterOnEntry() != null) {
+ return lastKeyPred.getTypeFilterOnEntry();
+ } else if (lastKeyPred.getTypeFilterOnCollection() != null) {
+ return lastKeyPred.getTypeFilterOnCollection();
+ }
+ return lastKeyPred.getType();
+ } else if (lastResourcePart instanceof UriResourceImplTyped) {
+ UriResourceImplTyped lastTyped = (UriResourceImplTyped) lastResourcePart;
+ EdmType type = lastTyped.getTypeFilter();
+ if (type != null) {
+ return type;
+ }
+ return lastTyped.getType();
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isCollection() {
+ UriInfoImpl uriInfo = (UriInfoImpl) path;
+ UriResourcePartImpl lastResourcePart = (UriResourcePartImpl) uriInfo.getLastResourcePart();
+ if (lastResourcePart instanceof UriResourceImplTyped) {
+ UriResourceImplTyped lastTyped = (UriResourceImplTyped) lastResourcePart;
+ return lastTyped.isCollection();
+ }
+
+ return false;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/ExpandValidator.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/ExpandValidator.java b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/ExpandValidator.java
index 324fd6f..c566716 100644
--- a/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/ExpandValidator.java
+++ b/odata4-lib/odata4-producer-core/src/test/java/org/apache/olingo/odata4/producer/core/testutil/ExpandValidator.java
@@ -23,15 +23,11 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.apache.olingo.odata4.commons.api.edm.Edm;
-import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
import org.apache.olingo.odata4.commons.api.exception.ODataApplicationException;
import org.apache.olingo.odata4.producer.api.uri.UriInfoKind;
-import org.apache.olingo.odata4.producer.api.uri.UriResourcePart;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceRef;
import org.apache.olingo.odata4.producer.api.uri.queryoption.ExpandItem;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.ExceptionVisitExpression;
import org.apache.olingo.odata4.producer.core.uri.UriInfoImpl;
-import org.apache.olingo.odata4.producer.core.uri.UriResourceNavigationPropertyImpl;
import org.apache.olingo.odata4.producer.core.uri.queryoption.ExpandOptionImpl;
import org.apache.olingo.odata4.producer.core.uri.queryoption.FilterOptionImpl;
import org.apache.olingo.odata4.producer.core.uri.queryoption.LevelExpandOptionImpl;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/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 1d8749e..f3d5f81 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
@@ -18,28 +18,16 @@
******************************************************************************/
package org.apache.olingo.odata4.producer.core.testutil;
-import static org.junit.Assert.fail;
-
import java.util.List;
import org.apache.olingo.odata4.commons.api.edm.EdmType;
import org.apache.olingo.odata4.commons.api.exception.ODataApplicationException;
import org.apache.olingo.odata4.producer.api.uri.UriInfoResource;
-import org.apache.olingo.odata4.producer.api.uri.UriResourcePart;
import org.apache.olingo.odata4.producer.api.uri.UriResourceIt;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceCount;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceAction;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceAll;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceAny;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceEntitySet;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceFunction;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceNavigation;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceProperty;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceSingleton;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceRef;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceRoot;
-import org.apache.olingo.odata4.producer.api.uri.UriResourceValue;
-
+import org.apache.olingo.odata4.producer.api.uri.UriResourceLambdaAll;
+import org.apache.olingo.odata4.producer.api.uri.UriResourceLambdaAny;
+import org.apache.olingo.odata4.producer.api.uri.UriResourcePart;
+import org.apache.olingo.odata4.producer.api.uri.UriResourcePartTyped;
import org.apache.olingo.odata4.producer.api.uri.queryoption.FilterOption;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.ExceptionVisitExpression;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
@@ -47,8 +35,6 @@ import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expressi
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.SupportedBinaryOperators;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.SupportedMethodCalls;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.SupportedUnaryOperators;
-import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.VisitableExression;
-import org.apache.olingo.odata4.producer.core.uri.UriResourceActionImpl;
public class FilterTreeToText implements ExpressionVisitor<String> {
@@ -85,7 +71,7 @@ public class FilterTreeToText implements ExpressionVisitor<String> {
@Override
public String visitLiteral(String literal) throws ExceptionVisitExpression {
- return literal;
+ return "<"+literal +">";
}
@Override
@@ -96,29 +82,24 @@ public class FilterTreeToText implements ExpressionVisitor<String> {
for (UriResourcePart item : path.getUriResourceParts()) {
String tmp = "";
- if (item instanceof UriResourceIt) {
- if (((UriResourceIt) item).isExplicitIt()) {
- tmp = "$it";
- }
- } else if ( item instanceof UriResourceAll) {
- UriResourceAll all = (UriResourceAll) item;
- tmp = visitLambdaExpression(all.getLamdaVariable(), all.getExpression());
- } else if ( item instanceof UriResourceAny) {
- UriResourceAny any = (UriResourceAny) item;
- tmp = visitLambdaExpression(any.getLamdaVariable(), any.getExpression());
- } else {
- tmp = item.toString();
+ if ( item instanceof UriResourceLambdaAll) {
+ UriResourceLambdaAll all = (UriResourceLambdaAll) item;
+ tmp = visitLambdaExpression(all.getVariable(), all.getExpression());
+ } else if ( item instanceof UriResourceLambdaAny) {
+ UriResourceLambdaAny any = (UriResourceLambdaAny) item;
+ tmp = visitLambdaExpression(any.getVariable(), any.getExpression());
+ } else if ( item instanceof UriResourcePartTyped) {
+ UriResourcePartTyped typed = (UriResourcePartTyped)item;
+ tmp = typed.toString(true);
}
-
-
if (ret.length() != 0) {
ret += "/";
}
ret += tmp;
}
- return ret;
+ return "<"+ret+">";
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fb833de3/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 47d1e00..f61653e 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
@@ -22,14 +22,21 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
import org.apache.olingo.odata4.commons.api.exception.ODataApplicationException;
import org.apache.olingo.odata4.producer.api.uri.UriInfoKind;
import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.ExceptionVisitExpression;
+import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Expression;
+import org.apache.olingo.odata4.producer.api.uri.queryoption.expression.Member;
import org.apache.olingo.odata4.producer.core.uri.ParserAdapter;
import org.apache.olingo.odata4.producer.core.uri.UriInfoImpl;
-import org.apache.olingo.odata4.producer.core.uri.UriParserException;
import org.apache.olingo.odata4.producer.core.uri.UriParseTreeVisitor;
+import org.apache.olingo.odata4.producer.core.uri.UriParserException;
import org.apache.olingo.odata4.producer.core.uri.queryoption.FilterOptionImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.BinaryImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.LiteralImpl;
+import org.apache.olingo.odata4.producer.core.uri.queryoption.expression.MemberImpl;
public class FilterValidator implements Validator {
private Edm edm;
@@ -37,7 +44,7 @@ public class FilterValidator implements Validator {
private Validator invokedBy;
private FilterOptionImpl filter;
- private int logLevel;
+ private Expression curExpression;
// --- Setup ---
public FilterValidator SetUriResourcePathValidator(UriResourceValidator uriResourcePathValidator) {
@@ -59,16 +66,10 @@ public class FilterValidator implements Validator {
this.filter = filter;
if (filter.getExpression() == null) {
-
fail("FilterValidator: no filter found");
}
return this;
}
-
- public FilterValidator log(final int logLevel) {
- this.logLevel = logLevel;
- return this;
- }
// --- Execution ---
public FilterValidator runOnETTwoKeyNav(String filter) {
@@ -77,55 +78,52 @@ public class FilterValidator implements Validator {
}
public FilterValidator runOnETAllPrim(String filter) {
- String uri = "ESAllPrim(1)?$filter=" + filter.trim();
+ String uri = "ESAllPrim(1)?$filter=" + filter.trim();
return runUri(uri);
}
public FilterValidator runOnETKeyNav(String filter) {
- String uri = "ESKeyNav(1)?$filter=" + filter.trim();
+ String uri = "ESKeyNav(1)?$filter=" + filter.trim();
return runUri(uri);
}
-
public FilterValidator runOnCTTwoPrim(String filter) {
- String uri = "SINav/PropertyComplexTwoPrim?$filter=" + filter.trim();
+ String uri = "SINav/PropertyComplexTwoPrim?$filter=" + filter.trim();
return runUri(uri);
}
-
+
public FilterValidator runOnString(String filter) {
- String uri = "SINav/PropertyString?$filter=" + filter.trim();
+ String uri = "SINav/PropertyString?$filter=" + filter.trim();
return runUri(uri);
}
-
+
public FilterValidator runOnInt32(String filter) {
- String uri = "ESCollAllPrim(1)/CollPropertyInt32?$filter=" + filter.trim();
+ String uri = "ESCollAllPrim(1)/CollPropertyInt32?$filter=" + filter.trim();
return runUri(uri);
}
-
-
+
public FilterValidator runOnDateTimeOffset(String filter) {
- String uri = "ESCollAllPrim(1)/CollPropertyDateTimeOffset?$filter=" + filter.trim();
+ String uri = "ESCollAllPrim(1)/CollPropertyDateTimeOffset?$filter=" + filter.trim();
return runUri(uri);
}
-
+
public FilterValidator runOnDuration(String filter) {
- String uri = "ESCollAllPrim(1)/CollPropertyDuration?$filter=" + filter.trim();
+ String uri = "ESCollAllPrim(1)/CollPropertyDuration?$filter=" + filter.trim();
return runUri(uri);
}
-
+
public FilterValidator runOnTimeOfDay(String filter) {
- String uri = "ESCollAllPrim(1)/CollPropertyTimeOfDay?$filter=" + filter.trim();
+ String uri = "ESCollAllPrim(1)/CollPropertyTimeOfDay?$filter=" + filter.trim();
return runUri(uri);
}
-
-
+
public FilterValidator runESabc(String filter) {
- String uri = "ESabc?$filter=" + filter.trim();
+ String uri = "ESabc?$filter=" + filter.trim();
return runUri(uri);
}
-
- public FilterValidator runUri(String uri) {
-
+
+ public FilterValidator runUri(String uri) {
+
UriInfoImpl uriInfo = null;
try {
@@ -140,7 +138,7 @@ public class FilterValidator implements Validator {
}
setFilter((FilterOptionImpl) uriInfo.getFilterOption());
-
+ this.curExpression = this.filter.getExpression();
return this;
}
@@ -185,4 +183,55 @@ public class FilterValidator implements Validator {
return ret;
}
+ public FilterValidator isType(FullQualifiedName fullName) {
+ EdmType actualType = null;
+ if (curExpression instanceof MemberImpl) {
+ Member member = (Member) curExpression;
+ actualType = member.getType();
+ }
+
+ if (actualType == null) {
+ fail("Current expression not typed");
+ }
+
+ FullQualifiedName actualName = new FullQualifiedName(actualType.getNamespace(), actualType.getName());
+ assertEquals(fullName, actualName);
+ return this;
+ }
+
+ public FilterValidator left() {
+ if (curExpression instanceof BinaryImpl) {
+ curExpression = ((BinaryImpl) curExpression).getLeftOperand();
+ } else {
+ fail("Current expression not a binary operator");
+ }
+ return this;
+ }
+
+ public FilterValidator root() {
+ curExpression = filter.getExpression();
+ return this;
+ }
+
+ public FilterValidator right() {
+ if (curExpression instanceof BinaryImpl) {
+ curExpression = ((BinaryImpl) curExpression).getRightOperand();
+ } else {
+ fail("Current expression not a binary operator");
+ }
+ return this;
+
+ }
+
+ public FilterValidator isLiteral(String literalText) {
+ if (curExpression instanceof LiteralImpl) {
+ String actualLiteralText = ((LiteralImpl) curExpression).getText();
+ assertEquals(literalText, actualLiteralText);
+ } else {
+ fail("Current expression not a literal");
+ }
+ return this;
+
+ }
+
}