Skip to content

Commit

Permalink
Added JGraphT and a new Example Addon with Version Ranges
Browse files Browse the repository at this point in the history
  • Loading branch information
lincolnthree committed May 22, 2013
1 parent 3e87806 commit 1a9a746
Show file tree
Hide file tree
Showing 12 changed files with 269 additions and 8 deletions.
57 changes: 57 additions & 0 deletions addon-manager/example3/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jboss.forge</groupId>
<artifactId>forge-parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>

<groupId>org.jboss.forge.addon</groupId>
<artifactId>example3</artifactId>
<name>Forge - Example 3 Addon</name>

<dependencies>
<dependency>
<groupId>org.jboss.forge.furnace</groupId>
<artifactId>furnace-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>example</artifactId>
<version>[2.0.0-SNAPSHOT,3.0.0)</version>
<classifier>forge-addon</classifier>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>example2</artifactId>
<version>[2.0.0-SNAPSHOT,3.0.0)</version>
<classifier>forge-addon</classifier>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>create-forge-addon</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<inherited>false</inherited>
<configuration>
<classifier>forge-addon</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.example;

import javax.inject.Inject;

import org.example.other.OtherExampleAddon;
import org.jboss.forge.furnace.services.Exported;

@Exported
public class Example3Service
{
@Inject
private OtherExampleAddon service;

public int getRemoteHashCode()
{
return service.hashCode();
}
}
2 changes: 2 additions & 0 deletions addon-manager/example3/src/main/resources/META-INF/beans.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans />
1 change: 1 addition & 0 deletions addon-manager/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<module>tests</module>
<module>example</module>
<module>example2</module>
<module>example3</module>
</modules>


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/*
* 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.addon.manager;

import java.io.File;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import javax.inject.Inject;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.arquillian.Addon;
import org.jboss.forge.arquillian.Dependencies;
import org.jboss.forge.arquillian.archive.ForgeArchive;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.addons.AddonRegistry;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.forge.furnace.repositories.AddonRepository;
import org.jboss.forge.furnace.util.Addons;
import org.jboss.forge.furnace.versions.SingleVersion;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
* FIXME This test needs to be refactored to be a bit less brittle. It breaks when addon POMs change.
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@Ignore
@RunWith(Arquillian.class)
public class AddonManagerVersionRangeTest
{
@Deployment
@Dependencies({
@Addon(name = "org.jboss.forge.addon:addon-manager", version = "2.0.0-SNAPSHOT"),
@Addon(name = "org.jboss.forge.addon:maven", version = "2.0.0-SNAPSHOT")
})
public static ForgeArchive getDeployment()
{
ForgeArchive archive = ShrinkWrap
.create(ForgeArchive.class)
.addBeansXML()
.addAsAddonDependencies(
AddonDependencyEntry.create(AddonId.from("org.jboss.forge.addon:addon-manager", "2.0.0-SNAPSHOT"))
);

return archive;
}

@Inject
private AddonRegistry registry;

@Inject
private AddonManager addonManager;

@Inject
private AddonRepository repository;

@Test
public void testInstallingAddonWithSingleOptionalAddonDependency() throws InterruptedException
{
int addonCount = registry.getAddons().size();
AddonId example = AddonId.fromCoordinates("org.jboss.forge.addon:example3,2.0.0-SNAPSHOT");
InstallRequest request = addonManager.install(example);

Assert.assertEquals(0, request.getRequiredAddons().size());
Assert.assertEquals(1, request.getOptionalAddons().size());

request.perform();

Assert.assertTrue(repository.isEnabled(example));
Assert.assertEquals(2, repository.getAddonResources(example).size());
Assert.assertTrue(repository.getAddonResources(example).contains(
new File(repository.getAddonBaseDir(example), "commons-lang-2.6.jar")));
Assert.assertTrue(repository.getAddonResources(example).contains(
new File(repository.getAddonBaseDir(example), "example-2.0.0-SNAPSHOT-forge-addon.jar")));

Set<AddonDependencyEntry> dependencies = repository.getAddonDependencies(example);
Assert.assertEquals(1, dependencies.size());
AddonDependencyEntry dependency = dependencies.toArray(new AddonDependencyEntry[dependencies.size()])[0];
Assert.assertEquals("org.jboss.forge.addon:example2", dependency
.getId().getName());
Assert.assertEquals(new SingleVersion("2.0.0-SNAPSHOT"), dependency
.getId().getVersion());
Assert.assertTrue(dependency.isOptional());
Assert.assertFalse(dependency.isExported());

Assert.assertTrue(registry.getAddon(AddonId.from("org.jboss.forge.addon:example2", "2.0.0-SNAPSHOT"))
.getStatus().isMissing());

Addons.waitUntilStarted(registry.getAddon(example), 10, TimeUnit.SECONDS);
Assert.assertEquals(addonCount + 2, registry.getAddons().size());
}

}
4 changes: 4 additions & 0 deletions container/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
</dependency>
<dependency>
<groupId>net.sf.jgrapht</groupId>
<artifactId>jgrapht</artifactId>
</dependency>

</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ public Void call() throws Exception
if (starting.get() == -1)
starting.set(0);

Set<AddonId> enabled = getAllEnabled();
Set<AddonId> enabled = getAllEnabledInAllRepositories();

tree.breadthFirst(new MarkDisabledLoadedAddonsDirtyVisitor(tree, enabled));

Expand Down Expand Up @@ -275,7 +275,7 @@ public Void call() throws Exception
});
}

private Set<AddonId> getAllEnabled()
private Set<AddonId> getAllEnabledInAllRepositories()
{
Set<AddonId> result = new HashSet<AddonId>();
for (AddonRepository repository : forge.getRepositories())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.jboss.forge.furnace.exception.ContainerException;
import org.jboss.forge.furnace.impl.AddonRepositoryImpl;
import org.jboss.forge.furnace.modules.providers.FurnaceContainerSpec;
import org.jboss.forge.furnace.modules.providers.JGraphTClasspathSpec;
import org.jboss.forge.furnace.modules.providers.SystemClasspathSpec;
import org.jboss.forge.furnace.modules.providers.WeldClasspathSpec;
import org.jboss.forge.furnace.modules.providers.XPathJDKClasspathSpec;
Expand Down Expand Up @@ -129,10 +130,13 @@ public ModuleSpec findAddonModule(ModuleIdentifier id)

// Set up the ClassPath for this addon Module

// TODO Reduce visibility of Weld and JGrapht to Forge Module only.
builder.addDependency(DependencySpec.createModuleDependencySpec(SystemClasspathSpec.ID));
builder.addDependency(DependencySpec.createModuleDependencySpec(XPathJDKClasspathSpec.ID));
builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(),
PathFilters.rejectAll(), null, FurnaceContainerSpec.ID, false));
builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(),
PathFilters.rejectAll(), null, JGraphTClasspathSpec.ID, false));
builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(),
PathFilters.rejectAll(), null, WeldClasspathSpec.ID, false));

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

package org.jboss.forge.furnace.modules.providers;

import java.util.Arrays;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package org.jboss.forge.furnace.modules.providers;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import org.jboss.modules.DependencySpec;
import org.jboss.modules.ModuleIdentifier;
import org.jboss.modules.ModuleLoader;
import org.jboss.modules.ModuleSpec.Builder;
import org.jboss.modules.filter.PathFilters;

public class JGraphTClasspathSpec extends AbstractModuleSpecProvider
{
public static final ModuleIdentifier ID = ModuleIdentifier.create("org.jgrapht");

public static Set<String> paths = new HashSet<String>();

static
{
paths.add("org/jgrapht");
paths.add("org/jgrapht/alg");
paths.add("org/jgrapht/alg.util");
paths.add("org/jgrapht/demo");
paths.add("org/jgrapht/event");
paths.add("org/jgrapht/experimental");
paths.add("org/jgrapht/experimental/alg");
paths.add("org/jgrapht/experimental/alg/color");
paths.add("org/jgrapht/experimental/dag");
paths.add("org/jgrapht/experimental/equivalence");
paths.add("org/jgrapht/experimental/isomorphism");
paths.add("org/jgrapht/experimental/permutation");
paths.add("org/jgrapht/experimental/touchgraph");
paths.add("org/jgrapht/ext");
paths.add("org/jgrapht/generate");
paths.add("org/jgrapht/graph");
paths.add("org/jgrapht/traverse");
paths.add("org/jgrapht/util");
}

@Override
protected void configure(ModuleLoader loader, Builder builder)
{
builder.addDependency(DependencySpec.createSystemDependencySpec(
PathFilters.acceptAll(),
PathFilters.any(Arrays.asList(
PathFilters.isChildOf("org/jgrapht"),
PathFilters.is("org/jgrapht")
)),
systemPaths));
}

@Override
protected ModuleIdentifier getId()
{
return ID;
}

@Override
protected Set<String> getPaths()
{
return paths;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ org.jboss.forge.furnace.modules.providers.SunMiscClasspathSpec
org.jboss.forge.furnace.modules.providers.SunJDKClasspathSpec
org.jboss.forge.furnace.modules.providers.SystemClasspathSpec
org.jboss.forge.furnace.modules.providers.WeldClasspathSpec
org.jboss.forge.furnace.modules.providers.JGraphTClasspathSpec
org.jboss.forge.furnace.modules.providers.XPathJDKClasspathSpec
16 changes: 11 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
<version.javassist>1</version.javassist>
<version.jboss.spec>3.0.2.Final</version.jboss.spec>
<version.jboss.modules>3</version.jboss.modules>
<version.jgrapht>0.8.3</version.jgrapht>
<version.junit>4.11</version.junit>
<version.mvel>2.1.0.Final</version.mvel>
<version.org.jboss.logmanager.jboss-logmanager>1.4.1.Final</version.org.jboss.logmanager.jboss-logmanager>
Expand All @@ -87,7 +88,7 @@

<module>arquillian</module>
<module>test-harness</module>

<!-- TODO: Move Furnace -->
<module>container</module>
<module>container-api</module>
Expand Down Expand Up @@ -159,8 +160,13 @@
<artifactId>xml-parser</artifactId>
<version>${version.xmlparser}</version>
</dependency>


<dependency>
<groupId>net.sf.jgrapht</groupId>
<artifactId>jgrapht</artifactId>
<version>${version.jgrapht}</version>
</dependency>


<!-- Test Harneses Dependencies -->
<dependency>
<groupId>org.jboss.forge.test</groupId>
Expand Down Expand Up @@ -204,7 +210,7 @@
<artifactId>jboss-logmanager</artifactId>
<version>${version.org.jboss.logmanager.jboss-logmanager}</version>
</dependency>

<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
Expand All @@ -225,7 +231,7 @@
<version>${version.junit}</version>
<scope>test</scope>
</dependency>

<!-- The Shrinkwrap resolver BOM should be placed BEFORE the arquillian BOM, otherwise, it will be useless -->
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
Expand Down

0 comments on commit 1a9a746

Please sign in to comment.