Skip to content

Commit

Permalink
Initial implementation (sans tests) of Maven based ProjectFacets
Browse files Browse the repository at this point in the history
  • Loading branch information
lincolnthree committed Mar 8, 2013
1 parent 641a52f commit fc8b1dc
Show file tree
Hide file tree
Showing 41 changed files with 2,322 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.jboss.forge.container.util.Predicate;
import org.jboss.forge.dependencies.Coordinate;
import org.jboss.forge.dependencies.DependencyNode;
import org.jboss.forge.dependencies.collection.Dependencies;
import org.jboss.forge.dependencies.collection.DependencyNodeUtil;

/**
* When an addon is installed, another addons could be required. This object returns the necessary information for the
Expand Down Expand Up @@ -60,11 +60,11 @@ public class InstallRequestImpl implements InstallRequest
* To return the addons on which this addon depends, we'll need to traverse the tree using the breadth first
* order, and then add them to a stack. This will guarantee their order.
*/
Iterator<DependencyNode> iterator = Dependencies.breadthFirstIterator(requestedAddonNode);
Iterator<DependencyNode> iterator = DependencyNodeUtil.breadthFirstIterator(requestedAddonNode);
while (iterator.hasNext())
{
DependencyNode node = iterator.next();
if (Dependencies.isForgeAddon(node.getDependency().getCoordinate()) && !node.equals(requestedAddonNode))
if (DependencyNodeUtil.isForgeAddon(node.getDependency().getCoordinate()) && !node.equals(requestedAddonNode))
{
if (node.getDependency().isOptional())
{
Expand Down Expand Up @@ -135,7 +135,7 @@ public void perform()
private AddonId toAddonId(DependencyNode node)
{
Coordinate coord = node.getDependency().getCoordinate();
DependencyNode forgeApi = Dependencies.selectFirst(Dependencies.breadthFirstIterator(node),
DependencyNode forgeApi = DependencyNodeUtil.selectFirst(DependencyNodeUtil.breadthFirstIterator(node),
new Predicate<DependencyNode>()
{
@Override
Expand All @@ -158,14 +158,14 @@ public boolean accept(DependencyNode node)

private void deploy(AddonId addon, DependencyNode root)
{
List<File> resourceJars = toResourceJars(Dependencies.select(root, new LocalResourceFilter(root)));
List<File> resourceJars = toResourceJars(DependencyNodeUtil.select(root, new LocalResourceFilter(root)));

if (resourceJars.isEmpty())
{
log.fine("No resource JARs found for " + addon);
}
List<AddonDependency> addonDependencies =
toAddonDependencies(Dependencies.select(root.getChildren().iterator(), new DirectAddonFilter(root)));
toAddonDependencies(DependencyNodeUtil.select(root.getChildren().iterator(), new DirectAddonFilter(root)));

if (addonDependencies.isEmpty())
{
Expand Down Expand Up @@ -209,12 +209,12 @@ private List<File> toResourceJars(List<DependencyNode> dependencies)
@Override
public String toString()
{
return Dependencies.prettyPrint(requestedAddonNode, new Predicate<DependencyNode>()
return DependencyNodeUtil.prettyPrint(requestedAddonNode, new Predicate<DependencyNode>()
{
@Override
public boolean accept(DependencyNode node)
{
return Dependencies.isForgeAddon(node.getDependency().getCoordinate())
return DependencyNodeUtil.isForgeAddon(node.getDependency().getCoordinate())
&& !node.getDependency().isOptional();
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import org.jboss.forge.container.util.Predicate;
import org.jboss.forge.dependencies.Coordinate;
import org.jboss.forge.dependencies.DependencyNode;
import org.jboss.forge.dependencies.collection.Dependencies;
import org.jboss.forge.dependencies.collection.DependencyNodeUtil;

/**
* Checks if an addon node is a direct dependency of another node (root)
Expand All @@ -23,7 +23,7 @@ public DirectAddonFilter(DependencyNode root)
public boolean accept(DependencyNode node)
{
Coordinate artifact = node.getDependency().getCoordinate();
if (Dependencies.isForgeAddon(artifact) && root.getChildren().contains(node))
if (DependencyNodeUtil.isForgeAddon(artifact) && root.getChildren().contains(node))
{
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import org.jboss.forge.container.util.Predicate;
import org.jboss.forge.dependencies.DependencyNode;
import org.jboss.forge.dependencies.collection.Dependencies;
import org.jboss.forge.dependencies.collection.DependencyNodeUtil;

/**
* Figures out if a {@link DependencyNode} should be treated as a JAR or as an Addon. Also if that dependency is a
Expand Down Expand Up @@ -32,7 +32,7 @@ public boolean accept(DependencyNode node)

public boolean isDependencyAddon(DependencyNode node)
{
return (Dependencies.isForgeAddon(node.getDependency().getCoordinate()) && !node.equals(addon));
return (DependencyNodeUtil.isForgeAddon(node.getDependency().getCoordinate()) && !node.equals(addon));
}

public boolean shouldPackageResource(DependencyNode node)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public final class OSUtils
public final class OperatingSystemUtils
{
private static boolean PRETEND_WINDOWS = Boolean.getBoolean("forge.pretend_windows");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.jboss.forge.container.AddonRepository;
import org.jboss.forge.container.util.Assert;
import org.jboss.forge.container.util.Files;
import org.jboss.forge.container.util.OSUtils;
import org.jboss.forge.container.util.OperatingSystemUtils;
import org.jboss.forge.container.util.Streams;
import org.jboss.forge.container.util.Strings;
import org.jboss.forge.parser.xml.Node;
Expand Down Expand Up @@ -66,7 +66,7 @@ public static AddonRepository forDirectory(File dir)

public static AddonRepository forDefaultDirectory()
{
return new AddonRepositoryImpl(new File(OSUtils.getUserHomePath(), DEFAULT_ADDON_DIR));
return new AddonRepositoryImpl(new File(OperatingSystemUtils.getUserHomePath(), DEFAULT_ADDON_DIR));
}

public static String getRuntimeAPIVersion()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public static boolean delete(File file, final boolean recursive)
throw new RuntimeException("directory not empty");
}

if (OSUtils.isWindows())
if (OperatingSystemUtils.isWindows())
{
System.gc(); // ensure no lingering handles that would prevent deletion
}
Expand All @@ -81,7 +81,7 @@ public static boolean delete(File file, final boolean recursive)

private static boolean _deleteRecursive(final File file, final boolean collect)
{
if (collect && OSUtils.isWindows())
if (collect && OperatingSystemUtils.isWindows())
{
System.gc(); // ensure no lingering handles that would prevent deletion
}
Expand Down Expand Up @@ -120,7 +120,7 @@ public static String canonicalize(String target)
{
if (target.startsWith(Files.HOME_ALIAS))
{
String homePath = OSUtils.getUserHomePath();
String homePath = OperatingSystemUtils.getUserHomePath();
target = homePath + target.substring(1, target.length());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

package org.jboss.forge.dependencies;

import java.util.List;

import org.jboss.forge.resource.FileResource;

/**
Expand All @@ -28,7 +30,6 @@ public interface Dependency

/**
* Returns the file representing this artifact
*
*/
FileResource<?> getArtifact() throws DependencyException;

Expand All @@ -37,4 +38,9 @@ public interface Dependency
*/
boolean isOptional();

/**
* Returns the set of {@link Coordinate} instances that are excluded from this {@link Dependency} child hierarchy.
*/
List<Coordinate> getExcludedCoordinates();

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
package org.jboss.forge.dependencies;

/**
* Represents a repository from which {@link Dependency} instances may be resolved via {@link DependencyResolver}
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*
*/
public class DependencyRepository
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

package org.jboss.forge.dependencies.builder;

import java.util.ArrayList;
import java.util.List;

import org.jboss.forge.dependencies.Coordinate;
import org.jboss.forge.dependencies.Dependency;
import org.jboss.forge.resource.FileResource;
Expand All @@ -23,6 +26,7 @@ public class DependencyBuilder implements Dependency
private String scopeType;
private FileResource<?> artifact;
private boolean optional;
private List<Coordinate> exclusions;

private DependencyBuilder()
{
Expand Down Expand Up @@ -86,6 +90,27 @@ public static DependencyBuilder create(final String identifier)
return dependencyBuilder;
}

public DependencyBuilder addExclusion(Coordinate coordinate)
{
if (exclusions == null)
exclusions = new ArrayList<Coordinate>();

exclusions.add(coordinate);
return this;
}

@Override
public List<Coordinate> getExcludedCoordinates()
{
return exclusions;
}

public DependencyBuilder setExcludedCoordinates(List<Coordinate> coordinates)
{
this.exclusions = coordinates;
return this;
}

public DependencyBuilder setPackaging(String packaging)
{
getCoordinate().setPackaging(packaging);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import org.jboss.forge.dependencies.Dependency;
import org.jboss.forge.dependencies.DependencyNode;
import org.jboss.forge.dependencies.collection.Dependencies;
import org.jboss.forge.dependencies.collection.DependencyNodeUtil;

/**
* Creates a {@link DependencyNode} object
Expand Down Expand Up @@ -59,7 +59,7 @@ public DependencyNode getParent()
@Override
public String toString()
{
return Dependencies.prettyPrint(this).toString();
return DependencyNodeUtil.prettyPrint(this).toString();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*
*/
public final class Dependencies
public final class DependencyNodeUtil
{
public static final String FORGE_ADDON_CLASSIFIER = "forge-addon";

private Dependencies()
private DependencyNodeUtil()
{
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.dependencies.util;

import org.jboss.forge.dependencies.Coordinate;
import org.jboss.forge.dependencies.Dependency;

/**
* @author <a href="mailto:lincolnbaxter@gmail.getCoordinate().com">Lincoln Baxter, III</a>
*/
public class Dependencies
{
/**
* Compare the {@link Coordinate} of each given {@link Dependency} for equivalence.
*/
public static boolean areEquivalent(Dependency l, Dependency r)
{
if (l == r)
{
return true;
}
if ((l == null) && (r == null))
{
return true;
}
else if ((l == null) || (r == null))
{
return false;
}

return !(l.getCoordinate().getArtifactId() != null ? !l.getCoordinate().getArtifactId()
.equals(r.getCoordinate().getArtifactId()) : r.getCoordinate().getArtifactId() != null)
&&
!(l.getCoordinate().getGroupId() != null ? !l.getCoordinate().getGroupId()
.equals(r.getCoordinate().getGroupId()) : r.getCoordinate().getGroupId() != null)
&&
!(l.getCoordinate().getClassifier() != null ? !l.getCoordinate().getClassifier()
.equals(r.getCoordinate().getClassifier()) : r.getCoordinate().getClassifier() != null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
import org.jboss.forge.dependencies.DependencyNode;
import org.jboss.forge.dependencies.builder.DependencyBuilder;
import org.jboss.forge.dependencies.builder.DependencyNodeBuilder;
import org.jboss.forge.dependencies.collection.Dependencies;
import org.jboss.forge.dependencies.collection.DependencyNodeUtil;
import org.junit.Assert;
import org.junit.Test;

public class DependenciesTest
public class DependencyNodeUtilTest
{
@Test
public void testDepthFirstIterator()
Expand All @@ -40,7 +40,7 @@ public void testDepthFirstIterator()
root.getChildren().add(childTwo);

// Execute SUT
Iterator<DependencyNode> iterator = Dependencies.depthFirstIterator(root);
Iterator<DependencyNode> iterator = DependencyNodeUtil.depthFirstIterator(root);

// Check SUT outcome
Assert.assertTrue("Iterator is empty", iterator.hasNext());
Expand Down Expand Up @@ -83,7 +83,7 @@ public void testBreadthFirstIterator()
root.getChildren().add(childTwo);

// Execute SUT
Iterator<DependencyNode> iterator = Dependencies.breadthFirstIterator(root);
Iterator<DependencyNode> iterator = DependencyNodeUtil.breadthFirstIterator(root);

// Check SUT outcome
Assert.assertTrue("Iterator is empty", iterator.hasNext());
Expand Down Expand Up @@ -126,7 +126,7 @@ public void testPreorderIterator()
root.getChildren().add(childTwo);

// Execute SUT
Iterator<DependencyNode> iterator = Dependencies.preorderIterator(root);
Iterator<DependencyNode> iterator = DependencyNodeUtil.preorderIterator(root);

// Check SUT outcome
Assert.assertTrue("Iterator is empty", iterator.hasNext());
Expand Down
6 changes: 6 additions & 0 deletions maven/addon/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
<artifactId>maven</artifactId>
<name>Forge - Maven Addon</name>
<dependencies>
<dependency>
<groupId>org.jboss.forge</groupId>
<artifactId>environment</artifactId>
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge</groupId>
<artifactId>ui</artifactId>
Expand Down
8 changes: 7 additions & 1 deletion maven/api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,15 @@
</dependency>
<dependency>
<groupId>org.jboss.forge</groupId>
<artifactId>projects-api</artifactId>
<artifactId>environment-api</artifactId>
<version>2.0.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge</groupId>
<artifactId>projects-api</artifactId>
<version>2.0.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge</groupId>
Expand Down
Loading

0 comments on commit fc8b1dc

Please sign in to comment.