# 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.


##gora.datastore.default is the default detastore implementation to use 
##if it is not passed to the DataStoreFactory#createDataStore() method.
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
#gora.datastore.default=org.apache.gora.couchdb.store.CouchDBStore
#gora.datastore.default=org.apache.gora.cassandra.store.CassandraStore
#gora.datastore.default=org.apache.gora.solr.store.SolrStore
#gora.datastore.default=org.apache.gora.aerospike.store.AerospikeStore

#gora.datastore.default=org.apache.gora.avro.store.AvroStore
#gora.avrostore.input.path=hdfs://localhost:9000/gora.avrostore.test.input
#gora.avrostore.output.path=hdfs://localhost:9000/gora.avrostore.test.output
#gora.avrostore.codec.type=JSON || BINARY

##whether to create schema automatically if not exists.
gora.datastore.autocreateschema=true

##Cassandra properties for gora-cassandra module using Cassandra
#gora.cassandrastore.servers=localhost:9160

##JDBC properties for gora-sql module using HSQL
gora.sqlstore.jdbc.driver=org.hsqldb.jdbcDriver
##HSQL jdbc connection as persistent in-process database
gora.sqlstore.jdbc.url=jdbc:hsqldb:file:./hsql-data

##HSQL jdbc connection as network server
#gora.sqlstore.jdbc.url=jdbc:hsqldb:hsql://localhost/goratest

##JDBC properties for gora-sql module using MySQL
#gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver
#gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/goratest
#gora.sqlstore.jdbc.user=root
#gora.sqlstore.jdbc.password=

gora.solrstore.solr.url=http://localhost:8983/solr
gora.solrstore.solr.commitwithin=0
gora.solrstore.solr.batchsize=100
# set which Solrj server impl you wish to use 
# cloud, concurrent, http, loadbalance
gora.solrstore.solr.solrjserver=http

#JCache dataStore properties
gora.cache.datastore.default=org.apache.gora.jcache.store.JCacheStore
gora.datastore.jcache.provider=com.hazelcast.cache.impl.HazelcastServerCachingProvider
#gora.datastore.jcache.provider=com.hazelcast.client.cache.impl.HazelcastClientCachingProvider

##Aerospike dataStore properties
#gora.aerospikestore.server.ip=localhost
#gora.aerospikestore.server.port=3000
#gora.aerospikestore.server.username=
#gora.aerospikestore.server.password=
