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 0bef85569..d9136e067 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; 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 258cb834b..a6ad4ceeb 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; 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 2777a8b9a..e9759c973 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; 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 191c0d343..bed0be9d0 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(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; 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 000000000..fff0200d9 --- /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(); + } + +} 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 ea3cd5725..2131074ea 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 parameters = new HashMap(); + private final Operation operation; + private EdmReturnType returnType; + private List parameterNames; + public EdmOperationImpl(final EdmProviderImpl edm, final FullQualifiedName name, final Operation operation, final EdmTypeKind kind) { super(edm, name, kind); + this.operation = operation; + List 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 getParameterNames() { - return null; + if (parameterNames == null) { + parameterNames = new ArrayList(); + List 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(); } } 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 bd94aaa76..496e67108 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); } } } 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 2308a6e83..8b6154c25 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); } } }