    001    /*****************************************************************************
    002     * Copyright (C) NanoContainer Organization. All rights reserved.            *
    003     * ------------------------------------------------------------------------- *
    004     * The software in this package is published under the terms of the BSD      *
    005     * style license a copy of which has been included with this distribution in *
    006     * the LICENSE.txt file.                                                     *
    007     *                                                                           *
    008     *                                                                           *
    009     *****************************************************************************/
    010
    011    package org.nanocontainer.webcontainer.groovy;
    012
    013    import org.picocontainer.MutablePicoContainer;
    014    import org.nanocontainer.webcontainer.PicoJettyServer;
    015    import org.nanocontainer.script.groovy.buildernodes.AbstractBuilderNode;
    016    import org.nanocontainer.NanoContainer;
    017
    018    import java.util.Map;
    019
    020    public class WebContainerBuilder extends AbstractBuilderNode {
    021
    022
    023        public WebContainerBuilder() {
    024            super("webContainer");
    025        }
    026
    027        public Object createNewNode(Object current, Map map) {
    028            int port = 0;
    029            if (map.containsKey("port")) {
    030                port = ((Integer) map.remove("port")).intValue();
    031            }
    032            String host;
    033            if (map.containsKey("host")) {
    034                host = (String) map.remove("host");
    035            } else {
    036                host = "localhost";
    037            }
    038
    039            NanoContainer parentNano = (NanoContainer) current;
    040            MutablePicoContainer parentContainer = parentNano.getPico();
    041
    042            PicoJettyServer server = null;
    043            if (port != 0) {
    044                server = new PicoJettyServer(host, port, parentContainer);
    045            } else {
    046                server = new PicoJettyServer(parentContainer);
    047            }
    048            parentContainer.addChildContainer(server);
    049            return new ServerBuilder(server, parentContainer);
    050        }
    051
    052
    053    }
    054
    055