URISignatureHandler { public static boolean isValid(String uriSignature) { try { validate(uriSignature); return (true); } catch (URISignatureParsingException e) { return false; } }  static LinkedHashMap<String, Integer> extractPlaceholdersWithPositions(
			String uriSignature); static List<String> extractPlaceholders(String uriSignature); static void validate(String uriSignature); static void checkForUnsafeCharacters(String candidateURLSignature); static boolean isValid(String uriSignature); static String generateCompleteURI(String uriSignature,
			Map<String, String> specifiedParameters, boolean escapeParameters); static String urlEncodeQuery(String query); static final char PLACEHOLDER_START_SYMBOL; static final char PLACEHOLDER_END_SYMBOL; }
@Test public void isValid_validURI_NoPlaceholders() { assertTrue(URISignatureHandler.isValid(validURI_NoPlaceholders)); }
@Test public void isValid_badURI_DoubleOpeningSymbols() { assertFalse(URISignatureHandler.isValid(badURI_DoubleOpeningSymbols)); }
@Test public void isValid_badURI_DoubleOpeningSymbolsSpaced() { assertFalse(URISignatureHandler .isValid(badURI_DoubleOpeningSymbolsSpaced)); }
@Test public void isValid_badURI_DoubleClosingSymbols() { assertFalse(URISignatureHandler.isValid(badURI_DoubleClosingSymbols)); }
@Test public void isValid_badURI_DoubleClosingSymbolsSpaced() { assertFalse(URISignatureHandler .isValid(badURI_DoubleClosingSymbolsSpaced)); }
@Test public void isValid_badURI_NestedPlaceholders() { assertFalse(URISignatureHandler.isValid(badURI_NestedPlaceholders)); }
@Test public void isValid_badURI_NestedPlaceholdersSpaced() { assertFalse(URISignatureHandler .isValid(badURI_NestedPlaceholdersSpaced)); }
@Test public void isValid_badURI_DuplicatePlaceholders() { assertFalse(URISignatureHandler.isValid(badURI_DuplicatePlaceholders)); }
@Test public void isValid_badURI_DuplicatePlaceholdersWithOthers() { assertFalse(URISignatureHandler .isValid(badURI_DuplicatePlaceholdersWithOthers)); }
@Test public void isValid_validURI_PlaceholdersInMainPartOfURIOnly() { assertTrue(URISignatureHandler .isValid(validURI_PlaceholdersInMainPartOfURIOnly)); }
@Test public void isValid_validURI_PlaceholdersInQueryStringOnly() { assertTrue(URISignatureHandler .isValid(validURI_PlaceholdersInQueryStringOnly)); }
@Test public void isValid_validURI_MixedPlaceholders() { assertTrue(URISignatureHandler.isValid(validURI_3MixedPlaceholders)); }
@Test public void isValid_validURI_MultipleQueryString() { assertTrue(URISignatureHandler.isValid(validURI_MultipleQueryString)); }
@Test public void isValid_badURI_nullURI() { assertFalse(URISignatureHandler.isValid(badURI_nullURI)); }
@Test public void isValid_badURI_emptyURI() { assertFalse(URISignatureHandler.isValid(badURI_emptyURI)); }
@Test public void isValid_badURI_SingleOpeningSymbolNoClosingSymbol() { assertFalse(URISignatureHandler .isValid(badURI_SingleOpeningSymbolNoClosingSymbol)); }
@Test public void isValid_badURI_SingleClosingSymbolNoOpeningSymbol() { assertFalse(URISignatureHandler .isValid(badURI_SingleClosingSymbolNoOpeningSymbol)); }
@Test public void isValid_badURI_DoubleOpeningSymbolsNoClosingSymbol() { assertFalse(URISignatureHandler .isValid(badURI_DoubleOpeningSymbolsNoClosingSymbol)); }