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 }