You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2013/12/06 15:41:01 UTC

git commit: [OLINGO-62] Further implementation

Updated Branches:
  refs/heads/master 2e622040d -> 7b1726a2f


[OLINGO-62] Further implementation


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/7b1726a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/7b1726a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/7b1726a2

Branch: refs/heads/master
Commit: 7b1726a2f945e4083e13d745daba12fddd508a98
Parents: 2e62204
Author: Christian Amend <ch...@apache.org>
Authored: Fri Dec 6 15:39:56 2013 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Dec 6 15:39:56 2013 +0100

----------------------------------------------------------------------
 .../core/edm/provider/EdmBindingTargetImpl.java |  9 +++--
 .../core/edm/provider/EdmComplexTypeImpl.java   |  2 +-
 .../edm/provider/EdmEntityContainerImpl.java    |  1 -
 .../core/edm/provider/EdmEntityTypeImpl.java    |  3 +-
 .../core/edm/provider/EdmMemberImpl.java        | 38 ++++++++++++++++++++
 .../core/edm/provider/EdmOperationImpl.java     | 37 ++++++++++++++++---
 .../core/edm/provider/EdmParameterImpl.java     |  4 +--
 .../core/edm/provider/EdmReturnTypeImpl.java    |  2 +-
 8 files changed, 83 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java
index 0bef855..d9136e0 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java
@@ -50,13 +50,16 @@ public abstract class EdmBindingTargetImpl extends EdmNamedImpl implements EdmBi
           Target providerTarget = binding.getTarget();
           EdmEntityContainer entityContainer = edm.getEntityContainer(providerTarget.getEntityContainer());
           if (entityContainer == null) {
-            throw new EdmException("Can´t find entity container with name: " + providerTarget.getEntityContainer());
+            throw new EdmException("Cant find entity container with name: " + providerTarget.getEntityContainer());
           }
-          bindingTarget = entityContainer.getEntitySet(providerTarget.getTargetName());
+          String targetName = providerTarget.getTargetName();
+          bindingTarget = entityContainer.getEntitySet(targetName);
           if (bindingTarget == null) {
-            bindingTarget = entityContainer.getSingleton(providerTarget.getTargetName());
+            bindingTarget = entityContainer.getSingleton(targetName);
             if (bindingTarget != null) {
               break;
+            }else{
+              throw new EdmException("Cant find target with name: " + targetName);
             }
           } else {
             break;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
index 258cb83..a6ad4ce 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
@@ -42,7 +42,7 @@ public class EdmComplexTypeImpl extends EdmStructuralTypeImpl implements EdmComp
     if (baseTypeName != null) {
       baseType = edm.getComplexType(baseTypeName);
       if (baseType == null) {
-        throw new EdmException("Can�t find base type with name: " + baseTypeName + " for complex type: " + getName());
+        throw new EdmException("Cant find base type with name: " + baseTypeName + " for complex type: " + getName());
       }
     }
     return baseType;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
index 2777a8b..e9759c9 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
@@ -26,7 +26,6 @@ import org.apache.olingo.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.commons.api.edm.EdmEntitySet;
 import org.apache.olingo.commons.api.edm.EdmException;
 import org.apache.olingo.commons.api.edm.EdmFunctionImport;
-import org.apache.olingo.commons.api.edm.EdmNamed;
 import org.apache.olingo.commons.api.edm.EdmSingleton;
 import org.apache.olingo.commons.api.edm.helper.EntityContainerInfo;
 import org.apache.olingo.commons.api.edm.helper.FullQualifiedName;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
index 191c0d3..bed0be9 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
@@ -86,6 +86,7 @@ public class EdmEntityTypeImpl extends EdmStructuralTypeImpl implements EdmEntit
     if (baseType != null) {
       return entityBaseType.getKeyPropertyRefs();
     } else {
+      //TODO: Cache
       return new ArrayList<EdmKeyPropertyRef>(keyPropertyRefs.values());
     }
   }
@@ -105,7 +106,7 @@ public class EdmEntityTypeImpl extends EdmStructuralTypeImpl implements EdmEntit
     if (baseTypeName != null) {
       baseType = edm.getEntityType(baseTypeName);
       if (baseType == null) {
-        throw new EdmException("Can�t find base type with name: " + baseTypeName + " for entity type: " + getName());
+        throw new EdmException("Cant find base type with name: " + baseTypeName + " for entity type: " + getName());
       }
     }
     return baseType;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java
