Skip to content

Commit

Permalink
Everything compiling and container tests pass 100%
Browse files Browse the repository at this point in the history
  • Loading branch information
lincolnthree committed Mar 15, 2013
1 parent f2c71e6 commit 2377286
Show file tree
Hide file tree
Showing 57 changed files with 533 additions and 509 deletions.
112 changes: 60 additions & 52 deletions aesh/src/main/java/org/jboss/forge/aesh/ForgeShell.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import org.jboss.aesh.terminal.CharacterType;
import org.jboss.aesh.terminal.Color;
import org.jboss.aesh.terminal.TerminalCharacter;
import org.jboss.forge.container.ContainerControl;
import org.jboss.forge.container.addons.Addon;
import org.jboss.forge.container.addons.AddonRegistry;
import org.jboss.forge.container.event.Perform;
import org.jboss.forge.container.services.Exported;
Expand All @@ -50,7 +50,7 @@ public class ForgeShell
private List<ShellCommand> commands;

@Inject
private ContainerControl containerControl;
private Addon self;

@Inject
private AddonRegistry registry;
Expand Down Expand Up @@ -175,7 +175,8 @@ public void stopShell() throws IOException
{
if (console != null)
console.stop();
containerControl.stop();

registry.stop(self);
}

private Prompt createPrompt()
Expand All @@ -201,57 +202,64 @@ private Prompt createPrompt()
return new Prompt(chars);
}

class ForgeConsoleCallback implements ConsoleCallback {
@Override
public int readConsoleOutput(ConsoleOutput output) throws IOException {
CommandLine cl = null;
if (output.getBuffer() != null && !output.getBuffer().trim().isEmpty())
class ForgeConsoleCallback implements ConsoleCallback
{
@Override
public int readConsoleOutput(ConsoleOutput output) throws IOException
{
CommandLine cl = null;
if (output.getBuffer() != null && !output.getBuffer().trim().isEmpty())
{
// TODO: should clean this up
try
{
//TODO: should clean this up
try {
verifyLoadedCommands();
} catch (Exception e) {
e.printStackTrace();
}
for (ShellCommand command : commands)
{
try
{
cl = command.parse(output.getBuffer());
if (cl != null)
{
// need some way of deciding if the command is standalone
if (command.getContext().isStandalone())
{
// console.
verifyLoadedCommands();
}
catch (Exception e)
{
e.printStackTrace();
}
for (ShellCommand command : commands)
{
try
{
cl = command.parse(output.getBuffer());
if (cl != null)
{
// need some way of deciding if the command is standalone
if (command.getContext().isStandalone())
{
// console.

}
else
{
try {
command.run(output, cl);
break;
}
catch (Exception e) {
logger.log(Level.SEVERE, "Command "+command+" failed to run with: "+output);
}
}
}
else
{
try
{
command.run(output, cl);
break;
}
catch (Exception e)
{
logger.log(Level.SEVERE, "Command " + command + " failed to run with: " + output);
}
}
catch (IllegalArgumentException iae)
{
// System.out.println("Command: " + command + ", did not match: " + output.getBuffer());
// ignored for now
}
}
// if we didnt find any commands matching
if (cl == null)
{
console.pushToStdOut(output.getBuffer() + ": command not found."
+ Config.getLineSeparator());
}
}
}
}
catch (IllegalArgumentException iae)
{
// System.out.println("Command: " + command + ", did not match: " + output.getBuffer());
// ignored for now
}
}
// if we didnt find any commands matching
if (cl == null)
{
console.pushToStdOut(output.getBuffer() + ": command not found."
+ Config.getLineSeparator());
}
return 0;
}
}
}
return 0;
}
}
}
4 changes: 2 additions & 2 deletions aesh/src/test/java/org/jboss/forge/aesh/AeshAddonTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import org.jboss.forge.arquillian.Addon;
import org.jboss.forge.arquillian.Dependencies;
import org.jboss.forge.arquillian.archive.ForgeArchive;
import org.jboss.forge.container.addons.AddonDependency;
import org.jboss.forge.container.addons.AddonId;
import org.jboss.forge.container.repositories.AddonDependencyEntry;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.Ignore;
Expand Down Expand Up @@ -43,7 +43,7 @@ public static ForgeArchive getDeployment()
.addAsLibraries(Maven.resolver().loadPomFromFile("pom.xml")
.resolve("org.jboss.aesh:aesh-extensions:0.33").withTransitivity().asFile())
.addBeansXML()
.addAsAddonDependencies(AddonDependency.create(AddonId.from("org.jboss.forge:ui", "2.0.0-SNAPSHOT")));
.addAsAddonDependencies(AddonDependencyEntry.create(AddonId.from("org.jboss.forge:ui", "2.0.0-SNAPSHOT")));

