1 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 ; 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 createNode(Object name, Map 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 createBlockingChannelConnector(Map map) { 43 int port = ((Integer ) map.remove("port")).intValue(); 44 return server.createBlockingChannelConnector((String ) map.remove("host"), port); 45 } 46 47 protected Object createContext(Map map) { 48 boolean sessions = false; 49 if (map.containsKey("sessions")) { 50 sessions = Boolean.valueOf((String ) map.remove("sessions")).booleanValue(); 51 } 52 PicoContextHandler context = server.createContext((String ) map.remove("path"), sessions); 53 return new ContextBuilder(parentContainer, context); 54 } 55 56 protected Object createXmlWebApplication(Map map) { 57 PicoWebAppContext context = server.addWebApplication((String ) map.remove("path"), (String ) map.remove("warfile")); 58 return new WarFileBuilder(parentContainer, context); 59 } 60 61 } 62 | Popular Tags |