package com.levigo.samplelib.controllers; import java.lang.reflect.Method; import com.levigo.samplelib.descriptors.ExecutionControllerDescriptor; public class ExecutionController extends AbstractController { private final Object instance; private final Method m; public static ExecutionController create(Object instance, ExecutionControllerDescriptor descriptor) { Method m = getMethod(instance, descriptor.getMethod()); return new ExecutionController(instance, m, descriptor); } public ExecutionController(Object instance, Method m, ExecutionControllerDescriptor descriptor) { super(descriptor); this.instance = instance; this.m = m; } @Override public ExecutionControllerDescriptor getDescriptor() { return (ExecutionControllerDescriptor) super.getDescriptor(); } public void execute() { doInvoke(instance, m); } }