You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2015/11/17 21:54:22 UTC
[12/50] [abbrv] incubator-geode git commit: Merge remote-tracking
branch 'origin/develop' into feature/GEODE-11
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/build.gradle
----------------------------------------------------------------------
diff --cc gemfire-core/build.gradle
index 185be12,b44525c..80761ed
--- a/gemfire-core/build.gradle
+++ b/gemfire-core/build.gradle
@@@ -11,61 -11,63 +11,59 @@@ configurations
}
dependencies {
+ // Source Dependencies
+ // External
provided files("${System.getProperty('java.home')}/../lib/tools.jar")
- compile 'antlr:antlr:2.7.7'
- compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.0'
- compile 'com.fasterxml.jackson.core:jackson-core:2.2.0'
- compile 'com.fasterxml.jackson.core:jackson-databind:2.2.0'
- compile 'com.google.code.findbugs:annotations:3.0.0'
- compile 'commons-io:commons-io:2.3'
- compile 'commons-logging:commons-logging:1.1.1'
- compile 'commons-modeler:commons-modeler:2.0'
- compile 'it.unimi.dsi:fastutil:7.0.2'
- compile 'javax.activation:activation:1.1.1'
- compile 'javax.mail:javax.mail-api:1.4.5'
- compile 'javax.resource:javax.resource-api:1.7'
- compile 'javax.servlet:javax.servlet-api:3.1.0'
- compile 'javax.transaction:javax.transaction-api:1.2'
- compile 'mx4j:mx4j:3.0.1'
- compile 'mx4j:mx4j-remote:3.0.1'
- compile 'mx4j:mx4j-tools:3.0.1'
- compile 'net.java.dev.jna:jna:4.0.0'
- compile 'net.sourceforge.jline:jline:1.0.S2-B'
- compile 'org.eclipse.jetty:jetty-http:9.2.3.v20140905'
- compile 'org.eclipse.jetty:jetty-io:9.2.3.v20140905'
- compile 'org.eclipse.jetty:jetty-security:9.2.3.v20140905'
- compile 'org.eclipse.jetty:jetty-server:9.2.3.v20140905'
- compile 'org.eclipse.jetty:jetty-servlet:9.2.3.v20140905'
- compile 'org.eclipse.jetty:jetty-util:9.2.3.v20140905'
- compile 'org.eclipse.jetty:jetty-webapp:9.2.3.v20140905'
- compile 'org.eclipse.jetty:jetty-xml:9.2.3.v20140905'
- compile 'org.fusesource.jansi:jansi:1.8'
- compile 'org.apache.logging.log4j:log4j-api:2.1'
- compile 'org.apache.logging.log4j:log4j-core:2.1'
- runtime 'org.apache.logging.log4j:log4j-slf4j-impl:2.1'
- runtime 'org.apache.logging.log4j:log4j-jcl:2.1'
- runtime 'org.apache.logging.log4j:log4j-jul:2.1'
- compile 'org.slf4j:slf4j-api:1.7.7'
- compile 'org.springframework.data:spring-data-commons:1.9.1.RELEASE'
- provided 'org.springframework.data:spring-data-gemfire:1.5.1.RELEASE'
- compile 'org.springframework:spring-tx:3.2.12.RELEASE'
- compile 'org.springframework.shell:spring-shell:1.0.0.RELEASE'
- compile 'org.xerial.snappy:snappy-java:1.1.1.6'
- provided 'org.apache.hadoop:hadoop-common:2.4.1'
- provided 'org.apache.hadoop:hadoop-annotations:2.4.1'
- provided 'org.apache.hadoop:hadoop-hdfs:2.4.1'
- provided 'org.apache.hadoop:hadoop-mapreduce-client-core:2.4.1'
- compile 'org.apache.hbase:hbase:0.94.27'
- provided 'commons-lang:commons-lang:2.5'
- provided 'com.google.guava:guava:11.0.2'
- compile 'io.netty:netty-all:4.0.4.Final'
-
- testRuntime 'org.apache.hadoop:hadoop-auth:2.4.1'
- testRuntime 'commons-collections:commons-collections:3.2.1'
- testRuntime 'commons-configuration:commons-configuration:1.6'
- testRuntime 'commons-io:commons-io:2.1'
- testRuntime 'log4j:log4j:1.2.17'
-
+ compile 'antlr:antlr:' + project.'antlr.version'
+ compile 'com.fasterxml.jackson.core:jackson-annotations:' + project.'jackson.version'
+ compile 'com.fasterxml.jackson.core:jackson-core:' + project.'jackson.version'
+ compile 'com.fasterxml.jackson.core:jackson-databind:' + project.'jackson.version'
+ compile 'com.google.code.findbugs:annotations:' + project.'annotations.version'
+ provided 'com.google.guava:guava:' + project.'guava.version'
+ compile 'commons-io:commons-io:' + project.'commons-io.version'
+ provided 'commons-lang:commons-lang:' + project.'commons-lang.version'
+ compile 'commons-logging:commons-logging:' + project.'commons-logging.version'
+ compile 'commons-modeler:commons-modeler:' + project.'commons-modeler.version'
+ compile 'io.netty:netty-all:' + project.'netty-all.version'
+ compile 'it.unimi.dsi:fastutil:' + project.'fastutil.version'
+ compile 'javax.activation:activation:' + project.'activation.version'
+ compile 'javax.mail:javax.mail-api:' + project.'javax.mail-api.version'
+ compile 'javax.resource:javax.resource-api:' + project.'javax.resource-api.version'
+ compile 'javax.servlet:javax.servlet-api:' + project.'javax.servlet-api.version'
+ compile 'javax.transaction:javax.transaction-api:' + project.'javax.transaction-api.version'
+ compile 'mx4j:mx4j:' + project.'mx4j.version'
+ compile 'mx4j:mx4j-remote:' + project.'mx4j.version'
+ compile 'mx4j:mx4j-tools:' + project.'mx4j.version'
+ compile 'net.java.dev.jna:jna:' + project.'jna.version'
+ compile 'net.sourceforge.jline:jline:' + project.'jline.version'
+ provided 'org.apache.hadoop:hadoop-common:' + project.'hadoop.version'
+ provided 'org.apache.hadoop:hadoop-annotations:' + project.'hadoop.version'
+ provided 'org.apache.hadoop:hadoop-hdfs:' + project.'hadoop.version'
+ provided 'org.apache.hadoop:hadoop-mapreduce-client-core:' + project.'hadoop.version'
+ compile 'org.apache.hbase:hbase:' + project.'hbase.version'
+ compile 'org.apache.logging.log4j:log4j-api:' + project.'log4j.version'
+ compile 'org.apache.logging.log4j:log4j-core:' + project.'log4j.version'
+ runtime 'org.apache.logging.log4j:log4j-slf4j-impl:' + project.'log4j.version'
+ runtime 'org.apache.logging.log4j:log4j-jcl:' + project.'log4j.version'
+ runtime 'org.apache.logging.log4j:log4j-jul:' + project.'log4j.version'
- compile 'org.apache.lucene:lucene-analyzers-common:' + project.'lucene.version'
- compile 'org.apache.lucene:lucene-core:' + project.'lucene.version'
- compile 'org.apache.lucene:lucene-queries:' + project.'lucene.version'
- compile 'org.apache.lucene:lucene-queryparser:' + project.'lucene.version'
+ compile 'org.eclipse.jetty:jetty-http:' + project.'jetty.version'
+ compile 'org.eclipse.jetty:jetty-io:' + project.'jetty.version'
+ compile 'org.eclipse.jetty:jetty-security:' + project.'jetty.version'
+ compile 'org.eclipse.jetty:jetty-server:' + project.'jetty.version'
+ compile 'org.eclipse.jetty:jetty-servlet:' + project.'jetty.version'
+ compile 'org.eclipse.jetty:jetty-util:' + project.'jetty.version'
+ compile 'org.eclipse.jetty:jetty-webapp:' + project.'jetty.version'
+ compile 'org.eclipse.jetty:jetty-xml:' + project.'jetty.version'
+ compile 'org.fusesource.jansi:jansi:' + project.'jansi.version'
+ compile 'org.slf4j:slf4j-api:' + project.'slf4j-api.version'
+ compile 'org.springframework.data:spring-data-commons:' + project.'spring-data-commons.version'
+ provided 'org.springframework.data:spring-data-gemfire:' + project.'spring-data-gemfire.version'
+ compile 'org.springframework:spring-tx:' + project.'springframework.version'
+ compile 'org.springframework.shell:spring-shell:' + project.'spring-shell.version'
+ compile 'org.xerial.snappy:snappy-java:' + project.'snappy-java.version'
+ compile 'org.apache.hbase:hbase:' + project.'hbase.version'
+
+ compile project(':gemfire-common')
compile project(':gemfire-jgroups')
compile project(':gemfire-joptsimple')
compile project(':gemfire-json')
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/cache/GemFireCache.java
----------------------------------------------------------------------
diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/cache/GemFireCache.java
index f5ad158,c7cce3c..9425706
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/cache/GemFireCache.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/cache/GemFireCache.java
@@@ -18,8 -27,7 +27,6 @@@ import com.gemstone.gemfire.LogWriter
import com.gemstone.gemfire.cache.client.ClientCache;
import com.gemstone.gemfire.cache.client.ClientCacheFactory;
import com.gemstone.gemfire.cache.control.ResourceManager;
- import com.gemstone.gemfire.cache.hdfs.HDFSStore;
- import com.gemstone.gemfire.cache.hdfs.HDFSStoreFactory;
-import com.gemstone.gemfire.cache.lucene.LuceneService;
import com.gemstone.gemfire.cache.wan.GatewaySenderFactory;
import com.gemstone.gemfire.distributed.DistributedSystem;
import com.gemstone.gemfire.pdx.PdxSerializer;
@@@ -252,20 -260,10 +259,4 @@@ public interface GemFireCache extends R
* @since 6.6
*/
public Properties getInitializerProps();
--
-- /**
- * Returns the HDFSStore by name or <code>null</code> if no HDFSStore is
- * found.
- *
- * @param name the name of the HDFSStore to find.
- * Returns the LuceneService singleton instance.
- * @since 8.5
-- */
- public HDFSStore findHDFSStore(String name);
-
- /**
- * Creates a {@link HDFSStoreFactory} for creating a {@link HDFSStore}
- *
- * @return the HDFS store factory
- */
- public HDFSStoreFactory createHDFSStoreFactory();
-
- public LuceneService getLuceneService();
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/cache/asyncqueue/internal/AsyncEventQueueFactoryImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/cache/asyncqueue/internal/AsyncEventQueueImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DataSerializableFixedID.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegion.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/GemFireCacheImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/InternalCache.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionDataStore.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/extension/SimpleExtensionPoint.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/AbstractGatewaySender.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderAttributes.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreation.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/DefaultEntityResolver2.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/PivotalEntityResolver.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/concurrent/CopyOnWriteHashMap.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/concurrent/CopyOnWriteWeakHashMap.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/extension/mock/DestroyMockCacheExtensionFunction.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneIndex.java
----------------------------------------------------------------------
diff --cc gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneIndex.java
index fc9752a,0000000..49b74b1
mode 100644,000000..100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneIndex.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneIndex.java
@@@ -1,49 -1,0 +1,58 @@@
- /*=========================================================================
- * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
- * This product is protected by U.S. and international copyright
- * and intellectual property laws. Pivotal products are covered by
- * more patents listed at http://www.pivotal.io/patents.
- *========================================================================
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one or more
++ * contributor license agreements. See the NOTICE file distributed with
++ * this work for additional information regarding copyright ownership.
++ * The ASF licenses this file to You under the Apache License, Version 2.0
++ * (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
+ */
+
+package com.gemstone.gemfire.cache.lucene;
+
+import java.util.Map;
+
+import org.apache.lucene.analysis.Analyzer;
+
+
+/**
+ * An lucene index is built over the data stored in a GemFire Region.
+ * <p>
+ * An index is specified using a index name, field names, region name.
+ * <p>
+ * The index name and region name together uniquely identifies the lucene index.
+ * <p>
+ *
+ * @author Xiaojian Zhou
+ * @since 8.5
+ */
+public interface LuceneIndex {
+
+ /**
+ * @return the index name of this index
+ */
+ public String getName();
+
+ /**
+ * @return the region name for this index
+ */
+ public String getRegionPath();
+
+ /**
+ * @return the indexed field names in a Set
+ */
+ public String[] getFieldNames();
+
+ /**
+ * @return the field to analyzer map
+ */
+ public Map<String, Analyzer> getFieldAnalyzerMap();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java
----------------------------------------------------------------------
diff --cc gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java
index 09d3a07,0000000..e10b686
mode 100644,000000..100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java
@@@ -1,29 -1,0 +1,45 @@@
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one or more
++ * contributor license agreements. See the NOTICE file distributed with
++ * this work for additional information regarding copyright ownership.
++ * The ASF licenses this file to You under the Apache License, Version 2.0
++ * (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
+package com.gemstone.gemfire.cache.lucene;
+
+/**
+ * Provides wrapper object of Lucene's Query object and execute the search.
+ * <p>Instances of this interface are created using
+ * {@link LuceneQueryFactory#create}.
+ *
+ */
+public interface LuceneQuery<K, V> {
+ /**
+ * Execute the search and get results.
+ */
+ public LuceneQueryResults<K, V> search();
+
+ /**
+ * Get page size setting of current query.
+ */
+ public int getPageSize();
+
+ /**
+ * Get limit size setting of current query.
+ */
+ public int getLimit();
+
+ /**
+ * Get projected fields setting of current query.
+ */
+ public String[] getProjectedFieldNames();
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java
----------------------------------------------------------------------
diff --cc gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java
index eea4b88,0000000..6604926
mode 100644,000000..100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java
@@@ -1,83 -1,0 +1,99 @@@
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one or more
++ * contributor license agreements. See the NOTICE file distributed with
++ * this work for additional information regarding copyright ownership.
++ * The ASF licenses this file to You under the Apache License, Version 2.0
++ * (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
+package com.gemstone.gemfire.cache.lucene;
+
+import org.apache.lucene.queryparser.classic.ParseException;
+
+/**
+ * Factory for creating instances of {@link LuceneQuery}.
+ * To get an instance of this factory call {@link LuceneService#createLuceneQueryFactory}.
+ * <P>
+ * To use this factory configure it with the <code>set</code> methods and then
+ * call {@link #create} to produce a {@link LuceneQuery} instance.
+ *
+ * @author Xiaojian Zhou
+ * @since 8.5
+ */
+public interface LuceneQueryFactory {
+
+ /**
+ * Default query result limit is 100
+ */
+ public static final int DEFAULT_LIMIT = 100;
+
+ /**
+ * Default page size of result is 0, which means no pagination
+ */
+ public static final int DEFAULT_PAGESIZE = 0;
+
+ /**
+ * Set page size for a query result. The default page size is 0 which means no pagination.
+ * If specified negative value, throw IllegalArgumentException
+ * @param pageSize
+ * @return itself
+ */
+ LuceneQueryFactory setPageSize(int pageSize);
+
+ /**
+ * Set max limit of result for a query
+ * If specified limit is less or equal to zero, throw IllegalArgumentException
+ * @param limit
+ * @return itself
+ */
+ LuceneQueryFactory setResultLimit(int limit);
+
+ /**
+ * Set a list of fields for result projection.
+ *
+ * @param fieldNames
+ * @return itself
+ *
+ * @deprecated TODO This feature is not yet implemented
+ */
+ @Deprecated
+ LuceneQueryFactory setProjectionFields(String... fieldNames);
+
+ /**
+ * Create wrapper object for lucene's QueryParser object using default standard analyzer.
+ * The queryString is using lucene QueryParser's syntax. QueryParser is for easy-to-use
+ * with human understandable syntax.
+ *
+ * @param regionName region name
+ * @param indexName index name
+ * @param queryString query string in lucene QueryParser's syntax
+ * @param K the key type in the query results
+ * @param V the value type in the query results
+ * @return LuceneQuery object
+ * @throws ParseException
+ */
+ public <K, V> LuceneQuery<K, V> create(String indexName, String regionName, String queryString)
+ throws ParseException;
+
+ /**
+ * Creates a wrapper object for Lucene's Query object. This {@link LuceneQuery} builder method could be used in
+ * advanced cases, such as cases where Lucene's Query object construction needs Lucene's API over query string. The
+ * {@link QueryDeserializer} will be used to re-construct the Lucene Query object on remote hosts.
+ *
+ * @param indexName index name
+ * @param regionName region name
+ * @param provider constructs and provides a Lucene Query object
+ * @param K the key type in the query results
+ * @param V the value type in the query results
+ * @return LuceneQuery object
+ */
+ public <K, V> LuceneQuery<K, V> create(String indexName, String regionName, LuceneQueryProvider provider);
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneResultStruct.java
----------------------------------------------------------------------
diff --cc gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneResultStruct.java
index 6ed0b99,0000000..1cf3c7c
mode 100644,000000..100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneResultStruct.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneResultStruct.java
@@@ -1,45 -1,0 +1,61 @@@
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one or more
++ * contributor license agreements. See the NOTICE file distributed with
++ * this work for additional information regarding copyright ownership.
++ * The ASF licenses this file to You under the Apache License, Version 2.0
++ * (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
+package com.gemstone.gemfire.cache.lucene;
+
+
+/**
+ * <p>
+ * Abstract data structure for one item in query result.
+ *
+ * @author Xiaojian Zhou
+ * @since 8.5
+ */
+public interface LuceneResultStruct<K, V> {
+ /**
+ * Return the value associated with the given field name
+ *
+ * @param fieldName the String name of the field
+ * @return the value associated with the specified field
+ * @throws IllegalArgumentException If this struct does not have a field named fieldName
+ */
+ public Object getProjectedField(String fieldName);
+
+ /**
+ * Return key of the entry
+ *
+ * @return key
+ * @throws IllegalArgumentException If this struct does not contain key
+ */
+ public K getKey();
+
+ /**
+ * Return value of the entry
+ *
+ * @return value the whole domain object
+ * @throws IllegalArgumentException If this struct does not contain value
+ */
+ public V getValue();
+
+ /**
+ * Return score of the query
+ *
+ * @return score
+ * @throws IllegalArgumentException If this struct does not contain score
+ */
+ public float getScore();
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneService.java
----------------------------------------------------------------------
diff --cc gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneService.java
index 6c629de,0000000..6bbb4fd
mode 100644,000000..100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneService.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneService.java
@@@ -1,110 -1,0 +1,126 @@@
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one or more
++ * contributor license agreements. See the NOTICE file distributed with
++ * this work for additional information regarding copyright ownership.
++ * The ASF licenses this file to You under the Apache License, Version 2.0
++ * (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
+package com.gemstone.gemfire.cache.lucene;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.apache.lucene.analysis.Analyzer;
+
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.GemFireCache;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneServiceImpl;
+import com.gemstone.gemfire.internal.cache.extension.Extensible;
+
+/**
+ * LuceneService instance is a singleton for each cache. It will be created in cache
+ * constructor and get its reference via {@link GemFireCache#getLuceneService()}.
+ *
+ * It provides handle for managing the {@link LuceneIndex} and create the {@link LuceneQuery}
+ * via {@link LuceneQueryFactory}
+ *
+ * </p>
+ * Example: <br>
+ *
+ * <pre>
+ * At client and server JVM, initializing cache will create the LuceneServiceImpl object,
+ * which is a singleton at each JVM.
+ *
+ * At each server JVM, for data region to create index, create the index on fields with default analyzer:
+ * LuceneIndex index = luceneService.createIndex(indexName, regionName, "field1", "field2", "field3");
+ * or create index on fields with specified analyzer:
+ * LuceneIndex index = luceneService.createIndex(indexName, regionName, analyzerPerField);
+ *
+ * We can also create index via cache.xml or gfsh.
+ *
+ * At client side, create query and run the search:
+ *
+ * LuceneQuery query = luceneService.createLuceneQueryFactory().setLimit(200).setPageSize(20)
+ * .setResultTypes(SCORE, VALUE, KEY).setFieldProjection("field1", "field2")
+ * .create(indexName, regionName, querystring, analyzer);
+ *
+ * The querystring is using lucene's queryparser syntax, such as "field1:zhou* AND field2:gzhou@pivotal.io"
+ *
+ * LuceneQueryResults results = query.search();
+ *
+ * If pagination is not specified:
+ * List list = results.getNextPage(); // return all results in one getNextPage() call
+ * or if paging is specified:
+ * if (results.hasNextPage()) {
+ * List page = results.nextPage(); // return resules page by page
+ * }
+ *
+ * The item of the list is either the domain object or instance of {@link LuceneResultStruct}
+ * </pre>
+ *
+ * @author Xiaojian Zhou
+ *
+ */
+public interface LuceneService {
+
+ /**
+ * Create a lucene index using default analyzer.
+ *
+ * @param indexName
+ * @param regionPath
+ * @param fields
+ * @return LuceneIndex object
+ */
+ public void createIndex(String indexName, String regionPath, String... fields);
+
+ /**
+ * Create a lucene index using specified analyzer per field
+ *
+ * @param indexName index name
+ * @param regionPath region name
+ * @param analyzerPerField analyzer per field map
+ * @return LuceneIndex object
+ * @deprecated TODO This feature is not yet implemented
+ */
+ @Deprecated
+ public void createIndex(String indexName, String regionPath,
+ Map<String, Analyzer> analyzerPerField);
+
+ /**
+ * Destroy the lucene index
+ *
+ * @param index index object
+ * @deprecated TODO This feature is not yet implemented
+ */
+ @Deprecated
+ public void destroyIndex(LuceneIndex index);
+
+ /**
+ * Get the lucene index object specified by region name and index name
+ * @param indexName index name
+ * @param regionPath region name
+ * @return LuceneIndex object
+ */
+ public LuceneIndex getIndex(String indexName, String regionPath);
+
+ /**
+ * get all the lucene indexes.
+ * @return all index objects in a Collection
+ */
+ public Collection<LuceneIndex> getAllIndexes();
+
+ /**
+ * create LuceneQueryFactory
+ * @return LuceneQueryFactory object
+ */
+ public LuceneQueryFactory createLuceneQueryFactory();
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f189ff52/settings.gradle
----------------------------------------------------------------------