Skip to content

Commit

Permalink
update aesh dependency to 0.39 (second attempt)
Browse files Browse the repository at this point in the history
  • Loading branch information
koentsje committed Jul 30, 2013
1 parent 5601357 commit c11b68a
Show file tree
Hide file tree
Showing 12 changed files with 146 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.ResourceFactory;
import org.jboss.forge.addon.shell.ForgeShell;
import org.jboss.forge.addon.shell.test.TestShellConfiguration;
import org.jboss.forge.addon.shell.test.TestSettingsProvider;
import org.jboss.forge.arquillian.AddonDependency;
import org.jboss.forge.arquillian.Dependencies;
import org.jboss.forge.arquillian.archive.ForgeArchive;
Expand Down Expand Up @@ -61,7 +61,7 @@ public static ForgeArchive getDeployment()
private ForgeShell shell;

@Inject
private TestShellConfiguration streams;
private TestSettingsProvider streams;

@Inject
private ProjectFactory projectFactory;
Expand Down Expand Up @@ -96,7 +96,7 @@ public void testContainerInjection() throws Exception
Project project = projectFactory.findProject(projectRoot.getChildDirectory("lincoln"));

Assert.assertNotNull(project);

Assert.assertTrue(project.getProjectRoot().exists());

// TODO Wizard steps are not implemented by Aesh, so we can't actually invoke the entire wizard.
Expand Down
1 change: 0 additions & 1 deletion shell/api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
<artifactId>container-cdi-api</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>shell-spi</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,12 @@
import org.jboss.aesh.console.ConsoleOutput;
import org.jboss.aesh.console.Prompt;
import org.jboss.aesh.console.settings.Settings;
import org.jboss.aesh.console.settings.SettingsBuilder;
import org.jboss.aesh.terminal.CharacterType;
import org.jboss.aesh.terminal.Color;
import org.jboss.aesh.terminal.TerminalCharacter;
import org.jboss.forge.addon.shell.spi.AeshSettingsProvider;
import org.jboss.forge.addon.shell.spi.CommandExecutionListener;
import org.jboss.forge.addon.shell.spi.ShellConfiguration;
import org.jboss.forge.addon.shell.util.CommandLineUtil;
import org.jboss.forge.addon.shell.util.UICommandDelegate;
import org.jboss.forge.addon.ui.UICommand;
Expand All @@ -61,6 +62,7 @@ public class ForgeShellImpl implements ForgeShell
private static final Logger logger = Logger.getLogger(ForgeShellImpl.class.getName());

private Console console;
private Settings settings;
private Prompt prompt;
private List<ShellCommand> wizardSteps = new ArrayList<ShellCommand>();

Expand Down Expand Up @@ -94,7 +96,6 @@ public void stopShell() throws IOException
if (console != null && console.isRunning())
{
console.stop();
console.reset();
}
}

Expand All @@ -108,18 +109,22 @@ private void initShell() throws Exception
{
prompt = createPrompt();

Settings.getInstance().setReadInputrc(false);
Settings.getInstance().setLogging(true);

Imported<ShellConfiguration> instances = registry.getServices(ShellConfiguration.class);
for (ShellConfiguration config : instances)
Imported<AeshSettingsProvider> instances = registry.getServices(AeshSettingsProvider.class);
for (AeshSettingsProvider provider : instances)
{
config.configure();
instances.release(config);
settings = provider.buildSettings();
instances.release(provider);
}

if (settings == null) {
settings = new SettingsBuilder()
.readInputrc(false)
.logging(true)
.create();
}

commands = new ArrayList<ShellCommand>();
console = Console.getInstance();
console = new Console(settings);
console.setPrompt(prompt);
console.setConsoleCallback(new ForgeConsoleCallback());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public boolean isStandalone()
public void complete(CompleteOperation completeOperation)
{
try {
ParameterInt param = context.getParser().getParameters().get(0);
ParameterInt param = context.getParser().getParameter();
// complete command names
if (param.getName().startsWith(completeOperation.getBuffer()))
completeOperation.addCompletionCandidate(param.getName());
Expand Down Expand Up @@ -186,7 +186,7 @@ private void defaultCompletion(CompleteOperation completeOperation) throws Comma
.findCompleteObject(completeOperation.getBuffer()));
}
else {
completeOperation.addCompletionCandidates(context.getParser().getParameters().get(0).getOptionLongNamesWithDash());
completeOperation.addCompletionCandidates(context.getParser().getParameter().getOptionLongNamesWithDash());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public static CommandLineParser generateParser(UICommand command, ShellContext c
}
}
}
builder.addParameter(parameter);
builder.parameter(parameter);
return builder.generateParser();
}

