@Override public C filterAndConvert(K key, V value, Metadata metadata) { if (providedFilter.isPresent()) { KeyValueFilterConverter<K, V, C> f = providedFilter.get(); Object keyTranscoded = key; Object valueTranscoded = value; if (applyBefore != null) { keyTranscoded = applyBefore.transcode(key, storageMediaType, f.format()); valueTranscoded = applyBefore.transcode(value, storageMediaType, f.format()); } C result = f.filterAndConvert((K) keyTranscoded, (V) valueTranscoded, metadata); if (result == null) return null; if (applyAfter == null) return result; return (C) applyAfter.transcode(result, f.format(), requestType); } else { return (C) value; } }
@Inject public void injectDependencies(Cache cache, EncoderRegistry encoderRegistry) { providedFilter.ifPresent(kvfc -> { cache.getAdvancedCache().getComponentRegistry().wireDependencies(kvfc); MediaType filterFormat = kvfc.format(); if (filterFormat != null && !filterFormat.equals(storageMediaType)) { applyBefore = encoderRegistry.getTranscoder(filterFormat, storageMediaType); } if (filterFormat != null && !filterFormat.equals(requestType)) { applyAfter = encoderRegistry.getTranscoder(filterFormat, requestType); } }); }
KeyValuePair<KeyValueFilterConverter, Boolean> filter = buildFilter(factory, filterConverterParams.toArray(Util.EMPTY_BYTE_ARRAY_ARRAY), unmarshaller); KeyValueFilterConverter customFilter = filter.getKey(); MediaType filterMediaType = customFilter.format();