001    package org.codehaus.groovy.runtime;
002    
003    import java.lang.reflect.Method;
004    import groovy.lang.Closure;
005    
006    /**
007     * This class is a general adapter to adapt a closure to any Java interface.
008     * <p>
009     * @author Ben Yu
010     * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
011     * Jul 27, 2006 3:50:51 PM
012     */
013    public class ConvertedClosure extends ConversionHandler {
014        
015        /**
016         * to create a ConvertedClosure object.
017         * @param closure the closure object.
018         */
019        protected ConvertedClosure(Closure closure) {
020            super(closure);
021        }
022        
023        public Object invokeCustom(Object proxy, Method method, Object[] args)
024        throws Throwable {
025            return ((Closure) getDelegate()).call(args);
026        }
027    }
028