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 }