package com.tinkerpop.frames.modules; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import com.tinkerpop.blueprints.Element; import com.tinkerpop.frames.FramedGraph; /** * Allows handling of method on frames. Only the first method handler found is called. * Instances of this class should be threadsafe. * * @param <T> The type of annotation handled. */ public interface MethodHandler<T extends Annotation> { /** * @return The annotation type that this handler responds to. */ public Class<T> getAnnotationType(); /** * @param frame The frame upon which the method is being called. * @param method The method being called on the frame. * @param arguments The arguments to the method. * @param annotation The annotation * @param framedGraph The graph being called. * @param element The underlying element. * @return A return value for the method. */ public Object processElement(final Object frame, final Method method, final Object[] arguments, final T annotation, final FramedGraph<?> framedGraph, final Element element); }