From 68f5fe3827735560c289881d02adfca08baec16f Mon Sep 17 00:00:00 2001
From: Tobias Pietzsch <tobias.pietzsch@gmail.com>
Date: Wed, 11 Feb 2015 19:49:17 +0100
Subject: [PATCH] Constants defines reserved names ("json", "manager") that
 cannot be used as dataset names.

---
 src/main/java/bdv/server/BigDataServer.java  |  3 +++
 src/main/java/bdv/server/Constants.java      | 14 ++++++++++++++
 src/main/java/bdv/server/JsonHandler.java    |  2 +-
 src/main/java/bdv/server/ManagerHandler.java |  4 +++-
 4 files changed, 21 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/bdv/server/Constants.java

diff --git a/src/main/java/bdv/server/BigDataServer.java b/src/main/java/bdv/server/BigDataServer.java
index 07e480b..dd6dbd5 100644
--- a/src/main/java/bdv/server/BigDataServer.java
+++ b/src/main/java/bdv/server/BigDataServer.java
@@ -256,6 +256,9 @@ public class BigDataServer
 
 	private static void tryAddDataset( final HashMap< String, String > datasetNameToXML, final String name, final String xmlpath ) throws IllegalArgumentException
 	{
+		for ( final String reserved : Constants.RESERVED_CONTEXT_NAMES )
+			if ( name.equals( reserved ) )
+				throw new IllegalArgumentException( "Cannot use dataset name: \"" + name + "\" (reserved for internal use)." );
 		if ( datasetNameToXML.containsKey( name ) )
 			throw new IllegalArgumentException( "Duplicate dataset name: \"" + name + "\"" );
 		if ( Files.notExists( Paths.get( xmlpath ) ) )
diff --git a/src/main/java/bdv/server/Constants.java b/src/main/java/bdv/server/Constants.java
new file mode 100644
index 0000000..8b59187
--- /dev/null
+++ b/src/main/java/bdv/server/Constants.java
@@ -0,0 +1,14 @@
+package bdv.server;
+
+public class Constants
+{
+	public static final String DATASETLIST_CONTEXT_NAME = "json";
+
+	public static final String MANAGER_CONTEXT_NAME = "manager";
+
+	public static final String[] RESERVED_CONTEXT_NAMES = new String[]
+	{
+			DATASETLIST_CONTEXT_NAME,
+			MANAGER_CONTEXT_NAME
+	};
+}
diff --git a/src/main/java/bdv/server/JsonHandler.java b/src/main/java/bdv/server/JsonHandler.java
index d356ce2..33f9c45 100644
--- a/src/main/java/bdv/server/JsonHandler.java
+++ b/src/main/java/bdv/server/JsonHandler.java
@@ -25,7 +25,7 @@ public class JsonHandler extends ContextHandler
 	public JsonHandler( final Server server, final ContextHandlerCollection handlers ) throws IOException, URISyntaxException
 	{
 		this.server = server;
-		setContextPath( "/json" );
+		setContextPath( "/" + Constants.DATASETLIST_CONTEXT_NAME );
 	}
 
 	@Override
diff --git a/src/main/java/bdv/server/ManagerHandler.java b/src/main/java/bdv/server/ManagerHandler.java
index a50ecad..ef23e50 100644
--- a/src/main/java/bdv/server/ManagerHandler.java
+++ b/src/main/java/bdv/server/ManagerHandler.java
@@ -1,6 +1,7 @@
 package bdv.server;
 
 import mpicbg.spim.data.SpimDataException;
+
 import org.antlr.stringtemplate.StringTemplate;
 import org.antlr.stringtemplate.StringTemplateGroup;
 import org.eclipse.jetty.server.ConnectorStatistics;
@@ -15,6 +16,7 @@ import org.eclipse.jetty.util.log.Log;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -48,7 +50,7 @@ public class ManagerHandler extends ContextHandler
 		this.handlers = handlers;
 		this.statHandler = statHandler;
 		this.connectorStats = connectorStats;
-		setContextPath( "/manager" );
+		setContextPath( "/" + Constants.MANAGER_CONTEXT_NAME );
 	}
 
 	@Override
-- 
GitLab