Differences from the C++ operator models

A number of elements are not allowed in Java operator models, but they can appear in C++ operator models.

Under the context element, the following subelements are not allowed within a Java operator model:
  • customOutputFunctions
  • providesSingleThreadedContext
  • incrementalCompilationStrategy
  • allowCustomLogic
Java operators do not support custom output functions. They never provide a single threaded context, and their incremental compilation strategy is always source dependent. They always allow custom logic.
Under the parameter element, the following subelements are not allowed within a Java operator model:
  • rewriteAllowed
  • portScope
The rewriteAllowed element for Java operator parameters is always true, and the port scope does not apply as the parameter values are attribute free.

The expressionMode element can take only one of three attribute values: Attribute, AttributeFree, or CustomLiteral.

The following parameter names are disallowed in a Java operator model:
  • className
  • classLibrary
  • generated
  • VmArg
Furthermore, any parameter name that starts with javaop is reserved and cannot be used in a Java operator model. However, vmArg can be used as a parameter in an invocation of a Java primitive. The values that are specified for it are treated as extensions to the list of JVM arguments that are specified as part of the executionSettings element in the operator model. Since vmArg is not allowed as a parameter name in a Java operator model, it correctly gets rejected as reserved. In particular, these values will be appended after the vmArg values listed in the execution settings of the Java primitive operator. This method allows augmenting the default JVM settings that are specified in the operator model with the specific needs of the individual instances of the Java primitive operator.

Under the inputPortOpenSet element, the following subelements are not allowed within a Java operator model: tupleMutationAllowed. The tuple mutation configuration for the input and output ports do not apply to Java operators, as the calls between fused Java operators do not use the same physical memory location for the tuple that is being passed.

Under the outputPortOpenSet element, the following subelements are not allowed within a Java operator model:
  • tupleMutationAllowed
  • autoAssignment
  • completeAssignment
  • rewriteAllowed
  • expressionMode
  • outputFunctions
  • outputAssignmentPortScope
Java operators do not allow output assignments. Thus these elements do not apply.

Under the managedLibrary element, the following subelements are not allowed in a Java operator model: lib and includePath. These elements are specific to C++ libraries. The Java operators support only the libPath and the command elements. The library path is used to specify the path to the .jar files or the directories that contain the class files. If multiple library paths are specified, then the search order for .jar files and classes is the same order in which the paths are specified in the operator model. The command element is used to rely on an external script to fetch the library paths, and operates the same way as the one used for the C++ operator models.