org.java.plugin.extension.converter
Class ConverterGraph

java.lang.Object
  extended by org.java.plugin.extension.converter.ConverterGraph

public class ConverterGraph
extends java.lang.Object

This class can be used to find instances of Converter that can be used to convert one data type into the other.

The current implementation is stable for classes but will not work right for Collections.

The implementations builds a directed graph where edges are Converter and Vertices are the Types. To find a proper converter, we do a shortest path search (using Dijkstras algorithm). If the path length is > 1 we combine the converter into a converter pipeline.

WARNING : This is under development and the API might change

Author:
Thasso Griebel (thasso.griebel@gmail.com)

Constructor Summary
ConverterGraph()
           
 
Method Summary
 Converter getConverter(java.lang.reflect.Type source, java.lang.reflect.Type target)
           
 java.util.List<java.lang.reflect.Type> getTargetTypes()
          Returns all target types.
 java.util.List<java.lang.reflect.Type> getTargetTypes(java.lang.reflect.Type source)
           
protected  boolean isSource(java.lang.reflect.Type t)
           
protected  boolean isTarget(java.lang.reflect.Type t)
           
 boolean registerConverter(java.lang.reflect.Type sourceType, java.lang.reflect.Type targetType, Converter converter)
           
protected  java.lang.reflect.Type toClassSource(java.lang.Class t)
           
protected  java.lang.reflect.Type toClassTarget(java.lang.Class t)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConverterGraph

public ConverterGraph()
Method Detail

registerConverter

public boolean registerConverter(java.lang.reflect.Type sourceType,
                                 java.lang.reflect.Type targetType,
                                 Converter converter)

isTarget

protected boolean isTarget(java.lang.reflect.Type t)

isSource

protected boolean isSource(java.lang.reflect.Type t)

toClassTarget

protected java.lang.reflect.Type toClassTarget(java.lang.Class t)

toClassSource

protected java.lang.reflect.Type toClassSource(java.lang.Class t)

getConverter

public Converter getConverter(java.lang.reflect.Type source,
                              java.lang.reflect.Type target)

getTargetTypes

public java.util.List<java.lang.reflect.Type> getTargetTypes()
Returns all target types. That is, all types with indegree > 0.

Returns:
nodes with indegree > 1

getTargetTypes

public java.util.List<java.lang.reflect.Type> getTargetTypes(java.lang.reflect.Type source)


Copyright © 2010. All Rights Reserved.