/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.jms.master;
import java.io.Serializable;
import java.util.Collections;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.lucene.document.Document;
import org.hibernate.search.spi.BuildContext;
import org.hibernate.search.store.ShardIdentifierProviderTemplate;
import org.hibernate.search.testsupport.TestForIssue;
@TestForIssue(jiraKey = "HSEARCH-1886")
public class JMSMasterDynamicShardingTest extends JMSMasterTest {
@Override
public void configure(Map<String,Object> cfg) {
super.configure( cfg );
cfg.put( "hibernate.search.default.sharding_strategy", TShirtShardIdentifierProvider.class.getName() );
}
@Override
protected String getIndexName() {
return super.getIndexName() + ".11";
}
public static class TShirtShardIdentifierProvider extends ShardIdentifierProviderTemplate {
@Override
public String getShardIdentifier(Class<?> entityType, Serializable id, String idAsString, Document document) {
if ( entityType.equals( TShirt.class ) ) {
final Double length = document.getField( "length" ).numericValue().doubleValue();
String shardId = String.valueOf( length.intValue() / 2 );
addShard( shardId );
return shardId;
}
throw new RuntimeException( "TShirt expected but found " + entityType );
}
@Override
protected Set<String> loadInitialShardNames(Properties properties, BuildContext buildContext) {
return Collections.emptySet(); // We don't test restart anyway
}
}
}