@VisibleForTesting boolean isNonEntityReturnedType(Class returnedType) { return this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .getDatastoreCompatibleType(returnedType).isPresent(); }
/** * Convert collection-like param from the query method into an array of compatible types * for Datastore. * @param param the raw param * @return an array of a compatible type. */ protected Object[] convertCollectionParamToCompatibleArray(List<?> param) { List converted = param.stream() .map((x) -> this.datastoreTemplate.getDatastoreEntityConverter().getConversions().convertOnWriteSingle(x) .get()) .collect(Collectors.toList()); return converted.toArray( (Object[]) Array.newInstance(converted.isEmpty() ? String.class // if there are no items in the param : converted.get(0).getClass(), converted.size())); }
/** * Convert collection-like param from the query method into an array of compatible types * for Datastore. * @param param the raw param * @return an array of a compatible type. */ protected Object[] convertCollectionParamToCompatibleArray(List<?> param) { List converted = param.stream() .map((x) -> this.datastoreTemplate.getDatastoreEntityConverter().getConversions().convertOnWriteSingle(x) .get()) .collect(Collectors.toList()); return converted.toArray( (Object[]) Array.newInstance(converted.isEmpty() ? String.class // if there are no items in the param : converted.get(0).getClass(), converted.size())); }
boolean isNonEntityReturnedType(Class returnedType) { return this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .getDatastoreCompatibleType(returnedType).isPresent(); }
private Object convertSingularResult(Class returnedItemType, boolean isNonEntityReturnType, List rawResult) { if (this.queryMethod.isCountQuery()) { return rawResult.size(); } else if (this.queryMethod.isExistsQuery()) { return !rawResult.isEmpty(); } if (rawResult.size() > 1) { throw new DatastoreDataException( "The query method returns a singular object but " + "the query returned more than one result."); } return isNonEntityReturnType ? this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .convertOnRead(rawResult.get(0), null, returnedItemType) : this.queryMethod.getResultProcessor().processResult(rawResult.get(0)); }
private Object convertSingularResult(Class returnedItemType, boolean isNonEntityReturnType, List rawResult) { if (this.queryMethod.isCountQuery()) { return rawResult.size(); } else if (this.queryMethod.isExistsQuery()) { return !rawResult.isEmpty(); } if (rawResult.size() > 1) { throw new DatastoreDataException( "The query method returns a singular object but " + "the query returned more than one result."); } return isNonEntityReturnType ? this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .convertOnRead(rawResult.get(0), null, returnedItemType) : this.queryMethod.getResultProcessor().processResult(rawResult.get(0)); }
@VisibleForTesting protected Object convertResultCollection(Object result, Class<?> collectionType) { return getDatastoreTemplate().getDatastoreEntityConverter().getConversions() .convertOnRead(result, collectionType, getQueryMethod().getReturnedObjectType()); }
private Object convertCollectionResult(Class returnedItemType, boolean isNonEntityReturnType, List rawResult) { Object result = this.datastoreTemplate.getDatastoreEntityConverter() .getConversions().convertOnRead( isNonEntityReturnType ? rawResult : applyProjection(rawResult), this.queryMethod.getCollectionReturnType(), returnedItemType); return result; }
private Object convertCollectionResult(Class returnedItemType, boolean isNonEntityReturnType, List rawResult) { Object result = this.datastoreTemplate.getDatastoreEntityConverter() .getConversions().convertOnRead( isNonEntityReturnType ? rawResult : applyProjection(rawResult), this.queryMethod.getCollectionReturnType(), returnedItemType); return result; }
private GqlQuery<? extends BaseEntity> bindArgsToGqlQuery(String gql, List<String> tags, List vals) { Builder builder = GqlQuery.newGqlQueryBuilder(gql); builder.setAllowLiteral(true); if (tags.size() != vals.size()) { throw new DatastoreDataException("Annotated GQL Query Method " + this.queryMethod.getName() + " has " + tags.size() + " tags but a different number of parameter values: " + vals.size()); } for (int i = 0; i < tags.size(); i++) { Object val = vals.get(i); Object boundVal; if (ValueUtil.isCollectionLike(val.getClass())) { boundVal = convertCollectionParamToCompatibleArray((List) ValueUtil.toListIfArray(val)); } else { boundVal = this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .convertOnWriteSingle(val).get(); } DatastoreNativeTypes.bindValueToGqlBuilder(builder, tags.get(i), boundVal); } return builder.build(); }
private GqlQuery<? extends BaseEntity> bindArgsToGqlQuery(String gql, List<String> tags, List vals) { Builder builder = GqlQuery.newGqlQueryBuilder(gql); builder.setAllowLiteral(true); if (tags.size() != vals.size()) { throw new DatastoreDataException("Annotated GQL Query Method " + this.queryMethod.getName() + " has " + tags.size() + " tags but a different number of parameter values: " + vals.size()); } for (int i = 0; i < tags.size(); i++) { Object val = vals.get(i); Object boundVal; if (ValueUtil.isCollectionLike(val.getClass())) { boundVal = convertCollectionParamToCompatibleArray((List) ValueUtil.toListIfArray(val)); } else { boundVal = this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .convertOnWriteSingle(val).get(); } DatastoreNativeTypes.bindValueToGqlBuilder(builder, tags.get(i), boundVal); } return builder.build(); }
protected Object convertResultCollection(Object result, Class<?> collectionType) { return getDatastoreTemplate().getDatastoreEntityConverter().getConversions() .convertOnRead(result, collectionType, getQueryMethod().getReturnedObjectType()); }
try { ReadWriteConversions converter = this.datastoreTemplate.getDatastoreEntityConverter().getConversions();
try { ReadWriteConversions converter = this.datastoreTemplate.getDatastoreEntityConverter().getConversions();