package net.enilink.composition.mappers;
import java.lang.reflect.Method;
import java.util.Collection;
import net.enilink.composition.exceptions.ConfigException;
public interface RoleMapper<T> {
void addAnnotation(Class<?> annotation);
void addAnnotation(Class<?> annotation, T uri);
void addAnnotation(Method annotation);
void addAnnotation(Method annotation, T uri);
void addBehaviour(Class<?> role) throws ConfigException;
void addBehaviour(Class<?> role, T type) throws ConfigException;
void addConcept(Class<?> role) throws ConfigException;
void addConcept(Class<?> role, T type) throws ConfigException;
RoleMapper<T> clone();
T findAnnotation(Method ann);
Collection<Class<?>> findIndividualRoles(T instance,
Collection<Class<?>> classes);
Class<?> findInterfaceConcept(T uri);
Collection<Class<?>> findRoles(Collection<T> types,
Collection<Class<?>> roles);
Collection<Class<?>> findRoles(T type, Collection<Class<?>> roles);
Collection<T> findSubTypes(Class<?> role, Collection<T> subTypes);
T findType(Class<?> concept);
boolean isIndividualRolesPresent(T instance);
boolean isRecordedConcept(T type);
}