in gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/config/CommandParser.java [317:370]
private BeanDefinitionBuilder parseCommand(final Element element) {
assert element != null;
log.trace("Parse command; element; {}", element);
CommandType type = CommandType.parse(element.getAttribute(TYPE));
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());
}
//String id = resolveId(element, command.getBeanDefinition());
//BeanDefinitionHolder holder = register(command.getBeanDefinition(), id);
return command;
}