Version

    CustomJavaTransformer

    Short Description
    Ports
    Metadata
    CustomJavaTransformer Attributes
    Details
    Examples
    Best Practices
    Compatibility
    See also

    Short Description

    CustomJavaTransformer executes user-defined Java code.

    ComponentSame input metadataSorted inputsInputsOutputsEach to all outputsJavaCTLAuto-propagated metadata
    CustomJavaTransformer--0-n0-n-
    yes
    no
    no

    Ports

    The number of ports depends on the Java code.

    Metadata

    CustomJavaTransformer does not propagate metadata.

    CustomJavaTransformer has no metadata templates.

    Requirements on metadata depend on a user-defined transformation.

    CustomJavaTransformer Attributes

    AttributeReqDescriptionPossible values
    Basic
    Algorithm[1]A runnable transformation in Java defined in the graph. 
    Algorithm URL[1]An external file defining the runnable transformation in Java. 
    Algorithm class[1]An external runnable transformation class. 
    Algorithm source charset 

    Encoding of the external file defining the transformation.

    The default encoding depends on DEFAULT_SOURCE_CODE_CHARSET in defaultProperties.

    E.g. UTF-8

    [1]  One of these must be set. These transformation attributes must be specified.

    Details

    CustomJavaTransformer executes the Java transformation. CustomJavaTransformer is a more specific CustomJavaComponent focused on transforming data.

    There are other similar Java components: CustomJavaReader, CustomJavaWriter and CustomJavaComponent. All these components use a transformation defined in Java, they differ in templates being used.

    You can use Public CloverDX API in this component. General parts of custom Java components and Public CloverDX API are described in CustomJavaComponent.

    Java Interfaces for CustomJavaComponent

    A transformation required by the component must extend the org.jetel.component.AbstractGenericTransform class.

    The component has the same Java interface as CustomJavaComponent, but it provides a different Java template. See Java Interfaces for CustomJavaComponent.

    Examples

    Record Duplicator

    Create a component duplicating input records.

    Solution
    package jk;
    
    import org.jetel.component.AbstractGenericTransform;
    import org.jetel.data.DataRecord;
    import org.jetel.exception.JetelRuntimeException;
    
    /**
     * This is an example custom transformer. It shows how you can
     * duplicate all incoming records.
     */
    public class CustomJavaTransformerExample01 extends AbstractGenericTransform {
    
        @Override
        public void execute() {
            try {
                DataRecord inRecord = inRecords[0];
    
                while ((inRecord = readRecordFromPort(0)) != null) {
                    writeRecordToPort(0, inRecord);
                    writeRecordToPort(0, inRecord);
                }
            } catch (Exception e) {
                throw new JetelRuntimeException(e);
            }
        }
    }

    Metadata on the input and output port must be the same for this example.

    Best Practices

    If the transformation is specified in an external file (with Algorithm URL), we recommend to explicitly specify Algorithm source charset.

    Compatibility

    VersionCompatibility Notice
    4.1.0-M1

    CustomJavaTransformer is available since 4.1.0-M1. It replaced JavaExecute.