public String convert(byte[] source) { return serializer.deserialize(source); } }
@SuppressWarnings("unchecked") private K deserializeKey(byte[] value) { return keySerializer != null ? (K) keySerializer.deserialize(value) : (K) value; }
public static <T> Map<T, T> deserialize(@Nullable Map<byte[], byte[]> rawValues, RedisSerializer<T> redisSerializer) { if (rawValues == null) { return Collections.emptyMap(); } Map<T, T> ret = new LinkedHashMap<>(rawValues.size()); for (Map.Entry<byte[], byte[]> entry : rawValues.entrySet()) { ret.put(redisSerializer.deserialize(entry.getKey()), redisSerializer.deserialize(entry.getValue())); } return ret; }
@Override @SuppressWarnings("unchecked") public T read(ByteBuffer buffer) { if (serializer == null) { return (T) buffer; } return serializer.deserialize(ByteUtils.extractBytes(buffer)); }
@SuppressWarnings("unchecked") public static <HK, HV> Map<HK, HV> deserialize(@Nullable Map<byte[], byte[]> rawValues, @Nullable RedisSerializer<HK> hashKeySerializer, @Nullable RedisSerializer<HV> hashValueSerializer) { if (rawValues == null) { return Collections.emptyMap(); } Map<HK, HV> map = new LinkedHashMap<>(rawValues.size()); for (Map.Entry<byte[], byte[]> entry : rawValues.entrySet()) { // May want to deserialize only key or value HK key = hashKeySerializer != null ? hashKeySerializer.deserialize(entry.getKey()) : (HK) entry.getKey(); HV value = hashValueSerializer != null ? hashValueSerializer.deserialize(entry.getValue()) : (HV) entry.getValue(); map.put(key, value); } return map; } }
String deserializeString(byte[] value) { return (String) stringSerializer().deserialize(value); }
@SuppressWarnings("unchecked") static <T extends Collection<?>> T deserializeValues(@Nullable Collection<byte[]> rawValues, Class<T> type, @Nullable RedisSerializer<?> redisSerializer) { // connection in pipeline/multi mode if (rawValues == null) { return (T) CollectionFactory.createCollection(type, 0); } Collection<Object> values = (List.class.isAssignableFrom(type) ? new ArrayList<>(rawValues.size()) : new LinkedHashSet<>(rawValues.size())); for (byte[] bs : rawValues) { values.add(redisSerializer.deserialize(bs)); } return (T) values; }
/** * Deserialize {@code result} using {@link RedisSerializer} to the serializer type. Collection types and intermediate * collection elements are deserialized recursivly. * * @param resultSerializer must not be {@literal null}. * @param result must not be {@literal null}. * @return the deserialized result. */ @SuppressWarnings({ "unchecked" }) static <T> T deserializeResult(RedisSerializer<T> resultSerializer, Object result) { if (result instanceof byte[]) { return resultSerializer.deserialize((byte[]) result); } if (result instanceof List) { List<Object> results = new ArrayList<>(((List) result).size()); for (Object obj : (List) result) { results.add(deserializeResult(resultSerializer, obj)); } return (T) results; } return (T) result; }
/** * Deserialize {@link #getStream() key} with the {@literal streamSerializer}, field names with the * {@literal fieldSerializer} and values with the {@literal valueSerializer}. An already assigned {@link RecordId id} * is carried over to the new instance. * * @param streamSerializer can be {@literal null} if the key suites already the target format. * @param fieldSerializer can be {@literal null} if the fields suite already the target format. * @param valueSerializer can be {@literal null} if the values suite already the target format. * @return new {@link MapRecord} holding the deserialized values. */ default <K, HK, HV> MapRecord<K, HK, HV> deserialize(@Nullable RedisSerializer<? extends K> streamSerializer, @Nullable RedisSerializer<? extends HK> fieldSerializer, @Nullable RedisSerializer<? extends HV> valueSerializer) { return mapEntries(it -> Collections .<HK, HV> singletonMap(fieldSerializer != null ? fieldSerializer.deserialize(it.getKey()) : (HK) it.getKey(), valueSerializer != null ? valueSerializer.deserialize(it.getValue()) : (HV) it.getValue()) .entrySet().iterator().next()) .withStreamKey(streamSerializer != null ? streamSerializer.deserialize(getStream()) : (K) getStream()); }
@SuppressWarnings({ "unchecked", "rawtypes" }) private Set<TypedTuple<V>> convertTupleValues(Set<Tuple> rawValues, @Nullable RedisSerializer valueSerializer) { Set<TypedTuple<V>> set = new LinkedHashSet<>(rawValues.size()); for (Tuple rawValue : rawValues) { Object value = rawValue.getValue(); if (valueSerializer != null) { value = valueSerializer.deserialize(rawValue.getValue()); } set.add(new DefaultTypedTuple(value, rawValue.getScore())); } return set; }
@SuppressWarnings("unchecked") <HV> HV deserializeHashValue(byte[] value) { if (hashValueSerializer() == null) { return (HV) value; } return (HV) hashValueSerializer().deserialize(value); }
/** * Extract the message body from the given Redis message. * * @param message the Redis <code>Message</code> * @return the content of the message, to be passed into the listener method as argument */ protected Object extractMessage(Message message) { if (serializer != null) { return serializer.deserialize(message.getBody()); } return message.getBody(); }
@SuppressWarnings("unchecked") K deserializeKey(byte[] value) { if (keySerializer() == null) { return (K) value; } return (K) keySerializer().deserialize(value); }
@SuppressWarnings("unchecked") V deserializeValue(byte[] value) { if (valueSerializer() == null) { return (V) value; } return (V) valueSerializer().deserialize(value); }
@SuppressWarnings({ "unchecked" }) <HK> HK deserializeHashKey(byte[] value) { if (hashKeySerializer() == null) { return (HK) value; } return (HK) hashKeySerializer().deserialize(value); }
/** * Deserialize {@link #getStream() key} with the {@literal streamSerializer}, field names with the * {@literal fieldSerializer} and values with the {@literal valueSerializer}. An already assigned {@link RecordId id} * is carried over to the new instance. * * @param streamSerializer can be {@literal null} if the key suites already the target format. * @param fieldSerializer can be {@literal null} if the fields suite already the target format. * @param valueSerializer can be {@literal null} if the values suite already the target format. * @return new {@link MapRecord} holding the deserialized values. */ @SuppressWarnings({ "unchecked", "rawtypes" }) default <K, HK, HV> MapRecord<K, HK, HV> deserialize(@Nullable RedisSerializer<? extends K> streamSerializer, @Nullable RedisSerializer<? extends HK> fieldSerializer, @Nullable RedisSerializer<? extends HV> valueSerializer) { return mapEntries(it -> Collections.<HK, HV> singletonMap( fieldSerializer != null ? fieldSerializer.deserialize(ByteUtils.getBytes(it.getKey())) : (HK) it.getKey(), valueSerializer != null ? valueSerializer.deserialize(ByteUtils.getBytes(it.getValue())) : (HV) it.getValue()) .entrySet().iterator().next()).withStreamKey( streamSerializer != null ? streamSerializer.deserialize(ByteUtils.getBytes(getStream())) : (K) getStream()); }
public StringTuple convert(Tuple source) { return new DefaultStringTuple(source, serializer.deserialize(source.getValue())); } }
@Test // gh-309 public void onMessageCreatedCustomSerializer() { MapSession session = this.cached; byte[] pattern = "".getBytes(StandardCharsets.UTF_8); byte[] body = new byte[0]; String channel = "spring:session:event:0:created:" + session.getId(); given(this.defaultSerializer.deserialize(body)) .willReturn(new HashMap<String, Object>()); DefaultMessage message = new DefaultMessage( channel.getBytes(StandardCharsets.UTF_8), body); this.redisRepository.setApplicationEventPublisher(this.publisher); this.redisRepository.onMessage(message, pattern); verify(this.publisher).publishEvent(this.event.capture()); assertThat(this.event.getValue().getSessionId()).isEqualTo(session.getId()); verify(this.defaultSerializer).deserialize(body); }
@Override public GeoResults<GeoLocation<V>> convert(GeoResults<GeoLocation<byte[]>> source) { List<GeoResult<GeoLocation<V>>> values = new ArrayList<>(source.getContent().size()); for (GeoResult<GeoLocation<byte[]>> value : source.getContent()) { values.add(new GeoResult<>( new GeoLocation<>(serializer.deserialize(value.getContent().getName()), value.getContent().getPoint()), value.getDistance())); } return new GeoResults<>(values, source.getAverageDistance().getMetric()); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) TypedTuple<V> deserializeTuple(Tuple tuple) { Object value = tuple.getValue(); if (valueSerializer() != null) { value = valueSerializer().deserialize(tuple.getValue()); } return new DefaultTypedTuple(value, tuple.getScore()); }