Author: cschneider Date: Tue Jul 5 12:51:53 2011 New Revision: 1143032 URL: http://svn.apache.org/viewvc?rev=1143032&view=rev Log: KARAF-281 Fixed
Added: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/KarafFileHistory.java (with props) Modified: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java Modified: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java?rev=1143032&r1=1143031&r2=1143032&view=diff ============================================================================== --- karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java (original) +++ karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java Tue Jul 5 12:51:53 2011 @@ -103,39 +103,13 @@ public class Console implements Runnable this.terminal); final File file = getHistoryFile(); - file.getParentFile().mkdirs(); - - // We may not have the perms to read the history file... - if( file.exists() && file.canRead() ) { - // Override the FileHistory impl to trap failures due to the - // user does not having write access to the history file. - reader.setHistory(new FileHistory(file) { - boolean failed = false; - @Override - public void flush() throws IOException { - if( !failed ) { - try { - super.flush(); - } catch (IOException e) { - failed = true; - LOGGER.debug("Cold not write history file: "+file, e); - } - } - } + try { + file.getParentFile().mkdirs(); + reader.setHistory(new KarafFileHistory(file)); + } catch (Exception e) { + LOGGER.error("Can not read history from file " + file + ". Using in memory history", e); + } - @Override - public void purge() throws IOException { - if( !failed ) { - try { - super.purge(); - } catch (IOException e) { - failed = true; - LOGGER.debug("Cold not delete history file: "+file, e); - } - } - } - }); - } session.put(".jline.history", reader.getHistory()); Completer completer = createCompleter(); if (completer != null) { Added: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/KarafFileHistory.java URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/KarafFileHistory.java?rev=1143032&view=auto ============================================================================== --- karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/KarafFileHistory.java (added) +++ karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/KarafFileHistory.java Tue Jul 5 12:51:53 2011 @@ -0,0 +1,46 @@ +package org.apache.karaf.shell.console.jline; + +import java.io.File; +import java.io.IOException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import jline.console.history.FileHistory; + +/** + * Override the FileHistory impl to trap failures due to the + * user does not having write access to the history file. + */ +public final class KarafFileHistory extends FileHistory { + static final Logger LOGGER = LoggerFactory.getLogger(KarafFileHistory.class); + boolean failed = false; + + public KarafFileHistory(File file) throws IOException { + super(file); + } + + @Override + public void flush() throws IOException { + if( !failed ) { + try { + super.flush(); + } catch (IOException e) { + failed = true; + LOGGER.debug("Could not write history file: "+ getFile(), e); + } + } + } + + @Override + public void purge() throws IOException { + if( !failed ) { + try { + super.purge(); + } catch (IOException e) { + failed = true; + LOGGER.debug("Could not delete history file: "+ getFile(), e); + } + } + } +} \ No newline at end of file Propchange: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/KarafFileHistory.java ------------------------------------------------------------------------------ svn:mime-type = text/plain