return archive;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import org.jboss.forge.container.addons.AddonId;
import org.jboss.forge.container.addons.AddonRegistry;
import org.jboss.forge.container.exception.ContainerException;
import org.jboss.forge.container.impl.repository.AddonRepositoryImpl;
import org.jboss.forge.container.impl.AddonRepositoryImpl;
import org.jboss.forge.container.repositories.MutableAddonRepository;
import org.jboss.forge.container.util.ClassLoaders;
import org.jboss.forge.container.util.Files;
Expand Down Expand Up @@ -70,7 +70,6 @@ public ProtocolMetaData deploy(Archive<?> archive) throws DeploymentException
repository.deploy(addonToDeploy, ((ForgeArchive) archive).getAddonDependencies(), new ArrayList<File>());
repository.enable(addonToDeploy);
Threads.sleep(200);
System.out.println("Deployed [" + addonToDeploy + "]");
}
else if (archive instanceof ForgeRemoteAddon)
{
Expand All @@ -79,7 +78,6 @@ else if (archive instanceof ForgeRemoteAddon)
new FileResourceFactory(), new MavenContainer()));
InstallRequest request = addonManager.install(remoteAddon.getAddonId());
request.perform();
System.out.println("Deployed [" + remoteAddon.getAddonId() + "]");
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map.Entry;
import java.util.concurrent.Future;

import org.jboss.arquillian.container.test.spi.ContainerMethodExecutor;
import org.jboss.arquillian.test.spi.TestMethodExecutor;
Expand All @@ -31,7 +31,7 @@
import org.jboss.forge.container.addons.AddonRegistry;
import org.jboss.forge.container.services.ExportedInstance;
import org.jboss.forge.container.services.ServiceRegistry;
import org.jboss.forge.container.util.Threads;
import org.jboss.forge.container.util.ClassLoaders;

