@Override @SuppressWarnings("unchecked") public <RES extends ClientInvokeResult> ODataInvokeRequest<RES> getBoundFunctionInvokeRequest( final URI bindingParameterURI, final FullQualifiedName functionName, final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection, final Map<String, ClientValue> parameters) { final EdmFunction function = edmClient.getCachedEdm().getBoundFunction( functionName, bindingParameterTypeName, isBindingParameterCollection, parameters == null ? null : new ArrayList<String>(parameters.keySet())); if (function == null) { throw new IllegalArgumentException("Could not find Function for name " + functionName); } return (ODataInvokeRequest<RES>) getInvokeRequest(HttpMethod.GET, edmClient.newURIBuilder(bindingParameterURI.toASCIIString()). appendOperationCallSegment(function.getFullQualifiedName().toString()).build(), getResultReference(function.getReturnType()), parameters); }
@Override @SuppressWarnings("unchecked") public <RES extends ClientInvokeResult> ODataInvokeRequest<RES> getBoundFunctionInvokeRequest( final URI bindingParameterURI, final FullQualifiedName functionName, final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection, final Map<String, ClientValue> parameters) { final EdmFunction function = edmClient.getCachedEdm().getBoundFunction( functionName, bindingParameterTypeName, isBindingParameterCollection, parameters == null ? null : new ArrayList<String>(parameters.keySet())); if (function == null) { throw new IllegalArgumentException("Could not find Function for name " + functionName); } return (ODataInvokeRequest<RES>) getInvokeRequest(HttpMethod.GET, edmClient.newURIBuilder(bindingParameterURI.toASCIIString()). appendOperationCallSegment(function.getFullQualifiedName().toString()).build(), getResultReference(function.getReturnType()), parameters); }
private Map.Entry<URI, EdmOperation> getCollectionBoundOperation( final Operation operation, final List<String> parameterNames) { EdmOperation edmOperation; if (operation.type() == OperationType.FUNCTION) { edmOperation = getClient().getCachedEdm().getBoundFunction( new FullQualifiedName(targetFQN.getNamespace(), operation.name()), targetFQN, true, parameterNames); } else { edmOperation = getClient().getCachedEdm().getBoundAction( new FullQualifiedName(targetFQN.getNamespace(), operation.name()), targetFQN, true); } return new AbstractMap.SimpleEntry<URI, EdmOperation>( URI.create(((EntityCollectionInvocationHandler<?>) target).getURI().toASCIIString() + "/" + edmOperation.getName()), edmOperation); } }
private Map.Entry<URI, EdmOperation> getCollectionBoundOperation( final Operation operation, final List<String> parameterNames) { EdmOperation edmOperation; if (operation.type() == OperationType.FUNCTION) { edmOperation = getClient().getCachedEdm().getBoundFunction( new FullQualifiedName(targetFQN.getNamespace(), operation.name()), targetFQN, true, parameterNames); } else { edmOperation = getClient().getCachedEdm().getBoundAction( new FullQualifiedName(targetFQN.getNamespace(), operation.name()), targetFQN, true); } return new AbstractMap.SimpleEntry<URI, EdmOperation>( URI.create(((EntityCollectionInvocationHandler<?>) target).getURI().toASCIIString() + "/" + edmOperation.getName()), edmOperation); } }
private UriResourcePartTyped parseBoundOperation(UriTokenizer tokenizer, final FullQualifiedName qualifiedName, final EdmStructuredType referencedType, final boolean referencedIsCollection) throws UriParserException { final EdmAction boundAction = edm.getBoundAction(qualifiedName, referencedType.getFullQualifiedName(), referencedIsCollection); if (boundAction == null) { final List<String> parameterNames = parseFunctionParameterNames(tokenizer); final EdmFunction boundFunction = edm.getBoundFunction(qualifiedName, referencedType.getFullQualifiedName(), referencedIsCollection, parameterNames); if (boundFunction == null) { throw new UriParserSemanticException("Function not found.", UriParserSemanticException.MessageKeys.UNKNOWN_PART, qualifiedName.getFullQualifiedNameAsString()); } else { return new UriResourceFunctionImpl(null, boundFunction, null); } } else { return new UriResourceActionImpl(boundAction); } }
private void parseBoundFunction(final FullQualifiedName fullQualifiedName, UriInfoImpl uriInfo, final UriResourcePartTyped lastResource) throws UriParserException, UriValidationException { final EdmType type = lastResource.getType(); final List<UriParameter> parameters = ParserHelper.parseFunctionParameters(tokenizer, edm, referringType, true, aliases); final List<String> parameterNames = ParserHelper.getParameterNames(parameters); final EdmFunction boundFunction = edm.getBoundFunction(fullQualifiedName, type.getFullQualifiedName(), lastResource.isCollection(), parameterNames); if (boundFunction == null) { throw new UriParserSemanticException("Bound function '" + fullQualifiedName + "' not found.", UriParserSemanticException.MessageKeys.FUNCTION_NOT_FOUND, fullQualifiedName.getFullQualifiedNameAsString()); } ParserHelper.validateFunctionParameters(boundFunction, parameters, edm, referringType, aliases); parseFunctionRest(uriInfo, boundFunction, parameters); }
private UriResourcePartTyped parseBoundOperation(UriTokenizer tokenizer, final FullQualifiedName qualifiedName, final EdmStructuredType referencedType, final boolean referencedIsCollection) throws UriParserException { final EdmAction boundAction = edm.getBoundAction(qualifiedName, referencedType.getFullQualifiedName(), referencedIsCollection); if (boundAction == null) { final List<String> parameterNames = parseFunctionParameterNames(tokenizer); final EdmFunction boundFunction = edm.getBoundFunction(qualifiedName, referencedType.getFullQualifiedName(), referencedIsCollection, parameterNames); if (boundFunction == null) { throw new UriParserSemanticException("Function not found.", UriParserSemanticException.MessageKeys.UNKNOWN_PART, qualifiedName.getFullQualifiedNameAsString()); } else { return new UriResourceFunctionImpl(null, boundFunction, null); } } else { return new UriResourceActionImpl(boundAction); } }
private void parseBoundFunction(final FullQualifiedName fullQualifiedName, UriInfoImpl uriInfo, final UriResourcePartTyped lastResource) throws UriParserException, UriValidationException { final EdmType type = lastResource.getType(); final List<UriParameter> parameters = ParserHelper.parseFunctionParameters(tokenizer, edm, referringType, true, aliases); final List<String> parameterNames = ParserHelper.getParameterNames(parameters); final EdmFunction boundFunction = edm.getBoundFunction(fullQualifiedName, type.getFullQualifiedName(), lastResource.isCollection(), parameterNames); if (boundFunction == null) { throw new UriParserSemanticException("Bound function '" + fullQualifiedName + "' not found.", UriParserSemanticException.MessageKeys.FUNCTION_NOT_FOUND, fullQualifiedName.getFullQualifiedNameAsString()); } ParserHelper.validateFunctionParameters(boundFunction, parameters, edm, referringType, aliases); parseFunctionRest(uriInfo, boundFunction, parameters); }
private void parseFunction(final FullQualifiedName fullQualifiedName, UriInfoImpl uriInfo, final EdmType lastType, final boolean lastIsCollection) throws UriParserException, UriValidationException { final List<UriParameter> parameters = ParserHelper.parseFunctionParameters(tokenizer, edm, referringType, true, aliases); final List<String> parameterNames = ParserHelper.getParameterNames(parameters); final EdmFunction boundFunction = edm.getBoundFunction(fullQualifiedName, lastType.getFullQualifiedName(), lastIsCollection, parameterNames); if (boundFunction != null) { ParserHelper.validateFunctionParameters(boundFunction, parameters, edm, referringType, aliases); parseFunctionRest(uriInfo, boundFunction, parameters); return; } final EdmFunction unboundFunction = edm.getUnboundFunction(fullQualifiedName, parameterNames); if (unboundFunction != null) { ParserHelper.validateFunctionParameters(unboundFunction, parameters, edm, referringType, aliases); parseFunctionRest(uriInfo, unboundFunction, parameters); return; } throw new UriParserSemanticException("No function '" + fullQualifiedName + "' found.", UriParserSemanticException.MessageKeys.FUNCTION_NOT_FOUND, fullQualifiedName.getFullQualifiedNameAsString()); }
private void parseFunction(final FullQualifiedName fullQualifiedName, UriInfoImpl uriInfo, final EdmType lastType, final boolean lastIsCollection) throws UriParserException, UriValidationException { final List<UriParameter> parameters = ParserHelper.parseFunctionParameters(tokenizer, edm, referringType, true, aliases); final List<String> parameterNames = ParserHelper.getParameterNames(parameters); final EdmFunction boundFunction = edm.getBoundFunction(fullQualifiedName, lastType.getFullQualifiedName(), lastIsCollection, parameterNames); if (boundFunction != null) { ParserHelper.validateFunctionParameters(boundFunction, parameters, edm, referringType, aliases); parseFunctionRest(uriInfo, boundFunction, parameters); return; } final EdmFunction unboundFunction = edm.getUnboundFunction(fullQualifiedName, parameterNames); if (unboundFunction != null) { ParserHelper.validateFunctionParameters(unboundFunction, parameters, edm, referringType, aliases); parseFunctionRest(uriInfo, unboundFunction, parameters); return; } throw new UriParserSemanticException("No function '" + fullQualifiedName + "' found.", UriParserSemanticException.MessageKeys.FUNCTION_NOT_FOUND, fullQualifiedName.getFullQualifiedNameAsString()); }
while (boundOp == null && baseType != null) { final EdmFunction func = this.getClient().getCachedEdm().getBoundFunction( new FullQualifiedName(targetFQN.getNamespace(), operation.name()), baseType.getFullQualifiedName(), false, parameterNames); while (edmOperation == null && entityType != null) { edmOperation = operation.type() == OperationType.FUNCTION ? getClient().getCachedEdm().getBoundFunction( operationFQN, entityType.getFullQualifiedName(), false, parameterNames) : getClient().getCachedEdm().getBoundAction(
while (boundOp == null && baseType != null) { final EdmFunction func = this.getClient().getCachedEdm().getBoundFunction( new FullQualifiedName(targetFQN.getNamespace(), operation.name()), baseType.getFullQualifiedName(), false, parameterNames); while (edmOperation == null && entityType != null) { edmOperation = operation.type() == OperationType.FUNCTION ? getClient().getCachedEdm().getBoundFunction( operationFQN, entityType.getFullQualifiedName(), false, parameterNames) : getClient().getCachedEdm().getBoundAction(
function = edm.getBoundFunction(boundFunctionName, bindingParameterTypeName, isBindingParameterCollection, names); if (function == null) {
function = edm.getBoundFunction(boundFunctionName, bindingParameterTypeName, isBindingParameterCollection, names); if (function == null) {
private CustomFunction parseCustomFunction(final FullQualifiedName functionName, final EdmStructuredType referencedType) throws UriParserException, UriValidationException { final List<UriParameter> parameters = ParserHelper.parseFunctionParameters(tokenizer, edm, referencedType, true, aliases); final List<String> parameterNames = ParserHelper.getParameterNames(parameters); final EdmFunction function = edm.getBoundFunction(functionName, referencedType.getFullQualifiedName(), true, parameterNames); if (function == null) { throw new UriParserSemanticException("No function '" + functionName + "' found.", UriParserSemanticException.MessageKeys.FUNCTION_NOT_FOUND, functionName.getFullQualifiedNameAsString()); } ParserHelper.validateFunctionParameters(function, parameters, edm, referencedType, aliases); // The binding parameter and the return type must be of type complex or entity collection. final EdmParameter bindingParameter = function.getParameter(function.getParameterNames().get(0)); final EdmReturnType returnType = function.getReturnType(); if (bindingParameter.getType().getKind() != EdmTypeKind.ENTITY && bindingParameter.getType().getKind() != EdmTypeKind.COMPLEX || !bindingParameter.isCollection() || returnType.getType().getKind() != EdmTypeKind.ENTITY && returnType.getType().getKind() != EdmTypeKind.COMPLEX || !returnType.isCollection()) { throw new UriParserSemanticException("Only entity- or complex-collection functions are allowed.", UriParserSemanticException.MessageKeys.FUNCTION_MUST_USE_COLLECTIONS, functionName.getFullQualifiedNameAsString()); } return new CustomFunctionImpl().setFunction(function).setParameters(parameters); }
private CustomFunction parseCustomFunction(final FullQualifiedName functionName, final EdmStructuredType referencedType) throws UriParserException, UriValidationException { final List<UriParameter> parameters = ParserHelper.parseFunctionParameters(tokenizer, edm, referencedType, true, aliases); final List<String> parameterNames = ParserHelper.getParameterNames(parameters); final EdmFunction function = edm.getBoundFunction(functionName, referencedType.getFullQualifiedName(), true, parameterNames); if (function == null) { throw new UriParserSemanticException("No function '" + functionName + "' found.", UriParserSemanticException.MessageKeys.FUNCTION_NOT_FOUND, functionName.getFullQualifiedNameAsString()); } ParserHelper.validateFunctionParameters(function, parameters, edm, referencedType, aliases); // The binding parameter and the return type must be of type complex or entity collection. final EdmParameter bindingParameter = function.getParameter(function.getParameterNames().get(0)); final EdmReturnType returnType = function.getReturnType(); if (bindingParameter.getType().getKind() != EdmTypeKind.ENTITY && bindingParameter.getType().getKind() != EdmTypeKind.COMPLEX || !bindingParameter.isCollection() || returnType.getType().getKind() != EdmTypeKind.ENTITY && returnType.getType().getKind() != EdmTypeKind.COMPLEX || !returnType.isCollection()) { throw new UriParserSemanticException("Only entity- or complex-collection functions are allowed.", UriParserSemanticException.MessageKeys.FUNCTION_MUST_USE_COLLECTIONS, functionName.getFullQualifiedNameAsString()); } return new CustomFunctionImpl().setFunction(function).setParameters(parameters); }