Skip to content

Commit

Permalink
FORGE-2316: Improved Project.getStack
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Jan 14, 2016
1 parent 8599d68 commit ba39e22
Showing 1 changed file with 23 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
package org.jboss.forge.addon.projects;

import java.util.Optional;
import java.util.Set;

import org.jboss.forge.addon.facets.Faceted;
import org.jboss.forge.addon.projects.stacks.Stack;
import org.jboss.forge.addon.projects.stacks.StackBuilder;
import org.jboss.forge.addon.projects.stacks.StackFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.furnace.util.Sets;

/**
* Describes a set of {@link Resource} instances that represent a unit of work.
Expand Down Expand Up @@ -62,14 +64,28 @@ default DirectoryResource getRootDirectory()
*/
default Optional<Stack> getStack()
{
boolean exists = false;
StackBuilder builder = StackBuilder.stack("Project Stack");
for (StackFacet facet : getFacets(StackFacet.class))
Optional<Stack> result;
Set<StackFacet> facets = Sets.toSet(getFacets(StackFacet.class));
int size = facets.size();
if (size == 0)
{
exists = true;
Stack stack = facet.getStack();
builder.includes(stack);
result = Optional.empty();
}
return exists ? Optional.of(builder) : Optional.empty();
else if (size == 1)
{
result = Optional.of(facets.iterator().next().getStack());
}
else
{
// Several stacks detected, sum them all
StackBuilder builder = StackBuilder.stack("Project Stack");
for (StackFacet facet : facets)
{
Stack stack = facet.getStack();
builder.includes(stack);
}
result = Optional.of(builder);
}
return result;
}
}

0 comments on commit ba39e22

Please sign in to comment.