}
}
private TupleAsMapResultSet getResultSet(Serializable id, SessionImplementor session) {
//TODO this if won't work when we will support collections inside the entity tuple but that will do for now
final TupleAsMapResultSet resultset = new TupleAsMapResultSet();
if ( getEntityPersisters().length > 0 ) {
final Cache<EntityKey, Map<String, Object>> entityCache = GridMetadataManagerHelper.getEntityCache( gridManager );
final EntityKey key = new EntityKeyBuilder()
.entityPersister( getEntityPersisters()[0] )
.id( id )
.getKey();
final Map<String,Object> entry = gridManager.getGridDialect().getTuple( key, entityCache );
if ( entry != null ) {
resultset.addTuple( entry );
}
}
else {
//collection persister
if ( getCollectionPersisters().length != 1 ) {
throw new AssertionFailure( "Found an unexpected number of collection persisters: " + getCollectionPersisters().length );
}
final CollectionPhysicalModel persister = (CollectionPhysicalModel) getCollectionPersisters()[0];
PropertyMetadataProvider metadataProvider = new PropertyMetadataProvider()
.gridManager( gridManager )
.tableName( persister.getTableName() )
.key( id )
.keyColumnNames( persister.getKeyColumnNames() )
.keyGridType( persister.getKeyGridType() )
.session( session );
final Map<RowKey,Map<String,Object>> entry = metadataProvider.getCollectionMetadataOrNull();
if ( entry != null ) {
for ( Map<String,Object> tuple : entry.values() ) {
resultset.addTuple( tuple );
}
}
}
return resultset;
}