Skip to content

Commit

Permalink
Moved code from AddContainerStep to ContainerSetupWizard
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Nov 9, 2014
1 parent c69ee81 commit 042b26b
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 214 deletions.
187 changes: 0 additions & 187 deletions src/main/java/org/jboss/forge/arquillian/command/AddContainerStep.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,71 +1,180 @@
package org.jboss.forge.arquillian.command;

import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.Callable;

import javax.enterprise.event.Event;
import javax.enterprise.inject.Any;
import javax.inject.Inject;

import org.jboss.forge.addon.convert.Converter;
import org.jboss.forge.addon.dependencies.DependencyResolver;
import org.jboss.forge.addon.dependencies.builder.DependencyQueryBuilder;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.ui.AbstractProjectCommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.context.UINavigationContext;
import org.jboss.forge.addon.ui.hints.InputType;
import org.jboss.forge.addon.ui.input.UISelectOne;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.metadata.WithAttributes;
import org.jboss.forge.addon.ui.result.NavigationResult;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.addon.ui.wizard.UIWizard;
import org.jboss.forge.arquillian.api.ArquillianFacet;
import org.jboss.forge.arquillian.api.ContainerInstallEvent;
import org.jboss.forge.arquillian.container.ContainerResolver;
import org.jboss.forge.arquillian.container.model.Container;
import org.jboss.forge.arquillian.container.model.ContainerType;
import org.jboss.forge.arquillian.util.DependencyUtil;

public class ContainerSetupWizard extends AbstractProjectCommand implements UIWizard {
@FacetConstraint(ArquillianFacet.class)
public class ContainerSetupWizard extends AbstractProjectCommand implements UIWizard
{

static final String CTX_CONTAINER = "arq-container";
static final String CTX_CONTAINER_VERSION = "arq-container-version";

@Inject
private ProjectFactory projectFactory;


@Inject
private ContainerResolver containerResolver;

@Inject
private DependencyResolver resolver;

@Inject
@Any
private Event<ContainerInstallEvent> installEvent;

@Inject
@WithAttributes(shortName = 'f', label = "Container Adapter Type", type = InputType.DROPDOWN, required = false)
private UISelectOne<ContainerType> containerAdapterType;

@Inject
@WithAttributes(shortName = 'c', label = "Container Adapter", type = InputType.DROPDOWN, required = true)
private UISelectOne<Container> containerAdapter;

@Inject
@WithAttributes(shortName = 'x', label = "Container Adapter Version", type = InputType.DROPDOWN)
private UISelectOne<String> containerAdapterVersion;

@Override
public UICommandMetadata getMetadata(UIContext context) {
public UICommandMetadata getMetadata(UIContext context)
{
return Metadata.from(super.getMetadata(context), getClass())
.category(Categories.create("Arquillian"))
.name("Arquillian: Container Setup")
.description("This addon will guide you through adding a Container Adapter for Arquillian");
}

@Override
public void initializeUI(final UIBuilder builder) throws Exception {
.category(Categories.create("Arquillian"))
.name("Arquillian: Container Setup")
.description("This addon will guide you through adding a Container Adapter for Arquillian");
}

@Override
public Result execute(UIExecutionContext context) throws Exception {
return Results.success("Arquillian container setup complete");
public void initializeUI(final UIBuilder builder) throws Exception
{
builder// .add(containerAdapterType)
.add(containerAdapter)
.add(containerAdapterVersion);

containerAdapterType.setValueChoices(Arrays.asList(ContainerType.values()));
containerAdapterType.setEnabled(true);
containerAdapter.setEnabled(true);
containerAdapter.setValueChoices(new Callable<Iterable<Container>>()
{
@Override
public Iterable<Container> call() throws Exception
{
return containerResolver.getContainers(containerAdapterType.getValue());
}
});
containerAdapter.setItemLabelConverter(new Converter<Container, String>()
{
@Override
public String convert(Container source)
{
if (source == null)
{
return null;
}
if (builder.getUIContext().getProvider().isGUI())
{
return source.getName();
}
return source.getId();
}
});
containerAdapterVersion.setEnabled(new Callable<Boolean>()
{
@Override
public Boolean call() throws Exception
{
return containerAdapter.hasValue();
}
});
containerAdapterVersion.setValueChoices(new Callable<Iterable<String>>()
{
@Override
public Iterable<String> call() throws Exception
{
if (containerAdapterVersion.isEnabled())
{
return DependencyUtil.toVersionString(
resolver.resolveVersions(
DependencyQueryBuilder.create(
containerAdapter.getValue().asDependency().getCoordinate())));
}
return Collections.emptyList();
}
});
containerAdapterVersion.setDefaultValue(new Callable<String>()
{
@Override
public String call() throws Exception
{
if (containerAdapter.hasValue())
{
return DependencyUtil.getLatestNonSnapshotVersionCoordinate(
resolver.resolveVersions(
DependencyQueryBuilder.create(
containerAdapter.getValue().asDependency().getCoordinate())));
}
return null;
}
});
}

@Override
@SuppressWarnings("unchecked")
public NavigationResult next(UINavigationContext context) throws Exception {
return Results.navigateTo(
AddContainerStep.class,
AddContainerDependencyStep.class);
public Result execute(UIExecutionContext context) throws Exception
{
return Results.success("Installed " + containerAdapter.getValue().getName());
}

@Override
protected boolean isProjectRequired() {
return true;
public NavigationResult next(UINavigationContext context) throws Exception
{
Map<Object, Object> ctx = context.getUIContext().getAttributeMap();
ctx.put(ContainerSetupWizard.CTX_CONTAINER, containerAdapter.getValue());
ctx.put(ContainerSetupWizard.CTX_CONTAINER_VERSION, containerAdapterVersion.getValue());
return Results.navigateTo(AddContainerDependencyStep.class);
}

@Override
public boolean isEnabled(UIContext context) {
Boolean parent = super.isEnabled(context);
if(parent) {
return getSelectedProject(context).hasFacet(ArquillianFacet.class);
}
return parent;
protected boolean isProjectRequired()
{
return true;
}

@Override
protected ProjectFactory getProjectFactory() {
protected ProjectFactory getProjectFactory()
{
return projectFactory;
}

Expand Down

0 comments on commit 042b26b

Please sign in to comment.