Package com.tinkerpop.frames.modules

Source Code of com.tinkerpop.frames.modules.TypeResolverTest$AdditionalVertex

package com.tinkerpop.frames.modules;

import org.junit.Assert;
import org.junit.Test;

import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.TransactionalGraph;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory;
import com.tinkerpop.frames.FramedGraph;
import com.tinkerpop.frames.FramedGraphConfiguration;
import com.tinkerpop.frames.FramedGraphFactory;
import com.tinkerpop.frames.domain.classes.Person;
import com.tinkerpop.frames.domain.incidences.Knows;
import com.tinkerpop.frames.modules.AbstractModule;
import com.tinkerpop.frames.modules.TypeResolver;

/**
* @author Bryn Cooke
*/
public class TypeResolverTest {

  private FramedGraph<Graph> framedGraph;

  public static interface AdditionalVertex {

  }

  public static interface ExtendedPerson extends Person {

  }

  public static interface AdditionalEdge {

  }

  @Test
  public void testAdditionalTypes() {
    Graph graph = TinkerGraphFactory.createTinkerGraph();
    FramedGraphFactory factory = new FramedGraphFactory(new AbstractModule() {

      @Override
      public void doConfigure(FramedGraphConfiguration config) {
        config.addTypeResolver(new TypeResolver() {

          @Override
          public Class<?>[] resolveTypes(Edge e, Class<?> defaultType) {

            return new Class[] { AdditionalEdge.class };
          }

          @Override
          public Class<?>[] resolveTypes(Vertex v, Class<?> defaultType) {
            return new Class[] { AdditionalVertex.class };
          }
        });
      }
    });
    framedGraph = factory.create(graph);

    Person marko = framedGraph.getVertex(1, Person.class);
    Assert.assertTrue(marko instanceof AdditionalVertex);
    Assert.assertFalse(marko instanceof AdditionalEdge);

    Knows knows = marko.getKnows().iterator().next();
    Assert.assertTrue(knows instanceof AdditionalEdge);
    Assert.assertFalse(knows instanceof AdditionalVertex);

  }

  @Test
  public void testExtendedTypes() {
    Graph graph = TinkerGraphFactory.createTinkerGraph();
    FramedGraphFactory factory = new FramedGraphFactory(new AbstractModule() {

      @Override
      public void doConfigure(FramedGraphConfiguration config) {
        config.addTypeResolver(new TypeResolver() {

          @Override
          public Class<?>[] resolveTypes(Edge e, Class<?> defaultType) {

            return new Class[0];
          }

          @Override
          public Class<?>[] resolveTypes(Vertex v, Class<?> defaultType) {
            return new Class[] { ExtendedPerson.class };
          }
        });
      }

    });
    framedGraph = factory.create(graph);

    Person marko = framedGraph.getVertex(1, Person.class);
    Assert.assertTrue(marko instanceof ExtendedPerson);

  }

}
TOP

Related Classes of com.tinkerpop.frames.modules.TypeResolverTest$AdditionalVertex

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.