public static void validatePath ( String path ) throws IllegalArgumentException { if ( path == null ) { throw new IllegalArgumentException ( "Path cannot be null" ) ; } if ( path . length ( ) == 0 ) { throw new IllegalArgumentException ( "Path length must be > 0" ) ; } if ( path . charAt ( 0 ) != ' ' ) { throw new IllegalArgumentException ( "Path \"" + path + "\" must start with / character" ) ; } if ( path . length ( ) == 1 ) { // done checking - it's the root return ; } if ( path . charAt ( path . length ( ) - 1 ) == ' ' ) { throw new IllegalArgumentException ( "Path must not end with / character" ) ; } String reason = null ; char lastc = ' ' ; char chars [ ] = path . toCharArray ( ) ; char c ; for ( int i = 1 ; i < chars . length ; lastc = chars [ i ] , i ++ ) { c = chars [ i ] ; if ( c == 0 ) { reason = "null character not allowed @" + i ; break ; } else if ( c == ' ' && lastc == ' ' ) { reason = "empty node name specified @" + i ; break ; } else if ( c == ' ' && lastc == ' ' ) { if ( chars [ i - 2 ] == ' ' && ( ( i + 1 == chars . length ) || chars [ i + 1 ] == ' ' ) ) { reason = "relative paths not allowed @" + i ; break ; } } else if ( c == ' ' ) { if ( chars [ i - 1 ] == ' ' && ( ( i + 1 == chars . length ) || chars [ i + 1 ] == ' ' ) ) { reason = "relative paths not allowed @" + i ; break ; } } else if ( c > ' ' && c < ' ' || c > ' ' && c < ' ' || c > ' ' && c < ' ' || c > ' ' && c < ' ' ) { reason = "invalid charater @" + i ; break ; } } if ( reason != null ) { throw new IllegalArgumentException ( "Invalid path string \"" + path + "\" caused by " + reason ) ; } }
Validate the provided znode path string