in lib/server-core/src/main/java/org/apache/olingo/server/core/uri/queryoption/expression/MethodImpl.java [51:120]
public EdmType getType() {
EdmPrimitiveTypeKind kind = null;
switch (method) {
case CONTAINS:
case STARTSWITH:
case ENDSWITH:
case SUBSTRINGOF:
kind = EdmPrimitiveTypeKind.Boolean;
break;
case LENGTH:
case INDEXOF:
kind = EdmPrimitiveTypeKind.Int32;
break;
case SUBSTRING:
case TOLOWER:
case TOUPPER:
case TRIM:
case CONCAT:
kind = EdmPrimitiveTypeKind.String;
break;
case YEAR:
case MONTH:
case DAY:
case HOUR:
case MINUTE:
case SECOND:
kind = EdmPrimitiveTypeKind.Int32;
break;
case FRACTIONALSECONDS:
case TOTALSECONDS:
kind = EdmPrimitiveTypeKind.Decimal;
break;
case DATE:
kind = EdmPrimitiveTypeKind.Date;
break;
case TIME:
kind = EdmPrimitiveTypeKind.TimeOfDay;
break;
case TOTALOFFSETMINUTES:
kind = EdmPrimitiveTypeKind.Int32;
break;
case MINDATETIME:
case MAXDATETIME:
case NOW:
kind = EdmPrimitiveTypeKind.DateTimeOffset;
break;
case ROUND:
case FLOOR:
case CEILING:
// Needs to be refined if Decimal must be distinguished from Double.
kind = EdmPrimitiveTypeKind.Double;
break;
case GEODISTANCE:
case GEOLENGTH:
kind = EdmPrimitiveTypeKind.Double;
break;
case GEOINTERSECTS:
kind = EdmPrimitiveTypeKind.Boolean;
break;
case CAST:
return ((TypeLiteral) parameters.get(parameters.size() - 1)).getType();
case ISOF:
kind = EdmPrimitiveTypeKind.Boolean;
break;
case COMPUTE_AGGREGATE:
kind = null;
}
return kind == null ? null : new ODataImpl().createPrimitiveTypeInstance(kind);
}