private String parseValues(String rawURIPath, Builder<String, String> builder) { final String pageName = getPageName(rawURIPath); if (pageName == null) return null; final URLPattern pattern = getURLPattern(pageName); if (pattern.getParamList().size() == 0) return pageName; final MatchResult mr = pattern.getRegex().exec(rawURIPath); for (int keyIndex = 0; keyIndex < pattern.getParamList().size(); keyIndex++) { builder.put(URLPattern.decodeParsingCharacters(pattern.getParamList().get(keyIndex)), URLPattern .decodeParsingCharacters(mr.getGroup(keyIndex + 1))); } return pageName; }
/** * @return The name of the page to which the given user-entered URL corresponds. */ public String getPageName(String typedURL) { if (typedURL.equals("")) { return this.defaultPageName; } for (final Entry<URLPattern, String> urlMatcher : pageMap.entrySet()) { if (urlMatcher.getKey().matches(typedURL)) { return urlMatcher.getValue(); } } return null; }
/** * Returns the URL path for this HistoryToken, that can be parsed by {@link HistoryTokenFactory#parseURL(String)} * <p> * This URL path includes the application context. */ @Override public String toString() { final String url = pattern.printURL(state); final String context = Navigation.getAppContext(); if (!context.isEmpty() && !url.startsWith("/")) { return context + "/" + url; } else { return context + url; } }
/** * Declares the default page to be matched against the empty string pattern. * @param defaultPage Never null. Must match a page that has already been added with {@link #add(String, String)} */ public void setAsDefaultPage(String defaultPage) { final URLPattern urlPattern = getURLPattern(defaultPage); if (urlPattern == null) throw new IllegalArgumentException("Page " + defaultPage + " must be added to URLPatternMatcher before it can be set as Default Page."); if (urlPattern.getParamList().size() > 0) throw new IllegalArgumentException("Cannot set a default page that has path parameters."); this.defaultPageName = defaultPage; }
private void parseKeyValuePairs(String rawKeyValueString, Builder<String, String> builder) { StringBuilder key = new StringBuilder(); StringBuilder value = new StringBuilder(); // sb is a state cursor in this little parser: it always points to one of the // StringBuilders above; this is the one we're currently accumulating characters into. // you can also check the state of the parser by seeing which StringBuilder sb points at. StringBuilder sb = key; for (int i = 0, n = rawKeyValueString.length(); i < n; i++) { final char ch = rawKeyValueString.charAt(i); if (ch == '&') { builder.put(URLPattern.decodeParsingCharacters(key.toString()), URLPattern.decodeParsingCharacters(value.toString())); key = new StringBuilder(); value = new StringBuilder(); sb = key; } else if (ch == '=') { sb = value; } else { sb.append(ch); } } // we've got a key-value pair that still isn't in the map builder builder.put(URLPattern.decodeParsingCharacters(key.toString()), URLPattern.decodeParsingCharacters(value.toString())); }
return new URLPattern(RegExp.compile(sb.toString()), paramList, urlTemplate);
if (toReplace.contains(key)) { String encodedValue = URLPattern.encodeParsingCharacters(state.get(key).iterator().next()); url = url.replace(toReplace, encodedValue); if (!paramList.contains(pageStateField.getKey())) { urlBuilder.append(URLPattern.encodeParsingCharacters(pageStateField.getKey())); urlBuilder.append('='); urlBuilder.append(URLPattern.encodeParsingCharacters(pageStateField.getValue()));
/** * Declares the default page to be matched against the empty string pattern. * @param defaultPage Never null. Must match a page that has already been added with {@link #add(String, String)} */ public void setAsDefaultPage(String defaultPage) { final URLPattern urlPattern = getURLPattern(defaultPage); if (urlPattern == null) throw new IllegalArgumentException("Page " + defaultPage + " must be added to URLPatternMatcher before it can be set as Default Page."); if (urlPattern.getParamList().size() > 0) throw new IllegalArgumentException("Cannot set a default page that has path parameters."); this.defaultPageName = defaultPage; }
private void parseKeyValuePairs(String rawKeyValueString, Builder<String, String> builder) { StringBuilder key = new StringBuilder(); StringBuilder value = new StringBuilder(); // sb is a state cursor in this little parser: it always points to one of the // StringBuilders above; this is the one we're currently accumulating characters into. // you can also check the state of the parser by seeing which StringBuilder sb points at. StringBuilder sb = key; for (int i = 0, n = rawKeyValueString.length(); i < n; i++) { final char ch = rawKeyValueString.charAt(i); if (ch == '&') { builder.put(URLPattern.decodeParsingCharacters(key.toString()), URLPattern.decodeParsingCharacters(value.toString())); key = new StringBuilder(); value = new StringBuilder(); sb = key; } else if (ch == '=') { sb = value; } else { sb.append(ch); } } // we've got a key-value pair that still isn't in the map builder builder.put(URLPattern.decodeParsingCharacters(key.toString()), URLPattern.decodeParsingCharacters(value.toString())); }
return new URLPattern(RegExp.compile(sb.toString()), paramList, urlTemplate);
if (toReplace.contains(key)) { String encodedValue = URLPattern.encodeParsingCharacters(state.get(key).iterator().next()); url = url.replace(toReplace, encodedValue); if (!paramList.contains(pageStateField.getKey())) { urlBuilder.append(URLPattern.encodeParsingCharacters(pageStateField.getKey())); urlBuilder.append('='); urlBuilder.append(URLPattern.encodeParsingCharacters(pageStateField.getValue()));
private String parseValues(String rawURIPath, Builder<String, String> builder) { final String pageName = getPageName(rawURIPath); if (pageName == null) return null; final URLPattern pattern = getURLPattern(pageName); if (pattern.getParamList().size() == 0) return pageName; final MatchResult mr = pattern.getRegex().exec(rawURIPath); for (int keyIndex = 0; keyIndex < pattern.getParamList().size(); keyIndex++) { builder.put(URLPattern.decodeParsingCharacters(pattern.getParamList().get(keyIndex)), URLPattern .decodeParsingCharacters(mr.getGroup(keyIndex + 1))); } return pageName; }
if (pattern.getParamList().size() > 0) { throw new GenerationException("Default Page must not contain any path parameters.");
throw new PageNotFoundException("Invalid URL \"" + URLPattern.decodeParsingCharacters(url) + "\" could not be mapped to any page.");
/** * @return The name of the page to which the given user-entered URL corresponds. */ public String getPageName(String typedURL) { if (typedURL.equals("")) { return this.defaultPageName; } for (final Entry<URLPattern, String> urlMatcher : pageMap.entrySet()) { if (urlMatcher.getKey().matches(typedURL)) { return urlMatcher.getValue(); } } return null; }
/** * Returns the URL path for this HistoryToken, that can be parsed by {@link HistoryTokenFactory#parseURL(String)} * <p> * This URL path includes the application context. */ @Override public String toString() { final String url = pattern.printURL(state); final String context = Navigation.getAppContext(); if (!context.isEmpty() && !url.startsWith("/")) { return context + "/" + url; } else { return context + url; } }
if (pattern.getParamList().size() > 0) { throw new GenerationException("Default Page must not contain any path parameters.");
throw new PageNotFoundException("Invalid URL \"" + URLPattern.decodeParsingCharacters(url) + "\" could not be mapped to any page.");