About this task
To define the conditional expression, you can define an
XPath expression or a call to a static method on an imported Java class. You can also create a compound (nested)
expression that includes XPath, Java and
extension functions such as
iib:getUserDefinedProperty("propertyname").
Note: When you define a Java conditional expression, the following rules apply:
- You can use Java methods that only use standard Java types.
- You cannot use Java methods that include
MbElement data type arguments.
- You can use Java methods that use the DOM API.
For more information on the supported types, see Custom Java.
Note: If you define a conditional expression for a transform, and then realize that
the condition is identical for other transforms in the map, change the transform
to an If transform. The conditional expression remains
unchanged, and the transform is moved within the nested level of the
If transform. Then, place all of the transforms that
depend on the same condition in the If nested
mapping.
Procedure
Complete the following steps to set a conditional expression in a transform:
- Create a message map.
When you use Java code in a map, you can define the map in a static library
project, a shared library project, an application project, or an integration
project. You can define the Java code
in one or more Java projects. Your map
project must reference these Java
projects. For more information, see
Adding a project to an application, integration service, or
libraryNote: When the map uses Java code available in a shared library, you must create the
map in the shared library project where the Java code is available.
For more information, see Creating a message map.
- Create a Java project.
For more information, see Creating a
Java project.
- Create Java object classes.
The Java class that you provide to the
map must have static methods that return Boolean values.
For example, the following Java method
might be used to define a conditional expression on a transform:
public static boolean lessThanHund(BigDecimal val) {
if ( val.intValueExact() < 100 )
return true;
return false;
}
- Ensure that the Java project the class is
in is referenced by the project that contains the map.
Before you create a reference to a Java
project, ensure that the Java class is
available in a Java project in your
workspace.
- In the Application development page,
right-click the project where the map is defined.
- Select Managed included projects.
- Select the Java project, and
then click OK.
- Make the Java class visible anywhere in
the map. Unless you have already used a method from the Java class in a Custom Java transform elsewhere in the map, you must manually
create an import for the class. To manually import the Java class, you must configure the Java
imports tab in the Properties page of the
map:
- Select Add.
- Click Browse.
- In the Select entries field, enter the name of
the Java package that contains the
Java class.
Note: You must start typing the name of your Java package before you can see any
classes to choose from in the Select
entries field.
- Select a Java class.
- Click OK.
- Enter a unique value in the Prefix field.
Note: If the Java project that
contains the Java class does not
build in Eclipse, then the Java
class is not visible anywhere in the map. You must resolve all the Java errors before you can
configure the Java imports tab in the
Properties page of the map. You can see the
errors in the Problems tab.
When you add a Java call in the
General tab of the
Properties page of a Custom
Java transform in your map, an import is automatically added
in the map to refer to the package qualified Java class, and a prefix based on the class name
is added. All the public static methods in this Java class are then available in
content assist when building expressions in other transforms. If you want to
use this class, you can skip this step.
- For non-repeating elements, select the Condition
property in the Properties tab, and enter a Java method.
Note: Always use content assist to select the variable name of the input
elements that you use to define the expressions. If you do not use
content assist, you might be using an incorrect element name and your
map fails at run time.
You can identify the Java method in
content assist by using the prefix. For example, in the following figure the
prefix is
Conditionals and the method is
lessThanHund():
Conditionals:lessThanHund( $element11)

Note: If the input element being used to provide a value for a Java method is not of the correct
type, you can use a type cast function, for example
xs:int(
$var ), to set the required type. For more information,
see
Cast type (xs:type).
- For repeating elements, select the Filter Inputs
property in the Properties tab, and enter a Java method that is applied to each
instance of the repeating element.
Results
If the Java method returns true, the transform is
applied to the input element.
Example
You can call the following Java method when you define a conditional expression in a
map:
public static boolean evalNodeCondition(Node inputNode, String hasChildNamePrefixed)
{ boolean result = false;
if ( inputNode != null ) {
Node fcn = inputNode.getFirstChild();
if ( fcn != null ) { result = fcn.getLocalName().startsWith(hasChildNamePrefixed);
}
}
return result;
What to do next
Deploy and test the message map. For more information, see Troubleshooting a message map.