From 5788fe7afe017c176b7038f9cdde418a7806d225 Mon Sep 17 00:00:00 2001
From: mayhew64 <mayhew64@yahoo.com>
Date: Fri, 18 Sep 2015 15:46:39 -0400
Subject: [PATCH] Added a lesson restart for lesson specific restart actions

---
 .../java/org/owasp/webgoat/lessons/AbstractLesson.java    | 6 ++++++
 .../java/org/owasp/webgoat/lessons/LessonAdapter.java     | 8 ++++++++
 .../main/java/org/owasp/webgoat/session/WebSession.java   | 1 +
 3 files changed, 15 insertions(+)

diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java
index 4ec41095e..2307f484e 100644
--- a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java
+++ b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java
@@ -676,6 +676,12 @@ public abstract class AbstractLesson extends Screen implements Comparable<Object
      */
     public abstract String getCurrentAction(WebSession s);
 
+   /**
+    * Initiates lesson restart functionality
+    */
+   public abstract void restartLesson();
+
+    
     /**
      * <p>setCurrentAction.</p>
      *
diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonAdapter.java b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonAdapter.java
index e5afea907..9afd0d90d 100644
--- a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonAdapter.java
+++ b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonAdapter.java
@@ -111,6 +111,14 @@ public abstract class LessonAdapter extends AbstractLesson {
         return false;
     }
 
+    /**
+     * Initiates lesson restart functionality. Lessons should override this for 
+     * lesson specific actions 
+     */
+    public void restartLesson() {
+        // Do Nothing - called when restart lesson is pressed. Each lesson can do something
+    }
+        
     private final static Integer DEFAULT_RANKING = new Integer(1000);
 
     /**
diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/session/WebSession.java b/webgoat-container/src/main/java/org/owasp/webgoat/session/WebSession.java
index d750b4272..77cca26a8 100644
--- a/webgoat-container/src/main/java/org/owasp/webgoat/session/WebSession.java
+++ b/webgoat-container/src/main/java/org/owasp/webgoat/session/WebSession.java
@@ -1126,6 +1126,7 @@ public class WebSession {
     public void restartLesson(int lessonId) {
         AbstractLesson al = getLesson(lessonId);
         System.out.println("Restarting lesson: " + al);
+        al.restartLesson();
         al.getLessonTracker(this).setCompleted(false);
         if (al instanceof SequentialLessonAdapter) {
             SequentialLessonAdapter sla = (SequentialLessonAdapter) al;