SGF-644 - Adapt to API changes in the Pivotal GemFire Lucene Integration and Support based on the Apache Geode 1.2.0 baseline.

This commit is contained in:
John Blum
2017-07-19 14:28:27 -07:00
parent 23d15285fd
commit 9df3028b98
11 changed files with 123 additions and 139 deletions

View File

@@ -130,18 +130,6 @@ public abstract class LuceneAccessor extends LuceneOperationsSupport implements
return resolveLuceneService().createLuceneQueryFactory();
}
/**
* Creates an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
*
* @param projectionFields {@link String} array containing the fields of the object to project.
* @return an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
* @see org.apache.geode.cache.lucene.LuceneQueryFactory
* @see #createLuceneQueryFactory(int, int)
*/
public LuceneQueryFactory createLuceneQueryFactory(String... projectionFields) {
return createLuceneQueryFactory(DEFAULT_RESULT_LIMIT, DEFAULT_PAGE_SIZE);
}
/**
* Creates an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
*

View File

@@ -35,6 +35,7 @@ import java.util.function.Supplier;
import org.apache.geode.cache.GemFireCache;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.lucene.LuceneIndex;
import org.apache.geode.cache.lucene.LuceneIndexFactory;
import org.apache.geode.cache.lucene.LuceneService;
import org.apache.geode.cache.lucene.LuceneServiceProvider;
import org.apache.lucene.analysis.Analyzer;
@@ -56,6 +57,7 @@ import org.springframework.util.StringUtils;
* @see org.apache.geode.cache.GemFireCache
* @see org.apache.geode.cache.Region
* @see org.apache.geode.cache.lucene.LuceneIndex
* @see org.apache.geode.cache.lucene.LuceneIndexFactory
* @see org.apache.geode.cache.lucene.LuceneService
* @see org.apache.geode.cache.lucene.LuceneServiceProvider
* @see org.apache.lucene.analysis.Analyzer
@@ -68,7 +70,7 @@ import org.springframework.util.StringUtils;
*/
@SuppressWarnings("unused")
public class LuceneIndexFactoryBean extends AbstractFactoryBeanSupport<LuceneIndex>
implements DisposableBean, InitializingBean {
implements DisposableBean, InitializingBean {
protected static final boolean DEFAULT_DESTROY = false;
@@ -180,8 +182,7 @@ public class LuceneIndexFactoryBean extends AbstractFactoryBeanSupport<LuceneInd
* @param regionPath {@link String} containing the fully-qualified pathname to
* the {@link GemFireCache} {@link Region}.
* @return a new instance of {@link LuceneIndex} with the given {@code indexName} on the named {@link Region}.
* @see org.apache.geode.cache.lucene.LuceneService#createIndex(String, String, Map)
* @see org.apache.geode.cache.lucene.LuceneService#createIndex(String, String, String...)
* @see org.apache.geode.cache.lucene.LuceneIndexFactory#create(String, String)
* @see org.apache.geode.cache.lucene.LuceneService#getIndex(String, String)
* @see #resolveLuceneService()
* @see #getFieldAnalyzers()
@@ -192,13 +193,15 @@ public class LuceneIndexFactoryBean extends AbstractFactoryBeanSupport<LuceneInd
LuceneService luceneService = resolveLuceneService();
LuceneIndexFactory indexFactory = luceneService.createIndexFactory();
Map<String, Analyzer> fieldAnalyzers = getFieldAnalyzers();
if (isEmpty(fieldAnalyzers)) {
luceneService.createIndex(indexName, regionPath, asArray(resolveFields(getFields())));
indexFactory.setFields(asArray(resolveFields(getFields()))).create(indexName, regionPath);
}
else {
luceneService.createIndex(indexName, regionPath, fieldAnalyzers);
indexFactory.setFields(fieldAnalyzers).create(indexName, regionPath);
}
return luceneService.getIndex(indexName, regionPath);
@@ -225,7 +228,7 @@ public class LuceneIndexFactoryBean extends AbstractFactoryBeanSupport<LuceneInd
LuceneIndex luceneIndex = getObject();
if (isLuceneIndexDestroyable(luceneIndex)) {
resolveLuceneService().destroyIndex(luceneIndex);
resolveLuceneService().destroyIndex(luceneIndex.getName(), luceneIndex.getRegionPath());
}
}
@@ -251,7 +254,7 @@ public class LuceneIndexFactoryBean extends AbstractFactoryBeanSupport<LuceneInd
if (this.luceneIndex == null) {
setLuceneIndex(Optional.ofNullable(resolveLuceneService())
.map((luceneService) -> luceneService.getIndex(getIndexName(), resolveRegionPath()))
.orElse(null));
.orElse(null));
}
return this.luceneIndex;
@@ -287,6 +290,16 @@ public class LuceneIndexFactoryBean extends AbstractFactoryBeanSupport<LuceneInd
return (!isEmpty(fields) ? fields : Collections.singletonList(LuceneService.REGION_VALUE_FIELD));
}
/**
* Resolves the appropriate {@link LuceneIndexFactory} from the {@link LuceneService}.
*
* @return a newly created instance of the {@link LuceneIndexFactory} from the resolved {@link LuceneService}.
* @see #resolveLuceneService()
*/
protected LuceneIndexFactory resolveLuceneIndexFactory() {
return resolveLuceneService().createIndexFactory();
}
/**
* Resolves the {@link LuceneService} used by this {@link FactoryBean} to create the {@link LuceneIndex}.
*

View File

@@ -50,16 +50,13 @@ public interface LuceneOperations {
* @param query {@link String} containing the Lucene query to execute.
* @param defaultField {@link String} specifying the default field used in Lucene queries when a field
* is not explicitly defined in the Lucene query clause.
* @param projectionFields array of {@link String} values specifying the query projection.
* @return a {@link List} of {@link LuceneResultStruct} containing the query results.
* @see org.apache.geode.cache.lucene.LuceneResultStruct
* @see #query(String, String, int, String...)
* @see #query(String, String, int)
* @see java.util.List
*/
default <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField,
String... projectionFields) {
return query(query, defaultField, DEFAULT_RESULT_LIMIT, projectionFields);
default <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField) {
return query(query, defaultField, DEFAULT_RESULT_LIMIT);
}
/**
@@ -71,13 +68,11 @@ public interface LuceneOperations {
* @param defaultField {@link String} specifying the default field used in Lucene queries when a field
* is not explicitly defined in the Lucene query clause.
* @param resultLimit limit on the number of query results to return.
* @param projectionFields array of {@link String} values specifying the query projection.
* @return a {@link List} of {@link LuceneResultStruct} containing the query results.
* @see org.apache.geode.cache.lucene.LuceneResultStruct
* @see java.util.List
*/
<K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField,
int resultLimit, String... projectionFields);
<K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField, int resultLimit);
/**
* Executes the given Lucene {@link String query} with a limit on the number of results returned
@@ -90,12 +85,10 @@ public interface LuceneOperations {
* is not explicitly defined in the Lucene query clause.
* @param resultLimit limit on the number of query results to return.
* @param pageSize number of results per page.
* @param projectionFields array of {@link String} values specifying the query projection.
* @return a {@link PageableLuceneQueryResults} data structure containing the results of the Lucene query.
* @see org.apache.geode.cache.lucene.PageableLuceneQueryResults
*/
<K, V> PageableLuceneQueryResults<K, V> query(String query, String defaultField,
int resultLimit, int pageSize, String... projectionFields);
<K, V> PageableLuceneQueryResults<K, V> query(String query, String defaultField, int resultLimit, int pageSize);
/**
* Executes the given Lucene {@link String query}.
@@ -104,17 +97,14 @@ public interface LuceneOperations {
* @param <V> {@link Class} type of the value.
* @param queryProvider {@link LuceneQueryProvider} is a provider implementation supplying the Lucene query
* to execute as well as de/serialize to distribute across the cluster.
* @param projectionFields array of {@link String} values specifying the query projection.
* @return a {@link List} of {@link LuceneResultStruct} containing the query results.
* @see org.apache.geode.cache.lucene.LuceneQueryProvider
* @see org.apache.geode.cache.lucene.LuceneResultStruct
* @see #query(LuceneQueryProvider, int, String...)
* @see #query(LuceneQueryProvider, int)
* @see java.util.List
*/
default <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider,
String... projectionFields) {
return query(queryProvider, DEFAULT_RESULT_LIMIT, projectionFields);
default <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider) {
return query(queryProvider, DEFAULT_RESULT_LIMIT);
}
/**
@@ -125,14 +115,12 @@ public interface LuceneOperations {
* @param queryProvider {@link LuceneQueryProvider} is a provider implementation supplying the Lucene query
* to execute as well as de/serialize to distribute across the cluster.
* @param resultLimit limit on the number of query results to return.
* @param projectionFields array of {@link String} values specifying the query projection.
* @return a {@link List} of {@link LuceneResultStruct} containing the query results.
* @see org.apache.geode.cache.lucene.LuceneQueryProvider
* @see org.apache.geode.cache.lucene.LuceneResultStruct
* @see java.util.List
*/
<K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider,
int resultLimit, String... projectionFields);
<K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider, int resultLimit);
/**
* Executes the given Lucene {@link String query} with a limit on the number of results returned
@@ -144,13 +132,11 @@ public interface LuceneOperations {
* to execute as well as de/serialize to distribute across the cluster.
* @param resultLimit limit on the number of query results to return.
* @param pageSize number of results per page.
* @param projectionFields array of {@link String} values specifying the query projection.
* @return a {@link PageableLuceneQueryResults} data structure containing the results of the Lucene query.
* @see org.apache.geode.cache.lucene.LuceneQueryProvider
* @see org.apache.geode.cache.lucene.PageableLuceneQueryResults
*/
<K, V> PageableLuceneQueryResults<K, V> query(LuceneQueryProvider queryProvider,
int resultLimit, int pageSize, String... projectionFields);
<K, V> PageableLuceneQueryResults<K, V> query(LuceneQueryProvider queryProvider, int resultLimit, int pageSize);
/**
* Executes the given Lucene {@link String query} returning a {@link Collection} of keys

View File

@@ -36,6 +36,7 @@ import org.springframework.data.gemfire.search.lucene.support.LuceneAccessorSupp
* @author John Blum
* @see org.springframework.data.gemfire.search.lucene.LuceneAccessor
* @see org.springframework.data.gemfire.search.lucene.LuceneOperations
* @see org.springframework.data.gemfire.search.lucene.support.LuceneAccessorSupport
* @see org.apache.geode.cache.Region
* @see org.apache.geode.cache.lucene.LuceneIndex
* @see org.apache.geode.cache.lucene.LuceneQuery
@@ -91,13 +92,12 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
* @inheritDoc
*/
@Override
public <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField,
int resultLimit, String... projectionFields) {
public <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, projectionFields);
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit);
LuceneQuery<K, V> queryWrapper = queryFactory.create(indexName, regionPath, query, defaultField);
@@ -109,12 +109,13 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public <K, V> PageableLuceneQueryResults<K, V> query(String query, String defaultField,
int resultLimit, int pageSize, String... projectionFields) {
int resultLimit, int pageSize) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, pageSize, projectionFields);
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, pageSize);
LuceneQuery<K, V> queryWrapper = queryFactory.create(indexName, regionPath, query, defaultField);
@@ -125,13 +126,12 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
* @inheritDoc
*/
@Override
public <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider,
int resultLimit, String... projectionFields) {
public <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, projectionFields);
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit);
LuceneQuery<K, V> queryWrapper = queryFactory.create(indexName, regionPath, queryProvider);
@@ -143,12 +143,12 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public <K, V> PageableLuceneQueryResults<K, V> query(LuceneQueryProvider queryProvider,
int resultLimit, int pageSize, String... projectionFields) {
int resultLimit, int pageSize) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, pageSize, projectionFields);
LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, pageSize);
LuceneQuery<K, V> queryWrapper = queryFactory.create(indexName, regionPath, queryProvider);
@@ -160,6 +160,7 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public <K> Collection<K> queryForKeys(String query, String defaultField, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
@@ -175,6 +176,7 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public <K> Collection<K> queryForKeys(LuceneQueryProvider queryProvider, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
@@ -190,6 +192,7 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public <V> Collection<V> queryForValues(String query, String defaultField, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
@@ -205,6 +208,7 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public <V> Collection<V> queryForValues(LuceneQueryProvider queryProvider, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();

View File

@@ -85,9 +85,7 @@ public abstract class LuceneAccessorSupport extends LuceneAccessor {
* @inheritDoc
*/
@Override
public <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField,
int resultLimit, String... projectionFields) {
public <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -96,7 +94,7 @@ public abstract class LuceneAccessorSupport extends LuceneAccessor {
*/
@Override
public <K, V> PageableLuceneQueryResults<K, V> query(String query, String defaultField,
int resultLimit, int pageSize, String... projectionFields) {
int resultLimit, int pageSize) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -105,9 +103,7 @@ public abstract class LuceneAccessorSupport extends LuceneAccessor {
* @inheritDoc
*/
@Override
public <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider,
int resultLimit, String... projectionFields) {
public <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -116,7 +112,7 @@ public abstract class LuceneAccessorSupport extends LuceneAccessor {
*/
@Override
public <K, V> PageableLuceneQueryResults<K, V> query(LuceneQueryProvider queryProvider,
int resultLimit, int pageSize, String... projectionFields) {
int resultLimit, int pageSize) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}

View File

@@ -43,9 +43,7 @@ public abstract class LuceneOperationsSupport implements LuceneOperations {
* @inheritDoc
*/
@Override
public <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField,
int resultLimit, String... projectionFields) {
public <K, V> List<LuceneResultStruct<K, V>> query(String query, String defaultField, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -54,7 +52,7 @@ public abstract class LuceneOperationsSupport implements LuceneOperations {
*/
@Override
public <K, V> PageableLuceneQueryResults<K, V> query(String query, String defaultField,
int resultLimit, int pageSize, String... projectionFields) {
int resultLimit, int pageSize) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -63,9 +61,7 @@ public abstract class LuceneOperationsSupport implements LuceneOperations {
* @inheritDoc
*/
@Override
public <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider,
int resultLimit, String... projectionFields) {
public <K, V> List<LuceneResultStruct<K, V>> query(LuceneQueryProvider queryProvider, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -74,7 +70,7 @@ public abstract class LuceneOperationsSupport implements LuceneOperations {
*/
@Override
public <K, V> PageableLuceneQueryResults<K, V> query(LuceneQueryProvider queryProvider,
int resultLimit, int pageSize, String... projectionFields) {
int resultLimit, int pageSize) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}