@Override public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException { return getUnderlyingType().fromUriLiteral(literal); } }
@Override public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException { return getUnderlyingType().fromUriLiteral(literal); } }
protected Object tryCast(final String literal, final EdmPrimitiveType type) { try { return castTo(type.fromUriLiteral(literal), type); } catch (EdmPrimitiveTypeException e) { return null; } }
@Override public Object get() throws ODataApplicationException { final EdmPrimitiveType edmType = ((EdmPrimitiveType) literal.getType()); try { final Class<?> defaultType = edmType.getDefaultType(); final Constructor<?> c = defaultType.getConstructor(String.class); return c.newInstance(edmType.fromUriLiteral(literalText)); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | EdmPrimitiveTypeException | InstantiationException | NoSuchMethodException | SecurityException e) { throw new ODataJPAFilterException(e, HttpStatusCode.INTERNAL_SERVER_ERROR); } }
private Object convertKeyValue(final OData odata, final String keyElementValue, final JPAPath path) throws ODataJPAModelException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException, EdmPrimitiveTypeException { EdmPrimitiveType edmType = odata.createPrimitiveTypeInstance(path.getLeaf().getEdmType()); final Class<?> defaultType = edmType.getDefaultType(); final Constructor<?> c = defaultType.getConstructor(String.class); final Object value = c.newInstance(edmType.fromUriLiteral(keyElementValue)); return helper.processAttributeConverter(value, path.getLeaf()); }
public static Object convertValueOnFacet(final OData odata, JPAParamaterFacet returnType, final String value) throws ODataJPAFilterException { try { final EdmPrimitiveTypeKind edmTypeKind = EdmPrimitiveTypeKind.valueOfFQN(returnType.getTypeFQN()); final EdmPrimitiveType edmType = odata.createPrimitiveTypeInstance(edmTypeKind); String targetValue; targetValue = edmType.fromUriLiteral(value); return edmType.valueOfString(targetValue, true, returnType.getMaxLength(), returnType.getPrecision(), returnType .getScale(), true, returnType.getType()); } catch (EdmPrimitiveTypeException | ODataJPAModelException e) { throw new ODataJPAFilterException(e, HttpStatusCode.INTERNAL_SERVER_ERROR); } }
private static UriParameter createUriParameter(final EdmProperty edmProperty, final String parameterName, final String literalValue, final Edm edm, final EdmType referringType, final Map<String, AliasQueryOption> aliases) throws UriParserException, UriValidationException { final AliasQueryOption alias = literalValue.startsWith("@") ? getKeyAlias(literalValue, edmProperty, edm, referringType, aliases) : null; final String value = alias == null ? literalValue : alias.getText(); final EdmPrimitiveType primitiveType = (EdmPrimitiveType) edmProperty.getType(); try { if (!(primitiveType.validate(primitiveType.fromUriLiteral(value), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), edmProperty.isUnicode()))) { throw new UriValidationException("Invalid key property", UriValidationException.MessageKeys.INVALID_KEY_PROPERTY, parameterName); } } catch (final EdmPrimitiveTypeException e) { throw new UriValidationException("Invalid key property", e, UriValidationException.MessageKeys.INVALID_KEY_PROPERTY, parameterName); } return new UriParameterImpl() .setName(parameterName) .setText("null".equals(literalValue) ? null : literalValue) .setAlias(alias == null ? null : literalValue) .setExpression(alias == null ? null : alias.getValue() == null ? new LiteralImpl(value, primitiveType) : alias.getValue()); }
private static UriParameter createUriParameter(final EdmProperty edmProperty, final String parameterName, final String literalValue, final Edm edm, final EdmType referringType, final Map<String, AliasQueryOption> aliases) throws UriParserException, UriValidationException { final AliasQueryOption alias = literalValue.startsWith("@") ? getKeyAlias(literalValue, edmProperty, edm, referringType, aliases) : null; final String value = alias == null ? literalValue : alias.getText(); final EdmPrimitiveType primitiveType = (EdmPrimitiveType) edmProperty.getType(); try { if (!(primitiveType.validate(primitiveType.fromUriLiteral(value), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), edmProperty.isUnicode()))) { throw new UriValidationException("Invalid key property", UriValidationException.MessageKeys.INVALID_KEY_PROPERTY, parameterName); } } catch (final EdmPrimitiveTypeException e) { throw new UriValidationException("Invalid key property", e, UriValidationException.MessageKeys.INVALID_KEY_PROPERTY, parameterName); } return new UriParameterImpl() .setName(parameterName) .setText("null".equals(literalValue) ? null : literalValue) .setAlias(alias == null ? null : literalValue) .setExpression(alias == null ? null : alias.getValue() == null ? new LiteralImpl(value, primitiveType) : alias.getValue()); }
edmParameter.getType(), edmParameter.isNullable(), edmParameter.isCollection(), edm, type, aliases).getText() : null; primitiveType.valueOfString(primitiveType.fromUriLiteral(text), edmParameter.isNullable(), edmParameter.getMaxLength(), edmParameter.getPrecision(), edmParameter.getScale(), true,
@SuppressWarnings("unchecked") public static <T> Object convertValueOnAttribute(final OData odata, final JPAAttribute attribute, final String value, final Boolean isUri) throws ODataJPAFilterException { try { final CsdlProperty edmProperty = (CsdlProperty) attribute.getProperty(); final EdmPrimitiveTypeKind edmTypeKind = JPATypeConvertor.convertToEdmSimpleType(attribute); // TODO literal does not convert decimals without scale properly String targetValue = null; final EdmPrimitiveType edmType = odata.createPrimitiveTypeInstance(edmTypeKind); if (isUri) { targetValue = edmType.fromUriLiteral(value); } else { targetValue = value; } // Converter if (attribute.getConverter() != null) { AttributeConverter<?, T> dbConverter = attribute.getConverter(); return dbConverter.convertToEntityAttribute( (T) edmType.valueOfString(targetValue, edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), true, attribute.getType())); } else return edmType.valueOfString(targetValue, edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), true, attribute.getType()); } catch (EdmPrimitiveTypeException | ODataJPAModelException e) { throw new ODataJPAFilterException(e, HttpStatusCode.INTERNAL_SERVER_ERROR); } }
edmParameter.getType(), edmParameter.isNullable(), edmParameter.isCollection(), edm, type, aliases).getText() : null; primitiveType.valueOfString(primitiveType.fromUriLiteral(text), edmParameter.isNullable(), edmParameter.getMaxLength(), edmParameter.getPrecision(), edmParameter.getScale(), true,
@Override public Parameter parameter(final String content, final EdmParameter parameter) throws DeserializerException { final EdmType type = parameter.getType(); final EdmTypeKind kind = type.getKind(); if ((kind == EdmTypeKind.PRIMITIVE || kind == EdmTypeKind.DEFINITION || kind == EdmTypeKind.ENUM) && !parameter.isCollection()) { // The content is a primitive URI literal. Parameter result = new Parameter(); result.setName(parameter.getName()); result.setType(type.getFullQualifiedName().getFullQualifiedNameAsString()); final EdmPrimitiveType primitiveType = (EdmPrimitiveType) type; try { result.setValue(type.getKind() == EdmTypeKind.ENUM ? ValueType.ENUM : ValueType.PRIMITIVE, primitiveType.valueOfString(primitiveType.fromUriLiteral(content), parameter.isNullable(), parameter.getMaxLength(), parameter.getPrecision(), parameter.getScale(), true, parameter.getMapping() == null ? primitiveType.getDefaultType() : parameter.getMapping().getMappedJavaClass())); } catch (final EdmPrimitiveTypeException e) { throw new DeserializerException( "Invalid value '" + content + "' for parameter " + parameter.getName(), e, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, parameter.getName()); } return result; } else { // The content is a JSON array or object. return new ODataJsonDeserializer(ContentType.JSON).parameter(content, parameter); } }
@Override public Parameter parameter(final String content, final EdmParameter parameter) throws DeserializerException { final EdmType type = parameter.getType(); final EdmTypeKind kind = type.getKind(); if ((kind == EdmTypeKind.PRIMITIVE || kind == EdmTypeKind.DEFINITION || kind == EdmTypeKind.ENUM) && !parameter.isCollection()) { // The content is a primitive URI literal. Parameter result = new Parameter(); result.setName(parameter.getName()); result.setType(type.getFullQualifiedName().getFullQualifiedNameAsString()); final EdmPrimitiveType primitiveType = (EdmPrimitiveType) type; try { result.setValue(type.getKind() == EdmTypeKind.ENUM ? ValueType.ENUM : ValueType.PRIMITIVE, primitiveType.valueOfString(primitiveType.fromUriLiteral(content), parameter.isNullable(), parameter.getMaxLength(), parameter.getPrecision(), parameter.getScale(), true, parameter.getMapping() == null ? primitiveType.getDefaultType() : parameter.getMapping().getMappedJavaClass())); } catch (final EdmPrimitiveTypeException e) { throw new DeserializerException( "Invalid value '" + content + "' for parameter " + parameter.getName(), e, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, parameter.getName()); } return result; } else { // The content is a JSON array or object. return new ODataJsonDeserializer(ContentType.JSON).parameter(content, parameter); } }