You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by sk...@apache.org on 2014/03/10 10:02:20 UTC

[04/51] [abbrv] [partial] [OLINGO-192] rename java packages

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/PropertyRef.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/PropertyRef.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/PropertyRef.java
new file mode 100644
index 0000000..cf64050
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/PropertyRef.java
@@ -0,0 +1,55 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+public class PropertyRef {
+
+  private String propertyName;
+
+  private String alias;
+
+  private String path;
+
+  public String getPath() {
+    return path;
+  }
+
+  public PropertyRef setPath(final String path) {
+    this.path = path;
+    return this;
+  }
+
+  public String getPropertyName() {
+    return propertyName;
+  }
+
+  public PropertyRef setPropertyName(final String name) {
+    propertyName = name;
+    return this;
+  }
+
+  public String getAlias() {
+    return alias;
+  }
+
+  public PropertyRef setAlias(final String alias) {
+    this.alias = alias;
+    return this;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReferentialConstraint.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReferentialConstraint.java
new file mode 100644
index 0000000..bf454eb
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReferentialConstraint.java
@@ -0,0 +1,46 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+public class ReferentialConstraint {
+
+  // TODO: check data type
+  private String property;
+
+  private String referencedProperty;
+
+  // Annotations
+  public String getProperty() {
+    return property;
+  }
+
+  public ReferentialConstraint setProperty(final String property) {
+    this.property = property;
+    return this;
+  }
+
+  public String getReferencedProperty() {
+    return referencedProperty;
+  }
+
+  public ReferentialConstraint setReferencedProperty(final String referencedProperty) {
+    this.referencedProperty = referencedProperty;
+    return this;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReturnType.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReturnType.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReturnType.java
new file mode 100644
index 0000000..1206a9d
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/ReturnType.java
@@ -0,0 +1,91 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+
+public class ReturnType {
+
+    private FullQualifiedName type;
+
+    private boolean isCollection;
+
+    // facets
+    private Boolean nullable;
+
+    private Integer maxLength;
+
+    private Integer precision;
+
+    private Integer scale;
+
+    public FullQualifiedName getType() {
+        return type;
+    }
+
+    public ReturnType setType(final FullQualifiedName type) {
+        this.type = type;
+        return this;
+    }
+
+    public boolean isCollection() {
+        return isCollection;
+    }
+
+    public ReturnType setCollection(final boolean isCollection) {
+        this.isCollection = isCollection;
+        return this;
+    }
+
+    public Boolean getNullable() {
+        return nullable;
+    }
+
+    public ReturnType setNullable(final Boolean nullable) {
+        this.nullable = nullable;
+        return this;
+    }
+
+    public Integer getMaxLength() {
+        return maxLength;
+    }
+
+    public ReturnType setMaxLength(final Integer maxLength) {
+        this.maxLength = maxLength;
+        return this;
+    }
+
+    public Integer getPrecision() {
+        return precision;
+    }
+
+    public ReturnType setPrecision(final Integer precision) {
+        this.precision = precision;
+        return this;
+    }
+
+    public Integer getScale() {
+        return scale;
+    }
+
+    public ReturnType setScale(final Integer scale) {
+        this.scale = scale;
+        return this;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Schema.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Schema.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Schema.java
new file mode 100644
index 0000000..ce249da
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Schema.java
@@ -0,0 +1,135 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+import java.util.List;
+
+public class Schema {
+
+  private String namespace;
+
+  private String alias;
+
+  private List<EnumType> enumTypes;
+
+  private List<TypeDefinition> typeDefinitions;
+
+  private List<EntityType> entityTypes;
+
+  private List<ComplexType> complexTypes;
+
+  private List<Action> actions;
+
+  private List<Function> functions;
+
+  private EntityContainer entityContainer;
+
+  private List<Term> terms;
+
+  // Annotations
+  public String getNamespace() {
+    return namespace;
+  }
+
+  public Schema setNamespace(final String namespace) {
+    this.namespace = namespace;
+    return this;
+  }
+
+  public String getAlias() {
+    return alias;
+  }
+
+  public Schema setAlias(final String alias) {
+    this.alias = alias;
+    return this;
+  }
+
+  public List<EnumType> getEnumTypes() {
+    return enumTypes;
+  }
+
+  public Schema setEnumTypes(final List<EnumType> enumTypes) {
+    this.enumTypes = enumTypes;
+    return this;
+  }
+
+  public List<TypeDefinition> getTypeDefinitions() {
+    return typeDefinitions;
+  }
+
+  public Schema setTypeDefinitions(final List<TypeDefinition> typeDefinitions) {
+    this.typeDefinitions = typeDefinitions;
+    return this;
+  }
+
+  public List<EntityType> getEntityTypes() {
+    return entityTypes;
+  }
+
+  public Schema setEntityTypes(final List<EntityType> entityTypes) {
+    this.entityTypes = entityTypes;
+    return this;
+  }
+
+  public List<ComplexType> getComplexTypes() {
+    return complexTypes;
+  }
+
+  public Schema setComplexTypes(final List<ComplexType> complexTypes) {
+    this.complexTypes = complexTypes;
+    return this;
+  }
+
+  public List<Action> getActions() {
+    return actions;
+  }
+
+  public Schema setActions(final List<Action> actions) {
+    this.actions = actions;
+    return this;
+  }
+
+  public List<Function> getFunctions() {
+    return functions;
+  }
+
+  public Schema setFunctions(final List<Function> functions) {
+    this.functions = functions;
+    return this;
+  }
+
+  public EntityContainer getEntityContainer() {
+    return entityContainer;
+  }
+
+  public Schema setEntityContainer(final EntityContainer entityContainer) {
+    this.entityContainer = entityContainer;
+    return this;
+  }
+
+  public List<Term> getTerms() {
+    return terms;
+  }
+
+  public Schema setTerms(final List<Term> terms) {
+    this.terms = terms;
+    return this;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Singleton.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Singleton.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Singleton.java
new file mode 100644
index 0000000..a6560c2
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Singleton.java
@@ -0,0 +1,44 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+
+public class Singleton extends BindingTarget {
+
+  @Override
+  public Singleton setName(final String name) {
+    this.name = name;
+    return this;
+  }
+
+  @Override
+  public Singleton setType(final FullQualifiedName type) {
+    this.type = type;
+    return this;
+  }
+
+  @Override
+  public Singleton setNavigationPropertyBindings(final List<NavigationPropertyBinding> navigationPropertyBindings) {
+    this.navigationPropertyBindings = navigationPropertyBindings;
+    return this;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/StructuredType.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/StructuredType.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/StructuredType.java
new file mode 100644
index 0000000..fec63fa
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/StructuredType.java
@@ -0,0 +1,93 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+
+public abstract class StructuredType {
+
+  protected String name;
+
+  protected boolean isOpenType;
+
+  protected FullQualifiedName baseType;
+
+  protected boolean isAbstract;
+
+  protected List<Property> properties;
+
+  protected List<NavigationProperty> navigationProperties;
+
+  // What about mapping and annotations?
+  public String getName() {
+    return name;
+  }
+
+  public StructuredType setName(final String name) {
+    this.name = name;
+    return this;
+  }
+
+  public boolean isOpenType() {
+    return isOpenType;
+  }
+
+  public StructuredType setOpenType(final boolean isOpenType) {
+    this.isOpenType = isOpenType;
+    return this;
+  }
+
+  public FullQualifiedName getBaseType() {
+    return baseType;
+  }
+
+  public StructuredType setBaseType(final FullQualifiedName baseType) {
+    this.baseType = baseType;
+    return this;
+  }
+
+  public boolean isAbstract() {
+    return isAbstract;
+  }
+
+  public StructuredType setAbstract(final boolean isAbstract) {
+    this.isAbstract = isAbstract;
+    return this;
+  }
+
+  public List<Property> getProperties() {
+    return properties;
+  }
+
+  public StructuredType setProperties(final List<Property> properties) {
+    this.properties = properties;
+    return this;
+  }
+
+  public List<NavigationProperty> getNavigationProperties() {
+    return navigationProperties;
+  }
+
+  public StructuredType setNavigationProperties(final List<NavigationProperty> navigationProperties) {
+    this.navigationProperties = navigationProperties;
+    return this;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Term.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Term.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Term.java
new file mode 100644
index 0000000..9990cb9
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/Term.java
@@ -0,0 +1,150 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+
+public class Term {
+
+  private String name;
+
+  private FullQualifiedName type;
+
+  private FullQualifiedName baseTerm;
+
+  // TODO: AppliesTo is a list of csdl elements => should we put this list inside an enum?
+  private String appliesTo;
+
+  private boolean isCollection;
+
+  // Facets
+  private String defaultValue;
+
+  private Boolean nullable;
+
+  private Integer maxLength;
+
+  private Integer precision;
+
+  private Integer scale;
+
+  // Annotation
+  private List<Annotation> annotations;
+
+  public String getName() {
+    return name;
+  }
+
+  public Term setName(final String name) {
+    this.name = name;
+    return this;
+  }
+
+  public FullQualifiedName getType() {
+    return type;
+  }
+
+  public Term setType(final FullQualifiedName type) {
+    this.type = type;
+    return this;
+  }
+
+  public FullQualifiedName getBaseTerm() {
+    return baseTerm;
+  }
+
+  public Term setBaseTerm(final FullQualifiedName baseTerm) {
+    this.baseTerm = baseTerm;
+    return this;
+  }
+
+  public String getAppliesTo() {
+    return appliesTo;
+  }
+
+  public Term setAppliesTo(final String appliesTo) {
+    this.appliesTo = appliesTo;
+    return this;
+  }
+
+  public boolean isCollection() {
+    return isCollection;
+  }
+
+  public Term setCollection(final boolean isCollection) {
+    this.isCollection = isCollection;
+    return this;
+  }
+
+  public String getDefaultValue() {
+    return defaultValue;
+  }
+
+  public Term setDefaultValue(final String defaultValue) {
+    this.defaultValue = defaultValue;
+    return this;
+  }
+
+  public Boolean getNullable() {
+    return nullable;
+  }
+
+  public Term setNullable(final Boolean nullable) {
+    this.nullable = nullable;
+    return this;
+  }
+
+  public Integer getMaxLength() {
+    return maxLength;
+  }
+
+  public Term setMaxLength(final Integer maxLength) {
+    this.maxLength = maxLength;
+    return this;
+  }
+
+  public Integer getPrecision() {
+    return precision;
+  }
+
+  public Term setPrecision(final Integer precision) {
+    this.precision = precision;
+    return this;
+  }
+
+  public Integer getScale() {
+    return scale;
+  }
+
+  public Term setScale(final Integer scale) {
+    this.scale = scale;
+    return this;
+  }
+
+  public List<Annotation> getAnnotations() {
+    return annotations;
+  }
+
+  public Term setAnnotations(final List<Annotation> annotations) {
+    this.annotations = annotations;
+    return this;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/TypeDefinition.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/TypeDefinition.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/TypeDefinition.java
new file mode 100644
index 0000000..f90a378
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/edm/provider/TypeDefinition.java
@@ -0,0 +1,94 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.edm.provider;
+
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+
+public class TypeDefinition {
+
+  private String name;
+
+  // TODO: UnderlyingType can only be primitve...
+  private FullQualifiedName underlyingType;
+
+  // Facets
+  private Integer maxLength;
+
+  private Integer precision;
+
+  private Integer scale;
+
+  private Boolean isUnicode;
+
+  // Annotations
+  public String getName() {
+    return name;
+  }
+
+  public TypeDefinition setName(final String name) {
+    this.name = name;
+    return this;
+  }
+
+  public FullQualifiedName getUnderlyingType() {
+    return underlyingType;
+  }
+
+  public TypeDefinition setUnderlyingType(final FullQualifiedName underlyingType) {
+    this.underlyingType = underlyingType;
+    return this;
+  }
+
+  public Integer getMaxLength() {
+    return maxLength;
+  }
+
+  public TypeDefinition setMaxLength(final Integer maxLength) {
+    this.maxLength = maxLength;
+    return this;
+  }
+
+  public Integer getPrecision() {
+    return precision;
+  }
+
+  public TypeDefinition setPrecision(final Integer precision) {
+    this.precision = precision;
+    return this;
+  }
+
+  public Integer getScale() {
+    return scale;
+  }
+
+  public TypeDefinition setScale(final Integer scale) {
+    this.scale = scale;
+    return this;
+  }
+
+  public Boolean getIsUnicode() {
+    return isUnicode;
+  }
+
+  public TypeDefinition setIsUnicode(final Boolean isUnicode) {
+    this.isUnicode = isUnicode;
+    return this;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfo.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfo.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfo.java
new file mode 100644
index 0000000..7fbc2d1
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfo.java
@@ -0,0 +1,48 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+
+/**
+ * Object acting as general access to URI information extracted from the request URI. Depending on
+ * the URI info kind different interfaces are used to provide access to that information. </p>
+ * Use method {@link #getKind()} to obtain URI info kind information and to perform an appropriate cast.
+ */
+public interface UriInfo extends
+    UriInfoService, UriInfoAll, UriInfoBatch, UriInfoCrossjoin,
+    UriInfoEntityId, UriInfoMetadata, UriInfoResource {
+  
+  public UriInfoKind getKind();
+
+  public UriInfoService asUriInfoService();
+
+  public UriInfoAll asUriInfoAll();
+
+  public UriInfoBatch asUriInfoBatch();
+
+  public UriInfoCrossjoin asUriInfoCrossjoin();
+
+  public UriInfoEntityId asUriInfoEntityId();
+
+  public UriInfoMetadata asUriInfoMetadata();
+
+  public UriInfoResource asUriInfoResource();
+
+  
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoAll.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoAll.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoAll.java
new file mode 100644
index 0000000..5845ad4
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoAll.java
@@ -0,0 +1,28 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+
+/**
+ * Used for URI info kind {@link UriInfoKind#all} to describe URIs like 
+ * http://.../serviceroot/$all
+ */
+public interface UriInfoAll {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoBatch.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoBatch.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoBatch.java
new file mode 100644
index 0000000..d4debad
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoBatch.java
@@ -0,0 +1,27 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Used for URI info kind {@link UriInfoKind#batch} to describe URIs like
+ * http://.../serviceroot/$batch
+ */
+public interface UriInfoBatch {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoCrossjoin.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoCrossjoin.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoCrossjoin.java
new file mode 100644
index 0000000..15a42bb
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoCrossjoin.java
@@ -0,0 +1,34 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import java.util.List;
+
+/**
+ * Used for URI info kind {@link UriInfoKind#crossjoin} to describe URIs like
+ * http://.../serviceroot/$crossjoin(...)
+ */
+public interface UriInfoCrossjoin {
+
+  /**
+   * @return List of entity set names
+   */
+  List<String> getEntitySetNames();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoEntityId.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoEntityId.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoEntityId.java
new file mode 100644
index 0000000..2bac67c
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoEntityId.java
@@ -0,0 +1,68 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.EdmEntityType;
+import org.apache.olingo.server.api.uri.queryoption.CustomQueryOption;
+import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
+import org.apache.olingo.server.api.uri.queryoption.FormatOption;
+import org.apache.olingo.server.api.uri.queryoption.IdOption;
+import org.apache.olingo.server.api.uri.queryoption.SelectOption;
+
+/**
+ * Used for URI info kind {@link UriInfoKind#entityId} to describe URIs like
+ * http://.../serviceroot/$entity...
+ */
+public interface UriInfoEntityId {
+
+  /**
+   * @return List of custom query options used in the URI
+   */
+  public List<CustomQueryOption> getCustomQueryOptions();
+
+  /**
+   * Behind $entity a optional type cast can be used in the URI.
+   * For example: http://.../serviceroot/$entity/namespace.entitytype
+   * @return Type cast if found, otherwise null
+   */
+  public EdmEntityType getEntityTypeCast();
+
+  /**
+   * @return Object containing information of the $expand option
+   */
+  public ExpandOption getExpandOption();
+
+  /**
+   * @return Object containing information of the $format option
+   */
+  public FormatOption getFormatOption();
+
+  /**
+   * @return Object containing information of the $id option
+   */
+  public IdOption getIdOption();
+
+  /**
+   * @return Object containing information of the $select option
+   */
+  public SelectOption getSelectOption();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoKind.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoKind.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoKind.java
new file mode 100644
index 0000000..ec86fd9
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoKind.java
@@ -0,0 +1,67 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Defining the various info kinds
+ */
+public enum UriInfoKind {
+  
+  /**
+   * Class: {@link UriInfoAll}<br>
+   * URI:   http://.../serviceroot/$all 
+   */
+  all,
+  
+  /**
+   * Class: {@link UriInfoBatch}<br>
+   * URI:   http://.../serviceroot/$batch 
+   */
+  batch,
+  
+  /**
+   * Class: {@link UriInfoCrossjoin}<br>
+   * URI:   http://.../serviceroot/$crossjoin 
+   */
+  crossjoin,
+  
+  /**
+   * Class: {@link UriInfoEntityId}<br>
+   * URI:   http://.../serviceroot/$entity(...) 
+   */
+  entityId,
+  
+  /**
+   * Class: {@link UriInfoMetadata}<br>
+   * URI:   http://.../serviceroot/$metadata... 
+   */
+  metadata,
+  
+  /**
+   * Class: {@link UriInfoResource}<br>
+   * URI:   http://.../serviceroot/entitySet 
+   */
+  resource,
+  
+  /**
+   * Class: {@link UriInfoService}<br>
+   * URI:   http://.../serviceroot 
+   */
+  service;
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoMetadata.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoMetadata.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoMetadata.java
new file mode 100644
index 0000000..49cf905
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoMetadata.java
@@ -0,0 +1,39 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.server.api.uri.queryoption.FormatOption;
+
+/**
+ * Used for URI info kind {@link UriInfoKind#metadata} to describe URIs like
+ * http://.../serviceroot/$metadata...
+ */
+public interface UriInfoMetadata {
+
+  /**
+   * @return Object containing information of the $id option
+   */
+  public FormatOption getFormatOption();
+
+  /**
+   * @return Object containing information of the URI fragment
+   */
+  public String getFragment();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoResource.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoResource.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoResource.java
new file mode 100644
index 0000000..a7f759e
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoResource.java
@@ -0,0 +1,118 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import java.util.List;
+
+import org.apache.olingo.server.api.uri.queryoption.CountOption;
+import org.apache.olingo.server.api.uri.queryoption.CustomQueryOption;
+import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
+import org.apache.olingo.server.api.uri.queryoption.FilterOption;
+import org.apache.olingo.server.api.uri.queryoption.FormatOption;
+import org.apache.olingo.server.api.uri.queryoption.IdOption;
+import org.apache.olingo.server.api.uri.queryoption.OrderByOption;
+import org.apache.olingo.server.api.uri.queryoption.SearchOption;
+import org.apache.olingo.server.api.uri.queryoption.SelectOption;
+import org.apache.olingo.server.api.uri.queryoption.SkipOption;
+import org.apache.olingo.server.api.uri.queryoption.SkipTokenOption;
+import org.apache.olingo.server.api.uri.queryoption.TopOption;
+
+/**
+ * Used for URI info kind {@link UriInfoKind#resource} to describe URIs like
+ * E.g. http://.../serviceroot/entitySet
+ */
+public interface UriInfoResource {
+
+  /**
+   * @return List of custom query options used in the URI
+   */
+  List<CustomQueryOption> getCustomQueryOptions();
+
+  /**
+   * @return Object containing information of the $expand option
+   */
+  ExpandOption getExpandOption();
+
+  /**
+   * @return Object containing information of the $filter option
+   */
+  FilterOption getFilterOption();
+
+  /**
+   * @return Object containing information of the $format option
+   */
+  FormatOption getFormatOption();
+  
+  /**
+   * @return Object containing information of the $id option
+   */
+  IdOption getIdOption();
+
+  /**
+   * @return Object containing information of the $count option
+   */
+  CountOption getCountOption();
+
+  /**
+   * @return Object containing information of the $orderby option
+   */
+  OrderByOption getOrderByOption();
+
+  /**
+   * @return Object containing information of the $search option
+   */
+  SearchOption getSearchOption();
+
+  /**
+   * @return Object containing information of the $select option
+   */
+  SelectOption getSelectOption();
+
+  /**
+   * @return Object containing information of the $skip option
+   */
+  SkipOption getSkipOption();
+
+  /**
+   * @return Object containing information of the $skiptoken option
+   */
+  SkipTokenOption getSkipTokenOption();
+
+  /**
+   * @return Object containing information of the $top option
+   */
+  TopOption getTopOption();
+  
+  /**
+   * The path segments behind the service root define which resources are  
+   * requested by that URI. This may be entities/functions/actions and more.
+   * Each segments information (name, key predicates, function parameters, ...) is 
+   * stored within an resource object dedicated for that segment type.</p>
+   * For example: the URI http://.../serviceroot/entitySet(1)/Adresse will 
+   * have 2 ResourceParts:<br> 
+   * - The first one of type {@link UriResourceEntitySet} 
+   * containing the name of the entity set and also the key predicate information.<br> 
+   * - The second one of type {@link UriResourceComplexProperty} containing the name of
+   * the accessed complex property
+   * 
+   * @return List of resource parts. 
+   */
+  List<UriResource> getUriResourceParts();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoService.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoService.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoService.java
new file mode 100644
index 0000000..ab2ccb6
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriInfoService.java
@@ -0,0 +1,27 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Used for URI info kind {@link UriInfoKind#service} to describe URIs like
+ * http://.../serviceroot
+ */
+public interface UriInfoService {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriParameter.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriParameter.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriParameter.java
new file mode 100644
index 0000000..669c4dd
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriParameter.java
@@ -0,0 +1,53 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.server.api.uri.queryoption.expression.Expression;
+
+/**
+ * Represents an function parameter or key predicate when used in the URI. 
+ */
+public interface UriParameter {
+
+  /**
+   * @return Alias name if the parameters values is an alias, otherwise null 
+   */
+  public String getAlias();
+
+  /**
+   * @return Text of the parameters value 
+   */
+  public String getText();
+
+  /**
+   * @return If the parameters value is a expression and expression is returned, otherwise null 
+   */
+  public Expression getExression();
+
+  /**
+   * @return Name of the parameter 
+   */
+  public String getName();
+
+  /**
+   * @return Name of the referenced property when referential constrains are used  
+   */
+  public String getRefencedProperty();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResource.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResource.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResource.java
new file mode 100644
index 0000000..9d22435
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResource.java
@@ -0,0 +1,35 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Super interface for all objects representing resource parts. 
+ * See {@link UriInfoResource} for details. 
+ */
+public interface UriResource {
+
+  /**
+   * @return Kind of the resource part 
+   */
+  UriResourceKind getKind();
+
+  @Override
+  String toString();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceAction.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceAction.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceAction.java
new file mode 100644
index 0000000..ee2ddcb
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceAction.java
@@ -0,0 +1,42 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.commons.api.edm.EdmAction;
+import org.apache.olingo.commons.api.edm.EdmActionImport;
+
+/**
+ * Used to describe an action used within an resource path
+ * For example: http://.../serviceroot/action()
+ */
+public interface UriResourceAction extends UriResourcePartTyped {
+
+  /**
+   * @return Action used in the resource path
+   */
+  EdmAction getAction();
+
+  /**
+   * Convenience method which returns the {@link EdmActionImport} which was used in
+   * the resource path to define the {@link EdmAction}.
+   * @return
+   */
+  EdmActionImport getActionImport();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceComplexProperty.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceComplexProperty.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceComplexProperty.java
new file mode 100644
index 0000000..72affe8
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceComplexProperty.java
@@ -0,0 +1,41 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.commons.api.edm.EdmComplexType;
+
+/**
+ * Used to describe an complex property used within an resource path
+ * E.g. http://.../serviceroot/entityset(1)/complexproperty
+ */
+public interface UriResourceComplexProperty extends UriResourceProperty {
+
+  /**
+   * @return Complex property used in the resource path
+   */
+  EdmComplexType getComplexType();
+
+  /**
+   * Behind a complex property may be a type filter
+   * E.g. http://.../serviceroot/entityset(1)/complexproperty/namespace.complextype
+   * @return Type filter if found, otherwise null 
+   */
+  EdmComplexType getComplexTypeFilter();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceCount.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceCount.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceCount.java
new file mode 100644
index 0000000..ef68b4b
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceCount.java
@@ -0,0 +1,27 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Used to describe an $count used within an resource path
+ * For example: http://.../serviceroot/entityset(1)/$count
+ */
+public interface UriResourceCount extends UriResource {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceEntitySet.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceEntitySet.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceEntitySet.java
new file mode 100644
index 0000000..d3ef52e
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceEntitySet.java
@@ -0,0 +1,58 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.commons.api.edm.EdmEntityType;
+import org.apache.olingo.commons.api.edm.EdmType;
+
+/**
+ * Used to describe an entity set used within an resource path
+ * For example: http://.../serviceroot/entityset(1)
+ */
+public interface UriResourceEntitySet extends UriResourcePartTyped {
+  
+  /**
+   * @return Entity set used in the resource path
+   */
+  EdmEntitySet getEntitySet();
+
+  /**
+   * @return Type of the entity set
+   */
+  EdmEntityType getEntityType();
+
+  /**
+   * @return Key predicates if used, otherwise null
+   */
+  List<UriParameter> getKeyPredicates();
+
+  /**
+   * @return Type filter before key predicates if used, otherwise null
+   */
+  EdmType getTypeFilterOnCollection();
+
+  /**
+   * @return Type filter behind key predicates if used, otherwise null
+   */
+  EdmType getTypeFilterOnEntry();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceFunction.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceFunction.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceFunction.java
new file mode 100644
index 0000000..a4da5ee
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceFunction.java
@@ -0,0 +1,66 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.EdmFunction;
+import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmType;
+
+/**
+ * Used to describe an function import or bound function used within an resource path
+ * For example: http://.../serviceroot/functionImport(P1=1,P2='A')
+ */
+public interface UriResourceFunction extends UriResourcePartTyped {
+
+  /**
+   * @return Function used in the resource path
+   */
+  EdmFunction getFunction();
+
+  /**
+   * Convenience method which returns the {@link EdmFunctionImport} which was used in
+   * the resource path to define the {@link EdmFunction}.
+   * @return
+   */
+  EdmFunctionImport getFunctionImport();
+
+  /**
+   * @return Key predicates if used, otherwise null
+   */
+  List<UriParameter> getKeyPredicates();
+
+  
+  /**
+   * @return List of function parameters
+   */
+  List<UriParameter> getParameters();
+
+  /**
+   * @return Type filter before key predicates if used, otherwise null
+   */
+  EdmType getTypeFilterOnCollection();
+
+  /**
+   * @return Type filter behind key predicates if used, otherwise null
+   */
+  EdmType getTypeFilterOnEntry();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceIt.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceIt.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceIt.java
new file mode 100644
index 0000000..8854f8c
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceIt.java
@@ -0,0 +1,38 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.commons.api.edm.EdmType;
+
+/**
+ * Class indicating the $it reference. $it may be used within expression to
+ * refer to the last EDM object referenced in the resource path. 
+ */
+public interface UriResourceIt extends UriResourcePartTyped {
+
+  /**
+   * @return Type filter if $it refers to a collection
+   */
+  EdmType getTypeFilterOnCollection();
+
+  /**
+   * @return Type filter if $it refers to a single entry
+   */
+  EdmType getTypeFilterOnEntry();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceKind.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceKind.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceKind.java
new file mode 100644
index 0000000..6cecce7
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceKind.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.server.api.uri;
+
+/**
+ * Defining the various resource part types
+ */
+public enum UriResourceKind {
+  
+  /**
+   * Class: {@link UriResourceAction}<br>
+   * URI:   http://.../serviceroot/action() 
+   */
+  action, 
+  
+  /**
+   * Class: {@link UriResourceComplexProperty}<br>
+   * URI:   http://.../serviceroot/entityset(1)/complexproperty() 
+   */
+  complexProperty,
+  
+  /**
+   * Class: {@link UriResourceCount}<br>
+   * URI:   http://.../serviceroot/entityset/$count 
+   */
+  count, 
+  
+  /**
+   * Class: {@link UriResourceEntitySet}<br>
+   * URI:   http://.../serviceroot/entityset 
+   */
+  entitySet, 
+  
+  /**
+   * Class: {@link UriResourceFunction}<br>
+   * URI:   http://.../serviceroot/functionimport(P1=1,P2='a') 
+   */
+  function,
+  
+  /**
+   * Class: {@link UriResourceIt}<br>
+   * URI:   http://.../serviceroot/entityset?$filter=$it/property 
+   */
+  it,
+  
+  /**
+   * Class: {@link UriResourceLambdaAll}<br>
+   * URI:   http://.../serviceroot/entityset/all(...) 
+   */
+  lambdaAll,
+  
+  /**
+   * Class: {@link UriResourceLambdaAny}<br>
+   * URI:   http://.../serviceroot/entityset/any(...) 
+   */
+  lambdaAny,
+  
+  /**
+   * Class: {@link UriResourceLambdaVariable}<br>
+   * URI:   http://.../serviceroot/entityset/listofstring/any(d: 'string' eq d) 
+   */
+  lambdaVariable,
+  
+  /**
+   * Class: {@link UriResourceNavigation}<br>
+   * URI:   http://.../serviceroot/entityset(1)/navProperty 
+   */
+  navigationProperty,
+  
+  /**
+   * Class: {@link UriResourceRef}<br>
+   * URI:   http://.../serviceroot/entityset/$ref 
+   */
+  ref,
+  
+  /**
+   * Class: {@link UriResourceRoot}<br>
+   * URI:   http://.../serviceroot/entityset(1)?$filter=property eq $root/singleton/configstring 
+   */
+  root,
+    
+  /**
+   * Class: {@link UriResourceProperty}<br>
+   * URI:   http://.../serviceroot/entityset(1)/property 
+   */
+  primitiveProperty,
+  
+  /**
+   * Class: {@link UriResourceSingleton}<br>
+   * URI:   http://.../serviceroot/singleton 
+   */
+  singleton,
+  
+  /**
+   * Class: {@link UriResourceValue}<br>
+   * URI:   http://.../serviceroot/entityset(1)/property/$value
+   */
+  value,
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAll.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAll.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAll.java
new file mode 100644
index 0000000..6fa218d
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAll.java
@@ -0,0 +1,39 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.server.api.uri.queryoption.expression.Expression;
+
+/**
+ * Used to describe an all lambda expression used within an resource path
+ * For example: http://.../serviceroot/entityset/all(...)
+ */
+public interface UriResourceLambdaAll extends UriResourcePartTyped {
+
+  /**
+   * @return Name of the lambda variable
+   */
+  public String getLambdaVariable();
+
+  /**
+   * @return Lambda expression
+   */
+  public Expression getExpression();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAny.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAny.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAny.java
new file mode 100644
index 0000000..57b127b
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaAny.java
@@ -0,0 +1,39 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.server.api.uri.queryoption.expression.Expression;
+
+/**
+ * Used to describe an any lambda expression used within an resource path
+ * For example: http://.../serviceroot/entityset/any(...)
+ */
+public interface UriResourceLambdaAny extends UriResourcePartTyped {
+
+  /**
+   * @return Name of the lambda variable
+   */
+  public String getLamdaVariable();
+
+  /**
+   * @return Lambda expression
+   */
+  public Expression getExpression();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaVariable.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaVariable.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaVariable.java
new file mode 100644
index 0000000..b846010
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceLambdaVariable.java
@@ -0,0 +1,33 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Used to describe an lambda variable used within an resource path
+ * For example: http://.../serviceroot/entityset/listofstring/any(d: 'string' eq d)
+ */
+public interface UriResourceLambdaVariable extends UriResourcePartTyped {
+
+  
+  /**
+   * @return Name of the lambda variable
+   */
+  public String getVariableName();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceNavigation.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceNavigation.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceNavigation.java
new file mode 100644
index 0000000..16f8786
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceNavigation.java
@@ -0,0 +1,51 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.commons.api.edm.EdmType;
+
+/**
+ * Used to describe an navigation property used within an resource path
+ * For example: http://.../serviceroot/entityset(1)/navProperty
+ */
+public interface UriResourceNavigation extends UriResourcePartTyped {
+  
+  /**
+   * @return Navigation property
+   */
+  EdmNavigationProperty getProperty();
+
+  /**
+   * @return Key predicates if used, otherwise null
+   */
+  List<UriParameter> getKeyPredicates();
+
+  /**
+   * @return Type filter before key predicates if used, otherwise null
+   */
+  EdmType getTypeFilterOnCollection();
+
+  /**
+   * @return Type filter behind key predicates if used, otherwise null
+   */
+  EdmType getTypeFilterOnEntry();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePartTyped.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePartTyped.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePartTyped.java
new file mode 100644
index 0000000..4652817
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePartTyped.java
@@ -0,0 +1,43 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.commons.api.edm.EdmType;
+
+/**
+ * Used to describe an typed resource part (super interface)
+ */
+public interface UriResourcePartTyped extends UriResource {
+
+  /**
+   * @return Type of the resource part
+   */
+  EdmType getType();
+
+  /**
+   * @return True if the resource part is a collection, otherwise false
+   */
+  boolean isCollection();
+
+  /**
+   * @return String representation of the type
+   */
+  String toString(boolean includeFilters);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePrimitiveProperty.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePrimitiveProperty.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePrimitiveProperty.java
new file mode 100644
index 0000000..7f4265c
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourcePrimitiveProperty.java
@@ -0,0 +1,27 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Used to describe an primitive property used within an resource path
+ * For example: http://.../serviceroot/entityset(1)/property
+ */
+public interface UriResourcePrimitiveProperty extends UriResourceProperty {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceProperty.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceProperty.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceProperty.java
new file mode 100644
index 0000000..72af9cf
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceProperty.java
@@ -0,0 +1,33 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.commons.api.edm.EdmProperty;
+
+/**
+ * Used to describe an resource part which is an property (super interface)
+ */
+public interface UriResourceProperty extends UriResourcePartTyped {
+
+  /**
+   * @return Property used in the resource path
+   */
+  EdmProperty getProperty();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRef.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRef.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRef.java
new file mode 100644
index 0000000..d5af947
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRef.java
@@ -0,0 +1,28 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+
+/**
+ * Used to describe an $ref used within an resource path
+ * For example: http://.../serviceroot/entityset/$ref
+ */
+public interface UriResourceRef extends UriResource {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRoot.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRoot.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRoot.java
new file mode 100644
index 0000000..ebd3e47
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceRoot.java
@@ -0,0 +1,28 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Class indicating the $root reference. $root may be used within expressions to
+ * refer to the current OData service
+ * For example: http://.../serviceroot/entityset(1)?$filter=property eq $root/singleton/configstring 
+ */
+public interface UriResourceRoot extends UriResource {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceSingleton.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceSingleton.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceSingleton.java
new file mode 100644
index 0000000..b523962
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceSingleton.java
@@ -0,0 +1,46 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+import org.apache.olingo.commons.api.edm.EdmEntityType;
+import org.apache.olingo.commons.api.edm.EdmSingleton;
+
+/**
+ * Used to describe an entity set used within an resource path
+ * For example: http://.../serviceroot/singleton
+ */
+public interface UriResourceSingleton extends UriResourcePartTyped {
+
+  /**
+   * @return Singleton used in the resource path
+   */
+  EdmSingleton getSingleton();
+
+  /**
+   * @return Type of the Singleton
+   */
+  EdmEntityType getEntityType();
+
+  
+  /**
+   * @return Type filter
+   */
+  EdmEntityType getEntityTypeFilter();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceValue.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceValue.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceValue.java
new file mode 100644
index 0000000..aa92dfd
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/UriResourceValue.java
@@ -0,0 +1,27 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri;
+
+/**
+ * Used to describe an $value used within an resource path
+ * For example: http://.../serviceroot/entityset(1)/property/$value
+ */
+public interface UriResourceValue extends UriResource {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/AliasQueryOption.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/AliasQueryOption.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/AliasQueryOption.java
new file mode 100644
index 0000000..24fb1f2
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/AliasQueryOption.java
@@ -0,0 +1,27 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri.queryoption;
+
+import org.apache.olingo.server.api.uri.queryoption.expression.Expression;
+
+public interface AliasQueryOption extends QueryOption {
+
+  public Expression getValue();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CountOption.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CountOption.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CountOption.java
new file mode 100644
index 0000000..7ffef9e
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CountOption.java
@@ -0,0 +1,25 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri.queryoption;
+
+public interface CountOption extends SystemQueryOption {
+
+  boolean getValue();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/897db8ef/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CustomQueryOption.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CustomQueryOption.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CustomQueryOption.java
new file mode 100644
index 0000000..0d2d7fc
--- /dev/null
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/CustomQueryOption.java
@@ -0,0 +1,23 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.api.uri.queryoption;
+
+public interface CustomQueryOption extends QueryOption {
+
+}