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.DefaultClassLoadingPicoContainer;
010    import org.picocontainer.classname.ClassName;
011    
012    public class WaffleAdapter {
013    
014        private final PicoContext context;
015        private final MutablePicoContainer parentContainer;
016        private final Map attributes;
017    
018        public WaffleAdapter(PicoContext context, MutablePicoContainer parentContainer, Map attributes) {
019            this.context = context;
020            this.parentContainer = parentContainer;
021            this.attributes = attributes;
022        }
023    
024        public NodeBuilder getNodeBuilder() {
025            String className = "com.thoughtworks.waffle.groovy.WaffleBuilder";
026            DefaultClassLoadingPicoContainer factory = new DefaultClassLoadingPicoContainer();
027            factory.addComponent(PicoContext.class, context);
028            factory.addComponent(MutablePicoContainer.class, parentContainer);
029            factory.addComponent(Map.class, attributes);
030            factory.addComponent("wb", new ClassName(className));
031            return (NodeBuilder) factory.getComponent("wb");
032        }
033    
034    }