/** * Encode a {@link Collection} to JSON and potentially apply a {@link Function mapping function} before encoding. * * @param provider * @param value * @param mappingFunction * @param defaultCodec * @param <I> Input value type. * @param <V> Target type. * @return */ protected <I, V> String encodeCollection(CodecRegistryProvider provider, Iterable<I> value, Function<I, V> mappingFunction, Supplier<Codec<V>> defaultCodec) { StringWriter writer = new StringWriter(); writer.append("["); value.forEach(it -> { if (writer.getBuffer().length() > 1) { writer.append(", "); } doEncode(provider, writer, mappingFunction.apply(it), defaultCodec); }); writer.append("]"); writer.flush(); return writer.toString(); }
/** * Encode a {@link Collection} to JSON and potentially apply a {@link Function mapping function} before encoding. * * @param provider * @param value * @param mappingFunction * @param defaultCodec * @param <I> Input value type. * @param <V> Target type. * @return */ protected <I, V> String encodeCollection(CodecRegistryProvider provider, Iterable<I> value, Function<I, V> mappingFunction, Supplier<Codec<V>> defaultCodec) { StringWriter writer = new StringWriter(); writer.append("["); value.forEach(it -> { if (writer.getBuffer().length() > 1) { writer.append(", "); } doEncode(provider, writer, mappingFunction.apply(it), defaultCodec); }); writer.append("]"); writer.flush(); return writer.toString(); }
/** * Returns the serialized value to be used for the given {@link ParameterBinding}. * * @param accessor must not be {@literal null}. * @param parameters * @param binding must not be {@literal null}. * @return */ @SuppressWarnings("unchecked") private String getParameterValueForBinding(MongoParameterAccessor accessor, MongoParameters parameters, ParameterBinding binding) { Object value = binding.isExpression() ? evaluateExpression(binding.getExpression(), parameters, accessor.getValues()) : accessor.getBindableValue(binding.getParameterIndex()); if (value instanceof String && binding.isQuoted()) { if (binding.isExpression() && ((String) value).startsWith("{")) { return (String) value; } return binding.isExpression() ? JSON.serialize(value) : QuotedString.unquote(JSON.serialize(value)); } return EncodableValue.create(value).encode(codecRegistryProvider, binding.isQuoted()); }
/** * Encode a {@code value} to JSON. * * @param provider * @param value * @param defaultCodec * @param <V> * @return */ protected <V> String encode(CodecRegistryProvider provider, V value, Supplier<Codec<V>> defaultCodec) { StringWriter writer = new StringWriter(); doEncode(provider, writer, value, defaultCodec); return writer.toString(); }
/** * Returns the serialized value to be used for the given {@link ParameterBinding}. * * @param accessor must not be {@literal null}. * @param parameters * @param binding must not be {@literal null}. * @return */ @SuppressWarnings("unchecked") private String getParameterValueForBinding(MongoParameterAccessor accessor, MongoParameters parameters, ParameterBinding binding) { Object value = binding.isExpression() ? evaluateExpression(binding.getExpression(), parameters, accessor.getValues()) : accessor.getBindableValue(binding.getParameterIndex()); if (value instanceof String && binding.isQuoted()) { if (binding.isExpression() && ((String) value).startsWith("{")) { return (String) value; } return binding.isExpression() ? JSON.serialize(value) : QuotedString.unquote(JSON.serialize(value)); } return EncodableValue.create(value).encode(codecRegistryProvider, binding.isQuoted()); }
/** * Encode a {@code value} to JSON. * * @param provider * @param value * @param defaultCodec * @param <V> * @return */ protected <V> String encode(CodecRegistryProvider provider, V value, Supplier<Codec<V>> defaultCodec) { StringWriter writer = new StringWriter(); doEncode(provider, writer, value, defaultCodec); return writer.toString(); }