blob: 8a0a71fc54d7cd701429c80a4f9c7942511cbeeb [file] [log] [blame]
package org.eclipse.jetty.nosql.ehcache;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URI;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.nosql.NoSqlSession;
import org.eclipse.jetty.nosql.NoSqlSessionManager;
import org.eclipse.jetty.util.ajax.JSON;
public class EhcacheSessionManager extends NoSqlSessionManager
{
private HttpClient _client = new HttpClient();
private URI _cachingServerUri;
private String _cache;
public EhcacheSessionManager(URI cachingServerUri, String cache)
{
_cachingServerUri = cachingServerUri;
_cache = cache;
try
{
_client.start();
}
catch (Exception e)
{
e.printStackTrace();
}
checkOrCreateCache();
}
private void checkOrCreateCache()
{
EhcacheExchange saveExchange = new EhcacheExchange();
saveExchange.setMethod("PUT");
URI saveURI = _cachingServerUri.resolve(_cache);
saveExchange.setURL(saveURI.toString());
try
{
_client.send(saveExchange);
saveExchange.waitForDone();
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
protected NoSqlSession loadSession(String clusterId)
{
EhcacheExchange loadExchange = new EhcacheExchange();
loadExchange.setMethod("GET");
URI loadURI = _cachingServerUri.resolve(_cache).resolve(clusterId);
loadExchange.setURL(loadURI.toString());
try
{
_client.send(loadExchange);
loadExchange.waitForDone();
System.out.println("Session: " + loadExchange.getResponseContent());
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("Load URI: " + loadURI);
return null;
}
@Override
protected Object save(NoSqlSession session, Object version, boolean activateAfterSave)
{
EhcacheExchange saveExchange = new EhcacheExchange();
saveExchange.setMethod("PUT");
saveExchange.setRequestContentSource(new ByteArrayInputStream(JSON.toString(new JsonSessionData(session)).getBytes()));
URI saveURI = _cachingServerUri.resolve(_cache).resolve(session.getClusterId());
saveExchange.setURL(saveURI.toString());
try
{
_client.send(saveExchange);
saveExchange.waitForDone();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("Save URI: " + saveURI);
return session.getVersion();
}
@Override
protected Object refresh(NoSqlSession session, Object version)
{
// TODO Auto-generated method stub
return null;
}
@Override
protected boolean remove(NoSqlSession session)
{
// TODO Auto-generated method stub
return false;
}
}