}
@Override
public Result execute(UIExecutionContext context) throws Exception
{
Shell shell = (Shell) context.getUIContext().getProvider();
Resource<?> currentResource = shell.getCurrentResource();
Iterator<String> it = arguments.hasValue() ? arguments.getValue().iterator() : Collections
.<String> emptyIterator();
List<Resource<?>> resourceList;
if (it.hasNext())
{
String value = it.next();
boolean searching = (value.matches(".*(\\?|\\*)+.*"));
resourceList = new ResourcePathResolver(resourceFactory, currentResource, value).resolve();
if (!searching && !resourceList.isEmpty() && resourceList.get(0).exists())
{
resourceList = resourceList.get(0).listResources();
}
}
else
{
resourceList = currentResource.listResources();
}
final Result result;
if (!resourceList.isEmpty() && !resourceList.get(0).exists())
{
result = Results.fail(resourceList.get(0).getName() + ": No such file or directory");
}
else
{
UIOutput output = shell.getOutput();
output.out().println(listMany(resourceList, shell));
result = Results.success();
}
return result;
}