### Question:
TextUtil { public static String getCanonicalFilePathProperty( final Properties props, final String key, final String defval ) { String val = System.getProperties().getProperty( key, System.getenv( StringUtils.replace( key,".","_" ) ) ); if( val == null ) { val = props.getProperty( key ); } if( val == null ) { val = defval; } String result; try { result = new File( new File( val.trim() ).getCanonicalPath() ).getAbsolutePath(); } catch( final IOException e ) { result = val.trim(); } return result; } private  TextUtil(); static String urlEncodeUTF8( final String text ); static String urlDecodeUTF8( final String utf8 ); static String urlEncode( final String data, final String encoding ); static String urlDecode( final String data, final String encoding ); static String replaceEntities( String src ); static String replaceString( final String orig, final String src, final String dest ); static String replaceString( final String orig, final int start, final int end, final String text ); static String replaceStringCaseUnsensitive( final String orig, final String src, final String dest ); static int parseIntParameter( final String value, final int defvalue ); static int getIntegerProperty( final Properties props, final String key, final int defVal ); static boolean getBooleanProperty( final Properties props, final String key, final boolean defval ); static String getStringProperty( final Properties props, final String key, final String defval ); static String getRequiredProperty( final Properties props, final String key ); static String getCanonicalFilePathProperty( final Properties props, final String key, final String defval ); static boolean isPositive( String val ); static String normalizePostData( final String postData ); static String beautifyString( final String s ); static String beautifyString( final String s, final String space ); static String cleanString( String text, final String allowedChars ); static Properties createProperties( final String[] values ); static int countSections( final String pagedata ); static String getSection( final String pagedata, final int section ); static String repeatString( final String what, final int times ); static String native2Ascii( final String s ); static String toHexString( final byte[] bytes ); static boolean isNumber( String s ); static String generateRandomPassword(); static final int PASSWORD_LENGTH; static final String LEGACY_CHARS_ALLOWED; static final String PUNCTUATION_CHARS_ALLOWED; }### Answer:
@Test public void testGetCanonicalFilePathProperty() { final String[] values = { "jspwiki.fileSystemProvider.pageDir", " ." + File.separator + "data" + File.separator + "private " }; final Properties props = TextUtil.createProperties(values); final String path = TextUtil.getCanonicalFilePathProperty(props, "jspwiki.fileSystemProvider.pageDir", "NA"); Assertions.assertTrue( path.endsWith( File.separator + "data" + File.separator + "private" ) ); Assertions.assertFalse( path.endsWith( "." + File.separator + "data" + File.separator + "private" ) ); }