use of org.springframework.roo.addon.tailor.actions.ActionConfig in project spring-roo by spring-projects.
the class TailorParser method parseTailorConfiguration.
/**
* Maps the single XML tailor configuration to a TailorConfiguration object.
*
* @param tailor element
* @return tailor configurations
*/
public static TailorConfiguration parseTailorConfiguration(final Element elTailor) {
if (StringUtils.isBlank(elTailor.getAttribute("name"))) {
logTailorXMLInvalid("<tailor> must have a name attribute");
return null;
}
final TailorConfiguration result = new TailorConfiguration(elTailor.getAttribute("name"), elTailor.getAttribute("description"));
final String activeAttribute = elTailor.getAttribute("activate");
if (StringUtils.isNotBlank(activeAttribute)) {
final boolean isActive = "true".equalsIgnoreCase(activeAttribute) || "yes".equalsIgnoreCase(activeAttribute);
result.setActive(isActive);
}
final List<Element> elConfigs = XmlUtils.findElements("config", elTailor);
if (elConfigs.isEmpty()) {
logTailorXMLInvalid("<tailor> must have <config> child elements");
return null;
}
for (final Element elConfig : elConfigs) {
final String command = elConfig.getAttribute("command");
if (StringUtils.isBlank(command)) {
logTailorXMLInvalid("found <config> without command attribute");
return null;
}
final CommandConfiguration newCmdConfig = new CommandConfiguration();
newCmdConfig.setCommandName(command);
final List<Element> elActions = XmlUtils.findElements("action", elConfig);
for (final Element elAction : elActions) {
// Determine the action type
if (StringUtils.isBlank(elAction.getAttribute("type"))) {
logTailorXMLInvalid("found <action> without type attribute");
return null;
}
final ActionConfig newAction = new ActionConfig(elAction.getAttribute("type"));
final NamedNodeMap attributes = elAction.getAttributes();
for (int i = 0; i < attributes.getLength(); i++) {
final Node item = attributes.item(i);
final String attributeKey = item.getNodeName();
if (!"type".equals(attributeKey)) {
newAction.setAttribute(attributeKey, item.getNodeValue());
}
}
newCmdConfig.addAction(newAction);
}
result.addCommandConfig(newCmdConfig);
}
return result;
}
use of org.springframework.roo.addon.tailor.actions.ActionConfig in project spring-roo by spring-projects.
the class DefaultTailorImpl method execute.
private void execute(final CommandTransformation commandTrafo) {
final TailorConfiguration configuration = configLocator.getActiveTailorConfiguration();
if (configuration == null) {
return;
}
final CommandConfiguration commandConfig = configuration.getCommandConfigFor(commandTrafo.getInputCommand());
if (commandConfig == null) {
return;
}
logInDevelopmentMode(Level.INFO, "Tailor: detected " + commandTrafo.getInputCommand());
for (final ActionConfig config : commandConfig.getActions()) {
final Action component = actionLocator.getAction(config.getActionTypeId());
if (component != null) {
logInDevelopmentMode(Level.INFO, "\tTailoring: " + component.getDescription(config));
component.execute(commandTrafo, config);
} else {
logInDevelopmentMode(Level.WARNING, "\tTailoring: Couldn't find action '" + config.getActionTypeId());
}
}
}
Aggregations