@Override public T resolve(ValueResolvingContext context) throws MuleException { TypedValue<T> typedValue = resolveTypedValue(context); Object value = typedValue.getValue(); if (isInstance(ValueResolver.class, value)) { value = ((ValueResolver) value).resolve(context); } return (T) value; }
@Test public void isInstance() { assertThat(ClassUtils.isInstance(String.class, null), is(false)); assertThat(ClassUtils.isInstance(String.class, ""), is(true)); assertThat(ClassUtils.isInstance(Fruit.class, new Apple()), is(true)); assertThat(ClassUtils.isInstance(Apple.class, new Kiwi()), is(false)); assertThat(ClassUtils.isInstance(Integer.class, 0), is(true)); assertThat(ClassUtils.isInstance(int.class, 0), is(true)); assertThat(ClassUtils.isInstance(long.class, new Long(0)), is(true)); assertThat(ClassUtils.isInstance(Double.class, new Double(0).doubleValue()), is(true)); assertThat(ClassUtils.isInstance(double.class, new Double(0).doubleValue()), is(true)); assertThat(ClassUtils.isInstance(boolean.class, true), is(true)); assertThat(ClassUtils.isInstance(boolean.class, Boolean.TRUE), is(true)); assertThat(ClassUtils.isInstance(Boolean.class, true), is(true)); assertThat(ClassUtils.isInstance(String.class, true), is(false)); assertThat(ClassUtils.isInstance(long.class, Boolean.FALSE), is(false)); }
private Object doUnWrap(Object value, DataType expected) { return value instanceof TypedValue ? doUnWrap(((TypedValue) value).getValue(), expected) : ClassUtils.isInstance(expected.getType(), value) ? value : transformationService.transform(value, fromObject(value), expected); }
@Override public void initialise() throws InitialisationException { TypeSafeTransformer typeSafeTransformer = new TypeSafeTransformer(transformationService); resolver = context -> { Object resolvedValue = valueResolverDelegate.resolve(context); return isInstance(expectedType, resolvedValue) ? (T) resolvedValue : typeSafeTransformer.transform(resolvedValue, DataType.fromObject(resolvedValue), DataType.fromType(expectedType)); }; if (!valueResolverDelegate.isDynamic() && !InputStream.class.isAssignableFrom(expectedType)) { resolver = new CachedResolver(resolver); } }
@Override public TypedValue<T> resolve(ValueResolvingContext context) throws MuleException { initEvaluator(); TypedValue<T> typedValue = resolveTypedValue(context); if (!isInstance(expectedClass, typedValue.getValue())) { DataType expectedDataType = DataType.builder() .type(expectedClass) .mediaType(typedValue.getDataType().getMediaType()) .build(); return new TypedValue<>(typeSafeTransformer.<T>transform(typedValue.getValue(), typedValue.getDataType(), expectedDataType), expectedDataType); } return typedValue; }
@Override public T resolve(ValueResolvingContext context) throws MuleException { TypedValue typedValue = evaluator.resolveTypedValue(context.getEvent()); Object value = typedValue.getValue(); if (isInstance(ValueResolver.class, value)) { value = ((ValueResolver) value).resolve(context); } return (T) value; }
@Test public void isInstance() { assertThat(ClassUtils.isInstance(String.class, null), is(false)); assertThat(ClassUtils.isInstance(String.class, ""), is(true)); assertThat(ClassUtils.isInstance(Fruit.class, new Apple()), is(true)); assertThat(ClassUtils.isInstance(Apple.class, new Kiwi()), is(false)); assertThat(ClassUtils.isInstance(Integer.class, 0), is(true)); assertThat(ClassUtils.isInstance(int.class, 0), is(true)); assertThat(ClassUtils.isInstance(long.class, new Long(0)), is(true)); assertThat(ClassUtils.isInstance(Double.class, new Double(0).doubleValue()), is(true)); assertThat(ClassUtils.isInstance(double.class, new Double(0).doubleValue()), is(true)); assertThat(ClassUtils.isInstance(boolean.class, true), is(true)); assertThat(ClassUtils.isInstance(boolean.class, Boolean.TRUE), is(true)); assertThat(ClassUtils.isInstance(Boolean.class, true), is(true)); assertThat(ClassUtils.isInstance(String.class, true), is(false)); assertThat(ClassUtils.isInstance(long.class, Boolean.FALSE), is(false)); }
private Object doUnWrap(Object value, DataType expected) { return value instanceof TypedValue ? doUnWrap(((TypedValue) value).getValue(), expected) : ClassUtils.isInstance(expected.getType(), value) ? value : transformationService.transform(value, fromObject(value), expected); }
private TypedValue transform(TypedValue target, DataType sourceType, DataType outputType) throws TransformerException { if (target.getValue() != null && !isInstance(outputType.getType(), target.getValue())) { Object result = ((MuleContextWithRegistries) muleContext).getRegistry().lookupTransformer(sourceType, outputType) .transform(target.getValue()); return new TypedValue<>(result, outputType); } else { return target; } }
@Override public void initialise() throws InitialisationException { TypeSafeTransformer typeSafeTransformer = new TypeSafeTransformer(transformationService); initialiseIfNeeded(valueResolverDelegate, muleContext); resolver = context -> { Object resolvedValue = valueResolverDelegate.resolve(context); return isInstance(expectedType, resolvedValue) ? (T) resolvedValue : typeSafeTransformer.transform(resolvedValue, DataType.fromObject(resolvedValue), DataType.fromType(expectedType)); }; if (!valueResolverDelegate.isDynamic()) { resolver = new CachedResolver(resolver); } }
@Override public TypedValue<T> resolve(ValueResolvingContext context) throws MuleException { initEvaluator(); TypedValue typedValue = evaluator.resolveTypedValue(context.getEvent()); if (!isInstance(expectedClass, typedValue.getValue())) { DataType expectedDataType = DataType.builder() .type(expectedClass) .mediaType(typedValue.getDataType().getMediaType()) .build(); return new TypedValue<>(typeSafeTransformer.<T>transform(typedValue.getValue(), typedValue.getDataType(), expectedDataType), expectedDataType); } return typedValue; }