You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/04/07 13:58:14 UTC
[1/2] git commit: [OLINGO-202] Required changes provided
Repository: olingo-odata4
Updated Branches:
refs/heads/master 05b26700a -> 855a586b3
[OLINGO-202] Required changes provided
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/081df2aa
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/081df2aa
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/081df2aa
Branch: refs/heads/master
Commit: 081df2aa70b348e43a90ba40614745c0f9de7f89
Parents: 05b2670
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Apr 7 13:21:17 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Apr 7 13:21:17 2014 +0200
----------------------------------------------------------------------
.../client/core/edm/EdmActionImportImpl.java | 19 +-
.../olingo/client/core/edm/EdmClientImpl.java | 35 +++-
.../client/core/edm/EdmFunctionImportImpl.java | 25 +--
.../core/edm/v3/EdmActionImportProxy.java | 20 +-
.../core/edm/v3/EdmFunctionImportProxy.java | 27 +--
.../client/core/it/v3/InvokeTestITCase.java | 12 +-
.../olingo/client/core/v3/MetadataTest.java | 8 +-
.../olingo/client/core/v4/MetadataTest.java | 7 +-
.../org/apache/olingo/commons/api/edm/Edm.java | 185 +++++++++++--------
.../olingo/commons/api/edm/EdmActionImport.java | 9 -
.../commons/api/edm/EdmFunctionImport.java | 16 +-
.../olingo/commons/core/edm/AbstractEdm.java | 180 +++++++++++-------
.../commons/core/edm/EdmImplCachingTest.java | 56 ++++--
.../commons/core/edm/EdmImplCallCreateTest.java | 27 ++-
.../core/edm/provider/EdmActionImportImpl.java | 10 +-
.../edm/provider/EdmFunctionImportImpl.java | 19 +-
.../core/edm/provider/EdmProviderImpl.java | 49 +++--
.../core/uri/parser/UriParseTreeVisitor.java | 10 +-
.../edm/provider/EdmActionImportImplTest.java | 2 +-
.../EdmProviderImplOverloadingTest.java | 30 +--
.../core/edm/provider/EdmProviderImplTest.java | 16 +-
.../core/edm/provider/EdmSchemaImplTest.java | 4 +-
.../server/core/uri/UriResourceImplTest.java | 2 +-
.../queryoption/expression/ExpressionTest.java | 17 +-
24 files changed, 457 insertions(+), 328 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
index 5941824..15a9604 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
@@ -30,6 +30,8 @@ public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmAc
private final ActionImport actionImport;
+ private FullQualifiedName actionFQN;
+
public EdmActionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
final ActionImport actionImport) {
@@ -37,18 +39,17 @@ public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmAc
this.actionImport = actionImport;
}
- @Override
- public EdmAction getUnboundAction() {
- return getBoundAction(null, null);
+ public FullQualifiedName getActionFQN() {
+ if (actionFQN == null) {
+ actionFQN = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(actionImport.getAction()).
+ setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName();
+ }
+ return actionFQN;
}
@Override
- public EdmAction getBoundAction(
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
-
- return edm.getAction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(actionImport.getAction()).
- setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(),
- bindingParameterTypeName, isBindingParameterCollection);
+ public EdmAction getUnboundAction() {
+ return edm.getUnboundAction(getActionFQN());
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
index 52fce98..21a1dbf 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
@@ -211,6 +211,37 @@ public class EdmClientImpl extends AbstractEdm {
}
@Override
+ protected List<EdmFunction> createUnboundFunctions(final FullQualifiedName functionName) {
+ final List<EdmFunction> result = new ArrayList<EdmFunction>();
+
+ final Schema schema = xmlSchemaByNamespace.get(functionName.getNamespace());
+ if (schema instanceof org.apache.olingo.client.api.edm.xml.v4.Schema) {
+ final List<Function> functions = ((org.apache.olingo.client.api.edm.xml.v4.Schema) schema).
+ getFunctions(functionName.getName());
+ for (final Iterator<Function> itor = functions.iterator(); itor.hasNext();) {
+ final Function function = itor.next();
+ if (!function.isBound()) {
+ result.add(EdmFunctionImpl.getInstance(this, functionName, function));
+ }
+ }
+ } else {
+ for (EntityContainer entityContainer : schema.getEntityContainers()) {
+ @SuppressWarnings("unchecked")
+ final List<FunctionImport> functionImports =
+ (List<FunctionImport>) entityContainer.getFunctionImports(functionName.getName());
+ for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext();) {
+ final FunctionImport functionImport = itor.next();
+ if (FunctionImportUtils.canProxyFunction(functionImport) && !functionImport.isBindable()) {
+ result.add(EdmFunctionProxy.getInstance(this, functionName, functionImport));
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ @Override
protected EdmFunction createUnboundFunction(final FullQualifiedName functionName, final List<String> parameterNames) {
EdmFunction result = null;
@@ -235,8 +266,8 @@ public class EdmClientImpl extends AbstractEdm {
} else {
for (EntityContainer entityContainer : schema.getEntityContainers()) {
@SuppressWarnings("unchecked")
- final List<FunctionImport> functionImports = (List<FunctionImport>) entityContainer.
- getFunctionImports(functionName.getName());
+ final List<FunctionImport> functionImports =
+ (List<FunctionImport>) entityContainer.getFunctionImports(functionName.getName());
boolean found = false;
for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
final FunctionImport functionImport = itor.next();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
index 51ea4e6..5c2575e 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
@@ -32,6 +32,8 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
private final FunctionImport functionImport;
+ private FullQualifiedName functionFQN;
+
public EdmFunctionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
final FunctionImport functionImport) {
@@ -40,17 +42,22 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
}
@Override
- public EdmFunction getUnboundFunction(final List<String> parameterNames) {
- return getBoundFunction(parameterNames, null, null);
+ public FullQualifiedName getFunctionFqn() {
+ if (functionFQN == null) {
+ functionFQN = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getFunction()).
+ setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName();
+ }
+ return functionFQN;
}
@Override
- public EdmFunction getBoundFunction(final List<String> parameterNames,
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+ public List<EdmFunction> getUnboundFunctions() {
+ return edm.getUnboundFunctions(getFunctionFqn());
+ }
- return edm.getFunction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getFunction()).
- setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(),
- bindingParameterTypeName, isBindingParameterCollection, parameterNames);
+ @Override
+ public EdmFunction getUnboundFunction(final List<String> parameterNames) {
+ return edm.getUnboundFunction(getFunctionFqn(), parameterNames);
}
@Override
@@ -58,8 +65,4 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
return functionImport.isIncludeInServiceDocument();
}
- @Override
- public FullQualifiedName getFunctionFqn() {
- return new FullQualifiedName(functionImport.getFunction());
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
index e39dd23..cb9ae27 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
@@ -31,6 +31,8 @@ public class EdmActionImportProxy extends EdmOperationImportImpl implements EdmA
private final FunctionImport functionImport;
+ private FullQualifiedName actionFQN;
+
public EdmActionImportProxy(final Edm edm, final EdmEntityContainer container, final String name,
final FunctionImport functionImport) {
@@ -38,19 +40,17 @@ public class EdmActionImportProxy extends EdmOperationImportImpl implements EdmA
this.functionImport = functionImport;
}
- @Override
- public EdmAction getUnboundAction() {
- return edm.getAction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getName()).
- setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(), null, null);
+ public FullQualifiedName getActionFQN() {
+ if (actionFQN == null) {
+ actionFQN = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getName()).
+ setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName();
+ }
+ return actionFQN;
}
@Override
- public EdmAction getBoundAction(
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
-
- return edm.getAction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getName()).
- setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(),
- bindingParameterTypeName, isBindingParameterCollection);
+ public EdmAction getUnboundAction() {
+ return edm.getUnboundAction(getActionFQN());
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
index b1dcec8..b64c9bb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
@@ -22,7 +22,6 @@ import java.util.List;
import org.apache.olingo.client.api.edm.xml.v3.FunctionImport;
import org.apache.olingo.client.core.edm.EdmOperationImportImpl;
-import org.apache.olingo.commons.core.edm.EdmTypeInfo;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmFunction;
@@ -33,6 +32,8 @@ public class EdmFunctionImportProxy extends EdmOperationImportImpl implements Ed
private final FunctionImport functionImport;
+ private FullQualifiedName functionFQN;
+
public EdmFunctionImportProxy(final Edm edm, final EdmEntityContainer container, final String name,
final FunctionImport functionImport) {
@@ -41,27 +42,27 @@ public class EdmFunctionImportProxy extends EdmOperationImportImpl implements Ed
}
@Override
- public EdmFunction getUnboundFunction(final List<String> parameterNames) {
- return getBoundFunction(parameterNames, null, null);
+ public FullQualifiedName getFunctionFqn() {
+ if (functionFQN == null) {
+ functionFQN = new FullQualifiedName(container.getNamespace(), getName());
+ }
+ return functionFQN;
}
@Override
- public EdmFunction getBoundFunction(final List<String> parameterNames,
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+ public List<EdmFunction> getUnboundFunctions() {
+ return edm.getUnboundFunctions(getFunctionFqn());
+ }
- return edm.getFunction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getName()).
- setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(),
- bindingParameterTypeName, isBindingParameterCollection, parameterNames);
+ @Override
+ public EdmFunction getUnboundFunction(final List<String> parameterNames) {
+ return edm.getUnboundFunction(getFunctionFqn(), parameterNames);
}
@Override
public boolean isIncludeInServiceDocument() {
- //V3 states that all function imports are included in the service document
+ // V3 states that all function imports are included in the service document
return true;
}
- @Override
- public FullQualifiedName getFunctionFqn() {
- return new FullQualifiedName(container.getNamespace(), getName());
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
index 48410cc..1cc4e14 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
@@ -48,13 +48,13 @@ import org.apache.olingo.commons.api.domain.v3.ODataEntitySet;
import org.apache.olingo.commons.api.domain.v3.ODataProperty;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmAction;
-import org.apache.olingo.commons.api.edm.EdmActionImport;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmFunction;
import org.apache.olingo.commons.api.edm.EdmFunctionImport;
import org.apache.olingo.commons.api.edm.EdmParameter;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.format.ODataPubFormat;
import org.apache.olingo.commons.core.edm.EdmTypeInfo;
import org.junit.Test;
@@ -244,10 +244,10 @@ public class InvokeTestITCase extends AbstractTestITCase {
assertNotNull(edm);
final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
- final EdmActionImport actImp = container.getActionImport(operation.getTitle());
final EdmTypeInfo createdTypeInfo =
new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(created.getName()).build();
- final EdmAction action = actImp.getBoundAction(
+ final EdmAction action = edm.getBoundAction(
+ new FullQualifiedName(container.getNamespace(), operation.getTitle()),
createdTypeInfo.getFullQualifiedName(), createdTypeInfo.isCollection());
final ODataInvokeRequest<ODataNoContent> req = getClient().getInvokeRequestFactory().
@@ -294,11 +294,11 @@ public class InvokeTestITCase extends AbstractTestITCase {
assertNotNull(edm);
final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
- final EdmActionImport actImp = container.getActionImport("IncreaseSalaries");
final EdmTypeInfo employeesTypeInfo = new EdmTypeInfo.Builder().setEdm(edm).
setTypeExpression("Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Employee)").build();
- final EdmAction action = actImp.getBoundAction(
+ final EdmAction action = edm.getBoundAction(
+ new FullQualifiedName(container.getNamespace(), "IncreaseSalaries"),
employeesTypeInfo.getFullQualifiedName(), employeesTypeInfo.isCollection());
final EdmParameter param = action.getParameter(action.getParameterNames().get(1));
@@ -308,7 +308,7 @@ public class InvokeTestITCase extends AbstractTestITCase {
build();
final ODataInvokeRequest<ODataNoContent> req = getClient().getInvokeRequestFactory().getInvokeRequest(
- builder.appendOperationCallSegment(actImp.getName()).build(), action,
+ builder.appendOperationCallSegment(action.getName()).build(), action,
Collections.<String, ODataValue>singletonMap(param.getName(), paramValue));
final ODataInvokeResponse<ODataNoContent> res = req.execute();
assertNotNull(res);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
index d41a370..ac4fffe 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
@@ -189,16 +189,16 @@ public class MetadataTest extends AbstractTest {
final EdmEntityType computer = metadata.getEntityType(new FullQualifiedName(container.getNamespace(), "Computer"));
assertNotNull(computer);
- final EdmFunction getComputer = metadata.getFunction(
+ final EdmFunction getComputer = metadata.getBoundFunction(
new FullQualifiedName(container.getNamespace(), "GetComputer"),
new FullQualifiedName(container.getNamespace(), computer.getName()),
- Boolean.FALSE, Arrays.asList(new String[] {"computer"}));
+ Boolean.FALSE, Arrays.asList("computer"));
assertNotNull(getComputer);
assertEquals(computer, getComputer.getParameter("computer").getType());
assertEquals(computer, getComputer.getReturnType().getType());
- final EdmAction resetDataSource2 = metadata.getAction(
- new FullQualifiedName(container.getNamespace(), "ResetDataSource"), null, Boolean.FALSE);
+ final EdmAction resetDataSource2 = metadata.getUnboundAction(
+ new FullQualifiedName(container.getNamespace(), "ResetDataSource"));
assertNotNull(resetDataSource2);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
index c90fae5..56de140 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
@@ -100,7 +100,7 @@ public class MetadataTest extends AbstractTest {
assertEquals(folder, user.getNavigationProperty("Inbox").getType());
// 4. Action
- final EdmAction move = edm.getAction(
+ final EdmAction move = edm.getBoundAction(
new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "Move"),
new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "Folder"),
false);
@@ -209,9 +209,8 @@ public class MetadataTest extends AbstractTest {
assertNotNull(fi);
assertEquals(demoService.getEntitySet("Products"), fi.getReturnedEntitySet());
- final EdmFunction function = edm.getFunction(
- new FullQualifiedName(metadata.getSchema(0).getNamespace(), "ProductsByRating"),
- null, Boolean.FALSE, null);
+ final EdmFunction function = edm.getUnboundFunction(
+ new FullQualifiedName(metadata.getSchema(0).getNamespace(), "ProductsByRating"), null);
assertNotNull(function);
assertEquals(function.getName(), fi.getUnboundFunction(null).getName());
assertEquals(function.getNamespace(), fi.getUnboundFunction(null).getNamespace());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
index 48230d6..fa417f1 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
@@ -27,92 +27,117 @@ import java.util.List;
*/
public interface Edm {
- /**
- * This method <b>DOES NOT</b> support lazy loading. All schemas are loaded completely!
- *
- * @return all schemas defined for this EDM
- */
- List<EdmSchema> getSchemas();
+ /**
+ * This method <b>DOES NOT</b> support lazy loading. All schemas are loaded completely!
+ *
+ * @return all schemas defined for this EDM
+ */
+ List<EdmSchema> getSchemas();
- /**
- * Get entity container by full qualified name.
- * <br/>
- * See {@link EdmEntityContainer} for more information.
- *
- * @param name
- * @return {@link EdmEntityContainer}
- */
- EdmEntityContainer getEntityContainer(FullQualifiedName name);
+ /**
+ * Get entity container by full qualified name.
+ * <br/>
+ * See {@link EdmEntityContainer} for more information.
+ *
+ * @param name
+ * @return {@link EdmEntityContainer}
+ */
+ EdmEntityContainer getEntityContainer(FullQualifiedName name);
- /**
- * Get enum type by full qualified name.
- * <br/>
- * See {@link EdmEnumType} for more information
- *
- * @param name
- * @return {@link EdmEnumType}
- */
- EdmEnumType getEnumType(FullQualifiedName name);
+ /**
+ * Get enum type by full qualified name.
+ * <br/>
+ * See {@link EdmEnumType} for more information
+ *
+ * @param name
+ * @return {@link EdmEnumType}
+ */
+ EdmEnumType getEnumType(FullQualifiedName name);
- /**
- * Get a type definition by full qualified name.
- * <br/>
- * See {@link EdmTypeDefinition} for more information
- *
- * @param name
- * @return {@link EdmTypeDefinition}
- */
- EdmTypeDefinition getTypeDefinition(FullQualifiedName name);
+ /**
+ * Get a type definition by full qualified name.
+ * <br/>
+ * See {@link EdmTypeDefinition} for more information
+ *
+ * @param name
+ * @return {@link EdmTypeDefinition}
+ */
+ EdmTypeDefinition getTypeDefinition(FullQualifiedName name);
- /**
- * Get entity type by full qualified name.
- * <br/>
- * See {@link EdmEntityType} for more information.
- *
- * @param name
- * @return {@link EdmEntityType}
- */
- EdmEntityType getEntityType(FullQualifiedName name);
+ /**
+ * Get entity type by full qualified name.
+ * <br/>
+ * See {@link EdmEntityType} for more information.
+ *
+ * @param name
+ * @return {@link EdmEntityType}
+ */
+ EdmEntityType getEntityType(FullQualifiedName name);
- /**
- * Get complex type by full qualified name..
- * <br/>
- * See {@link EdmComplexType} for more information.
- *
- * @param name
- * @return {@link EdmComplexType}
- */
- EdmComplexType getComplexType(FullQualifiedName name);
+ /**
+ * Get complex type by full qualified name..
+ * <br/>
+ * See {@link EdmComplexType} for more information.
+ *
+ * @param name
+ * @return {@link EdmComplexType}
+ */
+ EdmComplexType getComplexType(FullQualifiedName name);
- /**
- * Get Action by full qualified name and binding parameter type.
- *
- * @param actionName must not be null
- * @param bindingParameterTypeName may be null if it is an unbound action
- * @param isBindingParameterCollection may be null if it is an unbound action
- * @return {@link EdmAction}
- */
- EdmAction getAction(FullQualifiedName actionName, FullQualifiedName bindingParameterTypeName,
- Boolean isBindingParameterCollection);
+ /**
+ * Get unbound Action by full qualified name.
+ *
+ * @param actionName must not be null
+ * @return {@link EdmAction}
+ */
+ EdmAction getUnboundAction(FullQualifiedName actionName);
- /**
- * Get Function by full qualified name and binding parameter type and binding parameter names.
- *
- * @param functionName
- * @param bindingParameterTypeName may be null if it is an unbound function
- * @param isBindingParameterCollection may be null if it is an unbound function
- * @param parameterNames may be null if it is an unbound function
- * @return {@link EdmFunction}
- */
- EdmFunction getFunction(FullQualifiedName functionName, FullQualifiedName bindingParameterTypeName,
- Boolean isBindingParameterCollection, List<String> parameterNames);
+ /**
+ * Get Action by full qualified name and binding parameter type.
+ *
+ * @param actionName must not be null
+ * @param bindingParameterTypeName must not be null
+ * @param isBindingParameterCollection may be null
+ * @return {@link EdmAction}
+ */
+ EdmAction getBoundAction(FullQualifiedName actionName, FullQualifiedName bindingParameterTypeName,
+ Boolean isBindingParameterCollection);
- /**
- * Get service metadata.
- * <br/>
- * See {@link EdmServiceMetadata} for more information.
- *
- * @return {@link EdmServiceMetadata}
- */
- EdmServiceMetadata getServiceMetadata();
+ /**
+ * Get Function by full qualified name.
+ *
+ * @param functionName must not be null
+ * @return {@link EdmFunction}
+ */
+ List<EdmFunction> getUnboundFunctions(FullQualifiedName functionName);
+
+ /**
+ * Get Function by full qualified name.
+ *
+ * @param functionName must not be null
+ * @param parameterNames may be null: in this case it is considered as empty
+ * @return {@link EdmFunction}
+ */
+ EdmFunction getUnboundFunction(FullQualifiedName functionName, List<String> parameterNames);
+
+ /**
+ * Get Function by full qualified name and binding parameter type and binding parameter names.
+ *
+ * @param functionName must not be null
+ * @param bindingParameterTypeName must not be null
+ * @param isBindingParameterCollection may be null
+ * @param parameterNames may be null: in this case it is considered as empty
+ * @return {@link EdmFunction}
+ */
+ EdmFunction getBoundFunction(FullQualifiedName functionName, FullQualifiedName bindingParameterTypeName,
+ Boolean isBindingParameterCollection, List<String> parameterNames);
+
+ /**
+ * Get service metadata.
+ * <br/>
+ * See {@link EdmServiceMetadata} for more information.
+ *
+ * @return {@link EdmServiceMetadata}
+ */
+ EdmServiceMetadata getServiceMetadata();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
index 39a0db2..b44f365 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
@@ -29,13 +29,4 @@ public interface EdmActionImport extends EdmOperationImport {
* @return unbound action.
*/
EdmAction getUnboundAction();
-
- /**
- * Gets bound action.
- *
- * @param bindingParameterTypeName may be null if it is an unbound function
- * @param isBindingParameterCollection may be null if it is an unbound function
- * @return bound action with given parameter names
- */
- EdmAction getBoundAction(FullQualifiedName bindingParameterTypeName, Boolean isBindingParameterCollection);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
index 815ff8d..e9532a6 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
@@ -26,23 +26,19 @@ import java.util.List;
public interface EdmFunctionImport extends EdmOperationImport {
/**
- * Gets unbound function with given parameter names.
+ * Gets unbound functions.
*
- * @param parameterNames parameter names
- * @return unbound function with given parameter names
+ * @return unbound functions
*/
- EdmFunction getUnboundFunction(List<String> parameterNames);
+ List<EdmFunction> getUnboundFunctions();
/**
- * Gets bound function with given parameter names.
+ * Gets unbound function with given parameter names.
*
* @param parameterNames parameter names
- * @param bindingParameterTypeName may be null if it is an unbound function
- * @param isBindingParameterCollection may be null if it is an unbound function
- * @return bound function with given parameter names
+ * @return unbound function with given parameter names
*/
- EdmFunction getBoundFunction(List<String> parameterNames,
- FullQualifiedName bindingParameterTypeName, Boolean isBindingParameterCollection);
+ EdmFunction getUnboundFunction(List<String> parameterNames);
/**
* @return the Full qualified name for the function as specified in the metadata
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
index 5047192..1367e0e 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
@@ -18,6 +18,7 @@
*/
package org.apache.olingo.commons.core.edm;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -37,12 +38,12 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
public abstract class AbstractEdm implements Edm {
private final Map<FullQualifiedName, EdmEntityContainer> entityContainers =
- new HashMap<FullQualifiedName, EdmEntityContainer>();
+ new HashMap<FullQualifiedName, EdmEntityContainer>();
private final Map<FullQualifiedName, EdmEnumType> enumTypes = new HashMap<FullQualifiedName, EdmEnumType>();
private final Map<FullQualifiedName, EdmTypeDefinition> typeDefinitions =
- new HashMap<FullQualifiedName, EdmTypeDefinition>();
+ new HashMap<FullQualifiedName, EdmTypeDefinition>();
private final Map<FullQualifiedName, EdmEntityType> entityTypes = new HashMap<FullQualifiedName, EdmEntityType>();
@@ -50,7 +51,10 @@ public abstract class AbstractEdm implements Edm {
private final Map<FullQualifiedName, EdmAction> unboundActions = new HashMap<FullQualifiedName, EdmAction>();
- private final Map<FunctionMapKey, EdmFunction> unboundFunctions = new HashMap<FunctionMapKey, EdmFunction>();
+ private final Map<FullQualifiedName, List<EdmFunction>> unboundFunctionsByName =
+ new HashMap<FullQualifiedName, List<EdmFunction>>();
+
+ private final Map<FunctionMapKey, EdmFunction> unboundFunctionsByKey = new HashMap<FunctionMapKey, EdmFunction>();
private final Map<ActionMapKey, EdmAction> boundActions = new HashMap<ActionMapKey, EdmAction>();
@@ -69,26 +73,26 @@ public abstract class AbstractEdm implements Edm {
if (schemas != null) {
aliasToNamespaceInfo = new HashMap<String, String>();
for (EdmSchema schema : schemas) {
- String namespace = schema.getNamespace();
+ final String namespace = schema.getNamespace();
if (schema.getAlias() != null) {
aliasToNamespaceInfo.put(schema.getAlias(), namespace);
}
- List<EdmEnumType> localEnumTypes = schema.getEnumTypes();
+ final List<EdmEnumType> localEnumTypes = schema.getEnumTypes();
if (localEnumTypes != null) {
for (EdmEnumType enumType : localEnumTypes) {
enumTypes.put(new FullQualifiedName(namespace, enumType.getName()), enumType);
}
}
- List<EdmTypeDefinition> localTypeDefinitions = schema.getTypeDefinitions();
+ final List<EdmTypeDefinition> localTypeDefinitions = schema.getTypeDefinitions();
if (localTypeDefinitions != null) {
for (EdmTypeDefinition typeDef : localTypeDefinitions) {
typeDefinitions.put(new FullQualifiedName(namespace, typeDef.getName()), typeDef);
}
}
- List<EdmComplexType> localComplexTypes = schema.getComplexTypes();
+ final List<EdmComplexType> localComplexTypes = schema.getComplexTypes();
if (localComplexTypes != null) {
for (EdmComplexType complexType : localComplexTypes) {
complexTypes.put(new FullQualifiedName(namespace, complexType.getName()), complexType);
@@ -102,39 +106,45 @@ public abstract class AbstractEdm implements Edm {
}
}
- List<EdmAction> localActions = schema.getActions();
+ final List<EdmAction> localActions = schema.getActions();
if (localActions != null) {
for (EdmAction action : localActions) {
+ final FullQualifiedName name = new FullQualifiedName(namespace, action.getName());
if (action.isBound()) {
- ActionMapKey key = new ActionMapKey(new FullQualifiedName(namespace, action.getName()),
- action.getBindingParameterTypeFqn(), action.isBindingParameterTypeCollection());
+ final ActionMapKey key = new ActionMapKey(name,
+ action.getBindingParameterTypeFqn(), action.isBindingParameterTypeCollection());
boundActions.put(key, action);
} else {
- unboundActions.put(new FullQualifiedName(namespace, action.getName()), action);
+ unboundActions.put(name, action);
}
}
}
- List<EdmFunction> localFunctions = schema.getFunctions();
+ final List<EdmFunction> localFunctions = schema.getFunctions();
if (localFunctions != null) {
for (EdmFunction function : localFunctions) {
- FunctionMapKey key =
- new FunctionMapKey(new FullQualifiedName(namespace, function.getName()), function
- .getBindingParameterTypeFqn(), function.isBindingParameterTypeCollection(), function
- .getParameterNames());
+ final FullQualifiedName name = new FullQualifiedName(namespace, function.getName());
+ final FunctionMapKey key = new FunctionMapKey(name,
+ function.getBindingParameterTypeFqn(), function.isBindingParameterTypeCollection(),
+ function.getParameterNames());
if (function.isBound()) {
boundFunctions.put(key, function);
} else {
- unboundFunctions.put(key, function);
+ if (!unboundFunctionsByName.containsKey(name)) {
+ unboundFunctionsByName.put(name, new ArrayList<EdmFunction>());
+ }
+ unboundFunctionsByName.get(name).add(function);
+
+ unboundFunctionsByKey.put(key, function);
}
}
}
-
- EdmEntityContainer entityContainer = schema.getEntityContainer();
- if(entityContainer != null){
+
+ final EdmEntityContainer entityContainer = schema.getEntityContainer();
+ if (entityContainer != null) {
entityContainers.put(new FullQualifiedName(namespace, entityContainer.getName()), entityContainer);
- if(!entityContainers.containsKey(null)){
+ if (!entityContainers.containsKey(null)) {
entityContainers.put(null, entityContainer);
}
}
@@ -213,29 +223,30 @@ public abstract class AbstractEdm implements Edm {
}
@Override
- public EdmAction getAction(final FullQualifiedName actionName, final FullQualifiedName bindingParameterTypeName,
- final Boolean isBindingParameterCollection) {
+ public EdmAction getUnboundAction(final FullQualifiedName actionName) {
+ EdmAction action = unboundActions.get(actionName);
+ if (action == null) {
+ action = createUnboundAction(resolvePossibleAlias(actionName));
+ if (action != null) {
+ unboundActions.put(actionName, action);
+ }
+ }
+
+ return action;
+ }
- EdmAction action = null;
+ @Override
+ public EdmAction getBoundAction(final FullQualifiedName actionName,
+ final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
final FullQualifiedName actionFqn = resolvePossibleAlias(actionName);
- if (bindingParameterTypeName == null) {
- action = unboundActions.get(actionName);
- if (action == null) {
- action = createUnboundAction(actionFqn);
- if (action != null) {
- unboundActions.put(actionName, action);
- }
- }
- } else {
- final FullQualifiedName bindingParameterTypeFqn = resolvePossibleAlias(bindingParameterTypeName);
- final ActionMapKey key = new ActionMapKey(actionFqn, bindingParameterTypeFqn, isBindingParameterCollection);
- action = boundActions.get(key);
- if (action == null) {
- action = createBoundAction(actionFqn, bindingParameterTypeFqn, isBindingParameterCollection);
- if (action != null) {
- boundActions.put(key, action);
- }
+ final FullQualifiedName bindingParameterTypeFqn = resolvePossibleAlias(bindingParameterTypeName);
+ final ActionMapKey key = new ActionMapKey(actionFqn, bindingParameterTypeFqn, isBindingParameterCollection);
+ EdmAction action = boundActions.get(key);
+ if (action == null) {
+ action = createBoundAction(actionFqn, bindingParameterTypeFqn, isBindingParameterCollection);
+ if (action != null) {
+ boundActions.put(key, action);
}
}
@@ -243,34 +254,65 @@ public abstract class AbstractEdm implements Edm {
}
@Override
- public EdmFunction getFunction(final FullQualifiedName functionName,
- final FullQualifiedName bindingParameterTypeName,
- final Boolean isBindingParameterCollection, final List<String> parameterNames) {
+ public List<EdmFunction> getUnboundFunctions(final FullQualifiedName functionName) {
+ final FullQualifiedName functionFqn = resolvePossibleAlias(functionName);
- EdmFunction function = null;
+ List<EdmFunction> functions = unboundFunctionsByName.get(functionFqn);
+ if (functions == null) {
+ functions = createUnboundFunctions(functionFqn);
+ if (functions != null) {
+ unboundFunctionsByName.put(functionFqn, functions);
+
+ for (EdmFunction unbound : functions) {
+ final FunctionMapKey key = new FunctionMapKey(
+ new FullQualifiedName(unbound.getNamespace(), unbound.getName()),
+ unbound.getBindingParameterTypeFqn(),
+ unbound.isBindingParameterTypeCollection(),
+ unbound.getParameterNames());
+ unboundFunctionsByKey.put(key, unbound);
+ }
+ }
+ }
+ return functions;
+ }
+
+ @Override
+ public EdmFunction getUnboundFunction(final FullQualifiedName functionName, final List<String> parameterNames) {
final FullQualifiedName functionFqn = resolvePossibleAlias(functionName);
- if (bindingParameterTypeName == null) {
- final FunctionMapKey key = new FunctionMapKey(
- functionFqn, bindingParameterTypeName, isBindingParameterCollection, parameterNames);
- function = unboundFunctions.get(key);
- if (function == null) {
- function = createUnboundFunction(functionFqn, parameterNames);
- if (function != null) {
- unboundFunctions.put(key, function);
+
+ final FunctionMapKey key = new FunctionMapKey(functionFqn, null, null, parameterNames);
+ EdmFunction function = unboundFunctionsByKey.get(key);
+ if (function == null) {
+ function = createUnboundFunction(functionFqn, parameterNames);
+ if (function != null) {
+ unboundFunctionsByKey.put(key, function);
+
+ if (!unboundFunctionsByName.containsKey(functionFqn)) {
+ unboundFunctionsByName.put(functionFqn, new ArrayList<EdmFunction>());
}
+ unboundFunctionsByName.get(functionFqn).add(function);
}
- } else {
- final FullQualifiedName bindingParameterTypeFqn = resolvePossibleAlias(bindingParameterTypeName);
- final FunctionMapKey key =
- new FunctionMapKey(functionFqn, bindingParameterTypeFqn, isBindingParameterCollection, parameterNames);
- function = boundFunctions.get(key);
- if (function == null) {
- function = createBoundFunction(functionFqn, bindingParameterTypeFqn, isBindingParameterCollection,
- parameterNames);
- if (function != null) {
- boundFunctions.put(key, function);
- }
+ }
+
+ return function;
+ }
+
+ @Override
+ public EdmFunction getBoundFunction(final FullQualifiedName functionName,
+ final FullQualifiedName bindingParameterTypeName,
+ final Boolean isBindingParameterCollection, final List<String> parameterNames) {
+
+ final FullQualifiedName functionFqn = resolvePossibleAlias(functionName);
+ final FullQualifiedName bindingParameterTypeFqn = resolvePossibleAlias(bindingParameterTypeName);
+ final FunctionMapKey key =
+ new FunctionMapKey(functionFqn, bindingParameterTypeFqn, isBindingParameterCollection, parameterNames);
+ EdmFunction function = boundFunctions.get(key);
+ if (function == null) {
+ function = createBoundFunction(functionFqn, bindingParameterTypeFqn, isBindingParameterCollection,
+ parameterNames);
+ if (function != null) {
+ boundFunctions.put(key, function);
}
}
@@ -316,15 +358,17 @@ public abstract class AbstractEdm implements Edm {
protected abstract EdmAction createUnboundAction(FullQualifiedName actionName);
+ protected abstract List<EdmFunction> createUnboundFunctions(FullQualifiedName functionName);
+
protected abstract EdmFunction createUnboundFunction(FullQualifiedName functionName, List<String> parameterNames);
protected abstract EdmAction createBoundAction(FullQualifiedName actionName,
- FullQualifiedName bindingParameterTypeName,
- Boolean isBindingParameterCollection);
+ FullQualifiedName bindingParameterTypeName,
+ Boolean isBindingParameterCollection);
protected abstract EdmFunction createBoundFunction(FullQualifiedName functionName,
- FullQualifiedName bindingParameterTypeName, Boolean isBindingParameterCollection,
- List<String> parameterNames);
+ FullQualifiedName bindingParameterTypeName, Boolean isBindingParameterCollection,
+ List<String> parameterNames);
protected abstract EdmServiceMetadata createServiceMetadata();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java
index 474a58d..287f7c2 100644
--- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java
+++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -41,7 +42,6 @@ import org.apache.olingo.commons.api.edm.EdmSchema;
import org.apache.olingo.commons.api.edm.EdmServiceMetadata;
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.core.edm.AbstractEdm;
import org.junit.Before;
import org.junit.Test;
@@ -57,14 +57,14 @@ public class EdmImplCachingTest {
public void cacheSchema() {
List<EdmSchema> schemas = edm.getSchemas();
assertNotNull(schemas);
-
+
assertEquals(1, schemas.size());
-
+
List<EdmSchema> cachedSchemas = edm.getSchemas();
- assertTrue(schemas == cachedSchemas );
+ assertTrue(schemas == cachedSchemas);
assertEquals(schemas, schemas);
}
-
+
@Test
public void cacheEntityContainer() {
EdmEntityContainer entityContainer = edm.getEntityContainer(null);
@@ -158,32 +158,32 @@ public class EdmImplCachingTest {
@Test
public void cacheUnboundAction() {
- EdmAction action = edm.getAction(NAME1, null, null);
+ EdmAction action = edm.getUnboundAction(NAME1);
assertNotNull(action);
- EdmAction cachedAction = edm.getAction(NAME1, null, null);
+ EdmAction cachedAction = edm.getUnboundAction(NAME1);
assertNotNull(cachedAction);
assertTrue(action == cachedAction);
assertEquals(action, cachedAction);
- EdmAction action2 = edm.getAction(NAME2, null, false);
+ EdmAction action2 = edm.getUnboundAction(NAME2);
assertNotNull(action2);
assertNotSame(action, action2);
}
@Test
public void cacheBoundAction() {
- EdmAction action = edm.getAction(NAME1, NAME2, true);
+ EdmAction action = edm.getBoundAction(NAME1, NAME2, true);
assertNotNull(action);
- EdmAction cachedAction = edm.getAction(NAME1, NAME2, true);
+ EdmAction cachedAction = edm.getBoundAction(NAME1, NAME2, true);
assertNotNull(cachedAction);
assertTrue(action == cachedAction);
assertEquals(action, cachedAction);
- EdmAction action2 = edm.getAction(NAME2, NAME2, true);
+ EdmAction action2 = edm.getBoundAction(NAME2, NAME2, true);
assertNotNull(action2);
assertNotSame(action, action2);
@@ -191,16 +191,16 @@ public class EdmImplCachingTest {
@Test
public void cacheUnboundFunctionNoParameters() {
- EdmFunction function = edm.getFunction(NAME1, null, null, null);
+ EdmFunction function = edm.getUnboundFunction(NAME1, null);
assertNotNull(function);
- EdmFunction cachedfunction = edm.getFunction(NAME1, null, null, null);
+ EdmFunction cachedfunction = edm.getUnboundFunction(NAME1, null);
assertNotNull(cachedfunction);
assertTrue(function == cachedfunction);
assertEquals(function, cachedfunction);
- EdmFunction function2 = edm.getFunction(NAME2, null, false, null);
+ EdmFunction function2 = edm.getBoundFunction(NAME2, null, false, null);
assertNotNull(function2);
assertNotSame(function, function2);
@@ -208,16 +208,16 @@ public class EdmImplCachingTest {
@Test
public void cacheBoundFunction() {
- EdmFunction function = edm.getFunction(NAME1, NAME2, true, new ArrayList<String>());
+ EdmFunction function = edm.getBoundFunction(NAME1, NAME2, true, new ArrayList<String>());
assertNotNull(function);
- EdmFunction cachedfunction = edm.getFunction(NAME1, NAME2, true, new ArrayList<String>());
+ EdmFunction cachedfunction = edm.getBoundFunction(NAME1, NAME2, true, new ArrayList<String>());
assertNotNull(cachedfunction);
assertTrue(function == cachedfunction);
assertEquals(function, cachedfunction);
- EdmFunction function2 = edm.getFunction(NAME2, NAME2, true, new ArrayList<String>());
+ EdmFunction function2 = edm.getBoundFunction(NAME2, NAME2, true, new ArrayList<String>());
assertNotNull(function2);
assertNotSame(function, function2);
@@ -228,19 +228,19 @@ public class EdmImplCachingTest {
ArrayList<String> parameters1 = new ArrayList<String>();
parameters1.add("A");
parameters1.add("B");
- EdmFunction function = edm.getFunction(NAME1, NAME2, true, parameters1);
+ EdmFunction function = edm.getBoundFunction(NAME1, NAME2, true, parameters1);
assertNotNull(function);
ArrayList<String> parameters2 = new ArrayList<String>();
parameters2.add("B");
parameters2.add("A");
- EdmFunction cachedfunction = edm.getFunction(NAME1, NAME2, true, parameters2);
+ EdmFunction cachedfunction = edm.getBoundFunction(NAME1, NAME2, true, parameters2);
assertNotNull(cachedfunction);
assertTrue(function == cachedfunction);
assertEquals(function, cachedfunction);
- EdmFunction function2 = edm.getFunction(NAME2, NAME2, true, new ArrayList<String>());
+ EdmFunction function2 = edm.getBoundFunction(NAME2, NAME2, true, new ArrayList<String>());
assertNotNull(function2);
assertNotSame(function, function2);
@@ -384,6 +384,22 @@ public class EdmImplCachingTest {
}
@Override
+ protected List<EdmFunction> createUnboundFunctions(final FullQualifiedName fqn) {
+ if (NAME1.equals(fqn)) {
+ EdmFunction function = mock(EdmFunction.class);
+ when(function.getNamespace()).thenReturn(fqn.getNamespace());
+ when(function.getName()).thenReturn(fqn.getName());
+ return Collections.singletonList(function);
+ } else if (NAME2.equals(fqn)) {
+ EdmFunction function = mock(EdmFunction.class);
+ when(function.getNamespace()).thenReturn(fqn.getNamespace());
+ when(function.getName()).thenReturn(fqn.getName());
+ return Collections.singletonList(function);
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
protected EdmFunction createUnboundFunction(final FullQualifiedName fqn, final List<String> parameterNames) {
if (NAME1.equals(fqn)) {
EdmFunction function = mock(EdmFunction.class);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java
index 52d47e2..bc83caf 100644
--- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java
+++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -41,7 +42,6 @@ import org.apache.olingo.commons.api.edm.EdmSchema;
import org.apache.olingo.commons.api.edm.EdmServiceMetadata;
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.core.edm.AbstractEdm;
import org.junit.Before;
import org.junit.Test;
@@ -58,7 +58,7 @@ public class EdmImplCallCreateTest {
List<EdmSchema> schemas = edm.getSchemas();
assertNotNull(schemas);
}
-
+
@Test
public void callCreateEntityContainer() {
EdmEntityContainer entityContainer = edm.getEntityContainer(FQN);
@@ -116,36 +116,36 @@ public class EdmImplCallCreateTest {
@Test
public void callCreateAction() {
- EdmAction action = edm.getAction(FQN, null, null);
+ EdmAction action = edm.getUnboundAction(FQN);
assertNotNull(action);
assertEquals(FQN.getNamespace(), action.getNamespace());
assertEquals(FQN.getName(), action.getName());
- EdmAction action2 = edm.getAction(FQN, FQN, true);
+ EdmAction action2 = edm.getBoundAction(FQN, FQN, true);
assertNotNull(action2);
assertEquals(FQN.getNamespace(), action2.getNamespace());
assertEquals(FQN.getName(), action2.getName());
assertNotSame(action, action2);
- assertNull(edm.getAction(WRONG_FQN, null, null));
+ assertNull(edm.getUnboundAction(WRONG_FQN));
}
@Test
public void callCreateFunction() {
- EdmFunction function = edm.getFunction(FQN, null, null, null);
+ EdmFunction function = edm.getUnboundFunction(FQN, null);
assertNotNull(function);
assertEquals(FQN.getNamespace(), function.getNamespace());
assertEquals(FQN.getName(), function.getName());
- EdmFunction function2 = edm.getFunction(FQN, FQN, true, new ArrayList<String>());
+ EdmFunction function2 = edm.getBoundFunction(FQN, FQN, true, new ArrayList<String>());
assertNotNull(function2);
assertEquals(FQN.getNamespace(), function2.getNamespace());
assertEquals(FQN.getName(), function2.getName());
assertNotSame(function, function2);
- assertNull(edm.getFunction(WRONG_FQN, null, null, null));
+ assertNull(edm.getUnboundFunction(WRONG_FQN, null));
}
@Test
@@ -262,6 +262,17 @@ public class EdmImplCallCreateTest {
}
@Override
+ protected List<EdmFunction> createUnboundFunctions(final FullQualifiedName fqn) {
+ if (FQN.getNamespace().equals(fqn.getNamespace()) && FQN.getName().equals(fqn.getName())) {
+ EdmFunction function = mock(EdmFunction.class);
+ when(function.getNamespace()).thenReturn(fqn.getNamespace());
+ when(function.getName()).thenReturn(fqn.getName());
+ return Collections.singletonList(function);
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
protected EdmFunction createUnboundFunction(final FullQualifiedName fqn, final List<String> parameterNames) {
if (FQN.getNamespace().equals(fqn.getNamespace()) && FQN.getName().equals(fqn.getName())) {
EdmFunction function = mock(EdmFunction.class);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
index 3e2a9f5..8796671 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
@@ -22,7 +22,6 @@ import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmAction;
import org.apache.olingo.commons.api.edm.EdmActionImport;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.server.api.edm.provider.ActionImport;
public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport {
@@ -37,14 +36,7 @@ public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmAc
@Override
public EdmAction getUnboundAction() {
- return getBoundAction(null, null);
- }
-
- @Override
- public EdmAction getBoundAction(
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
-
- return edm.getAction(actionImport.getAction(), bindingParameterTypeName, isBindingParameterCollection);
+ return edm.getUnboundAction(actionImport.getAction());
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
index 2c8a097..23111eb 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
@@ -38,17 +38,18 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
}
@Override
- public EdmFunction getUnboundFunction(final List<String> parameterNames) {
- return getBoundFunction(parameterNames, null, null);
+ public FullQualifiedName getFunctionFqn() {
+ return functionImport.getFunction();
}
@Override
- public EdmFunction getBoundFunction(final List<String> parameterNames,
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
-
- return edm.getFunction(functionImport.getFunction(),
- bindingParameterTypeName, isBindingParameterCollection, parameterNames);
+ public EdmFunction getUnboundFunction(final List<String> parameterNames) {
+ return edm.getUnboundFunction(getFunctionFqn(), parameterNames);
+ }
+ @Override
+ public List<EdmFunction> getUnboundFunctions() {
+ return edm.getUnboundFunctions(getFunctionFqn());
}
@Override
@@ -56,8 +57,4 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
return functionImport.isIncludeInServiceDocument();
}
- @Override
- public FullQualifiedName getFunctionFqn() {
- return functionImport.getFunction();
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmProviderImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmProviderImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmProviderImpl.java
index d35d55d..b7191a6 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmProviderImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmProviderImpl.java
@@ -129,7 +129,7 @@ public class EdmProviderImpl extends AbstractEdm {
@Override
public EdmAction createBoundAction(final FullQualifiedName actionName,
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+ final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
try {
List<Action> actions = actionsMap.get(actionName);
@@ -147,7 +147,7 @@ public class EdmProviderImpl extends AbstractEdm {
final List<Parameter> parameters = action.getParameters();
final Parameter parameter = parameters.get(0);
if (bindingParameterTypeName.equals(parameter.getType())
- && isBindingParameterCollection.booleanValue() == parameter.isCollection()) {
+ && isBindingParameterCollection.booleanValue() == parameter.isCollection()) {
return EdmActionImpl.getInstance(this, actionName, action);
}
@@ -162,8 +162,8 @@ public class EdmProviderImpl extends AbstractEdm {
@Override
public EdmFunction createBoundFunction(final FullQualifiedName functionName,
- final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection,
- final List<String> parameterNames) {
+ final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection,
+ final List<String> parameterNames) {
try {
List<Function> functions = functionsMap.get(functionName);
@@ -175,8 +175,8 @@ public class EdmProviderImpl extends AbstractEdm {
functionsMap.put(functionName, functions);
}
}
- final List<String> parameterNamesCopy =
- parameterNames == null ? Collections.<String> emptyList() : parameterNames;
+ final List<String> parameterNamesCopy
+ = parameterNames == null ? Collections.<String>emptyList() : parameterNames;
for (Function function : functions) {
if (function.isBound()) {
List<Parameter> providerParameters = function.getParameters();
@@ -185,7 +185,7 @@ public class EdmProviderImpl extends AbstractEdm {
}
final Parameter bindingParameter = providerParameters.get(0);
if (bindingParameterTypeName.equals(bindingParameter.getType())
- && isBindingParameterCollection.booleanValue() == bindingParameter.isCollection()) {
+ && isBindingParameterCollection.booleanValue() == bindingParameter.isCollection()) {
if (parameterNamesCopy.size() == providerParameters.size() - 1) {
final List<String> providerParameterNames = new ArrayList<String>();
@@ -251,19 +251,44 @@ public class EdmProviderImpl extends AbstractEdm {
}
@Override
- protected EdmFunction createUnboundFunction(final FullQualifiedName functionName, final List<String> parameterNames) {
+ protected List<EdmFunction> createUnboundFunctions(final FullQualifiedName functionName) {
+ List<EdmFunction> result = new ArrayList<EdmFunction>();
+
try {
List<Function> functions = functionsMap.get(functionName);
if (functions == null) {
functions = provider.getFunctions(functionName);
if (functions != null) {
functionsMap.put(functionName, functions);
- } else {
+
+ for (Function function : functions) {
+ if (!function.isBound()) {
+ result.add(EdmFunctionImpl.getInstance(this, functionName, function));
+ }
+ }
+ }
+ }
+ } catch (ODataException e) {
+ throw new EdmException(e);
+ }
+
+ return result;
+ }
+
+ @Override
+ protected EdmFunction createUnboundFunction(final FullQualifiedName functionName, final List<String> parameterNames) {
+ try {
+ List<Function> functions = functionsMap.get(functionName);
+ if (functions == null) {
+ functions = provider.getFunctions(functionName);
+ if (functions == null) {
return null;
+ } else {
+ functionsMap.put(functionName, functions);
}
}
- final List<String> parameterNamesCopy =
- parameterNames == null ? Collections.<String> emptyList() : parameterNames;
+ final List<String> parameterNamesCopy
+ = parameterNames == null ? Collections.<String>emptyList() : parameterNames;
for (Function function : functions) {
if (!function.isBound()) {
List<Parameter> providerParameters = function.getParameters();
@@ -271,7 +296,7 @@ public class EdmProviderImpl extends AbstractEdm {
providerParameters = Collections.emptyList();
}
if (parameterNamesCopy.size() == providerParameters.size()) {
- List<String> functionParameterNames = new ArrayList<String>();
+ final List<String> functionParameterNames = new ArrayList<String>();
for (Parameter parameter : providerParameters) {
functionParameterNames.add(parameter.getName());
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
index f237fea..0039952 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
@@ -558,7 +558,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
FullQualifiedName fullBindingTypeName = new FullQualifiedName(source.type.getNamespace(), source.type.getName());
// check for action
- EdmAction action = edm.getAction(fullFilterName, fullBindingTypeName, source.isCollection);
+ EdmAction action = edm.getBoundAction(fullFilterName, fullBindingTypeName, source.isCollection);
if (action != null) {
UriResourceActionImpl pathInfoAction = new UriResourceActionImpl();
pathInfoAction.setAction(action);
@@ -583,7 +583,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
names.add(item.getName());
}
- EdmFunction function = edm.getFunction(fullFilterName, fullBindingTypeName, source.isCollection, names);
+ EdmFunction function = edm.getBoundFunction(fullFilterName, fullBindingTypeName, source.isCollection, names);
if (function != null) {
UriResourceFunctionImpl pathInfoFunction = new UriResourceFunctionImpl()
@@ -597,7 +597,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
}
// check for unbound function in the $filter case ( where the previous resource segment is a $it)
- function = edm.getFunction(fullFilterName, null, null, names);
+ function = edm.getUnboundFunction(fullFilterName, names);
if (function != null) {
UriResourceFunctionImpl pathInfoFunction = new UriResourceFunctionImpl()
@@ -1972,7 +1972,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
FullQualifiedName finalTypeName = new FullQualifiedName(prevType.getNamespace(), prevType.getName());
// check for action
- EdmAction action = edm.getAction(fullName, finalTypeName, null);
+ EdmAction action = edm.getBoundAction(fullName, finalTypeName, null);
if (action != null) {
UriResourceActionImpl uriAction = new UriResourceActionImpl();
@@ -1983,7 +1983,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
}
// check for function
- EdmFunction function = edm.getFunction(fullName, finalTypeName, null, null);
+ EdmFunction function = edm.getBoundFunction(fullName, finalTypeName, null, null);
if (function != null) {
UriResourceFunctionImpl uriFunction = new UriResourceFunctionImpl();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
index c9393aa..08bdc3e 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
@@ -57,7 +57,7 @@ public class EdmActionImportImplTest {
container = mock(EdmEntityContainer.class);
when(edm.getEntityContainer(entityContainerFqn)).thenReturn(container);
action = mock(EdmAction.class);
- when(edm.getAction(actionFqn, null, null)).thenReturn(action);
+ when(edm.getUnboundAction(actionFqn)).thenReturn(action);
entitySet = mock(EdmEntitySet.class);
when(container.getEntitySet("entitySetName")).thenReturn(entitySet);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplOverloadingTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplOverloadingTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplOverloadingTest.java
index 1ac09ce..1a4795f 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplOverloadingTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplOverloadingTest.java
@@ -104,46 +104,46 @@ public class EdmProviderImplOverloadingTest {
@Test
public void simpleActionGet() {
- EdmAction action = edm.getAction(operationName1, null, null);
+ EdmAction action = edm.getUnboundAction(operationName1);
assertNotNull(action);
assertEquals(operationName1.getNamespace(), action.getNamespace());
assertEquals(operationName1.getName(), action.getName());
- assertNull(edm.getAction(wrongOperationName, null, null));
+ assertNull(edm.getUnboundAction(wrongOperationName));
}
@Test
public void boundActionOverloading() {
- EdmAction action = edm.getAction(operationName1, operationType1, false);
+ EdmAction action = edm.getBoundAction(operationName1, operationType1, false);
assertNotNull(action);
assertEquals(operationName1.getNamespace(), action.getNamespace());
assertEquals(operationName1.getName(), action.getName());
- assertTrue(action == edm.getAction(operationName1, operationType1, false));
+ assertTrue(action == edm.getBoundAction(operationName1, operationType1, false));
- EdmAction action2 = edm.getAction(operationName1, operationType1, true);
+ EdmAction action2 = edm.getBoundAction(operationName1, operationType1, true);
assertNotNull(action2);
assertEquals(operationName1.getNamespace(), action2.getNamespace());
assertEquals(operationName1.getName(), action2.getName());
- assertTrue(action2 == edm.getAction(operationName1, operationType1, true));
+ assertTrue(action2 == edm.getBoundAction(operationName1, operationType1, true));
assertNotSame(action, action2);
}
@Test
public void simpleFunctionGet() {
- EdmFunction function = edm.getFunction(operationName1, null, null, null);
+ EdmFunction function = edm.getUnboundFunction(operationName1, null);
assertNotNull(function);
assertEquals(operationName1.getNamespace(), function.getNamespace());
assertEquals(operationName1.getName(), function.getName());
- EdmFunction function2 = edm.getFunction(operationName1, null, null, new ArrayList<String>());
+ EdmFunction function2 = edm.getUnboundFunction(operationName1, new ArrayList<String>());
assertNotNull(function2);
assertEquals(operationName1.getNamespace(), function2.getNamespace());
assertEquals(operationName1.getName(), function2.getName());
assertEquals(function, function2);
- assertNull(edm.getFunction(wrongOperationName, null, null, new ArrayList<String>()));
+ assertNull(edm.getUnboundFunction(wrongOperationName, new ArrayList<String>()));
}
@Test
@@ -152,28 +152,28 @@ public class EdmProviderImplOverloadingTest {
parameter1Names.add("a");
List<String> parameter2Names = new ArrayList<String>();
parameter2Names.add("b");
- EdmFunction function = edm.getFunction(operationName1, null, null, new ArrayList<String>());
+ EdmFunction function = edm.getUnboundFunction(operationName1, new ArrayList<String>());
assertNotNull(function);
assertFalse(function.isBound());
- EdmFunction function1 = edm.getFunction(operationName1, null, null, parameter1Names);
+ EdmFunction function1 = edm.getUnboundFunction(operationName1, parameter1Names);
assertNotNull(function1);
assertFalse(function1.isBound());
assertFalse(function == function1);
assertNotSame(function, function1);
- EdmFunction function2 = edm.getFunction(operationName1, null, null, parameter2Names);
+ EdmFunction function2 = edm.getUnboundFunction(operationName1, parameter2Names);
assertNotNull(function2);
assertFalse(function2.isBound());
assertFalse(function1 == function2);
assertNotSame(function1, function2);
- EdmFunction function3 = edm.getFunction(operationName1, operationType1, false, parameter2Names);
+ EdmFunction function3 = edm.getBoundFunction(operationName1, operationType1, false, parameter2Names);
assertNotNull(function3);
assertTrue(function3.isBound());
- EdmFunction function4 = edm.getFunction(operationName1, operationType2, false, parameter2Names);
+ EdmFunction function4 = edm.getBoundFunction(operationName1, operationType2, false, parameter2Names);
assertNotNull(function4);
assertTrue(function4.isBound());
@@ -192,7 +192,7 @@ public class EdmProviderImplOverloadingTest {
@Test(expected = EdmException.class)
public void noParametersAtBoundFunctionReslutsInException() {
- edm.getFunction(badOperationName, operationType1, true, null);
+ edm.getBoundFunction(badOperationName, operationType1, true, null);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java
index 66a3f99..2156077 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java
@@ -89,10 +89,10 @@ public class EdmProviderImplTest {
when(localProvider.getActions(FQN)).thenReturn(null);
when(localProvider.getFunctions(FQN)).thenReturn(null);
Edm localEdm = new EdmProviderImpl(localProvider);
- localEdm.getAction(FQN, null, null);
- localEdm.getFunction(FQN, null, null, null);
- localEdm.getAction(FQN, FQN, true);
- localEdm.getFunction(FQN, FQN, true, null);
+ localEdm.getUnboundAction(FQN);
+ localEdm.getUnboundFunction(FQN, null);
+ localEdm.getBoundAction(FQN, FQN, true);
+ localEdm.getBoundFunction(FQN, FQN, true, null);
localEdm.getComplexType(FQN);
localEdm.getEntityContainer(FQN);
localEdm.getEntityType(FQN);
@@ -123,24 +123,24 @@ public class EdmProviderImplTest {
// seperate because of signature
try {
- localEdm.getAction(fqn, null, null);
+ localEdm.getUnboundAction(fqn);
} catch (EdmException e) {
assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage());
}
try {
- localEdm.getFunction(fqn, null, null, null);
+ localEdm.getUnboundFunction(fqn, null);
} catch (EdmException e) {
assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage());
}
try {
- localEdm.getAction(fqn, fqn, true);
+ localEdm.getBoundAction(fqn, fqn, true);
} catch (EdmException e) {
assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage());
}
try {
- localEdm.getFunction(fqn, fqn, true, null);
+ localEdm.getBoundFunction(fqn, fqn, true, null);
} catch (EdmException e) {
assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage());
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
index ec7e1ee..c04211d 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
@@ -149,7 +149,7 @@ public class EdmSchemaImplTest {
assertEquals(2, actions.size());
for (EdmAction action : actions) {
- assertTrue(action == edm.getAction(new FullQualifiedName("namespace", action.getName()), null, null));
+ assertTrue(action == edm.getUnboundAction(new FullQualifiedName("namespace", action.getName())));
}
}
@@ -161,7 +161,7 @@ public class EdmSchemaImplTest {
for (EdmFunction function : functions) {
FullQualifiedName functionName = new FullQualifiedName("namespace", function.getName());
- assertTrue(function == edm.getFunction(functionName, null, null, null));
+ assertTrue(function == edm.getUnboundFunction(functionName, null));
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
index 51a9638..680e919 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
@@ -76,7 +76,7 @@ public class UriResourceImplTest {
assertEquals("", impl.toString());
// action
- EdmAction action = edm.getAction(ActionProvider.nameUARTETParam, null, null);
+ EdmAction action = edm.getUnboundAction(ActionProvider.nameUARTETParam);
impl.setAction(action);
assertEquals(action, impl.getAction());
assertEquals(ActionProvider.nameUARTETParam.getName(), impl.toString());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/081df2aa/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
index 91f3ad9..2902bdc 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
@@ -135,7 +135,7 @@ public class ExpressionTest {
EdmEntityType entityType = edm.getEntityType(EntityTypeProvider.nameETKeyNav);
// UriResourceImplTyped
- EdmAction action = edm.getAction(ActionProvider.nameUARTPrimParam, null, null);
+ EdmAction action = edm.getUnboundAction(ActionProvider.nameUARTPrimParam);
UriInfoResource uriInfo = new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceActionImpl().setAction(action)).asUriInfoResource();
expression.setResourcePath(uriInfo);
@@ -149,21 +149,21 @@ public class ExpressionTest {
assertEquals(false, expression.isCollection());
// UriResourceImplTyped check collection = true case
- action = edm.getAction(ActionProvider.nameUARTPrimCollParam, null, null);
+ action = edm.getUnboundAction(ActionProvider.nameUARTPrimCollParam);
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceActionImpl().setAction(action))
.asUriInfoResource());
assertEquals(true, expression.isCollection());
// UriResourceImplTyped with filter
- action = edm.getAction(ActionProvider.nameUARTPrimParam, null, null);
+ action = edm.getUnboundAction(ActionProvider.nameUARTPrimParam);
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceActionImpl().setAction(action).setTypeFilter(entityType))
.asUriInfoResource());
assertEquals(entityType, expression.getType());
// UriResourceImplKeyPred
- EdmFunction function = edm.getFunction(FunctionProvider.nameUFCRTETKeyNav, null, null, null);
+ EdmFunction function = edm.getUnboundFunction(FunctionProvider.nameUFCRTETKeyNav, null);
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceFunctionImpl().setFunction(function))
.asUriInfoResource());
@@ -171,8 +171,7 @@ public class ExpressionTest {
// UriResourceImplKeyPred typeFilter on entry
EdmEntityType entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav);
- function = edm.getFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, null, null,
- Arrays.asList(("ParameterInt16")));
+ function = edm.getUnboundFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, Arrays.asList("ParameterInt16"));
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceFunctionImpl().setFunction(function).setEntryTypeFilter(entityBaseType))
.asUriInfoResource());
@@ -180,8 +179,7 @@ public class ExpressionTest {
// UriResourceImplKeyPred typeFilter on entry
entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav);
- function = edm.getFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, null, null,
- Arrays.asList(("ParameterInt16")));
+ function = edm.getUnboundFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, Arrays.asList("ParameterInt16"));
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceFunctionImpl().setFunction(function).setCollectionTypeFilter(entityBaseType))
.asUriInfoResource());
@@ -189,8 +187,7 @@ public class ExpressionTest {
// no typed
entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav);
- function = edm.getFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, null, null,
- Arrays.asList(("ParameterInt16")));
+ function = edm.getUnboundFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, Arrays.asList("ParameterInt16"));
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.all));
assertEquals(null, expression.getType());
[2/2] git commit: [OLINGO-202] Remove caching by by name for get with
key
Posted by il...@apache.org.
[OLINGO-202] Remove caching by by name for get with key
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/855a586b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/855a586b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/855a586b
Branch: refs/heads/master
Commit: 855a586b3dad92de0415cd7713dd8f7e5970681e
Parents: 081df2a
Author: Christian Amend <ch...@apache.org>
Authored: Mon Apr 7 13:52:45 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Mon Apr 7 13:52:45 2014 +0200
----------------------------------------------------------------------
.../java/org/apache/olingo/commons/core/edm/AbstractEdm.java | 5 -----
1 file changed, 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/855a586b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
index 1367e0e..98a22c5 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
@@ -287,11 +287,6 @@ public abstract class AbstractEdm implements Edm {
function = createUnboundFunction(functionFqn, parameterNames);
if (function != null) {
unboundFunctionsByKey.put(key, function);
-
- if (!unboundFunctionsByName.containsKey(functionFqn)) {
- unboundFunctionsByName.put(functionFqn, new ArrayList<EdmFunction>());
- }
- unboundFunctionsByName.get(functionFqn).add(function);
}
}