BookmarkableUrlHelper { public static String getUrlToken(final String bookmarkableUrl, final String screen) { int st = isPerspectiveInUrl(bookmarkableUrl) ? (bookmarkableUrl.indexOf(PERSPECTIVE_SEP) + 1) : 0; String screensList = bookmarkableUrl.replace(OTHER_SCREEN_SEP, SEPARATOR) .substring(st, bookmarkableUrl.length()); String tokens[] = screensList.split(SEPARATOR); Optional<String> token = Arrays.asList(tokens).stream() .filter(s -> s.contains(screen)) .findFirst(); return token.orElse(screen); }  static String registerOpenedScreen(String bookmarkableUrl,
                                              final PlaceRequest placeRequest); static String registerClose(String bookmarkableUrl,
                                       final String screenName); static PlaceRequest getPerspectiveFromPlace(PlaceRequest place); static boolean isPerspectiveScreen(final String bookmarkableUrl,
                                              final String screen); static boolean isPerspectiveInUrl(final String url); static boolean urlContainsExtraPerspectiveScreen(final String bookmarkableUrl); static String getUrlToken(final String bookmarkableUrl,
                                     final String screen); static Set<String> getDockedScreensFromUrl(final String url); static Set<String> getDockedScreensFromPlace(final PlaceRequest place); static Set<String> getScreensFromPlace(final PlaceRequest place); static Set<String> getClosedScreenFromPlace(final PlaceRequest place); static Set<String> getOpenedScreenFromPlace(final PlaceRequest place); static boolean isScreenClosed(final String bookmarkableUrl,
                                         String screen); static String registerOpenedPerspective(String currentBookmarkableURLStatus,
                                                   PlaceRequest place); static String registerOpenedDock(String currentBookmarkableURLStatus,
                                            UberfireDock targetDock); static String registerClosedDock(String currentBookmarkableURLStatus,
                                            UberfireDock targetDock); static String registerCloseEditor(final String currentBookmarkableURLStatus,
                                             final PlaceRequest place); final static String PERSPECTIVE_SEP; final static String DOCK_BEGIN_SEP; final static String DOCK_CLOSE_SEP; final static String SEPARATOR; final static String OTHER_SCREEN_SEP; final static String CLOSED_PREFIX; final static String CLOSED_DOCK_PREFIX; final static int MAX_NAV_URL_SIZE; }
@Test public void testGetUrlInToken() { final String url1 = "perspective|#screen1,§screen2$#screen3,!screen4"; final String url2 = "!screen1,#screen2"; assertEquals("!screen1", BookmarkableUrlHelper.getUrlToken(url2, "screen1")); assertEquals("#screen2", BookmarkableUrlHelper.getUrlToken(url2, "screen2")); assertEquals("§screen2", BookmarkableUrlHelper.getUrlToken(url1, "screen2")); assertEquals("#screen1", BookmarkableUrlHelper.getUrlToken(url1, "screen1")); assertEquals("#screen3", BookmarkableUrlHelper.getUrlToken(url1, "screen3")); assertEquals("!screen4", BookmarkableUrlHelper.getUrlToken(url1, "screen4")); }