Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.tinkerpop.frames;
  
  
The proxy class of a framed element.

Author(s):
Marko A. Rodriguez (http://markorodriguez.com)
 
 public class FramedElement implements InvocationHandler {
 
     private final Direction direction;
     protected final FramedGraph framedGraph;
     protected final Element element;
     private static Method hashCodeMethod;
     private static Method equalsMethod;
     private static Method toStringMethod;
     private static Method asVertexMethod;
     private static Method asEdgeMethod;
 
     protected static Object NO_INVOCATION_PATH = new Object();
 
     static {
         try {
              = Object.class.getMethod("hashCode");
              = Object.class.getMethod("equals"new Class[]{Object.class});
              = Object.class.getMethod("toString");
              = VertexFrame.class.getMethod("asVertex");
              = EdgeFrame.class.getMethod("asEdge");
         } catch (NoSuchMethodException e) {
             throw new NoSuchMethodError(e.getMessage());
         }
     }
 
     public FramedElement(final FramedGraph framedGraphfinal Element elementfinal Direction direction) {
         if (null == framedGraph) {
             throw new IllegalArgumentException("FramedGraph can not be null");
         }
 
         if (null == element) {
             throw new IllegalArgumentException("Element can not be null");
         }
 
         this. = element;
         this. = framedGraph;
         this. = direction;
     }
 
     public FramedElement(final FramedGraph framedGraphfinal Element element) {
         this(framedGraphelementnull);
     }
 
 
     public Object invoke(final Object proxyfinal Method methodfinal Object[] arguments) {
 
         if (method.equals()) {
             return this.proxyHashCode(proxy);
         } else if (method.equals()) {
             return this.proxyEquals(proxyarguments[0]);
         } else if (method.equals()) {
             return this.proxyToString(proxy);
         } else if (method.equals() || method.equals()) {
             return this.;
         }
 
         final Annotation[] annotations = method.getAnnotations();
         for (final Annotation annotation : annotations) {
             if (this..hasAnnotationHandler(annotation.annotationType())) {
                 if (this. instanceof Vertex) {
                     return this..getAnnotationHandler(annotation.annotationType()).processVertex(annotationmethodargumentsthis., (Vertexthis.);
                 } else if (this. instanceof Edge) {
                     return this..getAnnotationHandler(annotation.annotationType()).processEdge(annotationmethodargumentsthis., (Edgethis.this.);
                 }
             }
         }
 
         return ;
 
     }
 
 
     private Integer proxyHashCode(final Object proxy) {
         return System.identityHashCode(proxy) + this..hashCode();
     }
 
     private Boolean proxyEquals(final Object proxyfinal Object other) {
         if (proxy.getClass().equals(other.getClass())) {
             return ((FramedElement) (Proxy.getInvocationHandler(proxy))).getElement().equals(((FramedElement) (Proxy.getInvocationHandler(other))).getElement());
         } else {
             return .;
         }
    }
    private String proxyToString(final Object proxy) {
        return ((FramedElement) Proxy.getInvocationHandler(proxy)).getElement().toString();
    }
    public Element getElement() {
        return this.;
    }
New to GrepCode? Check out our FAQ X