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 }