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