"Split node '" + node.getName() + "' [" + node.getId() + "] does not have a constraint for " + connection.toString() + "."));
}
}
}
} else if (node instanceof Join) {
final Join join = (Join) node;
if (join.getType() == Join.TYPE_UNDEFINED) {
errors.add(new ProcessValidationErrorImpl(process,
"Join node '" + node.getName() + "' [" + node.getId() + "] has no type."));
}
if (join.getDefaultIncomingConnections().size() < 2) {
errors.add(new ProcessValidationErrorImpl(process,
"Join node '" + node.getName() + "' [" + node.getId() + "] does not have more than one incoming connection: " + join.getIncomingConnections().size() + "."));
}
if (join.getTo() == null && !acceptsNoOutgoingConnections(node)) {
errors.add(new ProcessValidationErrorImpl(process,
"Join node '" + node.getName() + "' [" + node.getId() + "] has no outgoing connection."));
}
if (join.getType() == Join.TYPE_N_OF_M) {
String n = join.getN();
if (!n.startsWith("#{") || !n.endsWith("}")) {
try {
new Integer(n);
} catch (NumberFormatException e) {
errors.add(new ProcessValidationErrorImpl(process,