From 2c82754438d4ce1a91f87945c1bfe10364cfcc97 Mon Sep 17 00:00:00 2001 From: Frank Hossfeld Date: Tue, 11 May 2021 21:12:41 +0200 Subject: [PATCH] #192 - Possibility to reset URL (delete parameters from URL) -Done (#193) * initial work for #192 * #192 - Possibility to reset URL (delete parameters from URL) - Done --- .../core/web/client/NaluPluginCoreWeb.java | 21 +- .../generator/ApplicationGenerator.java | 13 ++ .../nalu/processor/model/MetaModel.java | 12 + .../scanner/ApplicationAnnotationScanner.java | 1 + ...ationOkWithLoaderAsInnerInterfaceImpl.java | 11 + ...ApplicationAnnotationOkWithLoaderImpl.java | 9 +- ...notationOkWithLoaderAndPostLoaderImpl.java | 7 +- ...ationOkWithLoaderAsInnerInterfaceImpl.java | 7 +- ...icationAnnotationOkWithPostLoaderImpl.java | 7 +- ...licationAnnotationOkWithoutLoaderImpl.java | 7 +- .../MyApplicationImpl.java | 7 +- .../ApplicationWithComposite01Impl.java | 7 +- .../ApplicationWithComposite02Impl.java | 7 +- .../ApplicationWithComposite03Impl.java | 7 +- .../ApplicationWithComposite04Impl.java | 7 +- .../ApplicationWithComposite05Impl.java | 7 +- .../ApplicationWithComposite06Impl.java | 7 +- .../ApplicationWithComposite07Impl.java | 7 +- .../ApplicationWithComposite08Impl.java | 9 +- .../startRouteOK/StartRouteOKImpl.java | 5 + .../GenerateWithIsComponentCreatorImpl.java | 7 +- ...GenerateWithoutIsComponentCreatorImpl.java | 7 +- .../ErrorPopUpAnnotationOkImpl.java | 7 +- .../LoggerAnnotationOk01Impl.java | 7 +- .../LoggerAnnotationOk02Impl.java | 7 +- .../ApplicationWithTrackerImpl.java | 7 +- .../VersionAnnotationImpl.java | 5 + .../VersionAnnotationImpl.java | 7 +- .../application/annotation/Application.java | 12 +- .../nalu/client/internal/PropertyFactory.java | 17 +- .../application/AbstractApplication.java | 5 +- .../client/internal/route/AbstractRouter.java | 6 +- .../client/internal/route/RouterImpl.java | 6 +- .../github/nalukit/nalu/client/NaluTest.java | 22 +- .../nalukit/nalu/client/RouterImplTest.java | 1 + .../nalukit/nalu/client/RouterUtilsTest.java | 110 ++++++--- .../internal/route/RouteParserTest.java | 3 +- .../validation/RouteValidationTest.java | 220 ++++++++++++------ .../client/NaluSimpleApplicationImpl.java | 5 + .../client/NaluSimpleApplicationImpl.java | 7 +- 40 files changed, 478 insertions(+), 155 deletions(-) diff --git a/nalu-plugin-core-web/src/main/java/com/github/nalukit/nalu/plugin/core/web/client/NaluPluginCoreWeb.java b/nalu-plugin-core-web/src/main/java/com/github/nalukit/nalu/plugin/core/web/client/NaluPluginCoreWeb.java index ac82acb50..939e2e793 100644 --- a/nalu-plugin-core-web/src/main/java/com/github/nalukit/nalu/plugin/core/web/client/NaluPluginCoreWeb.java +++ b/nalu-plugin-core-web/src/main/java/com/github/nalukit/nalu/plugin/core/web/client/NaluPluginCoreWeb.java @@ -26,6 +26,7 @@ import elemental2.dom.PopStateEvent; import jsinterop.base.Js; +import javax.naming.spi.DirObjectFactory; import java.util.*; public class NaluPluginCoreWeb { @@ -79,6 +80,7 @@ public static void getContextPath(ShellConfiguration shellConfiguration) { @SuppressWarnings("StringSplitter") public static NaluStartModel getNaluStartModel() { + Js.debugger(); Location location = Js.uncheckedCast(DomGlobal.location); Map queryParameters = new HashMap<>(); String search = location.search; @@ -127,8 +129,23 @@ public static NaluStartModel getNaluStartModel() { } else { startRoute = ""; } - } return new NaluStartModel(startRoute, - queryParameters); + } + + // in case we need to remove the parameter, update histry ... + if (PropertyFactory.get().isRemoveUrlParameterAtStart()) { + String href = location.href; + String newUrl = ""; + if (href.contains("?")) { + newUrl = href.substring(0, href.indexOf("?")); + if (startRoute.length() > 0) { + newUrl = newUrl + "#" + startRoute; + DomGlobal.window.history.replaceState(newUrl, DomGlobal.document.title, newUrl); + } + } + } + + return new NaluStartModel(startRoute, + queryParameters); } private static String getHashValue(String hash) { diff --git a/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/generator/ApplicationGenerator.java b/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/generator/ApplicationGenerator.java index 1e1eeefaa..b4dee1235 100644 --- a/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/generator/ApplicationGenerator.java +++ b/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/generator/ApplicationGenerator.java @@ -280,6 +280,8 @@ public void generate(MetaModel metaModel) metaModel); generateIsStayOnSide(typeSpec, metaModel); + generateIsRemoveUrlParameterAtStart(typeSpec, + metaModel); JavaFile javaFile = JavaFile.builder(metaModel.getGenerateToPackage(), typeSpec.build()) @@ -371,6 +373,17 @@ private void generateIsStayOnSide(TypeSpec.Builder typeSpec, .build()); } + private void generateIsRemoveUrlParameterAtStart(TypeSpec.Builder typeSpec, + MetaModel metaModel) { + typeSpec.addMethod(MethodSpec.methodBuilder("isRemoveUrlParameterAtStart") + .addAnnotation(Override.class) + .addModifiers(Modifier.PUBLIC) + .returns(boolean.class) + .addStatement("return $L", + metaModel.isRemoveUrlParameterAtStart() ? "true" : "false") + .build()); + } + public static class Builder { ProcessingEnvironment processingEnvironment; diff --git a/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/model/MetaModel.java b/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/model/MetaModel.java index 27dd961ad..b63998db6 100644 --- a/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/model/MetaModel.java +++ b/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/model/MetaModel.java @@ -66,6 +66,9 @@ public class MetaModel { /* does the context extends */ /* AbstractModuleContext? */ private boolean extendingIsModuleContext; + /* do we have to remove the URL parameter */ + /* from the URL */ + private boolean removeUrlParameterAtStart; public MetaModel() { this.modules = new ArrayList<>(); @@ -80,6 +83,7 @@ public MetaModel() { this.applicationVersion = "APPLCIATIOPN-VERSION-NOT-AVAILABLE"; this.extendingIsModuleContext = false; + this.removeUrlParameterAtStart = false; } public ModuleModel getModuleModel() { @@ -336,4 +340,12 @@ public String getIllegalRouteTarget() { public void setIllegalRouteTarget(String illegalRouteTarget) { this.illegalRouteTarget = illegalRouteTarget; } + + public boolean isRemoveUrlParameterAtStart() { + return removeUrlParameterAtStart; + } + + public void setRemoveUrlParameterAtStart(boolean removeUrlParameterAtStart) { + this.removeUrlParameterAtStart = removeUrlParameterAtStart; + } } diff --git a/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/scanner/ApplicationAnnotationScanner.java b/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/scanner/ApplicationAnnotationScanner.java index 72e155023..a71e47d58 100644 --- a/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/scanner/ApplicationAnnotationScanner.java +++ b/nalu-processor/src/main/java/com/github/nalukit/nalu/processor/scanner/ApplicationAnnotationScanner.java @@ -79,6 +79,7 @@ public void scan() } metaModel.setStartRoute(applicationAnnotation.startRoute()); metaModel.setIllegalRouteTarget(applicationAnnotation.illegalRouteTarget()); + metaModel.setRemoveUrlParameterAtStart(applicationAnnotation.removeUrlParameterAtStart()); metaModel.setUsingHash(applicationAnnotation.useHash()); metaModel.setUsingColonForParametersInUrl(applicationAnnotation.useColonForParametersInUrl()); metaModel.setStayOnSide(applicationAnnotation.stayOnSite()); diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java index 557930280..bad4ee3c7 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java @@ -142,4 +142,15 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } + + @Override + public boolean isStayOnSide() { + return false; + } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } + } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoader/ApplicationAnnotationOkWithLoaderImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoader/ApplicationAnnotationOkWithLoaderImpl.java index 30a83bb1d..3b161dd52 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoader/ApplicationAnnotationOkWithLoaderImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoader/ApplicationAnnotationOkWithLoaderImpl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } -} + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } + } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAndPostLoader/ApplicationAnnotationOkWithLoaderAndPostLoaderImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAndPostLoader/ApplicationAnnotationOkWithLoaderAndPostLoaderImpl.java index 73c2865fe..d66f4756e 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAndPostLoader/ApplicationAnnotationOkWithLoaderAndPostLoaderImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAndPostLoader/ApplicationAnnotationOkWithLoaderAndPostLoaderImpl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java index e654d672f..ec2d2f28e 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithLoaderAsInnerInterface/ApplicationAnnotationOkWithLoaderAsInnerInterfaceImpl.java @@ -140,9 +140,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithPostLoader/ApplicationAnnotationOkWithPostLoaderImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithPostLoader/ApplicationAnnotationOkWithPostLoaderImpl.java index 9419b5ebe..f4a611c8e 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithPostLoader/ApplicationAnnotationOkWithPostLoaderImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithPostLoader/ApplicationAnnotationOkWithPostLoaderImpl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoader/ApplicationAnnotationOkWithoutLoaderImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoader/ApplicationAnnotationOkWithoutLoaderImpl.java index e1422d4c8..42db7ef91 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoader/ApplicationAnnotationOkWithoutLoaderImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoader/ApplicationAnnotationOkWithoutLoaderImpl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoaderAsInnerInterface/MyApplicationImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoaderAsInnerInterface/MyApplicationImpl.java index 1dc60b634..909883c66 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoaderAsInnerInterface/MyApplicationImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationAnnotationOkWithoutLoaderAsInnerInterface/MyApplicationImpl.java @@ -140,9 +140,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite01/ApplicationWithComposite01Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite01/ApplicationWithComposite01Impl.java index bbbef52c9..5f707fe50 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite01/ApplicationWithComposite01Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite01/ApplicationWithComposite01Impl.java @@ -145,9 +145,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite02/ApplicationWithComposite02Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite02/ApplicationWithComposite02Impl.java index a38a6a183..29536b196 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite02/ApplicationWithComposite02Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite02/ApplicationWithComposite02Impl.java @@ -148,9 +148,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite03/ApplicationWithComposite03Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite03/ApplicationWithComposite03Impl.java index 1e9689412..86ac83b23 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite03/ApplicationWithComposite03Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite03/ApplicationWithComposite03Impl.java @@ -150,9 +150,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite04/ApplicationWithComposite04Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite04/ApplicationWithComposite04Impl.java index 9567463f3..382b03be5 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite04/ApplicationWithComposite04Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite04/ApplicationWithComposite04Impl.java @@ -154,9 +154,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } \ No newline at end of file diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite05/ApplicationWithComposite05Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite05/ApplicationWithComposite05Impl.java index 877ec29fb..b0cfdcc68 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite05/ApplicationWithComposite05Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite05/ApplicationWithComposite05Impl.java @@ -151,9 +151,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite06/ApplicationWithComposite06Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite06/ApplicationWithComposite06Impl.java index ebb4dada3..4981bd276 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite06/ApplicationWithComposite06Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite06/ApplicationWithComposite06Impl.java @@ -159,10 +159,15 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite07/ApplicationWithComposite07Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite07/ApplicationWithComposite07Impl.java index 9f744f713..152e46969 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite07/ApplicationWithComposite07Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite07/ApplicationWithComposite07Impl.java @@ -167,9 +167,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite08/ApplicationWithComposite08Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite08/ApplicationWithComposite08Impl.java index d4ed85f36..898b317e8 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite08/ApplicationWithComposite08Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/applicationWithComposite08/ApplicationWithComposite08Impl.java @@ -213,7 +213,12 @@ public boolean isStayOnSide() { } @Override - public PropertyFactory.ErrorHandlingMethod getErrorHandlingMethod() { - return PropertyFactory.ErrorHandlingMethod.ROUTING; + public boolean isStayOnSide() { + return false; + } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/startRouteOK/StartRouteOKImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/startRouteOK/StartRouteOKImpl.java index 439f026bb..06acc6781 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/startRouteOK/StartRouteOKImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/common/application/startRouteOK/StartRouteOKImpl.java @@ -146,4 +146,9 @@ public boolean isUsingColonForParametersInUrl() { public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithIsComponentCreator/GenerateWithIsComponentCreatorImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithIsComponentCreator/GenerateWithIsComponentCreatorImpl.java index b346e0a12..8fbdfeab0 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithIsComponentCreator/GenerateWithIsComponentCreatorImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithIsComponentCreator/GenerateWithIsComponentCreatorImpl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithoutIsComponentCreator/GenerateWithoutIsComponentCreatorImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithoutIsComponentCreator/GenerateWithoutIsComponentCreatorImpl.java index 083d26e74..4a9b81412 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithoutIsComponentCreator/GenerateWithoutIsComponentCreatorImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/controller/generateWithoutIsComponentCreator/GenerateWithoutIsComponentCreatorImpl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/errorPopUpController/errorPopUpAnnotationOk/ErrorPopUpAnnotationOkImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/errorPopUpController/errorPopUpAnnotationOk/ErrorPopUpAnnotationOkImpl.java index d3a67da2c..687fc935e 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/errorPopUpController/errorPopUpAnnotationOk/ErrorPopUpAnnotationOkImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/errorPopUpController/errorPopUpAnnotationOk/ErrorPopUpAnnotationOkImpl.java @@ -154,9 +154,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk01/LoggerAnnotationOk01Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk01/LoggerAnnotationOk01Impl.java index 524558b03..8eb784002 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk01/LoggerAnnotationOk01Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk01/LoggerAnnotationOk01Impl.java @@ -146,9 +146,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk02/LoggerAnnotationOk02Impl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk02/LoggerAnnotationOk02Impl.java index 17d655b52..6c79ed668 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk02/LoggerAnnotationOk02Impl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/logger/loggerAnnotationOk02/LoggerAnnotationOk02Impl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/tracker/applicationWithTracker/ApplicationWithTrackerImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/tracker/applicationWithTracker/ApplicationWithTrackerImpl.java index c89bce284..ad74fc6ef 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/tracker/applicationWithTracker/ApplicationWithTrackerImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/tracker/applicationWithTracker/ApplicationWithTrackerImpl.java @@ -144,9 +144,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionExtendingIsModuleContest/VersionAnnotationImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionExtendingIsModuleContest/VersionAnnotationImpl.java index 4ab78ce16..6ca76c48c 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionExtendingIsModuleContest/VersionAnnotationImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionExtendingIsModuleContest/VersionAnnotationImpl.java @@ -142,4 +142,9 @@ public boolean isUsingColonForParametersInUrl() { public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionNotExtendingIsModuleContest/VersionAnnotationImpl.java b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionNotExtendingIsModuleContest/VersionAnnotationImpl.java index 1be5203f7..5add05182 100644 --- a/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionNotExtendingIsModuleContest/VersionAnnotationImpl.java +++ b/nalu-processor/src/test/resources/com/github/nalukit/nalu/processor/version/applicationWithVersionNotExtendingIsModuleContest/VersionAnnotationImpl.java @@ -139,9 +139,14 @@ public boolean isUsingHash() { public boolean isUsingColonForParametersInUrl() { return false; } - + @Override public boolean isStayOnSide() { return false; } + + @Override + public boolean isRemoveUrlParameterAtStart() { + return false; + } } diff --git a/nalu/src/main/java/com/github/nalukit/nalu/client/application/annotation/Application.java b/nalu/src/main/java/com/github/nalukit/nalu/client/application/annotation/Application.java index a21f326bd..a69b7b749 100644 --- a/nalu/src/main/java/com/github/nalukit/nalu/client/application/annotation/Application.java +++ b/nalu/src/main/java/com/github/nalukit/nalu/client/application/annotation/Application.java @@ -155,5 +155,15 @@ * @return empty String (default) or the route to go to in case the route is illegal. */ String illegalRouteTarget() default ""; - + + /** + * This attribute will tell Nalu to remove all URL-parameter from the URL at start. + *
+ * Defaul is false + * + * + * @return true -> remove URL-parameter at application start + */ + boolean removeUrlParameterAtStart() default false; + } diff --git a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/PropertyFactory.java b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/PropertyFactory.java index b0889601a..f069e9942 100644 --- a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/PropertyFactory.java +++ b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/PropertyFactory.java @@ -20,6 +20,9 @@ public class PropertyFactory { private boolean usingColonForParametersInUrl; // should the application replace history (stay on side) in case of empty hash private boolean stayOnSide; + /* do we have to remove the URL parameter */ + /* from the URL */ + private boolean removeUrlParameterAtStart; private PropertyFactory() { } @@ -103,6 +106,15 @@ public String getIllegalRouteTarget() { return this.illegalRouteTarget; } + /** + * Do we need to remove the URL parameter? + * + * @return true -> remove parameter from URL + */ + public boolean isRemoveUrlParameterAtStart() { + return removeUrlParameterAtStart; + } + /** * Do NOT call this method! * @@ -111,13 +123,15 @@ public String getIllegalRouteTarget() { * @param usingHash Will Nalu use a hash for Navigation? * @param usingColonForParametersInUrl Will Nalu use colons to mark parameters inside the url? * @param stayOnSide tells Nalu how do ahndle empty hash + * @param removeUrlParameterAtStart tells Nalu to remove URL para,eters or not */ public void register(String startRoute, String illegalRouteTarget, boolean hasHistory, boolean usingHash, boolean usingColonForParametersInUrl, - boolean stayOnSide) { + boolean stayOnSide, + boolean removeUrlParameterAtStart) { if (startRoute.startsWith("/")) { this.startRoute = startRoute.substring(1); } else { @@ -128,6 +142,7 @@ public void register(String startRoute, this.usingHash = usingHash; this.usingColonForParametersInUrl = usingColonForParametersInUrl; this.stayOnSide = stayOnSide; + this.removeUrlParameterAtStart = removeUrlParameterAtStart; } } diff --git a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/application/AbstractApplication.java b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/application/AbstractApplication.java index cab421cf7..5fa2f7cdb 100644 --- a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/application/AbstractApplication.java +++ b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/application/AbstractApplication.java @@ -141,7 +141,8 @@ public void run(IsNaluProcessorPlugin plugin) { this.hasHistory(), this.isUsingHash(), this.isUsingColonForParametersInUrl(), - this.isStayOnSide()); + this.isStayOnSide(), + this.isRemoveUrlParameterAtStart()); this.router.setAlwaysLoadComposite(this.alwaysLoadComposite); this.router.setAlwaysShowPopUp(this.alwaysShowPopUp); this.router.setEventBus(this.eventBus); @@ -204,6 +205,8 @@ public void run(IsNaluProcessorPlugin plugin) { protected abstract boolean isStayOnSide(); + protected abstract boolean isRemoveUrlParameterAtStart(); + protected abstract void loadShellFactory(); protected abstract void loadBlockControllerFactory(); diff --git a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/AbstractRouter.java b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/AbstractRouter.java index 1671cbbc6..db6a76108 100644 --- a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/AbstractRouter.java +++ b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/AbstractRouter.java @@ -85,7 +85,8 @@ abstract class AbstractRouter boolean hasHistory, boolean usingHash, boolean usingColonForParametersInUrl, - boolean stayOnSite) { + boolean stayOnSite, + boolean removeUrlParameterAtStart) { // save the composite configuration reference this.compositeControllerReferences = compositeControllerReferences; // save the shell configuration reference @@ -106,7 +107,8 @@ abstract class AbstractRouter hasHistory, usingHash, usingColonForParametersInUrl, - stayOnSite); + stayOnSite, + removeUrlParameterAtStart); } /** diff --git a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/RouterImpl.java b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/RouterImpl.java index b2f428db5..d12047c1a 100644 --- a/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/RouterImpl.java +++ b/nalu/src/main/java/com/github/nalukit/nalu/client/internal/route/RouterImpl.java @@ -35,7 +35,8 @@ public RouterImpl(IsNaluProcessorPlugin plugin, boolean hasHistory, boolean usingHash, boolean usingColonForParametersInUrl, - boolean stayOnSide) { + boolean stayOnSide, + boolean removeUrlParameterAtStart) { super(compositeControllerReferences, shellConfiguration, routerConfiguration, @@ -46,7 +47,8 @@ public RouterImpl(IsNaluProcessorPlugin plugin, hasHistory, usingHash, usingColonForParametersInUrl, - stayOnSide); + stayOnSide, + removeUrlParameterAtStart); this.plugin.register(hash -> RouterImpl.super.handleRouting(hash, false)); } diff --git a/nalu/src/test/java/com/github/nalukit/nalu/client/NaluTest.java b/nalu/src/test/java/com/github/nalukit/nalu/client/NaluTest.java index 3d4d7601f..00303a53a 100644 --- a/nalu/src/test/java/com/github/nalukit/nalu/client/NaluTest.java +++ b/nalu/src/test/java/com/github/nalukit/nalu/client/NaluTest.java @@ -5,13 +5,13 @@ import org.junit.jupiter.api.Test; public class NaluTest { - + @Test void getVersion() { Assertions.assertEquals("HEAD-SNAPSHOT", Nalu.getVersion()); } - + @Test void hasHistory01() { PropertyFactory.get() @@ -20,10 +20,11 @@ void hasHistory01() { true, true, true, + false, false); Assertions.assertTrue(Nalu.hasHistory()); } - + @Test void hasHistory02() { PropertyFactory.get() @@ -32,10 +33,11 @@ void hasHistory02() { false, true, true, + false, false); Assertions.assertFalse(Nalu.hasHistory()); } - + @Test void isUsingHash01() { PropertyFactory.get() @@ -44,10 +46,11 @@ void isUsingHash01() { true, true, true, + false, false); Assertions.assertTrue(Nalu.isUsingHash()); } - + @Test void isUsingHash02() { PropertyFactory.get() @@ -56,10 +59,11 @@ void isUsingHash02() { true, false, true, + false, false); Assertions.assertFalse(Nalu.isUsingHash()); } - + @Test void isUsingColonForParametersInUrl01() { PropertyFactory.get() @@ -68,10 +72,11 @@ void isUsingColonForParametersInUrl01() { true, true, true, + false, false); Assertions.assertTrue(Nalu.isUsingColonForParametersInUrl()); } - + @Test void isUsingColonForParametersInUrl02() { PropertyFactory.get() @@ -80,8 +85,9 @@ void isUsingColonForParametersInUrl02() { true, true, false, + false, false); Assertions.assertFalse(Nalu.isUsingColonForParametersInUrl()); } - + } \ No newline at end of file diff --git a/nalu/src/test/java/com/github/nalukit/nalu/client/RouterImplTest.java b/nalu/src/test/java/com/github/nalukit/nalu/client/RouterImplTest.java index c21d5fc60..12bd4ae72 100644 --- a/nalu/src/test/java/com/github/nalukit/nalu/client/RouterImplTest.java +++ b/nalu/src/test/java/com/github/nalukit/nalu/client/RouterImplTest.java @@ -33,6 +33,7 @@ void before() { true, true, false, + false, false); RouteParser.get() .setEventBus(new SimpleEventBus()); diff --git a/nalu/src/test/java/com/github/nalukit/nalu/client/RouterUtilsTest.java b/nalu/src/test/java/com/github/nalukit/nalu/client/RouterUtilsTest.java index 980fafe39..15edc4610 100644 --- a/nalu/src/test/java/com/github/nalukit/nalu/client/RouterUtilsTest.java +++ b/nalu/src/test/java/com/github/nalukit/nalu/client/RouterUtilsTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; public class RouterUtilsTest { - + @Test void testMatch01Ok() { String route = "/app/person/3/edit"; @@ -16,11 +16,12 @@ void testMatch01Ok() { true, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch02Fail() { String route = "/app/person/3/edit"; @@ -31,11 +32,12 @@ void testMatch02Fail() { true, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch03Fail() { String route = "/app/person/3/edit"; @@ -46,11 +48,12 @@ void testMatch03Fail() { true, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch04Fail() { String route = "/app/person/3/edit"; @@ -61,11 +64,12 @@ void testMatch04Fail() { true, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch05Ok() { String route = "/app/person/3/edit"; @@ -76,11 +80,12 @@ void testMatch05Ok() { true, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch06Fail() { String route = "/"; @@ -91,11 +96,12 @@ void testMatch06Fail() { true, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch07Ok() { String route = "/"; @@ -106,11 +112,12 @@ void testMatch07Ok() { true, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch08Ok() { String route = "/"; @@ -121,11 +128,12 @@ void testMatch08Ok() { true, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch09Fail() { String route = "/app/person/search"; @@ -136,11 +144,12 @@ void testMatch09Fail() { true, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch51Ok() { String route = "/app/person/:3/edit"; @@ -151,11 +160,12 @@ void testMatch51Ok() { true, true, true, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch52Ok() { String route = "/app/person/:3/edit"; @@ -166,11 +176,12 @@ void testMatch52Ok() { true, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch59FailOk() { String route = "/app/person/:3/edit"; @@ -181,12 +192,13 @@ void testMatch59FailOk() { true, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with, true)); } - + @Test void testMatch53Fail() { String route = "/app/person/:3/edit"; @@ -197,11 +209,12 @@ void testMatch53Fail() { true, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch54Fail() { String route = "/app/person/:3/edit"; @@ -212,11 +225,12 @@ void testMatch54Fail() { true, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch55Fail() { String route = "/app/person/:3/edit"; @@ -227,11 +241,12 @@ void testMatch55Fail() { true, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch56Fail() { String route = "/"; @@ -242,11 +257,12 @@ void testMatch56Fail() { true, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch57Ok() { String route = "/"; @@ -257,11 +273,12 @@ void testMatch57Ok() { true, true, true, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch58Ok() { String route = "/:"; @@ -272,11 +289,12 @@ void testMatch58Ok() { true, true, true, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch101Ok() { String route = "/app/person/3/edit"; @@ -287,11 +305,12 @@ void testMatch101Ok() { false, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch102Fail() { String route = "/app/person/3/edit"; @@ -302,11 +321,12 @@ void testMatch102Fail() { false, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch103Fail() { String route = "/app/person/3/edit"; @@ -317,11 +337,12 @@ void testMatch103Fail() { false, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch104Fail() { String route = "/app/person/3/edit"; @@ -332,11 +353,12 @@ void testMatch104Fail() { false, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch105Ok() { String route = "/app/person/3/edit"; @@ -347,11 +369,12 @@ void testMatch105Ok() { false, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch106Fail() { String route = "/"; @@ -362,11 +385,12 @@ void testMatch106Fail() { false, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch107Ok() { String route = "/"; @@ -377,11 +401,12 @@ void testMatch107Ok() { false, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch108Ok() { String route = "/"; @@ -392,11 +417,12 @@ void testMatch108Ok() { false, true, false, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch109Fail() { String route = "/app/person/search"; @@ -407,11 +433,12 @@ void testMatch109Fail() { false, true, false, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch151Ok() { String route = "/app/person/:3/edit"; @@ -422,11 +449,12 @@ void testMatch151Ok() { false, true, true, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch152Ok() { String route = "/app/person/:3/edit"; @@ -437,11 +465,12 @@ void testMatch152Ok() { false, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch159FailOk() { String route = "/app/person/:3/edit"; @@ -452,12 +481,13 @@ void testMatch159FailOk() { false, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with, true)); } - + @Test void testMatch153Fail() { String route = "/app/person/:3/edit"; @@ -468,11 +498,12 @@ void testMatch153Fail() { false, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch154Fail() { String route = "/app/person/:3/edit"; @@ -483,11 +514,12 @@ void testMatch154Fail() { false, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch155Fail() { String route = "/app/person/:3/edit"; @@ -498,11 +530,12 @@ void testMatch155Fail() { false, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch156Fail() { String route = "/"; @@ -513,11 +546,12 @@ void testMatch156Fail() { false, true, true, + false, false); Assertions.assertFalse(Nalu.match(route, with)); } - + @Test void testMatch157Ok() { String route = "/"; @@ -528,11 +562,12 @@ void testMatch157Ok() { false, true, true, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + @Test void testMatch158Ok() { String route = "/:"; @@ -543,9 +578,10 @@ void testMatch158Ok() { false, true, true, + false, false); Assertions.assertTrue(Nalu.match(route, with)); } - + } \ No newline at end of file diff --git a/nalu/src/test/java/com/github/nalukit/nalu/client/internal/route/RouteParserTest.java b/nalu/src/test/java/com/github/nalukit/nalu/client/internal/route/RouteParserTest.java index a6755fc9e..55fa5dad5 100644 --- a/nalu/src/test/java/com/github/nalukit/nalu/client/internal/route/RouteParserTest.java +++ b/nalu/src/test/java/com/github/nalukit/nalu/client/internal/route/RouteParserTest.java @@ -75,7 +75,8 @@ void setUp() { true, true, false, - true); + true, + false); } diff --git a/nalu/src/test/java/com/github/nalukit/nalu/client/internal/validation/RouteValidationTest.java b/nalu/src/test/java/com/github/nalukit/nalu/client/internal/validation/RouteValidationTest.java index 354b57d4a..8fb330324 100644 --- a/nalu/src/test/java/com/github/nalukit/nalu/client/internal/validation/RouteValidationTest.java +++ b/nalu/src/test/java/com/github/nalukit/nalu/client/internal/validation/RouteValidationTest.java @@ -29,16 +29,16 @@ import java.util.Collections; public class RouteValidationTest { - + private ShellConfiguration shellConfiguration; - + private RouterConfiguration routerConfiguration; - + @BeforeEach void setUp() { this.routerConfiguration = new RouterConfiguration(); this.shellConfiguration = new ShellConfiguration(); - + this.routerConfiguration.getRouters() .add(new RouteConfig("/application/person/list/*/*", Arrays.asList("name", @@ -76,7 +76,7 @@ void setUp() { Collections.singletonList("id"), "content", "com.github.nalukit.example.nalu.simpleapplication.client.ui.content.detail.DetailController")); - + this.shellConfiguration.getShells() .add(new ShellConfig("/error", "com.github.nalukit.example.nalu.simpleapplication.client.ui.shell.error.ErrorShell")); @@ -87,7 +87,7 @@ void setUp() { .add(new ShellConfig("/login", "com.github.nalukit.example.nalu.simpleapplication.client.ui.shell.login.LoginShell")); } - + @Test void validateStartRoute01() { PropertyFactory.get() @@ -96,12 +96,13 @@ void validateStartRoute01() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application")); } - + @Test void validateStartRoute02() { PropertyFactory.get() @@ -110,12 +111,13 @@ void validateStartRoute02() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/show")); } - + @Test void validateStartRoute03() { PropertyFactory.get() @@ -124,12 +126,13 @@ void validateStartRoute03() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute04() { PropertyFactory.get() @@ -138,12 +141,13 @@ void validateStartRoute04() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + @Test void validateStartRoute05() { PropertyFactory.get() @@ -152,12 +156,13 @@ void validateStartRoute05() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell")); } - + @Test void validateStartRoute06() { PropertyFactory.get() @@ -166,12 +171,13 @@ void validateStartRoute06() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01/parameter02")); } - + @Test void validateStartRoute07() { PropertyFactory.get() @@ -180,12 +186,13 @@ void validateStartRoute07() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/show")); } - + @Test void validateStartRoute08() { PropertyFactory.get() @@ -194,12 +201,13 @@ void validateStartRoute08() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail")); } - + @Test void validateStartRoute09() { PropertyFactory.get() @@ -208,12 +216,13 @@ void validateStartRoute09() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/parameter01")); } - + @Test void validateStartRoute00() { PropertyFactory.get() @@ -222,12 +231,13 @@ void validateStartRoute00() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/parameter01/parameter02")); } - + @Test void validateStartRoute10() { PropertyFactory.get() @@ -236,12 +246,13 @@ void validateStartRoute10() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/showa")); } - + @Test void validateStartRoute11() { PropertyFactory.get() @@ -250,12 +261,13 @@ void validateStartRoute11() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute12() { PropertyFactory.get() @@ -264,12 +276,13 @@ void validateStartRoute12() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + @Test void validateStartRoute13() { PropertyFactory.get() @@ -278,12 +291,13 @@ void validateStartRoute13() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01/parameter02")); } - + @Test void validateStartRoute14() { PropertyFactory.get() @@ -292,12 +306,13 @@ void validateStartRoute14() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/")); } - + @Test void validateStartRoute15() { PropertyFactory.get() @@ -306,12 +321,13 @@ void validateStartRoute15() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + @Test void validateStartRoute16() { PropertyFactory.get() @@ -320,14 +336,15 @@ void validateStartRoute16() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + // - useColon = true - + @Test void validateStartRoute51() { PropertyFactory.get() @@ -336,12 +353,13 @@ void validateStartRoute51() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application")); } - + @Test void validateStartRoute52() { PropertyFactory.get() @@ -350,12 +368,13 @@ void validateStartRoute52() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/show")); } - + @Test void validateStartRoute53() { PropertyFactory.get() @@ -364,12 +383,13 @@ void validateStartRoute53() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute54() { PropertyFactory.get() @@ -378,12 +398,13 @@ void validateStartRoute54() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + @Test void validateStartRoute55() { PropertyFactory.get() @@ -392,12 +413,13 @@ void validateStartRoute55() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell")); } - + @Test void validateStartRoute56() { PropertyFactory.get() @@ -406,12 +428,13 @@ void validateStartRoute56() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01/:parameter02")); } - + @Test void validateStartRoute57() { PropertyFactory.get() @@ -420,12 +443,13 @@ void validateStartRoute57() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/show")); } - + @Test void validateStartRoute58() { PropertyFactory.get() @@ -434,12 +458,13 @@ void validateStartRoute58() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail")); } - + @Test void validateStartRoute59() { PropertyFactory.get() @@ -448,12 +473,13 @@ void validateStartRoute59() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/:parameter01")); } - + @Test void validateStartRoute50() { PropertyFactory.get() @@ -462,12 +488,13 @@ void validateStartRoute50() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/:parameter01/:parameter02")); } - + @Test void validateStartRoute60() { PropertyFactory.get() @@ -476,12 +503,13 @@ void validateStartRoute60() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/showa")); } - + @Test void validateStartRoute61() { PropertyFactory.get() @@ -490,12 +518,13 @@ void validateStartRoute61() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute62() { PropertyFactory.get() @@ -504,12 +533,13 @@ void validateStartRoute62() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + @Test void validateStartRoute63() { PropertyFactory.get() @@ -518,12 +548,13 @@ void validateStartRoute63() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01/:parameter02")); } - + @Test void validateStartRoute64() { PropertyFactory.get() @@ -532,12 +563,13 @@ void validateStartRoute64() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/")); } - + @Test void validateStartRoute65() { PropertyFactory.get() @@ -546,12 +578,13 @@ void validateStartRoute65() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + @Test void validateStartRoute66() { PropertyFactory.get() @@ -560,12 +593,13 @@ void validateStartRoute66() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + @Test void validateStartRoute101() { PropertyFactory.get() @@ -574,12 +608,13 @@ void validateStartRoute101() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application")); } - + @Test void validateStartRoute102() { PropertyFactory.get() @@ -588,12 +623,13 @@ void validateStartRoute102() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/show")); } - + @Test void validateStartRoute103() { PropertyFactory.get() @@ -602,12 +638,13 @@ void validateStartRoute103() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute104() { PropertyFactory.get() @@ -616,12 +653,13 @@ void validateStartRoute104() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + @Test void validateStartRoute105() { PropertyFactory.get() @@ -630,12 +668,13 @@ void validateStartRoute105() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell")); } - + @Test void validateStartRoute106() { PropertyFactory.get() @@ -644,12 +683,13 @@ void validateStartRoute106() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01/parameter02")); } - + @Test void validateStartRoute107() { PropertyFactory.get() @@ -658,12 +698,13 @@ void validateStartRoute107() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/show")); } - + @Test void validateStartRoute108() { PropertyFactory.get() @@ -672,12 +713,13 @@ void validateStartRoute108() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail")); } - + @Test void validateStartRoute109() { PropertyFactory.get() @@ -686,12 +728,13 @@ void validateStartRoute109() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/parameter01")); } - + @Test void validateStartRoute100() { PropertyFactory.get() @@ -700,12 +743,13 @@ void validateStartRoute100() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/parameter01/parameter02")); } - + @Test void validateStartRoute110() { PropertyFactory.get() @@ -714,12 +758,13 @@ void validateStartRoute110() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/showa")); } - + @Test void validateStartRoute111() { PropertyFactory.get() @@ -728,12 +773,13 @@ void validateStartRoute111() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute112() { PropertyFactory.get() @@ -742,12 +788,13 @@ void validateStartRoute112() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + @Test void validateStartRoute113() { PropertyFactory.get() @@ -756,12 +803,13 @@ void validateStartRoute113() { true, true, false, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01/parameter02")); } - + @Test void validateStartRoute114() { PropertyFactory.get() @@ -770,12 +818,13 @@ void validateStartRoute114() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/")); } - + @Test void validateStartRoute115() { PropertyFactory.get() @@ -784,12 +833,13 @@ void validateStartRoute115() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + @Test void validateStartRoute116() { PropertyFactory.get() @@ -798,14 +848,15 @@ void validateStartRoute116() { true, true, false, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/parameter01")); } - + // - useColon = true - + @Test void validateStartRoute151() { PropertyFactory.get() @@ -814,12 +865,13 @@ void validateStartRoute151() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application")); } - + @Test void validateStartRoute152() { PropertyFactory.get() @@ -828,12 +880,13 @@ void validateStartRoute152() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/show")); } - + @Test void validateStartRoute153() { PropertyFactory.get() @@ -842,12 +895,13 @@ void validateStartRoute153() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute154() { PropertyFactory.get() @@ -856,12 +910,13 @@ void validateStartRoute154() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + @Test void validateStartRoute155() { PropertyFactory.get() @@ -870,12 +925,13 @@ void validateStartRoute155() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell")); } - + @Test void validateStartRoute156() { PropertyFactory.get() @@ -884,12 +940,13 @@ void validateStartRoute156() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01/:parameter02")); } - + @Test void validateStartRoute157() { PropertyFactory.get() @@ -898,12 +955,13 @@ void validateStartRoute157() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/show")); } - + @Test void validateStartRoute158() { PropertyFactory.get() @@ -912,12 +970,13 @@ void validateStartRoute158() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail")); } - + @Test void validateStartRoute159() { PropertyFactory.get() @@ -926,12 +985,13 @@ void validateStartRoute159() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/:parameter01")); } - + @Test void validateStartRoute150() { PropertyFactory.get() @@ -940,12 +1000,13 @@ void validateStartRoute150() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/unknownShell/person/detail/:parameter01/:parameter02")); } - + @Test void validateStartRoute160() { PropertyFactory.get() @@ -954,12 +1015,13 @@ void validateStartRoute160() { true, true, true, + false, false); Assertions.assertFalse(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/error/showa")); } - + @Test void validateStartRoute161() { PropertyFactory.get() @@ -968,12 +1030,13 @@ void validateStartRoute161() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail")); } - + @Test void validateStartRoute162() { PropertyFactory.get() @@ -982,12 +1045,13 @@ void validateStartRoute162() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + @Test void validateStartRoute163() { PropertyFactory.get() @@ -996,12 +1060,13 @@ void validateStartRoute163() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01/:parameter02")); } - + @Test void validateStartRoute164() { PropertyFactory.get() @@ -1010,12 +1075,13 @@ void validateStartRoute164() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/")); } - + @Test void validateStartRoute165() { PropertyFactory.get() @@ -1024,12 +1090,13 @@ void validateStartRoute165() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + @Test void validateStartRoute166() { PropertyFactory.get() @@ -1038,10 +1105,11 @@ void validateStartRoute166() { true, true, true, + false, false); Assertions.assertTrue(RouteValidation.validateStartRoute(this.shellConfiguration, this.routerConfiguration, "/application/person/detail/:parameter01")); } - + } \ No newline at end of file diff --git a/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication01/client/NaluSimpleApplicationImpl.java b/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication01/client/NaluSimpleApplicationImpl.java index 413cbb865..983247bbc 100644 --- a/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication01/client/NaluSimpleApplicationImpl.java +++ b/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication01/client/NaluSimpleApplicationImpl.java @@ -144,6 +144,11 @@ protected boolean isStayOnSide() { return false; } + @Override + protected boolean isRemoveUrlParameterAtStart() { + return false; + } + @Override protected void loadShellFactory() { diff --git a/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication02/client/NaluSimpleApplicationImpl.java b/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication02/client/NaluSimpleApplicationImpl.java index 37ffd09a1..dae603176 100644 --- a/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication02/client/NaluSimpleApplicationImpl.java +++ b/nalu/src/test/java/com/github/nalukit/nalu/simpleapplication02/client/NaluSimpleApplicationImpl.java @@ -145,7 +145,12 @@ protected boolean isUsingColonForParametersInUrl() { protected boolean isStayOnSide() { return false; } - + + @Override + protected boolean isRemoveUrlParameterAtStart() { + return false; + } + @Override protected void loadShellFactory() {