@Override public IndexedTypeDescriptor getIndexedTypeDescriptor(IndexedTypeIdentifier type) { IndexedTypeDescriptor typeDescriptor = indexedTypeDescriptors.get( type ); if ( typeDescriptor == null ) { EntityIndexBinding indexBinder = indexBindingForEntities.get( type ); IndexedTypeDescriptor indexedTypeDescriptor; if ( indexBinder == null ) { indexedTypeDescriptor = new IndexedTypeDescriptorForUnindexedType( type ); } else { indexedTypeDescriptor = new IndexedTypeDescriptorImpl( indexBinder.getDocumentBuilder().getTypeMetadata(), indexBinder.getIndexManagerSelector().all() ); } indexedTypeDescriptors.put( type, indexedTypeDescriptor ); typeDescriptor = indexedTypeDescriptor; } return typeDescriptor; }
@Override public IndexedTypeDescriptor getIndexedTypeDescriptor(IndexedTypeIdentifier type) { IndexedTypeDescriptor typeDescriptor = indexedTypeDescriptors.get( type ); if ( typeDescriptor == null ) { EntityIndexBinding indexBinder = indexBindingForEntities.get( type ); IndexedTypeDescriptor indexedTypeDescriptor; if ( indexBinder == null ) { indexedTypeDescriptor = new IndexedTypeDescriptorForUnindexedType( type ); } else { indexedTypeDescriptor = new IndexedTypeDescriptorImpl( indexBinder.getDocumentBuilder().getTypeMetadata(), indexBinder.getIndexManagerSelector().all() ); } indexedTypeDescriptors.put( type, indexedTypeDescriptor ); typeDescriptor = indexedTypeDescriptor; } return typeDescriptor; }
@Test public void undeclaredSortableField_correctCustomMetadata() { helper.index( new PropertySet( 0 ) .put( "firstName", "Aaron" ) .put( "lastName", "Zahnd" ) .put( "nonSortableField", "zzz" ), new ExtendedPropertySet( 1 ) .put( "firstName", "Mike" ) .put( "lastName", "Myers" ) .put( "nonSortableField", "mmm" ), new Person( 2, "Zach" ) ); // We expect HSearch to *not* use an uninverting reader logged.expectMessageMissing( UNINVERTING_READER_LOG_CODE ); Query luceneQuery = factoryHolder.getSearchFactory().buildQueryBuilder().forEntity( PropertySet.class ).get().all().createQuery(); IndexedTypeMap<CustomTypeMetadata> metadata = IndexedTypeMaps.hashMap(); metadata.put( PROPERTY_SET_TYPE_ID, new PropertySetMetadata() ); metadata.put( PERSON_TYPE_ID, new EmptyMetadata() ); HSQuery query = factoryHolder.getSearchFactory().createHSQuery( luceneQuery, metadata ) .sort( FIRST_NAME_SORT ); Assertions.assertThat( query.queryEntityInfos() ).extracting( "id" ).as( "Sorted IDs" ) .containsExactly( 0, 1, 2 ); query.sort( FIRST_NAME_SORT_REVERSED ); Assertions.assertThat( query.queryEntityInfos() ).extracting( "id" ).as( "Sorted IDs" ) .containsExactly( 2, 1, 0 ); }