@Override public void setCurrentResource(final Resource<?> resource) { Assert.notNull(resource, "Current resource should not be null"); this.currentResource = resource; Resource<?> temp = resource; while (!(temp instanceof DirectoryResource) && temp != null) { temp = temp.getParent(); } if (temp instanceof DirectoryResource) { // Workaround to prevent "Current working directory must be a directory" exceptions when running in a // transaction File dir = ((DirectoryResource) temp).getUnderlyingResourceObject(); if (dir.exists()) { console.getAeshContext().setCurrentWorkingDirectory(new org.jboss.aesh.io.FileResource(dir)); } } updatePrompt(); }
/** * Complete. * * @param completerInvocation */ public static void complete(CompleterInvocation completerInvocation) { AeshContext context = completerInvocation.getAeshContext(); String currentValue = completerInvocation.getGivenCompleteValue(); CompleteOperation completeOperation = new CompleteOperation(context, currentValue, 0); if (StringUtils.isBlank(currentValue)) new FileLister("", context.getCurrentWorkingDirectory()). findMatchingDirectories(completeOperation); else new FileLister(currentValue, context.getCurrentWorkingDirectory()).findMatchingDirectories(completeOperation); if (completeOperation.getCompletionCandidates().size() > 1) { completeOperation.removeEscapedSpacesFromCompletionCandidates(); } completerInvocation.setCompleterValuesTerminalString(completeOperation.getCompletionCandidates()); if (currentValue != null && completerInvocation.getCompleterValues().size() == 1) { completerInvocation.setAppendSpace(completeOperation.hasAppendSeparator()); } }