package com.tinkerpop.frames;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.frames.annotations.AnnotationHandler;
import com.tinkerpop.frames.modules.MethodHandler;
import com.tinkerpop.frames.modules.Module;
import com.tinkerpop.frames.modules.TypeResolver;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* A configuration for a {@link FramedGraph}. These are supplied to
* {@link Module}s for each {@link FramedGraph} being create by a
* {@link FramedGraphFactory}.
*
* Allows registration of {@link AnnotationHandler}s, {@link FrameInitializer}s
* and {@link TypeResolver}s.
*
* @author Bryn Cooke
*
*/
public class FramedGraphConfiguration {
private Map<Class<? extends Annotation>, AnnotationHandler<?>> annotationHandlers = new HashMap<Class<? extends Annotation>, AnnotationHandler<?>>();
private Map<Class<? extends Annotation>, MethodHandler<?>> methodHandlers = new HashMap<Class<? extends Annotation>, MethodHandler<?>>();
private List<FrameInitializer> frameInitializers = new ArrayList<FrameInitializer>();
private List<TypeResolver> typeResolvers = new ArrayList<TypeResolver>();
private Graph configuredGraph;
/**
* @param annotationHandler
* The {@link AnnotationHandler} to add to the
* {@link FramedGraph}.
*/
public void addAnnotationHandler(AnnotationHandler<?> annotationHandler) {
annotationHandlers.put(annotationHandler.getAnnotationType(), annotationHandler);
}
/**
* @param methodHandler
* The {@link MethodHandler} to add to the {@link FramedGraph}.
*/
public void addMethodHandler(MethodHandler<?> methodHandler) {
methodHandlers.put(methodHandler.getAnnotationType(), methodHandler);
}
/**
* @param frameInitializer
* The {@link FrameInitializer} to add to the {@link FramedGraph}
* .
*/
public void addFrameInitializer(FrameInitializer frameInitializer) {
frameInitializers.add(frameInitializer);
}
/**
* @param typeResolver
* The {@link TypeResolver} to add to the {@link FramedGraph}.
*/
public void addTypeResolver(TypeResolver typeResolver) {
typeResolvers.add(typeResolver);
}
public List<FrameInitializer> getFrameInitializers() {
return frameInitializers;
}
public Map<Class<? extends Annotation>, AnnotationHandler<?>> getAnnotationHandlers() {
return annotationHandlers;
}
public List<TypeResolver> getTypeResolvers() {
return typeResolvers;
}
public void setConfiguredGraph(Graph configuredGraph) {
this.configuredGraph = configuredGraph;
}
public Graph getConfiguredGraph() {
return configuredGraph;
}
public Map<Class<? extends Annotation>, MethodHandler<?>> getMethodHandlers() {
return methodHandlers;
}
}