Skip to content

Commit

Permalink
Addon API changes and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lincolnthree committed Nov 26, 2012
1 parent fbb57dd commit 314d47c
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.arquillian.archive.ForgeArchive;
import org.jboss.forge.container.AddonEntry;
import org.jboss.forge.container.AddonRegistry;
import org.jboss.forge.container.AddonRepository;
import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
Expand All @@ -26,6 +27,9 @@
@RunWith(Arquillian.class)
public class AddonManagerTest
{
@Inject
private AddonRegistry registry;

@Inject
private AddonManager addonManager;

Expand All @@ -43,16 +47,17 @@ public static ForgeArchive getDeployment()
.addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))
.setAsForgeXML(new StringAsset("<addon/>"));

System.out.println(archive.toString(true));

return archive;
}

@Test
public void testResolvingAddon()
public void testResolvingAddon() throws InterruptedException
{
int addonCount = registry.getRegisteredAddons().size();
AddonEntry addon = AddonEntry.fromCoordinates("org.jboss.forge:forge-example-plugin:2.0.0-SNAPSHOT");
Assert.assertTrue(addonManager.install(addon));
Assert.assertTrue(repository.has(addon));
Thread.sleep(500);
Assert.assertEquals(addonCount + 1, registry.getRegisteredAddons().size());
}
}
24 changes: 12 additions & 12 deletions forge-aesh-addon/src/main/java/org/jboss/forge/aesh/AeshShell.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@
*/
package org.jboss.forge.aesh;

import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Set;

import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Singleton;

import org.jboss.aesh.console.Console;
import org.jboss.aesh.console.ConsoleOutput;
import org.jboss.aesh.console.settings.Settings;
import org.jboss.forge.container.Addon;
import org.jboss.forge.container.AddonRegistry;
import org.jboss.forge.container.ContainerControl;
import org.jboss.forge.container.event.Startup;
import org.jboss.forge.container.services.Remote;
import org.jboss.forge.container.services.ServiceRegistry;

import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Set;

/**
* @author <a href="mailto:stale.pedersen@jboss.org">Ståle W. Pedersen</a>
Expand Down Expand Up @@ -71,10 +71,10 @@ public void observe(@Observes Startup startup) throws IOException

private void listServices(Console console) throws IOException
{
Map<ClassLoader, ServiceRegistry> serviceRegistries = registry.getServices();
for (ServiceRegistry registry : serviceRegistries.values())
Set<Addon> addons = registry.getRegisteredAddons();
for (Addon addon : addons)
{
Set<Class<?>> serviceClasses = registry.getServices();
Set<Class<?>> serviceClasses = addon.getServiceRegistry().getServices();
for (Class<?> type : serviceClasses)
{
console.pushToStdOut("\n" + type.getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

public class AddonEntry
{
private static final String DEFAULT_SLOT = "main";
private final String name;
private final String apiVersion;
private final String slot;
Expand Down Expand Up @@ -35,13 +36,13 @@ public String getApiVersion()

public String getSlot()
{
return slot;
return slot == null ? DEFAULT_SLOT : slot;
}

@Override
public String toString()
{
return name + ":" + apiVersion + ":" + slot;
return toCoordinates();
}

public static AddonEntry fromCoordinates(final String coordinates)
Expand Down Expand Up @@ -77,9 +78,14 @@ public static AddonEntry from(String name, String apiVersion, String slot)
return new AddonEntry(name, apiVersion, slot);
}

public String toCoordinates()
{
return getName() + ":" + getApiVersion() + ":" + getSlot();
}

public String toModuleId()
{
return name + ":" + slot;
return getName() + ":" + getSlot();
}

@Override
Expand Down Expand Up @@ -126,10 +132,4 @@ else if (!slot.equals(other.slot))
return false;
return true;
}

public String toCoordinates()
{
return toString();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ public interface AddonRegistry

Set<Addon> getRegisteredAddons();

Map<ClassLoader, ServiceRegistry> getServices(Addon addon);

Map<ClassLoader, ServiceRegistry> getServices();
Map<Addon, ServiceRegistry> getServices();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.jboss.forge.container;

import org.junit.Assert;
import org.junit.Test;

public class AddonEntryTest
{
@Test
public void testCoordinates()
{
AddonEntry entry = AddonEntry.fromCoordinates("org.example.example-addon:2.0:1.0-SNAPSHOT");
Assert.assertEquals("org.example.example-addon:2.0:1.0-SNAPSHOT", entry.toCoordinates());
Assert.assertEquals("org.example.example-addon:1.0-SNAPSHOT", entry.toModuleId());
}

@Test
public void testCoordinatesFromIndividual()
{
AddonEntry entry = AddonEntry.from("org.example.example-addon", "2.0");
Assert.assertEquals("org.example.example-addon:2.0:main", entry.toCoordinates());
Assert.assertEquals("org.example.example-addon:main", entry.toModuleId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,16 @@ public boolean register(Addon addon)
}

@Override
public Map<ClassLoader, ServiceRegistry> getServices()
public Map<Addon, ServiceRegistry> getServices()
{
Map<ClassLoader, ServiceRegistry> services = new HashMap<ClassLoader, ServiceRegistry>();
Map<Addon, ServiceRegistry> services = new HashMap<Addon, ServiceRegistry>();
for (Addon addon : addons)
{
services.put(addon.getClassLoader(), addon.getServiceRegistry());
services.put(addon, addon.getServiceRegistry());
}
return services;
}

@Override
public Map<ClassLoader, ServiceRegistry> getServices(Addon addon)
{
Map<ClassLoader, ServiceRegistry> services = new HashMap<ClassLoader, ServiceRegistry>();
services.put(addon.getClassLoader(), addon.getServiceRegistry());
return services;
}

@Override
public Set<Addon> getRegisteredAddons()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.sf.cglib.proxy.LazyLoader;

import org.jboss.forge.container.Addon;
import org.jboss.forge.container.AddonRegistry;

public class RemoteProxyBeanCallback implements LazyLoader
Expand All @@ -19,9 +20,9 @@ public RemoteProxyBeanCallback(AddonRegistry registry, Class<?> serviceType)
public Object loadObject() throws Exception
{
Object result = null;
for (ClassLoader classLoader : registry.getServices().keySet())
for (Addon addon : registry.getServices().keySet())
{
ServiceRegistry serviceRegistry = registry.getServices().get(classLoader);
ServiceRegistry serviceRegistry = addon.getServiceRegistry();
if (serviceRegistry != null && serviceRegistry.hasService(serviceType))
{
RemoteInstance<?> instance = serviceRegistry.getRemoteInstance(serviceType);
Expand Down

0 comments on commit 314d47c

Please sign in to comment.