From 4d9a638c6cbb437c6880060aa80958bcbca5f14e Mon Sep 17 00:00:00 2001 From: synapticloop Date: Sun, 19 Apr 2020 14:19:32 +1000 Subject: [PATCH] fixed routing --- build.gradle | 11 ++++--- src/main/java/fi/iki/elonen/NanoHTTPD.java | 2 +- .../nanohttpd/RouteMasterServer.java | 2 +- .../example/servant/HandlerServant.java | 2 +- .../servant/HandlerTemplarServant.java | 2 +- .../example/servant/MimeTypesRestServant.java | 2 +- .../example/servant/ModulesRouteServant.java | 2 +- .../servant/RouteMasterRestServant.java | 2 +- .../RouteMasterRestTemplarServant.java | 2 +- .../example/servant/SimpleRestServant.java | 2 +- .../nanohttpd/handler/Handler.java | 2 +- .../nanohttpd/handler/TemplarHandler.java | 2 +- .../nanohttpd/router/RestRoutable.java | 7 +++- .../nanohttpd/router/Routable.java | 2 +- .../nanohttpd/router/RouteMaster.java | 33 +++++++++++++++---- .../synapticloop/nanohttpd/router/Router.java | 2 +- .../servant/CachingClasspathFileServant.java | 4 +-- .../servant/ClasspathFileServant.java | 4 +-- .../nanohttpd/servant/StaticFileServant.java | 2 +- .../servant/UninitialisedServant.java | 2 +- .../nanohttpd/utils/AsciiArt.java | 2 +- .../nanohttpd/utils/FileHelper.java | 2 +- .../nanohttpd/utils/HttpUtils.java | 2 +- .../nanohttpd/utils/MimeTypeMapper.java | 2 +- .../nanohttpd/utils/ModifiableSession.java | 2 +- .../nanohttpd/utils/Response.java | 2 +- .../nanohttpd/utils/SimpleLogger.java | 2 +- .../nanohttpd/utils/TemplarHelper.java | 2 +- 28 files changed, 67 insertions(+), 38 deletions(-) diff --git a/build.gradle b/build.gradle index 32c3c80..610eeac 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ plugins { apply plugin: 'com.github.johnrengelman.shadow' -version = '2.4.0' +version = '2.4.3' group = 'synapticloop' archivesBaseName = 'routemaster' @@ -37,10 +37,9 @@ configurations { } dependencies { - runtime 'synapticloop:templar:1.4.2' - compile 'synapticloop:templar:1.4.2' - + compile 'org.json:json:20190722' + testCompile 'junit:junit:4.13' testCompile 'org.mockito:mockito-all:2.0.2-beta' testCompile 'synapticloop:templar:1.5.0' @@ -234,4 +233,8 @@ bintray { //task example.mustRunAfter('build') //task server.mustRunAfter('example') +copyrightr { + dryRun = false +} + build.finalizedBy([ 'example', 'server' ]) diff --git a/src/main/java/fi/iki/elonen/NanoHTTPD.java b/src/main/java/fi/iki/elonen/NanoHTTPD.java index 3c2b201..a483914 100644 --- a/src/main/java/fi/iki/elonen/NanoHTTPD.java +++ b/src/main/java/fi/iki/elonen/NanoHTTPD.java @@ -103,7 +103,7 @@ *

* NanoHTTPD *

- * Copyright (c) 2012-2013 by Paul S. Hawke, 2001,2005-2013 by Jarno Elonen, + * Copyright (c) 2012-2013 by Paul S. Hawke, 2001,2005-2020 by Jarno Elonen, * 2010 by Konstantinos Togias *

*

diff --git a/src/main/java/synapticloop/nanohttpd/RouteMasterServer.java b/src/main/java/synapticloop/nanohttpd/RouteMasterServer.java index e02340b..fe55d0b 100644 --- a/src/main/java/synapticloop/nanohttpd/RouteMasterServer.java +++ b/src/main/java/synapticloop/nanohttpd/RouteMasterServer.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/example/servant/HandlerServant.java b/src/main/java/synapticloop/nanohttpd/example/servant/HandlerServant.java index a225deb..1401f00 100644 --- a/src/main/java/synapticloop/nanohttpd/example/servant/HandlerServant.java +++ b/src/main/java/synapticloop/nanohttpd/example/servant/HandlerServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.example.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/example/servant/HandlerTemplarServant.java b/src/main/java/synapticloop/nanohttpd/example/servant/HandlerTemplarServant.java index 5b3a104..3b25deb 100644 --- a/src/main/java/synapticloop/nanohttpd/example/servant/HandlerTemplarServant.java +++ b/src/main/java/synapticloop/nanohttpd/example/servant/HandlerTemplarServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.example.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/example/servant/MimeTypesRestServant.java b/src/main/java/synapticloop/nanohttpd/example/servant/MimeTypesRestServant.java index 2b6758b..f775f35 100644 --- a/src/main/java/synapticloop/nanohttpd/example/servant/MimeTypesRestServant.java +++ b/src/main/java/synapticloop/nanohttpd/example/servant/MimeTypesRestServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.example.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/example/servant/ModulesRouteServant.java b/src/main/java/synapticloop/nanohttpd/example/servant/ModulesRouteServant.java index 1d50481..9973147 100644 --- a/src/main/java/synapticloop/nanohttpd/example/servant/ModulesRouteServant.java +++ b/src/main/java/synapticloop/nanohttpd/example/servant/ModulesRouteServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.example.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestServant.java b/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestServant.java index e80aaa5..b986416 100644 --- a/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestServant.java +++ b/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.example.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestTemplarServant.java b/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestTemplarServant.java index 008960c..ea38251 100644 --- a/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestTemplarServant.java +++ b/src/main/java/synapticloop/nanohttpd/example/servant/RouteMasterRestTemplarServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.example.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/example/servant/SimpleRestServant.java b/src/main/java/synapticloop/nanohttpd/example/servant/SimpleRestServant.java index 6f2610d..4448aa8 100644 --- a/src/main/java/synapticloop/nanohttpd/example/servant/SimpleRestServant.java +++ b/src/main/java/synapticloop/nanohttpd/example/servant/SimpleRestServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.example.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/handler/Handler.java b/src/main/java/synapticloop/nanohttpd/handler/Handler.java index f68459b..445f64f 100644 --- a/src/main/java/synapticloop/nanohttpd/handler/Handler.java +++ b/src/main/java/synapticloop/nanohttpd/handler/Handler.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.handler; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/handler/TemplarHandler.java b/src/main/java/synapticloop/nanohttpd/handler/TemplarHandler.java index ca309fe..d850ee7 100644 --- a/src/main/java/synapticloop/nanohttpd/handler/TemplarHandler.java +++ b/src/main/java/synapticloop/nanohttpd/handler/TemplarHandler.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.handler; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/router/RestRoutable.java b/src/main/java/synapticloop/nanohttpd/router/RestRoutable.java index 2f1bcd4..4df8f64 100644 --- a/src/main/java/synapticloop/nanohttpd/router/RestRoutable.java +++ b/src/main/java/synapticloop/nanohttpd/router/RestRoutable.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.router; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * @@ -48,6 +48,11 @@ public RestRoutable(String routeContext, List params) { public Response serve(File rootDir, IHTTPSession httpSession) { String uri = httpSession.getUri(); + if(uri.length() < routeContext.length()) { + // this means that we are probably missing a trailing '/' + uri = uri + "/"; + } + String routeUriParams = uri.substring(routeContext.length()); String[] splits = routeUriParams.split("/"); diff --git a/src/main/java/synapticloop/nanohttpd/router/Routable.java b/src/main/java/synapticloop/nanohttpd/router/Routable.java index 254f805..921708b 100644 --- a/src/main/java/synapticloop/nanohttpd/router/Routable.java +++ b/src/main/java/synapticloop/nanohttpd/router/Routable.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.router; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/router/RouteMaster.java b/src/main/java/synapticloop/nanohttpd/router/RouteMaster.java index f40907d..918e50b 100644 --- a/src/main/java/synapticloop/nanohttpd/router/RouteMaster.java +++ b/src/main/java/synapticloop/nanohttpd/router/RouteMaster.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.router; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * @@ -65,7 +65,9 @@ */ public class RouteMaster { private static final String ROUTEMASTER_PROPERTIES = "routemaster.properties"; + private static final String ROUTEMASTER_JSON = "routemaster.json"; private static final String ROUTEMASTER_EXAMPLE_PROPERTIES = "routemaster.example.properties"; + private static final String ROUTEMASTER_EXAMPLE_JSON = "routemaster.example.json"; private static final String PROPERTY_PREFIX_REST = "rest."; private static final String PROPERTY_PREFIX_ROUTE = "route."; @@ -99,12 +101,22 @@ public static void initialise(File rootDir) { try { properties = FileHelper.confirmPropertiesFileDefault(ROUTEMASTER_PROPERTIES, ROUTEMASTER_EXAMPLE_PROPERTIES); } catch (IOException ioex) { - logNoRoutemasterProperties(); + try { + logNoRoutemasterProperties(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } allOk = false; } if(null == properties) { - logNoRoutemasterProperties(); + try { + logNoRoutemasterProperties(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } allOk = false; } @@ -304,7 +316,7 @@ private static void parseOptionsAndRoutes(Properties properties) { // now clean up the route String temp = stringBuilder.toString(); - if(subKey.endsWith("/") && !temp.endsWith("/")) { stringBuilder.append("/"); } + if(!temp.endsWith("/")) { stringBuilder.append("/"); } // need to make sure that the rest router always picks up wildcards if(!subKey.endsWith("*")) { stringBuilder.append("*"); } @@ -365,14 +377,23 @@ private static void parseOptionsAndRoutes(Properties properties) { logInfo(RouteMaster.class.getSimpleName() + " initialised."); } - private static void logNoRoutemasterProperties() { + private static void logNoRoutemasterProperties() throws IOException { +// logFatal("Could not load the '" + ROUTEMASTER_JSON + "' file, ignoring..."); +// logFatal("(Consequently this is going to be a pretty boring experience!"); +// logFatal("but we did write out an example file for you - '" + ROUTEMASTER_EXAMPLE_JSON + "')"); +// logFatal("NOTE: the '" + ROUTEMASTER_EXAMPLE_JSON + "' takes precedence)"); +// InputStream inputStream = RouteMaster.class.getResourceAsStream("/" + ROUTEMASTER_EXAMPLE_JSON); +// +// FileHelper.writeFile(new File(ROUTEMASTER_EXAMPLE_JSON), inputStream, true); +// inputStream.close(); + logFatal("Could not load the '" + ROUTEMASTER_PROPERTIES + "' file, ignoring..."); logFatal("(Consequently this is going to be a pretty boring experience!"); logFatal("but we did write out an example file for you - '" + ROUTEMASTER_EXAMPLE_PROPERTIES + "')"); InputStream inputStream = RouteMaster.class.getResourceAsStream("/" + ROUTEMASTER_EXAMPLE_PROPERTIES); - FileHelper.writeFile(new File(ROUTEMASTER_EXAMPLE_PROPERTIES), inputStream, true); + inputStream.close(); } diff --git a/src/main/java/synapticloop/nanohttpd/router/Router.java b/src/main/java/synapticloop/nanohttpd/router/Router.java index 2b17342..c190a82 100644 --- a/src/main/java/synapticloop/nanohttpd/router/Router.java +++ b/src/main/java/synapticloop/nanohttpd/router/Router.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.router; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/servant/CachingClasspathFileServant.java b/src/main/java/synapticloop/nanohttpd/servant/CachingClasspathFileServant.java index 5beb1f0..b789e1c 100644 --- a/src/main/java/synapticloop/nanohttpd/servant/CachingClasspathFileServant.java +++ b/src/main/java/synapticloop/nanohttpd/servant/CachingClasspathFileServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * @@ -66,4 +66,4 @@ public Response serve(File rootDir, IHTTPSession httpSession) { return(HttpUtils.methodNotAllowedResponse()); } } -} \ No newline at end of file +} diff --git a/src/main/java/synapticloop/nanohttpd/servant/ClasspathFileServant.java b/src/main/java/synapticloop/nanohttpd/servant/ClasspathFileServant.java index 54ec3b5..410f95e 100644 --- a/src/main/java/synapticloop/nanohttpd/servant/ClasspathFileServant.java +++ b/src/main/java/synapticloop/nanohttpd/servant/ClasspathFileServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * @@ -211,4 +211,4 @@ protected byte[] getBytes(String uri) throws IOException { } -} \ No newline at end of file +} diff --git a/src/main/java/synapticloop/nanohttpd/servant/StaticFileServant.java b/src/main/java/synapticloop/nanohttpd/servant/StaticFileServant.java index d3c6e9c..2a594b1 100644 --- a/src/main/java/synapticloop/nanohttpd/servant/StaticFileServant.java +++ b/src/main/java/synapticloop/nanohttpd/servant/StaticFileServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/servant/UninitialisedServant.java b/src/main/java/synapticloop/nanohttpd/servant/UninitialisedServant.java index 57d48f7..bd75902 100644 --- a/src/main/java/synapticloop/nanohttpd/servant/UninitialisedServant.java +++ b/src/main/java/synapticloop/nanohttpd/servant/UninitialisedServant.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.servant; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/AsciiArt.java b/src/main/java/synapticloop/nanohttpd/utils/AsciiArt.java index d64d51b..835d22f 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/AsciiArt.java +++ b/src/main/java/synapticloop/nanohttpd/utils/AsciiArt.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/FileHelper.java b/src/main/java/synapticloop/nanohttpd/utils/FileHelper.java index 93e37ec..74f1474 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/FileHelper.java +++ b/src/main/java/synapticloop/nanohttpd/utils/FileHelper.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/HttpUtils.java b/src/main/java/synapticloop/nanohttpd/utils/HttpUtils.java index 82656e4..58bca91 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/HttpUtils.java +++ b/src/main/java/synapticloop/nanohttpd/utils/HttpUtils.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/MimeTypeMapper.java b/src/main/java/synapticloop/nanohttpd/utils/MimeTypeMapper.java index 2154de9..22a5c34 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/MimeTypeMapper.java +++ b/src/main/java/synapticloop/nanohttpd/utils/MimeTypeMapper.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/ModifiableSession.java b/src/main/java/synapticloop/nanohttpd/utils/ModifiableSession.java index 34aa05c..ea2012c 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/ModifiableSession.java +++ b/src/main/java/synapticloop/nanohttpd/utils/ModifiableSession.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/Response.java b/src/main/java/synapticloop/nanohttpd/utils/Response.java index 47f9848..6bd9aeb 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/Response.java +++ b/src/main/java/synapticloop/nanohttpd/utils/Response.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/SimpleLogger.java b/src/main/java/synapticloop/nanohttpd/utils/SimpleLogger.java index a9710fb..5e4fafe 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/SimpleLogger.java +++ b/src/main/java/synapticloop/nanohttpd/utils/SimpleLogger.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. * diff --git a/src/main/java/synapticloop/nanohttpd/utils/TemplarHelper.java b/src/main/java/synapticloop/nanohttpd/utils/TemplarHelper.java index 12ba08e..47c6340 100644 --- a/src/main/java/synapticloop/nanohttpd/utils/TemplarHelper.java +++ b/src/main/java/synapticloop/nanohttpd/utils/TemplarHelper.java @@ -1,7 +1,7 @@ package synapticloop.nanohttpd.utils; /* - * Copyright (c) 2013-2017 synapticloop. + * Copyright (c) 2013-2020 synapticloop. * * All rights reserved. *