@Produces @ApplicationScoped public URLPatternMatcher createURLPatternMatcher(NavigationGraph navGraph) { URLPatternMatcher patternMatcher = new URLPatternMatcher(); Collection<PageNode<?>> pages = navGraph.getAllPages(); for(PageNode<?> page : pages) { patternMatcher.add(page.getURL(), page.name()); } if (!navGraph.isEmpty()) { PageNode<?> defaultPageNode = navGraph.getPageByRole(DefaultPage.class); patternMatcher.setAsDefaultPage(defaultPageNode.name()); } return patternMatcher; }
/** * Adds the allowed URL template as specified in the {@link Page#path()} by the developer. * * @param urlTemplate * The page URL pattern specified in the {@link Page#path()}. * @param pageName * The name of the page. */ public void add(String urlTemplate, String pageName) { final URLPattern urlPattern = generatePattern(urlTemplate); pageMap.put(urlPattern, pageName); }
/** * 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; }
final String pageName = parseValues(pageInfo, mapBuilder); if (pageName == null) throw new PageNotFoundException("Invalid URL \"" + URLPattern.decodeParsingCharacters(url) + "\" could not be mapped to any page."); parseKeyValuePairs(keyValuePairs, mapBuilder); getURLPattern(pageName));
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; }
/** * This can be used to generate a HistoryToken from a URL path * * @param url * The typed URL path. If the browser is pushstate-enabled, this will be the URI path, otherwise it will be * the fragment identifier. * @return A HistoryToken with the parsed URL matching information. */ public HistoryToken parseURL(String url) { String context = Navigation.getAppContext(); if (!context.isEmpty() && !url.startsWith("/")) { context = context.substring(1); } if (url.startsWith(context)) { url = url.substring(context.length()); } return patternMatcher.parseURL(url); } }
addParamName(paramList, mr); startOfNextPattern = mr.getIndex();
final String pageName = parseValues(pageInfo, mapBuilder); if (pageName == null) throw new PageNotFoundException("Invalid URL \"" + URLPattern.decodeParsingCharacters(url) + "\" could not be mapped to any page."); parseKeyValuePairs(keyValuePairs, mapBuilder); getURLPattern(pageName));
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; }
/** * This can be used to generate a HistoryToken from a URL path * * @param url * The typed URL path. If the browser is pushstate-enabled, this will be the URI path, otherwise it will be * the fragment identifier. * @return A HistoryToken with the parsed URL matching information. */ public HistoryToken parseURL(String url) { String context = Navigation.getAppContext(); if (!context.isEmpty() && !url.startsWith("/")) { context = context.substring(1); } if (url.startsWith(context)) { url = url.substring(context.length()); } return patternMatcher.parseURL(url); } }
addParamName(paramList, mr); startOfNextPattern = mr.getIndex();
@Produces @ApplicationScoped public URLPatternMatcher createURLPatternMatcher(NavigationGraph navGraph) { URLPatternMatcher patternMatcher = new URLPatternMatcher(); Collection<PageNode<?>> pages = navGraph.getAllPages(); for(PageNode<?> page : pages) { patternMatcher.add(page.getURL(), page.name()); } if (!navGraph.isEmpty()) { PageNode<?> defaultPageNode = navGraph.getPageByRole(DefaultPage.class); patternMatcher.setAsDefaultPage(defaultPageNode.name()); } return patternMatcher; }
/** * Adds the allowed URL template as specified in the {@link Page#path()} by the developer. * * @param urlTemplate * The page URL pattern specified in the {@link Page#path()}. * @param pageName * The name of the page. */ public void add(String urlTemplate, String pageName) { final URLPattern urlPattern = generatePattern(urlTemplate); pageMap.put(urlPattern, pageName); }
/** * 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; }
if (annotatedPageRoles.contains(DefaultPage.class)) { URLPattern pattern = URLPatternMatcher.generatePattern(annotation.path()); if (pattern.getParamList().size() > 0) { throw new GenerationException("Default Page must not contain any path parameters.");
/** * This can be used to create a HistoryToken when navigating by page name. * * @param pageName * The name of the page. Never null. * @param state * The map of {@link PageState} keys and values. Never null. * @return A HistoryToken with the parsed URL matching information. */ public HistoryToken createHistoryToken(String pageName, Multimap<String, String> state) { URLPattern pattern = patternMatcher.getURLPattern(pageName); return new HistoryToken(pageName, ImmutableMultimap.copyOf(state), pattern); }
if (annotatedPageRoles.contains(DefaultPage.class)) { URLPattern pattern = URLPatternMatcher.generatePattern(annotation.path()); if (pattern.getParamList().size() > 0) { throw new GenerationException("Default Page must not contain any path parameters.");
/** * This can be used to create a HistoryToken when navigating by page name. * * @param pageName * The name of the page. Never null. * @param state * The map of {@link PageState} keys and values. Never null. * @return A HistoryToken with the parsed URL matching information. */ public HistoryToken createHistoryToken(String pageName, Multimap<String, String> state) { URLPattern pattern = patternMatcher.getURLPattern(pageName); return new HistoryToken(pageName, ImmutableMultimap.copyOf(state), pattern); }