new file mode 100644
index 0000000..fff0200
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.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.commons.core.edm.provider;
+
+import org.apache.olingo.commons.api.edm.EdmMember;
+import org.apache.olingo.commons.api.edm.provider.EnumMember;
+
+public class EdmMemberImpl extends EdmNamedImpl implements EdmMember {
+
+  private final EnumMember member;
+
+  public EdmMemberImpl(EdmProviderImpl edm, EnumMember member) {
+    super(edm, member.getName());
+    this.member = member;
+  }
+
+  @Override
+  public String getValue() {
+    return member.getValue();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java
index ea3cd57..2131074 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java
@@ -18,7 +18,10 @@
  ******************************************************************************/
 package org.apache.olingo.commons.core.edm.provider;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.olingo.commons.api.edm.EdmEntitySet;
 import org.apache.olingo.commons.api.edm.EdmOperation;
@@ -27,37 +30,63 @@ import org.apache.olingo.commons.api.edm.EdmReturnType;
 import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
 import org.apache.olingo.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.provider.Operation;
+import org.apache.olingo.commons.api.edm.provider.Parameter;
 
 public class EdmOperationImpl extends EdmTypeImpl implements EdmOperation {
 
+  private final Map<String, EdmParameter> parameters = new HashMap<String, EdmParameter>();
+  private final Operation operation;
+  private EdmReturnType returnType;
+  private List<String> parameterNames;
+
   public EdmOperationImpl(final EdmProviderImpl edm, final FullQualifiedName name, final Operation operation,
       final EdmTypeKind kind) {
     super(edm, name, kind);
+    this.operation = operation;
+    List<Parameter> providerParameters = operation.getParameters();
+    if (providerParameters != null) {
+      for (Parameter parameter : providerParameters) {
+        parameters.put(parameter.getName(), new EdmParameterImpl(edm, parameter));
+      }
+    }
   }
 
   @Override
   public EdmParameter getParameter(final String name) {
-    return null;
+    return parameters.get(name);
   }
 
   @Override
   public List<String> getParameterNames() {
-    return null;
+    if (parameterNames == null) {
+      parameterNames = new ArrayList<String>();
+      List<Parameter> providerParameters = operation.getParameters();
+      if (providerParameters != null) {
+        for (Parameter parameter : providerParameters) {
+          parameterNames.add(parameter.getName());
+        }
+      }
+    }
+    return parameterNames;
   }
 
   @Override
   public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet, final String path) {
+    //TODO: What here?
     return null;
   }
 
   @Override
   public EdmReturnType getReturnType() {
-    return null;
+    if (returnType == null) {
+      returnType = new EdmReturnTypeImpl(edm, operation.getReturnType());
+    }
+    return returnType;
   }
 
   @Override
   public boolean isBound() {
-    return false;
+    return operation.isBound();
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
index bd94aaa..496e671 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
@@ -46,7 +46,7 @@ public class EdmParameterImpl extends EdmElementImpl implements EdmParameter {
         if (kind != null) {
           typeImpl = kind.getEdmPrimitiveTypeInstance();
         } else {
-          throw new EdmException("Can�t find type with name: " + typeName);
+          throw new EdmException("Cant find type with name: " + typeName);
         }
       } else {
         typeImpl = edm.getComplexType(typeName);
@@ -57,7 +57,7 @@ public class EdmParameterImpl extends EdmElementImpl implements EdmParameter {
             if (typeImpl == null) {
               typeImpl = edm.getTypeDefinition(typeName);
               if (typeImpl == null) {
-                throw new EdmException("Can�t find type with name: " + typeName);
+                throw new EdmException("Cant find type with name: " + typeName);
               }
             }
           }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/7b1726a2/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReturnTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReturnTypeImpl.java
index 2308a6e..8b6154c 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReturnTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReturnTypeImpl.java
@@ -58,7 +58,7 @@ public class EdmReturnTypeImpl implements EdmReturnType {
             if (typeImpl == null) {
               typeImpl = edm.getTypeDefinition(typeName);
               if (typeImpl == null) {
-                throw new EdmException("Can�t find type with name: " + typeName);
+                throw new EdmException("Cant find type with name: " + typeName);
               }
             }
           }