001    package org.picocontainer.jetty.groovy.adapters;
002    
003    import groovy.util.NodeBuilder;
004    
005    import java.util.Map;
006    
007    import org.picocontainer.jetty.PicoContext;
008    import org.picocontainer.MutablePicoContainer;
009    import org.picocontainer.classname.ClassName;
010    import org.picocontainer.classname.DefaultClassLoadingPicoContainer;
011    
012    public class NodeBuilderAdapter {
013        
014        private final String nodeBuilderClassName;    
015        private final PicoContext context;
016        private final MutablePicoContainer parentContainer;
017        private final Map attributes;
018    
019        public NodeBuilderAdapter(String nodeBuilderClassName, PicoContext context, MutablePicoContainer parentContainer, Map attributes) {
020            this.nodeBuilderClassName = nodeBuilderClassName;
021            this.context = context;
022            this.parentContainer = parentContainer;
023            this.attributes = attributes;
024        }
025        
026        public NodeBuilder getNodeBuilder() {
027            DefaultClassLoadingPicoContainer factory = new DefaultClassLoadingPicoContainer();
028            factory.addComponent(PicoContext.class, context);
029            factory.addComponent(MutablePicoContainer.class, parentContainer);
030            factory.addComponent(Map.class, attributes);
031            factory.addComponent("wb", new ClassName(nodeBuilderClassName));
032            return (NodeBuilder) factory.getComponent("wb");
033        }
034    
035    }