Skip to content
Snippets Groups Projects
Commit 26df9dfa authored by HongKee Moon's avatar HongKee Moon
Browse files

Add context based handler for handling multiple datasets

Dataset can be created/removed during runtime.
parent 30881a59
No related branches found
No related tags found
No related merge requests found
package bdv.server;
import mpicbg.spim.data.SpimDataException;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.util.log.Log;
import java.util.HashMap;
public class BigDataServer
{
static HashMap< String, String > dataSet = new HashMap<>();
private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger( BigDataServer.class );
public static void main( final String[] args ) throws Exception
{
......@@ -18,12 +22,30 @@ public class BigDataServer
System.setProperty( "org.eclipse.jetty.util.log.class", "org.eclipse.jetty.util.log.StdErrLog" );
final Server server = new Server( port );
String baseURL = "http://" + server.getURI().getHost() + ":" + port + "/";
String baseURL = "http://" + server.getURI().getHost() + ":" + port;
// System.out.println(baseURL);
HandlerCollection handlers = createHandlers( baseURL, dataSet );
handlers.addHandler( new ManagerHandler( baseURL, server, handlers ) );
server.setHandler( new DataSetHandler( baseURL, dataSet ) );
LOG.info( "Set handler: " + handlers );
server.setHandler( handlers );
LOG.info( "BigDataServer starting" );
server.start();
server.join();
}
static private HandlerCollection createHandlers( String baseURL, HashMap< String, String > dataSet ) throws SpimDataException
{
HandlerCollection handlers = new HandlerCollection( true );
for ( String key : dataSet.keySet() )
{
String context = "/" + key;
CellHandler ctx = new CellHandler( baseURL + context + "/", dataSet.get( key ) );
ctx.setContextPath( context );
handlers.addHandler( ctx );
}
return handlers;
}
}
......@@ -15,7 +15,7 @@ import mpicbg.spim.data.SpimDataException;
import net.imglib2.img.basictypeaccess.volatiles.array.VolatileShortArray;
import net.imglib2.realtransform.AffineTransform3D;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
......@@ -28,7 +28,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
public class CellHandler extends AbstractHandler
public class CellHandler extends ContextHandler
{
private final VolatileGlobalCellCache< VolatileShortArray > cache;
......@@ -62,11 +62,16 @@ public class CellHandler extends AbstractHandler
}
@Override
public void handle( final String target, final Request baseRequest, final HttpServletRequest request, final HttpServletResponse response ) throws IOException, ServletException
public void doHandle( final String target, final Request baseRequest, final HttpServletRequest request, final HttpServletResponse response ) throws IOException, ServletException
{
final String cellString = request.getParameter( "p" );
if ( cellString == null )
{
provideXML( baseRequest, response );
return;
}
final String[] parts = cellString.split( "/" );
if ( parts[ 0 ].equals( "cell" ) )
{
......@@ -140,9 +145,6 @@ public class CellHandler extends AbstractHandler
baseUrl.setText( dataSetURL );
ImageLoader.setContent( baseUrl );
// System.out.println(ImageLoader.getAttribute( "format" ));
// System.out.println(ImageLoader.getValue());
response.setContentType( "application/xml" );
response.setStatus( HttpServletResponse.SC_OK );
baseRequest.setHandled( true );
......
package bdv.server;
import mpicbg.spim.data.SpimDataException;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.HashMap;
public class DataSetHandler extends AbstractHandler
{
final private HashMap< String, CellHandler > cellHandlers;
public DataSetHandler( String baseURL, HashMap< String, String > ds ) throws SpimDataException, MalformedURLException
{
cellHandlers = new HashMap<>();
for ( String dataSet : ds.keySet() )
{
cellHandlers.put( dataSet, new CellHandler( baseURL + dataSet + "/", ds.get( dataSet ) ) );
}
}
@Override
public void handle( final String target, final Request baseRequest, final HttpServletRequest request, final HttpServletResponse response ) throws IOException, ServletException
{
String dsName = target.replace( "/", "" );
if ( cellHandlers.containsKey( dsName ) )
{
if ( request.getParameter( "p" ) != null )
cellHandlers.get( dsName ).handle( target, baseRequest, request, response );
else
// Provide XML file
cellHandlers.get( dsName ).provideXML( baseRequest, response );
}
else
{
return;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment