private void initDocumentBuilders(SearchConfiguration cfg, BuildContext buildContext, SearchMapping searchMapping) {
ConfigContext context = new ConfigContext( cfg, searchMapping );
initProgrammaticAnalyzers( context, cfg.getReflectionManager() );
initProgrammaticallyDefinedFilterDef( cfg.getReflectionManager() );
final PolymorphicIndexHierarchy indexingHierarchy = factoryState.getIndexHierarchy();
final Map<Class<?>, EntityIndexBinding> documentBuildersIndexedEntities = factoryState.getIndexBindings();
final Map<Class<?>, DocumentBuilderContainedEntity<?>> documentBuildersContainedEntities = factoryState.getDocumentBuildersContainedEntities();
final Set<XClass> optimizationBlackListedTypes = new HashSet<XClass>();
final Map<XClass, Class<?>> classMappings = initializeClassMappings( cfg, cfg.getReflectionManager() );
//we process the @Indexed classes last, so we first start all IndexManager(s).
final List<XClass> rootIndexedEntities = new LinkedList<XClass>();
for ( Map.Entry<XClass, Class<?>> mapping : classMappings.entrySet() ) {
XClass mappedXClass = mapping.getKey();
Class<?> mappedClass = mapping.getValue();
if ( mappedXClass.isAnnotationPresent( Indexed.class ) ) {
if ( mappedXClass.isAbstract() ) {
log.abstractClassesCannotInsertDocuments();
continue;
}
rootIndexedEntities.add( mappedXClass );
indexingHierarchy.addIndexedClass( mappedClass );
}
else {
//FIXME DocumentBuilderIndexedEntity needs to be built by a helper method receiving Class<T> to infer T properly
//XClass unfortunately is not (yet) genericized: TODO?
final DocumentBuilderContainedEntity<?> documentBuilder = new DocumentBuilderContainedEntity(