diff --git a/gradle.properties b/gradle.properties
index ad1053ea..472fb487 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,7 +2,7 @@ antlrVersion=2.7.7
aspectjVersion=1.8.9
assertjVersion=3.6.2
cdiVersion=1.0
-geodeVersion=1.1.0
+geodeVersion=1.2.0-SNAPSHOT
hamcrestVersion=1.3
jacksonVersion=2.7.6
junitVersion=4.12
@@ -11,11 +11,11 @@ mockitoVersion=2.7.19
multiThreadedtcVersion=1.01
openwebbeansVersion=1.2.8
servletApiVersion=2.5
-shiroVersion=1.3.1
+shiroVersion=1.3.2
slf4jVersion=1.7.21
spring.range="[5.0.0, 6.0.0)"
springVersion=5.0.0.M3
springDataBuildVersion=2.0.0.BUILD-SNAPSHOT
springDataCommonsVersion=2.0.0.BUILD-SNAPSHOT
springShellVersion=1.2.0.RELEASE
-version=1.1.0.BUILD-SNAPSHOT
+version=1.2.0.BUILD-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index c9e708ef..e1d9726c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,16 +13,16 @@
org.springframework.data
spring-data-geode
- 1.1.0.BUILD-SNAPSHOT
+ 1.2.0.BUILD-SNAPSHOT
Spring Data Geode
SGF
2.7.7
- 1.3.1
+ 1.3.2
3.6.2
- 1.1.0
+ 1.2.0-SNAPSHOT
1.01
2.5
2.0.0.BUILD-SNAPSHOT
diff --git a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java
index 618574fe..9ea844a6 100644
--- a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java
+++ b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java
@@ -17,7 +17,6 @@
package org.springframework.data.gemfire.search.lucene;
-import static org.springframework.data.gemfire.util.ArrayUtils.nullSafeArray;
import static org.springframework.data.gemfire.util.SpringUtils.safeGetValue;
import java.util.Optional;
@@ -131,29 +130,16 @@ 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, String...)
- */
- public LuceneQueryFactory createLuceneQueryFactory(String... projectionFields) {
- return createLuceneQueryFactory(DEFAULT_RESULT_LIMIT, DEFAULT_PAGE_SIZE, projectionFields);
- }
-
/**
* Creates an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
*
* @param resultLimit limit to the number of results returned by the query.
- * @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, String...)
+ * @see #createLuceneQueryFactory(int, int)
*/
- public LuceneQueryFactory createLuceneQueryFactory(int resultLimit, String... projectionFields) {
- return createLuceneQueryFactory(resultLimit, DEFAULT_PAGE_SIZE, projectionFields);
+ public LuceneQueryFactory createLuceneQueryFactory(int resultLimit) {
+ return createLuceneQueryFactory(resultLimit, DEFAULT_PAGE_SIZE);
}
/**
@@ -161,14 +147,11 @@ public abstract class LuceneAccessor extends LuceneOperationsSupport implements
*
* @param resultLimit limit to the number of results returned by the query.
* @param pageSize number of results appearing on a single page.
- * @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 #createLuceneQueryFactory()
*/
- @SuppressWarnings("deprecation")
- public LuceneQueryFactory createLuceneQueryFactory(int resultLimit, int pageSize, String... projectionFields) {
- return createLuceneQueryFactory().setResultLimit(resultLimit).setPageSize(pageSize)
- .setProjectionFields(nullSafeArray(projectionFields, String.class));
+ public LuceneQueryFactory createLuceneQueryFactory(int resultLimit, int pageSize) {
+ return createLuceneQueryFactory().setResultLimit(resultLimit).setPageSize(pageSize);
}
/**
diff --git a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java
index ebc08979..b4d1d4a4 100644
--- a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java
+++ b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java
@@ -31,6 +31,7 @@ import java.util.Optional;
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;
@@ -49,6 +50,8 @@ import org.springframework.util.StringUtils;
* Spring {@link FactoryBean} used to construct {@link LuceneIndex Lucene Indexes} on application domain object fields.
*
* @author John Blum
+ * @see org.springframework.beans.factory.BeanFactory
+ * @see org.springframework.beans.factory.BeanFactoryAware
* @see org.springframework.beans.factory.BeanNameAware
* @see org.springframework.beans.factory.DisposableBean
* @see org.springframework.beans.factory.FactoryBean
@@ -56,8 +59,10 @@ 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
* @since 1.1.0
*/
@SuppressWarnings("unused")
@@ -107,8 +112,7 @@ public class LuceneIndexFactoryBean implements FactoryBean,
* @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()
@@ -121,10 +125,11 @@ public class LuceneIndexFactoryBean implements FactoryBean,
Map fieldAnalyzers = getFieldAnalyzers();
if (isEmpty(fieldAnalyzers)) {
- luceneService.createIndex(indexName, regionPath, asArray(resolveFields(getFields())));
+ luceneService.createIndexFactory().setFields(asArray(resolveFields(getFields())))
+ .create(indexName, regionPath);
}
else {
- luceneService.createIndex(indexName, regionPath, fieldAnalyzers);
+ luceneService.createIndexFactory().setFields(fieldAnalyzers).create(indexName, regionPath);
}
return luceneService.getIndex(indexName, regionPath);
@@ -150,7 +155,7 @@ public class LuceneIndexFactoryBean implements FactoryBean,
LuceneIndex luceneIndex = getObject();
if (isLuceneIndexDestroyable(luceneIndex)) {
- resolveLuceneService().destroyIndex(luceneIndex);
+ resolveLuceneService().destroyIndex(luceneIndex.getName(), luceneIndex.getRegionPath());
}
}
@@ -219,6 +224,16 @@ public class LuceneIndexFactoryBean implements FactoryBean,
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}.
*
diff --git a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneOperations.java b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneOperations.java
index 87eb8deb..ef0d8663 100644
--- a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneOperations.java
+++ b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneOperations.java
@@ -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 List> query(String query, String defaultField,
- String... projectionFields) {
-
- return query(query, defaultField, DEFAULT_RESULT_LIMIT, projectionFields);
+ default List> 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
*/
- List> query(String query, String defaultField,
- int resultLimit, String... projectionFields);
+ List> 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
*/
- PageableLuceneQueryResults query(String query, String defaultField,
- int resultLimit, int pageSize, String... projectionFields);
+ PageableLuceneQueryResults query(String query, String defaultField, int resultLimit, int pageSize);
/**
* Executes the given Lucene {@link String query}.
@@ -104,17 +97,14 @@ public interface LuceneOperations {
* @param {@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 List> query(LuceneQueryProvider queryProvider,
- String... projectionFields) {
-
- return query(queryProvider, DEFAULT_RESULT_LIMIT, projectionFields);
+ default List> 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
*/
- List> query(LuceneQueryProvider queryProvider,
- int resultLimit, String... projectionFields);
+ List> 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
*/
- PageableLuceneQueryResults query(LuceneQueryProvider queryProvider,
- int resultLimit, int pageSize, String... projectionFields);
+ PageableLuceneQueryResults query(LuceneQueryProvider queryProvider, int resultLimit, int pageSize);
/**
* Executes the given Lucene {@link String query} returning a {@link Collection} of keys
diff --git a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneTemplate.java b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneTemplate.java
index a62da561..598e035b 100644
--- a/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneTemplate.java
+++ b/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneTemplate.java
@@ -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,11 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
* @inheritDoc
*/
@Override
- public List> query(String query, String defaultField,
- int resultLimit, String... projectionFields) {
-
+ public List> query(String query, String defaultField, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
- LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, projectionFields);
+ LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit);
LuceneQuery queryWrapper = queryFactory.create(indexName, regionPath, query, defaultField);
@@ -109,12 +108,12 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public PageableLuceneQueryResults 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 queryWrapper = queryFactory.create(indexName, regionPath, query, defaultField);
@@ -125,13 +124,11 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
* @inheritDoc
*/
@Override
- public List> query(LuceneQueryProvider queryProvider,
- int resultLimit, String... projectionFields) {
-
+ public List> query(LuceneQueryProvider queryProvider, int resultLimit) {
String indexName = resolveIndexName();
String regionPath = resolveRegionPath();
- LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit, projectionFields);
+ LuceneQueryFactory queryFactory = createLuceneQueryFactory(resultLimit);
LuceneQuery queryWrapper = queryFactory.create(indexName, regionPath, queryProvider);
@@ -143,12 +140,12 @@ public class LuceneTemplate extends LuceneAccessorSupport implements LuceneOpera
*/
@Override
public PageableLuceneQueryResults 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 queryWrapper = queryFactory.create(indexName, regionPath, queryProvider);
diff --git a/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneAccessorSupport.java b/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneAccessorSupport.java
index 7df24176..3ea79ed2 100644
--- a/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneAccessorSupport.java
+++ b/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneAccessorSupport.java
@@ -85,9 +85,7 @@ public abstract class LuceneAccessorSupport extends LuceneAccessor {
* @inheritDoc
*/
@Override
- public List> query(String query, String defaultField,
- int resultLimit, String... projectionFields) {
-
+ public List> query(String query, String defaultField, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -96,7 +94,7 @@ public abstract class LuceneAccessorSupport extends LuceneAccessor {
*/
@Override
public PageableLuceneQueryResults 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 List> query(LuceneQueryProvider queryProvider,
- int resultLimit, String... projectionFields) {
-
+ public List> query(LuceneQueryProvider queryProvider, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -116,7 +112,7 @@ public abstract class LuceneAccessorSupport extends LuceneAccessor {
*/
@Override
public PageableLuceneQueryResults query(LuceneQueryProvider queryProvider,
- int resultLimit, int pageSize, String... projectionFields) {
+ int resultLimit, int pageSize) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
diff --git a/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneOperationsSupport.java b/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneOperationsSupport.java
index d8ff1f9c..f3850c05 100644
--- a/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneOperationsSupport.java
+++ b/src/main/java/org/springframework/data/gemfire/search/lucene/support/LuceneOperationsSupport.java
@@ -43,9 +43,7 @@ public abstract class LuceneOperationsSupport implements LuceneOperations {
* @inheritDoc
*/
@Override
- public List> query(String query, String defaultField,
- int resultLimit, String... projectionFields) {
-
+ public List> query(String query, String defaultField, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -54,7 +52,7 @@ public abstract class LuceneOperationsSupport implements LuceneOperations {
*/
@Override
public PageableLuceneQueryResults 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 List> query(LuceneQueryProvider queryProvider,
- int resultLimit, String... projectionFields) {
-
+ public List> query(LuceneQueryProvider queryProvider, int resultLimit) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
@@ -74,7 +70,7 @@ public abstract class LuceneOperationsSupport implements LuceneOperations {
*/
@Override
public PageableLuceneQueryResults query(LuceneQueryProvider queryProvider,
- int resultLimit, int pageSize, String... projectionFields) {
+ int resultLimit, int pageSize) {
throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED);
}
diff --git a/src/test/java/org/springframework/data/gemfire/config/annotation/EnableIndexingConfigurationUnitTests.java b/src/test/java/org/springframework/data/gemfire/config/annotation/EnableIndexingConfigurationUnitTests.java
index 2a5e90a0..ad8746f6 100644
--- a/src/test/java/org/springframework/data/gemfire/config/annotation/EnableIndexingConfigurationUnitTests.java
+++ b/src/test/java/org/springframework/data/gemfire/config/annotation/EnableIndexingConfigurationUnitTests.java
@@ -22,6 +22,7 @@ import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -36,12 +37,12 @@ import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.cache.RegionFactory;
import org.apache.geode.cache.RegionShortcut;
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.query.Index;
import org.apache.geode.cache.query.QueryService;
import org.junit.After;
import org.junit.Test;
-import org.mockito.Matchers;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.springframework.context.ConfigurableApplicationContext;
@@ -208,6 +209,10 @@ public class EnableIndexingConfigurationUnitTests {
LuceneService luceneService() {
LuceneService mockLuceneService = mock(LuceneService.class);
+ LuceneIndexFactory mockLuceneIndexFactory = mock(LuceneIndexFactory.class);
+
+ doReturn(mockLuceneIndexFactory).when(mockLuceneService).createIndexFactory();
+
doAnswer(invocation -> {
LuceneIndex mockLuceneIndex = mock(LuceneIndex.class);
@@ -220,7 +225,7 @@ public class EnableIndexingConfigurationUnitTests {
when(mockLuceneService.getIndex(eq(indexName), eq(regionPath))).thenReturn(mockLuceneIndex);
return mockLuceneIndex;
- }).when(mockLuceneService).createIndex(anyString(), anyString(), Matchers.anyVararg());
+ }).when(mockLuceneIndexFactory).create(anyString(), anyString());
return mockLuceneService;
}
diff --git a/src/test/java/org/springframework/data/gemfire/config/xml/LuceneNamespaceUnitTests.java b/src/test/java/org/springframework/data/gemfire/config/xml/LuceneNamespaceUnitTests.java
index df7637f3..d2fcc4dd 100644
--- a/src/test/java/org/springframework/data/gemfire/config/xml/LuceneNamespaceUnitTests.java
+++ b/src/test/java/org/springframework/data/gemfire/config/xml/LuceneNamespaceUnitTests.java
@@ -21,8 +21,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -35,6 +35,7 @@ import java.util.Optional;
import org.apache.geode.cache.GemFireCache;
import org.apache.geode.cache.lucene.LuceneIndex;
+import org.apache.geode.cache.lucene.LuceneIndexFactory;
import org.apache.geode.cache.lucene.LuceneService;
import org.apache.lucene.analysis.Analyzer;
import org.junit.Test;
@@ -97,9 +98,9 @@ public class LuceneNamespaceUnitTests {
String... keys) {
assertLuceneIndex(index, name, regionPath);
- assertThat(index.getFieldNames()).isEmpty();
assertThat(index.getFieldAnalyzers()).hasSize(keys.length);
assertThat(index.getFieldAnalyzers()).containsKeys(keys);
+ assertThat(index.getFieldNames()).isEmpty();
}
protected void assertLuceneIndexWithFields(LuceneIndex index, String name, String regionPath, String... fieldNames) {
@@ -112,14 +113,8 @@ public class LuceneNamespaceUnitTests {
@SuppressWarnings({ "deprecation", "unchecked" })
public void luceneServiceConfigurationAndInteractionsAreCorrect() {
assertThat(this.luceneService).isNotNull();
-
- verify(this.luceneService, times(1))
- .createIndex(eq("IndexOne"), eq("/Example"), eq("fieldOne"), eq("fieldTwo"));
-
- verify(this.luceneService, times(1))
- .createIndex(eq("IndexTwo"), eq("/AnotherExample"), isA(Map.class));
-
- verify(this.luceneService, never()).destroyIndex(any(LuceneIndex.class));
+ verify(this.luceneService, times(2)).createIndexFactory();
+ verify(this.luceneService, never()).destroyIndex(anyString(), anyString());
}
@Test
@@ -157,7 +152,6 @@ public class LuceneNamespaceUnitTests {
public static class MockLuceneServiceFactoryBean implements FactoryBean, InitializingBean {
- @SuppressWarnings("all")
private GemFireCache gemfireCache;
private LuceneService luceneService;
@@ -173,20 +167,25 @@ public class LuceneNamespaceUnitTests {
return Optional.ofNullable(this.luceneService).orElseGet(() -> {
this.luceneService = mock(LuceneService.class);
- Answer mockLuceneIndex = newMockLuceneIndex(this.luceneService);
+ when(this.luceneService.createIndexFactory()).thenAnswer(invocation -> {
+ LuceneIndexFactory mockLuceneIndexFactory = mock(LuceneIndexFactory.class);
- doAnswer(mockLuceneIndex).when(this.luceneService)
- .createIndex(anyString(), anyString(), (String[]) any());
+ doReturn(mockLuceneIndexFactory).when(mockLuceneIndexFactory).setFields((String[]) any());
+ doReturn(mockLuceneIndexFactory).when(mockLuceneIndexFactory).setFields(any(Map.class));
- doAnswer(mockLuceneIndex).when(this.luceneService)
- .createIndex(anyString(), anyString(), isA(Map.class));
+ Answer mockLuceneIndex = mockLuceneIndex(this.luceneService);
+
+ doAnswer(mockLuceneIndex).when(mockLuceneIndexFactory).create(anyString(), anyString());
+
+ return mockLuceneIndexFactory;
+ });
return this.luceneService;
});
}
@SuppressWarnings("unchecked")
- private Answer newMockLuceneIndex(LuceneService mockLuceneService) {
+ private Answer mockLuceneIndex(LuceneService mockLuceneService) {
return (invocationOnMock) -> {
String indexName = invocationOnMock.getArgument(0);
String regionPath = invocationOnMock.getArgument(1);
diff --git a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneAccessorUnitTests.java b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneAccessorUnitTests.java
index 5350b3b1..40372ca0 100644
--- a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneAccessorUnitTests.java
+++ b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneAccessorUnitTests.java
@@ -23,7 +23,6 @@ import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.isA;
import static org.hamcrest.Matchers.nullValue;
import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyVararg;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -133,65 +132,36 @@ public class LuceneAccessorUnitTests {
@Test
@SuppressWarnings("deprecation")
- public void createLuceneQueryFactoryWithProjectionFields() {
+ public void createLuceneQueryFactoryWithResultLimit() {
doReturn(mockLuceneService).when(luceneAccessor).resolveLuceneService();
when(mockLuceneService.createLuceneQueryFactory()).thenReturn(mockLuceneQueryFactory);
when(mockLuceneQueryFactory.setPageSize(anyInt())).thenReturn(mockLuceneQueryFactory);
- when(mockLuceneQueryFactory.setProjectionFields(anyVararg())).thenReturn(mockLuceneQueryFactory);
when(mockLuceneQueryFactory.setResultLimit(anyInt())).thenReturn(mockLuceneQueryFactory);
- assertThat(luceneAccessor.createLuceneQueryFactory("fieldOne", "fieldTwo"))
- .isEqualTo(mockLuceneQueryFactory);
-
- verify(luceneAccessor).resolveLuceneService();
- verify(mockLuceneService, times(1)).createLuceneQueryFactory();
- verify(mockLuceneQueryFactory, times(1))
- .setResultLimit(eq(LuceneAccessor.DEFAULT_RESULT_LIMIT));
- verify(mockLuceneQueryFactory, times(1))
- .setPageSize(eq(LuceneAccessor.DEFAULT_PAGE_SIZE));
- verify(mockLuceneQueryFactory, times(1))
- .setProjectionFields(eq("fieldOne"), eq("fieldTwo"));
- }
-
- @Test
- @SuppressWarnings("deprecation")
- public void createLuceneQueryFactoryWithResultLimitAndProjectionFields() {
- doReturn(mockLuceneService).when(luceneAccessor).resolveLuceneService();
- when(mockLuceneService.createLuceneQueryFactory()).thenReturn(mockLuceneQueryFactory);
- when(mockLuceneQueryFactory.setPageSize(anyInt())).thenReturn(mockLuceneQueryFactory);
- when(mockLuceneQueryFactory.setProjectionFields(anyVararg())).thenReturn(mockLuceneQueryFactory);
- when(mockLuceneQueryFactory.setResultLimit(anyInt())).thenReturn(mockLuceneQueryFactory);
-
- assertThat(luceneAccessor.createLuceneQueryFactory(1000, "fieldOne", "fieldTwo"))
- .isEqualTo(mockLuceneQueryFactory);
+ assertThat(luceneAccessor.createLuceneQueryFactory(1000)).isEqualTo(mockLuceneQueryFactory);
verify(luceneAccessor).resolveLuceneService();
verify(mockLuceneService, times(1)).createLuceneQueryFactory();
verify(mockLuceneQueryFactory, times(1)).setResultLimit(eq(1000));
verify(mockLuceneQueryFactory, times(1))
.setPageSize(eq(LuceneAccessor.DEFAULT_PAGE_SIZE));
- verify(mockLuceneQueryFactory, times(1))
- .setProjectionFields(eq("fieldOne"), eq("fieldTwo"));
}
@Test
@SuppressWarnings("deprecation")
- public void createLuceneQueryFactoryWithResultLimitPageSizeAndProjectionFields() {
+ public void createLuceneQueryFactoryWithResultLimitAndPageSize() {
doReturn(mockLuceneService).when(luceneAccessor).resolveLuceneService();
when(mockLuceneService.createLuceneQueryFactory()).thenReturn(mockLuceneQueryFactory);
when(mockLuceneQueryFactory.setPageSize(anyInt())).thenReturn(mockLuceneQueryFactory);
- when(mockLuceneQueryFactory.setProjectionFields(anyVararg())).thenReturn(mockLuceneQueryFactory);
when(mockLuceneQueryFactory.setResultLimit(anyInt())).thenReturn(mockLuceneQueryFactory);
- assertThat(luceneAccessor.createLuceneQueryFactory(1000, 20,
- "fieldOne", "fieldTwo")).isEqualTo(mockLuceneQueryFactory);
+ assertThat(luceneAccessor.createLuceneQueryFactory(1000, 20))
+ .isEqualTo(mockLuceneQueryFactory);
verify(luceneAccessor).resolveLuceneService();
verify(mockLuceneService, times(1)).createLuceneQueryFactory();
verify(mockLuceneQueryFactory, times(1)).setResultLimit(eq(1000));
verify(mockLuceneQueryFactory, times(1)).setPageSize(eq(20));
- verify(mockLuceneQueryFactory, times(1))
- .setProjectionFields(eq("fieldOne"), eq("fieldTwo"));
}
@Test
diff --git a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBeanUnitTests.java b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBeanUnitTests.java
index 294b2f80..2f872bc5 100644
--- a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBeanUnitTests.java
+++ b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBeanUnitTests.java
@@ -23,7 +23,6 @@ import static org.hamcrest.Matchers.nullValue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isNull;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
@@ -40,6 +39,7 @@ import java.util.Map;
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.lucene.analysis.Analyzer;
import org.junit.Before;
@@ -84,6 +84,9 @@ public class LuceneIndexFactoryBeanUnitTests {
@Mock
private LuceneIndex mockLuceneIndex;
+ @Mock
+ private LuceneIndexFactory mockLuceneIndexFactory;
+
@Mock
private LuceneService mockLuceneService;
@@ -93,9 +96,14 @@ public class LuceneIndexFactoryBeanUnitTests {
private LuceneIndexFactoryBean factoryBean;
@Before
+ @SuppressWarnings("unchecked")
public void setup() {
factoryBean = spy(new LuceneIndexFactoryBean());
+
doReturn(mockLuceneService).when(factoryBean).resolveLuceneService(eq(mockCache));
+ doReturn(mockLuceneIndexFactory).when(mockLuceneService).createIndexFactory();
+ doReturn(mockLuceneIndexFactory).when(mockLuceneIndexFactory).setFields((String[]) any());
+ doReturn(mockLuceneIndexFactory).when(mockLuceneIndexFactory).setFields(any(Map.class));
}
@Test
@@ -121,7 +129,7 @@ public class LuceneIndexFactoryBeanUnitTests {
}
@Test
- public void afterPropertiesSetThrowsIllegalStateExceptionIndexNameNotSet() throws Exception {
+ public void afterPropertiesSetThrowsIllegalStateExceptionWhenIndexNameNotSet() throws Exception {
exception.expect(IllegalStateException.class);
exception.expectCause(is(nullValue(Throwable.class)));
exception.expectMessage("indexName was not properly initialized");
@@ -140,8 +148,11 @@ public class LuceneIndexFactoryBeanUnitTests {
assertThat(factoryBean.getLuceneService()).isSameAs(mockLuceneService);
assertThat(factoryBean.createIndex("ExampleIndex", "/Example")).isEqualTo(mockLuceneIndex);
- verify(mockLuceneService, times(1))
- .createIndex(eq("ExampleIndex"), eq("/Example"), eq(LuceneService.REGION_VALUE_FIELD));
+ verify(mockLuceneService, times(1)).createIndexFactory();
+ verify(mockLuceneIndexFactory, times(1))
+ .setFields(eq(LuceneService.REGION_VALUE_FIELD));
+ verify(mockLuceneIndexFactory, times(1))
+ .create(eq("ExampleIndex"), eq("/Example"));
verify(mockLuceneService, times(1))
.getIndex(eq("ExampleIndex"), eq("/Example"));
}
@@ -160,8 +171,10 @@ public class LuceneIndexFactoryBeanUnitTests {
assertThat(factoryBean.getLuceneService()).isSameAs(mockLuceneService);
assertThat(factoryBean.createIndex("ExampleIndex", "/Example")).isEqualTo(mockLuceneIndex);
- verify(mockLuceneService, times(1))
- .createIndex(eq("ExampleIndex"), eq("/Example"), eq(fieldAnalyzers));
+ verify(mockLuceneService, times(1)).createIndexFactory();
+ verify(mockLuceneIndexFactory, times(1)).setFields(eq(fieldAnalyzers));
+ verify(mockLuceneIndexFactory, times(1))
+ .create(eq("ExampleIndex"), eq("/Example"));
verify(mockLuceneService, times(1))
.getIndex(eq("ExampleIndex"), eq("/Example"));
}
@@ -178,8 +191,11 @@ public class LuceneIndexFactoryBeanUnitTests {
assertThat(factoryBean.getLuceneService()).isSameAs(mockLuceneService);
assertThat(factoryBean.createIndex("ExampleIndex", "/Example")).isEqualTo(mockLuceneIndex);
- verify(mockLuceneService, times(1))
- .createIndex(eq("ExampleIndex"), eq("/Example"), eq("fieldOne"), eq("fieldTwo"));
+ verify(mockLuceneService, times(1)).createIndexFactory();
+ verify(mockLuceneIndexFactory, times(1))
+ .setFields(eq("fieldOne"), eq("fieldTwo"));
+ verify(mockLuceneIndexFactory, times(1))
+ .create(eq("ExampleIndex"), eq("/Example"));
verify(mockLuceneService, times(1))
.getIndex(eq("ExampleIndex"), eq("/Example"));
}
@@ -194,11 +210,14 @@ public class LuceneIndexFactoryBeanUnitTests {
assertThat(factoryBean.getLuceneService()).isSameAs(mockLuceneService);
doReturn(mockLuceneIndex).when(factoryBean).getObject();
+ doReturn("MockIndex").when(mockLuceneIndex).getName();
+ doReturn("MockRegion").when(mockLuceneIndex).getRegionPath();
factoryBean.destroy();
verify(factoryBean, times(1)).getObject();
- verify(mockLuceneService, times(1)).destroyIndex(eq(mockLuceneIndex));
+ verify(mockLuceneService, times(1))
+ .destroyIndex(eq("MockIndex"), eq("MockRegion"));
}
@Test
@@ -215,7 +234,7 @@ public class LuceneIndexFactoryBeanUnitTests {
factoryBean.destroy();
verify(factoryBean, times(1)).getObject();
- verify(mockLuceneService, never()).destroyIndex(any(LuceneIndex.class));
+ verify(mockLuceneService, never()).destroyIndex(anyString(), anyString());
}
@Test
@@ -232,7 +251,7 @@ public class LuceneIndexFactoryBeanUnitTests {
factoryBean.destroy();
verify(factoryBean, times(1)).getObject();
- verify(mockLuceneService, never()).destroyIndex(isNull(LuceneIndex.class));
+ verify(mockLuceneService, never()).destroyIndex(anyString(), anyString());
}
@Test
@@ -346,6 +365,17 @@ public class LuceneIndexFactoryBeanUnitTests {
.isEqualTo(Collections.singletonList(LuceneService.REGION_VALUE_FIELD));
}
+ @Test
+ public void resolveLuceneIndexFactoryCallsLuceneServiceCreateIndexFactory() {
+ factoryBean.setCache(mockCache);
+
+ doReturn(mockLuceneIndexFactory).when(mockLuceneService).createIndexFactory();
+
+ assertThat(factoryBean.resolveLuceneIndexFactory()).isEqualTo(mockLuceneIndexFactory);
+
+ verify(mockLuceneService, times(1)).createIndexFactory();
+ }
+
@Test
public void resolveLuceneServiceReturnsConfiguredLuceneService() {
factoryBean.setBeanFactory(mockBeanFactory);
diff --git a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsUnitTests.java b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsUnitTests.java
index e4ab4147..870070b2 100644
--- a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsUnitTests.java
+++ b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsUnitTests.java
@@ -19,7 +19,6 @@ package org.springframework.data.gemfire.search.lucene;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.anyVararg;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -54,24 +53,23 @@ public class LuceneOperationsUnitTests {
@Test
public void stringQueryCallsQueryWithResultLimit() {
- when(mockLuceneOperations.query(anyString(), anyString(), anyVararg())).thenCallRealMethod();
+ when(mockLuceneOperations.query(anyString(), anyString())).thenCallRealMethod();
- mockLuceneOperations.query("title : Up Shit Creek Without a Paddle", "title",
- "content");
+ mockLuceneOperations.query("title : Up Shit Creek Without a Paddle", "title");
verify(mockLuceneOperations, times(1)).query(
eq("title : Up Shit Creek Without a Paddle"), eq("title"),
- eq(LuceneOperations.DEFAULT_RESULT_LIMIT), eq("content"));
+ eq(LuceneOperations.DEFAULT_RESULT_LIMIT));
}
@Test
public void queryProviderQueryCallsQueryWithResultLimit() {
- when(mockLuceneOperations.query(any(LuceneQueryProvider.class), anyVararg())).thenCallRealMethod();
+ when(mockLuceneOperations.query(any(LuceneQueryProvider.class))).thenCallRealMethod();
- mockLuceneOperations.query(mockLuceneQueryProvider, "content");
+ mockLuceneOperations.query(mockLuceneQueryProvider);
verify(mockLuceneOperations, times(1)).query(eq(mockLuceneQueryProvider),
- eq(LuceneOperations.DEFAULT_RESULT_LIMIT), eq("content"));
+ eq(LuceneOperations.DEFAULT_RESULT_LIMIT));
}
@Test
@@ -116,6 +114,6 @@ public class LuceneOperationsUnitTests {
eq(mockLuceneQueryProvider), eq(LuceneOperations.DEFAULT_RESULT_LIMIT));
}
- abstract class TestLuceneOperations implements LuceneOperations {
- }
+ abstract class TestLuceneOperations implements LuceneOperations { }
+
}
diff --git a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneTemplateUnitTests.java b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneTemplateUnitTests.java
index b29df7ed..a6de6688 100644
--- a/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneTemplateUnitTests.java
+++ b/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneTemplateUnitTests.java
@@ -22,7 +22,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.anyVararg;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.doReturn;
@@ -63,6 +62,7 @@ import org.mockito.junit.MockitoJUnitRunner;
* @see org.apache.geode.cache.lucene.LuceneQueryFactory
* @see org.apache.geode.cache.lucene.LuceneQueryProvider
* @see org.apache.geode.cache.lucene.LuceneResultStruct
+ * @see org.apache.geode.cache.lucene.LuceneService
* @see org.apache.geode.cache.lucene.PageableLuceneQueryResults
* @since 1.0.0
*/
@@ -100,7 +100,6 @@ public class LuceneTemplateUnitTests {
when(mockLuceneService.createLuceneQueryFactory()).thenReturn(mockLuceneQueryFactory);
when(mockLuceneQueryFactory.setPageSize(anyInt())).thenReturn(mockLuceneQueryFactory);
- when(mockLuceneQueryFactory.setProjectionFields(anyVararg())).thenReturn(mockLuceneQueryFactory);
when(mockLuceneQueryFactory.setResultLimit(anyInt())).thenReturn(mockLuceneQueryFactory);
}
@@ -115,8 +114,7 @@ public class LuceneTemplateUnitTests {
doReturn("/Example").when(luceneTemplate).resolveRegionPath();
List> results = luceneTemplate.query(
- "title : Up Shit Creek Without a Paddle", "title", 100,
- "content");
+ "title : Up Shit Creek Without a Paddle", "title", 100);
assertThat(results).isNotNull();
assertThat(results).hasSize(2);
@@ -129,7 +127,6 @@ public class LuceneTemplateUnitTests {
verify(mockLuceneService, times(1)).createLuceneQueryFactory();
verify(mockLuceneQueryFactory, times(1)).setResultLimit(eq(100));
verify(mockLuceneQueryFactory, times(1)).setPageSize(eq(LuceneOperations.DEFAULT_PAGE_SIZE));
- verify(mockLuceneQueryFactory, times(1)).setProjectionFields(eq("content"));
verify(mockLuceneQueryFactory, times(1)).create(eq("TestIndex"),
eq("/Example"), eq("title : Up Shit Creek Without a Paddle"), eq("title"));
verify(mockLuceneQuery, times(1)).findResults();
@@ -146,8 +143,7 @@ public class LuceneTemplateUnitTests {
doReturn("/Example").when(luceneTemplate).resolveRegionPath();
PageableLuceneQueryResults