package org.codehaus.xfire.aegis.type;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import javax.xml.namespace.QName;
/**
* @author Dan Diephouse
*/
public interface TypeCreator
{
/**
* Get the mapped name of a method parameter.
* @param m
* @param index
* @return
*/
QName getElementName(Method m, int index);
Type createType(Method m, int index);
Type createType(PropertyDescriptor pd);
Type createType(Field f);
Type createType(Class clazz);
/**
* this function allowed to construct a aegis Type from an interface
* java.lang.reflect.Type.
* this function is added to handle geniricity such as
* Map.
* @param type
* @return
*/
Type createType(java.lang.reflect.Type type);
void setTypeMapping(TypeMapping typeMapping);
}