001 /* 002 * ConvertedClosure.java created on 12.10.2006 003 * 004 * To change this generated comment go to 005 * Window>Preferences>Java>Code Generation>Code and Comments 006 */ 007 package org.codehaus.groovy.runtime; 008 009 import java.lang.reflect.Method; 010 import java.util.Map; 011 012 import groovy.lang.Closure; 013 014 /** 015 * This class is a general adapter to adapt a map of closures to 016 * any Java interface. 017 * <p> 018 * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a> 019 */ 020 public class ConvertedMap extends ConversionHandler { 021 022 /** 023 * to create a ConvertedMap object. 024 * @param map the map of closres 025 */ 026 protected ConvertedMap(Map closures) { 027 super(closures); 028 } 029 030 public Object invokeCustom(Object proxy, Method method, Object[] args) 031 throws Throwable { 032 Map m = (Map) getDelegate(); 033 Closure cl = (Closure) m.get(method.getName()); 034 return cl.call(args); 035 } 036 037 public String toString() { 038 return DefaultGroovyMethods.toString((Map) getDelegate()); 039 } 040 } 041