@Override public boolean isCompatible(final EdmPrimitiveType primitiveType) { return this == primitiveType || getUnderlyingType().isCompatible(primitiveType); }
@Override public boolean isCompatible(final EdmPrimitiveType primitiveType) { return this == primitiveType || getUnderlyingType().isCompatible(primitiveType); }
private void checkEqualityTypes(final Expression left, final Expression right) throws UriParserException { checkNoCollection(left); checkNoCollection(right); final EdmType leftType = getType(left); final EdmType rightType = getType(right); if (leftType == null || rightType == null || leftType.equals(rightType)) { return; } // Numeric promotion for Edm.Byte and Edm.SByte if (isType(leftType, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte) && isType(rightType, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte)) { return; } if (leftType.getKind() != EdmTypeKind.PRIMITIVE || rightType.getKind() != EdmTypeKind.PRIMITIVE || !(((EdmPrimitiveType) leftType).isCompatible((EdmPrimitiveType) rightType) || ((EdmPrimitiveType) rightType).isCompatible((EdmPrimitiveType) leftType))) { throw new UriParserSemanticException("Incompatible types.", UriParserSemanticException.MessageKeys.TYPES_NOT_COMPATIBLE, leftType.getFullQualifiedName().getFullQualifiedNameAsString(), rightType.getFullQualifiedName().getFullQualifiedNameAsString()); } }
private void checkEqualityTypes(final Expression left, final Expression right) throws UriParserException { checkNoCollection(left); checkNoCollection(right); final EdmType leftType = getType(left); final EdmType rightType = getType(right); if (leftType == null || rightType == null || leftType.equals(rightType)) { return; } // Numeric promotion for Edm.Byte and Edm.SByte if (isType(leftType, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte) && isType(rightType, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte)) { return; } if (leftType.getKind() != EdmTypeKind.PRIMITIVE || rightType.getKind() != EdmTypeKind.PRIMITIVE || !(((EdmPrimitiveType) leftType).isCompatible((EdmPrimitiveType) rightType) || ((EdmPrimitiveType) rightType).isCompatible((EdmPrimitiveType) leftType))) { throw new UriParserSemanticException("Incompatible types.", UriParserSemanticException.MessageKeys.TYPES_NOT_COMPATIBLE, leftType.getFullQualifiedName().getFullQualifiedNameAsString(), rightType.getFullQualifiedName().getFullQualifiedNameAsString()); } }
private void checkRelationTypes(final Expression left, final Expression right) throws UriParserException { checkNoCollection(left); checkNoCollection(right); final EdmType leftType = getType(left); final EdmType rightType = getType(right); checkType(left, EdmPrimitiveTypeKind.Int16, EdmPrimitiveTypeKind.Int32, EdmPrimitiveTypeKind.Int64, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte, EdmPrimitiveTypeKind.Decimal, EdmPrimitiveTypeKind.Single, EdmPrimitiveTypeKind.Double, EdmPrimitiveTypeKind.Boolean, EdmPrimitiveTypeKind.Guid, EdmPrimitiveTypeKind.String, EdmPrimitiveTypeKind.Date, EdmPrimitiveTypeKind.TimeOfDay, EdmPrimitiveTypeKind.DateTimeOffset, EdmPrimitiveTypeKind.Duration); checkType(right, EdmPrimitiveTypeKind.Int16, EdmPrimitiveTypeKind.Int32, EdmPrimitiveTypeKind.Int64, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte, EdmPrimitiveTypeKind.Decimal, EdmPrimitiveTypeKind.Single, EdmPrimitiveTypeKind.Double, EdmPrimitiveTypeKind.Boolean, EdmPrimitiveTypeKind.Guid, EdmPrimitiveTypeKind.String, EdmPrimitiveTypeKind.Date, EdmPrimitiveTypeKind.TimeOfDay, EdmPrimitiveTypeKind.DateTimeOffset, EdmPrimitiveTypeKind.Duration); if (leftType == null || rightType == null) { return; } if (!(((EdmPrimitiveType) leftType).isCompatible((EdmPrimitiveType) rightType) || ((EdmPrimitiveType) rightType).isCompatible((EdmPrimitiveType) leftType))) { throw new UriParserSemanticException("Incompatible types.", UriParserSemanticException.MessageKeys.TYPES_NOT_COMPATIBLE, leftType.getFullQualifiedName().getFullQualifiedNameAsString(), rightType.getFullQualifiedName().getFullQualifiedNameAsString()); } }
private void checkRelationTypes(final Expression left, final Expression right) throws UriParserException { checkNoCollection(left); checkNoCollection(right); final EdmType leftType = getType(left); final EdmType rightType = getType(right); checkType(left, EdmPrimitiveTypeKind.Int16, EdmPrimitiveTypeKind.Int32, EdmPrimitiveTypeKind.Int64, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte, EdmPrimitiveTypeKind.Decimal, EdmPrimitiveTypeKind.Single, EdmPrimitiveTypeKind.Double, EdmPrimitiveTypeKind.Boolean, EdmPrimitiveTypeKind.Guid, EdmPrimitiveTypeKind.String, EdmPrimitiveTypeKind.Date, EdmPrimitiveTypeKind.TimeOfDay, EdmPrimitiveTypeKind.DateTimeOffset, EdmPrimitiveTypeKind.Duration); checkType(right, EdmPrimitiveTypeKind.Int16, EdmPrimitiveTypeKind.Int32, EdmPrimitiveTypeKind.Int64, EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte, EdmPrimitiveTypeKind.Decimal, EdmPrimitiveTypeKind.Single, EdmPrimitiveTypeKind.Double, EdmPrimitiveTypeKind.Boolean, EdmPrimitiveTypeKind.Guid, EdmPrimitiveTypeKind.String, EdmPrimitiveTypeKind.Date, EdmPrimitiveTypeKind.TimeOfDay, EdmPrimitiveTypeKind.DateTimeOffset, EdmPrimitiveTypeKind.Duration); if (leftType == null || rightType == null) { return; } if (!(((EdmPrimitiveType) leftType).isCompatible((EdmPrimitiveType) rightType) || ((EdmPrimitiveType) rightType).isCompatible((EdmPrimitiveType) leftType))) { throw new UriParserSemanticException("Incompatible types.", UriParserSemanticException.MessageKeys.TYPES_NOT_COMPATIBLE, leftType.getFullQualifiedName().getFullQualifiedNameAsString(), rightType.getFullQualifiedName().getFullQualifiedNameAsString()); } }