Create and configure the Digester we will be using for startup. @return the main digester to parse server.xml
()
| 482 | * @return the main digester to parse server.xml |
| 483 | */ |
| 484 | protected Digester createStartDigester() { |
| 485 | // Initialize the digester |
| 486 | Digester digester = new Digester(); |
| 487 | digester.setValidating(false); |
| 488 | digester.setRulesValidation(true); |
| 489 | Map<Class<?>,List<String>> fakeAttributes = new HashMap<>(); |
| 490 | // Ignore className on all elements |
| 491 | List<String> objectAttrs = new ArrayList<>(); |
| 492 | objectAttrs.add("className"); |
| 493 | fakeAttributes.put(Object.class, objectAttrs); |
| 494 | // Ignore attribute added by Eclipse for its internal tracking |
| 495 | List<String> contextAttrs = new ArrayList<>(); |
| 496 | contextAttrs.add("source"); |
| 497 | fakeAttributes.put(StandardContext.class, contextAttrs); |
| 498 | // Ignore Connector attribute used internally but set on Server |
| 499 | List<String> connectorAttrs = new ArrayList<>(); |
| 500 | connectorAttrs.add("portOffset"); |
| 501 | fakeAttributes.put(Connector.class, connectorAttrs); |
| 502 | digester.setFakeAttributes(fakeAttributes); |
| 503 | digester.setUseContextClassLoader(true); |
| 504 | |
| 505 | // Configure the actions we will be using |
| 506 | digester.addObjectCreate("Server", "org.apache.catalina.core.StandardServer", "className"); |
| 507 | digester.addSetProperties("Server"); |
| 508 | digester.addSetNext("Server", "setServer", "org.apache.catalina.Server"); |
| 509 | |
| 510 | digester.addObjectCreate("Server/GlobalNamingResources", "org.apache.catalina.deploy.NamingResourcesImpl"); |
| 511 | digester.addSetProperties("Server/GlobalNamingResources"); |
| 512 | digester.addSetNext("Server/GlobalNamingResources", "setGlobalNamingResources", |
| 513 | "org.apache.catalina.deploy.NamingResourcesImpl"); |
| 514 | |
| 515 | digester.addRule("Server/Listener", new ListenerCreateRule(null, "className")); |
| 516 | digester.addSetProperties("Server/Listener"); |
| 517 | digester.addSetNext("Server/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener"); |
| 518 | |
| 519 | digester.addObjectCreate("Server/Service", "org.apache.catalina.core.StandardService", "className"); |
| 520 | digester.addSetProperties("Server/Service"); |
| 521 | digester.addSetNext("Server/Service", "addService", "org.apache.catalina.Service"); |
| 522 | |
| 523 | digester.addObjectCreate("Server/Service/Listener", null, // MUST be specified in the element |
| 524 | "className"); |
| 525 | digester.addSetProperties("Server/Service/Listener"); |
| 526 | digester.addSetNext("Server/Service/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener"); |
| 527 | |
| 528 | // Executor |
| 529 | digester.addObjectCreate("Server/Service/Executor", "org.apache.catalina.core.StandardThreadExecutor", |
| 530 | "className"); |
| 531 | digester.addSetProperties("Server/Service/Executor"); |
| 532 | |
| 533 | digester.addSetNext("Server/Service/Executor", "addExecutor", "org.apache.catalina.Executor"); |
| 534 | |
| 535 | digester.addRule("Server/Service/Connector", new ConnectorCreateRule()); |
| 536 | digester.addSetProperties("Server/Service/Connector", |
| 537 | new String[] { "executor", "sslImplementationName", "protocol" }); |
| 538 | digester.addSetNext("Server/Service/Connector", "addConnector", "org.apache.catalina.connector.Connector"); |
| 539 | |
| 540 | digester.addRule("Server/Service/Connector", new AddPortOffsetRule()); |
| 541 |
no test coverage detected