Java 类org.hibernate.search.indexes.interceptor.EntityIndexingInterceptor 实例源码
项目:Hibernate-Search-GenericJPA
文件:ObjectHandlerTask.java
@SuppressWarnings("unchecked")
private void index(Object entity, InstanceInitializer sessionInitializer, ConversionContext conversionContext)
throws InterruptedException {
Serializable id = (Serializable) this.peristenceUnitUtil.getIdentifier( entity );
if ( entityIndexBinding == null ) {
// it might be possible to receive not-indexes subclasses of the currently indexed columnTypes;
// being not-indexed, we skip them.
// FIXME for improved performance: avoid loading them in an early phase.
return;
}
@SuppressWarnings("rawtypes")
EntityIndexingInterceptor interceptor = this.entityIndexBinding.getEntityIndexingInterceptor();
if ( interceptor != null ) {
IndexingOverride onAdd = interceptor.onAdd( entity );
switch ( onAdd ) {
case REMOVE:
case SKIP:
return;
default:
break;
}
// default: continue indexing this instance
}
DocumentBuilderIndexedEntity docBuilder = this.entityIndexBinding.getDocumentBuilder();
TwoWayFieldBridge idBridge = docBuilder.getIdBridge();
conversionContext.pushProperty( docBuilder.getIdKeywordName() );
String idInString = null;
try {
idInString = conversionContext.setClass( this.entityClass )
.twoWayConversionContext( idBridge )
.objectToString( id );
}
finally {
conversionContext.popProperty();
}
// depending on the complexity of the object graph going to be indexed it's possible
// that we hit the database several times during work construction.
AddLuceneWork addWork = docBuilder.createAddWork(
null,
this.entityClass,
entity,
id,
idInString,
sessionInitializer,
conversionContext
);
this.batchBackend.enqueueAsyncWork( addWork );
}