throws RegistrationFailedException {
String name = function.getName();
Map<String, Parameter> parameters = function.getParameters();
String type = "Function";
Parameter returnType = function.getReturnType();
StringBuffer inputElement = new StringBuffer();
inputElement.append("START_GENERIC_ELEMENT");
inputElement.append(DELIMITER + name);
inputElement.append(DELIMITER + "TYPE" + DELIMITER);
inputElement.append(type);
inputElement.append(DELIMITER + "BEGIN_PROPERTY_LIST");
for (String propertyName : parameters.keySet()) {
Parameter propertyValues = parameters.get(propertyName);
inputElement.append(DELIMITER + "BEGIN_PROPERTY");
inputElement.append(DELIMITER + "hasInput");
inputElement.append(DELIMITER + "BEGIN_PROPERTY_VALUES");
if (parameters.get(propertyName).getType() instanceof SimpleProcessingElementDescriptor) {
ProcessingElementDescriptor peDescriptor = (SimpleProcessingElementDescriptor) parameters
.get(propertyName).getType();
List<ProcessingElementDescriptor> peList = registry
.lookupProcessingElement(peDescriptor.getName());
if (!peList.isEmpty()) {
inputElement.append(DELIMITER + propertyName);
inputElement.append(DELIMITER
+ peList.get(0).getProcessingElementId());
inputElement.append(DELIMITER + propertyValues.getIndex());
} else {
throw new RegistrationFailedException(
function,
new ProcessingElementUnexistingException(
(SimpleProcessingElementDescriptor) parameters
.get(propertyName).getType()));
}
} else {
// function param name
inputElement.append(DELIMITER + propertyName);
// function param type
inputElement.append(DELIMITER + propertyValues.getType());
// function param index
inputElement.append(DELIMITER + propertyValues.getIndex());
}
inputElement.append(DELIMITER + "END_PROPERTY_VALUES");
}
// I add the return value