Expand Down
2 changes: 1 addition & 1 deletion shell/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
</modules>

<properties>
<version.aesh>0.38</version.aesh>
<version.aesh>0.39</version.aesh>
<version.aesh.extensions>0.38</version.aesh.extensions>
</properties>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.jboss.forge.addon.shell.spi;

import org.jboss.aesh.console.settings.Settings;

public interface AeshSettingsProvider
{

Settings buildSettings();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package org.jboss.forge.addon.shell.test;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

import org.jboss.aesh.console.settings.Settings;
import org.jboss.aesh.console.settings.SettingsBuilder;
import org.jboss.aesh.edit.KeyOperation;
import org.jboss.aesh.edit.actions.Operation;
import org.jboss.aesh.terminal.Key;
import org.jboss.aesh.terminal.TestTerminal;
import org.jboss.forge.addon.shell.spi.AeshSettingsProvider;

public class TestSettingsProvider implements AeshSettingsProvider
{

private PipedOutputStream stdin = new PipedOutputStream();
private ByteArrayOutputStream stdout = new ByteArrayOutputStream();
private ByteArrayOutputStream stderr = new ByteArrayOutputStream();
private PipedInputStream inputStream;

private Settings settings;

@Override
public Settings buildSettings()
{
try {
inputStream = new PipedInputStream(stdin);
settings = new SettingsBuilder()
.inputStream(inputStream)
.outputStream(stdout)
.outputStreamError(stderr)
.name("test")
.logging(true)
.terminal(new TestTerminal())
.create();
settings.getOperationManager().addOperation(new KeyOperation(Key.ENTER, Operation.NEW_LINE));
} catch (IOException e) {
throw new RuntimeException("Could not configure Shell.", e);
}
return settings;
}

public synchronized OutputStream getStdIn()
{
return stdin;
}

public synchronized ByteArrayOutputStream getStdOut()
{
return stdout;
}

public synchronized ByteArrayOutputStream getStdErr()
{
return stderr;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.jboss.aesh.console.settings.Settings;
Expand All @@ -31,41 +32,41 @@ public class TestShellConfiguration implements ShellConfiguration
private ByteArrayOutputStream stdout = new ByteArrayOutputStream();
private ByteArrayOutputStream stderr = new ByteArrayOutputStream();
PipedInputStream inputStream;

@Override
public synchronized void configure()
{
try
{
Settings settings = Settings.getInstance();

inputStream = new PipedInputStream(stdin);
settings.setInputStream(inputStream);
settings.setStdOut(stdout);
settings.setStdErr(stderr);
settings.setName("test");
settings.setLogging(true);
settings.setTerminal(new TestTerminal());
settings.getOperationManager().addOperation(new KeyOperation(Key.ENTER, Operation.NEW_LINE));
}
catch (IOException e)
{
throw new RuntimeException("Could not configure Shell.", e);
}
}

public synchronized OutputStream getStdIn()
{
return stdin;
// try
// {
// Settings settings = Settings.getInstance();
//
// inputStream = new PipedInputStream(stdin);
// settings.setInputStream(inputStream);
// settings.setStdOut(stdout);
// settings.setStdErr(stderr);
// settings.setName("test");
// settings.setLogging(true);
// settings.setTerminal(new TestTerminal());
// settings.getOperationManager().addOperation(new KeyOperation(Key.ENTER, Operation.NEW_LINE));
// }
// catch (IOException e)
// {
// throw new RuntimeException("Could not configure Shell.", e);
// }
}

public synchronized ByteArrayOutputStream getStdOut()
{
return stdout;
}

public synchronized ByteArrayOutputStream getStdErr()
{
return stderr;
}
// public synchronized OutputStream getStdIn()
// {
// return stdin;
// }
//
// public synchronized ByteArrayOutputStream getStdOut()
// {
// return stdout;
// }
//
// public synchronized ByteArrayOutputStream getStdErr()
// {
// return stderr;
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,15 @@
@Singleton
public class ShellTestImpl implements ShellTest
{
private TestShellConfiguration config;
// private TestShellConfiguration config;
private TestCommandListener listener;
private TestSettingsProvider provider;

@Inject
public ShellTestImpl(TestShellConfiguration config, TestCommandListener listener)
public ShellTestImpl(TestSettingsProvider provider, TestCommandListener listener)
{
this.listener = listener;
this.config = config;
this.provider = provider;
}

@Override
Expand All @@ -46,7 +47,7 @@ public Result execute(String line)
if (!line.trim().endsWith("\n"))
line = line + "\n";
listener.reset();
config.getStdIn().write(line.getBytes());
provider.getStdIn().write(line.getBytes());
while (!listener.isExecuted())
{
Thread.sleep(10);
Expand All @@ -71,7 +72,7 @@ public Result execute(String line, int quantity, TimeUnit unit)
if (!line.trim().endsWith("\n"))
line = line + "\n";
listener.reset();
config.getStdIn().write(line.getBytes());
provider.getStdIn().write(line.getBytes());
long start = System.currentTimeMillis();
while (!listener.isExecuted())
{
Expand Down Expand Up @@ -101,13 +102,13 @@ public Result execute(String line, int quantity, TimeUnit unit)
@Override
public void waitForStdOut(String value, int quantity, TimeUnit unit) throws TimeoutException
{
waitForStream(value, config.getStdOut(), quantity, unit);
waitForStream(value, provider.getStdOut(), quantity, unit);
}

@Override
public void waitForStdErr(String value, int quantity, TimeUnit unit) throws TimeoutException
{
waitForStream(value, config.getStdErr(), quantity, unit);
waitForStream(value, provider.getStdErr(), quantity, unit);
}

private void waitForStream(String value, ByteArrayOutputStream stream, int quantity, TimeUnit unit)
Expand All @@ -116,8 +117,8 @@ private void waitForStream(String value, ByteArrayOutputStream stream, int quant
stream.reset();
try
{
config.getStdIn().write(value.getBytes());
config.getStdIn().flush();
provider.getStdIn().write(value.getBytes());
provider.getStdIn().flush();
}
catch (IOException e)
{
Expand Down Expand Up @@ -146,19 +147,19 @@ private void waitForStream(String value, ByteArrayOutputStream stream, int quant
@Override
public OutputStream getStdIn()
{
return config.getStdIn();
return provider.getStdIn();
}

@Override
public String getStdOut()
{
return config.getStdOut().toString();
return provider.getStdOut().toString();
}

@Override
public String getStdErr()
{
return config.getStdErr().toString();
return provider.getStdErr().toString();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.addon.shell.test.TestShellConfiguration;
import org.jboss.forge.addon.shell.test.TestSettingsProvider;
import org.jboss.forge.arquillian.AddonDependency;
import org.jboss.forge.arquillian.Dependencies;
import org.jboss.forge.arquillian.archive.ForgeArchive;
Expand Down Expand Up @@ -50,7 +50,7 @@ public static ForgeArchive getDeployment()
private ForgeShell shell;

@Inject
private TestShellConfiguration streams;
private TestSettingsProvider streams;

@Test
public void testCommandExecutionListenerTriggers() throws Exception
Expand Down
Loading

0 comments on commit c11b68a

Please sign in to comment.