7
7
import java .util .Iterator ;
8
8
import java .util .List ;
9
9
import java .util .Set ;
10
- import java .util .Vector ;
11
10
import java .util .LinkedList ;
12
11
import javax .servlet .ServletContext ;
13
12
import org .owasp .webgoat .HammerHead ;
14
13
import org .owasp .webgoat .lessons .AbstractLesson ;
15
14
import org .owasp .webgoat .lessons .Category ;
15
+ import org .owasp .webgoat .util .WebGoatI18N ;
16
16
import org .slf4j .Logger ;
17
17
import org .slf4j .LoggerFactory ;
18
18
51
51
*/
52
52
public class Course {
53
53
54
- final Logger logger = LoggerFactory .getLogger (WebgoatProperties .class );
54
+ final Logger logger = LoggerFactory .getLogger (Course .class );
55
55
56
- private List <AbstractLesson > lessons = new LinkedList <AbstractLesson >();
56
+ private final List <AbstractLesson > lessons = new LinkedList <AbstractLesson >();
57
57
58
58
private final static String PROPERTIES_FILENAME = HammerHead .propertiesPath ;
59
59
60
60
private WebgoatProperties properties = null ;
61
61
62
- private List <String > files = new LinkedList <String >();
62
+ private final List <String > files = new LinkedList <String >();
63
63
64
64
private WebgoatContext webgoatContext ;
65
65
@@ -82,11 +82,11 @@ public Course() {
82
82
private static String getFileName (String s ) {
83
83
String fileName = new File (s ).getName ();
84
84
85
- if (fileName .indexOf ("/" ) != - 1 ) {
85
+ if (fileName .contains ("/" )) {
86
86
fileName = fileName .substring (fileName .lastIndexOf ("/" ), fileName .length ());
87
87
}
88
88
89
- if (fileName .indexOf ("." ) != - 1 ) {
89
+ if (fileName .contains ("." )) {
90
90
fileName = fileName .substring (0 , fileName .indexOf ("." ));
91
91
}
92
92
@@ -102,7 +102,7 @@ private static String getFileName(String s) {
102
102
* @return
103
103
*/
104
104
private static String getSourceFile (String className ) {
105
- StringBuffer sb = new StringBuffer ();
105
+ StringBuilder sb = new StringBuilder ();
106
106
107
107
sb .append (className .replace ("." , "/" ));
108
108
sb .append (".java" );
@@ -150,11 +150,7 @@ private static String getClassFile(String fileName, String path) {
150
150
*/
151
151
public List getCategories () {
152
152
List <Category > categories = new ArrayList <Category >();
153
- Iterator iter = lessons .iterator ();
154
-
155
- while (iter .hasNext ()) {
156
- AbstractLesson lesson = (AbstractLesson ) iter .next ();
157
-
153
+ for (AbstractLesson lesson : lessons ) {
158
154
if (!categories .contains (lesson .getCategory ())) {
159
155
categories .add (lesson .getCategory ());
160
156
}
@@ -181,8 +177,9 @@ public AbstractLesson getFirstLesson() {
181
177
/**
182
178
* Gets the lesson attribute of the Course object
183
179
*
180
+ * @param s
184
181
* @param lessonId Description of the Parameter
185
- * @param role Description of the Parameter
182
+ * @param roles
186
183
* @return The lesson value
187
184
*/
188
185
public AbstractLesson getLesson (WebSession s , int lessonId , List <String > roles ) {
@@ -205,21 +202,22 @@ public AbstractLesson getLesson(WebSession s, int lessonId, List<String> roles)
205
202
}
206
203
207
204
public AbstractLesson getLesson (WebSession s , int lessonId , String role ) {
208
- List <String > roles = new Vector <String >();
205
+ List <String > roles = new ArrayList <String >();
209
206
roles .add (role );
210
207
return getLesson (s , lessonId , roles );
211
208
}
212
209
213
210
public List getLessons (WebSession s , String role ) {
214
- List <String > roles = new Vector <String >();
211
+ List <String > roles = new ArrayList <String >();
215
212
roles .add (role );
216
213
return getLessons (s , roles );
217
214
}
218
215
219
216
/**
220
217
* Gets the lessons attribute of the Course object
221
218
*
222
- * @param role Description of the Parameter
219
+ * @param s
220
+ * @param roles
223
221
* @return The lessons value
224
222
*/
225
223
public List <AbstractLesson > getLessons (WebSession s , List <String > roles ) {
@@ -245,10 +243,7 @@ public List<AbstractLesson> getLessons(WebSession s, List<String> roles) {
245
243
private List <AbstractLesson > getLessons (Category category , List roles ) {
246
244
List <AbstractLesson > lessonList = new ArrayList <AbstractLesson >();
247
245
248
- Iterator iter = lessons .iterator ();
249
- while (iter .hasNext ()) {
250
- AbstractLesson lesson = (AbstractLesson ) iter .next ();
251
-
246
+ for (AbstractLesson lesson : lessons ) {
252
247
if (lesson .getCategory ().equals (category ) && roles .contains (lesson .getRole ())) {
253
248
lessonList .add (lesson );
254
249
}
@@ -260,7 +255,7 @@ private List<AbstractLesson> getLessons(Category category, List roles) {
260
255
}
261
256
262
257
public List getLessons (WebSession s , Category category , String role ) {
263
- List <String > roles = new Vector <String >();
258
+ List <String > roles = new ArrayList <String >();
264
259
roles .add (role );
265
260
return getLessons (s , category , roles );
266
261
}
@@ -288,7 +283,12 @@ public AbstractLesson getLesson(int lessonId) {
288
283
* @param path
289
284
*/
290
285
private void loadFiles (ServletContext context , String path ) {
286
+ logger .debug ("Loading files into cache, path: " + path );
291
287
Set resourcePaths = context .getResourcePaths (path );
288
+ if (resourcePaths == null ) {
289
+ logger .error ("Unable to load file cache for courses, this is probably a bug or configuration issue" );
290
+ return ;
291
+ }
292
292
Iterator itr = resourcePaths .iterator ();
293
293
294
294
while (itr .hasNext ()) {
@@ -308,10 +308,7 @@ private void loadFiles(ServletContext context, String path) {
308
308
* @param path
309
309
*/
310
310
private void loadLessons (String path ) {
311
- Iterator itr = files .iterator ();
312
-
313
- while (itr .hasNext ()) {
314
- String file = (String ) itr .next ();
311
+ for (String file : files ) {
315
312
String className = getClassFile (file , path );
316
313
317
314
if (className != null && !className .endsWith ("_i" )) {
@@ -330,7 +327,7 @@ private void loadLessons(String path) {
330
327
}
331
328
}
332
329
} catch (Exception e ) {
333
- // System.out.println("Warning : " + e.getMessage() );
330
+ logger . error ( "Error in loadLessons : ", e );
334
331
}
335
332
}
336
333
}
@@ -341,26 +338,20 @@ private String getLanguageFromFileName(String first, String absoluteFile) {
341
338
int p2 = absoluteFile .indexOf ("/" , p1 + 1 );
342
339
String langStr = absoluteFile .substring (p1 + 1 , p2 );
343
340
344
- return new String ( langStr ) ;
341
+ return langStr ;
345
342
}
346
343
347
344
/**
348
345
* For each lesson, set the source file and lesson file
349
346
*/
350
347
private void loadResources () {
351
- Iterator lessonItr = lessons .iterator ();
352
-
353
- while (lessonItr .hasNext ()) {
354
- AbstractLesson lesson = (AbstractLesson ) lessonItr .next ();
348
+ for (AbstractLesson lesson : lessons ) {
355
349
String className = lesson .getClass ().getName ();
356
350
String classFile = getSourceFile (className );
357
351
358
- Iterator fileItr = files .iterator ();
359
-
360
- while (fileItr .hasNext ()) {
361
- String absoluteFile = (String ) fileItr .next ();
352
+ for (String absoluteFile : files ) {
362
353
String fileName = getFileName (absoluteFile );
363
- // System.out.println ("Course: looking at file: " + absoluteFile);
354
+ logger . debug ("Course: looking at file: " + absoluteFile );
364
355
365
356
if (absoluteFile .endsWith (classFile )) {
366
357
// System.out.println("Set source file for " + classFile);
@@ -369,20 +360,18 @@ private void loadResources() {
369
360
370
361
if (absoluteFile .startsWith ("/lesson_plans" ) && absoluteFile .endsWith (".html" )
371
362
&& className .endsWith (fileName )) {
372
- // System.out.println("DEBUG: setting lesson plan file " + absoluteFile + " for
373
- // lesson " +
374
- // lesson.getClass().getName());
375
- // System.out.println("fileName: " + fileName + " == className: " + className );
363
+ logger .debug ("DEBUG: setting lesson plan file " + absoluteFile + " for lesson "
364
+ + lesson .getClass ().getName ());
365
+ logger .debug ("fileName: " + fileName + " == className: " + className );
376
366
String language = getLanguageFromFileName ("/lesson_plans" , absoluteFile );
377
367
lesson .setLessonPlanFileName (language , absoluteFile );
378
- this . webgoatContext . getWebgoatI18N () .loadLanguage (language );
368
+ WebGoatI18N .loadLanguage (language );
379
369
}
380
370
if (absoluteFile .startsWith ("/lesson_solutions" ) && absoluteFile .endsWith (".html" )
381
371
&& className .endsWith (fileName )) {
382
- // System.out.println("DEBUG: setting lesson solution file " + absoluteFile + "
383
- // for lesson " +
384
- // lesson.getClass().getName());
385
- // System.out.println("fileName: " + fileName + " == className: " + className );
372
+ logger .debug ("DEBUG: setting lesson solution file " + absoluteFile + " for lesson "
373
+ + lesson .getClass ().getName ());
374
+ logger .debug ("fileName: " + fileName + " == className: " + className );
386
375
lesson .setLessonSolutionFileName (absoluteFile );
387
376
}
388
377
}
@@ -392,10 +381,12 @@ private void loadResources() {
392
381
/**
393
382
* Description of the Method
394
383
*
384
+ * @param webgoatContext
395
385
* @param path Description of the Parameter
396
386
* @param context Description of the Parameter
397
387
*/
398
388
public void loadCourses (WebgoatContext webgoatContext , ServletContext context , String path ) {
389
+ logger .info ("Loading courses: " + path );
399
390
this .webgoatContext = webgoatContext ;
400
391
loadFiles (context , path );
401
392
loadLessons (path );
0 commit comments