@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); } }); }
@Override public Object transcode(Object content, MediaType contentType, MediaType destinationType) { try { if (destinationType.equals(MediaType.APPLICATION_UNKNOWN) || contentType.equals(MediaType.APPLICATION_UNKNOWN)) { return content; } if (destinationType.match(marshaller.mediaType())) { return marshaller.objectToByteBuffer(content); } if (destinationType.match(MediaType.APPLICATION_OBJECT)) { return marshaller.objectFromByteBuffer((byte[]) content); } } catch (InterruptedException | IOException | ClassNotFoundException e) { throw new CacheException(e); } throw logger.unsupportedContent(content); }
public Object convertToRequestType(Object obj, MediaType objType, MediaType requestType) { if (obj == null) return null; if (requestType.equals(MediaType.MATCH_ALL)) return obj; // Older HR clients do not send request type and assume the script metadata type is the output type MediaType outputFormat = requestType.match(MediaType.APPLICATION_UNKNOWN) ? objType : requestType; OutputFormatter outputFormatter = formatterByMediaType.get(outputFormat.getTypeSubtype()); if (obj instanceof Collection) { if (outputFormatter != null) { return outputFormatter.formatCollection((Collection<?>) obj, objType, requestType); } } Transcoder transcoder = encoderRegistry.getTranscoder(objType, requestType); return transcoder.transcode(obj, objType, requestType); }
MediaType filterMediaType = customFilter.format(); if (filterMediaType != null && filterMediaType.equals(storageMediaType)) { iterationCache = advancedCache.withEncoding(IdentityEncoder.class).withMediaType(filterMediaType.toString(), filterMediaType.toString()); if (filterMediaType != null && !storageMediaType.equals(requestValueType)) { resultTransformer = valueDataConversion::fromStorage;
systemBindings.put(SystemBindings.SCRIPTING_MANAGER.toString(), this); context.getCache().ifPresent(cache -> { if (requestMediaType != null && !requestMediaType.equals(MediaType.MATCH_ALL)) { cache = cache.getAdvancedCache().withMediaType(scriptMediaType, scriptMediaType);
@Override public Object transcode(Object content, MediaType contentType, MediaType destinationType) { try { if (destinationType.equals(APPLICATION_UNKNOWN)) { if (contentType.match(APPLICATION_UNKNOWN)) return content; return convertToByteArray(content, contentType); } if (destinationType.match(APPLICATION_OCTET_STREAM)) { return convertToOctetStream(content, contentType, destinationType); } if (destinationType.match(APPLICATION_OBJECT)) { return convertToObject(content, contentType, destinationType); } if (destinationType.match(TEXT_PLAIN)) { return convertToTextPlain(content, contentType, destinationType); } if (destinationType.match(APPLICATION_WWW_FORM_URLENCODED)) { return convertToUrlEncoded(content, contentType); } throw log.unsupportedContent(content); } catch (EncodingException | InterruptedException | IOException e) { throw log.unsupportedContent(content); } }
private Object convertToObject(Object content, MediaType contentType, MediaType destinationType) { if (contentType.match(APPLICATION_OCTET_STREAM)) { byte[] decoded = StandardConversions.decodeOctetStream(content, destinationType); return StandardConversions.convertOctetStreamToJava(decoded, destinationType, javaMarshaller); } if (contentType.match(APPLICATION_OBJECT)) { return StandardConversions.decodeObjectContent(content, contentType); } if (contentType.match(TEXT_PLAIN)) { return StandardConversions.convertTextToObject(content, contentType); } if (contentType.match(APPLICATION_WWW_FORM_URLENCODED)) { return StandardConversions.convertUrlEncodedToObject(content); } if (contentType.equals(MediaType.APPLICATION_UNKNOWN)) { if (content instanceof byte[]) { return tryDeserialize((byte[]) content); } if (content instanceof WrappedByteArray) { return tryDeserialize(((WrappedByteArray) content).getBytes()); } return content; } throw log.unsupportedContent(content); }