@Override public Object getValue(EdmParameter edmParameter, Class<?> runtimeType) throws TeiidProcessingException { for (UriParameter parameter : this.parameters) { if (parameter.getName().equals(edmParameter.getName())) { // In Teiid one can only pass simple literal values, not complex // types, no complex parsing required. And LOBs can not be inlined // for Function return ODataTypeManager.parseLiteral(edmParameter, runtimeType, parameter.getText()); } } return null; } }
protected static void validateFunctionParameters(final EdmFunction function, final List<UriParameter> parameters, final Edm edm, final EdmType referringType, final Map<String, AliasQueryOption> aliases) throws UriParserException, UriValidationException { for (final UriParameter parameter : parameters) { final String parameterName = parameter.getName(); final EdmParameter edmParameter = function.getParameter(parameterName); final boolean isNullable = edmParameter.isNullable(); if (parameter.getText() == null && parameter.getExpression() == null && !isNullable) { if (parameter.getAlias() == null) { // No alias, value is explicitly null. throw new UriValidationException("Missing non-nullable parameter " + parameterName, UriValidationException.MessageKeys.MISSING_PARAMETER, parameterName); } else { final String valueForAlias = aliases.containsKey(parameter.getAlias()) ? parseAliasValue(parameter.getAlias(), edmParameter.getType(), edmParameter.isNullable(), edmParameter.isCollection(), edm, referringType, aliases).getText() : null; // Alias value is missing or explicitly null. if (valueForAlias == null) { throw new UriValidationException("Missing alias for " + parameterName, UriValidationException.MessageKeys.MISSING_ALIAS, parameter.getAlias()); } } } } }
private void putParameters(ObjectNode node, final String name, final List<UriParameter> parameters) { if (!parameters.isEmpty()) { ObjectNode parametersNode = node.putObject(name); for (final UriParameter parameter : parameters) { parametersNode.put(parameter.getName(), parameter.getText() == null ? parameter.getAlias() : parameter.getText()); } } }
private static org.apache.olingo.server.api.uri.queryoption.expression.Expression getKeyPredicateExpression( UriParameter key, OData odata, Column column) { org.apache.olingo.server.api.uri.queryoption.expression.Expression expr = key.getExpression(); if ( expr == null) { EdmPrimitiveTypeKind primitiveTypeKind = ODataTypeManager.odataType(column); expr = new LiteralImpl(key.getText(), odata.createPrimitiveTypeInstance(primitiveTypeKind)); } return expr; }
private UriParameter getParameter(String name, List<UriParameter> keys) { for (UriParameter parameter:keys) { String propertyName = parameter.getName(); if (propertyName.equals(name)) { return parameter; } } return null; }
private static Object getValueOfProperty(UriParameter key) { Object valueOfKey; valueOfKey = key.getText().replaceAll("'",""); return valueOfKey; }
private void putParameters(ObjectNode node, final String name, final List<UriParameter> parameters) { if (!parameters.isEmpty()) { ObjectNode parametersNode = node.putObject(name); for (final UriParameter parameter : parameters) { parametersNode.put(parameter.getName(), parameter.getText() == null ? parameter.getAlias() : parameter.getText()); } } }
protected static List<String> getParameterNames(final List<UriParameter> parameters) { List<String> names = new ArrayList<String>(); for (final UriParameter parameter : parameters) { names.add(parameter.getName()); } return names; }
@SuppressWarnings("unchecked") @Override public <T> List<T> executeFunctionQuery(final List<UriResource> uriResourceParts, final JPADataBaseFunction jpaFunction, final Class<T> resultClass, final EntityManager em) throws ODataApplicationException { final String queryString = generateQueryString(jpaFunction); final Query functionQuery = em.createNativeQuery(queryString, resultClass); final UriResourceFunction uriResourceFunction = (UriResourceFunction) uriResourceParts.get(uriResourceParts.size() - 1); int count = 1; try { if (jpaFunction.isBound()) { // TODO Compound key final Object value = ((UriResourceEntitySet) uriResourceParts.get(0)).getKeyPredicates().get(0).getText(); functionQuery.setParameter(count, value); count += 1; } for (int i = count - 1; i < jpaFunction.getParameter().size(); i++) { final JPAParameter parameter = jpaFunction.getParameter().get(i); final UriParameter uriParameter = findParameterByExternalName(parameter, uriResourceFunction.getParameters()); final Object value = getValue(uriResourceFunction.getFunction(), parameter, uriParameter.getText()); functionQuery.setParameter(count, value); count += 1; } } catch (ODataJPAModelException e) { throw new ODataJPAProcessorException(e, HttpStatusCode.INTERNAL_SERVER_ERROR); } return functionQuery.getResultList(); }
if (p != null && p.getText() != null) { final JPALiteralOperator operator = new JPALiteralOperator(visitor.getOdata(), new ParameterLiteral(p .getText())); jpaParameter[i] = cb.literal(operator.get(parameters.get(i))); } else { try { jpaParameter[i] = (Expression<?>) p.getExpression().accept(visitor).get(); } catch (ExpressionVisitException e) { throw new ODataJPAFilterException(e, HttpStatusCode.NOT_IMPLEMENTED);
public static boolean isUriFromMainTable(UriInfo uriInfo) throws ODataApplicationException{ UriInfoResource uriInfoResource = uriInfo.asUriInfoResource(); List<UriResource> uriResourceParts = uriInfoResource.getUriResourceParts(); UriResource currentUri = uriResourceParts.get(0); UriResourceEntitySet startUriRes = (UriResourceEntitySet) currentUri; for(Iterator<UriParameter> iter=startUriRes.getKeyPredicates().iterator();iter.hasNext();) { UriParameter param=iter.next(); if(param.getName().equalsIgnoreCase(DRAFTS_ISACTIVE_ENTITY)){ return param.getText().equalsIgnoreCase("true"); } } return false; }
private void appendParameters(final JsonGenerator gen, final String name, final List<UriParameter> parameters) throws IOException { if (!parameters.isEmpty()) { Map<String, String> parameterMap = new LinkedHashMap<String, String>(); for (final UriParameter parameter : parameters) { parameterMap.put(parameter.getName(), parameter.getText() == null ? parameter.getAlias() : parameter.getText()); } gen.writeFieldName(name); DebugResponseHelperImpl.appendJsonTable(gen, parameterMap); } }
protected static void validateFunctionParameters(final EdmFunction function, final List<UriParameter> parameters, final Edm edm, final EdmType referringType, final Map<String, AliasQueryOption> aliases) throws UriParserException, UriValidationException { for (final UriParameter parameter : parameters) { final String parameterName = parameter.getName(); final EdmParameter edmParameter = function.getParameter(parameterName); final boolean isNullable = edmParameter.isNullable(); if (parameter.getText() == null && parameter.getExpression() == null && !isNullable) { if (parameter.getAlias() == null) { // No alias, value is explicitly null. throw new UriValidationException("Missing non-nullable parameter " + parameterName, UriValidationException.MessageKeys.MISSING_PARAMETER, parameterName); } else { final String valueForAlias = aliases.containsKey(parameter.getAlias()) ? parseAliasValue(parameter.getAlias(), edmParameter.getType(), edmParameter.isNullable(), edmParameter.isCollection(), edm, referringType, aliases).getText() : null; // Alias value is missing or explicitly null. if (valueForAlias == null) { throw new UriValidationException("Missing alias for " + parameterName, UriValidationException.MessageKeys.MISSING_ALIAS, parameter.getAlias()); } } } } }
protected static List<String> getParameterNames(final List<UriParameter> parameters) { List<String> names = new ArrayList<String>(); for (final UriParameter parameter : parameters) { names.add(parameter.getName()); } return names; }
@SuppressWarnings("unchecked") @Override public <T> List<T> executeFunctionQuery(final List<UriResource> uriResourceParts, final JPADataBaseFunction jpaFunction, final Class<T> resultClass, final EntityManager em) throws ODataApplicationException { final UriResourceFunction uriResourceFunction = (UriResourceFunction) uriResourceParts.get(uriResourceParts.size() - 1); final String queryString = generateQueryString(jpaFunction); final Query functionQuery = em.createNativeQuery(queryString, resultClass); int count = 1; try { for (final JPAParameter parameter : jpaFunction.getParameter()) { final UriParameter uriParameter = findParameterByExternalName(parameter, uriResourceFunction.getParameters()); final Object value = getValue(uriResourceFunction.getFunction(), parameter, uriParameter.getText()); functionQuery.setParameter(count, value); count += 1; } } catch (ODataJPAModelException e) { throw new ODataJPAProcessorException(e, HttpStatusCode.INTERNAL_SERVER_ERROR); } return functionQuery.getResultList(); }
/** * This method wraps list of eir parameters into single Data Entry object. * * @param keys list of URI parameters * @return DataEntry * @see UriParameter * @see DataEntry */ private ODataEntry wrapKeyParamToDataEntry(List<UriParameter> keys) { ODataEntry entry = new ODataEntry(); for (UriParameter key : keys) { String value = key.getText(); if (value.startsWith("'") && value.endsWith("'")) { value = value.substring(1, value.length() - 1); } entry.addValue(key.getName(), value); } return entry; }
private void appendParameters(final JsonGenerator gen, final String name, final List<UriParameter> parameters) throws IOException { if (!parameters.isEmpty()) { Map<String, String> parameterMap = new LinkedHashMap<String, String>(); for (final UriParameter parameter : parameters) { parameterMap.put(parameter.getName(), parameter.getText() == null ? parameter.getAlias() : parameter.getText()); } gen.writeFieldName(name); DebugResponseHelperImpl.appendJsonTable(gen, parameterMap); } }
private UriParameter findUriParameter(final JPAParameter jpaFunctionParam) { for (final UriParameter uriParam : uriParams) { if (uriParam.getName().equals(jpaFunctionParam.getName())) { return uriParam; } } return null; }
@SuppressWarnings("unchecked") @Override public <T> java.util.List<T> executeFunctionQuery(final List<UriResource> uriResourceParts, final JPADataBaseFunction jpaFunction, final Class<T> resultClass, final EntityManager em) throws ODataApplicationException { final UriResourceFunction uriResourceFunction = (UriResourceFunction) uriResourceParts.get(uriResourceParts.size() - 1); final String queryString = generateQueryString(jpaFunction); final Query functionQuery = em.createNativeQuery(queryString, resultClass); int count = 1; try { for (final JPAParameter parameter : jpaFunction.getParameter()) { final UriParameter uriParameter = findParameterByExternalName(parameter, uriResourceFunction.getParameters()); final Object value = getValue(uriResourceFunction.getFunction(), parameter, uriParameter.getText()); functionQuery.setParameter(count, value); count += 1; } } catch (ODataJPAModelException e) { throw new ODataJPAProcessorException(e, HttpStatusCode.INTERNAL_SERVER_ERROR); } return functionQuery.getResultList(); }
/** * Builds a key predicate for the ContextURL. * @param keys the keys as a list of {@link UriParameter} instances * @return a String with the key predicate */ public static String buildKeyPredicate(final List<UriParameter> keys) throws SerializerException { if (keys == null || keys.isEmpty()) { return null; } else if (keys.size() == 1) { return Encoder.encode(keys.get(0).getText()); } else { StringBuilder result = new StringBuilder(); for (final UriParameter key : keys) { if (result.length() > 0) { result.append(','); } result.append(Encoder.encode(key.getName())).append('=').append(Encoder.encode(key.getText())); } return result.toString(); } } }