//
// ========================================================================
// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.nosql.mongodb;
import java.net.UnknownHostException;
import org.eclipse.jetty.server.session.AbstractSessionDataStoreFactory;
import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.server.session.SessionDataStore;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.MongoURI;
/**
* MongoSessionDataStoreFactory
*
*
*/
public class MongoSessionDataStoreFactory extends AbstractSessionDataStoreFactory
{
String _dbName;
String _collectionName;
String _host;
String _connectionString;
int _port = -1;
/**
* @return the host
*/
public String getHost()
{
return _host;
}
/**
* @param host the host to set
*/
public void setHost(String host)
{
_host = host;
}
/**
* @return the port
*/
public int getPort()
{
return _port;
}
/**
* @param port the port to set
*/
public void setPort(int port)
{
_port = port;
}
/**
* @return the dbName
*/
public String getDbName()
{
return _dbName;
}
/**
* @param dbName the dbName to set
*/
public void setDbName(String dbName)
{
_dbName = dbName;
}
/**
* @return the connectionString
*/
public String getConnectionString()
{
return _connectionString;
}
/**
* @param connectionString the connection string to set. This has priority over dbHost and port
*/
public void setConnectionString(String connectionString)
{
_connectionString = connectionString;
}
/**
* @return the collectionName
*/
public String getCollectionName()
{
return _collectionName;
}
/**
* @param collectionName the collectionName to set
*/
public void setCollectionName(String collectionName)
{
_collectionName = collectionName;
}
/**
* @throws MongoException
* @throws UnknownHostException
* @see org.eclipse.jetty.server.session.SessionDataStoreFactory#getSessionDataStore(org.eclipse.jetty.server.session.SessionHandler)
*/
@Override
public SessionDataStore getSessionDataStore(SessionHandler handler) throws Exception
{
MongoSessionDataStore store = new MongoSessionDataStore();
store.setGracePeriodSec(getGracePeriodSec());
store.setSavePeriodSec(getSavePeriodSec());
Mongo mongo;
if (!StringUtil.isBlank(getConnectionString()))
mongo = new Mongo(new MongoURI(getConnectionString()));
else if (!StringUtil.isBlank(getHost()) && getPort() != -1)
mongo = new Mongo(getHost(), getPort());
else if (!StringUtil.isBlank(getHost()))
mongo = new Mongo(getHost());
else
mongo = new Mongo();
store.setDBCollection(mongo.getDB(getDbName()).getCollection(getCollectionName()));
return store;
}
}