001    package org.nanocontainer.webcontainer.groovy.adapters;
002    
003    import org.nanocontainer.webcontainer.PicoContextHandler;
004    import org.nanocontainer.NanoContainer;
005    import org.nanocontainer.DefaultNanoContainer;
006    import org.picocontainer.MutablePicoContainer;
007    
008    import java.util.Map;
009    
010    import groovy.util.NodeBuilder;
011    
012    public class WaffleAdapter {
013        private final PicoContextHandler context;
014        private final MutablePicoContainer parentContainer;
015    
016        public WaffleAdapter(PicoContextHandler context, MutablePicoContainer parentContainer, Map attributes) {
017            this.context = context;
018            this.parentContainer = parentContainer;
019        }
020        public NodeBuilder getNodeBuilder() {
021            String className = "com.thoughtworks.waffle.groovy.WaffleBuilder";
022            NanoContainer factory = new DefaultNanoContainer();
023            factory.getPico().registerComponentInstance(PicoContextHandler.class, context);
024            factory.getPico().registerComponentInstance(MutablePicoContainer.class, parentContainer);
025            try {
026                factory.registerComponentImplementation("wb", className);
027                return (NodeBuilder) factory.getPico().getComponentInstance("wb");
028            } catch (ClassNotFoundException e) {
029                throw new org.nanocontainer.script.BuilderClassNotFoundException(className + " class name not found", e);
030            }
031    
032        }
033    
034    }