001 package org.nanocontainer.script.groovy.buildernodes;
002
003 import java.util.Map;
004
005 import org.nanocontainer.NanoContainer;
006 import org.nanocontainer.script.NanoContainerMarkupException;
007
008 public class DecoratingPicoContainerNode extends AbstractBuilderNode {
009
010 public static final String NODE_NAME = "decoratingPicoContainer";
011
012 public DecoratingPicoContainerNode() {
013 super(NODE_NAME);
014 }
015
016 public Object createNewNode(Object current, Map attributes) {
017
018 if (!(current instanceof NanoContainer)) {
019 throw new NanoContainerMarkupException("Don't know how to create a 'decoratingPicoContainer' child of a '" + current.getClass() + "' parent");
020 }
021
022 Class clazz = (Class) attributes.remove("class");
023 NanoContainer container = (NanoContainer) current;
024
025 return container.addDecoratingPicoContainer(clazz);
026 }
027
028 }