Lines 17-25
Link Here
|
17 |
package org.apache.catalina.users; |
17 |
package org.apache.catalina.users; |
18 |
|
18 |
|
19 |
import java.io.File; |
19 |
import java.io.File; |
20 |
import java.io.FileInputStream; |
|
|
21 |
import java.io.FileOutputStream; |
20 |
import java.io.FileOutputStream; |
22 |
import java.io.IOException; |
21 |
import java.io.IOException; |
|
|
22 |
import java.io.InputStream; |
23 |
import java.io.OutputStreamWriter; |
23 |
import java.io.OutputStreamWriter; |
24 |
import java.io.PrintWriter; |
24 |
import java.io.PrintWriter; |
25 |
import java.util.HashMap; |
25 |
import java.util.HashMap; |
Lines 34-39
import org.apache.juli.logging.Log;
Link Here
|
34 |
import org.apache.juli.logging.LogFactory; |
34 |
import org.apache.juli.logging.LogFactory; |
35 |
import org.apache.tomcat.util.digester.AbstractObjectCreationFactory; |
35 |
import org.apache.tomcat.util.digester.AbstractObjectCreationFactory; |
36 |
import org.apache.tomcat.util.digester.Digester; |
36 |
import org.apache.tomcat.util.digester.Digester; |
|
|
37 |
import org.apache.tomcat.util.file.ConfigFileLoader; |
37 |
import org.apache.tomcat.util.res.StringManager; |
38 |
import org.apache.tomcat.util.res.StringManager; |
38 |
import org.xml.sax.Attributes; |
39 |
import org.xml.sax.Attributes; |
39 |
|
40 |
|
Lines 394-445
public class MemoryUserDatabase implements UserDatabase {
Link Here
|
394 |
groups.clear(); |
395 |
groups.clear(); |
395 |
roles.clear(); |
396 |
roles.clear(); |
396 |
|
397 |
|
397 |
// Construct a reader for the XML input file (if it exists) |
398 |
String pathName = getPathname(); |
398 |
File file = new File(pathname); |
399 |
InputStream is = null; |
399 |
if (!file.isAbsolute()) { |
|
|
400 |
file = new File(System.getProperty(Globals.CATALINA_BASE_PROP), |
401 |
pathname); |
402 |
} |
403 |
if (!file.exists()) { |
404 |
log.error(sm.getString("memoryUserDatabase.fileNotFound", |
405 |
file.getAbsolutePath())); |
406 |
return; |
407 |
} |
408 |
|
400 |
|
409 |
// Construct a digester to read the XML input file |
|
|
410 |
Digester digester = new Digester(); |
411 |
try { |
412 |
digester.setFeature( |
413 |
"http://apache.org/xml/features/allow-java-encodings", |
414 |
true); |
415 |
} catch (Exception e) { |
416 |
log.warn(sm.getString("memoryUserDatabase.xmlFeatureEncoding"), e); |
417 |
} |
418 |
digester.addFactoryCreate |
419 |
("tomcat-users/group", |
420 |
new MemoryGroupCreationFactory(this), true); |
421 |
digester.addFactoryCreate |
422 |
("tomcat-users/role", |
423 |
new MemoryRoleCreationFactory(this), true); |
424 |
digester.addFactoryCreate |
425 |
("tomcat-users/user", |
426 |
new MemoryUserCreationFactory(this), true); |
427 |
|
428 |
// Parse the XML input file to load this database |
429 |
FileInputStream fis = null; |
430 |
try { |
401 |
try { |
431 |
fis = new FileInputStream(file); |
402 |
is = ConfigFileLoader.getInputStream(pathName); |
432 |
digester.parse(fis); |
403 |
|
|
|
404 |
// Construct a digester to read the XML input file |
405 |
Digester digester = new Digester(); |
406 |
try { |
407 |
digester.setFeature( |
408 |
"http://apache.org/xml/features/allow-java-encodings", |
409 |
true); |
410 |
} catch (Exception e) { |
411 |
log.warn(sm.getString("memoryUserDatabase.xmlFeatureEncoding"), e); |
412 |
} |
413 |
digester.addFactoryCreate |
414 |
("tomcat-users/group", |
415 |
new MemoryGroupCreationFactory(this), true); |
416 |
digester.addFactoryCreate |
417 |
("tomcat-users/role", |
418 |
new MemoryRoleCreationFactory(this), true); |
419 |
digester.addFactoryCreate |
420 |
("tomcat-users/user", |
421 |
new MemoryUserCreationFactory(this), true); |
422 |
|
423 |
// Parse the XML input to load this database |
424 |
digester.parse(is); |
425 |
} catch (IOException ioe) { |
426 |
log.error(sm.getString("memoryUserDatabase.fileNotFound", pathName)); |
433 |
} finally { |
427 |
} finally { |
434 |
if (fis != null) { |
428 |
if (is != null) { |
435 |
try { |
429 |
try { |
436 |
fis.close(); |
430 |
is.close(); |
437 |
} catch (IOException ioe) { |
431 |
} catch (IOException ioe) { |
438 |
// Ignore |
432 |
// Ignore |
439 |
} |
433 |
} |
440 |
} |
434 |
} |
441 |
} |
435 |
} |
442 |
|
|
|
443 |
} |
436 |
} |
444 |
} |
437 |
} |
445 |
|
438 |
|