in gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/config/PluginParser.java [443:493]
private BeanDefinitionBuilder parseCommand(final Element element) {
assert element != null;
log.trace("Parse command; element; {}", element);
CommandType type = parseCommandType(element);
BeanDefinitionBuilder command = BeanDefinitionBuilder.childBeanDefinition(type.getTemplateName());
parseAndApplyDescription(element, command);
Element child;
// Required children elements
String name = element.getAttribute(NAME);
BeanDefinition def = new GenericBeanDefinition();
def.setBeanClassName(CommandLocationImpl.class.getName());
def.getConstructorArgumentValues().addGenericArgumentValue(name);
command.addPropertyValue(LOCATION, def);
child = getChildElement(element, ACTION);
BeanDefinitionHolder action = parseCommandAction(child);
type.wire(command, action);
// Optional children elements
child = getChildElement(element, DOCUMENTER);
if (child != null) {
BeanDefinitionHolder holder = parseBeanDefinitionElement(child);
command.addPropertyValue(DOCUMENTER, holder.getBeanDefinition());
}
child = getChildElement(element, COMPLETER);
if (child != null) {
BeanDefinitionHolder holder = parseBeanDefinitionElement(child);
command.addPropertyValue(COMPLETER, holder.getBeanDefinition());
}
child = getChildElement(element, COMPLETERS);
if (child != null) {
BeanDefinitionBuilder completer = parseCommandCompleters(child);
command.addPropertyValue(COMPLETER, completer.getBeanDefinition());
}
child = getChildElement(element, MESSAGE_SOURCE);
if (child != null) {
BeanDefinitionHolder holder = parseBeanDefinitionElement(child);
command.addPropertyValue(MESSAGES, holder.getBeanDefinition());
}
return command;
}