KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > nanocontainer > webcontainer > groovy > ServerBuilder


1 /*****************************************************************************
2  * Copyright (C) NanoContainer Organization. All rights reserved. *
3  * ------------------------------------------------------------------------- *
4  * The software in this package is published under the terms of the BSD *
5  * style license a copy of which has been included with this distribution in *
6  * the LICENSE.txt file. *
7  * *
8  *****************************************************************************/

9
10 package org.nanocontainer.webcontainer.groovy;
11
12 import groovy.util.NodeBuilder;
13 import org.mortbay.jetty.Connector;
14 import org.nanocontainer.webcontainer.PicoContextHandler;
15 import org.nanocontainer.webcontainer.PicoJettyServer;
16 import org.nanocontainer.webcontainer.PicoWebAppContext;
17 import org.nanocontainer.script.groovy.NodeCreator;
18 import org.picocontainer.MutablePicoContainer;
19
20 import java.util.Map JavaDoc;
21
22 public class ServerBuilder extends NodeBuilder {
23     private final PicoJettyServer server;
24     private final MutablePicoContainer parentContainer;
25
26     public ServerBuilder(PicoJettyServer server, MutablePicoContainer parentContainer) {
27         this.server = server;
28         this.parentContainer = parentContainer;
29     }
30
31     protected Object JavaDoc createNode(Object JavaDoc name, Map JavaDoc map) {
32         if (name.equals("context")) {
33             return createContext(map);
34         } else if (name.equals("blockingChannelConnector")) {
35             return createBlockingChannelConnector(map);
36         } else if (name.equals("xmlWebApplication")) {
37             return createXmlWebApplication(map);
38         }
39         return null;
40     }
41
42     protected Object JavaDoc createBlockingChannelConnector(Map JavaDoc map) {
43         int port = ((Integer JavaDoc) map.remove("port")).intValue();
44         return server.createBlockingChannelConnector((String JavaDoc) map.remove("host"), port);
45     }
46
47     protected Object JavaDoc createContext(Map JavaDoc map) {
48         boolean sessions = false;
49         if (map.containsKey("sessions")) {
50             sessions = Boolean.valueOf((String JavaDoc) map.remove("sessions")).booleanValue();
51         }
52         PicoContextHandler context = server.createContext((String JavaDoc) map.remove("path"), sessions);
53         return new ContextBuilder(parentContainer, context);
54     }
55
56     protected Object JavaDoc createXmlWebApplication(Map JavaDoc map) {
57         PicoWebAppContext context = server.addWebApplication((String JavaDoc) map.remove("path"), (String JavaDoc) map.remove("warfile"));
58         return new WarFileBuilder(parentContainer, context);
59     }
60
61 }
62
Popular Tags