@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(getClass().equals(obj.getClass()))) { return false; } AbstractTransformer that = (AbstractTransformer) obj; return getReturnDataType().equals(that.getReturnDataType()) && getSourceDataTypes().equals(that.getSourceDataTypes()) && Objects.equals(isIgnoreBadInput(), that.isIgnoreBadInput()) && Objects.equals(isAllowNullReturn(), that.isAllowNullReturn()) && Objects.equals(isAcceptNull(), that.isAcceptNull()) && Objects.equals(getName(), that.getName()) && Objects.equals(getProcessingType(), that.getProcessingType()); } }
@Override public int hashCode() { return hash(getReturnDataType(), getSourceDataTypes().hashCode(), isIgnoreBadInput(), isAllowNullReturn(), isAcceptNull(), getName(), getProcessingType()); }
/** * Checks whether a given value is a valid output for a transformer. * * @param transformer the transformer used to validate * @param value the output value * @throws TransformerException if the output value is of a unexpected type. */ public static void checkTransformerReturnClass(Transformer transformer, Object value) throws TransformerException { if (value == null && (transformer instanceof AbstractTransformer && ((AbstractTransformer) transformer).isAllowNullReturn())) { return; } if (transformer.getReturnDataType() != null) { DataTypeParamsBuilder dtBuilder = DataType.builder().fromObject(value); if (!(value instanceof DataHandler) && !(value instanceof DataSource)) { // To avoid getting an error because the DataType was constructed with a default mediaType dtBuilder = dtBuilder.mediaType(transformer.getReturnDataType().getMediaType()); } DataType dt = dtBuilder.build(); if (!transformer.getReturnDataType().isCompatibleWith(dt)) { throw new TransformerException(transformUnexpectedType(dt, transformer.getReturnDataType()), transformer); } } if (LOGGER.isDebugEnabled()) { LOGGER.debug("The transformed value is of expected type. Type is: " + ClassUtils.getSimpleName(value.getClass())); } }