@Override public PlaceRequest toPlaceRequest(String placeToken) throws TokenFormatException { return unescapedStringToPlaceRequest(urlUtils.decodeQueryString(placeToken)); }
@Override public List<PlaceRequest> toPlaceRequestHierarchy(String historyToken) throws TokenFormatException { String unescapedHistoryToken = urlUtils.decodeQueryString(historyToken); int split = unescapedHistoryToken.indexOf(hierarchySeparator); List<PlaceRequest> result = new ArrayList<>(); if (split == -1) { // History token consists of a single place token. result.add(unescapedStringToPlaceRequest(unescapedHistoryToken)); } else { String[] unescapedPlaceTokens = unescapedHistoryToken.split(hierarchySeparator); if (unescapedPlaceTokens.length == 0) { throw new TokenFormatException("Bad parameter: nothing in the history token."); } for (String unescapedPlaceToken : unescapedPlaceTokens) { if (unescapedPlaceToken.isEmpty()) { throw new TokenFormatException("Bad parameter: Successive place tokens require a single '" + hierarchySeparator + "' between them."); } result.add(unescapedStringToPlaceRequest(unescapedPlaceToken)); } } return result; }