/** * Parse and match the given place-token. * * @param placeToken The place-token. */ RouteMatcher(final String placeToken) { assert placeTokenIsValid(placeToken) : "Place-token should start with a '/' or '!/'"; assert placeToken.indexOf('?') == -1 : "No Query string expected here"; allMatches = new TreeSet<>(); placeParts = StringUtils.splitPreserveAllTokens(placeToken, '/'); for (final String route : allRegisteredPlaceTokens.getAllPlaceTokens()) { final RouteMatch match = matchRoute(route); if (match != null) { allMatches.add(match); } } }
assert routeIsEmpty(route); return new RouteMatch(route, 0, null);
assert routeIsEmpty(route); return new RouteMatch(route, 0, null);
/** * Parse and match the given place-token. * * @param placeToken The place-token. */ RouteMatcher(final String placeToken) { assert placeTokenIsValid(placeToken) : "Place-token should start with a '/' or '!/'"; assert placeToken.indexOf('?') == -1 : "No Query string expected here"; allMatches = new TreeSet<>(); placeParts = StringUtils.splitPreserveAllTokens(placeToken, '/'); for (final String route : allRegisteredPlaceTokens.getAllPlaceTokens()) { final RouteMatch match = matchRoute(route); if (match != null) { allMatches.add(match); } } }
@Override public PlaceRequest toPlaceRequest(final String placeToken) throws TokenFormatException { /* * To support the native GWT history as well as HTML pushstate a slash is added when needed. */ if (!placeTokenIsValid(placeToken)) { return toPlaceRequest("/" + placeToken); } final int split = placeToken.indexOf('?'); final String place = (split == -1) ? placeToken : placeToken.substring(0, split); final String query = (split == -1) ? StringUtils.EMPTY : placeToken.substring(split + 1); final RouteMatcher matcher = new RouteMatcher(place); final RouteMatch match = matcher.allMatches.isEmpty() ? new RouteMatch(place, 0, null) : matcher.allMatches.last(); match.parameters = decodeEmbeddedParams(match.parameters); match.parameters = parseQueryString(query, match.parameters); return new PlaceRequest.Builder().nameToken(match.route).with(match.parameters).build(); }
@Override public PlaceRequest toPlaceRequest(final String placeToken) throws TokenFormatException { /* * To support the native GWT history as well as HTML pushstate a slash is added when needed. */ if (!placeTokenIsValid(placeToken)) { return toPlaceRequest("/" + placeToken); } final int split = placeToken.indexOf('?'); final String place = (split == -1) ? placeToken : placeToken.substring(0, split); final String query = (split == -1) ? StringUtils.EMPTY : placeToken.substring(split + 1); final RouteMatcher matcher = new RouteMatcher(place); final RouteMatch match = matcher.allMatches.isEmpty() ? new RouteMatch(place, 0, null) : matcher.allMatches.last(); match.parameters = decodeEmbeddedParams(match.parameters); match.parameters = parseQueryString(query, match.parameters); return new PlaceRequest.Builder().nameToken(match.route).with(match.parameters).build(); }