package org.jboss.windup.config.parser.metadata;
import static org.joox.JOOX.$;
import java.util.List;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.windup.config.exception.ConfigurationException;
import org.jboss.windup.config.metadata.MetadataBuilder;
import org.jboss.windup.config.metadata.RulesetMetadata;
import org.jboss.windup.config.metadata.TechnologyReference;
import org.jboss.windup.config.parser.ElementHandler;
import org.jboss.windup.config.parser.NamespaceElementHandler;
import org.jboss.windup.config.parser.ParserContext;
import org.jboss.windup.config.parser.xml.RuleProviderHandler;
import org.w3c.dom.Element;
@NamespaceElementHandler(elementName = "metadata", namespace = RuleProviderHandler.WINDUP_RULE_NAMESPACE)
public class MetadataRootHandler implements ElementHandler<RulesetMetadata>
{
public static final String DEPENDENCIES = "dependencies";
public static final String SOURCE_TECHNOLOGY = "sourceTechnology";
public static final String TARGET_TECHNOLOGY = "targetTechnology";
public static final String TAG = "tag";
public static final String EXECUTE_AFTER = "executeAfter";
public static final String EXECUTE_BEFORE = "executeBefore";
@Override
@SuppressWarnings("unchecked")
public RulesetMetadata processElement(ParserContext context, Element element) throws ConfigurationException
{
List<Element> children = $(element).children().get();
MetadataBuilder metadataBuilder = context.getBuilder().getMetadataBuilder();
for (Element child : children)
{
Object result = context.processElement(child);
switch ($(child).tag())
{
case MetadataProviderOverrideHandler.OVERRIDE_PROVIDER:
metadataBuilder.setOverrideProvider((Boolean)result);
break;
case MetadataDescriptionHandler.DESCRIPTION:
metadataBuilder.setDescription((String) result);
break;
case DEPENDENCIES:
for (AddonId id : (List<AddonId>) result)
{
metadataBuilder.addRequiredAddon(id);
}
break;
case SOURCE_TECHNOLOGY:
metadataBuilder.addSourceTechnology((TechnologyReference) result);
break;
case TARGET_TECHNOLOGY:
metadataBuilder.addTargetTechnology((TechnologyReference) result);
break;
case TAG:
metadataBuilder.addTag((String) result);
break;
case EXECUTE_AFTER:
metadataBuilder.addExecuteAfterId((String) result);
break;
case EXECUTE_BEFORE:
metadataBuilder.addExecuteBeforeId((String) result);
break;
}
}
return metadataBuilder;
}
}