Author: reto
Date: Mon Dec 27 16:16:05 2010
New Revision: 1053099

URL: http://svn.apache.org/viewvc?rev=1053099&view=rev
Log:
CLEREZZA-375: added support for temination listeners

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala?rev=1053099&r1=1053098&r2=1053099&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
 Mon Dec 27 16:16:05 2010
@@ -64,6 +64,7 @@ class Shell(factory: InterpreterFactory,
 
        private var bindings = Set[(String, String, Any)]()
        private var imports = Set[String]()
+       private var terminationListeners = Set[Shell.TerminationListener]();
 
 
        val interpreterLoop = new InterpreterLoop(new BufferedReader(new 
InputStreamReader(System.in)), new PrintWriter(out, true)) {
@@ -182,6 +183,9 @@ class Shell(factory: InterpreterFactory,
                try {
                        interpreterLoop.main(Array[String]())
                } finally {
+                       for (l <- terminationListeners) {
+                               l.terminated
+                       }
                        println("console terminated")
                }
        }
@@ -203,6 +207,17 @@ class Shell(factory: InterpreterFactory,
                imports += importValue
        }
 
+       def addTerminationListener(l: Shell.TerminationListener) {
+               terminationListeners += l
+       }
 
+       def removeTerminationListener(l: Shell.TerminationListener) {
+               terminationListeners -= l
+       }
 
+}
+object Shell {
+       trait TerminationListener {
+               def terminated: Unit
+       }
 }
\ No newline at end of file


Reply via email to