Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright 2011 Project Funcito Contributors
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *      http://www.apache.org/licenses/LICENSE-2.0
  *
 *  Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.funcito.internal;
public class Invokable<T,V> {
    private Method method;
    private T target;
    private V retVal;
    private Class<T> targetClass;
    private Object[] bindArgs;
    public Invokable(Method method, T target, V retValObject... bindArgs) {
        method.setAccessible(true);
        this. = method;
        this. = target;
        this. = retVal;
        this. = (Class<T>)target.getClass();
        this. = bindArgs;
    }
    public Object getTarget() { return this.; }
    public Object getRetVal() { return this.; }
    @SuppressWarnings("unchecked")
    public V invoke(T target) {
        try {
            return (V) .invoke(target);
        } catch (InvocationTargetException e) {
            throw new FuncitoException("Caught throwable " + e.getCause().getClass().getName() +
                    " \n" +
                    "while invoking Funcito Invokable for method " + getMethodName(), e);
        } catch (Throwable e) {
            if (e instanceof IllegalArgumentException && !.isInstance(target)) {
                throw new FuncitoException("You attempted to invoke method " + getInvokedMethodName(target)+
                        " \n" +
                        "but defined Funcito invokable was for method " + getMethodName() +
                        ". \n" +
                        "Probable Cause: identical method signatures not inherited from common base class"e);
            }
            throw new FuncitoException("Caught throwable " + e.getClass().getName() +
                    " \n" +
                    "while invoking Funcito Invokable for method " + getMethodName(), e);
        }
    }
    private String getInvokedMethodName(Object invokedTarget) {
        Method m = null;
        try {
            m = invokedTarget.getClass().getMethod(.getName());
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        return m.toGenericString();
    }
    public String getMethodName() { return .toGenericString(); }
New to GrepCode? Check out our FAQ X