/**
* @author <a href="mailto:aslak@conduct.no">Aslak Knutsen</a>
Expand Down Expand Up @@ -67,25 +67,32 @@ public TestResult invoke(final TestMethodExecutor testMethodExecutor)
String testClassName = testMethodExecutor.getInstance().getClass().getName();
AddonRegistry addonRegistry = forge.getAddonRegistry();
Object instance = null;
for (Entry<Addon, ServiceRegistry> entry : addonRegistry.getServiceRegistries().entrySet())
{
ServiceRegistry registry = entry.getValue();
Addon addon = entry.getKey();
registry = addonRegistry.getServiceRegistries().get(addon);

ExportedInstance<?> result = registry.getExportedInstance(testClassName);
for (Addon addon : addonRegistry.getRegisteredAddons())
{
if (!addon.getStatus().isMissing() && ClassLoaders.containsClass(addon.getClassLoader(), testClassName))
{
Future<Addon> future = addonRegistry.start(addon.getId());
future.get();
}

if (result != null)
if (addon.getStatus().isStarted())
{
if (instance == null)
{
instance = result.get();
}
else
ServiceRegistry registry = addon.getServiceRegistry();
ExportedInstance<?> result = registry.getExportedInstance(testClassName);

if (result != null)
{
throw new IllegalStateException(
"Multiple test classes found in deployed addons. " +
"You must have only one @Deployment(testable=true\"); deployment");
if (instance == null)
{
instance = result.get();
}
else
{
throw new IllegalStateException(
"Multiple test classes found in deployed addons. " +
"You must have only one @Deployment(testable=true\"); deployment");
}
}
}
}
Expand Down Expand Up @@ -114,8 +121,15 @@ public TestResult invoke(final TestMethodExecutor testMethodExecutor)
{
try
{
method.invoke(instance);
result = new TestResult(Status.PASSED);
try
{
System.out.println("Executing test method: " + method);
method.invoke(instance);
result = new TestResult(Status.PASSED);
}
finally
{
}
}
catch (InvocationTargetException e)
{
Expand Down
47 changes: 32 additions & 15 deletions bootstrap/src/main/java/org/jboss/forge/bootstrap/Bootstrap.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package org.jboss.forge.bootstrap;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;
import java.util.logging.Logger;
Expand All @@ -16,7 +17,9 @@
import org.jboss.forge.addon.manager.impl.AddonManagerImpl;
import org.jboss.forge.container.Forge;
import org.jboss.forge.container.addons.AddonId;
import org.jboss.forge.container.impl.AddonRepositoryImpl;
import org.jboss.forge.container.repositories.AddonRepository;
import org.jboss.forge.container.repositories.MutableAddonRepository;
import org.jboss.forge.dependencies.Coordinate;
import org.jboss.forge.dependencies.builder.CoordinateBuilder;
import org.jboss.forge.dependencies.builder.DependencyQueryBuilder;
Expand All @@ -26,11 +29,11 @@

/**
* A class with a main method to bootstrap Forge.
*
*
* You can deploy addons by calling {@link Bootstrap#install(String)}
*
*
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*
*
*/
public class Bootstrap
{
Expand All @@ -51,6 +54,8 @@ private Bootstrap(String[] args)
String installAddon = null;
String removeAddon = null;
forge = ServiceLoader.load(Forge.class).iterator().next();

List<AddonRepository> repositories = new ArrayList<AddonRepository>();
if (args.length > 0)
{
for (int i = 0; i < args.length; i++)
Expand All @@ -69,7 +74,7 @@ else if ("--list".equals(args[i]))
}
else if ("--addonDir".equals(args[i]))
{
forge.setAddonDir(new File(args[++i]));
repositories.add(AddonRepositoryImpl.forDirectory(forge, new File(args[++i])));
}
else if ("--batchMode".equals(args[i]))
{
Expand All @@ -80,6 +85,9 @@ else if ("--batchMode".equals(args[i]))
}
}

if (!repositories.isEmpty())
forge.setRepositories(repositories);

if (listInstalled)
list();
if (installAddon != null)
Expand All @@ -92,10 +100,14 @@ private void list()
{
try
{
List<AddonId> addons = forge.getRepository().listEnabled();
for (AddonId addon : addons)
for (AddonRepository repository : forge.getRepositories())
{
System.out.println(addon.toCoordinates());
System.out.println(repository.getRootDirectory().getCanonicalPath() + ":");
List<AddonId> addons = repository.listEnabled();
for (AddonId addon : addons)
{
System.out.println(addon.toCoordinates());
}
}
}
catch (Exception e)
Expand All @@ -119,7 +131,7 @@ private void install(String addonCoordinates)
try
{
MavenDependencyResolver resolver = new MavenDependencyResolver(new FileResourceFactory(), new MavenContainer());
AddonManagerImpl addonManager = new AddonManagerImpl(forge.getRepository(), resolver);
AddonManagerImpl addonManager = new AddonManagerImpl(forge, resolver);

AddonId addon;
// This allows forge --install maven
Expand Down Expand Up @@ -158,7 +170,6 @@ private void remove(String addonCoordinates)
{
try
{
AddonRepository repository = forge.getRepository();
AddonId addon = null;
// This allows forge --remove maven
if (addonCoordinates.contains(","))
Expand All @@ -168,21 +179,27 @@ private void remove(String addonCoordinates)
else
{
String coordinates = "org.jboss.forge:" + addonCoordinates;
for (AddonId id : repository.listEnabled())
REPOS: for (AddonRepository repository : forge.getRepositories())
{
if (coordinates.equals(id.getName()))
for (AddonId id : repository.listEnabled())
{
addon = id;
break;
if (coordinates.equals(id.getName()))
{
addon = id;
if (repository instanceof MutableAddonRepository)
{
((MutableAddonRepository) repository).disable(addon);
((MutableAddonRepository) repository).undeploy(addon);
}
break REPOS;
}
}
}
if (addon == null)
{
throw new IllegalArgumentException("No addon exists with id " + coordinates);
}
}
repository.disable(addon);
repository.undeploy(addon);
}
catch (Exception e)
{
Expand Down
Loading

0 comments on commit 2377286

Please sign in to comment.