diff --git a/pom.xml b/pom.xml index a84e1cc1..ef9ce4bc 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,4 @@ - - 4.0.0 @@ -30,8 +28,7 @@ limitations under the License. Plexus Common Utilities A collection of various utility classes to ease working with strings, files, command lines and - more. - + more. scm:git:https://github.com/codehaus-plexus/plexus-utils.git @@ -71,14 +68,14 @@ limitations under the License. - oss.snapshots - https://oss.sonatype.org/content/repositories/plexus-snapshots/ - - true - false + + true + + oss.snapshots + https://oss.sonatype.org/content/repositories/plexus-snapshots/ @@ -112,15 +109,17 @@ limitations under the License. org.apache.maven.plugins maven-scm-publish-plugin - ${project.reporting.outputDirectory} + ${project.reporting.outputDirectory} + scm-publish - site-deploy + publish-scm + site-deploy @@ -180,8 +179,8 @@ limitations under the License. 9 ${project.basedir}/src/main/java9 - - true + + true @@ -210,8 +209,8 @@ limitations under the License. 10 ${project.basedir}/src/main/java10 - - true + + true @@ -221,35 +220,35 @@ limitations under the License. - jdk11+ - - [11,) - - - - - - maven-compiler-plugin - - - compile-java-11 - - compile - - - 11 - - ${project.basedir}/src/main/java11 + jdk11+ + + [11,) + + + + + + maven-compiler-plugin + + + compile-java-11 + + compile + + + 11 + + ${project.basedir}/src/main/java11 true - - - - - - - - + + + + + + + + plexus-release diff --git a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java index 16d64ef9..a10f43c7 100644 --- a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java +++ b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java @@ -24,9 +24,7 @@ /** * Scan a directory tree for files, with specified inclusions and exclusions. */ -public abstract class AbstractScanner - implements Scanner -{ +public abstract class AbstractScanner implements Scanner { /** * Patterns which should be excluded by default, like SCM files *
    @@ -54,16 +52,24 @@ public abstract class AbstractScanner */ public static final String[] DEFAULTEXCLUDES = { // Miscellaneous typical temporary files - "**/*~", "**/#*#", "**/.#*", "**/%*%", "**/._*", + "**/*~", + "**/#*#", + "**/.#*", + "**/%*%", + "**/._*", // CVS - "**/CVS", "**/CVS/**", "**/.cvsignore", + "**/CVS", + "**/CVS/**", + "**/.cvsignore", // RCS - "**/RCS", "**/RCS/**", + "**/RCS", + "**/RCS/**", // SCCS - "**/SCCS", "**/SCCS/**", + "**/SCCS", + "**/SCCS/**", // Visual SourceSafe "**/vssver.scc", @@ -72,13 +78,16 @@ public abstract class AbstractScanner "**/project.pj", // Subversion - "**/.svn", "**/.svn/**", + "**/.svn", + "**/.svn/**", // Arch - "**/.arch-ids", "**/.arch-ids/**", + "**/.arch-ids", + "**/.arch-ids/**", // Bazaar - "**/.bzr", "**/.bzr/**", + "**/.bzr", + "**/.bzr/**", // SurroundSCM "**/.MySCMServerInfo", @@ -87,19 +96,31 @@ public abstract class AbstractScanner "**/.DS_Store", // Serena Dimensions Version 10 - "**/.metadata", "**/.metadata/**", + "**/.metadata", + "**/.metadata/**", // Mercurial - "**/.hg", "**/.hg/**", + "**/.hg", + "**/.hg/**", // git - "**/.git", "**/.git/**", + "**/.git", + "**/.git/**", // BitKeeper - "**/BitKeeper", "**/BitKeeper/**", "**/ChangeSet", "**/ChangeSet/**", + "**/BitKeeper", + "**/BitKeeper/**", + "**/ChangeSet", + "**/ChangeSet/**", // darcs - "**/_darcs", "**/_darcs/**", "**/.darcsrepo", "**/.darcsrepo/**", "**/-darcs-backup*", "**/.darcs-temp-mail" }; + "**/_darcs", + "**/_darcs/**", + "**/.darcsrepo", + "**/.darcsrepo/**", + "**/-darcs-backup*", + "**/.darcs-temp-mail" + }; /** * The patterns for the files to be included. @@ -130,8 +151,7 @@ public abstract class AbstractScanner * * @param isCaseSensitive whether or not the file system should be regarded as a case sensitive one */ - public void setCaseSensitive( boolean isCaseSensitive ) - { + public void setCaseSensitive(boolean isCaseSensitive) { this.isCaseSensitive = isCaseSensitive; } @@ -145,9 +165,8 @@ public void setCaseSensitive( boolean isCaseSensitive ) * @param str The path to match, as a String. Must not be null. * @return whether or not a given path matches the start of a given pattern up to the first "**". */ - protected static boolean matchPatternStart( String pattern, String str ) - { - return SelectorUtils.matchPatternStart( pattern, str ); + protected static boolean matchPatternStart(String pattern, String str) { + return SelectorUtils.matchPatternStart(pattern, str); } /** @@ -161,9 +180,8 @@ protected static boolean matchPatternStart( String pattern, String str ) * @param isCaseSensitive Whether or not matching should be performed case sensitively. * @return whether or not a given path matches the start of a given pattern up to the first "**". */ - protected static boolean matchPatternStart( String pattern, String str, boolean isCaseSensitive ) - { - return SelectorUtils.matchPatternStart( pattern, str, isCaseSensitive ); + protected static boolean matchPatternStart(String pattern, String str, boolean isCaseSensitive) { + return SelectorUtils.matchPatternStart(pattern, str, isCaseSensitive); } /** @@ -173,9 +191,8 @@ protected static boolean matchPatternStart( String pattern, String str, boolean * @param str The path to match, as a String. Must not be null. * @return true if the pattern matches against the string, or false otherwise. */ - protected static boolean matchPath( String pattern, String str ) - { - return SelectorUtils.matchPath( pattern, str ); + protected static boolean matchPath(String pattern, String str) { + return SelectorUtils.matchPath(pattern, str); } /** @@ -186,9 +203,8 @@ protected static boolean matchPath( String pattern, String str ) * @param isCaseSensitive Whether or not matching should be performed case sensitively. * @return true if the pattern matches against the string, or false otherwise. */ - protected static boolean matchPath( String pattern, String str, boolean isCaseSensitive ) - { - return SelectorUtils.matchPath( pattern, str, isCaseSensitive ); + protected static boolean matchPath(String pattern, String str, boolean isCaseSensitive) { + return SelectorUtils.matchPath(pattern, str, isCaseSensitive); } /** @@ -200,9 +216,8 @@ protected static boolean matchPath( String pattern, String str, boolean isCaseSe * @param str The string which must be matched against the pattern. Must not be null. * @return true if the string matches against the pattern, or false otherwise. */ - public static boolean match( String pattern, String str ) - { - return SelectorUtils.match( pattern, str ); + public static boolean match(String pattern, String str) { + return SelectorUtils.match(pattern, str); } /** @@ -215,9 +230,8 @@ public static boolean match( String pattern, String str ) * @param isCaseSensitive Whether or not matching should be performed case sensitively. * @return true if the string matches against the pattern, or false otherwise. */ - protected static boolean match( String pattern, String str, boolean isCaseSensitive ) - { - return SelectorUtils.match( pattern, str, isCaseSensitive ); + protected static boolean match(String pattern, String str, boolean isCaseSensitive) { + return SelectorUtils.match(pattern, str, isCaseSensitive); } /** @@ -230,23 +244,17 @@ protected static boolean match( String pattern, String str, boolean isCaseSensit * included. If a non-null list is given, all elements must be non-null. */ @Override - public void setIncludes( String[] includes ) - { - if ( includes == null ) - { + public void setIncludes(String[] includes) { + if (includes == null) { this.includes = null; - } - else - { - final List list = new ArrayList( includes.length ); - for ( String include : includes ) - { - if ( include != null ) - { - list.add( normalizePattern( include ) ); + } else { + final List list = new ArrayList(includes.length); + for (String include : includes) { + if (include != null) { + list.add(normalizePattern(include)); } } - this.includes = list.toArray( new String[0] ); + this.includes = list.toArray(new String[0]); } } @@ -260,23 +268,17 @@ public void setIncludes( String[] includes ) * excluded. If a non-null list is given, all elements must be non-null. */ @Override - public void setExcludes( String[] excludes ) - { - if ( excludes == null ) - { + public void setExcludes(String[] excludes) { + if (excludes == null) { this.excludes = null; - } - else - { - final List list = new ArrayList( excludes.length ); - for ( String exclude : excludes ) - { - if ( exclude != null ) - { - list.add( normalizePattern( exclude ) ); + } else { + final List list = new ArrayList(excludes.length); + for (String exclude : excludes) { + if (exclude != null) { + list.add(normalizePattern(exclude)); } } - this.excludes = list.toArray( new String[0] ); + this.excludes = list.toArray(new String[0]); } } @@ -286,27 +288,19 @@ public void setExcludes( String[] excludes ) * @param pattern The pattern to normalize, must not be null. * @return The normalized pattern, never null. */ - private String normalizePattern( String pattern ) - { + private String normalizePattern(String pattern) { pattern = pattern.trim(); - if ( pattern.startsWith( SelectorUtils.REGEX_HANDLER_PREFIX ) ) - { - if ( File.separatorChar == '\\' ) - { - pattern = StringUtils.replace( pattern, "/", "\\\\" ); + if (pattern.startsWith(SelectorUtils.REGEX_HANDLER_PREFIX)) { + if (File.separatorChar == '\\') { + pattern = StringUtils.replace(pattern, "/", "\\\\"); + } else { + pattern = StringUtils.replace(pattern, "\\\\", "/"); } - else - { - pattern = StringUtils.replace( pattern, "\\\\", "/" ); - } - } - else - { - pattern = pattern.replace( File.separatorChar == '/' ? '\\' : '/', File.separatorChar ); + } else { + pattern = pattern.replace(File.separatorChar == '/' ? '\\' : '/', File.separatorChar); - if ( pattern.endsWith( File.separator ) ) - { + if (pattern.endsWith(File.separator)) { pattern += "**"; } } @@ -321,19 +315,16 @@ private String normalizePattern( String pattern ) * @return true when the name matches against at least one include pattern, or false * otherwise. */ - protected boolean isIncluded( String name ) - { - return includesPatterns.matches( name, isCaseSensitive ); + protected boolean isIncluded(String name) { + return includesPatterns.matches(name, isCaseSensitive); } - protected boolean isIncluded( String name, String[] tokenizedName ) - { - return includesPatterns.matches( name, tokenizedName, isCaseSensitive ); + protected boolean isIncluded(String name, String[] tokenizedName) { + return includesPatterns.matches(name, tokenizedName, isCaseSensitive); } - protected boolean isIncluded( String name, char[][] tokenizedName ) - { - return includesPatterns.matches( name, tokenizedName, isCaseSensitive ); + protected boolean isIncluded(String name, char[][] tokenizedName) { + return includesPatterns.matches(name, tokenizedName, isCaseSensitive); } /** @@ -343,9 +334,8 @@ protected boolean isIncluded( String name, char[][] tokenizedName ) * @return true when the name matches against the start of at least one include pattern, or * false otherwise. */ - protected boolean couldHoldIncluded( String name ) - { - return includesPatterns.matchesPatternStart( name, isCaseSensitive ); + protected boolean couldHoldIncluded(String name) { + return includesPatterns.matchesPatternStart(name, isCaseSensitive); } /** @@ -355,64 +345,53 @@ protected boolean couldHoldIncluded( String name ) * @return true when the name matches against at least one exclude pattern, or false * otherwise. */ - protected boolean isExcluded( String name ) - { - return excludesPatterns.matches( name, isCaseSensitive ); + protected boolean isExcluded(String name) { + return excludesPatterns.matches(name, isCaseSensitive); } - protected boolean isExcluded( String name, String[] tokenizedName ) - { - return excludesPatterns.matches( name, tokenizedName, isCaseSensitive ); + protected boolean isExcluded(String name, String[] tokenizedName) { + return excludesPatterns.matches(name, tokenizedName, isCaseSensitive); } - protected boolean isExcluded( String name, char[][] tokenizedName ) - { - return excludesPatterns.matches( name, tokenizedName, isCaseSensitive ); + protected boolean isExcluded(String name, char[][] tokenizedName) { + return excludesPatterns.matches(name, tokenizedName, isCaseSensitive); } /** * Adds default exclusions to the current exclusions set. */ @Override - public void addDefaultExcludes() - { + public void addDefaultExcludes() { int excludesLength = excludes == null ? 0 : excludes.length; String[] newExcludes; newExcludes = new String[excludesLength + DEFAULTEXCLUDES.length]; - if ( excludesLength > 0 ) - { - System.arraycopy( excludes, 0, newExcludes, 0, excludesLength ); + if (excludesLength > 0) { + System.arraycopy(excludes, 0, newExcludes, 0, excludesLength); } - for ( int i = 0; i < DEFAULTEXCLUDES.length; i++ ) - { - newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].replace( '/', File.separatorChar ); + for (int i = 0; i < DEFAULTEXCLUDES.length; i++) { + newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].replace('/', File.separatorChar); } excludes = newExcludes; } - protected void setupDefaultFilters() - { - if ( includes == null ) - { + protected void setupDefaultFilters() { + if (includes == null) { // No includes supplied, so set it to 'matches all' includes = new String[1]; includes[0] = "**"; } - if ( excludes == null ) - { + if (excludes == null) { excludes = new String[0]; } } - protected void setupMatchPatterns() - { - includesPatterns = MatchPatterns.from( includes ); - excludesPatterns = MatchPatterns.from( excludes ); + protected void setupMatchPatterns() { + includesPatterns = MatchPatterns.from(includes); + excludesPatterns = MatchPatterns.from(excludes); } @Override - public void setFilenameComparator( Comparator filenameComparator ) - { + public void setFilenameComparator(Comparator filenameComparator) { this.filenameComparator = filenameComparator; } } diff --git a/src/main/java/org/codehaus/plexus/util/Base64.java b/src/main/java/org/codehaus/plexus/util/Base64.java index 120feb8f..e574a287 100644 --- a/src/main/java/org/codehaus/plexus/util/Base64.java +++ b/src/main/java/org/codehaus/plexus/util/Base64.java @@ -28,8 +28,7 @@ * @since 1.0-dev * */ -public class Base64 -{ +public class Base64 { // // Source Id: Base64.java 161350 2005-04-14 20:39:46Z ggregory @@ -121,41 +120,33 @@ public class Base64 private static byte[] lookUpBase64Alphabet = new byte[LOOKUPLENGTH]; // Populating the lookup and character arrays - static - { - for ( int i = 0; i < BASELENGTH; i++ ) - { + static { + for (int i = 0; i < BASELENGTH; i++) { base64Alphabet[i] = (byte) -1; } - for ( int i = 'Z'; i >= 'A'; i-- ) - { - base64Alphabet[i] = (byte) ( i - 'A' ); + for (int i = 'Z'; i >= 'A'; i--) { + base64Alphabet[i] = (byte) (i - 'A'); } - for ( int i = 'z'; i >= 'a'; i-- ) - { - base64Alphabet[i] = (byte) ( i - 'a' + 26 ); + for (int i = 'z'; i >= 'a'; i--) { + base64Alphabet[i] = (byte) (i - 'a' + 26); } - for ( int i = '9'; i >= '0'; i-- ) - { - base64Alphabet[i] = (byte) ( i - '0' + 52 ); + for (int i = '9'; i >= '0'; i--) { + base64Alphabet[i] = (byte) (i - '0' + 52); } base64Alphabet['+'] = 62; base64Alphabet['/'] = 63; - for ( int i = 0; i <= 25; i++ ) - { - lookUpBase64Alphabet[i] = (byte) ( 'A' + i ); + for (int i = 0; i <= 25; i++) { + lookUpBase64Alphabet[i] = (byte) ('A' + i); } - for ( int i = 26, j = 0; i <= 51; i++, j++ ) - { - lookUpBase64Alphabet[i] = (byte) ( 'a' + j ); + for (int i = 26, j = 0; i <= 51; i++, j++) { + lookUpBase64Alphabet[i] = (byte) ('a' + j); } - for ( int i = 52, j = 0; i <= 61; i++, j++ ) - { - lookUpBase64Alphabet[i] = (byte) ( '0' + j ); + for (int i = 52, j = 0; i <= 61; i++, j++) { + lookUpBase64Alphabet[i] = (byte) ('0' + j); } lookUpBase64Alphabet[62] = (byte) '+'; @@ -168,18 +159,12 @@ public class Base64 * @param octect The value to test * @return true if the value is defined in the the base 64 alphabet, false otherwise. */ - private static boolean isBase64( byte octect ) - { - if ( octect == PAD ) - { + private static boolean isBase64(byte octect) { + if (octect == PAD) { return true; - } - else if ( octect < 0 || base64Alphabet[octect] == -1 ) - { + } else if (octect < 0 || base64Alphabet[octect] == -1) { return false; - } - else - { + } else { return true; } } @@ -191,22 +176,18 @@ else if ( octect < 0 || base64Alphabet[octect] == -1 ) * @return true if all bytes are valid characters in the Base64 alphabet or if the byte array is empty; * false, otherwise */ - public static boolean isArrayByteBase64( byte[] arrayOctect ) - { + public static boolean isArrayByteBase64(byte[] arrayOctect) { - arrayOctect = discardWhitespace( arrayOctect ); + arrayOctect = discardWhitespace(arrayOctect); int length = arrayOctect.length; - if ( length == 0 ) - { + if (length == 0) { // shouldn't a 0 length array be valid base64 data? // return false; return true; } - for ( byte anArrayOctect : arrayOctect ) - { - if ( !isBase64( anArrayOctect ) ) - { + for (byte anArrayOctect : arrayOctect) { + if (!isBase64(anArrayOctect)) { return false; } } @@ -219,9 +200,8 @@ public static boolean isArrayByteBase64( byte[] arrayOctect ) * @param binaryData binary data to encode * @return Base64 characters */ - public static byte[] encodeBase64( byte[] binaryData ) - { - return encodeBase64( binaryData, false ); + public static byte[] encodeBase64(byte[] binaryData) { + return encodeBase64(binaryData, false); } /** @@ -230,9 +210,8 @@ public static byte[] encodeBase64( byte[] binaryData ) * @param binaryData binary data to encode * @return Base64 characters chunked in 76 character blocks */ - public static byte[] encodeBase64Chunked( byte[] binaryData ) - { - return encodeBase64( binaryData, true ); + public static byte[] encodeBase64Chunked(byte[] binaryData) { + return encodeBase64(binaryData, true); } /** @@ -241,9 +220,8 @@ public static byte[] encodeBase64Chunked( byte[] binaryData ) * @param pArray A byte array containing Base64 character data * @return a byte array containing binary data */ - public byte[] decode( byte[] pArray ) - { - return decodeBase64( pArray ); + public byte[] decode(byte[] pArray) { + return decodeBase64(pArray); } /** @@ -253,8 +231,7 @@ public byte[] decode( byte[] pArray ) * @param isChunked if true this encoder will chunk the base64 output into 76 character blocks * @return Base64-encoded data. */ - public static byte[] encodeBase64( byte[] binaryData, boolean isChunked ) - { + public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) { int lengthDataBits = binaryData.length * EIGHTBIT; int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; @@ -262,13 +239,10 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked ) int encodedDataLength = 0; int nbrChunks = 0; - if ( fewerThan24bits != 0 ) - { + if (fewerThan24bits != 0) { // data not divisible by 24 bit - encodedDataLength = ( numberTriplets + 1 ) * 4; - } - else - { + encodedDataLength = (numberTriplets + 1) * 4; + } else { // 16 or 8 bit encodedDataLength = numberTriplets * 4; } @@ -276,10 +250,9 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked ) // If the output is to be "chunked" into 76 character sections, // for compliance with RFC 2045 MIME, then it is important to // allow for extra length to account for the separator(s) - if ( isChunked ) - { + if (isChunked) { - nbrChunks = ( CHUNK_SEPARATOR.length == 0 ? 0 : (int) Math.ceil( (float) encodedDataLength / CHUNK_SIZE ) ); + nbrChunks = (CHUNK_SEPARATOR.length == 0 ? 0 : (int) Math.ceil((float) encodedDataLength / CHUNK_SIZE)); encodedDataLength += nbrChunks * CHUNK_SEPARATOR.length; } @@ -294,8 +267,7 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked ) int chunksSoFar = 0; // log.debug("number of triplets = " + numberTriplets); - for ( i = 0; i < numberTriplets; i++ ) - { + for (i = 0; i < numberTriplets; i++) { dataIndex = i * 3; b1 = binaryData[dataIndex]; b2 = binaryData[dataIndex + 1]; @@ -303,33 +275,30 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked ) // log.debug("b1= " + b1 +", b2= " + b2 + ", b3= " + b3); - l = (byte) ( b2 & 0x0f ); - k = (byte) ( b1 & 0x03 ); + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); - byte val1 = ( ( b1 & SIGN ) == 0 ) ? (byte) ( b1 >> 2 ) : (byte) ( ( b1 ) >> 2 ^ 0xc0 ); - byte val2 = ( ( b2 & SIGN ) == 0 ) ? (byte) ( b2 >> 4 ) : (byte) ( ( b2 ) >> 4 ^ 0xf0 ); - byte val3 = ( ( b3 & SIGN ) == 0 ) ? (byte) ( b3 >> 6 ) : (byte) ( ( b3 ) >> 6 ^ 0xfc ); + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; // log.debug( "val2 = " + val2 ); // log.debug( "k4 = " + (k<<4) ); // log.debug( "vak = " + (val2 | (k<<4)) ); - encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | ( k << 4 )]; - encodedData[encodedIndex + 2] = lookUpBase64Alphabet[( l << 2 ) | val3]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex + 2] = lookUpBase64Alphabet[(l << 2) | val3]; encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f]; encodedIndex += 4; // If we are chunking, let's put a chunk separator down. - if ( isChunked ) - { + if (isChunked) { // this assumes that CHUNK_SIZE % 4 == 0 - if ( encodedIndex == nextSeparatorIndex ) - { - System.arraycopy( CHUNK_SEPARATOR, 0, encodedData, encodedIndex, CHUNK_SEPARATOR.length ); + if (encodedIndex == nextSeparatorIndex) { + System.arraycopy(CHUNK_SEPARATOR, 0, encodedData, encodedIndex, CHUNK_SEPARATOR.length); chunksSoFar++; - nextSeparatorIndex = - ( CHUNK_SIZE * ( chunksSoFar + 1 ) ) + ( chunksSoFar * CHUNK_SEPARATOR.length ); + nextSeparatorIndex = (CHUNK_SIZE * (chunksSoFar + 1)) + (chunksSoFar * CHUNK_SEPARATOR.length); encodedIndex += CHUNK_SEPARATOR.length; } } @@ -338,42 +307,41 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked ) // form integral number of 6-bit groups dataIndex = i * 3; - if ( fewerThan24bits == EIGHTBIT ) - { + if (fewerThan24bits == EIGHTBIT) { b1 = binaryData[dataIndex]; - k = (byte) ( b1 & 0x03 ); + k = (byte) (b1 & 0x03); // log.debug("b1=" + b1); // log.debug("b1<<2 = " + (b1>>2) ); - byte val1 = ( ( b1 & SIGN ) == 0 ) ? (byte) ( b1 >> 2 ) : (byte) ( ( b1 ) >> 2 ^ 0xc0 ); + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4]; encodedData[encodedIndex + 2] = PAD; encodedData[encodedIndex + 3] = PAD; - } - else if ( fewerThan24bits == SIXTEENBIT ) - { + } else if (fewerThan24bits == SIXTEENBIT) { b1 = binaryData[dataIndex]; b2 = binaryData[dataIndex + 1]; - l = (byte) ( b2 & 0x0f ); - k = (byte) ( b1 & 0x03 ); + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); - byte val1 = ( ( b1 & SIGN ) == 0 ) ? (byte) ( b1 >> 2 ) : (byte) ( ( b1 ) >> 2 ^ 0xc0 ); - byte val2 = ( ( b2 & SIGN ) == 0 ) ? (byte) ( b2 >> 4 ) : (byte) ( ( b2 ) >> 4 ^ 0xf0 ); + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; - encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | ( k << 4 )]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | (k << 4)]; encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2]; encodedData[encodedIndex + 3] = PAD; } - if ( isChunked ) - { + if (isChunked) { // we also add a separator to the end of the final chunk. - if ( chunksSoFar < nbrChunks ) - { - System.arraycopy( CHUNK_SEPARATOR, 0, encodedData, encodedDataLength - CHUNK_SEPARATOR.length, - CHUNK_SEPARATOR.length ); + if (chunksSoFar < nbrChunks) { + System.arraycopy( + CHUNK_SEPARATOR, + 0, + encodedData, + encodedDataLength - CHUNK_SEPARATOR.length, + CHUNK_SEPARATOR.length); } } @@ -386,14 +354,12 @@ else if ( fewerThan24bits == SIXTEENBIT ) * @param base64Data Byte array containing Base64 data * @return Array containing decoded data. */ - public static byte[] decodeBase64( byte[] base64Data ) - { + public static byte[] decodeBase64(byte[] base64Data) { // RFC 2045 requires that we discard ALL non-Base64 characters - base64Data = discardNonBase64( base64Data ); + base64Data = discardNonBase64(base64Data); // handle the edge case, so we don't have to worry about it later - if ( base64Data.length == 0 ) - { + if (base64Data.length == 0) { return new byte[0]; } @@ -409,18 +375,15 @@ public static byte[] decodeBase64( byte[] base64Data ) // this sizes the output array properly - rlw int lastData = base64Data.length; // ignore the '=' padding - while ( base64Data[lastData - 1] == PAD ) - { - if ( --lastData == 0 ) - { + while (base64Data[lastData - 1] == PAD) { + if (--lastData == 0) { return new byte[0]; } } decodedData = new byte[lastData - numberQuadruple]; } - for ( int i = 0; i < numberQuadruple; i++ ) - { + for (int i = 0; i < numberQuadruple; i++) { dataIndex = i * 4; marker0 = base64Data[dataIndex + 2]; marker1 = base64Data[dataIndex + 3]; @@ -428,28 +391,23 @@ public static byte[] decodeBase64( byte[] base64Data ) b1 = base64Alphabet[base64Data[dataIndex]]; b2 = base64Alphabet[base64Data[dataIndex + 1]]; - if ( marker0 != PAD && marker1 != PAD ) - { + if (marker0 != PAD && marker1 != PAD) { // No PAD e.g 3cQl b3 = base64Alphabet[marker0]; b4 = base64Alphabet[marker1]; - decodedData[encodedIndex] = (byte) ( b1 << 2 | b2 >> 4 ); - decodedData[encodedIndex + 1] = (byte) ( ( ( b2 & 0xf ) << 4 ) | ( ( b3 >> 2 ) & 0xf ) ); - decodedData[encodedIndex + 2] = (byte) ( b3 << 6 | b4 ); - } - else if ( marker0 == PAD ) - { + decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex + 1] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex + 2] = (byte) (b3 << 6 | b4); + } else if (marker0 == PAD) { // Two PAD e.g. 3c[Pad][Pad] - decodedData[encodedIndex] = (byte) ( b1 << 2 | b2 >> 4 ); - } - else if ( marker1 == PAD ) - { + decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + } else if (marker1 == PAD) { // One PAD e.g. 3cQ[Pad] b3 = base64Alphabet[marker0]; - decodedData[encodedIndex] = (byte) ( b1 << 2 | b2 >> 4 ); - decodedData[encodedIndex + 1] = (byte) ( ( ( b2 & 0xf ) << 4 ) | ( ( b3 >> 2 ) & 0xf ) ); + decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex + 1] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); } encodedIndex += 3; } @@ -462,15 +420,12 @@ else if ( marker1 == PAD ) * @param data The base-64 encoded data to discard the whitespace from. * @return The data, less whitespace (see RFC 2045). */ - static byte[] discardWhitespace( byte[] data ) - { + static byte[] discardWhitespace(byte[] data) { byte groomedData[] = new byte[data.length]; int bytesCopied = 0; - for ( byte aData : data ) - { - switch ( aData ) - { + for (byte aData : data) { + switch (aData) { case (byte) ' ': case (byte) '\n': case (byte) '\r': @@ -483,7 +438,7 @@ static byte[] discardWhitespace( byte[] data ) byte packedData[] = new byte[bytesCopied]; - System.arraycopy( groomedData, 0, packedData, 0, bytesCopied ); + System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); return packedData; } @@ -495,22 +450,19 @@ static byte[] discardWhitespace( byte[] data ) * @param data The base-64 encoded data to groom * @return The data, less non-base64 characters (see RFC 2045). */ - static byte[] discardNonBase64( byte[] data ) - { + static byte[] discardNonBase64(byte[] data) { byte groomedData[] = new byte[data.length]; int bytesCopied = 0; - for ( byte aData : data ) - { - if ( isBase64( aData ) ) - { + for (byte aData : data) { + if (isBase64(aData)) { groomedData[bytesCopied++] = aData; } } byte packedData[] = new byte[bytesCopied]; - System.arraycopy( groomedData, 0, packedData, 0, bytesCopied ); + System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); return packedData; } @@ -521,9 +473,7 @@ static byte[] discardNonBase64( byte[] data ) * @param pArray a byte array containing binary data * @return A byte array containing only Base64 character data */ - public byte[] encode( byte[] pArray ) - { - return encodeBase64( pArray, false ); + public byte[] encode(byte[] pArray) { + return encodeBase64(pArray, false); } - } diff --git a/src/main/java/org/codehaus/plexus/util/BaseFileUtils.java b/src/main/java/org/codehaus/plexus/util/BaseFileUtils.java index 0a3803d5..beb5e16d 100644 --- a/src/main/java/org/codehaus/plexus/util/BaseFileUtils.java +++ b/src/main/java/org/codehaus/plexus/util/BaseFileUtils.java @@ -4,22 +4,18 @@ import java.nio.file.Files; import java.nio.file.OpenOption; import java.nio.file.Path; -import java.nio.file.StandardOpenOption; /** * Implementation specific to Java SE 8 version. */ -abstract class BaseFileUtils -{ - static String fileRead( Path path, String encoding ) throws IOException - { - byte[] bytes = Files.readAllBytes( path ); - return encoding != null ? new String( bytes, encoding ) : new String( bytes ); +abstract class BaseFileUtils { + static String fileRead(Path path, String encoding) throws IOException { + byte[] bytes = Files.readAllBytes(path); + return encoding != null ? new String(bytes, encoding) : new String(bytes); } - static void fileWrite( Path path, String encoding, String data, OpenOption... openOptions ) throws IOException - { - byte[] bytes = encoding != null ? data.getBytes( encoding ) : data.getBytes(); - Files.write( path, bytes, openOptions ); + static void fileWrite(Path path, String encoding, String data, OpenOption... openOptions) throws IOException { + byte[] bytes = encoding != null ? data.getBytes(encoding) : data.getBytes(); + Files.write(path, bytes, openOptions); } } diff --git a/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java index ac2ade02..ab391c87 100644 --- a/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java +++ b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java @@ -9,19 +9,14 @@ /** * Implementation specific to Java SE 8 version. */ -abstract class BaseIOUtil -{ +abstract class BaseIOUtil { private static final int DEFAULT_BUFFER_SIZE = 1024 * 16; - static void copy( final InputStream input, final OutputStream output ) - throws IOException - { - IOUtil.copy( input, output, DEFAULT_BUFFER_SIZE ); + static void copy(final InputStream input, final OutputStream output) throws IOException { + IOUtil.copy(input, output, DEFAULT_BUFFER_SIZE); } - static void copy( final Reader input, final Writer output ) - throws IOException - { - IOUtil.copy( input, output, DEFAULT_BUFFER_SIZE ); + static void copy(final Reader input, final Writer output) throws IOException { + IOUtil.copy(input, output, DEFAULT_BUFFER_SIZE); } } diff --git a/src/main/java/org/codehaus/plexus/util/CachedMap.java b/src/main/java/org/codehaus/plexus/util/CachedMap.java index c77d2180..6c78dce0 100644 --- a/src/main/java/org/codehaus/plexus/util/CachedMap.java +++ b/src/main/java/org/codehaus/plexus/util/CachedMap.java @@ -38,13 +38,11 @@ *

    * This class is public domain (not copyrighted). *

    - * + * * @author Jean-Marie Dautelle * @version 5.3, October 30, 2003 */ -public final class CachedMap - implements Map -{ +public final class CachedMap implements Map { /** * Holds the FastMap backing this collection (null if generic backing map). @@ -80,9 +78,8 @@ public final class CachedMap * Creates a cached map backed by a {@link FastMap}. The default cache size and map capacity is set to * 256 entries. */ - public CachedMap() - { - this( 256, new FastMap() ); + public CachedMap() { + this(256, new FastMap()); } /** @@ -91,9 +88,8 @@ public CachedMap() * @param cacheSize the cache size, the actual cache size is the first power of 2 greater or equal to * cacheSize. This is also the initial capacity of the backing map. */ - public CachedMap( int cacheSize ) - { - this( cacheSize, new FastMap( cacheSize ) ); + public CachedMap(int cacheSize) { + this(cacheSize, new FastMap(cacheSize)); } /** @@ -105,13 +101,11 @@ public CachedMap( int cacheSize ) * cacheSize. * @param backingMap the backing map to be "wrapped" in a cached map. */ - public CachedMap( int cacheSize, Map backingMap ) - { + public CachedMap(int cacheSize, Map backingMap) { // Find a power of 2 >= minimalCache int actualCacheSize = 1; - while ( actualCacheSize < cacheSize ) - { + while (actualCacheSize < cacheSize) { actualCacheSize <<= 1; } @@ -121,20 +115,16 @@ public CachedMap( int cacheSize, Map backingMap ) _mask = actualCacheSize - 1; // Sets backing map references. - if ( backingMap instanceof FastMap ) - { + if (backingMap instanceof FastMap) { _backingFastMap = (FastMap) backingMap; _backingMap = _backingFastMap; _keysMap = null; - } - else - { + } else { _backingFastMap = null; _backingMap = backingMap; - _keysMap = new FastMap( backingMap.size() ); - for ( Object key : backingMap.keySet() ) - { - _keysMap.put( key, key ); + _keysMap = new FastMap(backingMap.size()); + for (Object key : backingMap.keySet()) { + _keysMap.put(key, key); } } } @@ -144,8 +134,7 @@ public CachedMap( int cacheSize, Map backingMap ) * * @return the cache size (power of 2). */ - public int getCacheSize() - { + public int getCacheSize() { return _keys.length; } @@ -155,28 +144,23 @@ public int getCacheSize() * @return the backing map. * @see #flush */ - public Map getBackingMap() - { - return ( _backingFastMap != null ) ? _backingFastMap : _backingMap; + public Map getBackingMap() { + return (_backingFastMap != null) ? _backingFastMap : _backingMap; } /** * Flushes the key/value pairs being cached. This method should be called if the backing map is externally modified. */ - public void flush() - { - for ( int i = 0; i < _keys.length; i++ ) - { + public void flush() { + for (int i = 0; i < _keys.length; i++) { _keys[i] = null; _values[i] = null; } - if ( _keysMap != null ) - { + if (_keysMap != null) { // Re-populates keys from backing map. - for ( Object key : _backingMap.keySet() ) - { - _keysMap.put( key, key ); + for (Object key : _backingMap.keySet()) { + _keysMap.put(key, key); } } } @@ -192,41 +176,30 @@ public void flush() * @throws NullPointerException if the key is null. */ @Override - public Object get( Object key ) - { + public Object get(Object key) { int index = key.hashCode() & _mask; - return key.equals( _keys[index] ) ? _values[index] : getCacheMissed( key, index ); + return key.equals(_keys[index]) ? _values[index] : getCacheMissed(key, index); } - private Object getCacheMissed( Object key, int index ) - { - if ( _backingFastMap != null ) - { - Map.Entry entry = _backingFastMap.getEntry( key ); - if ( entry != null ) - { + private Object getCacheMissed(Object key, int index) { + if (_backingFastMap != null) { + Map.Entry entry = _backingFastMap.getEntry(key); + if (entry != null) { _keys[index] = entry.getKey(); Object value = entry.getValue(); _values[index] = value; return value; - } - else - { + } else { return null; } - } - else - { // Generic backing map. - Object mapKey = _keysMap.get( key ); - if ( mapKey != null ) - { + } else { // Generic backing map. + Object mapKey = _keysMap.get(key); + if (mapKey != null) { _keys[index] = mapKey; - Object value = _backingMap.get( key ); + Object value = _backingMap.get(key); _values[index] = value; return value; - } - else - { + } else { return null; } } @@ -245,21 +218,17 @@ private Object getCacheMissed( Object key, int index ) * @throws NullPointerException if the key is null. */ @Override - public Object put( Object key, Object value ) - { + public Object put(Object key, Object value) { // Updates the cache. int index = key.hashCode() & _mask; - if ( key.equals( _keys[index] ) ) - { + if (key.equals(_keys[index])) { _values[index] = value; - } - else if ( _keysMap != null ) - { // Possibly a new key. - _keysMap.put( key, key ); + } else if (_keysMap != null) { // Possibly a new key. + _keysMap.put(key, key); } // Updates the backing map. - return _backingMap.put( key, value ); + return _backingMap.put(key, value); } /** @@ -272,21 +241,18 @@ else if ( _keysMap != null ) * @throws UnsupportedOperationException if the remove method is not supported by the backing map. */ @Override - public Object remove( Object key ) - { + public Object remove(Object key) { // Removes from cache. int index = key.hashCode() & _mask; - if ( key.equals( _keys[index] ) ) - { + if (key.equals(_keys[index])) { _keys[index] = null; } // Removes from key map. - if ( _keysMap != null ) - { - _keysMap.remove( key ); + if (_keysMap != null) { + _keysMap.remove(key); } // Removes from backing map. - return _backingMap.remove( key ); + return _backingMap.remove(key); } /** @@ -296,17 +262,13 @@ public Object remove( Object key ) * @return true if this map contains a mapping for the specified key; false otherwise. */ @Override - public boolean containsKey( Object key ) - { + public boolean containsKey(Object key) { // Checks the cache. int index = key.hashCode() & _mask; - if ( key.equals( _keys[index] ) ) - { + if (key.equals(_keys[index])) { return true; - } - else - { // Checks the backing map. - return _backingMap.containsKey( key ); + } else { // Checks the backing map. + return _backingMap.containsKey(key); } } @@ -317,8 +279,7 @@ public boolean containsKey( Object key ) * @return the number of key-value mappings in this map. */ @Override - public int size() - { + public int size() { return _backingMap.size(); } @@ -328,8 +289,7 @@ public int size() * @return true if this map contains no key-value mappings. */ @Override - public boolean isEmpty() - { + public boolean isEmpty() { return _backingMap.isEmpty(); } @@ -343,9 +303,8 @@ public boolean isEmpty() * null values. */ @Override - public boolean containsValue( Object value ) - { - return _backingMap.containsValue( value ); + public boolean containsValue(Object value) { + return _backingMap.containsValue(value); } /** @@ -362,9 +321,8 @@ public boolean containsValue( Object value ) * null keys or values, and the specified map contains null keys or values. */ @Override - public void putAll( Map map ) - { - _backingMap.putAll( map ); + public void putAll(Map map) { + _backingMap.putAll(map); flush(); } @@ -374,8 +332,7 @@ public void putAll( Map map ) * @throws UnsupportedOperationException if clear is not supported by the backing map. */ @Override - public void clear() - { + public void clear() { _backingMap.clear(); flush(); } @@ -386,9 +343,8 @@ public void clear() * @return an unmodifiable view of the keys contained in this map. */ @Override - public Set keySet() - { - return Collections.unmodifiableSet( _backingMap.keySet() ); + public Set keySet() { + return Collections.unmodifiableSet(_backingMap.keySet()); } /** @@ -397,9 +353,8 @@ public Set keySet() * @return an unmodifiable view of the values contained in this map. */ @Override - public Collection values() - { - return Collections.unmodifiableCollection( _backingMap.values() ); + public Collection values() { + return Collections.unmodifiableCollection(_backingMap.values()); } /** @@ -409,9 +364,8 @@ public Collection values() * @return an unmodifiable view of the mappings contained in this map. */ @Override - public Set entrySet() - { - return Collections.unmodifiableSet( _backingMap.entrySet() ); + public Set entrySet() { + return Collections.unmodifiableSet(_backingMap.entrySet()); } /** @@ -422,9 +376,8 @@ public Set entrySet() * @return true if the specified object is equal to this map. */ @Override - public boolean equals( Object o ) - { - return _backingMap.equals( o ); + public boolean equals(Object o) { + return _backingMap.equals(o); } /** @@ -433,8 +386,7 @@ public boolean equals( Object o ) * @return the hash code value for this map. */ @Override - public int hashCode() - { + public int hashCode() { return _backingMap.hashCode(); } } diff --git a/src/main/java/org/codehaus/plexus/util/CollectionUtils.java b/src/main/java/org/codehaus/plexus/util/CollectionUtils.java index b16200fd..c966d8ff 100644 --- a/src/main/java/org/codehaus/plexus/util/CollectionUtils.java +++ b/src/main/java/org/codehaus/plexus/util/CollectionUtils.java @@ -30,8 +30,7 @@ * @author olamy * */ -public class CollectionUtils -{ +public class CollectionUtils { // ---------------------------------------------------------------------- // Static methods that can probably be moved to a real util class. // ---------------------------------------------------------------------- @@ -48,21 +47,17 @@ public class CollectionUtils * @param type * @return The result map with combined dominant and recessive values. */ - public static Map mergeMaps( Map dominantMap, Map recessiveMap ) - { + public static Map mergeMaps(Map dominantMap, Map recessiveMap) { - if ( dominantMap == null && recessiveMap == null ) - { + if (dominantMap == null && recessiveMap == null) { return null; } - if ( dominantMap != null && recessiveMap == null ) - { + if (dominantMap != null && recessiveMap == null) { return dominantMap; } - if ( dominantMap == null ) - { + if (dominantMap == null) { return recessiveMap; } @@ -75,17 +70,15 @@ public static Map mergeMaps( Map dominantMap, Map reces // Create the set of keys that will be contributed by the // recessive Map by subtracting the intersection of keys // from the recessive Map's keys. - Collection contributingRecessiveKeys = - CollectionUtils.subtract( recessiveMapKeys, - CollectionUtils.intersection( dominantMapKeys, recessiveMapKeys ) ); + Collection contributingRecessiveKeys = CollectionUtils.subtract( + recessiveMapKeys, CollectionUtils.intersection(dominantMapKeys, recessiveMapKeys)); - result.putAll( dominantMap ); + result.putAll(dominantMap); // Now take the keys we just found and extract the values from // the recessiveMap and put the key:value pairs into the dominantMap. - for ( K key : contributingRecessiveKeys ) - { - result.put( key, recessiveMap.get( key ) ); + for (K key : contributingRecessiveKeys) { + result.put(key, recessiveMap.get(key)); } return result; @@ -100,25 +93,18 @@ public static Map mergeMaps( Map dominantMap, Map reces * @param type * @return Map The result Map produced after the merging process. */ - public static Map mergeMaps( Map[] maps ) - { + public static Map mergeMaps(Map[] maps) { Map result; - if ( maps.length == 0 ) - { + if (maps.length == 0) { result = null; - } - else if ( maps.length == 1 ) - { + } else if (maps.length == 1) { result = maps[0]; - } - else - { - result = mergeMaps( maps[0], maps[1] ); + } else { + result = mergeMaps(maps[0], maps[1]); - for ( int i = 2; i < maps.length; i++ ) - { - result = mergeMaps( result, maps[i] ); + for (int i = 2; i < maps.length; i++) { + result = mergeMaps(result, maps[i]); } } @@ -138,18 +124,15 @@ else if ( maps.length == 1 ) * @see Collection#retainAll * @return The intersection of a and b, never null */ - public static Collection intersection( final Collection a, final Collection b ) - { + public static Collection intersection(final Collection a, final Collection b) { ArrayList list = new ArrayList<>(); - Map mapa = getCardinalityMap( a ); - Map mapb = getCardinalityMap( b ); - Set elts = new HashSet<>( a ); - elts.addAll( b ); - for ( E obj : elts ) - { - for ( int i = 0, m = Math.min( getFreq( obj, mapa ), getFreq( obj, mapb ) ); i < m; i++ ) - { - list.add( obj ); + Map mapa = getCardinalityMap(a); + Map mapb = getCardinalityMap(b); + Set elts = new HashSet<>(a); + elts.addAll(b); + for (E obj : elts) { + for (int i = 0, m = Math.min(getFreq(obj, mapa), getFreq(obj, mapb)); i < m; i++) { + list.add(obj); } } return list; @@ -166,12 +149,10 @@ public static Collection intersection( final Collection a, final Colle * @see Collection#removeAll * @return The result of the subtraction */ - public static Collection subtract( final Collection a, final Collection b ) - { - ArrayList list = new ArrayList<>( a ); - for ( T aB : b ) - { - list.remove( aB ); + public static Collection subtract(final Collection a, final Collection b) { + ArrayList list = new ArrayList<>(a); + for (T aB : b) { + list.remove(aB); } return list; } @@ -180,41 +161,33 @@ public static Collection subtract( final Collection a, final Collectio * Returns a {@link Map} mapping each unique element in the given {@link Collection} to an {@link Integer} * representing the number of occurrences of that element in the {@link Collection}. An entry that maps to * null indicates that the element does not appear in the given {@link Collection}. - * + * * @param col The collection to count cardinalities for * @param the type * @return A map of counts, indexed on each element in the collection */ - public static Map getCardinalityMap( final Collection col ) - { + public static Map getCardinalityMap(final Collection col) { HashMap count = new HashMap<>(); - for ( E obj : col ) - { - Integer c = count.get( obj ); - if ( null == c ) - { - count.put( obj, 1 ); - } - else - { - count.put( obj, c + 1 ); + for (E obj : col) { + Integer c = count.get(obj); + if (null == c) { + count.put(obj, 1); + } else { + count.put(obj, c + 1); } } return count; } - public static List iteratorToList( Iterator it ) - { - if ( it == null ) - { - throw new NullPointerException( "it cannot be null." ); + public static List iteratorToList(Iterator it) { + if (it == null) { + throw new NullPointerException("it cannot be null."); } List list = new ArrayList(); - while ( it.hasNext() ) - { - list.add( it.next() ); + while (it.hasNext()) { + list.add(it.next()); } return list; @@ -224,18 +197,14 @@ public static List iteratorToList( Iterator it ) // // ---------------------------------------------------------------------- - private static int getFreq( final E obj, final Map freqMap ) - { - try - { - Integer o = freqMap.get( obj ); - if ( o != null ) // minimize NullPointerExceptions + private static int getFreq(final E obj, final Map freqMap) { + try { + Integer o = freqMap.get(obj); + if (o != null) // minimize NullPointerExceptions { return o; } - } - catch ( NullPointerException | NoSuchElementException ignore ) - { + } catch (NullPointerException | NoSuchElementException ignore) { } return 0; } diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java b/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java index 5db6a903..64fd8994 100644 --- a/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java +++ b/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java @@ -61,39 +61,39 @@ /** *

    Class for scanning a directory for files/directories which match certain criteria.

    - * + * *

    These criteria consist of selectors and patterns which have been specified. With the selectors you can select which * files you want to have included. Files which are not selected are excluded. With patterns you can include or exclude * files based on their filename.

    - * + * *

    The idea is simple. A given directory is recursively scanned for all files and directories. Each file/directory is * matched against a set of selectors, including special support for matching against filenames with include and and * exclude patterns. Only files/directories which match at least one pattern of the include pattern list or other file * selector, and don't match any pattern of the exclude pattern list or fail to match against a required selector will * be placed in the list of files/directories found.

    - * + * *

    When no list of include patterns is supplied, "**" will be used, which means that everything will be matched. When no * list of exclude patterns is supplied, an empty list is used, such that nothing will be excluded. When no selectors * are supplied, none are applied.

    - * + * *

    The filename pattern matching is done as follows: The name to be matched is split up in path segments. A path segment * is the name of a directory or file, which is bounded by File.separator ('/' under UNIX, '\' under * Windows). For example, "abc/def/ghi/xyz.java" is split up in the segments "abc", "def","ghi" and "xyz.java". The same * is done for the pattern against which should be matched.

    - * + * *

    The segments of the name and the pattern are then matched against each other. When '**' is used for a path segment in * the pattern, it matches zero or more path segments of the name.

    - * + * *

    There is a special case regarding the use of File.separators at the beginning of the pattern and the * string to match:
    * When a pattern starts with a File.separator, the string to match must also start with a * File.separator. When a pattern does not start with a File.separator, the string to match * may not start with a File.separator. When one of these rules is not obeyed, the string will not match.

    - * + * *

    When a name path segment is matched against a pattern path segment, the following special characters can be used:
    * '*' matches zero or more characters
    * '?' matches one character.

    - * + * * Examples: *
      *
    • "**\*.class" matches all .class files/dirs in a directory tree.
    • @@ -103,7 +103,7 @@ *
    • "**\test\**\XYZ*" matches all files/dirs which start with "XYZ" and where there is a parent directory called test * (e.g. "abc\test\def\ghi\XYZ123").
    • *
    - * + * *

    Case sensitivity may be turned off if necessary. By default, it is turned on.

    * Example of usage: *
    @@ -122,7 +122,7 @@
      *     System.out.println( files[i] );
      * }
      * 
    - * + * *

    This will scan a directory called test for .class files, but excludes all files in all proper subdirectories of a * directory called "modules"

    * @@ -131,9 +131,7 @@ * @author Bruce Atherton * @author Antoine Levy-Lambert */ -public class DirectoryScanner - extends AbstractScanner -{ +public class DirectoryScanner extends AbstractScanner { private static final String[] EMPTY_STRING_ARRAY = new String[0]; @@ -199,14 +197,12 @@ public class DirectoryScanner */ protected boolean everythingIncluded = true; - private final char[][] tokenizedEmpty = MatchPattern.tokenizePathToCharArray( "", File.separator ); + private final char[][] tokenizedEmpty = MatchPattern.tokenizePathToCharArray("", File.separator); /** * Sole constructor. */ - public DirectoryScanner() - { - } + public DirectoryScanner() {} /** * Sets the base directory to be scanned. This is the directory which is scanned recursively. All '/' and '\' @@ -215,9 +211,8 @@ public DirectoryScanner() * * @param basedir The base directory to scan. Must not be null. */ - public void setBasedir( String basedir ) - { - setBasedir( new File( basedir.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ) ) ); + public void setBasedir(String basedir) { + setBasedir(new File(basedir.replace('/', File.separatorChar).replace('\\', File.separatorChar))); } /** @@ -225,8 +220,7 @@ public void setBasedir( String basedir ) * * @param basedir The base directory for scanning. Should not be null. */ - public void setBasedir( File basedir ) - { + public void setBasedir(File basedir) { this.basedir = basedir; } @@ -236,8 +230,7 @@ public void setBasedir( File basedir ) * @return the base directory to be scanned */ @Override - public File getBasedir() - { + public File getBasedir() { return basedir; } @@ -246,8 +239,7 @@ public File getBasedir() * * @param followSymlinks whether or not symbolic links should be followed */ - public void setFollowSymlinks( boolean followSymlinks ) - { + public void setFollowSymlinks(boolean followSymlinks) { this.followSymlinks = followSymlinks; } @@ -256,8 +248,7 @@ public void setFollowSymlinks( boolean followSymlinks ) * * @return true if all files and directories which have been found so far have been included. */ - public boolean isEverythingIncluded() - { + public boolean isEverythingIncluded() { return everythingIncluded; } @@ -269,20 +260,15 @@ public boolean isEverythingIncluded() * exist, or isn't a directory). */ @Override - public void scan() - throws IllegalStateException - { - if ( basedir == null ) - { - throw new IllegalStateException( "No basedir set" ); + public void scan() throws IllegalStateException { + if (basedir == null) { + throw new IllegalStateException("No basedir set"); } - if ( !basedir.exists() ) - { - throw new IllegalStateException( "basedir " + basedir + " does not exist" ); + if (!basedir.exists()) { + throw new IllegalStateException("basedir " + basedir + " does not exist"); } - if ( !basedir.isDirectory() ) - { - throw new IllegalStateException( "basedir " + basedir + " is not a directory" ); + if (!basedir.isDirectory()) { + throw new IllegalStateException("basedir " + basedir + " is not a directory"); } setupDefaultFilters(); @@ -297,62 +283,47 @@ public void scan() dirsExcluded = new ArrayList(); dirsDeselected = new ArrayList(); - if ( isIncluded( "", tokenizedEmpty ) ) - { + if (isIncluded("", tokenizedEmpty)) { - if ( !isExcluded( "", tokenizedEmpty ) ) - { - if ( isSelected( "", basedir ) ) - { - dirsIncluded.add( "" ); + if (!isExcluded("", tokenizedEmpty)) { + if (isSelected("", basedir)) { + dirsIncluded.add(""); + } else { + dirsDeselected.add(""); } - else - { - dirsDeselected.add( "" ); - } - } - else - { - dirsExcluded.add( "" ); + } else { + dirsExcluded.add(""); } + } else { + dirsNotIncluded.add(""); } - else - { - dirsNotIncluded.add( "" ); - } - scandir( basedir, "", true ); + scandir(basedir, "", true); } /** *

    Top level invocation for a slow scan. A slow scan builds up a full list of excluded/included files/directories, * whereas a fast scan will only have full results for included files, as it ignores directories which can't * possibly hold any included files/directories.

    - * + * *

    Returns immediately if a slow scan has already been completed.

    */ - protected void slowScan() - { - if ( haveSlowResults ) - { + protected void slowScan() { + if (haveSlowResults) { return; } - String[] excl = dirsExcluded.toArray( EMPTY_STRING_ARRAY ); - String[] notIncl = dirsNotIncluded.toArray( EMPTY_STRING_ARRAY ); + String[] excl = dirsExcluded.toArray(EMPTY_STRING_ARRAY); + String[] notIncl = dirsNotIncluded.toArray(EMPTY_STRING_ARRAY); - for ( String anExcl : excl ) - { - if ( !couldHoldIncluded( anExcl ) ) - { - scandir( new File( basedir, anExcl ), anExcl + File.separator, false ); + for (String anExcl : excl) { + if (!couldHoldIncluded(anExcl)) { + scandir(new File(basedir, anExcl), anExcl + File.separator, false); } } - for ( String aNotIncl : notIncl ) - { - if ( !couldHoldIncluded( aNotIncl ) ) - { - scandir( new File( basedir, aNotIncl ), aNotIncl + File.separator, false ); + for (String aNotIncl : notIncl) { + if (!couldHoldIncluded(aNotIncl)) { + scandir(new File(basedir, aNotIncl), aNotIncl + File.separator, false); } } @@ -376,12 +347,10 @@ protected void slowScan() * @see #dirsExcluded * @see #slowScan */ - protected void scandir( File dir, String vpath, boolean fast ) - { + protected void scandir(File dir, String vpath, boolean fast) { String[] newfiles = dir.list(); - if ( newfiles == null ) - { + if (newfiles == null) { /* * two reasons are mentioned in the API docs for File.list (1) dir is not a directory. This is impossible as * we wouldn't get here in this case. (2) an IO error occurred (why doesn't it throw an exception then???) @@ -401,122 +370,85 @@ protected void scandir( File dir, String vpath, boolean fast ) // throw new IOException( "IO error scanning directory " + dir.getAbsolutePath() ); } - if ( !followSymlinks ) - { - try - { - if ( isParentSymbolicLink( dir, null ) ) - { - for ( String newfile : newfiles ) - { + if (!followSymlinks) { + try { + if (isParentSymbolicLink(dir, null)) { + for (String newfile : newfiles) { String name = vpath + newfile; - File file = new File( dir, newfile ); - if ( file.isDirectory() ) - { - dirsExcluded.add( name ); - } - else - { - filesExcluded.add( name ); + File file = new File(dir, newfile); + if (file.isDirectory()) { + dirsExcluded.add(name); + } else { + filesExcluded.add(name); } } return; } - } - catch ( IOException ioe ) - { + } catch (IOException ioe) { String msg = "IOException caught while checking for links!"; // will be caught and redirected to Ant's logging system - System.err.println( msg ); + System.err.println(msg); } } - if ( filenameComparator != null ) - { - Arrays.sort( newfiles, filenameComparator ); + if (filenameComparator != null) { + Arrays.sort(newfiles, filenameComparator); } - for ( String newfile : newfiles ) - { + for (String newfile : newfiles) { String name = vpath + newfile; - char[][] tokenizedName = MatchPattern.tokenizePathToCharArray( name, File.separator ); - File file = new File( dir, newfile ); - if ( file.isDirectory() ) - { - - if ( isIncluded( name, tokenizedName ) ) - { - if ( !isExcluded( name, tokenizedName ) ) - { - if ( isSelected( name, file ) ) - { - dirsIncluded.add( name ); - if ( fast ) - { - scandir( file, name + File.separator, fast ); + char[][] tokenizedName = MatchPattern.tokenizePathToCharArray(name, File.separator); + File file = new File(dir, newfile); + if (file.isDirectory()) { + + if (isIncluded(name, tokenizedName)) { + if (!isExcluded(name, tokenizedName)) { + if (isSelected(name, file)) { + dirsIncluded.add(name); + if (fast) { + scandir(file, name + File.separator, fast); } - } - else - { + } else { everythingIncluded = false; - dirsDeselected.add( name ); - if ( fast && couldHoldIncluded( name ) ) - { - scandir( file, name + File.separator, fast ); + dirsDeselected.add(name); + if (fast && couldHoldIncluded(name)) { + scandir(file, name + File.separator, fast); } } - } - else - { + } else { everythingIncluded = false; - dirsExcluded.add( name ); - if ( fast && couldHoldIncluded( name ) ) - { - scandir( file, name + File.separator, fast ); + dirsExcluded.add(name); + if (fast && couldHoldIncluded(name)) { + scandir(file, name + File.separator, fast); } } - } - else - { + } else { everythingIncluded = false; - dirsNotIncluded.add( name ); - if ( fast && couldHoldIncluded( name ) ) - { - scandir( file, name + File.separator, fast ); + dirsNotIncluded.add(name); + if (fast && couldHoldIncluded(name)) { + scandir(file, name + File.separator, fast); } } - if ( !fast ) - { - scandir( file, name + File.separator, fast ); + if (!fast) { + scandir(file, name + File.separator, fast); } - } - else if ( file.isFile() ) - { - if ( isIncluded( name, tokenizedName ) ) - { - if ( !isExcluded( name, tokenizedName ) ) - { - if ( isSelected( name, file ) ) - { - filesIncluded.add( name ); - } - else - { + } else if (file.isFile()) { + if (isIncluded(name, tokenizedName)) { + if (!isExcluded(name, tokenizedName)) { + if (isSelected(name, file)) { + filesIncluded.add(name); + } else { everythingIncluded = false; - filesDeselected.add( name ); + filesDeselected.add(name); } - } - else - { + } else { everythingIncluded = false; - filesExcluded.add( name ); + filesExcluded.add(name); } - } - else - { + } else { everythingIncluded = false; - filesNotIncluded.add( name ); + filesNotIncluded.add(name); } } } @@ -530,8 +462,7 @@ else if ( file.isFile() ) * @return false when the selectors says that the file should not be selected, true * otherwise. */ - protected boolean isSelected( String name, File file ) - { + protected boolean isSelected(String name, File file) { return true; } @@ -543,9 +474,8 @@ protected boolean isSelected( String name, File file ) * patterns. */ @Override - public String[] getIncludedFiles() - { - return filesIncluded.toArray( EMPTY_STRING_ARRAY ); + public String[] getIncludedFiles() { + return filesIncluded.toArray(EMPTY_STRING_ARRAY); } /** @@ -555,10 +485,9 @@ public String[] getIncludedFiles() * @return the names of the files which matched none of the include patterns. * @see #slowScan */ - public String[] getNotIncludedFiles() - { + public String[] getNotIncludedFiles() { slowScan(); - return filesNotIncluded.toArray( EMPTY_STRING_ARRAY ); + return filesNotIncluded.toArray(EMPTY_STRING_ARRAY); } /** @@ -570,25 +499,23 @@ public String[] getNotIncludedFiles() * exclude patterns. * @see #slowScan */ - public String[] getExcludedFiles() - { + public String[] getExcludedFiles() { slowScan(); - return filesExcluded.toArray( EMPTY_STRING_ARRAY ); + return filesExcluded.toArray(EMPTY_STRING_ARRAY); } /** *

    Returns the names of the files which were selected out and therefore not ultimately included.

    - * + * *

    The names are relative to the base directory. This involves performing a slow scan if one has not already been * completed.

    * * @return the names of the files which were deselected. * @see #slowScan */ - public String[] getDeselectedFiles() - { + public String[] getDeselectedFiles() { slowScan(); - return filesDeselected.toArray( EMPTY_STRING_ARRAY ); + return filesDeselected.toArray(EMPTY_STRING_ARRAY); } /** @@ -599,9 +526,8 @@ public String[] getDeselectedFiles() * patterns. */ @Override - public String[] getIncludedDirectories() - { - return dirsIncluded.toArray( EMPTY_STRING_ARRAY ); + public String[] getIncludedDirectories() { + return dirsIncluded.toArray(EMPTY_STRING_ARRAY); } /** @@ -611,10 +537,9 @@ public String[] getIncludedDirectories() * @return the names of the directories which matched none of the include patterns. * @see #slowScan */ - public String[] getNotIncludedDirectories() - { + public String[] getNotIncludedDirectories() { slowScan(); - return dirsNotIncluded.toArray( EMPTY_STRING_ARRAY ); + return dirsNotIncluded.toArray(EMPTY_STRING_ARRAY); } /** @@ -626,30 +551,28 @@ public String[] getNotIncludedDirectories() * exclude patterns. * @see #slowScan */ - public String[] getExcludedDirectories() - { + public String[] getExcludedDirectories() { slowScan(); - return dirsExcluded.toArray( EMPTY_STRING_ARRAY ); + return dirsExcluded.toArray(EMPTY_STRING_ARRAY); } /** *

    Returns the names of the directories which were selected out and therefore not ultimately included.

    - * + * *

    The names are relative to the base directory. This involves performing a slow scan if one has not already been * completed.

    * * @return the names of the directories which were deselected. * @see #slowScan */ - public String[] getDeselectedDirectories() - { + public String[] getDeselectedDirectories() { slowScan(); - return dirsDeselected.toArray( EMPTY_STRING_ARRAY ); + return dirsDeselected.toArray(EMPTY_STRING_ARRAY); } /** *

    Checks whether a given file is a symbolic link.

    - * + * *

    It doesn't really test for symbolic links but whether the canonical and absolute paths of the file are identical * - this may lead to false positives on some platforms. *

    @@ -660,15 +583,13 @@ public String[] getDeselectedDirectories() * @throws java.io.IOException . * @since Ant 1.5 */ - public boolean isSymbolicLink( File parent, String name ) - throws IOException - { - return NioFiles.isSymbolicLink( new File( parent, name ) ); + public boolean isSymbolicLink(File parent, String name) throws IOException { + return NioFiles.isSymbolicLink(new File(parent, name)); } /** *

    Checks whether the parent of this file is a symbolic link.

    - * + * *

    For java versions prior to 7 It doesn't really test for symbolic links but whether the canonical and absolute * paths of the file are identical - this may lead to false positives on some platforms.

    * @@ -678,9 +599,7 @@ public boolean isSymbolicLink( File parent, String name ) * @throws java.io.IOException . * @since Ant 1.5 */ - public boolean isParentSymbolicLink( File parent, String name ) - throws IOException - { - return NioFiles.isSymbolicLink( parent ); + public boolean isParentSymbolicLink(File parent, String name) throws IOException { + return NioFiles.isSymbolicLink(parent); } } diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java b/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java index 8e1fda24..b6c83ef9 100644 --- a/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java +++ b/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java @@ -20,18 +20,17 @@ /** * Observes the actions of a {@link DirectoryWalker}. - * + * * * @see DirectoryWalker */ -public interface DirectoryWalkListener -{ +public interface DirectoryWalkListener { /** * The directory walking has begun. * * @param basedir the basedir that walk started in. */ - void directoryWalkStarting( File basedir ); + void directoryWalkStarting(File basedir); /** * The included entry that was encountered. @@ -39,12 +38,12 @@ public interface DirectoryWalkListener * @param percentage rough percentage of the walk completed. (inaccurate) * @param file the file that was included. */ - void directoryWalkStep( int percentage, File file ); + void directoryWalkStep(int percentage, File file); /** * The directory walking has finished. */ void directoryWalkFinished(); - void debug( String message ); + void debug(String message); } diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java b/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java index 2ffa4b0a..58142c50 100644 --- a/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java +++ b/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java @@ -24,16 +24,14 @@ /** * DirectoryWalker - * + * * */ -public class DirectoryWalker -{ +public class DirectoryWalker { /** * DirStackEntry is an Item on the {@link DirectoryWalker#dirStack} */ - class DirStackEntry - { + class DirStackEntry { /** * Count of files in the directory. */ @@ -65,8 +63,7 @@ class DirStackEntry * @param d the directory to track * @param length the length of entries in the directory. */ - public DirStackEntry( File d, int length ) - { + public DirStackEntry(File d, int length) { dir = d; count = length; } @@ -76,9 +73,8 @@ public DirStackEntry( File d, int length ) * * @return the value for the next percentage offset. */ - public double getNextPercentageOffset() - { - return percentageOffset + ( index * ( percentageSize / count ) ); + public double getNextPercentageOffset() { + return percentageOffset + (index * (percentageSize / count)); } /** @@ -86,9 +82,8 @@ public double getNextPercentageOffset() * * @return the value for the next percentage size. */ - public double getNextPercentageSize() - { - return ( percentageSize / count ); + public double getNextPercentageSize() { + return (percentageSize / count); } /** @@ -96,19 +91,17 @@ public double getNextPercentageSize() * * @return the percentage right now. */ - public int getPercentage() - { + public int getPercentage() { double percentageWithinDir = (double) index / (double) count; - return (int) Math.floor( percentageOffset + ( percentageWithinDir * percentageSize ) ); + return (int) Math.floor(percentageOffset + (percentageWithinDir * percentageSize)); } @Override - public String toString() - { + public String toString() { return "DirStackEntry[" + "dir=" + dir.getAbsolutePath() + ",count=" + count + ",index=" + index - + ",percentageOffset=" + percentageOffset + ",percentageSize=" + percentageSize + ",percentage()=" - + getPercentage() + ",getNextPercentageOffset()=" + getNextPercentageOffset() - + ",getNextPercentageSize()=" + getNextPercentageSize() + "]"; + + ",percentageOffset=" + percentageOffset + ",percentageSize=" + percentageSize + ",percentage()=" + + getPercentage() + ",getNextPercentageOffset()=" + getNextPercentageOffset() + + ",getNextPercentageSize()=" + getNextPercentageSize() + "]"; } } @@ -128,137 +121,111 @@ public String toString() private boolean debugEnabled = false; - public DirectoryWalker() - { + public DirectoryWalker() { includes = new ArrayList(); excludes = new ArrayList(); listeners = new ArrayList(); } - public void addDirectoryWalkListener( DirectoryWalkListener listener ) - { - listeners.add( listener ); + public void addDirectoryWalkListener(DirectoryWalkListener listener) { + listeners.add(listener); } - public void addExclude( String exclude ) - { - excludes.add( fixPattern( exclude ) ); + public void addExclude(String exclude) { + excludes.add(fixPattern(exclude)); } - public void addInclude( String include ) - { - includes.add( fixPattern( include ) ); + public void addInclude(String include) { + includes.add(fixPattern(include)); } /** * Add's to the Exclude List the default list of SCM excludes. */ - public void addSCMExcludes() - { + public void addSCMExcludes() { String scmexcludes[] = AbstractScanner.DEFAULTEXCLUDES; - for ( String scmexclude : scmexcludes ) - { - addExclude( scmexclude ); + for (String scmexclude : scmexcludes) { + addExclude(scmexclude); } } - private void fireStep( File file ) - { + private void fireStep(File file) { DirStackEntry dsEntry = dirStack.peek(); int percentage = dsEntry.getPercentage(); - for ( Object listener1 : listeners ) - { + for (Object listener1 : listeners) { DirectoryWalkListener listener = (DirectoryWalkListener) listener1; - listener.directoryWalkStep( percentage, file ); + listener.directoryWalkStep(percentage, file); } } - private void fireWalkFinished() - { - for ( DirectoryWalkListener listener1 : listeners ) - { + private void fireWalkFinished() { + for (DirectoryWalkListener listener1 : listeners) { listener1.directoryWalkFinished(); } } - private void fireWalkStarting() - { - for ( DirectoryWalkListener listener1 : listeners ) - { - listener1.directoryWalkStarting( baseDir ); + private void fireWalkStarting() { + for (DirectoryWalkListener listener1 : listeners) { + listener1.directoryWalkStarting(baseDir); } } - private void fireDebugMessage( String message ) - { - for ( DirectoryWalkListener listener1 : listeners ) - { - listener1.debug( message ); + private void fireDebugMessage(String message) { + for (DirectoryWalkListener listener1 : listeners) { + listener1.debug(message); } } - private String fixPattern( String pattern ) - { + private String fixPattern(String pattern) { String cleanPattern = pattern; - if ( File.separatorChar != '/' ) - { - cleanPattern = cleanPattern.replace( '/', File.separatorChar ); + if (File.separatorChar != '/') { + cleanPattern = cleanPattern.replace('/', File.separatorChar); } - if ( File.separatorChar != '\\' ) - { - cleanPattern = cleanPattern.replace( '\\', File.separatorChar ); + if (File.separatorChar != '\\') { + cleanPattern = cleanPattern.replace('\\', File.separatorChar); } return cleanPattern; } - public void setDebugMode( boolean debugEnabled ) - { + public void setDebugMode(boolean debugEnabled) { this.debugEnabled = debugEnabled; } /** * @return Returns the baseDir. */ - public File getBaseDir() - { + public File getBaseDir() { return baseDir; } /** * @return Returns the excludes. */ - public List getExcludes() - { + public List getExcludes() { return excludes; } /** * @return Returns the includes. */ - public List getIncludes() - { + public List getIncludes() { return includes; } - private boolean isExcluded( String name ) - { - return isMatch( excludes, name ); + private boolean isExcluded(String name) { + return isMatch(excludes, name); } - private boolean isIncluded( String name ) - { - return isMatch( includes, name ); + private boolean isIncluded(String name) { + return isMatch(includes, name); } - private boolean isMatch( List patterns, String name ) - { - for ( String pattern1 : patterns ) - { - if ( SelectorUtils.matchPath( pattern1, name, isCaseSensitive ) ) - { + private boolean isMatch(List patterns, String name) { + for (String pattern1 : patterns) { + if (SelectorUtils.matchPath(pattern1, name, isCaseSensitive)) { return true; } } @@ -266,9 +233,8 @@ private boolean isMatch( List patterns, String name ) return false; } - private String relativeToBaseDir( File file ) - { - return file.getAbsolutePath().substring( baseDirOffset + 1 ); + private String relativeToBaseDir(File file) { + return file.getAbsolutePath().substring(baseDirOffset + 1); } /** @@ -276,110 +242,90 @@ private String relativeToBaseDir( File file ) * * @param listener the listener to remove. */ - public void removeDirectoryWalkListener( DirectoryWalkListener listener ) - { - listeners.remove( listener ); + public void removeDirectoryWalkListener(DirectoryWalkListener listener) { + listeners.remove(listener); } /** * Performs a Scan against the provided {@link #setBaseDir(File)} */ - public void scan() - { - if ( baseDir == null ) - { - throw new IllegalStateException( "Scan Failure. BaseDir not specified." ); + public void scan() { + if (baseDir == null) { + throw new IllegalStateException("Scan Failure. BaseDir not specified."); } - if ( !baseDir.exists() ) - { - throw new IllegalStateException( "Scan Failure. BaseDir does not exist." ); + if (!baseDir.exists()) { + throw new IllegalStateException("Scan Failure. BaseDir does not exist."); } - if ( !baseDir.isDirectory() ) - { - throw new IllegalStateException( "Scan Failure. BaseDir is not a directory." ); + if (!baseDir.isDirectory()) { + throw new IllegalStateException("Scan Failure. BaseDir is not a directory."); } - if ( includes.isEmpty() ) - { + if (includes.isEmpty()) { // default to include all. - addInclude( "**" ); + addInclude("**"); } - if ( debugEnabled ) - { + if (debugEnabled) { Iterator it; StringBuilder dbg = new StringBuilder(); - dbg.append( "DirectoryWalker Scan" ); - dbg.append( "\n Base Dir: " ).append( baseDir.getAbsolutePath() ); - dbg.append( "\n Includes: " ); + dbg.append("DirectoryWalker Scan"); + dbg.append("\n Base Dir: ").append(baseDir.getAbsolutePath()); + dbg.append("\n Includes: "); it = includes.iterator(); - while ( it.hasNext() ) - { + while (it.hasNext()) { String include = it.next(); - dbg.append( "\n - \"" ).append( include ).append( "\"" ); + dbg.append("\n - \"").append(include).append("\""); } - dbg.append( "\n Excludes: " ); + dbg.append("\n Excludes: "); it = excludes.iterator(); - while ( it.hasNext() ) - { + while (it.hasNext()) { String exclude = it.next(); - dbg.append( "\n - \"" ).append( exclude ).append( "\"" ); + dbg.append("\n - \"").append(exclude).append("\""); } - fireDebugMessage( dbg.toString() ); + fireDebugMessage(dbg.toString()); } fireWalkStarting(); dirStack = new Stack(); - scanDir( baseDir ); + scanDir(baseDir); fireWalkFinished(); } - private void scanDir( File dir ) - { + private void scanDir(File dir) { File[] files = dir.listFiles(); - if ( files == null ) - { + if (files == null) { return; } - DirectoryWalker.DirStackEntry curStackEntry = new DirectoryWalker.DirStackEntry( dir, files.length ); - if ( dirStack.isEmpty() ) - { + DirectoryWalker.DirStackEntry curStackEntry = new DirectoryWalker.DirStackEntry(dir, files.length); + if (dirStack.isEmpty()) { curStackEntry.percentageOffset = 0; curStackEntry.percentageSize = 100; - } - else - { + } else { DirectoryWalker.DirStackEntry previousStackEntry = dirStack.peek(); curStackEntry.percentageOffset = previousStackEntry.getNextPercentageOffset(); curStackEntry.percentageSize = previousStackEntry.getNextPercentageSize(); } - dirStack.push( curStackEntry ); + dirStack.push(curStackEntry); - for ( int idx = 0; idx < files.length; idx++ ) - { + for (int idx = 0; idx < files.length; idx++) { curStackEntry.index = idx; - String name = relativeToBaseDir( files[idx] ); + String name = relativeToBaseDir(files[idx]); - if ( isExcluded( name ) ) - { - fireDebugMessage( name + " is excluded." ); + if (isExcluded(name)) { + fireDebugMessage(name + " is excluded."); continue; } - if ( files[idx].isDirectory() ) - { - scanDir( files[idx] ); - } - else - { - if ( isIncluded( name ) ) - { - fireStep( files[idx] ); + if (files[idx].isDirectory()) { + scanDir(files[idx]); + } else { + if (isIncluded(name)) { + fireStep(files[idx]); } } } @@ -390,8 +336,7 @@ private void scanDir( File dir ) /** * @param baseDir The baseDir to set. */ - public void setBaseDir( File baseDir ) - { + public void setBaseDir(File baseDir) { this.baseDir = baseDir; baseDirOffset = baseDir.getAbsolutePath().length(); } @@ -399,14 +344,11 @@ public void setBaseDir( File baseDir ) /** * @param entries The excludes to set. */ - public void setExcludes( List entries ) - { + public void setExcludes(List entries) { excludes.clear(); - if ( entries != null ) - { - for ( String entry : entries ) - { - excludes.add( fixPattern( entry ) ); + if (entries != null) { + for (String entry : entries) { + excludes.add(fixPattern(entry)); } } } @@ -414,16 +356,12 @@ public void setExcludes( List entries ) /** * @param entries The includes to set. */ - public void setIncludes( List entries ) - { + public void setIncludes(List entries) { includes.clear(); - if ( entries != null ) - { - for ( String entry : entries ) - { - includes.add( fixPattern( entry ) ); + if (entries != null) { + for (String entry : entries) { + includes.add(fixPattern(entry)); } } } - } diff --git a/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java b/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java index 540dbe98..de4aa5df 100644 --- a/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java +++ b/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java @@ -78,8 +78,7 @@ * @since 1.0 * */ -public class ExceptionUtils -{ +public class ExceptionUtils { /** * Used when printing stack frames to denote the start of a wrapped exception. Package private for accessibility by * test suite. @@ -89,15 +88,21 @@ public class ExceptionUtils /** * The names of methods commonly used to access a wrapped exception. */ - protected static String[] CAUSE_METHOD_NAMES = { "getCause", "getNextException", "getTargetException", - "getException", "getSourceException", "getRootCause", "getCausedByException", "getNested" }; + protected static String[] CAUSE_METHOD_NAMES = { + "getCause", + "getNextException", + "getTargetException", + "getException", + "getSourceException", + "getRootCause", + "getCausedByException", + "getNested" + }; /** * Constructs a new ExceptionUtils. Protected to discourage instantiation. */ - protected ExceptionUtils() - { - } + protected ExceptionUtils() {} /** *

    @@ -106,13 +111,11 @@ protected ExceptionUtils() * * @param methodName the methodName to add to the list, null and empty strings are ignored */ - public static void addCauseMethodName( String methodName ) - { - if ( methodName != null && methodName.length() > 0 ) - { - List list = new ArrayList( Arrays.asList( CAUSE_METHOD_NAMES ) ); - list.add( methodName ); - CAUSE_METHOD_NAMES = list.toArray( new String[0] ); + public static void addCauseMethodName(String methodName) { + if (methodName != null && methodName.length() > 0) { + List list = new ArrayList(Arrays.asList(CAUSE_METHOD_NAMES)); + list.add(methodName); + CAUSE_METHOD_NAMES = list.toArray(new String[0]); } } @@ -147,9 +150,8 @@ public static void addCauseMethodName( String methodName ) * @return The cause of the Throwable. * @throws NullPointerException if the throwable is null */ - public static Throwable getCause( Throwable throwable ) - { - return getCause( throwable, CAUSE_METHOD_NAMES ); + public static Throwable getCause(Throwable throwable) { + return getCause(throwable, CAUSE_METHOD_NAMES); } /** @@ -163,23 +165,18 @@ public static Throwable getCause( Throwable throwable ) * @throws NullPointerException if the method names array is null or contains null * @throws NullPointerException if the throwable is null */ - public static Throwable getCause( Throwable throwable, String[] methodNames ) - { - Throwable cause = getCauseUsingWellKnownTypes( throwable ); - if ( cause == null ) - { - for ( String methodName : methodNames ) - { - cause = getCauseUsingMethodName( throwable, methodName ); - if ( cause != null ) - { + public static Throwable getCause(Throwable throwable, String[] methodNames) { + Throwable cause = getCauseUsingWellKnownTypes(throwable); + if (cause == null) { + for (String methodName : methodNames) { + cause = getCauseUsingMethodName(throwable, methodName); + if (cause != null) { break; } } - if ( cause == null ) - { - cause = getCauseUsingFieldName( throwable, "detail" ); + if (cause == null) { + cause = getCauseUsingFieldName(throwable, "detail"); } } return cause; @@ -194,14 +191,11 @@ public static Throwable getCause( Throwable throwable, String[] methodNames ) * @param throwable the throwable to get the root cause for * @return The root cause of the Throwable. */ - public static Throwable getRootCause( Throwable throwable ) - { - Throwable cause = getCause( throwable ); - if ( cause != null ) - { + public static Throwable getRootCause(Throwable throwable) { + Throwable cause = getCause(throwable); + if (cause != null) { throwable = cause; - while ( ( throwable = getCause( throwable ) ) != null ) - { + while ((throwable = getCause(throwable)) != null) { cause = throwable; } } @@ -217,18 +211,12 @@ public static Throwable getRootCause( Throwable throwable ) * @param throwable the exception to examine * @return The wrapped exception, or null if not found. */ - private static Throwable getCauseUsingWellKnownTypes( Throwable throwable ) - { - if ( throwable instanceof SQLException ) - { - return ( (SQLException) throwable ).getNextException(); - } - else if ( throwable instanceof InvocationTargetException ) - { - return ( (InvocationTargetException) throwable ).getTargetException(); - } - else - { + private static Throwable getCauseUsingWellKnownTypes(Throwable throwable) { + if (throwable instanceof SQLException) { + return ((SQLException) throwable).getNextException(); + } else if (throwable instanceof InvocationTargetException) { + return ((InvocationTargetException) throwable).getTargetException(); + } else { return null; } } @@ -242,34 +230,20 @@ else if ( throwable instanceof InvocationTargetException ) * @param methodName the name of the method to find and invoke * @return The wrapped exception, or null if not found. */ - private static Throwable getCauseUsingMethodName( Throwable throwable, String methodName ) - { + private static Throwable getCauseUsingMethodName(Throwable throwable, String methodName) { Method method = null; - try - { - method = throwable.getClass().getMethod( methodName, null ); - } - catch ( NoSuchMethodException ignored ) - { - } - catch ( SecurityException ignored ) - { - } - - if ( method != null && Throwable.class.isAssignableFrom( method.getReturnType() ) ) - { - try - { - return (Throwable) method.invoke( throwable, new Object[0] ); - } - catch ( IllegalAccessException ignored ) - { - } - catch ( IllegalArgumentException ignored ) - { - } - catch ( InvocationTargetException ignored ) - { + try { + method = throwable.getClass().getMethod(methodName, null); + } catch (NoSuchMethodException ignored) { + } catch (SecurityException ignored) { + } + + if (method != null && Throwable.class.isAssignableFrom(method.getReturnType())) { + try { + return (Throwable) method.invoke(throwable, new Object[0]); + } catch (IllegalAccessException ignored) { + } catch (IllegalArgumentException ignored) { + } catch (InvocationTargetException ignored) { } } return null; @@ -284,31 +258,19 @@ private static Throwable getCauseUsingMethodName( Throwable throwable, String me * @param fieldName the name of the attribute to examine * @return The wrapped exception, or null if not found. */ - private static Throwable getCauseUsingFieldName( Throwable throwable, String fieldName ) - { + private static Throwable getCauseUsingFieldName(Throwable throwable, String fieldName) { Field field = null; - try - { - field = throwable.getClass().getField( fieldName ); - } - catch ( NoSuchFieldException ignored ) - { - } - catch ( SecurityException ignored ) - { + try { + field = throwable.getClass().getField(fieldName); + } catch (NoSuchFieldException ignored) { + } catch (SecurityException ignored) { } - if ( field != null && Throwable.class.isAssignableFrom( field.getType() ) ) - { - try - { - return (Throwable) field.get( throwable ); - } - catch ( IllegalAccessException ignored ) - { - } - catch ( IllegalArgumentException ignored ) - { + if (field != null && Throwable.class.isAssignableFrom(field.getType())) { + try { + return (Throwable) field.get(throwable); + } catch (IllegalAccessException ignored) { + } catch (IllegalArgumentException ignored) { } } return null; @@ -322,14 +284,12 @@ private static Throwable getCauseUsingFieldName( Throwable throwable, String fie * @param throwable the exception to inspect * @return The throwable count. */ - public static int getThrowableCount( Throwable throwable ) - { + public static int getThrowableCount(Throwable throwable) { // Count the number of throwables int count = 0; - while ( throwable != null ) - { + while (throwable != null) { count++; - throwable = ExceptionUtils.getCause( throwable ); + throwable = ExceptionUtils.getCause(throwable); } return count; } @@ -342,15 +302,13 @@ public static int getThrowableCount( Throwable throwable ) * @param throwable the exception to inspect * @return The list of Throwable objects. */ - public static Throwable[] getThrowables( Throwable throwable ) - { + public static Throwable[] getThrowables(Throwable throwable) { List list = new ArrayList<>(); - while ( throwable != null ) - { - list.add( throwable ); - throwable = getCause( throwable ); + while (throwable != null) { + list.add(throwable); + throwable = getCause(throwable); } - return list.toArray( new Throwable[0] ); + return list.toArray(new Throwable[0]); } /** @@ -363,9 +321,8 @@ public static Throwable[] getThrowables( Throwable throwable ) * @return index of the stack matching the type * @see #indexOfThrowable(Throwable, Class, int) */ - public static int indexOfThrowable( Throwable throwable, Class type ) - { - return indexOfThrowable( throwable, type, 0 ); + public static int indexOfThrowable(Throwable throwable, Class type) { + return indexOfThrowable(throwable, type, 0); } /** @@ -382,21 +339,16 @@ public static int indexOfThrowable( Throwable throwable, Class type ) * @throws IndexOutOfBoundsException If the fromIndex argument is negative or not less than the count * of Throwables in the chain. */ - public static int indexOfThrowable( Throwable throwable, Class type, int fromIndex ) - { - if ( fromIndex < 0 ) - { - throw new IndexOutOfBoundsException( "Throwable index out of range: " + fromIndex ); + public static int indexOfThrowable(Throwable throwable, Class type, int fromIndex) { + if (fromIndex < 0) { + throw new IndexOutOfBoundsException("Throwable index out of range: " + fromIndex); } - Throwable[] throwables = ExceptionUtils.getThrowables( throwable ); - if ( fromIndex >= throwables.length ) - { - throw new IndexOutOfBoundsException( "Throwable index out of range: " + fromIndex ); + Throwable[] throwables = ExceptionUtils.getThrowables(throwable); + if (fromIndex >= throwables.length) { + throw new IndexOutOfBoundsException("Throwable index out of range: " + fromIndex); } - for ( int i = fromIndex; i < throwables.length; i++ ) - { - if ( throwables[i].getClass().equals( type ) ) - { + for (int i = fromIndex; i < throwables.length; i++) { + if (throwables[i].getClass().equals(type)) { return i; } } @@ -412,12 +364,10 @@ public static int indexOfThrowable( Throwable throwable, Class type, int fromInd * @param t the exception * @param stream the stream */ - public static void printRootCauseStackTrace( Throwable t, PrintStream stream ) - { - String trace[] = getRootCauseStackTrace( t ); - for ( String aTrace : trace ) - { - stream.println( aTrace ); + public static void printRootCauseStackTrace(Throwable t, PrintStream stream) { + String trace[] = getRootCauseStackTrace(t); + for (String aTrace : trace) { + stream.println(aTrace); } stream.flush(); } @@ -426,9 +376,8 @@ public static void printRootCauseStackTrace( Throwable t, PrintStream stream ) * Equivalent to printRootCauseStackTrace(t, System.err) * @param t the exception */ - public static void printRootCauseStackTrace( Throwable t ) - { - printRootCauseStackTrace( t, System.err ); + public static void printRootCauseStackTrace(Throwable t) { + printRootCauseStackTrace(t, System.err); } /** @@ -436,12 +385,10 @@ public static void printRootCauseStackTrace( Throwable t ) * @param t the cause * @param writer the writer */ - public static void printRootCauseStackTrace( Throwable t, PrintWriter writer ) - { - String trace[] = getRootCauseStackTrace( t ); - for ( String aTrace : trace ) - { - writer.println( aTrace ); + public static void printRootCauseStackTrace(Throwable t, PrintWriter writer) { + String trace[] = getRootCauseStackTrace(t); + for (String aTrace : trace) { + writer.println(aTrace); } writer.flush(); } @@ -452,34 +399,27 @@ public static void printRootCauseStackTrace( Throwable t, PrintWriter writer ) * @param t the cause * @return the Stack */ - public static String[] getRootCauseStackTrace( Throwable t ) - { - Throwable[] throwables = getThrowables( t ); + public static String[] getRootCauseStackTrace(Throwable t) { + Throwable[] throwables = getThrowables(t); int count = throwables.length; ArrayList frames = new ArrayList<>(); - List nextTrace = getStackFrameList( throwables[count - 1] ); - for ( int i = count; --i >= 0; ) - { + List nextTrace = getStackFrameList(throwables[count - 1]); + for (int i = count; --i >= 0; ) { List trace = nextTrace; - if ( i != 0 ) - { - nextTrace = getStackFrameList( throwables[i - 1] ); - removeCommonFrames( trace, nextTrace ); + if (i != 0) { + nextTrace = getStackFrameList(throwables[i - 1]); + removeCommonFrames(trace, nextTrace); } - if ( i == ( count - 1 ) ) - { - frames.add( throwables[i].toString() ); + if (i == (count - 1)) { + frames.add(throwables[i].toString()); + } else { + frames.add(WRAPPED_MARKER + throwables[i].toString()); } - else - { - frames.add( WRAPPED_MARKER + throwables[i].toString() ); - } - for ( String aTrace : trace ) - { - frames.add( aTrace ); + for (String aTrace : trace) { + frames.add(aTrace); } } - return frames.toArray( new String[0] ); + return frames.toArray(new String[0]); } /** @@ -488,19 +428,16 @@ public static String[] getRootCauseStackTrace( Throwable t ) * @param causeFrames stack trace of a cause throwable * @param wrapperFrames stack trace of a wrapper throwable */ - private static void removeCommonFrames( List causeFrames, List wrapperFrames ) - { + private static void removeCommonFrames(List causeFrames, List wrapperFrames) { int causeFrameIndex = causeFrames.size() - 1; int wrapperFrameIndex = wrapperFrames.size() - 1; - while ( causeFrameIndex >= 0 && wrapperFrameIndex >= 0 ) - { + while (causeFrameIndex >= 0 && wrapperFrameIndex >= 0) { // Remove the frame from the cause trace if it is the same // as in the wrapper trace - String causeFrame = causeFrames.get( causeFrameIndex ); - String wrapperFrame = wrapperFrames.get( wrapperFrameIndex ); - if ( causeFrame.equals( wrapperFrame ) ) - { - causeFrames.remove( causeFrameIndex ); + String causeFrame = causeFrames.get(causeFrameIndex); + String wrapperFrame = wrapperFrames.get(wrapperFrameIndex); + if (causeFrame.equals(wrapperFrame)) { + causeFrames.remove(causeFrameIndex); } causeFrameIndex--; wrapperFrameIndex--; @@ -513,11 +450,10 @@ private static void removeCommonFrames( List causeFrames, List w * @param t The Throwable. * @return The stack trace as generated by the exception's printStackTrace(PrintWriter) method. */ - public static String getStackTrace( Throwable t ) - { + public static String getStackTrace(Throwable t) { StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter( sw, true ); - t.printStackTrace( pw ); + PrintWriter pw = new PrintWriter(sw, true); + t.printStackTrace(pw); return sw.getBuffer().toString(); } @@ -527,16 +463,13 @@ public static String getStackTrace( Throwable t ) * @param t The Throwable. * @return The nested stack trace, with the root cause first. */ - public static String getFullStackTrace( Throwable t ) - { + public static String getFullStackTrace(Throwable t) { StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter( sw, true ); - Throwable[] ts = getThrowables( t ); - for ( Throwable t1 : ts ) - { - t1.printStackTrace( pw ); - if ( isNestedThrowable( t1 ) ) - { + PrintWriter pw = new PrintWriter(sw, true); + Throwable[] ts = getThrowables(t); + for (Throwable t1 : ts) { + t1.printStackTrace(pw); + if (isNestedThrowable(t1)) { break; } } @@ -549,53 +482,35 @@ public static String getFullStackTrace( Throwable t ) * @param throwable The Throwable. * @return boolean true/false */ - public static boolean isNestedThrowable( Throwable throwable ) - { - if ( throwable == null ) - { + public static boolean isNestedThrowable(Throwable throwable) { + if (throwable == null) { return false; } - if ( throwable instanceof SQLException ) - { + if (throwable instanceof SQLException) { return true; - } - else if ( throwable instanceof InvocationTargetException ) - { + } else if (throwable instanceof InvocationTargetException) { return true; } - for ( String CAUSE_METHOD_NAME : CAUSE_METHOD_NAMES ) - { - try - { - Method method = throwable.getClass().getMethod( CAUSE_METHOD_NAME, null ); - if ( method != null ) - { + for (String CAUSE_METHOD_NAME : CAUSE_METHOD_NAMES) { + try { + Method method = throwable.getClass().getMethod(CAUSE_METHOD_NAME, null); + if (method != null) { return true; } - } - catch ( NoSuchMethodException ignored ) - { - } - catch ( SecurityException ignored ) - { + } catch (NoSuchMethodException ignored) { + } catch (SecurityException ignored) { } } - try - { - Field field = throwable.getClass().getField( "detail" ); - if ( field != null ) - { + try { + Field field = throwable.getClass().getField("detail"); + if (field != null) { return true; } - } - catch ( NoSuchFieldException ignored ) - { - } - catch ( SecurityException ignored ) - { + } catch (NoSuchFieldException ignored) { + } catch (SecurityException ignored) { } return false; @@ -608,24 +523,21 @@ else if ( throwable instanceof InvocationTargetException ) * @param t The Throwable. * @return An array of strings describing each stack frame. */ - public static String[] getStackFrames( Throwable t ) - { - return getStackFrames( getStackTrace( t ) ); + public static String[] getStackFrames(Throwable t) { + return getStackFrames(getStackTrace(t)); } /** * Functionality shared between the getStackFrames(Throwable) methods of this and the classes. */ - static String[] getStackFrames( String stackTrace ) - { - String linebreak = System.getProperty( "line.separator" ); - StringTokenizer frames = new StringTokenizer( stackTrace, linebreak ); + static String[] getStackFrames(String stackTrace) { + String linebreak = System.getProperty("line.separator"); + StringTokenizer frames = new StringTokenizer(stackTrace, linebreak); List list = new LinkedList(); - while ( frames.hasMoreTokens() ) - { - list.add( frames.nextToken() ); + while (frames.hasMoreTokens()) { + list.add(frames.nextToken()); } - return list.toArray( new String[0] ); + return list.toArray(new String[0]); } /** @@ -635,25 +547,20 @@ static String[] getStackFrames( String stackTrace ) * @param t is any throwable * @return List of stack frames */ - static List getStackFrameList( Throwable t ) - { - String stackTrace = getStackTrace( t ); - String linebreak = System.getProperty( "line.separator" ); - StringTokenizer frames = new StringTokenizer( stackTrace, linebreak ); + static List getStackFrameList(Throwable t) { + String stackTrace = getStackTrace(t); + String linebreak = System.getProperty("line.separator"); + StringTokenizer frames = new StringTokenizer(stackTrace, linebreak); List list = new LinkedList(); boolean traceStarted = false; - while ( frames.hasMoreTokens() ) - { + while (frames.hasMoreTokens()) { String token = frames.nextToken(); // Determine if the line starts with at - int at = token.indexOf( "at" ); - if ( at != -1 && token.substring( 0, at ).trim().length() == 0 ) - { + int at = token.indexOf("at"); + if (at != -1 && token.substring(0, at).trim().length() == 0) { traceStarted = true; - list.add( token ); - } - else if ( traceStarted ) - { + list.add(token); + } else if (traceStarted) { break; } } diff --git a/src/main/java/org/codehaus/plexus/util/Expand.java b/src/main/java/org/codehaus/plexus/util/Expand.java index 5b195811..8abcdd95 100644 --- a/src/main/java/org/codehaus/plexus/util/Expand.java +++ b/src/main/java/org/codehaus/plexus/util/Expand.java @@ -73,12 +73,11 @@ * @since Ant 1.1 @ant.task category="packaging" name="unzip" name="unjar" name="unwar" * */ -public class Expand -{ +public class Expand { - private File dest;// req + private File dest; // req - private File source;// req + private File source; // req private boolean overwrite = true; @@ -87,44 +86,37 @@ public class Expand * * @exception Exception Thrown in unrecoverable error. */ - public void execute() - throws Exception - { - expandFile( source, dest ); + public void execute() throws Exception { + expandFile(source, dest); } - protected void expandFile( final File srcF, final File dir ) - throws Exception - { + protected void expandFile(final File srcF, final File dir) throws Exception { // code from WarExpand - try ( ZipInputStream zis = new ZipInputStream( Files.newInputStream( srcF.toPath() ) ) ) - { - for ( ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry() ) - { - extractFile( srcF, dir, zis, ze.getName(), new Date( ze.getTime() ), ze.isDirectory() ); + try (ZipInputStream zis = new ZipInputStream(Files.newInputStream(srcF.toPath()))) { + for (ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry()) { + extractFile(srcF, dir, zis, ze.getName(), new Date(ze.getTime()), ze.isDirectory()); } - } - catch ( IOException ioe ) - { - throw new Exception( "Error while expanding " + srcF.getPath(), ioe ); + } catch (IOException ioe) { + throw new Exception("Error while expanding " + srcF.getPath(), ioe); } } - protected void extractFile( File srcF, File dir, InputStream compressedInputStream, String entryName, - Date entryDate, boolean isDirectory ) - throws Exception - { - File f = FileUtils.resolveFile( dir, entryName ); - - if ( !f.getAbsolutePath().startsWith( dir.getAbsolutePath() ) ) - { - throw new IOException( "Entry '" + entryName + "' outside the target directory." ); + protected void extractFile( + File srcF, + File dir, + InputStream compressedInputStream, + String entryName, + Date entryDate, + boolean isDirectory) + throws Exception { + File f = FileUtils.resolveFile(dir, entryName); + + if (!f.getAbsolutePath().startsWith(dir.getAbsolutePath())) { + throw new IOException("Entry '" + entryName + "' outside the target directory."); } - try - { - if ( !overwrite && f.exists() && f.lastModified() >= entryDate.getTime() ) - { + try { + if (!overwrite && f.exists() && f.lastModified() >= entryDate.getTime()) { return; } @@ -132,30 +124,23 @@ protected void extractFile( File srcF, File dir, InputStream compressedInputStre File dirF = f.getParentFile(); dirF.mkdirs(); - if ( isDirectory ) - { + if (isDirectory) { f.mkdirs(); - } - else - { + } else { byte[] buffer = new byte[65536]; - - try ( OutputStream fos = Files.newOutputStream( f.toPath() ) ) - { - for ( int length = compressedInputStream.read( buffer ); - length >= 0; - fos.write( buffer, 0, length ), length = compressedInputStream.read( buffer ) ) + + try (OutputStream fos = Files.newOutputStream(f.toPath())) { + for (int length = compressedInputStream.read(buffer); + length >= 0; + fos.write(buffer, 0, length), length = compressedInputStream.read(buffer)) ; } } - f.setLastModified( entryDate.getTime() ); + f.setLastModified(entryDate.getTime()); + } catch (FileNotFoundException ex) { + throw new Exception("Can't extract file " + srcF.getPath(), ex); } - catch ( FileNotFoundException ex ) - { - throw new Exception( "Can't extract file " + srcF.getPath(), ex ); - } - } /** @@ -163,8 +148,7 @@ protected void extractFile( File srcF, File dir, InputStream compressedInputStre * * @param d Path to the directory. */ - public void setDest( File d ) - { + public void setDest(File d) { this.dest = d; } @@ -173,17 +157,14 @@ public void setDest( File d ) * * @param s Path to zip-file. */ - public void setSrc( File s ) - { + public void setSrc(File s) { this.source = s; } /** * @param b Should we overwrite files in dest, even if they are newer than the corresponding entries in the archive? */ - public void setOverwrite( boolean b ) - { + public void setOverwrite(boolean b) { overwrite = b; } - } diff --git a/src/main/java/org/codehaus/plexus/util/FastMap.java b/src/main/java/org/codehaus/plexus/util/FastMap.java index 9bb9e82f..54076641 100644 --- a/src/main/java/org/codehaus/plexus/util/FastMap.java +++ b/src/main/java/org/codehaus/plexus/util/FastMap.java @@ -49,13 +49,11 @@ *

    * This class is public domain (not copyrighted). *

    - * + * * @author Jean-Marie Dautelle * @version 5.3, October 31 2003 */ -public class FastMap - implements Map, Cloneable, Serializable -{ +public class FastMap implements Map, Cloneable, Serializable { /** * Holds the map's hash table. @@ -95,40 +93,37 @@ public class FastMap /** * Creates a {@link FastMap} with a capacity of 256 entries. */ - public FastMap() - { - initialize( 256 ); + public FastMap() { + initialize(256); } /** * Creates a {@link FastMap}, copy of the specified Map. If the specified map is not an instance of * {@link FastMap}, the newly created map has a capacity set to the specified map's size. The copy has the same * order as the original, regardless of the original map's implementation: - * + * *
          *     TreeMap dictionary = ...;
          *     FastMap dictionaryLookup = new FastMap(dictionary);
          * 
    - * + * * @param map the map whose mappings are to be placed in this map. */ - public FastMap( Map map ) - { - int capacity = ( map instanceof FastMap ) ? ( (FastMap) map ).capacity() : map.size(); - initialize( capacity ); - putAll( map ); + public FastMap(Map map) { + int capacity = (map instanceof FastMap) ? ((FastMap) map).capacity() : map.size(); + initialize(capacity); + putAll(map); } /** * Creates a {@link FastMap} with the specified capacity. Unless the capacity is exceeded, operations on this map do * not allocate entries. For optimum performance, the capacity should be of the same order of magnitude or larger * than the expected map's size. - * + * * @param capacity the number of buckets in the hash table; it also defines the number of pre-allocated entries. */ - public FastMap( int capacity ) - { - initialize( capacity ); + public FastMap(int capacity) { + initialize(capacity); } /** @@ -137,8 +132,7 @@ public FastMap( int capacity ) * @return this map's size. */ @Override - public int size() - { + public int size() { return _size; } @@ -148,8 +142,7 @@ public int size() * * @return this map's capacity. */ - public int capacity() - { + public int capacity() { return _capacity; } @@ -159,8 +152,7 @@ public int capacity() * @return true if this map contains no key-value mappings; false otherwise. */ @Override - public boolean isEmpty() - { + public boolean isEmpty() { return _size == 0; } @@ -172,13 +164,10 @@ public boolean isEmpty() * @throws NullPointerException if the key is null. */ @Override - public boolean containsKey( Object key ) - { - EntryImpl entry = _entries[keyHash( key ) & _mask]; - while ( entry != null ) - { - if ( key.equals( entry._key ) ) - { + public boolean containsKey(Object key) { + EntryImpl entry = _entries[keyHash(key) & _mask]; + while (entry != null) { + if (key.equals(entry._key)) { return true; } entry = entry._next; @@ -194,13 +183,10 @@ public boolean containsKey( Object key ) * @throws NullPointerException if the key is null. */ @Override - public boolean containsValue( Object value ) - { + public boolean containsValue(Object value) { EntryImpl entry = _mapFirst; - while ( entry != null ) - { - if ( value.equals( entry._value ) ) - { + while (entry != null) { + if (value.equals(entry._value)) { return true; } entry = entry._after; @@ -217,13 +203,10 @@ public boolean containsValue( Object value ) * @throws NullPointerException if key is null. */ @Override - public V get( Object key ) - { - EntryImpl entry = _entries[keyHash( key ) & _mask]; - while ( entry != null ) - { - if ( key.equals( entry._key ) ) - { + public V get(Object key) { + EntryImpl entry = _entries[keyHash(key) & _mask]; + while (entry != null) { + if (key.equals(entry._key)) { return entry._value; } entry = entry._next; @@ -233,17 +216,14 @@ public V get( Object key ) /** * Returns the entry with the specified key. - * + * * @param key the key whose associated entry is to be returned. * @return the entry for the specified key or null if none. */ - public Map.Entry getEntry( Object key ) - { - EntryImpl entry = _entries[keyHash( key ) & _mask]; - while ( entry != null ) - { - if ( key.equals( entry._key ) ) - { + public Map.Entry getEntry(Object key) { + EntryImpl entry = _entries[keyHash(key) & _mask]; + while (entry != null) { + if (key.equals(entry._key)) { return entry; } entry = entry._next; @@ -263,13 +243,10 @@ public Map.Entry getEntry( Object key ) * @throws NullPointerException if the key is null. */ @Override - public Object put( Object key, Object value ) - { - EntryImpl entry = _entries[keyHash( key ) & _mask]; - while ( entry != null ) - { - if ( key.equals( entry._key ) ) - { + public Object put(Object key, Object value) { + EntryImpl entry = _entries[keyHash(key) & _mask]; + while (entry != null) { + if (key.equals(entry._key)) { Object prevValue = entry._value; entry._value = value; return prevValue; @@ -277,7 +254,7 @@ public Object put( Object key, Object value ) entry = entry._next; } // No previous mapping. - addEntry( key, value ); + addEntry(key, value); return null; } @@ -289,11 +266,9 @@ public Object put( Object key, Object value ) * null keys. */ @Override - public void putAll( Map map ) - { - for ( Entry entry : map.entrySet() ) - { - addEntry( entry.getKey(), entry.getValue() ); + public void putAll(Map map) { + for (Entry entry : map.entrySet()) { + addEntry(entry.getKey(), entry.getValue()); } } @@ -307,15 +282,12 @@ public void putAll( Map map ) * @throws NullPointerException if the key is null. */ @Override - public V remove( Object key ) - { - EntryImpl entry = _entries[keyHash( key ) & _mask]; - while ( entry != null ) - { - if ( key.equals( entry._key ) ) - { + public V remove(Object key) { + EntryImpl entry = _entries[keyHash(key) & _mask]; + while (entry != null) { + if (key.equals(entry._key)) { V prevValue = entry._value; - removeEntry( entry ); + removeEntry(entry); return prevValue; } entry = entry._next; @@ -327,28 +299,22 @@ public V remove( Object key ) * Removes all mappings from this {@link FastMap}. */ @Override - public void clear() - { + public void clear() { // Clears all keys, values and buckets linked lists. - for ( EntryImpl entry = _mapFirst; entry != null; entry = entry._after ) - { + for (EntryImpl entry = _mapFirst; entry != null; entry = entry._after) { entry._key = null; entry._value = null; entry._before = null; entry._next = null; - if ( entry._previous == null ) - { // First in bucket. + if (entry._previous == null) { // First in bucket. _entries[entry._index] = null; - } - else - { + } else { entry._previous = null; } } // Recycles all entries. - if ( _mapLast != null ) - { + if (_mapLast != null) { _mapLast._after = _poolFirst; // Connects to pool. _poolFirst = _mapFirst; _mapFirst = null; @@ -362,24 +328,18 @@ public void clear() * Changes the current capacity of this {@link FastMap}. If the capacity is increased, new entries are allocated and * added to the pool. If the capacity is decreased, entries from the pool are deallocated (and are eventually * garbage collected). The capacity also determined the number of buckets for the hash table. - * + * * @param newCapacity the new capacity of this map. */ - public void setCapacity( int newCapacity ) - { - if ( newCapacity > _capacity ) - { // Capacity increases. - for ( int i = _capacity; i < newCapacity; i++ ) - { + public void setCapacity(int newCapacity) { + if (newCapacity > _capacity) { // Capacity increases. + for (int i = _capacity; i < newCapacity; i++) { EntryImpl entry = new EntryImpl(); entry._after = _poolFirst; _poolFirst = entry; } - } - else if ( newCapacity < _capacity ) - { // Capacity decreases. - for ( int i = newCapacity; ( i < _capacity ) && ( _poolFirst != null ); i++ ) - { + } else if (newCapacity < _capacity) { // Capacity decreases. + for (int i = newCapacity; (i < _capacity) && (_poolFirst != null); i++) { // Disconnects the entry for gc to do its work. EntryImpl entry = _poolFirst; _poolFirst = entry._after; @@ -388,29 +348,25 @@ else if ( newCapacity < _capacity ) } // Find a power of 2 >= capacity int tableLength = 16; - while ( tableLength < newCapacity ) - { + while (tableLength < newCapacity) { tableLength <<= 1; } // Checks if the hash table has to be re-sized. - if ( _entries.length != tableLength ) - { + if (_entries.length != tableLength) { _entries = new EntryImpl[tableLength]; _mask = tableLength - 1; // Repopulates the hash table. EntryImpl entry = _mapFirst; - while ( entry != null ) - { - int index = keyHash( entry._key ) & _mask; + while (entry != null) { + int index = keyHash(entry._key) & _mask; entry._index = index; // Connects to bucket. entry._previous = null; // Resets previous. EntryImpl next = _entries[index]; entry._next = next; - if ( next != null ) - { + if (next != null) { next._previous = entry; } _entries[index] = entry; @@ -427,17 +383,13 @@ else if ( newCapacity < _capacity ) * @return a shallow copy of this map. */ @Override - public Object clone() - { - try - { + public Object clone() { + try { FastMap clone = (FastMap) super.clone(); - clone.initialize( _capacity ); - clone.putAll( this ); + clone.initialize(_capacity); + clone.putAll(this); return clone; - } - catch ( CloneNotSupportedException e ) - { + } catch (CloneNotSupportedException e) { // Should not happen, since we are Cloneable. throw new InternalError(); } @@ -451,35 +403,24 @@ public Object clone() * @return true if the specified object is equal to this map; false otherwise. */ @Override - public boolean equals( Object obj ) - { - if ( obj == this ) - { + public boolean equals(Object obj) { + if (obj == this) { return true; - } - else if ( obj instanceof Map ) - { + } else if (obj instanceof Map) { Map that = (Map) obj; - if ( this.size() == that.size() ) - { + if (this.size() == that.size()) { EntryImpl entry = _mapFirst; - while ( entry != null ) - { - if ( !that.entrySet().contains( entry ) ) - { + while (entry != null) { + if (!that.entrySet().contains(entry)) { return false; } entry = entry._after; } return true; - } - else - { + } else { return false; } - } - else - { + } else { return false; } } @@ -490,12 +431,10 @@ else if ( obj instanceof Map ) * @return the hash code value for this map. */ @Override - public int hashCode() - { + public int hashCode() { int code = 0; EntryImpl entry = _mapFirst; - while ( entry != null ) - { + while (entry != null) { code += entry.hashCode(); entry = entry._after; } @@ -508,8 +447,7 @@ public int hashCode() * @return this.entrySet().toString(); */ @Override - public String toString() - { + public String toString() { return entrySet().toString(); } @@ -523,40 +461,32 @@ public String toString() * @return a collection view of the values contained in this map. */ @Override - public Collection values() - { + public Collection values() { return _values; } private transient Values _values; - private class Values - extends AbstractCollection - { + private class Values extends AbstractCollection { @Override - public Iterator iterator() - { - return new Iterator() - { + public Iterator iterator() { + return new Iterator() { EntryImpl after = _mapFirst; EntryImpl before; @Override - public void remove() - { - removeEntry( before ); + public void remove() { + removeEntry(before); } @Override - public boolean hasNext() - { + public boolean hasNext() { return after != null; } @Override - public Object next() - { + public Object next() { before = after; after = after._after; return before._value; @@ -565,20 +495,17 @@ public Object next() } @Override - public int size() - { + public int size() { return _size; } @Override - public boolean contains( Object o ) - { - return containsValue( o ); + public boolean contains(Object o) { + return containsValue(o); } @Override - public void clear() - { + public void clear() { FastMap.this.clear(); } } @@ -594,40 +521,32 @@ public void clear() * @return a collection view of the mappings contained in this map. */ @Override - public Set entrySet() - { + public Set entrySet() { return _entrySet; } private transient EntrySet _entrySet; - private class EntrySet - extends AbstractSet - { + private class EntrySet extends AbstractSet { @Override - public Iterator iterator() - { - return new Iterator() - { + public Iterator iterator() { + return new Iterator() { EntryImpl after = _mapFirst; EntryImpl before; @Override - public void remove() - { - removeEntry( before ); + public void remove() { + removeEntry(before); } @Override - public boolean hasNext() - { + public boolean hasNext() { return after != null; } @Override - public Object next() - { + public Object next() { before = after; after = after._after; return before; @@ -636,36 +555,28 @@ public Object next() } @Override - public int size() - { + public int size() { return _size; } @Override - public boolean contains( Object obj ) - { // Optimization. - if ( obj instanceof Map.Entry ) - { + public boolean contains(Object obj) { // Optimization. + if (obj instanceof Map.Entry) { Map.Entry entry = (Map.Entry) obj; - Map.Entry mapEntry = getEntry( entry.getKey() ); - return entry.equals( mapEntry ); - } - else - { + Map.Entry mapEntry = getEntry(entry.getKey()); + return entry.equals(mapEntry); + } else { return false; } } @Override - public boolean remove( Object obj ) - { // Optimization. - if ( obj instanceof Map.Entry ) - { + public boolean remove(Object obj) { // Optimization. + if (obj instanceof Map.Entry) { Map.Entry entry = (Map.Entry) obj; - EntryImpl mapEntry = (EntryImpl) getEntry( entry.getKey() ); - if ( ( mapEntry != null ) && ( entry.getValue() ).equals( mapEntry._value ) ) - { - removeEntry( mapEntry ); + EntryImpl mapEntry = (EntryImpl) getEntry(entry.getKey()); + if ((mapEntry != null) && (entry.getValue()).equals(mapEntry._value)) { + removeEntry(mapEntry); return true; } } @@ -683,40 +594,32 @@ public boolean remove( Object obj ) * @return a set view of the keys contained in this map. */ @Override - public Set keySet() - { + public Set keySet() { return _keySet; } private transient KeySet _keySet; - private class KeySet - extends AbstractSet - { + private class KeySet extends AbstractSet { @Override - public Iterator iterator() - { - return new Iterator() - { + public Iterator iterator() { + return new Iterator() { EntryImpl after = _mapFirst; EntryImpl before; @Override - public void remove() - { - removeEntry( before ); + public void remove() { + removeEntry(before); } @Override - public boolean hasNext() - { + public boolean hasNext() { return after != null; } @Override - public Object next() - { + public Object next() { before = after; after = after._after; return before._key; @@ -725,26 +628,22 @@ public Object next() } @Override - public int size() - { + public int size() { return _size; } @Override - public boolean contains( Object obj ) - { // Optimization. - return FastMap.this.containsKey( obj ); + public boolean contains(Object obj) { // Optimization. + return FastMap.this.containsKey(obj); } @Override - public boolean remove( Object obj ) - { // Optimization. - return FastMap.this.remove( obj ) != null; + public boolean remove(Object obj) { // Optimization. + return FastMap.this.remove(obj) != null; } @Override - public void clear() - { // Optimization. + public void clear() { // Optimization. FastMap.this.clear(); } } @@ -753,7 +652,7 @@ public void clear() * This methods is being called when the size of this {@link FastMap} has changed. The default behavior is to double * the map's capacity when the map's size reaches the current map's capacity. Sub-class may override this method to * implement custom resizing policies or to disable automatic resizing. For example: - * + * *
          * Map fixedCapacityMap = new FastMap( 256 )
          * {
    @@ -763,77 +662,66 @@ public void clear()
          *     }
          * };
          * 
    - * + * * @see #setCapacity */ - protected void sizeChanged() - { - if ( size() > capacity() ) - { - setCapacity( capacity() * 2 ); + protected void sizeChanged() { + if (size() > capacity()) { + setCapacity(capacity() * 2); } } /** * Returns the hash code for the specified key. The formula being used is identical to the formula used by * java.util.HashMap (ensures similar behavior for ill-conditioned hashcode keys). - * + * * @param key the key to calculate the hashcode for. * @return the hash code for the specified key. */ - private static int keyHash( Object key ) - { + private static int keyHash(Object key) { // From HashMap.hash(Object) function. int hashCode = key.hashCode(); - hashCode += ~( hashCode << 9 ); - hashCode ^= ( hashCode >>> 14 ); - hashCode += ( hashCode << 4 ); - hashCode ^= ( hashCode >>> 10 ); + hashCode += ~(hashCode << 9); + hashCode ^= (hashCode >>> 14); + hashCode += (hashCode << 4); + hashCode ^= (hashCode >>> 10); return hashCode; } /** * Adds a new entry for the specified key and value. - * + * * @param key the entry's key. * @param value the entry's value. */ - private void addEntry( Object key, Object value ) - { + private void addEntry(Object key, Object value) { EntryImpl entry = _poolFirst; - if ( entry != null ) - { + if (entry != null) { _poolFirst = entry._after; entry._after = null; - } - else - { // Pool empty. + } else { // Pool empty. entry = new EntryImpl(); } // Setup entry parameters. entry._key = key; entry._value = value; - int index = keyHash( key ) & _mask; + int index = keyHash(key) & _mask; entry._index = index; // Connects to bucket. EntryImpl next = _entries[index]; entry._next = next; - if ( next != null ) - { + if (next != null) { next._previous = entry; } _entries[index] = entry; // Connects to collection. - if ( _mapLast != null ) - { + if (_mapLast != null) { entry._before = _mapLast; _mapLast._after = entry; - } - else - { + } else { _mapFirst = entry; } _mapLast = entry; @@ -845,26 +733,21 @@ private void addEntry( Object key, Object value ) /** * Removes the specified entry from the map. - * + * * @param entry the entry to be removed. */ - private void removeEntry( EntryImpl entry ) - { + private void removeEntry(EntryImpl entry) { // Removes from bucket. EntryImpl previous = entry._previous; EntryImpl next = entry._next; - if ( previous != null ) - { + if (previous != null) { previous._next = next; entry._previous = null; - } - else - { // First in bucket. + } else { // First in bucket. _entries[entry._index] = next; } - if ( next != null ) - { + if (next != null) { next._previous = previous; entry._next = null; } // Else do nothing, no last pointer. @@ -872,21 +755,15 @@ private void removeEntry( EntryImpl entry ) // Removes from collection. EntryImpl before = entry._before; EntryImpl after = entry._after; - if ( before != null ) - { + if (before != null) { before._after = after; entry._before = null; - } - else - { // First in collection. + } else { // First in collection. _mapFirst = after; } - if ( after != null ) - { + if (after != null) { after._before = before; - } - else - { // Last in collection. + } else { // Last in collection. _mapLast = before; } @@ -906,15 +783,13 @@ private void removeEntry( EntryImpl entry ) /** * Initializes this instance for the specified capacity. Once initialized, operations on this map should not create * new objects (unless the map's size exceeds the specified capacity). - * + * * @param capacity the initial capacity. */ - private void initialize( int capacity ) - { + private void initialize(int capacity) { // Find a power of 2 >= capacity int tableLength = 16; - while ( tableLength < capacity ) - { + while (tableLength < capacity) { tableLength <<= 1; } // Allocates hash table. @@ -931,8 +806,7 @@ private void initialize( int capacity ) _mapFirst = null; _mapLast = null; // Allocates entries. - for ( int i = 0; i < capacity; i++ ) - { + for (int i = 0; i < capacity; i++) { EntryImpl entry = new EntryImpl(); entry._after = _poolFirst; _poolFirst = entry; @@ -946,17 +820,14 @@ private void initialize( int capacity ) * @throws IOException if an I/O error occurs. * @throws ClassNotFoundException if the class for the object de-serialized is not found. */ - private void readObject( ObjectInputStream stream ) - throws IOException, ClassNotFoundException - { + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { int capacity = stream.readInt(); - initialize( capacity ); + initialize(capacity); int size = stream.readInt(); - for ( int i = 0; i < size; i++ ) - { + for (int i = 0; i < size; i++) { Object key = stream.readObject(); Object value = stream.readObject(); - addEntry( key, value ); + addEntry(key, value); } } @@ -966,32 +837,26 @@ private void readObject( ObjectInputStream stream ) * @param stream the object output stream. * @throws IOException if an I/O error occurs. */ - private void writeObject( ObjectOutputStream stream ) - throws IOException - { - stream.writeInt( _capacity ); - stream.writeInt( _size ); + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.writeInt(_capacity); + stream.writeInt(_size); int count = 0; EntryImpl entry = _mapFirst; - while ( entry != null ) - { - stream.writeObject( entry._key ); - stream.writeObject( entry._value ); + while (entry != null) { + stream.writeObject(entry._key); + stream.writeObject(entry._value); count++; entry = entry._after; } - if ( count != _size ) - { - throw new IOException( "FastMap Corrupted" ); + if (count != _size) { + throw new IOException("FastMap Corrupted"); } } /** * This class represents a {@link FastMap} entry. */ - private static final class EntryImpl - implements Map.Entry - { + private static final class EntryImpl implements Map.Entry { /** * Holds the entry key (null when in pool). @@ -1030,35 +895,32 @@ private static final class EntryImpl /** * Returns the key for this entry. - * + * * @return the entry's key. */ @Override - public K getKey() - { + public K getKey() { return _key; } /** * Returns the value for this entry. - * + * * @return the entry's value. */ @Override - public V getValue() - { + public V getValue() { return _value; } /** * Sets the value for this entry. - * + * * @param value the new value. * @return the previous value. */ @Override - public V setValue( V value ) - { + public V setValue(V value) { V old = _value; _value = value; return old; @@ -1066,45 +928,39 @@ public V setValue( V value ) /** * Indicates if this entry is considered equals to the specified entry. - * + * * @param that the object to test for equality. * @return true if both entry are considered equal; false otherwise. */ @Override - public boolean equals( Object that ) - { - if ( that instanceof Map.Entry ) - { + public boolean equals(Object that) { + if (that instanceof Map.Entry) { Map.Entry entry = (Map.Entry) that; - return ( _key.equals( entry.getKey() ) ) - && ( ( _value != null ) ? _value.equals( entry.getValue() ) : ( entry.getValue() == null ) ); - } - else - { + return (_key.equals(entry.getKey())) + && ((_value != null) ? _value.equals(entry.getValue()) : (entry.getValue() == null)); + } else { return false; } } /** * Returns the hash code for this entry. - * + * * @return this entry's hash code. */ @Override - public int hashCode() - { - return _key.hashCode() ^ ( ( _value != null ) ? _value.hashCode() : 0 ); + public int hashCode() { + return _key.hashCode() ^ ((_value != null) ? _value.hashCode() : 0); } /** * Returns the text representation of this entry. - * + * * @return this entry's textual representation. */ @Override - public String toString() - { + public String toString() { return _key + "=" + _value; } } -} \ No newline at end of file +} diff --git a/src/main/java/org/codehaus/plexus/util/FileUtils.java b/src/main/java/org/codehaus/plexus/util/FileUtils.java index e182145e..fceb191e 100644 --- a/src/main/java/org/codehaus/plexus/util/FileUtils.java +++ b/src/main/java/org/codehaus/plexus/util/FileUtils.java @@ -55,9 +55,6 @@ * */ -import org.codehaus.plexus.util.io.InputStreamFacade; -import org.codehaus.plexus.util.io.URLInputStreamFacade; - import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -79,11 +76,14 @@ import java.util.List; import java.util.Random; +import org.codehaus.plexus.util.io.InputStreamFacade; +import org.codehaus.plexus.util.io.URLInputStreamFacade; + /** *

    This class provides basic facilities for manipulating files and file paths.

    - * + * * Path-related methods - * + * *

    Methods exist to retrieve the components of a typical file path. For example * /www/hosted/mysite/index.html, can be broken into: *

      @@ -94,15 +94,15 @@ *
    *

    There are also methods to {@link #catPath concatenate two paths}, {@link #resolveFile resolve a path relative to a * File} and {@link #normalize} a path.

    - + * * File-related methods - * + * *

    There are methods to create a {@link #toFile File from a URL}, copy a {@link #copyFileToDirectory File to a * directory}, copy a {@link #copyFile File to another File}, copy a {@link #copyURLToFile URL's contents to a File}, as * well as methods to {@link #deleteDirectory(File) delete} and {@link #cleanDirectory(File) clean} a directory.

    - * + * *

    Common {@link java.io.File} manipulation routines.

    - * + * *

    Taken from the commons-utils repo. Also code from Alexandria's FileUtils. And from Avalon Excalibur's IO. And from * Ant.

    * @@ -114,8 +114,7 @@ * @author Jeff Turner * */ -public class FileUtils extends BaseFileUtils -{ +public class FileUtils extends BaseFileUtils { /** * The number of bytes in a kilobyte. */ @@ -142,14 +141,13 @@ public class FileUtils extends BaseFileUtils * @see * http://support.microsoft.com/?scid=kb%3Ben-us%3B177506&x=12&y=13 */ - private static final String[] INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME = { ":", "*", "?", "\"", "<", ">", "|" }; + private static final String[] INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME = {":", "*", "?", "\"", "<", ">", "|"}; /** * @return the default excludes pattern * @see DirectoryScanner#DEFAULTEXCLUDES */ - public static String[] getDefaultExcludes() - { + public static String[] getDefaultExcludes() { return DirectoryScanner.DEFAULTEXCLUDES; } @@ -157,9 +155,8 @@ public static String[] getDefaultExcludes() * @return the default excludes pattern as list. * @see #getDefaultExcludes() */ - public static List getDefaultExcludesAsList() - { - return Arrays.asList( getDefaultExcludes() ); + public static List getDefaultExcludesAsList() { + return Arrays.asList(getDefaultExcludes()); } /** @@ -167,9 +164,8 @@ public static List getDefaultExcludesAsList() * @see DirectoryScanner#DEFAULTEXCLUDES * @see StringUtils#join(Object[], String) */ - public static String getDefaultExcludesAsString() - { - return StringUtils.join( DirectoryScanner.DEFAULTEXCLUDES, "," ); + public static String getDefaultExcludesAsString() { + return StringUtils.join(DirectoryScanner.DEFAULTEXCLUDES, ","); } /** @@ -178,25 +174,17 @@ public static String getDefaultExcludesAsString() * @param size The number of bytes. * @return A human-readable display value (includes units). */ - public static String byteCountToDisplaySize( int size ) - { + public static String byteCountToDisplaySize(int size) { String displaySize; - if ( size / ONE_GB > 0 ) - { - displaySize = String.valueOf( size / ONE_GB ) + " GB"; - } - else if ( size / ONE_MB > 0 ) - { - displaySize = String.valueOf( size / ONE_MB ) + " MB"; - } - else if ( size / ONE_KB > 0 ) - { - displaySize = String.valueOf( size / ONE_KB ) + " KB"; - } - else - { - displaySize = String.valueOf( size ) + " bytes"; + if (size / ONE_GB > 0) { + displaySize = String.valueOf(size / ONE_GB) + " GB"; + } else if (size / ONE_MB > 0) { + displaySize = String.valueOf(size / ONE_MB) + " MB"; + } else if (size / ONE_KB > 0) { + displaySize = String.valueOf(size / ONE_KB) + " KB"; + } else { + displaySize = String.valueOf(size) + " bytes"; } return displaySize; @@ -208,10 +196,9 @@ else if ( size / ONE_KB > 0 ) * @param filename the file path * @return The directory portion excluding the ending file separator. */ - public static String dirname( String filename ) - { - int i = filename.lastIndexOf( File.separator ); - return ( i >= 0 ? filename.substring( 0, i ) : "" ); + public static String dirname(String filename) { + int i = filename.lastIndexOf(File.separator); + return (i >= 0 ? filename.substring(0, i) : ""); } /** @@ -220,10 +207,9 @@ public static String dirname( String filename ) * @param filename the file path * @return The filename string with extension. */ - public static String filename( String filename ) - { - int i = filename.lastIndexOf( File.separator ); - return ( i >= 0 ? filename.substring( i + 1 ) : filename ); + public static String filename(String filename) { + int i = filename.lastIndexOf(File.separator); + return (i >= 0 ? filename.substring(i + 1) : filename); } /** @@ -232,9 +218,8 @@ public static String filename( String filename ) * @param filename the file path * @return The filename string without extension. */ - public static String basename( String filename ) - { - return basename( filename, extension( filename ) ); + public static String basename(String filename) { + return basename(filename, extension(filename)); } /** @@ -244,21 +229,15 @@ public static String basename( String filename ) * @param suffix the file suffix * @return the basename of the file */ - public static String basename( String filename, String suffix ) - { - int i = filename.lastIndexOf( File.separator ) + 1; - int lastDot = ( ( suffix != null ) && ( suffix.length() > 0 ) ) ? filename.lastIndexOf( suffix ) : -1; + public static String basename(String filename, String suffix) { + int i = filename.lastIndexOf(File.separator) + 1; + int lastDot = ((suffix != null) && (suffix.length() > 0)) ? filename.lastIndexOf(suffix) : -1; - if ( lastDot >= 0 ) - { - return filename.substring( i, lastDot ); - } - else if ( i > 0 ) - { - return filename.substring( i ); - } - else - { + if (lastDot >= 0) { + return filename.substring(i, lastDot); + } else if (i > 0) { + return filename.substring(i); + } else { return filename; // else returns all (no path and no extension) } } @@ -270,27 +249,21 @@ else if ( i > 0 ) * @param filename the file path * @return the extension of the file */ - public static String extension( String filename ) - { + public static String extension(String filename) { // Ensure the last dot is after the last file separator - int lastSep = filename.lastIndexOf( File.separatorChar ); + int lastSep = filename.lastIndexOf(File.separatorChar); int lastDot; - if ( lastSep < 0 ) - { - lastDot = filename.lastIndexOf( '.' ); - } - else - { - lastDot = filename.substring( lastSep + 1 ).lastIndexOf( '.' ); - if ( lastDot >= 0 ) - { + if (lastSep < 0) { + lastDot = filename.lastIndexOf('.'); + } else { + lastDot = filename.substring(lastSep + 1).lastIndexOf('.'); + if (lastDot >= 0) { lastDot += lastSep + 1; } } - if ( lastDot >= 0 && lastDot > lastSep ) - { - return filename.substring( lastDot + 1 ); + if (lastDot >= 0 && lastDot > lastSep) { + return filename.substring(lastDot + 1); } return ""; @@ -302,9 +275,8 @@ public static String extension( String filename ) * @param fileName the file path. * @return true if file exists. */ - public static boolean fileExists( String fileName ) - { - File file = new File( fileName ); + public static boolean fileExists(String fileName) { + File file = new File(fileName); return file.exists(); } @@ -315,10 +287,8 @@ public static boolean fileExists( String fileName ) * @return the file content using the platform encoding. * @throws IOException if any */ - public static String fileRead( String file ) - throws IOException - { - return fileRead( file, null ); + public static String fileRead(String file) throws IOException { + return fileRead(file, null); } /** @@ -327,10 +297,8 @@ public static String fileRead( String file ) * @return the file content using the specified encoding. * @throws IOException if any */ - public static String fileRead( String file, String encoding ) - throws IOException - { - return fileRead( Paths.get( file ), encoding ); + public static String fileRead(String file, String encoding) throws IOException { + return fileRead(Paths.get(file), encoding); } /** @@ -340,10 +308,8 @@ public static String fileRead( String file, String encoding ) * @return the file content using the platform encoding. * @throws IOException if any */ - public static String fileRead( File file ) - throws IOException - { - return fileRead( file, null ); + public static String fileRead(File file) throws IOException { + return fileRead(file, null); } /** @@ -352,10 +318,8 @@ public static String fileRead( File file ) * @return the file content using the specified encoding. * @throws IOException if any */ - public static String fileRead( File file, String encoding ) - throws IOException - { - return fileRead( file.toPath(), encoding ); + public static String fileRead(File file, String encoding) throws IOException { + return fileRead(file.toPath(), encoding); } /** @@ -368,10 +332,8 @@ public static String fileRead( File file, String encoding ) * @deprecated use {@code java.nio.files.Files.write(filename, data.getBytes(encoding), * StandardOpenOption.APPEND, StandardOpenOption.CREATE)} */ - public static void fileAppend( String fileName, String data ) - throws IOException - { - fileAppend( fileName, null, data ); + public static void fileAppend(String fileName, String data) throws IOException { + fileAppend(fileName, null, data); } /** @@ -384,15 +346,12 @@ public static void fileAppend( String fileName, String data ) * @deprecated use {@code java.nio.files.Files.write(filename, data.getBytes(encoding), * StandardOpenOption.APPEND, StandardOpenOption.CREATE)} */ - public static void fileAppend( String fileName, String encoding, String data ) - throws IOException - { - fileAppend( Paths.get( fileName), encoding, data ); + public static void fileAppend(String fileName, String encoding, String data) throws IOException { + fileAppend(Paths.get(fileName), encoding, data); } - private static void fileAppend( Path path, String encoding, String data ) throws IOException - { - fileWrite( path, encoding, data, StandardOpenOption.APPEND, StandardOpenOption.CREATE ); + private static void fileAppend(Path path, String encoding, String data) throws IOException { + fileWrite(path, encoding, data, StandardOpenOption.APPEND, StandardOpenOption.CREATE); } /** @@ -403,10 +362,8 @@ private static void fileAppend( Path path, String encoding, String data ) throws * @param data The content to write to the file. * @throws IOException if any */ - public static void fileWrite( String fileName, String data ) - throws IOException - { - fileWrite( fileName, null, data ); + public static void fileWrite(String fileName, String data) throws IOException { + fileWrite(fileName, null, data); } /** @@ -417,11 +374,9 @@ public static void fileWrite( String fileName, String data ) * @param data The content to write to the file. * @throws IOException if any */ - public static void fileWrite( String fileName, String encoding, String data ) - throws IOException - { - Path file = ( fileName == null ) ? null : Paths.get( fileName ); - fileWrite( file, encoding, data ); + public static void fileWrite(String fileName, String encoding, String data) throws IOException { + Path file = (fileName == null) ? null : Paths.get(fileName); + fileWrite(file, encoding, data); } /** @@ -433,10 +388,8 @@ public static void fileWrite( String fileName, String encoding, String data ) * @throws IOException if any * @since 2.0.6 */ - public static void fileWrite( File file, String data ) - throws IOException - { - fileWrite( file, null, data ); + public static void fileWrite(File file, String data) throws IOException { + fileWrite(file, null, data); } /** @@ -448,10 +401,8 @@ public static void fileWrite( File file, String data ) * @throws IOException if any * @since 2.0.6 */ - public static void fileWrite( File file, String encoding, String data ) - throws IOException - { - fileWrite( file.toPath(), encoding, data ); + public static void fileWrite(File file, String encoding, String data) throws IOException { + fileWrite(file.toPath(), encoding, data); } /** @@ -459,16 +410,12 @@ public static void fileWrite( File file, String encoding, String data ) * * @param fileName The path of the file to delete. */ - public static void fileDelete( String fileName ) - { - File file = new File( fileName ); - try - { - NioFiles.deleteIfExists( file ); - } - catch ( IOException e ) - { - throw new RuntimeException( e ); + public static void fileDelete(String fileName) { + File file = new File(fileName); + try { + NioFiles.deleteIfExists(file); + } catch (IOException e) { + throw new RuntimeException(e); } } @@ -479,9 +426,8 @@ public static void fileDelete( String fileName ) * @param seconds The maximum time in seconds to wait. * @return True if file exists. */ - public static boolean waitFor( String fileName, int seconds ) - { - return waitFor( new File( fileName ), seconds ); + public static boolean waitFor(String fileName, int seconds) { + return waitFor(new File(fileName), seconds); } /** @@ -491,26 +437,19 @@ public static boolean waitFor( String fileName, int seconds ) * @param seconds The maximum time in seconds to wait. * @return True if file exists. */ - public static boolean waitFor( File file, int seconds ) - { + public static boolean waitFor(File file, int seconds) { int timeout = 0; int tick = 0; - while ( !file.exists() ) - { - if ( tick++ >= 10 ) - { + while (!file.exists()) { + if (tick++ >= 10) { tick = 0; - if ( timeout++ > seconds ) - { + if (timeout++ > seconds) { return false; } } - try - { - Thread.sleep( 100 ); - } - catch ( InterruptedException ignore ) - { + try { + Thread.sleep(100); + } catch (InterruptedException ignore) { // nop } } @@ -523,78 +462,67 @@ public static boolean waitFor( File file, int seconds ) * @param fileName The path of the file. * @return A File manager. */ - public static File getFile( String fileName ) - { - return new File( fileName ); + public static File getFile(String fileName) { + return new File(fileName); } /** *

    Given a directory and an array of extensions return an array of compliant files.

    - * + * *

    TODO Should an ignore list be passed in? TODO Should a recurse flag be passed in?

    - * + * *

    The given extensions should be like "java" and not like ".java"

    * * @param directory The path of the directory. * @param extensions an array of expected extensions. * @return An array of files for the wanted extensions. */ - public static String[] getFilesFromExtension( String directory, String[] extensions ) - { + public static String[] getFilesFromExtension(String directory, String[] extensions) { List files = new ArrayList(); - File currentDir = new File( directory ); + File currentDir = new File(directory); String[] unknownFiles = currentDir.list(); - if ( unknownFiles == null ) - { + if (unknownFiles == null) { return new String[0]; } - for ( String unknownFile : unknownFiles ) - { - String currentFileName = directory + System.getProperty( "file.separator" ) + unknownFile; - File currentFile = new File( currentFileName ); + for (String unknownFile : unknownFiles) { + String currentFileName = directory + System.getProperty("file.separator") + unknownFile; + File currentFile = new File(currentFileName); - if ( currentFile.isDirectory() ) - { + if (currentFile.isDirectory()) { // ignore all CVS directories... - if ( currentFile.getName().equals( "CVS" ) ) - { + if (currentFile.getName().equals("CVS")) { continue; } // ok... transverse into this directory and get all the files... then combine // them with the current list. - String[] fetchFiles = getFilesFromExtension( currentFileName, extensions ); - files = blendFilesToVector( files, fetchFiles ); - } - else - { + String[] fetchFiles = getFilesFromExtension(currentFileName, extensions); + files = blendFilesToVector(files, fetchFiles); + } else { // ok... add the file String add = currentFile.getAbsolutePath(); - if ( isValidFile( add, extensions ) ) - { - files.add( add ); + if (isValidFile(add, extensions)) { + files.add(add); } } } // ok... move the Vector into the files list... - return files.toArray( new String[0] ); + return files.toArray(new String[0]); } /** * Private helper method for getFilesFromExtension() */ - private static List blendFilesToVector( List v, String[] files ) - { - for ( String file : files ) - { - v.add( file ); + private static List blendFilesToVector(List v, String[] files) { + for (String file : files) { + v.add(file); } return v; @@ -604,27 +532,22 @@ private static List blendFilesToVector( List v, String[] files ) * Checks to see if a file is of a particular type(s). Note that if the file does not have an extension, an empty * string ("") is matched for. */ - private static boolean isValidFile( String file, String[] extensions ) - { - String extension = extension( file ); - if ( extension == null ) - { + private static boolean isValidFile(String file, String[] extensions) { + String extension = extension(file); + if (extension == null) { extension = ""; } // ok.. now that we have the "extension" go through the current know // excepted extensions and determine if this one is OK. - for ( String extension1 : extensions ) - { - if ( extension1.equals( extension ) ) - { + for (String extension1 : extensions) { + if (extension1.equals(extension)) { return true; } } return false; - } /** @@ -634,19 +557,16 @@ private static boolean isValidFile( String file, String[] extensions ) * @throws IllegalArgumentException if the dir contains illegal Windows characters under Windows OS. * @see #INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME */ - public static void mkdir( String dir ) - { - File file = new File( dir ); + public static void mkdir(String dir) { + File file = new File(dir); - if ( Os.isFamily( Os.FAMILY_WINDOWS ) && !isValidWindowsFileName( file ) ) - { - throw new IllegalArgumentException( "The file (" + dir - + ") cannot contain any of the following characters: \n" - + StringUtils.join( INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " " ) ); + if (Os.isFamily(Os.FAMILY_WINDOWS) && !isValidWindowsFileName(file)) { + throw new IllegalArgumentException("The file (" + dir + + ") cannot contain any of the following characters: \n" + + StringUtils.join(INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " ")); } - if ( !file.exists() ) - { + if (!file.exists()) { file.mkdirs(); } } @@ -659,31 +579,25 @@ public static void mkdir( String dir ) * @return true if the content of the files are equal or they both don't exist, false otherwise * @throws IOException if any */ - public static boolean contentEquals( final File file1, final File file2 ) - throws IOException - { + public static boolean contentEquals(final File file1, final File file2) throws IOException { final boolean file1Exists = file1.exists(); - if ( file1Exists != file2.exists() ) - { + if (file1Exists != file2.exists()) { return false; } - if ( !file1Exists ) - { + if (!file1Exists) { // two not existing files are equal return true; } - if ( file1.isDirectory() || file2.isDirectory() ) - { + if (file1.isDirectory() || file2.isDirectory()) { // don't want to compare directory contents return false; } - - try ( InputStream input1 = Files.newInputStream( file1.toPath() ); - InputStream input2 = Files.newInputStream( file2.toPath() ) ) - { - return IOUtil.contentEquals( input1, input2 ); + + try (InputStream input1 = Files.newInputStream(file1.toPath()); + InputStream input2 = Files.newInputStream(file2.toPath())) { + return IOUtil.contentEquals(input1, input2); } } @@ -694,25 +608,21 @@ public static boolean contentEquals( final File file1, final File file2 ) * @return The equivalent File object, or null if the URL's protocol is not * file */ - public static File toFile( final URL url ) - { - if ( url == null || !url.getProtocol().equalsIgnoreCase( "file" ) ) - { + public static File toFile(final URL url) { + if (url == null || !url.getProtocol().equalsIgnoreCase("file")) { return null; } - String filename = url.getFile().replace( '/', File.separatorChar ); + String filename = url.getFile().replace('/', File.separatorChar); int pos = -1; - while ( ( pos = filename.indexOf( '%', pos + 1 ) ) >= 0 ) - { - if ( pos + 2 < filename.length() ) - { - String hexStr = filename.substring( pos + 1, pos + 3 ); - char ch = (char) Integer.parseInt( hexStr, 16 ); - filename = filename.substring( 0, pos ) + ch + filename.substring( pos + 3 ); + while ((pos = filename.indexOf('%', pos + 1)) >= 0) { + if (pos + 2 < filename.length()) { + String hexStr = filename.substring(pos + 1, pos + 3); + char ch = (char) Integer.parseInt(hexStr, 16); + filename = filename.substring(0, pos) + ch + filename.substring(pos + 3); } } - return new File( filename ); + return new File(filename); } /** @@ -722,13 +632,10 @@ public static File toFile( final URL url ) * @return the array of URLs * @throws IOException if an error occurs */ - public static URL[] toURLs( final File[] files ) - throws IOException - { + public static URL[] toURLs(final File[] files) throws IOException { final URL[] urls = new URL[files.length]; - for ( int i = 0; i < urls.length; i++ ) - { + for (int i = 0; i < urls.length; i++) { urls[i] = files[i].toURI().toURL(); } @@ -737,7 +644,7 @@ public static URL[] toURLs( final File[] files ) /** * Remove extension from filename. ie - * + * *
          * foo.txt    --> foo
          * a\b\c.jpg  --> a\b\c
    @@ -747,22 +654,20 @@ public static URL[] toURLs( final File[] files )
          * @param filename the path of the file
          * @return the filename minus extension
          */
    -    public static String removeExtension( final String filename )
    -    {
    -        String ext = extension( filename );
    +    public static String removeExtension(final String filename) {
    +        String ext = extension(filename);
     
    -        if ( "".equals( ext ) )
    -        {
    +        if ("".equals(ext)) {
                 return filename;
             }
     
    -        final int index = filename.lastIndexOf( ext ) - 1;
    -        return filename.substring( 0, index );
    +        final int index = filename.lastIndexOf(ext) - 1;
    +        return filename.substring(0, index);
         }
     
         /**
          * Get extension from filename. ie
    -     * 
    +     *
          * 
          * foo.txt    --> "txt"
          * a\b\c.jpg  --> "jpg"
    @@ -772,14 +677,13 @@ public static String removeExtension( final String filename )
          * @param filename the path of the file
          * @return the extension of filename or "" if none
          */
    -    public static String getExtension( final String filename )
    -    {
    -        return extension( filename );
    +    public static String getExtension(final String filename) {
    +        return extension(filename);
         }
     
         /**
          * Remove path from filename. Equivalent to the unix command basename ie.
    -     * 
    +     *
          * 
          * a/b/c.txt --> c.txt
          * a.txt     --> a.txt
    @@ -788,14 +692,13 @@ public static String getExtension( final String filename )
          * @param filepath the path of the file
          * @return the filename minus path
          */
    -    public static String removePath( final String filepath )
    -    {
    -        return removePath( filepath, File.separatorChar );
    +    public static String removePath(final String filepath) {
    +        return removePath(filepath, File.separatorChar);
         }
     
         /**
          * Remove path from filename. ie.
    -     * 
    +     *
          * 
          * a/b/c.txt --> c.txt
          * a.txt     --> a.txt
    @@ -805,21 +708,19 @@ public static String removePath( final String filepath )
          * @param fileSeparatorChar the file separator character like / on Unix platforms.
          * @return the filename minus path
          */
    -    public static String removePath( final String filepath, final char fileSeparatorChar )
    -    {
    -        final int index = filepath.lastIndexOf( fileSeparatorChar );
    +    public static String removePath(final String filepath, final char fileSeparatorChar) {
    +        final int index = filepath.lastIndexOf(fileSeparatorChar);
     
    -        if ( -1 == index )
    -        {
    +        if (-1 == index) {
                 return filepath;
             }
     
    -        return filepath.substring( index + 1 );
    +        return filepath.substring(index + 1);
         }
     
         /**
          * Get path from filename. Roughly equivalent to the unix command dirname. ie.
    -     * 
    +     *
          * 
          * a/b/c.txt --> a/b
          * a.txt     --> ""
    @@ -828,14 +729,13 @@ public static String removePath( final String filepath, final char fileSeparator
          * @param filepath the filepath
          * @return the filename minus path
          */
    -    public static String getPath( final String filepath )
    -    {
    -        return getPath( filepath, File.separatorChar );
    +    public static String getPath(final String filepath) {
    +        return getPath(filepath, File.separatorChar);
         }
     
         /**
          * Get path from filename. ie.
    -     * 
    +     *
          * 
          * a/b/c.txt --> a/b
          * a.txt     --> ""
    @@ -845,15 +745,13 @@ public static String getPath( final String filepath )
          * @param fileSeparatorChar the file separator character like / on Unix platforms.
          * @return the filename minus path
          */
    -    public static String getPath( final String filepath, final char fileSeparatorChar )
    -    {
    -        final int index = filepath.lastIndexOf( fileSeparatorChar );
    -        if ( -1 == index )
    -        {
    +    public static String getPath(final String filepath, final char fileSeparatorChar) {
    +        final int index = filepath.lastIndexOf(fileSeparatorChar);
    +        if (-1 == index) {
                 return "";
             }
     
    -        return filepath.substring( 0, index );
    +        return filepath.substring(0, index);
         }
     
         /**
    @@ -868,10 +766,8 @@ public static String getPath( final String filepath, final char fileSeparatorCha
          * @throws IOException if source does not exist, the file in destinationDirectory cannot
          *             be written to, or an IO error occurs during copying.
          */
    -    public static void copyFileToDirectory( final String source, final String destinationDirectory )
    -        throws IOException
    -    {
    -        copyFileToDirectory( new File( source ), new File( destinationDirectory ) );
    +    public static void copyFileToDirectory(final String source, final String destinationDirectory) throws IOException {
    +        copyFileToDirectory(new File(source), new File(destinationDirectory));
         }
     
         /**
    @@ -886,10 +782,9 @@ public static void copyFileToDirectory( final String source, final String destin
          * @throws IOException if source does not exist, the file in destinationDirectory cannot
          *             be written to, or an IO error occurs during copying.
          */
    -    public static void copyFileToDirectoryIfModified( final String source, final String destinationDirectory )
    -        throws IOException
    -    {
    -        copyFileToDirectoryIfModified( new File( source ), new File( destinationDirectory ) );
    +    public static void copyFileToDirectoryIfModified(final String source, final String destinationDirectory)
    +            throws IOException {
    +        copyFileToDirectoryIfModified(new File(source), new File(destinationDirectory));
         }
     
         /**
    @@ -904,15 +799,12 @@ public static void copyFileToDirectoryIfModified( final String source, final Str
          * @throws IOException if source does not exist, the file in destinationDirectory cannot
          *             be written to, or an IO error occurs during copying.
          */
    -    public static void copyFileToDirectory( final File source, final File destinationDirectory )
    -        throws IOException
    -    {
    -        if ( destinationDirectory.exists() && !destinationDirectory.isDirectory() )
    -        {
    -            throw new IllegalArgumentException( "Destination is not a directory" );
    +    public static void copyFileToDirectory(final File source, final File destinationDirectory) throws IOException {
    +        if (destinationDirectory.exists() && !destinationDirectory.isDirectory()) {
    +            throw new IllegalArgumentException("Destination is not a directory");
             }
     
    -        copyFile( source, new File( destinationDirectory, source.getName() ) );
    +        copyFile(source, new File(destinationDirectory, source.getName()));
         }
     
         /**
    @@ -927,39 +819,31 @@ public static void copyFileToDirectory( final File source, final File destinatio
          * @throws IOException if source does not exist, the file in destinationDirectory cannot
          *             be written to, or an IO error occurs during copying.
          */
    -    public static void copyFileToDirectoryIfModified( final File source, final File destinationDirectory )
    -        throws IOException
    -    {
    -        if ( destinationDirectory.exists() && !destinationDirectory.isDirectory() )
    -        {
    -            throw new IllegalArgumentException( "Destination is not a directory" );
    +    public static void copyFileToDirectoryIfModified(final File source, final File destinationDirectory)
    +            throws IOException {
    +        if (destinationDirectory.exists() && !destinationDirectory.isDirectory()) {
    +            throw new IllegalArgumentException("Destination is not a directory");
             }
     
    -        copyFileIfModified( source, new File( destinationDirectory, source.getName() ) );
    +        copyFileIfModified(source, new File(destinationDirectory, source.getName()));
         }
     
         /**
          * Creates a number of directories, as delivered from DirectoryScanner
    -     * 
    +     *
          * @param sourceBase The basedir used for the directory scan
          * @param dirs The getIncludedDirs from the dirscanner
          * @param destination The base dir of the output structure
          * @throws IOException io issue
          */
    -    public static void mkDirs( final File sourceBase, String[] dirs, final File destination )
    -        throws IOException
    -    {
    -        for ( String dir : dirs )
    -        {
    -            File src = new File( sourceBase, dir );
    -            File dst = new File( destination, dir );
    -            if ( NioFiles.isSymbolicLink( src ) )
    -            {
    -                File target = NioFiles.readSymbolicLink( src );
    -                NioFiles.createSymbolicLink( dst, target );
    -            }
    -            else
    -            {
    +    public static void mkDirs(final File sourceBase, String[] dirs, final File destination) throws IOException {
    +        for (String dir : dirs) {
    +            File src = new File(sourceBase, dir);
    +            File dst = new File(destination, dir);
    +            if (NioFiles.isSymbolicLink(src)) {
    +                File target = NioFiles.readSymbolicLink(src);
    +                NioFiles.createSymbolicLink(dst, target);
    +            } else {
                     dst.mkdirs();
                 }
             }
    @@ -976,43 +860,34 @@ public static void mkDirs( final File sourceBase, String[] dirs, final File dest
          * @throws java.io.FileNotFoundException if destination is a directory (use
          *             {@link #copyFileToDirectory}).
          */
    -    public static void copyFile( final File source, final File destination )
    -        throws IOException
    -    {
    +    public static void copyFile(final File source, final File destination) throws IOException {
             // check source exists
    -        if ( !source.exists() )
    -        {
    +        if (!source.exists()) {
                 final String message = "File " + source + " does not exist";
    -            throw new IOException( message );
    +            throw new IOException(message);
             }
     
             // check source != destination, see PLXUTILS-10
    -        if ( source.getCanonicalPath().equals( destination.getCanonicalPath() ) )
    -        {
    +        if (source.getCanonicalPath().equals(destination.getCanonicalPath())) {
                 // if they are equal, we can exit the method without doing any work
                 return;
             }
    -        mkdirsFor( destination );
    +        mkdirsFor(destination);
     
    -        doCopyFile( source, destination );
    +        doCopyFile(source, destination);
     
    -        if ( source.length() != destination.length() )
    -        {
    +        if (source.length() != destination.length()) {
                 String message = "Failed to copy full contents from " + source + " to " + destination;
    -            throw new IOException( message );
    +            throw new IOException(message);
             }
         }
     
    -    private static void doCopyFile( File source, File destination )
    -        throws IOException
    -    {
    -        doCopyFileUsingNewIO( source, destination );
    +    private static void doCopyFile(File source, File destination) throws IOException {
    +        doCopyFileUsingNewIO(source, destination);
         }
     
    -    private static void doCopyFileUsingNewIO( File source, File destination )
    -        throws IOException
    -    {
    -        NioFiles.copy( source, destination );
    +    private static void doCopyFileUsingNewIO(File source, File destination) throws IOException {
    +        NioFiles.copy(source, destination);
         }
     
         /**
    @@ -1026,25 +901,21 @@ private static void doCopyFileUsingNewIO( File source, File destination )
          * @throws java.io.FileNotFoundException if destination is a directory (use
          *             {@link #copyFileToDirectory}).
          */
    -    public static void linkFile( final File source, final File destination )
    -        throws IOException
    -    {
    +    public static void linkFile(final File source, final File destination) throws IOException {
             // check source exists
    -        if ( !source.exists() )
    -        {
    +        if (!source.exists()) {
                 final String message = "File " + source + " does not exist";
    -            throw new IOException( message );
    +            throw new IOException(message);
             }
     
             // check source != destination, see PLXUTILS-10
    -        if ( source.getCanonicalPath().equals( destination.getCanonicalPath() ) )
    -        {
    +        if (source.getCanonicalPath().equals(destination.getCanonicalPath())) {
                 // if they are equal, we can exit the method without doing any work
                 return;
             }
    -        mkdirsFor( destination );
    +        mkdirsFor(destination);
     
    -        NioFiles.createSymbolicLink( destination, source );
    +        NioFiles.createSymbolicLink(destination, source);
         }
     
         /**
    @@ -1058,12 +929,9 @@ public static void linkFile( final File source, final File destination )
          * @throws IOException if source does not exist, destination cannot be written to, or an
          *             IO error occurs during copying.
          */
    -    public static boolean copyFileIfModified( final File source, final File destination )
    -        throws IOException
    -    {
    -        if ( isSourceNewerThanDestination( source, destination ) )
    -        {
    -            copyFile( source, destination );
    +    public static boolean copyFileIfModified(final File source, final File destination) throws IOException {
    +        if (isSourceNewerThanDestination(source, destination)) {
    +            copyFile(source, destination);
     
                 return true;
             }
    @@ -1085,10 +953,8 @@ public static boolean copyFileIfModified( final File source, final File destinat
          *             
  • an IO error occurs during copying
  • *
*/ - public static void copyURLToFile( final URL source, final File destination ) - throws IOException - { - copyStreamToFile( new URLInputStreamFacade( source ), destination ); + public static void copyURLToFile(final URL source, final File destination) throws IOException { + copyStreamToFile(new URLInputStreamFacade(source), destination); } /** @@ -1105,36 +971,28 @@ public static void copyURLToFile( final URL source, final File destination ) *
  • an IO error occurs during copying
  • * */ - public static void copyStreamToFile( final InputStreamFacade source, final File destination ) - throws IOException - { - mkdirsFor( destination ); - checkCanWrite( destination ); + public static void copyStreamToFile(final InputStreamFacade source, final File destination) throws IOException { + mkdirsFor(destination); + checkCanWrite(destination); - try ( InputStream input = source.getInputStream(); - OutputStream output = Files.newOutputStream( destination.toPath() ) ) - { - IOUtil.copy( input, output ); + try (InputStream input = source.getInputStream(); + OutputStream output = Files.newOutputStream(destination.toPath())) { + IOUtil.copy(input, output); } } - private static void checkCanWrite( File destination ) - throws IOException - { + private static void checkCanWrite(File destination) throws IOException { // make sure we can write to destination - if ( destination.exists() && !destination.canWrite() ) - { + if (destination.exists() && !destination.canWrite()) { final String message = "Unable to open file " + destination + " for writing."; - throw new IOException( message ); + throw new IOException(message); } } - private static void mkdirsFor( File destination ) - { + private static void mkdirsFor(File destination) { // does destination directory exist ? File parentFile = destination.getParentFile(); - if ( parentFile != null && !parentFile.exists() ) - { + if (parentFile != null && !parentFile.exists()) { parentFile.mkdirs(); } } @@ -1142,7 +1000,7 @@ private static void mkdirsFor( File destination ) /** * Normalize a path. Eliminates "/../" and "/./" in a string. Returns null if the ..'s went past the * root. Eg: - * + * *
          * /foo//               -->     /foo/
          * /foo/./              -->     /foo/
    @@ -1156,45 +1014,37 @@ private static void mkdirsFor( File destination )
          * @param path the path to normalize
          * @return the normalized String, or null if too many ..'s.
          */
    -    public static String normalize( final String path )
    -    {
    +    public static String normalize(final String path) {
             String normalized = path;
             // Resolve occurrences of "//" in the normalized path
    -        while ( true )
    -        {
    -            int index = normalized.indexOf( "//" );
    -            if ( index < 0 )
    -            {
    +        while (true) {
    +            int index = normalized.indexOf("//");
    +            if (index < 0) {
                     break;
                 }
    -            normalized = normalized.substring( 0, index ) + normalized.substring( index + 1 );
    +            normalized = normalized.substring(0, index) + normalized.substring(index + 1);
             }
     
             // Resolve occurrences of "/./" in the normalized path
    -        while ( true )
    -        {
    -            int index = normalized.indexOf( "/./" );
    -            if ( index < 0 )
    -            {
    +        while (true) {
    +            int index = normalized.indexOf("/./");
    +            if (index < 0) {
                     break;
                 }
    -            normalized = normalized.substring( 0, index ) + normalized.substring( index + 2 );
    +            normalized = normalized.substring(0, index) + normalized.substring(index + 2);
             }
     
             // Resolve occurrences of "/../" in the normalized path
    -        while ( true )
    -        {
    -            int index = normalized.indexOf( "/../" );
    -            if ( index < 0 )
    -            {
    +        while (true) {
    +            int index = normalized.indexOf("/../");
    +            if (index < 0) {
                     break;
                 }
    -            if ( index == 0 )
    -            {
    +            if (index == 0) {
                     return null; // Trying to go outside our context
                 }
    -            int index2 = normalized.lastIndexOf( '/', index - 1 );
    -            normalized = normalized.substring( 0, index2 ) + normalized.substring( index + 3 );
    +            int index2 = normalized.lastIndexOf('/', index - 1);
    +            normalized = normalized.substring(0, index2) + normalized.substring(index + 3);
             }
     
             // Return the normalized path that we have completed
    @@ -1203,45 +1053,40 @@ public static String normalize( final String path )
     
         /**
          * 

    Will concatenate 2 paths. Paths with .. will be properly handled.

    - * + * * Eg., *
          * /a/b/c + d = /a/b/d
          * /a/b/c + ../d = /a/d
          * 
    - + * *

    Thieved from Tomcat sources...

    * * @param lookupPath a path * @param path the path to concatenate * @return The concatenated paths, or null if error occurs */ - public static String catPath( final String lookupPath, final String path ) - { + public static String catPath(final String lookupPath, final String path) { // Cut off the last slash and everything beyond - int index = lookupPath.lastIndexOf( "/" ); - String lookup = lookupPath.substring( 0, index ); + int index = lookupPath.lastIndexOf("/"); + String lookup = lookupPath.substring(0, index); String pth = path; // Deal with .. by chopping dirs off the lookup path - while ( pth.startsWith( "../" ) ) - { - if ( lookup.length() > 0 ) - { - index = lookup.lastIndexOf( "/" ); - lookup = lookup.substring( 0, index ); - } - else - { + while (pth.startsWith("../")) { + if (lookup.length() > 0) { + index = lookup.lastIndexOf("/"); + lookup = lookup.substring(0, index); + } else { // More ..'s than dirs, return null return null; } - index = pth.indexOf( "../" ) + 3; - pth = pth.substring( index ); + index = pth.indexOf("../") + 3; + pth = pth.substring(index); } - return new StringBuffer( lookup ).append( "/" ).append( pth ).toString(); + return new StringBuffer(lookup).append("/").append(pth).toString(); } /** @@ -1253,30 +1098,23 @@ public static String catPath( final String lookupPath, final String path ) * @param filename Absolute or relative file path to resolve. * @return The canonical File of filename. */ - public static File resolveFile( final File baseFile, String filename ) - { + public static File resolveFile(final File baseFile, String filename) { String filenm = filename; - if ( '/' != File.separatorChar ) - { - filenm = filename.replace( '/', File.separatorChar ); + if ('/' != File.separatorChar) { + filenm = filename.replace('/', File.separatorChar); } - if ( '\\' != File.separatorChar ) - { - filenm = filename.replace( '\\', File.separatorChar ); + if ('\\' != File.separatorChar) { + filenm = filename.replace('\\', File.separatorChar); } // deal with absolute files - if ( filenm.startsWith( File.separator ) || ( Os.isFamily( Os.FAMILY_WINDOWS ) && filenm.indexOf( ":" ) > 0 ) ) - { - File file = new File( filenm ); + if (filenm.startsWith(File.separator) || (Os.isFamily(Os.FAMILY_WINDOWS) && filenm.indexOf(":") > 0)) { + File file = new File(filenm); - try - { + try { file = file.getCanonicalFile(); - } - catch ( final IOException ioe ) - { + } catch (final IOException ioe) { // nop } @@ -1291,33 +1129,27 @@ public static File resolveFile( final File baseFile, String filename ) // on win32 at start of filename as UNC filenames can // be \\AComputer\AShare\myfile.txt int start = 0; - if ( '\\' == File.separatorChar ) - { - sb.append( filenm.charAt( 0 ) ); + if ('\\' == File.separatorChar) { + sb.append(filenm.charAt(0)); start++; } - for ( int i = start; i < chars.length; i++ ) - { + for (int i = start; i < chars.length; i++) { final boolean doubleSeparator = File.separatorChar == chars[i] && File.separatorChar == chars[i - 1]; - if ( !doubleSeparator ) - { - sb.append( chars[i] ); + if (!doubleSeparator) { + sb.append(chars[i]); } } filenm = sb.toString(); // must be relative - File file = ( new File( baseFile, filenm ) ).getAbsoluteFile(); + File file = (new File(baseFile, filenm)).getAbsoluteFile(); - try - { + try { file = file.getCanonicalFile(); - } - catch ( final IOException ioe ) - { + } catch (final IOException ioe) { // nop } @@ -1330,10 +1162,8 @@ public static File resolveFile( final File baseFile, String filename ) * @param file the file path * @throws IOException if any */ - public static void forceDelete( final String file ) - throws IOException - { - forceDelete( new File( file ) ); + public static void forceDelete(final String file) throws IOException { + forceDelete(new File(file)); } /** @@ -1342,24 +1172,18 @@ public static void forceDelete( final String file ) * @param file a file * @throws IOException if any */ - public static void forceDelete( final File file ) - throws IOException - { - if ( file.isDirectory() ) - { - deleteDirectory( file ); - } - else - { + public static void forceDelete(final File file) throws IOException { + if (file.isDirectory()) { + deleteDirectory(file); + } else { /* * NOTE: Always try to delete the file even if it appears to be non-existent. This will ensure that a * symlink whose target does not exist is deleted, too. */ boolean filePresent = file.getCanonicalFile().exists(); - if ( !deleteFile( file ) && filePresent ) - { + if (!deleteFile(file) && filePresent) { final String message = "File " + file + " unable to be deleted."; - throw new IOException( message ); + throw new IOException(message); } } } @@ -1371,29 +1195,21 @@ public static void forceDelete( final File file ) * @param file a file * @throws IOException if any */ - private static boolean deleteFile( File file ) - throws IOException - { - if ( file.isDirectory() ) - { - throw new IOException( "File " + file + " isn't a file." ); + private static boolean deleteFile(File file) throws IOException { + if (file.isDirectory()) { + throw new IOException("File " + file + " isn't a file."); } - if ( !file.delete() ) - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { + if (!file.delete()) { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { file = file.getCanonicalFile(); System.gc(); } - try - { - Thread.sleep( 10 ); + try { + Thread.sleep(10); return file.delete(); - } - catch ( InterruptedException ignore ) - { + } catch (InterruptedException ignore) { return file.delete(); } } @@ -1407,20 +1223,14 @@ private static boolean deleteFile( File file ) * @param file a file * @throws IOException if any */ - public static void forceDeleteOnExit( final File file ) - throws IOException - { - if ( !file.exists() ) - { + public static void forceDeleteOnExit(final File file) throws IOException { + if (!file.exists()) { return; } - if ( file.isDirectory() ) - { - deleteDirectoryOnExit( file ); - } - else - { + if (file.isDirectory()) { + deleteDirectoryOnExit(file); + } else { file.deleteOnExit(); } } @@ -1431,16 +1241,13 @@ public static void forceDeleteOnExit( final File file ) * @param directory a directory * @throws IOException if any */ - private static void deleteDirectoryOnExit( final File directory ) - throws IOException - { - if ( !directory.exists() ) - { + private static void deleteDirectoryOnExit(final File directory) throws IOException { + if (!directory.exists()) { return; } directory.deleteOnExit(); // The hook reverses the list - cleanDirectoryOnExit( directory ); + cleanDirectoryOnExit(directory); } /** @@ -1449,38 +1256,29 @@ private static void deleteDirectoryOnExit( final File directory ) * @param directory a directory * @throws IOException if any */ - private static void cleanDirectoryOnExit( final File directory ) - throws IOException - { - if ( !directory.exists() ) - { + private static void cleanDirectoryOnExit(final File directory) throws IOException { + if (!directory.exists()) { final String message = directory + " does not exist"; - throw new IllegalArgumentException( message ); + throw new IllegalArgumentException(message); } - if ( !directory.isDirectory() ) - { + if (!directory.isDirectory()) { final String message = directory + " is not a directory"; - throw new IllegalArgumentException( message ); + throw new IllegalArgumentException(message); } IOException exception = null; final File[] files = directory.listFiles(); - for ( final File file : files ) - { - try - { - forceDeleteOnExit( file ); - } - catch ( final IOException ioe ) - { + for (final File file : files) { + try { + forceDeleteOnExit(file); + } catch (final IOException ioe) { exception = ioe; } } - if ( null != exception ) - { + if (null != exception) { throw exception; } } @@ -1493,34 +1291,25 @@ private static void cleanDirectoryOnExit( final File directory ) * @throws IllegalArgumentException if the file contains illegal Windows characters under Windows OS. * @see #INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME */ - public static void forceMkdir( final File file ) - throws IOException - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - if ( !isValidWindowsFileName( file ) ) - { - throw new IllegalArgumentException( "The file (" + file.getAbsolutePath() - + ") cannot contain any of the following characters: \n" - + StringUtils.join( INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " " ) ); + public static void forceMkdir(final File file) throws IOException { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + if (!isValidWindowsFileName(file)) { + throw new IllegalArgumentException("The file (" + file.getAbsolutePath() + + ") cannot contain any of the following characters: \n" + + StringUtils.join(INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " ")); } } - if ( file.exists() ) - { - if ( file.isFile() ) - { + if (file.exists()) { + if (file.isFile()) { final String message = - "File " + file + " exists and is " + "not a directory. Unable to create directory."; - throw new IOException( message ); + "File " + file + " exists and is " + "not a directory. Unable to create directory."; + throw new IOException(message); } - } - else - { - if ( false == file.mkdirs() ) - { + } else { + if (false == file.mkdirs()) { final String message = "Unable to create directory " + file; - throw new IOException( message ); + throw new IOException(message); } } } @@ -1531,10 +1320,8 @@ public static void forceMkdir( final File file ) * @param directory a directory * @throws IOException if any */ - public static void deleteDirectory( final String directory ) - throws IOException - { - deleteDirectory( new File( directory ) ); + public static void deleteDirectory(final String directory) throws IOException { + deleteDirectory(new File(directory)); } /** @@ -1543,11 +1330,8 @@ public static void deleteDirectory( final String directory ) * @param directory a directory * @throws IOException if any */ - public static void deleteDirectory( final File directory ) - throws IOException - { - if ( !directory.exists() ) - { + public static void deleteDirectory(final File directory) throws IOException { + if (!directory.exists()) { return; } @@ -1555,16 +1339,14 @@ public static void deleteDirectory( final File directory ) * try delete the directory before its contents, which will take care of any directories that are really * symbolic links. */ - if ( directory.delete() ) - { + if (directory.delete()) { return; } - cleanDirectory( directory ); - if ( !directory.delete() ) - { + cleanDirectory(directory); + if (!directory.delete()) { final String message = "Directory " + directory + " unable to be deleted."; - throw new IOException( message ); + throw new IOException(message); } } @@ -1574,10 +1356,8 @@ public static void deleteDirectory( final File directory ) * @param directory a directory * @throws IOException if any */ - public static void cleanDirectory( final String directory ) - throws IOException - { - cleanDirectory( new File( directory ) ); + public static void cleanDirectory(final String directory) throws IOException { + cleanDirectory(new File(directory)); } /** @@ -1586,44 +1366,34 @@ public static void cleanDirectory( final String directory ) * @param directory a directory * @throws IOException if any */ - public static void cleanDirectory( final File directory ) - throws IOException - { - if ( !directory.exists() ) - { + public static void cleanDirectory(final File directory) throws IOException { + if (!directory.exists()) { final String message = directory + " does not exist"; - throw new IllegalArgumentException( message ); + throw new IllegalArgumentException(message); } - if ( !directory.isDirectory() ) - { + if (!directory.isDirectory()) { final String message = directory + " is not a directory"; - throw new IllegalArgumentException( message ); + throw new IllegalArgumentException(message); } IOException exception = null; final File[] files = directory.listFiles(); - if ( files == null ) - { + if (files == null) { return; } - for ( final File file : files ) - { - try - { - forceDelete( file ); - } - catch ( final IOException ioe ) - { + for (final File file : files) { + try { + forceDelete(file); + } catch (final IOException ioe) { exception = ioe; } } - if ( null != exception ) - { + if (null != exception) { throw exception; } } @@ -1634,9 +1404,8 @@ public static void cleanDirectory( final File directory ) * @param directory a directory * @return size of directory in bytes. */ - public static long sizeOfDirectory( final String directory ) - { - return sizeOfDirectory( new File( directory ) ); + public static long sizeOfDirectory(final String directory) { + return sizeOfDirectory(new File(directory)); } /** @@ -1645,31 +1414,24 @@ public static long sizeOfDirectory( final String directory ) * @param directory a directory * @return size of directory in bytes. */ - public static long sizeOfDirectory( final File directory ) - { - if ( !directory.exists() ) - { + public static long sizeOfDirectory(final File directory) { + if (!directory.exists()) { final String message = directory + " does not exist"; - throw new IllegalArgumentException( message ); + throw new IllegalArgumentException(message); } - if ( !directory.isDirectory() ) - { + if (!directory.isDirectory()) { final String message = directory + " is not a directory"; - throw new IllegalArgumentException( message ); + throw new IllegalArgumentException(message); } long size = 0; final File[] files = directory.listFiles(); - for ( final File file : files ) - { - if ( file.isDirectory() ) - { - size += sizeOfDirectory( file ); - } - else - { + for (final File file : files) { + if (file.isDirectory()) { + size += sizeOfDirectory(file); + } else { size += file.length(); } } @@ -1688,10 +1450,8 @@ public static long sizeOfDirectory( final File directory ) * @throws IOException io issue * @see #getFileNames(File, String, String, boolean) */ - public static List getFiles( File directory, String includes, String excludes ) - throws IOException - { - return getFiles( directory, includes, excludes, true ); + public static List getFiles(File directory, String includes, String excludes) throws IOException { + return getFiles(directory, includes, excludes, true); } /** @@ -1705,16 +1465,14 @@ public static List getFiles( File directory, String includes, String exclu * @throws IOException io issue * @see #getFileNames(File, String, String, boolean) */ - public static List getFiles( File directory, String includes, String excludes, boolean includeBasedir ) - throws IOException - { - List fileNames = getFileNames( directory, includes, excludes, includeBasedir ); + public static List getFiles(File directory, String includes, String excludes, boolean includeBasedir) + throws IOException { + List fileNames = getFileNames(directory, includes, excludes, includeBasedir); List files = new ArrayList(); - for ( String filename : fileNames ) - { - files.add( new File( filename ) ); + for (String filename : fileNames) { + files.add(new File(filename)); } return files; @@ -1730,10 +1488,9 @@ public static List getFiles( File directory, String includes, String exclu * @return a list of files as String * @throws IOException io issue */ - public static List getFileNames( File directory, String includes, String excludes, boolean includeBasedir ) - throws IOException - { - return getFileNames( directory, includes, excludes, includeBasedir, true ); + public static List getFileNames(File directory, String includes, String excludes, boolean includeBasedir) + throws IOException { + return getFileNames(directory, includes, excludes, includeBasedir, true); } /** @@ -1747,11 +1504,10 @@ public static List getFileNames( File directory, String includes, String * @return a list of files as String * @throws IOException io issue */ - public static List getFileNames( File directory, String includes, String excludes, boolean includeBasedir, - boolean isCaseSensitive ) - throws IOException - { - return getFileAndDirectoryNames( directory, includes, excludes, includeBasedir, isCaseSensitive, true, false ); + public static List getFileNames( + File directory, String includes, String excludes, boolean includeBasedir, boolean isCaseSensitive) + throws IOException { + return getFileAndDirectoryNames(directory, includes, excludes, includeBasedir, isCaseSensitive, true, false); } /** @@ -1764,11 +1520,9 @@ public static List getFileNames( File directory, String includes, String * @return a list of directories as String * @throws IOException io issue */ - public static List getDirectoryNames( File directory, String includes, String excludes, - boolean includeBasedir ) - throws IOException - { - return getDirectoryNames( directory, includes, excludes, includeBasedir, true ); + public static List getDirectoryNames( + File directory, String includes, String excludes, boolean includeBasedir) throws IOException { + return getDirectoryNames(directory, includes, excludes, includeBasedir, true); } /** @@ -1782,11 +1536,10 @@ public static List getDirectoryNames( File directory, String includes, S * @return a list of directories as String * @throws IOException io issue */ - public static List getDirectoryNames( File directory, String includes, String excludes, - boolean includeBasedir, boolean isCaseSensitive ) - throws IOException - { - return getFileAndDirectoryNames( directory, includes, excludes, includeBasedir, isCaseSensitive, false, true ); + public static List getDirectoryNames( + File directory, String includes, String excludes, boolean includeBasedir, boolean isCaseSensitive) + throws IOException { + return getFileAndDirectoryNames(directory, includes, excludes, includeBasedir, isCaseSensitive, false, true); } /** @@ -1802,61 +1555,53 @@ public static List getDirectoryNames( File directory, String includes, S * @return a list of files as String * @throws IOException io issue */ - public static List getFileAndDirectoryNames( File directory, String includes, String excludes, - boolean includeBasedir, boolean isCaseSensitive, - boolean getFiles, boolean getDirectories ) - throws IOException - { + public static List getFileAndDirectoryNames( + File directory, + String includes, + String excludes, + boolean includeBasedir, + boolean isCaseSensitive, + boolean getFiles, + boolean getDirectories) + throws IOException { DirectoryScanner scanner = new DirectoryScanner(); - scanner.setBasedir( directory ); + scanner.setBasedir(directory); - if ( includes != null ) - { - scanner.setIncludes( StringUtils.split( includes, "," ) ); + if (includes != null) { + scanner.setIncludes(StringUtils.split(includes, ",")); } - if ( excludes != null ) - { - scanner.setExcludes( StringUtils.split( excludes, "," ) ); + if (excludes != null) { + scanner.setExcludes(StringUtils.split(excludes, ",")); } - scanner.setCaseSensitive( isCaseSensitive ); + scanner.setCaseSensitive(isCaseSensitive); scanner.scan(); List list = new ArrayList(); - if ( getFiles ) - { + if (getFiles) { String[] files = scanner.getIncludedFiles(); - for ( String file : files ) - { - if ( includeBasedir ) - { - list.add( directory + FileUtils.FS + file ); - } - else - { - list.add( file ); + for (String file : files) { + if (includeBasedir) { + list.add(directory + FileUtils.FS + file); + } else { + list.add(file); } } } - if ( getDirectories ) - { + if (getDirectories) { String[] directories = scanner.getIncludedDirectories(); - for ( String directory1 : directories ) - { - if ( includeBasedir ) - { - list.add( directory + FileUtils.FS + directory1 ); - } - else - { - list.add( directory1 ); + for (String directory1 : directories) { + if (includeBasedir) { + list.add(directory + FileUtils.FS + directory1); + } else { + list.add(directory1); } } } @@ -1871,10 +1616,8 @@ public static List getFileAndDirectoryNames( File directory, String incl * @param destinationDirectory the target dir * @throws IOException if any */ - public static void copyDirectory( File sourceDirectory, File destinationDirectory ) - throws IOException - { - copyDirectory( sourceDirectory, destinationDirectory, "**", null ); + public static void copyDirectory(File sourceDirectory, File destinationDirectory) throws IOException { + copyDirectory(sourceDirectory, destinationDirectory, "**", null); } /** @@ -1887,26 +1630,22 @@ public static void copyDirectory( File sourceDirectory, File destinationDirector * @throws IOException if any * @see #getFiles(File, String, String) */ - public static void copyDirectory( File sourceDirectory, File destinationDirectory, String includes, - String excludes ) - throws IOException - { - if ( !sourceDirectory.exists() ) - { + public static void copyDirectory(File sourceDirectory, File destinationDirectory, String includes, String excludes) + throws IOException { + if (!sourceDirectory.exists()) { return; } - List files = getFiles( sourceDirectory, includes, excludes ); + List files = getFiles(sourceDirectory, includes, excludes); - for ( File file : files ) - { - copyFileToDirectory( file, destinationDirectory ); + for (File file : files) { + copyFileToDirectory(file, destinationDirectory); } } /** *

    Copies a entire directory layout : no files will be copied only directories

    - * + * * Note: *
      *
    • It will include empty directories. @@ -1920,69 +1659,57 @@ public static void copyDirectory( File sourceDirectory, File destinationDirector * @throws IOException if any * @since 1.5.7 */ - public static void copyDirectoryLayout( File sourceDirectory, File destinationDirectory, String[] includes, - String[] excludes ) - throws IOException - { - if ( sourceDirectory == null ) - { - throw new IOException( "source directory can't be null." ); + public static void copyDirectoryLayout( + File sourceDirectory, File destinationDirectory, String[] includes, String[] excludes) throws IOException { + if (sourceDirectory == null) { + throw new IOException("source directory can't be null."); } - if ( destinationDirectory == null ) - { - throw new IOException( "destination directory can't be null." ); + if (destinationDirectory == null) { + throw new IOException("destination directory can't be null."); } - if ( sourceDirectory.equals( destinationDirectory ) ) - { - throw new IOException( "source and destination are the same directory." ); + if (sourceDirectory.equals(destinationDirectory)) { + throw new IOException("source and destination are the same directory."); } - if ( !sourceDirectory.exists() ) - { - throw new IOException( "Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ")." ); + if (!sourceDirectory.exists()) { + throw new IOException("Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ")."); } DirectoryScanner scanner = new DirectoryScanner(); - scanner.setBasedir( sourceDirectory ); + scanner.setBasedir(sourceDirectory); - if ( includes != null && includes.length >= 1 ) - { - scanner.setIncludes( includes ); - } - else - { - scanner.setIncludes( new String[] { "**" } ); + if (includes != null && includes.length >= 1) { + scanner.setIncludes(includes); + } else { + scanner.setIncludes(new String[] {"**"}); } - if ( excludes != null && excludes.length >= 1 ) - { - scanner.setExcludes( excludes ); + if (excludes != null && excludes.length >= 1) { + scanner.setExcludes(excludes); } scanner.addDefaultExcludes(); scanner.scan(); - List includedDirectories = Arrays.asList( scanner.getIncludedDirectories() ); + List includedDirectories = Arrays.asList(scanner.getIncludedDirectories()); - for ( String name : includedDirectories ) - { - File source = new File( sourceDirectory, name ); + for (String name : includedDirectories) { + File source = new File(sourceDirectory, name); - if ( source.equals( sourceDirectory ) ) - { + if (source.equals(sourceDirectory)) { continue; } - File destination = new File( destinationDirectory, name ); + File destination = new File(destinationDirectory, name); destination.mkdirs(); } } /** *

      Copies a entire directory structure.

      - * + * * Note: *
        *
      • It will include empty directories. @@ -1993,15 +1720,13 @@ public static void copyDirectoryLayout( File sourceDirectory, File destinationDi * @param destinationDirectory the target dir * @throws IOException if any */ - public static void copyDirectoryStructure( File sourceDirectory, File destinationDirectory ) - throws IOException - { - copyDirectoryStructure( sourceDirectory, destinationDirectory, destinationDirectory, false ); + public static void copyDirectoryStructure(File sourceDirectory, File destinationDirectory) throws IOException { + copyDirectoryStructure(sourceDirectory, destinationDirectory, destinationDirectory, false); } /** *

        Copies an entire directory structure but only source files with timestamp later than the destinations'.

        - * + * * Note: *
          *
        • It will include empty directories. @@ -2012,87 +1737,70 @@ public static void copyDirectoryStructure( File sourceDirectory, File destinatio * @param destinationDirectory the target dir * @throws IOException if any */ - public static void copyDirectoryStructureIfModified( File sourceDirectory, File destinationDirectory ) - throws IOException - { - copyDirectoryStructure( sourceDirectory, destinationDirectory, destinationDirectory, true ); + public static void copyDirectoryStructureIfModified(File sourceDirectory, File destinationDirectory) + throws IOException { + copyDirectoryStructure(sourceDirectory, destinationDirectory, destinationDirectory, true); } - private static void copyDirectoryStructure( File sourceDirectory, File destinationDirectory, - File rootDestinationDirectory, boolean onlyModifiedFiles ) - throws IOException - { - if ( sourceDirectory == null ) - { - throw new IOException( "source directory can't be null." ); + private static void copyDirectoryStructure( + File sourceDirectory, File destinationDirectory, File rootDestinationDirectory, boolean onlyModifiedFiles) + throws IOException { + if (sourceDirectory == null) { + throw new IOException("source directory can't be null."); } - if ( destinationDirectory == null ) - { - throw new IOException( "destination directory can't be null." ); + if (destinationDirectory == null) { + throw new IOException("destination directory can't be null."); } - if ( sourceDirectory.equals( destinationDirectory ) ) - { - throw new IOException( "source and destination are the same directory." ); + if (sourceDirectory.equals(destinationDirectory)) { + throw new IOException("source and destination are the same directory."); } - if ( !sourceDirectory.exists() ) - { - throw new IOException( "Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ")." ); + if (!sourceDirectory.exists()) { + throw new IOException("Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ")."); } File[] files = sourceDirectory.listFiles(); String sourcePath = sourceDirectory.getAbsolutePath(); - for ( File file : files ) - { - if ( file.equals( rootDestinationDirectory ) ) - { + for (File file : files) { + if (file.equals(rootDestinationDirectory)) { // We don't copy the destination directory in itself continue; } String dest = file.getAbsolutePath(); - dest = dest.substring( sourcePath.length() + 1 ); + dest = dest.substring(sourcePath.length() + 1); - File destination = new File( destinationDirectory, dest ); + File destination = new File(destinationDirectory, dest); - if ( file.isFile() ) - { + if (file.isFile()) { destination = destination.getParentFile(); - if ( onlyModifiedFiles ) - { - copyFileToDirectoryIfModified( file, destination ); + if (onlyModifiedFiles) { + copyFileToDirectoryIfModified(file, destination); + } else { + copyFileToDirectory(file, destination); } - else - { - copyFileToDirectory( file, destination ); - } - } - else if ( file.isDirectory() ) - { - if ( !destination.exists() && !destination.mkdirs() ) - { - throw new IOException( "Could not create destination directory '" + destination.getAbsolutePath() - + "'." ); + } else if (file.isDirectory()) { + if (!destination.exists() && !destination.mkdirs()) { + throw new IOException( + "Could not create destination directory '" + destination.getAbsolutePath() + "'."); } - copyDirectoryStructure( file, destination, rootDestinationDirectory, onlyModifiedFiles ); - } - else - { - throw new IOException( "Unknown file type: " + file.getAbsolutePath() ); + copyDirectoryStructure(file, destination, rootDestinationDirectory, onlyModifiedFiles); + } else { + throw new IOException("Unknown file type: " + file.getAbsolutePath()); } } } /** *

          Renames a file, even if that involves crossing file system boundaries.

          - * + * *

          This will remove to (if it exists), ensure that to's parent directory exists and move * from, which involves deleting from as well.

          * @@ -2101,41 +1809,35 @@ else if ( file.isDirectory() ) * @throws IOException if anything bad happens during this process. Note that to may have been deleted * already when this happens. */ - public static void rename( File from, File to ) - throws IOException - { - if ( to.exists() && !to.delete() ) - { - throw new IOException( "Failed to delete " + to + " while trying to rename " + from ); + public static void rename(File from, File to) throws IOException { + if (to.exists() && !to.delete()) { + throw new IOException("Failed to delete " + to + " while trying to rename " + from); } File parent = to.getParentFile(); - if ( parent != null && !parent.exists() && !parent.mkdirs() ) - { - throw new IOException( "Failed to create directory " + parent + " while trying to rename " + from ); + if (parent != null && !parent.exists() && !parent.mkdirs()) { + throw new IOException("Failed to create directory " + parent + " while trying to rename " + from); } - if ( !from.renameTo( to ) ) - { - copyFile( from, to ); - if ( !from.delete() ) - { - throw new IOException( "Failed to delete " + from + " while trying to rename it." ); + if (!from.renameTo(to)) { + copyFile(from, to); + if (!from.delete()) { + throw new IOException("Failed to delete " + from + " while trying to rename it."); } } } /** *

          Create a temporary file in a given directory.

          - * + * *

          The file denoted by the returned abstract pathname did not exist before this method was invoked, any subsequent * invocation of this method will yield a different file name.

          - * + * *

          The filename is prefixNNNNNsuffix where NNNN is a random number

          - * + * *

          This method is different to {@link File#createTempFile(String, String, File)} of JDK 1.2 as it doesn't create the * file itself. It uses the location pointed to by java.io.tmpdir when the parentDir attribute is null.

          - * + * *

          To delete automatically the file created by this method, use the {@link File#deleteOnExit()} method.

          * * @param prefix prefix before the random number @@ -2143,25 +1845,20 @@ public static void rename( File from, File to ) * @param parentDir Directory to create the temporary file in -java.io.tmpdir used if not specificed * @return a File reference to the new temporary file. */ - public static File createTempFile( String prefix, String suffix, File parentDir ) - { + public static File createTempFile(String prefix, String suffix, File parentDir) { File result = null; - String parent = System.getProperty( "java.io.tmpdir" ); - if ( parentDir != null ) - { + String parent = System.getProperty("java.io.tmpdir"); + if (parentDir != null) { parent = parentDir.getPath(); } - DecimalFormat fmt = new DecimalFormat( "#####" ); + DecimalFormat fmt = new DecimalFormat("#####"); SecureRandom secureRandom = new SecureRandom(); long secureInitializer = secureRandom.nextLong(); - Random rand = new Random( secureInitializer + Runtime.getRuntime().freeMemory() ); - synchronized ( rand ) - { - do - { - result = new File( parent, prefix + fmt.format( Math.abs( rand.nextInt() ) ) + suffix ); - } - while ( result.exists() ); + Random rand = new Random(secureInitializer + Runtime.getRuntime().freeMemory()); + synchronized (rand) { + do { + result = new File(parent, prefix + fmt.format(Math.abs(rand.nextInt())) + suffix); + } while (result.exists()); } return result; @@ -2176,15 +1873,12 @@ public static File createTempFile( String prefix, String suffix, File parentDir * @param wrappers array of {@link FilterWrapper} * @throws IOException if an IO error occurs during copying or filtering */ - public static void copyFile( File from, File to, String encoding, FilterWrapper[] wrappers ) - throws IOException - { - copyFile( from, to, encoding, wrappers, false ); + public static void copyFile(File from, File to, String encoding, FilterWrapper[] wrappers) throws IOException { + copyFile(from, to, encoding, wrappers, false); } - public static abstract class FilterWrapper - { - public abstract Reader getReader( Reader fileReader ); + public abstract static class FilterWrapper { + public abstract Reader getReader(Reader fileReader); } /** @@ -2198,59 +1892,48 @@ public static abstract class FilterWrapper * @throws IOException if an IO error occurs during copying or filtering * @since 1.5.2 */ - public static void copyFile( File from, File to, String encoding, FilterWrapper[] wrappers, boolean overwrite ) - throws IOException - { - if ( wrappers != null && wrappers.length > 0 ) - { + public static void copyFile(File from, File to, String encoding, FilterWrapper[] wrappers, boolean overwrite) + throws IOException { + if (wrappers != null && wrappers.length > 0) { // buffer so it isn't reading a byte at a time! Reader fileReader = null; Writer fileWriter = null; - try - { - if ( encoding == null || encoding.length() < 1 ) - { - fileReader = Files.newBufferedReader( from.toPath() ); - fileWriter = Files.newBufferedWriter( to.toPath() ); - } - else - { - OutputStream outstream = Files.newOutputStream( to.toPath() ); + try { + if (encoding == null || encoding.length() < 1) { + fileReader = Files.newBufferedReader(from.toPath()); + fileWriter = Files.newBufferedWriter(to.toPath()); + } else { + OutputStream outstream = Files.newOutputStream(to.toPath()); - fileReader = Files.newBufferedReader( from.toPath(), Charset.forName( encoding ) ); + fileReader = Files.newBufferedReader(from.toPath(), Charset.forName(encoding)); - fileWriter = new OutputStreamWriter( outstream, encoding ); + fileWriter = new OutputStreamWriter(outstream, encoding); } Reader reader = fileReader; - for ( FilterWrapper wrapper : wrappers ) - { - reader = wrapper.getReader( reader ); + for (FilterWrapper wrapper : wrappers) { + reader = wrapper.getReader(reader); } - IOUtil.copy( reader, fileWriter ); + IOUtil.copy(reader, fileWriter); fileWriter.close(); fileWriter = null; fileReader.close(); fileReader = null; + } finally { + IOUtil.close(fileReader); + IOUtil.close(fileWriter); } - finally - { - IOUtil.close( fileReader ); - IOUtil.close( fileWriter ); - } - } - else - { - if ( isSourceNewerThanDestination( from, to ) || overwrite ) - { - copyFile( from, to ); + } else { + if (isSourceNewerThanDestination(from, to) || overwrite) { + copyFile(from, to); } } } - private static boolean isSourceNewerThanDestination( File source, File destination ) { - return ( destination.lastModified() == 0L && source.lastModified() == 0L ) || destination.lastModified() < source.lastModified(); + private static boolean isSourceNewerThanDestination(File source, File destination) { + return (destination.lastModified() == 0L && source.lastModified() == 0L) + || destination.lastModified() < source.lastModified(); } /** @@ -2260,22 +1943,16 @@ private static boolean isSourceNewerThanDestination( File source, File destinati * @return a List containing every every line not starting with # and not empty * @throws IOException if any */ - public static List loadFile( File file ) - throws IOException - { + public static List loadFile(File file) throws IOException { final List lines = new ArrayList(); - if ( file.exists() ) - { - try ( BufferedReader reader = Files.newBufferedReader( file.toPath() ) ) - { - for ( String line = reader.readLine(); line != null; line = reader.readLine() ) - { + if (file.exists()) { + try (BufferedReader reader = Files.newBufferedReader(file.toPath())) { + for (String line = reader.readLine(); line != null; line = reader.readLine()) { line = line.trim(); - if ( !line.startsWith( "#" ) && line.length() != 0 ) - { - lines.add( line ); + if (!line.startsWith("#") && line.length() != 0) { + lines.add(line); } } } @@ -2294,19 +1971,15 @@ public static List loadFile( File file ) * @see #INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME * @since 1.5.2 */ - public static boolean isValidWindowsFileName( File f ) - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - if ( StringUtils.indexOfAny( f.getName(), INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME ) != -1 ) - { + public static boolean isValidWindowsFileName(File f) { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + if (StringUtils.indexOfAny(f.getName(), INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME) != -1) { return false; } File parentFile = f.getParentFile(); - if ( parentFile != null ) - { - return isValidWindowsFileName( parentFile ); + if (parentFile != null) { + return isValidWindowsFileName(parentFile); } } diff --git a/src/main/java/org/codehaus/plexus/util/IOUtil.java b/src/main/java/org/codehaus/plexus/util/IOUtil.java index b431a8d9..e7f20908 100644 --- a/src/main/java/org/codehaus/plexus/util/IOUtil.java +++ b/src/main/java/org/codehaus/plexus/util/IOUtil.java @@ -132,16 +132,13 @@ * method variants to specify buffer size and encoding, each row may correspond to up to 4 methods. */ -public final class IOUtil extends BaseIOUtil -{ +public final class IOUtil extends BaseIOUtil { private static final int DEFAULT_BUFFER_SIZE = 1024 * 16; /** * Private constructor to prevent instantiation. */ - private IOUtil() - { - } + private IOUtil() {} /////////////////////////////////////////////////////////////// // Core copy methods @@ -153,10 +150,8 @@ private IOUtil() * @param output the result * @throws IOException io issue */ - public static void copy( final InputStream input, final OutputStream output ) - throws IOException - { - BaseIOUtil.copy( input, output ); + public static void copy(final InputStream input, final OutputStream output) throws IOException { + BaseIOUtil.copy(input, output); } /** @@ -166,14 +161,12 @@ public static void copy( final InputStream input, final OutputStream output ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final InputStream input, final OutputStream output, final int bufferSize ) - throws IOException - { + public static void copy(final InputStream input, final OutputStream output, final int bufferSize) + throws IOException { final byte[] buffer = new byte[bufferSize]; int n = 0; - while ( 0 <= ( n = input.read( buffer ) ) ) - { - output.write( buffer, 0, n ); + while (0 <= (n = input.read(buffer))) { + output.write(buffer, 0, n); } } @@ -183,10 +176,8 @@ public static void copy( final InputStream input, final OutputStream output, fin * @param output the result * @throws IOException io issue */ - public static void copy( final Reader input, final Writer output ) - throws IOException - { - BaseIOUtil.copy( input, output ); + public static void copy(final Reader input, final Writer output) throws IOException { + BaseIOUtil.copy(input, output); } /** @@ -196,14 +187,11 @@ public static void copy( final Reader input, final Writer output ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final Reader input, final Writer output, final int bufferSize ) - throws IOException - { + public static void copy(final Reader input, final Writer output, final int bufferSize) throws IOException { final char[] buffer = new char[bufferSize]; int n = 0; - while ( 0 <= ( n = input.read( buffer ) ) ) - { - output.write( buffer, 0, n ); + while (0 <= (n = input.read(buffer))) { + output.write(buffer, 0, n); } output.flush(); } @@ -223,10 +211,8 @@ public static void copy( final Reader input, final Writer output, final int buff * @param output the result * @throws IOException io issue */ - public static void copy( final InputStream input, final Writer output ) - throws IOException - { - copy( input, output, DEFAULT_BUFFER_SIZE ); + public static void copy(final InputStream input, final Writer output) throws IOException { + copy(input, output, DEFAULT_BUFFER_SIZE); } /** @@ -237,11 +223,9 @@ public static void copy( final InputStream input, final Writer output ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final InputStream input, final Writer output, final int bufferSize ) - throws IOException - { - final InputStreamReader in = new InputStreamReader( input ); - copy( in, output, bufferSize ); + public static void copy(final InputStream input, final Writer output, final int bufferSize) throws IOException { + final InputStreamReader in = new InputStreamReader(input); + copy(in, output, bufferSize); } /** @@ -254,11 +238,9 @@ public static void copy( final InputStream input, final Writer output, final int * encoding types. * @throws IOException io issue */ - public static void copy( final InputStream input, final Writer output, final String encoding ) - throws IOException - { - final InputStreamReader in = new InputStreamReader( input, encoding ); - copy( in, output ); + public static void copy(final InputStream input, final Writer output, final String encoding) throws IOException { + final InputStreamReader in = new InputStreamReader(input, encoding); + copy(in, output); } /** @@ -272,11 +254,10 @@ public static void copy( final InputStream input, final Writer output, final Str * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final InputStream input, final Writer output, final String encoding, final int bufferSize ) - throws IOException - { - final InputStreamReader in = new InputStreamReader( input, encoding ); - copy( in, output, bufferSize ); + public static void copy(final InputStream input, final Writer output, final String encoding, final int bufferSize) + throws IOException { + final InputStreamReader in = new InputStreamReader(input, encoding); + copy(in, output, bufferSize); } /////////////////////////////////////////////////////////////// @@ -288,10 +269,8 @@ public static void copy( final InputStream input, final Writer output, final Str * @param input to convert * @throws IOException io issue */ - public static String toString( final InputStream input ) - throws IOException - { - return toString( input, DEFAULT_BUFFER_SIZE ); + public static String toString(final InputStream input) throws IOException { + return toString(input, DEFAULT_BUFFER_SIZE); } /** @@ -301,11 +280,9 @@ public static String toString( final InputStream input ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static String toString( final InputStream input, final int bufferSize ) - throws IOException - { + public static String toString(final InputStream input, final int bufferSize) throws IOException { final StringWriter sw = new StringWriter(); - copy( input, sw, bufferSize ); + copy(input, sw, bufferSize); return sw.toString(); } @@ -317,10 +294,8 @@ public static String toString( final InputStream input, final int bufferSize ) * encoding types. * @throws IOException io issue */ - public static String toString( final InputStream input, final String encoding ) - throws IOException - { - return toString( input, encoding, DEFAULT_BUFFER_SIZE ); + public static String toString(final InputStream input, final String encoding) throws IOException { + return toString(input, encoding, DEFAULT_BUFFER_SIZE); } /** @@ -332,11 +307,10 @@ public static String toString( final InputStream input, final String encoding ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static String toString( final InputStream input, final String encoding, final int bufferSize ) - throws IOException - { + public static String toString(final InputStream input, final String encoding, final int bufferSize) + throws IOException { final StringWriter sw = new StringWriter(); - copy( input, sw, encoding, bufferSize ); + copy(input, sw, encoding, bufferSize); return sw.toString(); } @@ -348,10 +322,8 @@ public static String toString( final InputStream input, final String encoding, f * @param input to convert * @throws IOException io issue */ - public static byte[] toByteArray( final InputStream input ) - throws IOException - { - return toByteArray( input, DEFAULT_BUFFER_SIZE ); + public static byte[] toByteArray(final InputStream input) throws IOException { + return toByteArray(input, DEFAULT_BUFFER_SIZE); } /** @@ -360,11 +332,9 @@ public static byte[] toByteArray( final InputStream input ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static byte[] toByteArray( final InputStream input, final int bufferSize ) - throws IOException - { + public static byte[] toByteArray(final InputStream input, final int bufferSize) throws IOException { final ByteArrayOutputStream output = new ByteArrayOutputStream(); - copy( input, output, bufferSize ); + copy(input, output, bufferSize); return output.toByteArray(); } @@ -382,10 +352,8 @@ public static byte[] toByteArray( final InputStream input, final int bufferSize * @param output the result * @throws IOException io issue */ - public static void copy( final Reader input, final OutputStream output ) - throws IOException - { - copy( input, output, DEFAULT_BUFFER_SIZE ); + public static void copy(final Reader input, final OutputStream output) throws IOException { + copy(input, output, DEFAULT_BUFFER_SIZE); } /** @@ -396,11 +364,9 @@ public static void copy( final Reader input, final OutputStream output ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final Reader input, final OutputStream output, final int bufferSize ) - throws IOException - { - final OutputStreamWriter out = new OutputStreamWriter( output ); - copy( input, out, bufferSize ); + public static void copy(final Reader input, final OutputStream output, final int bufferSize) throws IOException { + final OutputStreamWriter out = new OutputStreamWriter(output); + copy(input, out, bufferSize); // NOTE: Unless anyone is planning on rewriting OutputStreamWriter, we have to flush // here. out.flush(); @@ -413,10 +379,8 @@ public static void copy( final Reader input, final OutputStream output, final in * @param input to convert * @throws IOException io issue */ - public static String toString( final Reader input ) - throws IOException - { - return toString( input, DEFAULT_BUFFER_SIZE ); + public static String toString(final Reader input) throws IOException { + return toString(input, DEFAULT_BUFFER_SIZE); } /** @@ -425,11 +389,9 @@ public static String toString( final Reader input ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static String toString( final Reader input, final int bufferSize ) - throws IOException - { + public static String toString(final Reader input, final int bufferSize) throws IOException { final StringWriter sw = new StringWriter(); - copy( input, sw, bufferSize ); + copy(input, sw, bufferSize); return sw.toString(); } @@ -440,10 +402,8 @@ public static String toString( final Reader input, final int bufferSize ) * @param input to convert * @throws IOException io issue */ - public static byte[] toByteArray( final Reader input ) - throws IOException - { - return toByteArray( input, DEFAULT_BUFFER_SIZE ); + public static byte[] toByteArray(final Reader input) throws IOException { + return toByteArray(input, DEFAULT_BUFFER_SIZE); } /** @@ -452,11 +412,9 @@ public static byte[] toByteArray( final Reader input ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static byte[] toByteArray( final Reader input, final int bufferSize ) - throws IOException - { + public static byte[] toByteArray(final Reader input, final int bufferSize) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); - copy( input, output, bufferSize ); + copy(input, output, bufferSize); return output.toByteArray(); } @@ -475,26 +433,22 @@ public static byte[] toByteArray( final Reader input, final int bufferSize ) * @param output the result * @throws IOException io issue */ - public static void copy( final String input, final OutputStream output ) - throws IOException - { - copy( input, output, DEFAULT_BUFFER_SIZE ); + public static void copy(final String input, final OutputStream output) throws IOException { + copy(input, output, DEFAULT_BUFFER_SIZE); } /** * Serialize chars from a String to bytes on an OutputStream, and flush the * OutputStream. * @param input to convert - * @param output the result + * @param output the result * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final String input, final OutputStream output, final int bufferSize ) - throws IOException - { - final StringReader in = new StringReader( input ); - final OutputStreamWriter out = new OutputStreamWriter( output ); - copy( in, out, bufferSize ); + public static void copy(final String input, final OutputStream output, final int bufferSize) throws IOException { + final StringReader in = new StringReader(input); + final OutputStreamWriter out = new OutputStreamWriter(output); + copy(in, out, bufferSize); // NOTE: Unless anyone is planning on rewriting OutputStreamWriter, we have to flush // here. out.flush(); @@ -509,10 +463,8 @@ public static void copy( final String input, final OutputStream output, final in * @param output the result * @throws IOException io issue */ - public static void copy( final String input, final Writer output ) - throws IOException - { - output.write( input ); + public static void copy(final String input, final Writer output) throws IOException { + output.write(input); } /** @@ -521,18 +473,16 @@ public static void copy( final String input, final Writer output ) * {@link #copy(InputStream, OutputStream)}, and flushing the output stream afterwards. The streams are not closed * after the copy. * @param input to convert - * @param output the result + * @param output the result * @deprecated Buffering streams is actively harmful! See the class description as to why. Use * {@link #copy(InputStream, OutputStream)} instead. * @throws IOException io issue */ @Deprecated - public static void bufferedCopy( final InputStream input, final OutputStream output ) - throws IOException - { - final BufferedInputStream in = new BufferedInputStream( input ); - final BufferedOutputStream out = new BufferedOutputStream( output ); - copy( in, out ); + public static void bufferedCopy(final InputStream input, final OutputStream output) throws IOException { + final BufferedInputStream in = new BufferedInputStream(input); + final BufferedOutputStream out = new BufferedOutputStream(output); + copy(in, out); out.flush(); } @@ -543,10 +493,8 @@ public static void bufferedCopy( final InputStream input, final OutputStream out * @param input to convert * @throws IOException io issue */ - public static byte[] toByteArray( final String input ) - throws IOException - { - return toByteArray( input, DEFAULT_BUFFER_SIZE ); + public static byte[] toByteArray(final String input) throws IOException { + return toByteArray(input, DEFAULT_BUFFER_SIZE); } /** @@ -555,11 +503,9 @@ public static byte[] toByteArray( final String input ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static byte[] toByteArray( final String input, final int bufferSize ) - throws IOException - { + public static byte[] toByteArray(final String input, final int bufferSize) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); - copy( input, output, bufferSize ); + copy(input, output, bufferSize); return output.toByteArray(); } @@ -578,60 +524,53 @@ public static byte[] toByteArray( final String input, final int bufferSize ) * @param output the result * @throws IOException io issue */ - public static void copy( final byte[] input, final Writer output ) - throws IOException - { - copy( input, output, DEFAULT_BUFFER_SIZE ); + public static void copy(final byte[] input, final Writer output) throws IOException { + copy(input, output, DEFAULT_BUFFER_SIZE); } /** * Copy and convert bytes from a byte[] to chars on a Writer. The platform's default * encoding is used for the byte-to-char conversion. * @param input to convert - * @param output the result + * @param output the result * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final byte[] input, final Writer output, final int bufferSize ) - throws IOException - { - final ByteArrayInputStream in = new ByteArrayInputStream( input ); - copy( in, output, bufferSize ); + public static void copy(final byte[] input, final Writer output, final int bufferSize) throws IOException { + final ByteArrayInputStream in = new ByteArrayInputStream(input); + copy(in, output, bufferSize); } /** * Copy and convert bytes from a byte[] to chars on a Writer, using the specified * encoding. * @param input to convert - * @param output the result + * @param output the result * @param encoding The name of a supported character encoding. See the * IANA Charset Registry for a list of valid * encoding types. * @throws IOException io issue */ - public static void copy( final byte[] input, final Writer output, final String encoding ) - throws IOException - { - final ByteArrayInputStream in = new ByteArrayInputStream( input ); - copy( in, output, encoding ); + public static void copy(final byte[] input, final Writer output, final String encoding) throws IOException { + final ByteArrayInputStream in = new ByteArrayInputStream(input); + copy(in, output, encoding); } /** * Copy and convert bytes from a byte[] to chars on a Writer, using the specified * encoding. * @param input to convert - * @param output the result + * @param output the result * @param encoding The name of a supported character encoding. See the * IANA Charset Registry for a list of valid * encoding types. * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final byte[] input, final Writer output, final String encoding, final int bufferSize ) - throws IOException - { - final ByteArrayInputStream in = new ByteArrayInputStream( input ); - copy( in, output, encoding, bufferSize ); + public static void copy(final byte[] input, final Writer output, final String encoding, final int bufferSize) + throws IOException { + final ByteArrayInputStream in = new ByteArrayInputStream(input); + copy(in, output, encoding, bufferSize); } /////////////////////////////////////////////////////////////// @@ -643,10 +582,8 @@ public static void copy( final byte[] input, final Writer output, final String e * @param input to convert * @throws IOException io issue */ - public static String toString( final byte[] input ) - throws IOException - { - return toString( input, DEFAULT_BUFFER_SIZE ); + public static String toString(final byte[] input) throws IOException { + return toString(input, DEFAULT_BUFFER_SIZE); } /** @@ -656,11 +593,9 @@ public static String toString( final byte[] input ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static String toString( final byte[] input, final int bufferSize ) - throws IOException - { + public static String toString(final byte[] input, final int bufferSize) throws IOException { final StringWriter sw = new StringWriter(); - copy( input, sw, bufferSize ); + copy(input, sw, bufferSize); return sw.toString(); } @@ -672,10 +607,8 @@ public static String toString( final byte[] input, final int bufferSize ) * encoding types. * @throws IOException io issue */ - public static String toString( final byte[] input, final String encoding ) - throws IOException - { - return toString( input, encoding, DEFAULT_BUFFER_SIZE ); + public static String toString(final byte[] input, final String encoding) throws IOException { + return toString(input, encoding, DEFAULT_BUFFER_SIZE); } /** @@ -688,11 +621,9 @@ public static String toString( final byte[] input, final String encoding ) * * @throws IOException io issue */ - public static String toString( final byte[] input, final String encoding, final int bufferSize ) - throws IOException - { + public static String toString(final byte[] input, final String encoding, final int bufferSize) throws IOException { final StringWriter sw = new StringWriter(); - copy( input, sw, encoding, bufferSize ); + copy(input, sw, encoding, bufferSize); return sw.toString(); } @@ -705,10 +636,8 @@ public static String toString( final byte[] input, final String encoding, final * @param output the result * @throws IOException io issue */ - public static void copy( final byte[] input, final OutputStream output ) - throws IOException - { - copy( input, output, DEFAULT_BUFFER_SIZE ); + public static void copy(final byte[] input, final OutputStream output) throws IOException { + copy(input, output, DEFAULT_BUFFER_SIZE); } /** @@ -718,10 +647,8 @@ public static void copy( final byte[] input, final OutputStream output ) * @param bufferSize Size of internal buffer to use. * @throws IOException io issue */ - public static void copy( final byte[] input, final OutputStream output, final int bufferSize ) - throws IOException - { - output.write( input ); + public static void copy(final byte[] input, final OutputStream output, final int bufferSize) throws IOException { + output.write(input); } /** @@ -732,30 +659,23 @@ public static void copy( final byte[] input, final OutputStream output, final in * @return true if the content of the streams are equal or they both don't exist, false otherwise * @throws IOException io issue */ - public static boolean contentEquals( final InputStream input1, final InputStream input2 ) - throws IOException - { - final InputStream bufferedInput1 = new BufferedInputStream( input1 ); - final InputStream bufferedInput2 = new BufferedInputStream( input2 ); + public static boolean contentEquals(final InputStream input1, final InputStream input2) throws IOException { + final InputStream bufferedInput1 = new BufferedInputStream(input1); + final InputStream bufferedInput2 = new BufferedInputStream(input2); int ch = bufferedInput1.read(); - while ( 0 <= ch ) - { + while (0 <= ch) { final int ch2 = bufferedInput2.read(); - if ( ch != ch2 ) - { + if (ch != ch2) { return false; } ch = bufferedInput1.read(); } final int ch2 = bufferedInput2.read(); - if ( 0 <= ch2 ) - { + if (0 <= ch2) { return false; - } - else - { + } else { return true; } } @@ -766,24 +686,19 @@ public static boolean contentEquals( final InputStream input1, final InputStream /** * Closes the input stream. The input stream can be null and any IOException's will be swallowed. - * + * * @param inputStream The stream to close. * @deprecated use try-with-resources instead */ @Deprecated - public static void close( InputStream inputStream ) - { - if ( inputStream == null ) - { + public static void close(InputStream inputStream) { + if (inputStream == null) { return; } - try - { + try { inputStream.close(); - } - catch ( IOException ex ) - { + } catch (IOException ex) { // ignore } } @@ -795,91 +710,71 @@ public static void close( InputStream inputStream ) * @deprecated use try-with-resources instead */ @Deprecated - public static void close( Channel channel ) - { - if ( channel == null ) - { + public static void close(Channel channel) { + if (channel == null) { return; } - try - { + try { channel.close(); - } - catch ( IOException ex ) - { + } catch (IOException ex) { // ignore } } /** * Closes the output stream. The output stream can be null and any IOException's will be swallowed. - * + * * @param outputStream The stream to close. * @deprecated use try-with-resources instead */ @Deprecated - public static void close( OutputStream outputStream ) - { - if ( outputStream == null ) - { + public static void close(OutputStream outputStream) { + if (outputStream == null) { return; } - try - { + try { outputStream.close(); - } - catch ( IOException ex ) - { + } catch (IOException ex) { // ignore } } /** * Closes the reader. The reader can be null and any IOException's will be swallowed. - * + * * @param reader The reader to close. * @deprecated use try-with-resources instead */ @Deprecated - public static void close( Reader reader ) - { - if ( reader == null ) - { + public static void close(Reader reader) { + if (reader == null) { return; } - try - { + try { reader.close(); - } - catch ( IOException ex ) - { + } catch (IOException ex) { // ignore } } /** * Closes the writer. The writer can be null and any IOException's will be swallowed. - * + * * @param writer The writer to close. * @deprecated use try-with-resources instead */ @Deprecated - public static void close( Writer writer ) - { - if ( writer == null ) - { + public static void close(Writer writer) { + if (writer == null) { return; } - try - { + try { writer.close(); - } - catch ( IOException ex ) - { + } catch (IOException ex) { // ignore } } diff --git a/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java b/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java index c8515b2e..37b6768e 100644 --- a/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java +++ b/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java @@ -75,12 +75,10 @@ *
        • if the enclosed string is not found in the keyword Map, then no substitution is made; the token text is * passed through unaltered.
        • *
        - * + * * @see LineOrientedInterpolatingReader s */ -public class InterpolationFilterReader - extends FilterReader -{ +public class InterpolationFilterReader extends FilterReader { /** replacement text from a token */ private String replaceData = null; @@ -113,15 +111,14 @@ public class InterpolationFilterReader /** * Construct a Reader to interpolate values enclosed between the given delimiter tokens. - * + * * @param in a Reader to be wrapped for interpolation. * @param variables name/value pairs to be interpolated into the character stream. * @param beginToken an interpolation target begins with this. * @param endToken an interpolation target ends with this. */ - public InterpolationFilterReader( Reader in, Map variables, String beginToken, String endToken ) - { - super( in ); + public InterpolationFilterReader(Reader in, Map variables, String beginToken, String endToken) { + super(in); this.variables = variables; this.beginToken = beginToken; @@ -133,13 +130,12 @@ public InterpolationFilterReader( Reader in, Map variables, String be /** * Construct a Reader using the default interpolation delimiter tokens "${" and "}". - * + * * @param in a Reader to be wrapped for interpolation. * @param variables name/value pairs to be interpolated into the character stream. */ - public InterpolationFilterReader( Reader in, Map variables ) - { - this( in, variables, DEFAULT_BEGIN_TOKEN, DEFAULT_END_TOKEN ); + public InterpolationFilterReader(Reader in, Map variables) { + this(in, variables, DEFAULT_BEGIN_TOKEN, DEFAULT_END_TOKEN); } /** @@ -152,18 +148,13 @@ public InterpolationFilterReader( Reader in, Map variables ) * @exception IOException If an I/O error occurs */ @Override - public long skip( long n ) - throws IOException - { - if ( n < 0L ) - { - throw new IllegalArgumentException( "skip value is negative" ); + public long skip(long n) throws IOException { + if (n < 0L) { + throw new IllegalArgumentException("skip value is negative"); } - for ( long i = 0; i < n; i++ ) - { - if ( read() == -1 ) - { + for (long i = 0; i < n; i++) { + if (read() == -1) { return i; } } @@ -181,20 +172,13 @@ public long skip( long n ) * @exception IOException If an I/O error occurs */ @Override - public int read( char cbuf[], int off, int len ) - throws IOException - { - for ( int i = 0; i < len; i++ ) - { + public int read(char cbuf[], int off, int len) throws IOException { + for (int i = 0; i < len; i++) { int ch = read(); - if ( ch == -1 ) - { - if ( i == 0 ) - { + if (ch == -1) { + if (i == 0) { return -1; - } - else - { + } else { return i; } } @@ -210,127 +194,94 @@ public int read( char cbuf[], int off, int len ) * @exception IOException if the underlying stream throws an IOException during reading */ @Override - public int read() - throws IOException - { - if ( replaceIndex != -1 && replaceIndex < replaceData.length() ) - { - int ch = replaceData.charAt( replaceIndex++ ); - if ( replaceIndex >= replaceData.length() ) - { + public int read() throws IOException { + if (replaceIndex != -1 && replaceIndex < replaceData.length()) { + int ch = replaceData.charAt(replaceIndex++); + if (replaceIndex >= replaceData.length()) { replaceIndex = -1; } return ch; } int ch; - if ( previousIndex != -1 && previousIndex < endTokenLength ) - { - ch = endToken.charAt( previousIndex++ ); - } - else - { + if (previousIndex != -1 && previousIndex < endTokenLength) { + ch = endToken.charAt(previousIndex++); + } else { ch = in.read(); } - if ( ch == beginToken.charAt( 0 ) ) - { + if (ch == beginToken.charAt(0)) { StringBuilder key = new StringBuilder(); int beginTokenMatchPos = 1; - do - { - if ( previousIndex != -1 && previousIndex < endTokenLength ) - { - ch = endToken.charAt( previousIndex++ ); - } - else - { + do { + if (previousIndex != -1 && previousIndex < endTokenLength) { + ch = endToken.charAt(previousIndex++); + } else { ch = in.read(); } - if ( ch != -1 ) - { - key.append( (char) ch ); + if (ch != -1) { + key.append((char) ch); - if ( ( beginTokenMatchPos < beginTokenLength ) - && ( ch != beginToken.charAt( beginTokenMatchPos++ ) ) ) - { + if ((beginTokenMatchPos < beginTokenLength) && (ch != beginToken.charAt(beginTokenMatchPos++))) { ch = -1; // not really EOF but to trigger code below break; } - } - else - { + } else { break; } - } - while ( ch != endToken.charAt( 0 ) ); + } while (ch != endToken.charAt(0)); // now test endToken - if ( ch != -1 && endTokenLength > 1 ) - { + if (ch != -1 && endTokenLength > 1) { int endTokenMatchPos = 1; - do - { - if ( previousIndex != -1 && previousIndex < endTokenLength ) - { - ch = endToken.charAt( previousIndex++ ); - } - else - { + do { + if (previousIndex != -1 && previousIndex < endTokenLength) { + ch = endToken.charAt(previousIndex++); + } else { ch = in.read(); } - if ( ch != -1 ) - { - key.append( (char) ch ); + if (ch != -1) { + key.append((char) ch); - if ( ch != endToken.charAt( endTokenMatchPos++ ) ) - { + if (ch != endToken.charAt(endTokenMatchPos++)) { ch = -1; // not really EOF but to trigger code below break; } - } - else - { + } else { break; } - } - while ( endTokenMatchPos < endTokenLength ); + } while (endTokenMatchPos < endTokenLength); } // There is nothing left to read so we have the situation where the begin/end token // are in fact the same and as there is nothing left to read we have got ourselves // end of a token boundary so let it pass through. - if ( ch == -1 ) - { + if (ch == -1) { replaceData = key.toString(); replaceIndex = 0; - return beginToken.charAt( 0 ); + return beginToken.charAt(0); } - String variableKey = key.substring( beginTokenLength - 1, key.length() - endTokenLength ); + String variableKey = key.substring(beginTokenLength - 1, key.length() - endTokenLength); - Object o = variables.get( variableKey ); - if ( o != null ) - { + Object o = variables.get(variableKey); + if (o != null) { String value = o.toString(); - if ( value.length() != 0 ) - { + if (value.length() != 0) { replaceData = value; replaceIndex = 0; } return read(); - } - else - { + } else { previousIndex = 0; - replaceData = key.substring( 0, key.length() - endTokenLength ); + replaceData = key.substring(0, key.length() - endTokenLength); replaceIndex = 0; - return beginToken.charAt( 0 ); + return beginToken.charAt(0); } } diff --git a/src/main/java/org/codehaus/plexus/util/LineOrientedInterpolatingReader.java b/src/main/java/org/codehaus/plexus/util/LineOrientedInterpolatingReader.java index 8129018f..6670a411 100644 --- a/src/main/java/org/codehaus/plexus/util/LineOrientedInterpolatingReader.java +++ b/src/main/java/org/codehaus/plexus/util/LineOrientedInterpolatingReader.java @@ -16,9 +16,6 @@ * limitations under the License. */ -import org.codehaus.plexus.util.reflection.Reflector; -import org.codehaus.plexus.util.reflection.ReflectorException; - import java.io.FilterReader; import java.io.IOException; import java.io.PushbackReader; @@ -29,6 +26,9 @@ import java.util.Set; import java.util.TreeMap; +import org.codehaus.plexus.util.reflection.Reflector; +import org.codehaus.plexus.util.reflection.ReflectorException; + /** * A FilterReader which interpolates keyword values into a character stream. Keywords are recognized when enclosed * between starting and ending delimiter strings. The keywords themselves, and their values, are fetched from a Map @@ -44,17 +44,15 @@ *
      • if the enclosed string is not found in the keyword Map, then no substitution is made; the token text is * passed through unaltered.
      • *
      - * + * *

      A token in the incoming character stream may be escaped by prepending an "escape sequence" which is * specified to the constructor. An escaped token is passed through as written, with the escape sequence removed. This * allows things which would look like tokens to be read literally rather than interpolated.

      - * + * * @author jdcasey Created on Feb 3, 2005 * @see InterpolationFilterReader */ -public class LineOrientedInterpolatingReader - extends FilterReader -{ +public class LineOrientedInterpolatingReader extends FilterReader { public static final String DEFAULT_START_DELIM = "${"; public static final String DEFAULT_END_DELIM = "}"; @@ -85,17 +83,16 @@ public class LineOrientedInterpolatingReader /** * Construct an interpolating Reader, specifying token delimiters and the escape sequence. - * + * * @param reader the Reader to be filtered. * @param context keyword/value pairs for interpolation. * @param startDelim character sequence which (possibly) begins a token. * @param endDelim character sequence which ends a token. * @param escapeSeq escape sequence */ - public LineOrientedInterpolatingReader( Reader reader, Map context, String startDelim, String endDelim, - String escapeSeq ) - { - super( reader ); + public LineOrientedInterpolatingReader( + Reader reader, Map context, String startDelim, String endDelim, String escapeSeq) { + super(reader); this.startDelim = startDelim; @@ -106,86 +103,70 @@ public LineOrientedInterpolatingReader( Reader reader, Map context, S // Expressions have to be at least this size... this.minExpressionSize = startDelim.length() + endDelim.length() + 1; - this.context = Collections.unmodifiableMap( context ); + this.context = Collections.unmodifiableMap(context); this.reflector = new Reflector(); - if ( reader instanceof PushbackReader ) - { + if (reader instanceof PushbackReader) { this.pushbackReader = (PushbackReader) reader; - } - else - { - this.pushbackReader = new PushbackReader( reader, 1 ); + } else { + this.pushbackReader = new PushbackReader(reader, 1); } } /** * Filters a Reader using the default escape sequence "\". - * + * * @param reader the Reader to be filtered. * @param context keyword/value pairs for interpolation. * @param startDelim the character sequence which (possibly) begins a token. * @param endDelim the character sequence which ends a token. */ - public LineOrientedInterpolatingReader( Reader reader, Map context, String startDelim, String endDelim ) - { - this( reader, context, startDelim, endDelim, DEFAULT_ESCAPE_SEQ ); + public LineOrientedInterpolatingReader(Reader reader, Map context, String startDelim, String endDelim) { + this(reader, context, startDelim, endDelim, DEFAULT_ESCAPE_SEQ); } /** * Filters a Reader using the default escape sequence "\" and token delimiters "${", "}". - * + * * @param reader the Reader to be filtered. * @param context keyword/value pairs for interpolation. */ - public LineOrientedInterpolatingReader( Reader reader, Map context ) - { - this( reader, context, DEFAULT_START_DELIM, DEFAULT_END_DELIM, DEFAULT_ESCAPE_SEQ ); + public LineOrientedInterpolatingReader(Reader reader, Map context) { + this(reader, context, DEFAULT_START_DELIM, DEFAULT_END_DELIM, DEFAULT_ESCAPE_SEQ); } @Override - public int read() - throws IOException - { - if ( line == null || lineIdx >= line.length() ) - { + public int read() throws IOException { + if (line == null || lineIdx >= line.length()) { readAndInterpolateLine(); } int next = -1; - if ( line != null && lineIdx < line.length() ) - { - next = line.charAt( lineIdx++ ); + if (line != null && lineIdx < line.length()) { + next = line.charAt(lineIdx++); } return next; } @Override - public int read( char[] cbuf, int off, int len ) - throws IOException - { + public int read(char[] cbuf, int off, int len) throws IOException { int fillCount = 0; - for ( int i = off; i < off + len; i++ ) - { + for (int i = off; i < off + len; i++) { int next = read(); - if ( next > -1 ) - { + if (next > -1) { cbuf[i] = (char) next; - } - else - { + } else { break; } fillCount++; } - if ( fillCount == 0 ) - { + if (fillCount == 0) { fillCount = -1; } @@ -193,17 +174,13 @@ public int read( char[] cbuf, int off, int len ) } @Override - public long skip( long n ) - throws IOException - { + public long skip(long n) throws IOException { long skipCount = 0; - for ( long i = 0; i < n; i++ ) - { + for (long i = 0; i < n; i++) { int next = read(); - if ( next < 0 ) - { + if (next < 0) { break; } @@ -213,27 +190,21 @@ public long skip( long n ) return skipCount; } - private void readAndInterpolateLine() - throws IOException - { + private void readAndInterpolateLine() throws IOException { String rawLine = readLine(); - if ( rawLine != null ) - { - Set expressions = parseForExpressions( rawLine ); + if (rawLine != null) { + Set expressions = parseForExpressions(rawLine); - Map evaluatedExpressions = evaluateExpressions( expressions ); + Map evaluatedExpressions = evaluateExpressions(expressions); - String interpolated = replaceWithInterpolatedValues( rawLine, evaluatedExpressions ); + String interpolated = replaceWithInterpolatedValues(rawLine, evaluatedExpressions); - if ( interpolated != null && interpolated.length() > 0 ) - { + if (interpolated != null && interpolated.length() > 0) { line = interpolated; lineIdx = 0; } - } - else - { + } else { line = null; lineIdx = -1; } @@ -243,97 +214,73 @@ private void readAndInterpolateLine() * Read one line from the wrapped Reader. A line is a sequence of characters ending in CRLF, CR, or LF. The * terminating character(s) will be included in the returned line. */ - private String readLine() - throws IOException - { - StringBuilder lineBuffer = new StringBuilder( 40 ); // half of the "normal" line maxsize + private String readLine() throws IOException { + StringBuilder lineBuffer = new StringBuilder(40); // half of the "normal" line maxsize int next; boolean lastWasCR = false; - while ( ( next = pushbackReader.read() ) > -1 ) - { + while ((next = pushbackReader.read()) > -1) { char c = (char) next; - if ( c == CARRIAGE_RETURN_CHAR ) - { + if (c == CARRIAGE_RETURN_CHAR) { lastWasCR = true; - lineBuffer.append( c ); - } - else if ( c == NEWLINE_CHAR ) - { - lineBuffer.append( c ); + lineBuffer.append(c); + } else if (c == NEWLINE_CHAR) { + lineBuffer.append(c); break; // end of line. - } - else if ( lastWasCR ) - { - pushbackReader.unread( c ); + } else if (lastWasCR) { + pushbackReader.unread(c); break; - } - else - { - lineBuffer.append( c ); + } else { + lineBuffer.append(c); } } - if ( lineBuffer.length() < 1 ) - { + if (lineBuffer.length() < 1) { return null; - } - else - { + } else { return lineBuffer.toString(); } } - private String replaceWithInterpolatedValues( String rawLine, Map evaluatedExpressions ) - { + private String replaceWithInterpolatedValues(String rawLine, Map evaluatedExpressions) { String result = rawLine; - for ( Object o : evaluatedExpressions.entrySet() ) - { + for (Object o : evaluatedExpressions.entrySet()) { Map.Entry entry = (Map.Entry) o; String expression = (String) entry.getKey(); - String value = String.valueOf( entry.getValue() ); + String value = String.valueOf(entry.getValue()); - result = findAndReplaceUnlessEscaped( result, expression, value ); + result = findAndReplaceUnlessEscaped(result, expression, value); } return result; } - private Map evaluateExpressions( Set expressions ) - { + private Map evaluateExpressions(Set expressions) { Map evaluated = new TreeMap(); - for ( Object expression : expressions ) - { + for (Object expression : expressions) { String rawExpression = (String) expression; String realExpression = - rawExpression.substring( startDelim.length(), rawExpression.length() - endDelim.length() ); - - String[] parts = realExpression.split( "\\." ); - if ( parts.length > 0 ) - { - Object value = context.get( parts[0] ); - - if ( value != null ) - { - for ( int i = 1; i < parts.length; i++ ) - { - try - { - value = reflector.getObjectProperty( value, parts[i] ); - - if ( value == null ) - { + rawExpression.substring(startDelim.length(), rawExpression.length() - endDelim.length()); + + String[] parts = realExpression.split("\\."); + if (parts.length > 0) { + Object value = context.get(parts[0]); + + if (value != null) { + for (int i = 1; i < parts.length; i++) { + try { + value = reflector.getObjectProperty(value, parts[i]); + + if (value == null) { break; } - } - catch ( ReflectorException e ) - { + } catch (ReflectorException e) { // TODO: Fix this! It should report, but not interrupt. e.printStackTrace(); @@ -341,7 +288,7 @@ private Map evaluateExpressions( Set expressions ) } } - evaluated.put( rawExpression, value ); + evaluated.put(rawExpression, value); } } } @@ -349,32 +296,27 @@ private Map evaluateExpressions( Set expressions ) return evaluated; } - private Set parseForExpressions( String rawLine ) - { + private Set parseForExpressions(String rawLine) { Set expressions = new HashSet(); - if ( rawLine != null ) - { + if (rawLine != null) { int placeholder = -1; - do - { + do { // find the beginning of the next expression. - int start = findDelimiter( rawLine, startDelim, placeholder ); + int start = findDelimiter(rawLine, startDelim, placeholder); // if we can't find a start-delimiter, then there is no valid expression. Ignore everything else. - if ( start < 0 ) - { + if (start < 0) { // no expression found. break; } // find the end of the next expression. - int end = findDelimiter( rawLine, endDelim, start + 1 ); + int end = findDelimiter(rawLine, endDelim, start + 1); // if we can't find an end-delimiter, then this is not a valid expression. Ignore it. - if ( end < 0 ) - { + if (end < 0) { // no VALID expression found. break; } @@ -382,93 +324,73 @@ private Set parseForExpressions( String rawLine ) // if we reach this point, we have a valid start and end position, which // means we have a valid expression. So, we add it to the set of // expressions in need of evaluation. - expressions.add( rawLine.substring( start, end + endDelim.length() ) ); + expressions.add(rawLine.substring(start, end + endDelim.length())); // increment the placeholder so we can look beyond this expression. placeholder = end + 1; - } - while ( placeholder < rawLine.length() - minExpressionSize ); + } while (placeholder < rawLine.length() - minExpressionSize); } return expressions; } - private int findDelimiter( String rawLine, String delimiter, int lastPos ) - { + private int findDelimiter(String rawLine, String delimiter, int lastPos) { int placeholder = lastPos; int position; - do - { - position = rawLine.indexOf( delimiter, placeholder ); + do { + position = rawLine.indexOf(delimiter, placeholder); - if ( position < 0 ) - { + if (position < 0) { break; - } - else - { - int escEndIdx = rawLine.indexOf( escapeSeq, placeholder ) + escapeSeq.length(); + } else { + int escEndIdx = rawLine.indexOf(escapeSeq, placeholder) + escapeSeq.length(); - if ( escEndIdx > escapeSeq.length() - 1 && escEndIdx == position ) - { + if (escEndIdx > escapeSeq.length() - 1 && escEndIdx == position) { placeholder = position + 1; position = -1; } } - } - while ( position < 0 && placeholder < rawLine.length() - endDelim.length() ); + } while (position < 0 && placeholder < rawLine.length() - endDelim.length()); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // use length() - endDelim.length() b/c otherwise there is nothing left to search. return position; } - private String findAndReplaceUnlessEscaped( String rawLine, String search, String replace ) - { - StringBuilder lineBuffer = new StringBuilder( (int) ( rawLine.length() * 1.5 ) ); + private String findAndReplaceUnlessEscaped(String rawLine, String search, String replace) { + StringBuilder lineBuffer = new StringBuilder((int) (rawLine.length() * 1.5)); int lastReplacement = -1; - do - { - int nextReplacement = rawLine.indexOf( search, lastReplacement + 1 ); - if ( nextReplacement > -1 ) - { - if ( lastReplacement < 0 ) - { + do { + int nextReplacement = rawLine.indexOf(search, lastReplacement + 1); + if (nextReplacement > -1) { + if (lastReplacement < 0) { lastReplacement = 0; } - lineBuffer.append( rawLine, lastReplacement, nextReplacement ); + lineBuffer.append(rawLine, lastReplacement, nextReplacement); - int escIdx = rawLine.indexOf( escapeSeq, lastReplacement + 1 ); - if ( escIdx > -1 && escIdx + escapeSeq.length() == nextReplacement ) - { - lineBuffer.setLength( lineBuffer.length() - escapeSeq.length() ); - lineBuffer.append( search ); - } - else - { - lineBuffer.append( replace ); + int escIdx = rawLine.indexOf(escapeSeq, lastReplacement + 1); + if (escIdx > -1 && escIdx + escapeSeq.length() == nextReplacement) { + lineBuffer.setLength(lineBuffer.length() - escapeSeq.length()); + lineBuffer.append(search); + } else { + lineBuffer.append(replace); } lastReplacement = nextReplacement + search.length(); - } - else - { + } else { break; } - } - while ( lastReplacement > -1 ); + } while (lastReplacement > -1); - if ( lastReplacement < rawLine.length() ) - { - lineBuffer.append( rawLine, lastReplacement, rawLine.length() ); + if (lastReplacement < rawLine.length()) { + lineBuffer.append(rawLine, lastReplacement, rawLine.length()); } return lineBuffer.toString(); } - } diff --git a/src/main/java/org/codehaus/plexus/util/MatchPattern.java b/src/main/java/org/codehaus/plexus/util/MatchPattern.java index de57de21..4dc757e3 100644 --- a/src/main/java/org/codehaus/plexus/util/MatchPattern.java +++ b/src/main/java/org/codehaus/plexus/util/MatchPattern.java @@ -23,13 +23,12 @@ /** *

      Describes a match target for SelectorUtils.

      - * + * *

      Significantly more efficient than using strings, since re-evaluation and re-tokenizing is avoided.

      * * @author Kristian Rosenvold */ -public class MatchPattern -{ +public class MatchPattern { private final String source; private final String regexPattern; @@ -40,107 +39,85 @@ public class MatchPattern private final char[][] tokenizedChar; - private MatchPattern( String source, String separator ) - { - regexPattern = SelectorUtils.isRegexPrefixedPattern( source ) - ? source.substring( SelectorUtils.REGEX_HANDLER_PREFIX.length(), - source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length() ) - : null; - this.source = SelectorUtils.isAntPrefixedPattern( source ) - ? source.substring( SelectorUtils.ANT_HANDLER_PREFIX.length(), - source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length() ) - : source; + private MatchPattern(String source, String separator) { + regexPattern = SelectorUtils.isRegexPrefixedPattern(source) + ? source.substring( + SelectorUtils.REGEX_HANDLER_PREFIX.length(), + source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length()) + : null; + this.source = SelectorUtils.isAntPrefixedPattern(source) + ? source.substring( + SelectorUtils.ANT_HANDLER_PREFIX.length(), + source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length()) + : source; this.separator = separator; - tokenized = tokenizePathToString( this.source, separator ); + tokenized = tokenizePathToString(this.source, separator); tokenizedChar = new char[tokenized.length][]; - for ( int i = 0; i < tokenized.length; i++ ) - { + for (int i = 0; i < tokenized.length; i++) { tokenizedChar[i] = tokenized[i].toCharArray(); } - } - public boolean matchPath( String str, boolean isCaseSensitive ) - { - if ( regexPattern != null ) - { - return str.matches( regexPattern ); - } - else - { - return SelectorUtils.matchAntPathPattern( this, str, separator, isCaseSensitive ); + public boolean matchPath(String str, boolean isCaseSensitive) { + if (regexPattern != null) { + return str.matches(regexPattern); + } else { + return SelectorUtils.matchAntPathPattern(this, str, separator, isCaseSensitive); } } - boolean matchPath( String str, char[][] strDirs, boolean isCaseSensitive ) - { - if ( regexPattern != null ) - { - return str.matches( regexPattern ); - } - else - { - return SelectorUtils.matchAntPathPattern( getTokenizedPathChars(), strDirs, isCaseSensitive ); + boolean matchPath(String str, char[][] strDirs, boolean isCaseSensitive) { + if (regexPattern != null) { + return str.matches(regexPattern); + } else { + return SelectorUtils.matchAntPathPattern(getTokenizedPathChars(), strDirs, isCaseSensitive); } } - public boolean matchPatternStart( String str, boolean isCaseSensitive ) - { - if ( regexPattern != null ) - { + public boolean matchPatternStart(String str, boolean isCaseSensitive) { + if (regexPattern != null) { // FIXME: ICK! But we can't do partial matches for regex, so we have to reserve judgement until we have // a file to deal with, or we can definitely say this is an exclusion... return true; - } - else - { - String altStr = str.replace( '\\', '/' ); + } else { + String altStr = str.replace('\\', '/'); - return SelectorUtils.matchAntPathPatternStart( this, str, File.separator, isCaseSensitive ) - || SelectorUtils.matchAntPathPatternStart( this, altStr, "/", isCaseSensitive ); + return SelectorUtils.matchAntPathPatternStart(this, str, File.separator, isCaseSensitive) + || SelectorUtils.matchAntPathPatternStart(this, altStr, "/", isCaseSensitive); } } - public String[] getTokenizedPathString() - { + public String[] getTokenizedPathString() { return tokenized; } - public char[][] getTokenizedPathChars() - { + public char[][] getTokenizedPathChars() { return tokenizedChar; } - public boolean startsWith( String string ) - { - return source.startsWith( string ); + public boolean startsWith(String string) { + return source.startsWith(string); } - static String[] tokenizePathToString( String path, String separator ) - { + static String[] tokenizePathToString(String path, String separator) { List ret = new ArrayList(); - StringTokenizer st = new StringTokenizer( path, separator ); - while ( st.hasMoreTokens() ) - { - ret.add( st.nextToken() ); + StringTokenizer st = new StringTokenizer(path, separator); + while (st.hasMoreTokens()) { + ret.add(st.nextToken()); } - return ret.toArray( new String[0] ); + return ret.toArray(new String[0]); } - static char[][] tokenizePathToCharArray( String path, String separator ) - { - String[] tokenizedName = tokenizePathToString( path, separator ); + static char[][] tokenizePathToCharArray(String path, String separator) { + String[] tokenizedName = tokenizePathToString(path, separator); char[][] tokenizedNameChar = new char[tokenizedName.length][]; - for ( int i = 0; i < tokenizedName.length; i++ ) - { + for (int i = 0; i < tokenizedName.length; i++) { tokenizedNameChar[i] = tokenizedName[i].toCharArray(); } return tokenizedNameChar; } - public static MatchPattern fromString( String source ) - { - return new MatchPattern( source, File.separator ); + public static MatchPattern fromString(String source) { + return new MatchPattern(source, File.separator); } - } diff --git a/src/main/java/org/codehaus/plexus/util/MatchPatterns.java b/src/main/java/org/codehaus/plexus/util/MatchPatterns.java index 35f9ea22..fd36a9d8 100644 --- a/src/main/java/org/codehaus/plexus/util/MatchPatterns.java +++ b/src/main/java/org/codehaus/plexus/util/MatchPatterns.java @@ -9,88 +9,71 @@ * * @author Kristian Rosenvold */ -public class MatchPatterns -{ +public class MatchPatterns { private final MatchPattern[] patterns; - private MatchPatterns( MatchPattern[] patterns ) - { + private MatchPatterns(MatchPattern[] patterns) { this.patterns = patterns; } /** *

      Checks these MatchPatterns against a specified string.

      - * + * *

      Uses far less string tokenization than any of the alternatives.

      * * @param name The name to look for * @param isCaseSensitive If the comparison is case sensitive * @return true if any of the supplied patterns match */ - public boolean matches( String name, boolean isCaseSensitive ) - { - String[] tokenized = MatchPattern.tokenizePathToString( name, File.separator ); - return matches( name, tokenized, isCaseSensitive ); + public boolean matches(String name, boolean isCaseSensitive) { + String[] tokenized = MatchPattern.tokenizePathToString(name, File.separator); + return matches(name, tokenized, isCaseSensitive); } - public boolean matches( String name, String[] tokenizedName, boolean isCaseSensitive ) - { + public boolean matches(String name, String[] tokenizedName, boolean isCaseSensitive) { char[][] tokenizedNameChar = new char[tokenizedName.length][]; - for ( int i = 0; i < tokenizedName.length; i++ ) - { + for (int i = 0; i < tokenizedName.length; i++) { tokenizedNameChar[i] = tokenizedName[i].toCharArray(); } return matches(name, tokenizedNameChar, isCaseSensitive); } - public boolean matches(String name, char[][] tokenizedNameChar, boolean isCaseSensitive) - { - for ( MatchPattern pattern : patterns ) - { - if ( pattern.matchPath( name, tokenizedNameChar, isCaseSensitive ) ) - { + public boolean matches(String name, char[][] tokenizedNameChar, boolean isCaseSensitive) { + for (MatchPattern pattern : patterns) { + if (pattern.matchPath(name, tokenizedNameChar, isCaseSensitive)) { return true; } } return false; } - public boolean matchesPatternStart( String name, boolean isCaseSensitive ) - { - for ( MatchPattern includesPattern : patterns ) - { - if ( includesPattern.matchPatternStart( name, isCaseSensitive ) ) - { + public boolean matchesPatternStart(String name, boolean isCaseSensitive) { + for (MatchPattern includesPattern : patterns) { + if (includesPattern.matchPatternStart(name, isCaseSensitive)) { return true; } } return false; } - public static MatchPatterns from( String... sources ) - { + public static MatchPatterns from(String... sources) { final int length = sources.length; MatchPattern[] result = new MatchPattern[length]; - for ( int i = 0; i < length; i++ ) - { - result[i] = MatchPattern.fromString( sources[i] ); + for (int i = 0; i < length; i++) { + result[i] = MatchPattern.fromString(sources[i]); } - return new MatchPatterns( result ); + return new MatchPatterns(result); } - public static MatchPatterns from( Iterable strings ) - { - return new MatchPatterns( getMatchPatterns( strings ) ); + public static MatchPatterns from(Iterable strings) { + return new MatchPatterns(getMatchPatterns(strings)); } - private static MatchPattern[] getMatchPatterns( Iterable items ) - { + private static MatchPattern[] getMatchPatterns(Iterable items) { List result = new ArrayList(); - for ( String string : items ) - { - result.add( MatchPattern.fromString( string ) ); + for (String string : items) { + result.add(MatchPattern.fromString(string)); } - return result.toArray( new MatchPattern[0] ); + return result.toArray(new MatchPattern[0]); } - } diff --git a/src/main/java/org/codehaus/plexus/util/NioFiles.java b/src/main/java/org/codehaus/plexus/util/NioFiles.java index eb62bac7..d7a00a78 100644 --- a/src/main/java/org/codehaus/plexus/util/NioFiles.java +++ b/src/main/java/org/codehaus/plexus/util/NioFiles.java @@ -30,74 +30,57 @@ /** * Encapsulates use of java7 features, exposing mostly backward compatible types */ -@SuppressWarnings( "Since15" ) -public class NioFiles -{ - public static boolean isSymbolicLink( File file ) - { - return Files.isSymbolicLink( file.toPath() ); +@SuppressWarnings("Since15") +public class NioFiles { + public static boolean isSymbolicLink(File file) { + return Files.isSymbolicLink(file.toPath()); } - public static void chmod( File file, int mode ) - throws IOException - { + public static void chmod(File file, int mode) throws IOException { Path path = file.toPath(); - if ( !Files.isSymbolicLink( path ) ) - { - Files.setPosixFilePermissions( path, getPermissions( mode ) ); + if (!Files.isSymbolicLink(path)) { + Files.setPosixFilePermissions(path, getPermissions(mode)); } } - @SuppressWarnings( { "OctalInteger", "MagicNumber" } ) - private static Set getPermissions( int mode ) - { + @SuppressWarnings({"OctalInteger", "MagicNumber"}) + private static Set getPermissions(int mode) { Set perms = new HashSet<>(); // add owners permission - if ( ( mode & 0400 ) > 0 ) - { - perms.add( PosixFilePermission.OWNER_READ ); + if ((mode & 0400) > 0) { + perms.add(PosixFilePermission.OWNER_READ); } - if ( ( mode & 0200 ) > 0 ) - { - perms.add( PosixFilePermission.OWNER_WRITE ); + if ((mode & 0200) > 0) { + perms.add(PosixFilePermission.OWNER_WRITE); } - if ( ( mode & 0100 ) > 0 ) - { - perms.add( PosixFilePermission.OWNER_EXECUTE ); + if ((mode & 0100) > 0) { + perms.add(PosixFilePermission.OWNER_EXECUTE); } // add group permissions - if ( ( mode & 0040 ) > 0 ) - { - perms.add( PosixFilePermission.GROUP_READ ); + if ((mode & 0040) > 0) { + perms.add(PosixFilePermission.GROUP_READ); } - if ( ( mode & 0020 ) > 0 ) - { - perms.add( PosixFilePermission.GROUP_WRITE ); + if ((mode & 0020) > 0) { + perms.add(PosixFilePermission.GROUP_WRITE); } - if ( ( mode & 0010 ) > 0 ) - { - perms.add( PosixFilePermission.GROUP_EXECUTE ); + if ((mode & 0010) > 0) { + perms.add(PosixFilePermission.GROUP_EXECUTE); } // add others permissions - if ( ( mode & 0004 ) > 0 ) - { - perms.add( PosixFilePermission.OTHERS_READ ); + if ((mode & 0004) > 0) { + perms.add(PosixFilePermission.OTHERS_READ); } - if ( ( mode & 0002 ) > 0 ) - { - perms.add( PosixFilePermission.OTHERS_WRITE ); + if ((mode & 0002) > 0) { + perms.add(PosixFilePermission.OTHERS_WRITE); } - if ( ( mode & 0001 ) > 0 ) - { - perms.add( PosixFilePermission.OTHERS_EXECUTE ); + if ((mode & 0001) > 0) { + perms.add(PosixFilePermission.OTHERS_EXECUTE); } return perms; } - public static long getLastModified( File file ) - throws IOException - { - BasicFileAttributes basicFileAttributes = Files.readAttributes( file.toPath(), BasicFileAttributes.class ); + public static long getLastModified(File file) throws IOException { + BasicFileAttributes basicFileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class); return basicFileAttributes.lastModifiedTime().toMillis(); } @@ -108,38 +91,30 @@ public static long getLastModified( File file ) * @return A file that is the target of the symlink * @throws java.io.IOException io issue */ - - public static File readSymbolicLink( File symlink ) - throws IOException - { - Path path = Files.readSymbolicLink( symlink.toPath() ); + public static File readSymbolicLink(File symlink) throws IOException { + Path path = Files.readSymbolicLink(symlink.toPath()); return path.toFile(); } - public static File createSymbolicLink( File symlink, File target ) - throws IOException - { + public static File createSymbolicLink(File symlink, File target) throws IOException { Path link = symlink.toPath(); - if ( Files.exists( link, LinkOption.NOFOLLOW_LINKS ) ) - { - Files.delete( link ); + if (Files.exists(link, LinkOption.NOFOLLOW_LINKS)) { + Files.delete(link); } - link = Files.createSymbolicLink( link, target.toPath() ); + link = Files.createSymbolicLink(link, target.toPath()); return link.toFile(); } - public static boolean deleteIfExists( File file ) - throws IOException - { - return Files.deleteIfExists( file.toPath() ); + public static boolean deleteIfExists(File file) throws IOException { + return Files.deleteIfExists(file.toPath()); } - public static File copy( File source, File target ) - throws IOException - { - Path copy = Files.copy( source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING, - StandardCopyOption.COPY_ATTRIBUTES ); + public static File copy(File source, File target) throws IOException { + Path copy = Files.copy( + source.toPath(), + target.toPath(), + StandardCopyOption.REPLACE_EXISTING, + StandardCopyOption.COPY_ATTRIBUTES); return copy.toFile(); } - } diff --git a/src/main/java/org/codehaus/plexus/util/Os.java b/src/main/java/org/codehaus/plexus/util/Os.java index b4ed2882..95b29cb6 100644 --- a/src/main/java/org/codehaus/plexus/util/Os.java +++ b/src/main/java/org/codehaus/plexus/util/Os.java @@ -67,8 +67,7 @@ * @since 1.0 * */ -public class Os -{ +public class Os { // define the families for easier reference public static final String FAMILY_DOS = "dos"; @@ -96,13 +95,13 @@ public class Os private static final Set validFamilies = setValidFamilies(); // get the current info - private static final String PATH_SEP = System.getProperty( "path.separator" ); + private static final String PATH_SEP = System.getProperty("path.separator"); - public static final String OS_NAME = System.getProperty( "os.name" ).toLowerCase( Locale.US ); + public static final String OS_NAME = System.getProperty("os.name").toLowerCase(Locale.US); - public static final String OS_ARCH = System.getProperty( "os.arch" ).toLowerCase( Locale.US ); + public static final String OS_ARCH = System.getProperty("os.arch").toLowerCase(Locale.US); - public static final String OS_VERSION = System.getProperty( "os.version" ).toLowerCase( Locale.US ); + public static final String OS_VERSION = System.getProperty("os.version").toLowerCase(Locale.US); // Make sure this method is called after static fields it depends on have been set! public static final String OS_FAMILY = getOsFamily(); @@ -118,44 +117,40 @@ public class Os /** * Default constructor */ - public Os() - { - } + public Os() {} /** * Constructor that sets the family attribute - * + * * @param family a String value */ - public Os( String family ) - { - setFamily( family ); + public Os(String family) { + setFamily(family); } /** * Initializes the set of valid families. */ - private static Set setValidFamilies() - { + private static Set setValidFamilies() { Set valid = new HashSet(); - valid.add( FAMILY_DOS ); - valid.add( FAMILY_MAC ); - valid.add( FAMILY_NETWARE ); - valid.add( FAMILY_OS2 ); - valid.add( FAMILY_TANDEM ); - valid.add( FAMILY_UNIX ); - valid.add( FAMILY_WINDOWS ); - valid.add( FAMILY_WIN9X ); - valid.add( FAMILY_ZOS ); - valid.add( FAMILY_OS400 ); - valid.add( FAMILY_OPENVMS ); + valid.add(FAMILY_DOS); + valid.add(FAMILY_MAC); + valid.add(FAMILY_NETWARE); + valid.add(FAMILY_OS2); + valid.add(FAMILY_TANDEM); + valid.add(FAMILY_UNIX); + valid.add(FAMILY_WINDOWS); + valid.add(FAMILY_WIN9X); + valid.add(FAMILY_ZOS); + valid.add(FAMILY_OS400); + valid.add(FAMILY_OPENVMS); return valid; } /** * Sets the desired OS family type - * + * * @param f The OS family type desired
      * Possible values: *
        @@ -172,39 +167,35 @@ private static Set setValidFamilies() *
      • openvms
      • *
      */ - public void setFamily( String f ) - { - family = f.toLowerCase( Locale.US ); + public void setFamily(String f) { + family = f.toLowerCase(Locale.US); } /** * Sets the desired OS name - * + * * @param name The OS name */ - public void setName( String name ) - { - this.name = name.toLowerCase( Locale.US ); + public void setName(String name) { + this.name = name.toLowerCase(Locale.US); } /** * Sets the desired OS architecture - * + * * @param arch The OS architecture */ - public void setArch( String arch ) - { - this.arch = arch.toLowerCase( Locale.US ); + public void setArch(String arch) { + this.arch = arch.toLowerCase(Locale.US); } /** * Sets the desired OS version - * + * * @param version The OS version */ - public void setVersion( String version ) - { - this.version = version.toLowerCase( Locale.US ); + public void setVersion(String version) { + this.version = version.toLowerCase(Locale.US); } /** @@ -213,64 +204,58 @@ public void setVersion( String version ) * @see Os#setFamily(String) * @throws Exception any errir */ - public boolean eval() - throws Exception - { - return isOs( family, name, arch, version ); + public boolean eval() throws Exception { + return isOs(family, name, arch, version); } /** * Determines if the current OS matches the given OS family. - * + * * @param family the family to check for * @return true if the OS matches * @since 1.0 */ - public static boolean isFamily( String family ) - { - return isOs( family, null, null, null ); + public static boolean isFamily(String family) { + return isOs(family, null, null, null); } /** * Determines if the current OS matches the given OS name. - * + * * @param name the OS name to check for * @return true if the OS matches * @since 1.0 */ - public static boolean isName( String name ) - { - return isOs( null, name, null, null ); + public static boolean isName(String name) { + return isOs(null, name, null, null); } /** * Determines if the current OS matches the given OS architecture. - * + * * @param arch the OS architecture to check for * @return true if the OS matches * @since 1.0 */ - public static boolean isArch( String arch ) - { - return isOs( null, null, arch, null ); + public static boolean isArch(String arch) { + return isOs(null, null, arch, null); } /** * Determines if the current OS matches the given OS version. - * + * * @param version the OS version to check for * @return true if the OS matches * @since 1.0 */ - public static boolean isVersion( String version ) - { - return isOs( null, null, null, version ); + public static boolean isVersion(String version) { + return isOs(null, null, null, version); } /** * Determines if the current OS matches the given OS family, name, architecture and version. The name, architecture * and version are compared to the System properties os.name, os.version and os.arch in a case-independent way. - * + * * @param family The OS family * @param name The OS name * @param arch The OS architecture @@ -278,84 +263,61 @@ public static boolean isVersion( String version ) * @return true if the OS matches * @since 1.0 */ - public static boolean isOs( String family, String name, String arch, String version ) - { + public static boolean isOs(String family, String name, String arch, String version) { boolean retValue = false; - if ( family != null || name != null || arch != null || version != null ) - { + if (family != null || name != null || arch != null || version != null) { boolean isFamily = true; boolean isName = true; boolean isArch = true; boolean isVersion = true; - if ( family != null ) - { - if ( family.equalsIgnoreCase( FAMILY_WINDOWS ) ) - { - isFamily = OS_NAME.contains( FAMILY_WINDOWS ); - } - else if ( family.equalsIgnoreCase( FAMILY_OS2 ) ) - { - isFamily = OS_NAME.contains( FAMILY_OS2 ); - } - else if ( family.equalsIgnoreCase( FAMILY_NETWARE ) ) - { - isFamily = OS_NAME.contains( FAMILY_NETWARE ); - } - else if ( family.equalsIgnoreCase( FAMILY_DOS ) ) - { - isFamily = PATH_SEP.equals( ";" ) && !isFamily( FAMILY_NETWARE ) && !isFamily( FAMILY_WINDOWS ) - && !isFamily( FAMILY_WIN9X ); - - } - else if ( family.equalsIgnoreCase( FAMILY_MAC ) ) - { - isFamily = OS_NAME.contains( FAMILY_MAC ); - } - else if ( family.equalsIgnoreCase( FAMILY_TANDEM ) ) - { - isFamily = OS_NAME.contains( "nonstop_kernel" ); - } - else if ( family.equalsIgnoreCase( FAMILY_UNIX ) ) - { - isFamily = PATH_SEP.equals( ":" ) && !isFamily( FAMILY_OPENVMS ) - && ( !isFamily( FAMILY_MAC ) || OS_NAME.endsWith( "x" ) ); - } - else if ( family.equalsIgnoreCase( FAMILY_WIN9X ) ) - { - isFamily = isFamily( FAMILY_WINDOWS ) && ( OS_NAME.contains( "95" ) || OS_NAME.contains( "98" ) - || OS_NAME.contains( "me" ) || OS_NAME.contains( "ce" ) ); - } - else if ( family.equalsIgnoreCase( FAMILY_ZOS ) ) - { - isFamily = OS_NAME.contains( FAMILY_ZOS ) || OS_NAME.contains( "os/390" ); - } - else if ( family.equalsIgnoreCase( FAMILY_OS400 ) ) - { - isFamily = OS_NAME.contains( FAMILY_OS400 ); - } - else if ( family.equalsIgnoreCase( FAMILY_OPENVMS ) ) - { - isFamily = OS_NAME.contains( FAMILY_OPENVMS ); - } - else - { - isFamily = OS_NAME.contains( family.toLowerCase( Locale.US ) ); + if (family != null) { + if (family.equalsIgnoreCase(FAMILY_WINDOWS)) { + isFamily = OS_NAME.contains(FAMILY_WINDOWS); + } else if (family.equalsIgnoreCase(FAMILY_OS2)) { + isFamily = OS_NAME.contains(FAMILY_OS2); + } else if (family.equalsIgnoreCase(FAMILY_NETWARE)) { + isFamily = OS_NAME.contains(FAMILY_NETWARE); + } else if (family.equalsIgnoreCase(FAMILY_DOS)) { + isFamily = PATH_SEP.equals(";") + && !isFamily(FAMILY_NETWARE) + && !isFamily(FAMILY_WINDOWS) + && !isFamily(FAMILY_WIN9X); + + } else if (family.equalsIgnoreCase(FAMILY_MAC)) { + isFamily = OS_NAME.contains(FAMILY_MAC); + } else if (family.equalsIgnoreCase(FAMILY_TANDEM)) { + isFamily = OS_NAME.contains("nonstop_kernel"); + } else if (family.equalsIgnoreCase(FAMILY_UNIX)) { + isFamily = PATH_SEP.equals(":") + && !isFamily(FAMILY_OPENVMS) + && (!isFamily(FAMILY_MAC) || OS_NAME.endsWith("x")); + } else if (family.equalsIgnoreCase(FAMILY_WIN9X)) { + isFamily = isFamily(FAMILY_WINDOWS) + && (OS_NAME.contains("95") + || OS_NAME.contains("98") + || OS_NAME.contains("me") + || OS_NAME.contains("ce")); + } else if (family.equalsIgnoreCase(FAMILY_ZOS)) { + isFamily = OS_NAME.contains(FAMILY_ZOS) || OS_NAME.contains("os/390"); + } else if (family.equalsIgnoreCase(FAMILY_OS400)) { + isFamily = OS_NAME.contains(FAMILY_OS400); + } else if (family.equalsIgnoreCase(FAMILY_OPENVMS)) { + isFamily = OS_NAME.contains(FAMILY_OPENVMS); + } else { + isFamily = OS_NAME.contains(family.toLowerCase(Locale.US)); } } - if ( name != null ) - { - isName = name.toLowerCase( Locale.US ).equals( OS_NAME ); + if (name != null) { + isName = name.toLowerCase(Locale.US).equals(OS_NAME); } - if ( arch != null ) - { - isArch = arch.toLowerCase( Locale.US ).equals( OS_ARCH ); + if (arch != null) { + isArch = arch.toLowerCase(Locale.US).equals(OS_ARCH); } - if ( version != null ) - { - isVersion = version.toLowerCase( Locale.US ).equals( OS_VERSION ); + if (version != null) { + isVersion = version.toLowerCase(Locale.US).equals(OS_VERSION); } retValue = isFamily && isName && isArch && isVersion; } @@ -364,28 +326,22 @@ else if ( family.equalsIgnoreCase( FAMILY_OPENVMS ) ) /** * Helper method to determine the current OS family. - * + * * @return name of current OS family. * @since 1.4.2 */ - private static String getOsFamily() - { + private static String getOsFamily() { // in case the order of static initialization is // wrong, get the list // safely. Set families = null; - if ( !validFamilies.isEmpty() ) - { + if (!validFamilies.isEmpty()) { families = validFamilies; - } - else - { + } else { families = setValidFamilies(); } - for ( String fam : families ) - { - if ( Os.isFamily( fam ) ) - { + for (String fam : families) { + if (Os.isFamily(fam)) { return fam; } } @@ -407,22 +363,20 @@ private static String getOsFamily() *
    • os/400
    • *
    • openvms
    • *
    - * + * * @param theFamily the family to check. * @return true if one of the valid families. * @since 1.4.2 */ - public static boolean isValidFamily( String theFamily ) - { - return ( validFamilies.contains( theFamily ) ); + public static boolean isValidFamily(String theFamily) { + return (validFamilies.contains(theFamily)); } /** * @return a copy of the valid families * @since 1.4.2 */ - public static Set getValidFamilies() - { - return new HashSet( validFamilies ); + public static Set getValidFamilies() { + return new HashSet(validFamilies); } } diff --git a/src/main/java/org/codehaus/plexus/util/PathTool.java b/src/main/java/org/codehaus/plexus/util/PathTool.java index b8392cdb..e6deab6b 100644 --- a/src/main/java/org/codehaus/plexus/util/PathTool.java +++ b/src/main/java/org/codehaus/plexus/util/PathTool.java @@ -27,17 +27,16 @@ * @author Vincent Siveton * */ -public class PathTool -{ +public class PathTool { /** *

    Determines the relative path of a filename from a base directory. This method is useful in building relative * links within pages of a web site. It provides similar functionality to Anakia's $relativePath * context variable. The arguments to this method may contain either forward or backward slashes as file separators. * The relative path returned is formed using forward slashes as it is expected this path is to be used as a link in * a web page (again mimicking Anakia's behavior).

    - * + * *

    This method is thread-safe.

    - * + * *
          * PathTool.getRelativePath( null, null )                                   = ""
          * PathTool.getRelativePath( null, "/usr/local/java/bin" )                  = ""
    @@ -53,17 +52,18 @@ public class PathTool
          *         slash. A zero-length string is returned if: the filename is not relative to the base directory,
          *         basedir is null or zero-length, or filename is null or zero-length.
          */
    -    public static final String getRelativePath( String basedir, String filename )
    -    {
    -        basedir = uppercaseDrive( basedir );
    -        filename = uppercaseDrive( filename );
    +    public static final String getRelativePath(String basedir, String filename) {
    +        basedir = uppercaseDrive(basedir);
    +        filename = uppercaseDrive(filename);
     
             /*
              * Verify the arguments and make sure the filename is relative to the base directory.
              */
    -        if ( basedir == null || basedir.length() == 0 || filename == null || filename.length() == 0
    -            || !filename.startsWith( basedir ) )
    -        {
    +        if (basedir == null
    +                || basedir.length() == 0
    +                || filename == null
    +                || filename.length() == 0
    +                || !filename.startsWith(basedir)) {
                 return "";
             }
     
    @@ -71,17 +71,17 @@ public static final String getRelativePath( String basedir, String filename )
              * Normalize the arguments. First, determine the file separator that is being used, then strip that off the end
              * of both the base directory and filename.
              */
    -        String separator = determineSeparator( filename );
    -        basedir = StringUtils.chompLast( basedir, separator );
    -        filename = StringUtils.chompLast( filename, separator );
    +        String separator = determineSeparator(filename);
    +        basedir = StringUtils.chompLast(basedir, separator);
    +        filename = StringUtils.chompLast(filename, separator);
     
             /*
              * Remove the base directory from the filename to end up with a relative filename (relative to the base
              * directory). This filename is then used to determine the relative path.
              */
    -        String relativeFilename = filename.substring( basedir.length() );
    +        String relativeFilename = filename.substring(basedir.length());
     
    -        return determineRelativePath( relativeFilename, separator );
    +        return determineRelativePath(relativeFilename, separator);
         }
     
         /**
    @@ -90,7 +90,7 @@ public static final String getRelativePath( String basedir, String filename )
          * to this method may contain either forward or backward slashes as file separators. The relative path returned is
          * formed using forward slashes as it is expected this path is to be used as a link in a web page (again mimicking
          * Anakia's behavior).

    - * + * *

    This method is thread-safe.

    * * @param filename The filename to be parsed. @@ -98,12 +98,10 @@ public static final String getRelativePath( String basedir, String filename ) * string is returned if: filename is null or zero-length. * @see #getRelativeFilePath(String, String) */ - public static final String getRelativePath( String filename ) - { - filename = uppercaseDrive( filename ); + public static final String getRelativePath(String filename) { + filename = uppercaseDrive(filename); - if ( filename == null || filename.length() == 0 ) - { + if (filename == null || filename.length() == 0) { return ""; } @@ -112,23 +110,22 @@ public static final String getRelativePath( String filename ) * of the filename. Then, if the filename doesn't begin with a separator, add one. */ - String separator = determineSeparator( filename ); - filename = StringUtils.chompLast( filename, separator ); - if ( !filename.startsWith( separator ) ) - { + String separator = determineSeparator(filename); + filename = StringUtils.chompLast(filename, separator); + if (!filename.startsWith(separator)) { filename = separator + filename; } - return determineRelativePath( filename, separator ); + return determineRelativePath(filename, separator); } /** *

    Determines the directory component of a filename. This is useful within DVSL templates when used in conjunction * with the DVSL's $context.getAppValue("infilename") to get the current directory that is currently * being processed.

    - * + * *

    This method is thread-safe.

    - * + * *
          * PathTool.getDirectoryComponent( null )                                   = ""
          * PathTool.getDirectoryComponent( "/usr/local/java/bin" )                  = "/usr/local/java"
    @@ -140,18 +137,15 @@ public static final String getRelativePath( String filename )
          * @return The directory portion of the filename. If the filename does not contain a directory
          *         component, "." is returned.
          */
    -    public static final String getDirectoryComponent( String filename )
    -    {
    -        if ( filename == null || filename.length() == 0 )
    -        {
    +    public static final String getDirectoryComponent(String filename) {
    +        if (filename == null || filename.length() == 0) {
                 return "";
             }
     
    -        String separator = determineSeparator( filename );
    -        String directory = StringUtils.chomp( filename, separator );
    +        String separator = determineSeparator(filename);
    +        String directory = StringUtils.chomp(filename, separator);
     
    -        if ( filename.equals( directory ) )
    -        {
    +        if (filename.equals(directory)) {
                 return ".";
             }
     
    @@ -160,7 +154,7 @@ public static final String getDirectoryComponent( String filename )
     
         /**
          * Calculates the appropriate link given the preferred link and the relativePath of the document.
    -     * 
    +     *
          * 
          * PathTool.calculateLink( "/index.html", "../.." )                                        = "../../index.html"
          * PathTool.calculateLink( "http://plexus.codehaus.org/plexus-utils/index.html", "../.." ) = "http://plexus.codehaus.org/plexus-utils/index.html"
    @@ -173,53 +167,43 @@ public static final String getDirectoryComponent( String filename )
          * @param relativePath relative
          * @return String
          */
    -    public static final String calculateLink( String link, String relativePath )
    -    {
    -        if ( link == null )
    -        {
    +    public static final String calculateLink(String link, String relativePath) {
    +        if (link == null) {
                 link = "";
             }
    -        if ( relativePath == null )
    -        {
    +        if (relativePath == null) {
                 relativePath = "";
             }
             // This must be some historical feature
    -        if ( link.startsWith( "/site/" ) )
    -        {
    -            return link.substring( 5 );
    +        if (link.startsWith("/site/")) {
    +            return link.substring(5);
             }
     
             // Allows absolute links in nav-bars etc
    -        if ( link.startsWith( "/absolute/" ) )
    -        {
    -            return link.substring( 10 );
    +        if (link.startsWith("/absolute/")) {
    +            return link.substring(10);
             }
     
             // This traps urls like http://
    -        if ( link.contains( ":" ) )
    -        {
    +        if (link.contains(":")) {
                 return link;
             }
     
             // If relativepath is current directory, just pass the link through
    -        if ( StringUtils.equals( relativePath, "." ) )
    -        {
    -            if ( link.startsWith( "/" ) )
    -            {
    -                return link.substring( 1 );
    +        if (StringUtils.equals(relativePath, ".")) {
    +            if (link.startsWith("/")) {
    +                return link.substring(1);
                 }
     
                 return link;
             }
     
             // If we don't do this, you can end up with ..//bob.html rather than ../bob.html
    -        if ( relativePath.endsWith( "/" ) && link.startsWith( "/" ) )
    -        {
    -            return relativePath + "." + link.substring( 1 );
    +        if (relativePath.endsWith("/") && link.startsWith("/")) {
    +            return relativePath + "." + link.substring(1);
             }
     
    -        if ( relativePath.endsWith( "/" ) || link.startsWith( "/" ) )
    -        {
    +        if (relativePath.endsWith("/") || link.startsWith("/")) {
                 return relativePath + link;
             }
     
    @@ -228,7 +212,7 @@ public static final String calculateLink( String link, String relativePath )
     
         /**
          * This method can calculate the relative path between two paths on a web site.
    -     * 
    +     *
          * 
          * PathTool.getRelativeWebPath( null, null )                                          = ""
          * PathTool.getRelativeWebPath( null, "http://plexus.codehaus.org/" )                 = ""
    @@ -243,17 +227,14 @@ public static final String calculateLink( String link, String relativePath )
          * @param newPath second path
          * @return a relative web path from oldPath.
          */
    -    public static final String getRelativeWebPath( final String oldPath, final String newPath )
    -    {
    -        if ( StringUtils.isEmpty( oldPath ) || StringUtils.isEmpty( newPath ) )
    -        {
    +    public static final String getRelativeWebPath(final String oldPath, final String newPath) {
    +        if (StringUtils.isEmpty(oldPath) || StringUtils.isEmpty(newPath)) {
                 return "";
             }
     
    -        String resultPath = buildRelativePath( newPath, oldPath, '/' );
    +        String resultPath = buildRelativePath(newPath, oldPath, '/');
     
    -        if ( newPath.endsWith( "/" ) && !resultPath.endsWith( "/" ) )
    -        {
    +        if (newPath.endsWith("/") && !resultPath.endsWith("/")) {
                 return resultPath + "/";
             }
     
    @@ -262,7 +243,7 @@ public static final String getRelativeWebPath( final String oldPath, final Strin
     
         /**
          * This method can calculate the relative path between two paths on a file system.
    -     * 
    +     *
          * 
          * PathTool.getRelativeFilePath( null, null )                                   = ""
          * PathTool.getRelativeFilePath( null, "/usr/local/java/bin" )                  = ""
    @@ -275,66 +256,57 @@ public static final String getRelativeWebPath( final String oldPath, final Strin
          * PathTool.getRelativeFilePath( "/usr/local/", "/bin" )                        = "../../bin"
          * PathTool.getRelativeFilePath( "/bin", "/usr/local/" )                        = "../usr/local"
          * 
    - * + * * Note: On Windows based system, the / character should be replaced by \ character. * * @param oldPath main path * @param newPath second path * @return a relative file path from oldPath. */ - public static final String getRelativeFilePath( final String oldPath, final String newPath ) - { - if ( StringUtils.isEmpty( oldPath ) || StringUtils.isEmpty( newPath ) ) - { + public static final String getRelativeFilePath(final String oldPath, final String newPath) { + if (StringUtils.isEmpty(oldPath) || StringUtils.isEmpty(newPath)) { return ""; } // normalise the path delimiters - String fromPath = new File( oldPath ).getPath(); - String toPath = new File( newPath ).getPath(); + String fromPath = new File(oldPath).getPath(); + String toPath = new File(newPath).getPath(); // strip any leading slashes if its a windows path - if ( toPath.matches( "^\\[a-zA-Z]:" ) ) - { - toPath = toPath.substring( 1 ); + if (toPath.matches("^\\[a-zA-Z]:")) { + toPath = toPath.substring(1); } - if ( fromPath.matches( "^\\[a-zA-Z]:" ) ) - { - fromPath = fromPath.substring( 1 ); + if (fromPath.matches("^\\[a-zA-Z]:")) { + fromPath = fromPath.substring(1); } // lowercase windows drive letters. - if ( fromPath.startsWith( ":", 1 ) ) - { - fromPath = Character.toLowerCase( fromPath.charAt( 0 ) ) + fromPath.substring( 1 ); + if (fromPath.startsWith(":", 1)) { + fromPath = Character.toLowerCase(fromPath.charAt(0)) + fromPath.substring(1); } - if ( toPath.startsWith( ":", 1 ) ) - { - toPath = Character.toLowerCase( toPath.charAt( 0 ) ) + toPath.substring( 1 ); + if (toPath.startsWith(":", 1)) { + toPath = Character.toLowerCase(toPath.charAt(0)) + toPath.substring(1); } // check for the presence of windows drives. No relative way of // traversing from one to the other. - if ( ( toPath.startsWith( ":", 1 ) && fromPath.startsWith( ":", 1 ) ) - && ( !toPath.substring( 0, 1 ).equals( fromPath.substring( 0, 1 ) ) ) ) - { + if ((toPath.startsWith(":", 1) && fromPath.startsWith(":", 1)) + && (!toPath.substring(0, 1).equals(fromPath.substring(0, 1)))) { // they both have drive path element but they dont match, no // relative path return null; } - if ( ( toPath.startsWith( ":", 1 ) && !fromPath.startsWith( ":", 1 ) ) - || ( !toPath.startsWith( ":", 1 ) && fromPath.startsWith( ":", 1 ) ) ) - { + if ((toPath.startsWith(":", 1) && !fromPath.startsWith(":", 1)) + || (!toPath.startsWith(":", 1) && fromPath.startsWith(":", 1))) { // one has a drive path element and the other doesnt, no relative // path. return null; } - String resultPath = buildRelativePath( toPath, fromPath, File.separatorChar ); + String resultPath = buildRelativePath(toPath, fromPath, File.separatorChar); - if ( newPath.endsWith( File.separator ) && !resultPath.endsWith( File.separator ) ) - { + if (newPath.endsWith(File.separator) && !resultPath.endsWith(File.separator)) { return resultPath + File.separator; } @@ -354,10 +326,8 @@ public static final String getRelativeFilePath( final String oldPath, final Stri * @return The relative path of the filename. This value is not terminated with a forward slash. A zero-length * string is returned if: the filename is zero-length. */ - private static final String determineRelativePath( String filename, String separator ) - { - if ( filename.length() == 0 ) - { + private static final String determineRelativePath(String filename, String separator) { + if (filename.length() == 0) { return ""; } @@ -365,9 +335,8 @@ private static final String determineRelativePath( String filename, String separ * Count the slashes in the relative filename, but exclude the leading slash. If the path has no slashes, then * the filename is relative to the current directory. */ - int slashCount = StringUtils.countMatches( filename, separator ) - 1; - if ( slashCount <= 0 ) - { + int slashCount = StringUtils.countMatches(filename, separator) - 1; + if (slashCount <= 0) { return "."; } @@ -376,15 +345,14 @@ private static final String determineRelativePath( String filename, String separ * directories. Thus, each slash represents a "../" in the relative path. */ StringBuilder sb = new StringBuilder(); - for ( int i = 0; i < slashCount; i++ ) - { - sb.append( "../" ); + for (int i = 0; i < slashCount; i++) { + sb.append("../"); } /* * Finally, return the relative path but strip the trailing slash to mimic Anakia's behavior. */ - return StringUtils.chop( sb.toString() ); + return StringUtils.chop(sb.toString()); } /** @@ -394,10 +362,9 @@ private static final String determineRelativePath( String filename, String separ * @param filename The filename parsed to determine the file separator. * @return The file separator used within filename. This value is either a forward or backward slash. */ - private static final String determineSeparator( String filename ) - { - int forwardCount = StringUtils.countMatches( filename, "/" ); - int backwardCount = StringUtils.countMatches( filename, "\\" ); + private static final String determineSeparator(String filename) { + int forwardCount = StringUtils.countMatches(filename, "/"); + int backwardCount = StringUtils.countMatches(filename, "\\"); return forwardCount >= backwardCount ? "/" : "\\"; } @@ -408,41 +375,31 @@ private static final String determineSeparator( String filename ) * @param path * @return String */ - static final String uppercaseDrive( String path ) - { - if ( path == null ) - { + static final String uppercaseDrive(String path) { + if (path == null) { return null; } - if ( path.length() >= 2 && path.charAt( 1 ) == ':' ) - { - path = Character.toUpperCase( path.charAt( 0 ) ) + path.substring( 1 ); + if (path.length() >= 2 && path.charAt(1) == ':') { + path = Character.toUpperCase(path.charAt(0)) + path.substring(1); } return path; } - private static final String buildRelativePath( String toPath, String fromPath, final char separatorChar ) - { + private static final String buildRelativePath(String toPath, String fromPath, final char separatorChar) { // use tokeniser to traverse paths and for lazy checking - StringTokenizer toTokeniser = new StringTokenizer( toPath, String.valueOf( separatorChar ) ); - StringTokenizer fromTokeniser = new StringTokenizer( fromPath, String.valueOf( separatorChar ) ); + StringTokenizer toTokeniser = new StringTokenizer(toPath, String.valueOf(separatorChar)); + StringTokenizer fromTokeniser = new StringTokenizer(fromPath, String.valueOf(separatorChar)); int count = 0; // walk along the to path looking for divergence from the from path - while ( toTokeniser.hasMoreTokens() && fromTokeniser.hasMoreTokens() ) - { - if ( separatorChar == '\\' ) - { - if ( !fromTokeniser.nextToken().equalsIgnoreCase( toTokeniser.nextToken() ) ) - { + while (toTokeniser.hasMoreTokens() && fromTokeniser.hasMoreTokens()) { + if (separatorChar == '\\') { + if (!fromTokeniser.nextToken().equalsIgnoreCase(toTokeniser.nextToken())) { break; } - } - else - { - if ( !fromTokeniser.nextToken().equals( toTokeniser.nextToken() ) ) - { + } else { + if (!fromTokeniser.nextToken().equals(toTokeniser.nextToken())) { break; } } @@ -453,11 +410,10 @@ private static final String buildRelativePath( String toPath, String fromPath, f // reinitialise the tokenisers to count positions to retrieve the // gobbled token - toTokeniser = new StringTokenizer( toPath, String.valueOf( separatorChar ) ); - fromTokeniser = new StringTokenizer( fromPath, String.valueOf( separatorChar ) ); + toTokeniser = new StringTokenizer(toPath, String.valueOf(separatorChar)); + fromTokeniser = new StringTokenizer(fromPath, String.valueOf(separatorChar)); - while ( count-- > 0 ) - { + while (count-- > 0) { fromTokeniser.nextToken(); toTokeniser.nextToken(); } @@ -465,30 +421,25 @@ private static final String buildRelativePath( String toPath, String fromPath, f String relativePath = ""; // add back refs for the rest of from location. - while ( fromTokeniser.hasMoreTokens() ) - { + while (fromTokeniser.hasMoreTokens()) { fromTokeniser.nextToken(); relativePath += ".."; - if ( fromTokeniser.hasMoreTokens() ) - { + if (fromTokeniser.hasMoreTokens()) { relativePath += separatorChar; } } - if ( relativePath.length() != 0 && toTokeniser.hasMoreTokens() ) - { + if (relativePath.length() != 0 && toTokeniser.hasMoreTokens()) { relativePath += separatorChar; } // add fwd fills for whatevers left of newPath. - while ( toTokeniser.hasMoreTokens() ) - { + while (toTokeniser.hasMoreTokens()) { relativePath += toTokeniser.nextToken(); - if ( toTokeniser.hasMoreTokens() ) - { + if (toTokeniser.hasMoreTokens()) { relativePath += separatorChar; } } diff --git a/src/main/java/org/codehaus/plexus/util/PropertyUtils.java b/src/main/java/org/codehaus/plexus/util/PropertyUtils.java index 210cb3a6..848ac158 100644 --- a/src/main/java/org/codehaus/plexus/util/PropertyUtils.java +++ b/src/main/java/org/codehaus/plexus/util/PropertyUtils.java @@ -16,13 +16,13 @@ * limitations under the License. */ -import java.util.Objects; -import java.util.Properties; import java.io.File; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.nio.file.Files; +import java.util.Objects; +import java.util.Properties; /** * Static methods to create Properties loaded from various sources. @@ -30,36 +30,27 @@ * @author Jason van Zyl * @author Michal Maczka */ -public class PropertyUtils -{ +public class PropertyUtils { - public static Properties loadProperties( final URL url ) - throws IOException - { - return loadProperties( Objects.requireNonNull( url, "url" ).openStream() ); + public static Properties loadProperties(final URL url) throws IOException { + return loadProperties(Objects.requireNonNull(url, "url").openStream()); } - public static Properties loadProperties( final File file ) - throws IOException - { - return loadProperties( Files.newInputStream( Objects.requireNonNull( file, "file" ).toPath() ) ); + public static Properties loadProperties(final File file) throws IOException { + return loadProperties( + Files.newInputStream(Objects.requireNonNull(file, "file").toPath())); } - public static Properties loadProperties( final InputStream is ) - throws IOException - { + public static Properties loadProperties(final InputStream is) throws IOException { final Properties properties = new Properties(); - + // Make sure the properties stream is valid - if ( is != null ) - { - try ( InputStream in = is ) - { - properties.load( in ); + if (is != null) { + try (InputStream in = is) { + properties.load(in); } } return properties; } - } diff --git a/src/main/java/org/codehaus/plexus/util/ReaderFactory.java b/src/main/java/org/codehaus/plexus/util/ReaderFactory.java index 067d41d5..06d7a2d5 100644 --- a/src/main/java/org/codehaus/plexus/util/ReaderFactory.java +++ b/src/main/java/org/codehaus/plexus/util/ReaderFactory.java @@ -16,8 +16,6 @@ * limitations under the License. */ -import org.codehaus.plexus.util.xml.XmlStreamReader; - import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -28,6 +26,8 @@ import java.nio.charset.Charset; import java.nio.file.Files; +import org.codehaus.plexus.util.xml.XmlStreamReader; + /** * Utility to create Readers from streams, with explicit encoding choice: platform default, XML, or specified. * @@ -43,12 +43,11 @@ * @since 1.4.3 */ @Deprecated -public class ReaderFactory -{ +public class ReaderFactory { /** * ISO Latin Alphabet #1, also known as ISO-LATIN-1. Every implementation of the Java platform is required to * support this character encoding. - * + * * @see Charset */ public static final String ISO_8859_1 = "ISO-8859-1"; @@ -56,7 +55,7 @@ public class ReaderFactory /** * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. Every * implementation of the Java platform is required to support this character encoding. - * + * * @see Charset */ public static final String US_ASCII = "US-ASCII"; @@ -65,7 +64,7 @@ public class ReaderFactory * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either * order accepted on input, big-endian used on output). Every implementation of the Java platform is required to * support this character encoding. - * + * * @see Charset */ public static final String UTF_16 = "UTF-16"; @@ -73,7 +72,7 @@ public class ReaderFactory /** * Sixteen-bit Unicode Transformation Format, big-endian byte order. Every implementation of the Java platform is * required to support this character encoding. - * + * * @see Charset */ public static final String UTF_16BE = "UTF-16BE"; @@ -81,7 +80,7 @@ public class ReaderFactory /** * Sixteen-bit Unicode Transformation Format, little-endian byte order. Every implementation of the Java platform is * required to support this character encoding. - * + * * @see Charset */ public static final String UTF_16LE = "UTF-16LE"; @@ -89,7 +88,7 @@ public class ReaderFactory /** * Eight-bit Unicode Transformation Format. Every implementation of the Java platform is required to support this * character encoding. - * + * * @see Charset */ public static final String UTF_8 = "UTF-8"; @@ -97,7 +96,7 @@ public class ReaderFactory /** * The file.encoding System Property. */ - public static final String FILE_ENCODING = System.getProperty( "file.encoding" ); + public static final String FILE_ENCODING = System.getProperty("file.encoding"); /** * Create a new Reader with XML encoding detection rules. @@ -107,10 +106,8 @@ public class ReaderFactory * @throws IOException if any. * @see XmlStreamReader */ - public static XmlStreamReader newXmlReader( InputStream in ) - throws IOException - { - return new XmlStreamReader( in ); + public static XmlStreamReader newXmlReader(InputStream in) throws IOException { + return new XmlStreamReader(in); } /** @@ -121,10 +118,8 @@ public static XmlStreamReader newXmlReader( InputStream in ) * @throws IOException if any. * @see XmlStreamReader */ - public static XmlStreamReader newXmlReader( File file ) - throws IOException - { - return new XmlStreamReader( file ); + public static XmlStreamReader newXmlReader(File file) throws IOException { + return new XmlStreamReader(file); } /** @@ -135,10 +130,8 @@ public static XmlStreamReader newXmlReader( File file ) * @throws IOException if any. * @see XmlStreamReader */ - public static XmlStreamReader newXmlReader( URL url ) - throws IOException - { - return new XmlStreamReader( url ); + public static XmlStreamReader newXmlReader(URL url) throws IOException { + return new XmlStreamReader(url); } /** @@ -148,9 +141,8 @@ public static XmlStreamReader newXmlReader( URL url ) * @return a reader instance for the input stream using the default platform charset. * @see Charset#defaultCharset() */ - public static Reader newPlatformReader( InputStream in ) - { - return new InputStreamReader( in ); + public static Reader newPlatformReader(InputStream in) { + return new InputStreamReader(in); } /** @@ -161,10 +153,8 @@ public static Reader newPlatformReader( InputStream in ) * @throws IOException if any. * @see Charset#defaultCharset() */ - public static Reader newPlatformReader( File file ) - throws IOException - { - return Files.newBufferedReader( file.toPath() ); + public static Reader newPlatformReader(File file) throws IOException { + return Files.newBufferedReader(file.toPath()); } /** @@ -175,10 +165,8 @@ public static Reader newPlatformReader( File file ) * @throws IOException if any. * @see Charset#defaultCharset() */ - public static Reader newPlatformReader( URL url ) - throws IOException - { - return new InputStreamReader( url.openStream() ); + public static Reader newPlatformReader(URL url) throws IOException { + return new InputStreamReader(url.openStream()); } /** @@ -190,10 +178,8 @@ public static Reader newPlatformReader( URL url ) * @throws UnsupportedEncodingException if any. * @see Supported encodings */ - public static Reader newReader( InputStream in, String encoding ) - throws UnsupportedEncodingException - { - return new InputStreamReader( in, encoding ); + public static Reader newReader(InputStream in, String encoding) throws UnsupportedEncodingException { + return new InputStreamReader(in, encoding); } /** @@ -206,10 +192,8 @@ public static Reader newReader( InputStream in, String encoding ) * @throws IOException if any. * @see Supported encodings */ - public static Reader newReader( File file, String encoding ) - throws IOException - { - return new InputStreamReader( Files.newInputStream( file.toPath() ), encoding ); + public static Reader newReader(File file, String encoding) throws IOException { + return new InputStreamReader(Files.newInputStream(file.toPath()), encoding); } /** @@ -221,9 +205,7 @@ public static Reader newReader( File file, String encoding ) * @throws IOException if any. * @see Supported encodings */ - public static Reader newReader( URL url, String encoding ) - throws IOException - { - return new InputStreamReader( url.openStream(), encoding ); + public static Reader newReader(URL url, String encoding) throws IOException { + return new InputStreamReader(url.openStream(), encoding); } } diff --git a/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java b/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java index 3ebf3b2d..a0d3af64 100644 --- a/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java +++ b/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java @@ -16,59 +16,51 @@ * limitations under the License. */ +import java.lang.reflect.AccessibleObject; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.lang.reflect.AccessibleObject; -import java.util.Map; -import java.util.HashMap; -import java.util.List; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Operations on a class' fields and their setters. - * + * * @author Michal Maczka * @author Jesse McConnell * @author Trygve Laugstøl */ -public final class ReflectionUtils -{ +public final class ReflectionUtils { // ---------------------------------------------------------------------- // Field utils // ---------------------------------------------------------------------- - public static Field getFieldByNameIncludingSuperclasses( String fieldName, Class clazz ) - { + public static Field getFieldByNameIncludingSuperclasses(String fieldName, Class clazz) { Field retValue = null; - try - { - retValue = clazz.getDeclaredField( fieldName ); - } - catch ( NoSuchFieldException e ) - { + try { + retValue = clazz.getDeclaredField(fieldName); + } catch (NoSuchFieldException e) { Class superclass = clazz.getSuperclass(); - if ( superclass != null ) - { - retValue = getFieldByNameIncludingSuperclasses( fieldName, superclass ); + if (superclass != null) { + retValue = getFieldByNameIncludingSuperclasses(fieldName, superclass); } } return retValue; } - public static List getFieldsIncludingSuperclasses( Class clazz ) - { - List fields = new ArrayList<>( Arrays.asList( clazz.getDeclaredFields() ) ); + public static List getFieldsIncludingSuperclasses(Class clazz) { + List fields = new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())); Class superclass = clazz.getSuperclass(); - if ( superclass != null ) - { - fields.addAll( getFieldsIncludingSuperclasses( superclass ) ); + if (superclass != null) { + fields.addAll(getFieldsIncludingSuperclasses(superclass)); } return fields; @@ -85,16 +77,13 @@ public static List getFieldsIncludingSuperclasses( Class clazz ) * @param clazz The class to find the method in. * @return null or the method found. */ - public static Method getSetter( String fieldName, Class clazz ) - { + public static Method getSetter(String fieldName, Class clazz) { Method[] methods = clazz.getMethods(); - fieldName = "set" + StringUtils.capitalizeFirstLetter( fieldName ); + fieldName = "set" + StringUtils.capitalizeFirstLetter(fieldName); - for ( Method method : methods ) - { - if ( method.getName().equals( fieldName ) && isSetter( method ) ) - { + for (Method method : methods) { + if (method.getName().equals(fieldName) && isSetter(method)) { return method; } } @@ -106,17 +95,14 @@ public static Method getSetter( String fieldName, Class clazz ) * @return all setters in the given class and super classes. * @param clazz the Class */ - public static List getSetters( Class clazz ) - { + public static List getSetters(Class clazz) { Method[] methods = clazz.getMethods(); List list = new ArrayList<>(); - for ( Method method : methods ) - { - if ( isSetter( method ) ) - { - list.add( method ); + for (Method method : methods) { + if (isSetter(method)) { + list.add(method); } } @@ -127,12 +113,10 @@ public static List getSetters( Class clazz ) * @param method the method * @return the class of the argument to the setter. Will throw an RuntimeException if the method isn't a setter. */ - public static Class getSetterType( Method method ) - { - if ( !isSetter( method ) ) - { - throw new RuntimeException( "The method " + method.getDeclaringClass().getName() + "." + method.getName() - + " is not a setter." ); + public static Class getSetterType(Method method) { + if (!isSetter(method)) { + throw new RuntimeException("The method " + + method.getDeclaringClass().getName() + "." + method.getName() + " is not a setter."); } return method.getParameterTypes()[0]; @@ -150,33 +134,30 @@ public static Class getSetterType( Method method ) * @param value see name * @throws IllegalAccessException if error */ - public static void setVariableValueInObject( Object object, String variable, Object value ) - throws IllegalAccessException - { - Field field = getFieldByNameIncludingSuperclasses( variable, object.getClass() ); + public static void setVariableValueInObject(Object object, String variable, Object value) + throws IllegalAccessException { + Field field = getFieldByNameIncludingSuperclasses(variable, object.getClass()); - field.setAccessible( true ); + field.setAccessible(true); - field.set( object, value ); + field.set(object, value); } /** * Generates a map of the fields and values on a given object, also pulls from superclasses - * + * * @param variable field name * @param object the object to generate the list of fields from * @return map containing the fields and their values * @throws IllegalAccessException cannot access */ - public static Object getValueIncludingSuperclasses( String variable, Object object ) - throws IllegalAccessException - { + public static Object getValueIncludingSuperclasses(String variable, Object object) throws IllegalAccessException { - Field field = getFieldByNameIncludingSuperclasses( variable, object.getClass() ); + Field field = getFieldByNameIncludingSuperclasses(variable, object.getClass()); - field.setAccessible( true ); + field.setAccessible(true); - return field.get( object ); + return field.get(object); } /** @@ -186,12 +167,11 @@ public static Object getValueIncludingSuperclasses( String variable, Object obje * @return map containing the fields and their values * @throws IllegalAccessException cannot access */ - public static Map getVariablesAndValuesIncludingSuperclasses( Object object ) - throws IllegalAccessException - { + public static Map getVariablesAndValuesIncludingSuperclasses(Object object) + throws IllegalAccessException { Map map = new HashMap<>(); - gatherVariablesAndValuesIncludingSuperclasses( object, map ); + gatherVariablesAndValuesIncludingSuperclasses(object, map); return map; } @@ -200,10 +180,11 @@ public static Map getVariablesAndValuesIncludingSuperclasses( Ob // Private // ---------------------------------------------------------------------- - public static boolean isSetter( Method method ) - { - return method.getReturnType().equals( Void.TYPE ) && // FIXME: needed /required? - !Modifier.isStatic( method.getModifiers() ) && method.getParameterTypes().length == 1; + public static boolean isSetter(Method method) { + return method.getReturnType().equals(Void.TYPE) + && // FIXME: needed /required? + !Modifier.isStatic(method.getModifiers()) + && method.getParameterTypes().length == 1; } /** @@ -212,15 +193,13 @@ public static boolean isSetter( Method method ) * @param object the object to generate the list of fields from * @param map to populate */ - private static void gatherVariablesAndValuesIncludingSuperclasses( Object object, Map map ) - throws IllegalAccessException - { + private static void gatherVariablesAndValuesIncludingSuperclasses(Object object, Map map) + throws IllegalAccessException { Class clazz = object.getClass(); - if ( Float.parseFloat( System.getProperty( "java.specification.version" ) ) >= 11 - && Class.class.getCanonicalName().equals( clazz.getCanonicalName() ) ) - { + if (Float.parseFloat(System.getProperty("java.specification.version")) >= 11 + && Class.class.getCanonicalName().equals(clazz.getCanonicalName())) { // Updating Class fields accessibility is forbidden on Java 16 (and throws warning from version 11) // No concrete use case to modify accessibility at this level return; @@ -228,19 +207,16 @@ private static void gatherVariablesAndValuesIncludingSuperclasses( Object object Field[] fields = clazz.getDeclaredFields(); - AccessibleObject.setAccessible( fields, true ); - - for ( Field field : fields ) - { - map.put( field.getName(), field.get( object ) ); + AccessibleObject.setAccessible(fields, true); + for (Field field : fields) { + map.put(field.getName(), field.get(object)); } Class superclass = clazz.getSuperclass(); - if ( !Object.class.equals( superclass ) ) - { - gatherVariablesAndValuesIncludingSuperclasses( superclass, map ); + if (!Object.class.equals(superclass)) { + gatherVariablesAndValuesIncludingSuperclasses(superclass, map); } } } diff --git a/src/main/java/org/codehaus/plexus/util/Scanner.java b/src/main/java/org/codehaus/plexus/util/Scanner.java index 20bf85fb..4d1701c1 100644 --- a/src/main/java/org/codehaus/plexus/util/Scanner.java +++ b/src/main/java/org/codehaus/plexus/util/Scanner.java @@ -22,8 +22,7 @@ /** * Scan a directory tree for files, with specified inclusions and exclusions. */ -public interface Scanner -{ +public interface Scanner { /** * Sets the list of include patterns to use. All '/' and '\' characters are replaced by @@ -34,7 +33,7 @@ public interface Scanner * @param includes A list of include patterns. May be null, indicating that all files should be * included. If a non-null list is given, all elements must be non-null. */ - void setIncludes( String[] includes ); + void setIncludes(String[] includes); /** * Sets the list of exclude patterns to use. All '/' and '\' characters are replaced by @@ -45,7 +44,7 @@ public interface Scanner * @param excludes A list of exclude patterns. May be null, indicating that no files should be * excluded. If a non-null list is given, all elements must be non-null. */ - void setExcludes( String[] excludes ); + void setExcludes(String[] excludes); /** * Adds default exclusions to the current exclusions set. @@ -91,5 +90,5 @@ public interface Scanner * @param filenameComparator the Comparator instance to use * @since 3.3.0 */ - void setFilenameComparator( Comparator filenameComparator ); + void setFilenameComparator(Comparator filenameComparator); } diff --git a/src/main/java/org/codehaus/plexus/util/SelectorUtils.java b/src/main/java/org/codehaus/plexus/util/SelectorUtils.java index 234a92c5..f5122c78 100644 --- a/src/main/java/org/codehaus/plexus/util/SelectorUtils.java +++ b/src/main/java/org/codehaus/plexus/util/SelectorUtils.java @@ -63,7 +63,7 @@ *

    This is a utility class used by selectors and DirectoryScanner. The functionality more properly belongs just to * selectors, but unfortunately DirectoryScanner exposed these as protected methods. Thus we have to support any * subclasses of DirectoryScanner that may access these methods.

    - * + * *

    This is a Singleton.

    * * @author Arnout J. Kuiper ajkuiper@wxs.nl @@ -72,8 +72,7 @@ * * @since 1.5 */ -public final class SelectorUtils -{ +public final class SelectorUtils { public static final String PATTERN_HANDLER_PREFIX = "["; @@ -88,21 +87,18 @@ public final class SelectorUtils /** * Private Constructor */ - private SelectorUtils() - { - } + private SelectorUtils() {} /** * @return Retrieves the manager of the Singleton. */ - public static SelectorUtils getInstance() - { + public static SelectorUtils getInstance() { return instance; } /** *

    Tests whether or not a given path matches the start of a given pattern up to the first "**".

    - * + * *

    This is not a general purpose test and should only be used if you can live with false positives. For example, * pattern=**\a and str=b will yield true.

    * @@ -110,14 +106,13 @@ public static SelectorUtils getInstance() * @param str The path to match, as a String. Must not be null. * @return whether or not a given path matches the start of a given pattern up to the first "**". */ - public static boolean matchPatternStart( String pattern, String str ) - { - return matchPatternStart( pattern, str, true ); + public static boolean matchPatternStart(String pattern, String str) { + return matchPatternStart(pattern, str, true); } /** *

    Tests whether or not a given path matches the start of a given pattern up to the first "**".

    - * + * *

    This is not a general purpose test and should only be used if you can live with false positives. For example, * pattern=**\a and str=b will yield true.

    * @@ -126,79 +121,67 @@ public static boolean matchPatternStart( String pattern, String str ) * @param isCaseSensitive Whether or not matching should be performed case sensitively. * @return whether or not a given path matches the start of a given pattern up to the first "**". */ - public static boolean matchPatternStart( String pattern, String str, boolean isCaseSensitive ) - { - if ( isRegexPrefixedPattern( pattern ) ) - { + public static boolean matchPatternStart(String pattern, String str, boolean isCaseSensitive) { + if (isRegexPrefixedPattern(pattern)) { // FIXME: ICK! But we can't do partial matches for regex, so we have to reserve judgement until we have // a file to deal with, or we can definitely say this is an exclusion... return true; - } - else - { - if ( isAntPrefixedPattern( pattern ) ) - { - pattern = pattern.substring( ANT_HANDLER_PREFIX.length(), - pattern.length() - PATTERN_HANDLER_SUFFIX.length() ); + } else { + if (isAntPrefixedPattern(pattern)) { + pattern = pattern.substring( + ANT_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length()); } - String altStr = str.replace( '\\', '/' ); + String altStr = str.replace('\\', '/'); - return matchAntPathPatternStart( pattern, str, File.separator, isCaseSensitive ) - || matchAntPathPatternStart( pattern, altStr, "/", isCaseSensitive ); + return matchAntPathPatternStart(pattern, str, File.separator, isCaseSensitive) + || matchAntPathPatternStart(pattern, altStr, "/", isCaseSensitive); } } - static boolean isAntPrefixedPattern( String pattern ) - { - return pattern.length() > ( ANT_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1 ) - && pattern.startsWith( ANT_HANDLER_PREFIX ) && pattern.endsWith( PATTERN_HANDLER_SUFFIX ); + static boolean isAntPrefixedPattern(String pattern) { + return pattern.length() > (ANT_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1) + && pattern.startsWith(ANT_HANDLER_PREFIX) + && pattern.endsWith(PATTERN_HANDLER_SUFFIX); } - @SuppressWarnings( "SimplifiableIfStatement" ) - static boolean matchAntPathPatternStart( MatchPattern pattern, String str, String separator, - boolean isCaseSensitive ) - { - if ( separatorPatternStartSlashMismatch( pattern, str, separator ) ) - { + @SuppressWarnings("SimplifiableIfStatement") + static boolean matchAntPathPatternStart( + MatchPattern pattern, String str, String separator, boolean isCaseSensitive) { + if (separatorPatternStartSlashMismatch(pattern, str, separator)) { return false; } - return matchAntPathPatternStart( pattern.getTokenizedPathString(), str, separator, isCaseSensitive ); + return matchAntPathPatternStart(pattern.getTokenizedPathString(), str, separator, isCaseSensitive); } - static boolean matchAntPathPatternStart( String pattern, String str, String separator, boolean isCaseSensitive ) - { + static boolean matchAntPathPatternStart(String pattern, String str, String separator, boolean isCaseSensitive) { // When str starts with a File.separator, pattern has to start with a // File.separator. // When pattern starts with a File.separator, str has to start with a // File.separator. - if ( separatorPatternStartSlashMismatch( pattern, str, separator ) ) - { + if (separatorPatternStartSlashMismatch(pattern, str, separator)) { return false; } - String[] patDirs = tokenizePathToString( pattern, separator ); - return matchAntPathPatternStart( patDirs, str, separator, isCaseSensitive ); + String[] patDirs = tokenizePathToString(pattern, separator); + return matchAntPathPatternStart(patDirs, str, separator, isCaseSensitive); } // When str starts with a File.separator, pattern has to start with a // File.separator. // When pattern starts with a File.separator, str has to start with a // File.separator. - private static boolean separatorPatternStartSlashMismatch( String pattern, String str, String separator ) - { - return str.startsWith( separator ) != pattern.startsWith( separator ); + private static boolean separatorPatternStartSlashMismatch(String pattern, String str, String separator) { + return str.startsWith(separator) != pattern.startsWith(separator); } - private static boolean separatorPatternStartSlashMismatch( MatchPattern matchPattern, String str, String separator ) - { - return str.startsWith( separator ) != matchPattern.startsWith( separator ); + private static boolean separatorPatternStartSlashMismatch(MatchPattern matchPattern, String str, String separator) { + return str.startsWith(separator) != matchPattern.startsWith(separator); } - static boolean matchAntPathPatternStart( String[] patDirs, String str, String separator, boolean isCaseSensitive ) - { - String[] strDirs = tokenizePathToString( str, separator ); + static boolean matchAntPathPatternStart(String[] patDirs, String str, String separator, boolean isCaseSensitive) { + String[] strDirs = tokenizePathToString(str, separator); int patIdxStart = 0; int patIdxEnd = patDirs.length - 1; @@ -206,15 +189,12 @@ static boolean matchAntPathPatternStart( String[] patDirs, String str, String se int strIdxEnd = strDirs.length - 1; // up to first '**' - while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) { String patDir = patDirs[patIdxStart]; - if ( patDir.equals( "**" ) ) - { + if (patDir.equals("**")) { break; } - if ( !match( patDir, strDirs[strIdxStart], isCaseSensitive ) ) - { + if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) { return false; } patIdxStart++; @@ -231,9 +211,8 @@ static boolean matchAntPathPatternStart( String[] patDirs, String str, String se * @param str The path to match, as a String. Must not be null. * @return true if the pattern matches against the string, or false otherwise. */ - public static boolean matchPath( String pattern, String str ) - { - return matchPath( pattern, str, true ); + public static boolean matchPath(String pattern, String str) { + return matchPath(pattern, str, true); } /** @@ -244,174 +223,140 @@ public static boolean matchPath( String pattern, String str ) * @param isCaseSensitive Whether or not matching should be performed case sensitively. * @return true if the pattern matches against the string, or false otherwise. */ - public static boolean matchPath( String pattern, String str, boolean isCaseSensitive ) - { - return matchPath( pattern, str, File.separator, isCaseSensitive ); + public static boolean matchPath(String pattern, String str, boolean isCaseSensitive) { + return matchPath(pattern, str, File.separator, isCaseSensitive); } - public static boolean matchPath( String pattern, String str, String separator, boolean isCaseSensitive ) - { - if ( isRegexPrefixedPattern( pattern ) ) - { - String localPattern = - pattern.substring( REGEX_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length() ); + public static boolean matchPath(String pattern, String str, String separator, boolean isCaseSensitive) { + if (isRegexPrefixedPattern(pattern)) { + String localPattern = pattern.substring( + REGEX_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length()); - return str.matches( localPattern ); - } - else - { - String localPattern = isAntPrefixedPattern( pattern ) - ? pattern.substring( ANT_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length() ) - : pattern; - final String osRelatedPath = toOSRelatedPath( str, separator ); - final String osRelatedPattern = toOSRelatedPath( localPattern, separator ); - return matchAntPathPattern( osRelatedPattern, osRelatedPath, separator, isCaseSensitive ); + return str.matches(localPattern); + } else { + String localPattern = isAntPrefixedPattern(pattern) + ? pattern.substring(ANT_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length()) + : pattern; + final String osRelatedPath = toOSRelatedPath(str, separator); + final String osRelatedPattern = toOSRelatedPath(localPattern, separator); + return matchAntPathPattern(osRelatedPattern, osRelatedPath, separator, isCaseSensitive); } } - private static String toOSRelatedPath( String pattern, String separator ) - { - if ( "/".equals( separator ) ) - { - return pattern.replace( "\\", separator ); + private static String toOSRelatedPath(String pattern, String separator) { + if ("/".equals(separator)) { + return pattern.replace("\\", separator); } - if ( "\\".equals( separator ) ) { - return pattern.replace( "/", separator ); + if ("\\".equals(separator)) { + return pattern.replace("/", separator); } return pattern; } - static boolean isRegexPrefixedPattern( String pattern ) - { - return pattern.length() > ( REGEX_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1 ) - && pattern.startsWith( REGEX_HANDLER_PREFIX ) && pattern.endsWith( PATTERN_HANDLER_SUFFIX ); + static boolean isRegexPrefixedPattern(String pattern) { + return pattern.length() > (REGEX_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1) + && pattern.startsWith(REGEX_HANDLER_PREFIX) + && pattern.endsWith(PATTERN_HANDLER_SUFFIX); } - static boolean matchAntPathPattern( MatchPattern matchPattern, String str, String separator, - boolean isCaseSensitive ) - { - if ( separatorPatternStartSlashMismatch( matchPattern, str, separator ) ) - { + static boolean matchAntPathPattern( + MatchPattern matchPattern, String str, String separator, boolean isCaseSensitive) { + if (separatorPatternStartSlashMismatch(matchPattern, str, separator)) { return false; } String[] patDirs = matchPattern.getTokenizedPathString(); - String[] strDirs = tokenizePathToString( str, separator ); - return matchAntPathPattern( patDirs, strDirs, isCaseSensitive ); + String[] strDirs = tokenizePathToString(str, separator); + return matchAntPathPattern(patDirs, strDirs, isCaseSensitive); } - static boolean matchAntPathPattern( String pattern, String str, String separator, boolean isCaseSensitive ) - { - if ( separatorPatternStartSlashMismatch( pattern, str, separator ) ) - { + static boolean matchAntPathPattern(String pattern, String str, String separator, boolean isCaseSensitive) { + if (separatorPatternStartSlashMismatch(pattern, str, separator)) { return false; } - String[] patDirs = tokenizePathToString( pattern, separator ); - String[] strDirs = tokenizePathToString( str, separator ); - return matchAntPathPattern( patDirs, strDirs, isCaseSensitive ); - + String[] patDirs = tokenizePathToString(pattern, separator); + String[] strDirs = tokenizePathToString(str, separator); + return matchAntPathPattern(patDirs, strDirs, isCaseSensitive); } - static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean isCaseSensitive ) - { + static boolean matchAntPathPattern(String[] patDirs, String[] strDirs, boolean isCaseSensitive) { int patIdxStart = 0; int patIdxEnd = patDirs.length - 1; int strIdxStart = 0; int strIdxEnd = strDirs.length - 1; // up to first '**' - while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) { String patDir = patDirs[patIdxStart]; - if ( patDir.equals( "**" ) ) - { + if (patDir.equals("**")) { break; } - if ( !match( patDir, strDirs[strIdxStart], isCaseSensitive ) ) - { + if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) { return false; } patIdxStart++; strIdxStart++; } - if ( strIdxStart > strIdxEnd ) - { + if (strIdxStart > strIdxEnd) { // String is exhausted - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( !patDirs[i].equals( "**" ) ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (!patDirs[i].equals("**")) { return false; } } return true; - } - else - { - if ( patIdxStart > patIdxEnd ) - { + } else { + if (patIdxStart > patIdxEnd) { // String not exhausted, but pattern is. Failure. return false; } } // up to last '**' - while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) { String patDir = patDirs[patIdxEnd]; - if ( patDir.equals( "**" ) ) - { + if (patDir.equals("**")) { break; } - if ( !match( patDir, strDirs[strIdxEnd], isCaseSensitive ) ) - { + if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive)) { return false; } patIdxEnd--; strIdxEnd--; } - if ( strIdxStart > strIdxEnd ) - { + if (strIdxStart > strIdxEnd) { // String is exhausted - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( !patDirs[i].equals( "**" ) ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (!patDirs[i].equals("**")) { return false; } } return true; } - while ( patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) { int patIdxTmp = -1; - for ( int i = patIdxStart + 1; i <= patIdxEnd; i++ ) - { - if ( patDirs[i].equals( "**" ) ) - { + for (int i = patIdxStart + 1; i <= patIdxEnd; i++) { + if (patDirs[i].equals("**")) { patIdxTmp = i; break; } } - if ( patIdxTmp == patIdxStart + 1 ) - { + if (patIdxTmp == patIdxStart + 1) { // '**/**' situation, so skip one patIdxStart++; continue; } // Find the pattern between padIdxStart & padIdxTmp in str between // strIdxStart & strIdxEnd - int patLength = ( patIdxTmp - patIdxStart - 1 ); - int strLength = ( strIdxEnd - strIdxStart + 1 ); + int patLength = (patIdxTmp - patIdxStart - 1); + int strLength = (strIdxEnd - strIdxStart + 1); int foundIdx = -1; - strLoop: for ( int i = 0; i <= strLength - patLength; i++ ) - { - for ( int j = 0; j < patLength; j++ ) - { + strLoop: + for (int i = 0; i <= strLength - patLength; i++) { + for (int j = 0; j < patLength; j++) { String subPat = patDirs[patIdxStart + j + 1]; String subStr = strDirs[strIdxStart + i + j]; - if ( !match( subPat, subStr, isCaseSensitive ) ) - { + if (!match(subPat, subStr, isCaseSensitive)) { continue strLoop; } } @@ -420,8 +365,7 @@ static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean break; } - if ( foundIdx == -1 ) - { + if (foundIdx == -1) { return false; } @@ -429,10 +373,8 @@ static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean strIdxStart = foundIdx + patLength; } - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( !patDirs[i].equals( "**" ) ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (!patDirs[i].equals("**")) { return false; } } @@ -440,107 +382,85 @@ static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean return true; } - static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean isCaseSensitive ) - { + static boolean matchAntPathPattern(char[][] patDirs, char[][] strDirs, boolean isCaseSensitive) { int patIdxStart = 0; int patIdxEnd = patDirs.length - 1; int strIdxStart = 0; int strIdxEnd = strDirs.length - 1; // up to first '**' - while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) { char[] patDir = patDirs[patIdxStart]; - if ( isDoubleStar( patDir ) ) - { + if (isDoubleStar(patDir)) { break; } - if ( !match( patDir, strDirs[strIdxStart], isCaseSensitive ) ) - { + if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) { return false; } patIdxStart++; strIdxStart++; } - if ( strIdxStart > strIdxEnd ) - { + if (strIdxStart > strIdxEnd) { // String is exhausted - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( !isDoubleStar( patDirs[i] ) ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (!isDoubleStar(patDirs[i])) { return false; } } return true; - } - else - { - if ( patIdxStart > patIdxEnd ) - { + } else { + if (patIdxStart > patIdxEnd) { // String not exhausted, but pattern is. Failure. return false; } } // up to last '**' - while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) { char[] patDir = patDirs[patIdxEnd]; - if ( isDoubleStar( patDir ) ) - { + if (isDoubleStar(patDir)) { break; } - if ( !match( patDir, strDirs[strIdxEnd], isCaseSensitive ) ) - { + if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive)) { return false; } patIdxEnd--; strIdxEnd--; } - if ( strIdxStart > strIdxEnd ) - { + if (strIdxStart > strIdxEnd) { // String is exhausted - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( !isDoubleStar( patDirs[i] ) ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (!isDoubleStar(patDirs[i])) { return false; } } return true; } - while ( patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) { int patIdxTmp = -1; - for ( int i = patIdxStart + 1; i <= patIdxEnd; i++ ) - { - if ( isDoubleStar( patDirs[i] ) ) - { + for (int i = patIdxStart + 1; i <= patIdxEnd; i++) { + if (isDoubleStar(patDirs[i])) { patIdxTmp = i; break; } } - if ( patIdxTmp == patIdxStart + 1 ) - { + if (patIdxTmp == patIdxStart + 1) { // '**/**' situation, so skip one patIdxStart++; continue; } // Find the pattern between padIdxStart & padIdxTmp in str between // strIdxStart & strIdxEnd - int patLength = ( patIdxTmp - patIdxStart - 1 ); - int strLength = ( strIdxEnd - strIdxStart + 1 ); + int patLength = (patIdxTmp - patIdxStart - 1); + int strLength = (strIdxEnd - strIdxStart + 1); int foundIdx = -1; - strLoop: for ( int i = 0; i <= strLength - patLength; i++ ) - { - for ( int j = 0; j < patLength; j++ ) - { + strLoop: + for (int i = 0; i <= strLength - patLength; i++) { + for (int j = 0; j < patLength; j++) { char[] subPat = patDirs[patIdxStart + j + 1]; char[] subStr = strDirs[strIdxStart + i + j]; - if ( !match( subPat, subStr, isCaseSensitive ) ) - { + if (!match(subPat, subStr, isCaseSensitive)) { continue strLoop; } } @@ -549,8 +469,7 @@ static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean break; } - if ( foundIdx == -1 ) - { + if (foundIdx == -1) { return false; } @@ -558,10 +477,8 @@ static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean strIdxStart = foundIdx + patLength; } - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( !isDoubleStar( patDirs[i] ) ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (!isDoubleStar(patDirs[i])) { return false; } } @@ -569,8 +486,7 @@ static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean return true; } - private static boolean isDoubleStar( char[] patDir ) - { + private static boolean isDoubleStar(char[] patDir) { return patDir != null && patDir.length == 2 && patDir[0] == '*' && patDir[1] == '*'; } @@ -583,9 +499,8 @@ private static boolean isDoubleStar( char[] patDir ) * @param str The string which must be matched against the pattern. Must not be null. * @return true if the string matches against the pattern, or false otherwise. */ - public static boolean match( String pattern, String str ) - { - return match( pattern, str, true ); + public static boolean match(String pattern, String str) { + return match(pattern, str, true); } /** @@ -598,15 +513,13 @@ public static boolean match( String pattern, String str ) * @param isCaseSensitive Whether or not matching should be performed case sensitively. * @return true if the string matches against the pattern, or false otherwise. */ - public static boolean match( String pattern, String str, boolean isCaseSensitive ) - { + public static boolean match(String pattern, String str, boolean isCaseSensitive) { char[] patArr = pattern.toCharArray(); char[] strArr = str.toCharArray(); - return match( patArr, strArr, isCaseSensitive ); + return match(patArr, strArr, isCaseSensitive); } - public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensitive ) - { + public static boolean match(char[] patArr, char[] strArr, boolean isCaseSensitive) { int patIdxStart = 0; int patIdxEnd = patArr.length - 1; int strIdxStart = 0; @@ -614,56 +527,44 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti char ch; boolean containsStar = false; - for ( char aPatArr : patArr ) - { - if ( aPatArr == '*' ) - { + for (char aPatArr : patArr) { + if (aPatArr == '*') { containsStar = true; break; } } - if ( !containsStar ) - { + if (!containsStar) { // No '*'s, so we make a shortcut - if ( patIdxEnd != strIdxEnd ) - { + if (patIdxEnd != strIdxEnd) { return false; // Pattern and string do not have the same size } - for ( int i = 0; i <= patIdxEnd; i++ ) - { + for (int i = 0; i <= patIdxEnd; i++) { ch = patArr[i]; - if ( ch != '?' && !equals( ch, strArr[i], isCaseSensitive ) ) - { + if (ch != '?' && !equals(ch, strArr[i], isCaseSensitive)) { return false; // Character mismatch } } return true; // String matches against pattern } - if ( patIdxEnd == 0 ) - { + if (patIdxEnd == 0) { return true; // Pattern contains only '*', which matches anything } // Process characters before first star - while ( ( ch = patArr[patIdxStart] ) != '*' && strIdxStart <= strIdxEnd ) - { - if ( ch != '?' && !equals( ch, strArr[strIdxStart], isCaseSensitive ) ) - { + while ((ch = patArr[patIdxStart]) != '*' && strIdxStart <= strIdxEnd) { + if (ch != '?' && !equals(ch, strArr[strIdxStart], isCaseSensitive)) { return false; // Character mismatch } patIdxStart++; strIdxStart++; } - if ( strIdxStart > strIdxEnd ) - { + if (strIdxStart > strIdxEnd) { // All characters in the string are used. Check if only '*'s are // left in the pattern. If so, we succeeded. Otherwise failure. - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( patArr[i] != '*' ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (patArr[i] != '*') { return false; } } @@ -671,23 +572,18 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti } // Process characters after last star - while ( ( ch = patArr[patIdxEnd] ) != '*' && strIdxStart <= strIdxEnd ) - { - if ( ch != '?' && !equals( ch, strArr[strIdxEnd], isCaseSensitive ) ) - { + while ((ch = patArr[patIdxEnd]) != '*' && strIdxStart <= strIdxEnd) { + if (ch != '?' && !equals(ch, strArr[strIdxEnd], isCaseSensitive)) { return false; // Character mismatch } patIdxEnd--; strIdxEnd--; } - if ( strIdxStart > strIdxEnd ) - { + if (strIdxStart > strIdxEnd) { // All characters in the string are used. Check if only '*'s are // left in the pattern. If so, we succeeded. Otherwise failure. - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( patArr[i] != '*' ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (patArr[i] != '*') { return false; } } @@ -696,35 +592,29 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti // process pattern between stars. padIdxStart and patIdxEnd point // always to a '*'. - while ( patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd ) - { + while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) { int patIdxTmp = -1; - for ( int i = patIdxStart + 1; i <= patIdxEnd; i++ ) - { - if ( patArr[i] == '*' ) - { + for (int i = patIdxStart + 1; i <= patIdxEnd; i++) { + if (patArr[i] == '*') { patIdxTmp = i; break; } } - if ( patIdxTmp == patIdxStart + 1 ) - { + if (patIdxTmp == patIdxStart + 1) { // Two stars next to each other, skip the first one. patIdxStart++; continue; } // Find the pattern between padIdxStart & padIdxTmp in str between // strIdxStart & strIdxEnd - int patLength = ( patIdxTmp - patIdxStart - 1 ); - int strLength = ( strIdxEnd - strIdxStart + 1 ); + int patLength = (patIdxTmp - patIdxStart - 1); + int strLength = (strIdxEnd - strIdxStart + 1); int foundIdx = -1; - strLoop: for ( int i = 0; i <= strLength - patLength; i++ ) - { - for ( int j = 0; j < patLength; j++ ) - { + strLoop: + for (int i = 0; i <= strLength - patLength; i++) { + for (int j = 0; j < patLength; j++) { ch = patArr[patIdxStart + j + 1]; - if ( ch != '?' && !equals( ch, strArr[strIdxStart + i + j], isCaseSensitive ) ) - { + if (ch != '?' && !equals(ch, strArr[strIdxStart + i + j], isCaseSensitive)) { continue strLoop; } } @@ -733,8 +623,7 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti break; } - if ( foundIdx == -1 ) - { + if (foundIdx == -1) { return false; } @@ -744,10 +633,8 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti // All characters in the string are used. Check if only '*'s are left // in the pattern. If so, we succeeded. Otherwise failure. - for ( int i = patIdxStart; i <= patIdxEnd; i++ ) - { - if ( patArr[i] != '*' ) - { + for (int i = patIdxStart; i <= patIdxEnd; i++) { + if (patArr[i] != '*') { return false; } } @@ -757,33 +644,27 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti /** * Tests whether two characters are equal. */ - private static boolean equals( char c1, char c2, boolean isCaseSensitive ) - { - if ( c1 == c2 ) - { + private static boolean equals(char c1, char c2, boolean isCaseSensitive) { + if (c1 == c2) { return true; } - if ( !isCaseSensitive ) - { + if (!isCaseSensitive) { // NOTE: Try both upper case and lower case as done by String.equalsIgnoreCase() - if ( Character.toUpperCase( c1 ) == Character.toUpperCase( c2 ) - || Character.toLowerCase( c1 ) == Character.toLowerCase( c2 ) ) - { + if (Character.toUpperCase(c1) == Character.toUpperCase(c2) + || Character.toLowerCase(c1) == Character.toLowerCase(c2)) { return true; } } return false; } - private static String[] tokenizePathToString( String path, String separator ) - { + private static String[] tokenizePathToString(String path, String separator) { List ret = new ArrayList(); - StringTokenizer st = new StringTokenizer( path, separator ); - while ( st.hasMoreTokens() ) - { - ret.add( st.nextToken() ); + StringTokenizer st = new StringTokenizer(path, separator); + while (st.hasMoreTokens()) { + ret.add(st.nextToken()); } - return ret.toArray( new String[0] ); + return ret.toArray(new String[0]); } /** @@ -797,18 +678,14 @@ private static String[] tokenizePathToString( String path, String separator ) * @param granularity the amount in seconds of slack we will give in determining out of dateness * @return whether the target is out of date */ - public static boolean isOutOfDate( File src, File target, int granularity ) - { - if ( !src.exists() ) - { + public static boolean isOutOfDate(File src, File target, int granularity) { + if (!src.exists()) { return false; } - if ( !target.exists() ) - { + if (!target.exists()) { return true; } - if ( ( src.lastModified() - granularity ) > target.lastModified() ) - { + if ((src.lastModified() - granularity) > target.lastModified()) { return true; } return false; @@ -821,15 +698,12 @@ public static boolean isOutOfDate( File src, File target, int granularity ) * @param input a String to remove all whitespace. * @return a String that has had all whitespace removed. */ - public static String removeWhitespace( String input ) - { + public static String removeWhitespace(String input) { StringBuilder result = new StringBuilder(); - if ( input != null ) - { - StringTokenizer st = new StringTokenizer( input ); - while ( st.hasMoreTokens() ) - { - result.append( st.nextToken() ); + if (input != null) { + StringTokenizer st = new StringTokenizer(input); + while (st.hasMoreTokens()) { + result.append(st.nextToken()); } } return result.toString(); diff --git a/src/main/java/org/codehaus/plexus/util/StringInputStream.java b/src/main/java/org/codehaus/plexus/util/StringInputStream.java index ea1c46c8..1e3ca5f5 100644 --- a/src/main/java/org/codehaus/plexus/util/StringInputStream.java +++ b/src/main/java/org/codehaus/plexus/util/StringInputStream.java @@ -70,9 +70,7 @@ * {@link java.io.ByteArrayInputStream}. */ @Deprecated -public class StringInputStream - extends InputStream -{ +public class StringInputStream extends InputStream { /** Source string, stored as a StringReader */ private StringReader in; @@ -81,9 +79,8 @@ public class StringInputStream * * @param source The string to read from. Must not be null. */ - public StringInputStream( String source ) - { - in = new StringReader( source ); + public StringInputStream(String source) { + in = new StringReader(source); } /** @@ -94,9 +91,7 @@ public StringInputStream( String source ) * @exception IOException if the original StringReader fails to be read */ @Override - public int read() - throws IOException - { + public int read() throws IOException { return in.read(); } @@ -106,9 +101,7 @@ public int read() * @exception IOException if the original StringReader fails to be closed */ @Override - public void close() - throws IOException - { + public void close() throws IOException { in.close(); } @@ -118,15 +111,11 @@ public void close() * @param limit the maximum limit of bytes that can be read before the mark position becomes invalid */ @Override - public synchronized void mark( final int limit ) - { - try - { - in.mark( limit ); - } - catch ( IOException ioe ) - { - throw new RuntimeException( ioe.getMessage() ); + public synchronized void mark(final int limit) { + try { + in.mark(limit); + } catch (IOException ioe) { + throw new RuntimeException(ioe.getMessage()); } } @@ -136,9 +125,7 @@ public synchronized void mark( final int limit ) * @exception IOException if the StringReader fails to be reset */ @Override - public synchronized void reset() - throws IOException - { + public synchronized void reset() throws IOException { in.reset(); } @@ -146,8 +133,7 @@ public synchronized void reset() * @see InputStream#markSupported */ @Override - public boolean markSupported() - { + public boolean markSupported() { return in.markSupported(); } } diff --git a/src/main/java/org/codehaus/plexus/util/StringOutputStream.java b/src/main/java/org/codehaus/plexus/util/StringOutputStream.java index ef22b575..60474d81 100644 --- a/src/main/java/org/codehaus/plexus/util/StringOutputStream.java +++ b/src/main/java/org/codehaus/plexus/util/StringOutputStream.java @@ -28,37 +28,28 @@ * encoding. Instead, use {@link java.io.ByteArrayOutputStream#toString(String)}. */ @Deprecated -public class StringOutputStream - extends OutputStream -{ +public class StringOutputStream extends OutputStream { private StringBuffer buf = new StringBuffer(); @Override - public void write( byte[] b ) - throws IOException - { - buf.append( new String( b ) ); + public void write(byte[] b) throws IOException { + buf.append(new String(b)); } @Override - public void write( byte[] b, int off, int len ) - throws IOException - { - buf.append( new String( b, off, len ) ); + public void write(byte[] b, int off, int len) throws IOException { + buf.append(new String(b, off, len)); } @Override - public void write( int b ) - throws IOException - { + public void write(int b) throws IOException { byte[] bytes = new byte[1]; bytes[0] = (byte) b; - buf.append( new String( bytes ) ); + buf.append(new String(bytes)); } @Override - public String toString() - { + public String toString() { return buf.toString(); } } diff --git a/src/main/java/org/codehaus/plexus/util/StringUtils.java b/src/main/java/org/codehaus/plexus/util/StringUtils.java index 0f8518de..edae9844 100644 --- a/src/main/java/org/codehaus/plexus/util/StringUtils.java +++ b/src/main/java/org/codehaus/plexus/util/StringUtils.java @@ -82,8 +82,7 @@ * @since 1.0 * */ -public class StringUtils -{ +public class StringUtils { /** *

    * StringUtils instances should NOT be constructed in standard programming. Instead, the class should @@ -93,9 +92,7 @@ public class StringUtils * This constructor is public to permit tools that require a JavaBean manager to operate. *

    */ - public StringUtils() - { - } + public StringUtils() {} // Empty // -------------------------------------------------------------------------- @@ -110,9 +107,8 @@ public StringUtils() * @param str the String to check * @return the trimmed text (never null) */ - public static String clean( String str ) - { - return ( str == null ? "" : str.trim() ); + public static String clean(String str) { + return (str == null ? "" : str.trim()); } /** @@ -125,9 +121,8 @@ public static String clean( String str ) * @param str the String to check * @return the trimmed text (or null) */ - public static String trim( String str ) - { - return ( str == null ? null : str.trim() ); + public static String trim(String str) { + return (str == null ? null : str.trim()); } /** @@ -141,15 +136,12 @@ public static String trim( String str ) * @param str String target to delete whitespace from * @return the String without whitespaces */ - public static String deleteWhitespace( String str ) - { + public static String deleteWhitespace(String str) { StringBuilder buffer = new StringBuilder(); int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( !Character.isWhitespace( str.charAt( i ) ) ) - { - buffer.append( str.charAt( i ) ); + for (int i = 0; i < sz; i++) { + if (!Character.isWhitespace(str.charAt(i))) { + buffer.append(str.charAt(i)); } } return buffer.toString(); @@ -161,9 +153,8 @@ public static String deleteWhitespace( String str ) * @param str the String to check * @return true if the String is non-null, and not length zero */ - public static boolean isNotEmpty( String str ) - { - return ( ( str != null ) && ( !str.isEmpty() ) ); + public static boolean isNotEmpty(String str) { + return ((str != null) && (!str.isEmpty())); } /** @@ -176,9 +167,8 @@ public static boolean isNotEmpty( String str ) * @param str the String to check * @return true if the String is null, or length zero */ - public static boolean isEmpty( String str ) - { - return ( ( str == null ) || ( str.isEmpty() ) ); + public static boolean isEmpty(String str) { + return ((str == null) || (str.isEmpty())); } /** @@ -198,17 +188,13 @@ public static boolean isEmpty( String str ) * @return true if the String is null, empty or whitespace * @since 1.5.2 */ - public static boolean isBlank( String str ) - { + public static boolean isBlank(String str) { int strLen; - if ( str == null || ( strLen = str.length() ) == 0 ) - { + if (str == null || (strLen = str.length()) == 0) { return true; } - for ( int i = 0; i < strLen; i++ ) - { - if ( !Character.isWhitespace( str.charAt( i ) ) ) - { + for (int i = 0; i < strLen; i++) { + if (!Character.isWhitespace(str.charAt(i))) { return false; } } @@ -232,9 +218,8 @@ public static boolean isBlank( String str ) * @return true if the String is not empty and not null and not whitespace * @since 1.5.2 */ - public static boolean isNotBlank( String str ) - { - return !StringUtils.isBlank( str ); + public static boolean isNotBlank(String str) { + return !StringUtils.isBlank(str); } // Equals and IndexOf @@ -256,9 +241,8 @@ public static boolean isNotBlank( String str ) * @see Objects#equals(Object, Object) */ @Deprecated - public static boolean equals( String str1, String str2 ) - { - return Objects.equals( str1, str2 ); + public static boolean equals(String str1, String str2) { + return Objects.equals(str1, str2); } /** @@ -275,9 +259,8 @@ public static boolean equals( String str1, String str2 ) * @param str2 the second string * @return true if the Strings are equal, case insensitive, or both null */ - public static boolean equalsIgnoreCase( String str1, String str2 ) - { - return ( str1 == null ? str2 == null : str1.equalsIgnoreCase( str2 ) ); + public static boolean equalsIgnoreCase(String str1, String str2) { + return (str1 == null ? str2 == null : str1.equalsIgnoreCase(str2)); } /** @@ -293,10 +276,8 @@ public static boolean equalsIgnoreCase( String str1, String str2 ) * @return the first index of any of the searchStrs in str * @throws NullPointerException if any of searchStrs[i] is null */ - public static int indexOfAny( String str, String[] searchStrs ) - { - if ( ( str == null ) || ( searchStrs == null ) ) - { + public static int indexOfAny(String str, String[] searchStrs) { + if ((str == null) || (searchStrs == null)) { return -1; } int sz = searchStrs.length; @@ -305,21 +286,18 @@ public static int indexOfAny( String str, String[] searchStrs ) int ret = Integer.MAX_VALUE; int tmp; - for ( String searchStr : searchStrs ) - { - tmp = str.indexOf( searchStr ); - if ( tmp == -1 ) - { + for (String searchStr : searchStrs) { + tmp = str.indexOf(searchStr); + if (tmp == -1) { continue; } - if ( tmp < ret ) - { + if (tmp < ret) { ret = tmp; } } - return ( ret == Integer.MAX_VALUE ) ? -1 : ret; + return (ret == Integer.MAX_VALUE) ? -1 : ret; } /** @@ -335,19 +313,15 @@ public static int indexOfAny( String str, String[] searchStrs ) * @return the last index of any of the Strings * @throws NullPointerException if any of searchStrs[i] is null */ - public static int lastIndexOfAny( String str, String[] searchStrs ) - { - if ( ( str == null ) || ( searchStrs == null ) ) - { + public static int lastIndexOfAny(String str, String[] searchStrs) { + if ((str == null) || (searchStrs == null)) { return -1; } int ret = -1; int tmp; - for ( String searchStr : searchStrs ) - { - tmp = str.lastIndexOf( searchStr ); - if ( tmp > ret ) - { + for (String searchStr : searchStrs) { + tmp = str.lastIndexOf(searchStr); + if (tmp > ret) { ret = tmp; } } @@ -370,29 +344,24 @@ public static int lastIndexOfAny( String str, String[] searchStrs ) * characters * @return substring from start position */ - public static String substring( String str, int start ) - { - if ( str == null ) - { + public static String substring(String str, int start) { + if (str == null) { return null; } // handle negatives, which means last n characters - if ( start < 0 ) - { + if (start < 0) { start = str.length() + start; // remember start is negative } - if ( start < 0 ) - { + if (start < 0) { start = 0; } - if ( start > str.length() ) - { + if (start > str.length()) { return ""; } - return str.substring( start ); + return str.substring(start); } /** @@ -410,46 +379,38 @@ public static String substring( String str, int start ) * characters * @return substring from start position to end position */ - public static String substring( String str, int start, int end ) - { - if ( str == null ) - { + public static String substring(String str, int start, int end) { + if (str == null) { return null; } // handle negatives - if ( end < 0 ) - { + if (end < 0) { end = str.length() + end; // remember end is negative } - if ( start < 0 ) - { + if (start < 0) { start = str.length() + start; // remember start is negative } // check length next - if ( end > str.length() ) - { + if (end > str.length()) { // check this works. end = str.length(); } // if start is greater than end, return "" - if ( start > end ) - { + if (start > end) { return ""; } - if ( start < 0 ) - { + if (start < 0) { start = 0; } - if ( end < 0 ) - { + if (end < 0) { end = 0; } - return str.substring( start, end ); + return str.substring(start, end); } /** @@ -466,19 +427,14 @@ public static String substring( String str, int start, int end ) * @return the leftmost characters * @throws IllegalArgumentException if len is less than zero */ - public static String left( String str, int len ) - { - if ( len < 0 ) - { - throw new IllegalArgumentException( "Requested String length " + len + " is less than zero" ); + public static String left(String str, int len) { + if (len < 0) { + throw new IllegalArgumentException("Requested String length " + len + " is less than zero"); } - if ( ( str == null ) || ( str.length() <= len ) ) - { + if ((str == null) || (str.length() <= len)) { return str; - } - else - { - return str.substring( 0, len ); + } else { + return str.substring(0, len); } } @@ -496,19 +452,14 @@ public static String left( String str, int len ) * @return the leftmost characters * @throws IllegalArgumentException if len is less than zero */ - public static String right( String str, int len ) - { - if ( len < 0 ) - { - throw new IllegalArgumentException( "Requested String length " + len + " is less than zero" ); + public static String right(String str, int len) { + if (len < 0) { + throw new IllegalArgumentException("Requested String length " + len + " is less than zero"); } - if ( ( str == null ) || ( str.length() <= len ) ) - { + if ((str == null) || (str.length() <= len)) { return str; - } - else - { - return str.substring( str.length() - len ); + } else { + return str.substring(str.length() - len); } } @@ -528,27 +479,20 @@ public static String right( String str, int len ) * @throws IndexOutOfBoundsException if pos is out of bounds * @throws IllegalArgumentException if len is less than zero */ - public static String mid( String str, int pos, int len ) - { - if ( ( pos < 0 ) || ( ( str != null ) && ( pos > str.length() ) ) ) - { - throw new StringIndexOutOfBoundsException( "String index " + pos + " is out of bounds" ); + public static String mid(String str, int pos, int len) { + if ((pos < 0) || ((str != null) && (pos > str.length()))) { + throw new StringIndexOutOfBoundsException("String index " + pos + " is out of bounds"); } - if ( len < 0 ) - { - throw new IllegalArgumentException( "Requested String length " + len + " is less than zero" ); + if (len < 0) { + throw new IllegalArgumentException("Requested String length " + len + " is less than zero"); } - if ( str == null ) - { + if (str == null) { return null; } - if ( str.length() <= ( pos + len ) ) - { - return str.substring( pos ); - } - else - { - return str.substring( pos, pos + len ); + if (str.length() <= (pos + len)) { + return str.substring(pos); + } else { + return str.substring(pos, pos + len); } } @@ -566,9 +510,8 @@ public static String mid( String str, int pos, int len ) * @param str the String to parse * @return an array of parsed Strings */ - public static String[] split( String str ) - { - return split( str, null, -1 ); + public static String[] split(String str) { + return split(str, null, -1); } /** @@ -576,9 +519,8 @@ public static String[] split( String str ) * @param separator Characters used as the delimiters. If null, splits on whitespace. * @return an array of parsed Strings */ - public static String[] split( String text, String separator ) - { - return split( text, separator, -1 ); + public static String[] split(String text, String separator) { + return split(text, separator, -1); } /** @@ -599,23 +541,18 @@ public static String[] split( String text, String separator ) * @param max The maximum number of elements to include in the array. A zero or negative value implies no limit. * @return an array of parsed Strings */ - public static String[] split( String str, String separator, int max ) - { + public static String[] split(String str, String separator, int max) { StringTokenizer tok; - if ( separator == null ) - { + if (separator == null) { // Null separator means we're using StringTokenizer's default // delimiter, which comprises all whitespace characters. - tok = new StringTokenizer( str ); - } - else - { - tok = new StringTokenizer( str, separator ); + tok = new StringTokenizer(str); + } else { + tok = new StringTokenizer(str, separator); } int listSize = tok.countTokens(); - if ( ( max > 0 ) && ( listSize > max ) ) - { + if ((max > 0) && (listSize > max)) { listSize = max; } @@ -623,22 +560,18 @@ public static String[] split( String str, String separator, int max ) int i = 0; int lastTokenBegin; int lastTokenEnd = 0; - while ( tok.hasMoreTokens() ) - { - if ( ( max > 0 ) && ( i == listSize - 1 ) ) - { + while (tok.hasMoreTokens()) { + if ((max > 0) && (i == listSize - 1)) { // In the situation where we hit the max yet have // tokens left over in our input, the last list // element gets all remaining text. String endToken = tok.nextToken(); - lastTokenBegin = str.indexOf( endToken, lastTokenEnd ); - list[i] = str.substring( lastTokenBegin ); + lastTokenBegin = str.indexOf(endToken, lastTokenEnd); + list[i] = str.substring(lastTokenBegin); break; - } - else - { + } else { list[i] = tok.nextToken(); - lastTokenBegin = str.indexOf( list[i], lastTokenEnd ); + lastTokenBegin = str.indexOf(list[i], lastTokenEnd); lastTokenEnd = lastTokenBegin + list[i].length(); } i++; @@ -659,9 +592,8 @@ public static String[] split( String str, String separator, int max ) * @param array the array of values to concatenate. * @return the concatenated string. */ - public static String concatenate( Object[] array ) - { - return join( array, "" ); + public static String concatenate(Object[] array) { + return join(array, ""); } /** @@ -676,23 +608,19 @@ public static String concatenate( Object[] array ) * @param separator the separator character to use * @return the joined String */ - public static String join( Object[] array, String separator ) - { - if ( separator == null ) - { + public static String join(Object[] array, String separator) { + if (separator == null) { separator = ""; } int arraySize = array.length; - int bufSize = ( arraySize == 0 ? 0 : ( array[0].toString().length() + separator.length() ) * arraySize ); - StringBuilder buf = new StringBuilder( bufSize ); - - for ( int i = 0; i < arraySize; i++ ) - { - if ( i > 0 ) - { - buf.append( separator ); + int bufSize = (arraySize == 0 ? 0 : (array[0].toString().length() + separator.length()) * arraySize); + StringBuilder buf = new StringBuilder(bufSize); + + for (int i = 0; i < arraySize; i++) { + if (i > 0) { + buf.append(separator); } - buf.append( array[i] ); + buf.append(array[i]); } return buf.toString(); } @@ -709,19 +637,15 @@ public static String join( Object[] array, String separator ) * @param separator the separator character to use * @return the joined String */ - public static String join( Iterator iterator, String separator ) - { - if ( separator == null ) - { + public static String join(Iterator iterator, String separator) { + if (separator == null) { separator = ""; } - StringBuilder buf = new StringBuilder( 256 ); // Java default is 16, probably too small - while ( iterator.hasNext() ) - { - buf.append( iterator.next() ); - if ( iterator.hasNext() ) - { - buf.append( separator ); + StringBuilder buf = new StringBuilder(256); // Java default is 16, probably too small + while (iterator.hasNext()) { + buf.append(iterator.next()); + if (iterator.hasNext()) { + buf.append(separator); } } return buf.toString(); @@ -744,9 +668,8 @@ public static String join( Iterator iterator, String separator ) * @param with char to replace with * @return the text with any replacements processed */ - public static String replaceOnce( String text, char repl, char with ) - { - return replace( text, repl, with, 1 ); + public static String replaceOnce(String text, char repl, char with) { + return replace(text, repl, with, 1); } /** @@ -763,9 +686,8 @@ public static String replaceOnce( String text, char repl, char with ) * @param with char to replace with * @return the text with any replacements processed */ - public static String replace( String text, char repl, char with ) - { - return replace( text, repl, with, -1 ); + public static String replace(String text, char repl, char with) { + return replace(text, repl, with, -1); } /** @@ -783,9 +705,8 @@ public static String replace( String text, char repl, char with ) * @param max maximum number of values to replace, or -1 if no maximum * @return the text with any replacements processed */ - public static String replace( String text, char repl, char with, int max ) - { - return replace( text, String.valueOf( repl ), String.valueOf( with ), max ); + public static String replace(String text, char repl, char with, int max) { + return replace(text, String.valueOf(repl), String.valueOf(with), max); } /** @@ -802,9 +723,8 @@ public static String replace( String text, char repl, char with, int max ) * @param with String to replace with * @return the text with any replacements processed */ - public static String replaceOnce( String text, String repl, String with ) - { - return replace( text, repl, with, 1 ); + public static String replaceOnce(String text, String repl, String with) { + return replace(text, repl, with, 1); } /** @@ -821,9 +741,8 @@ public static String replaceOnce( String text, String repl, String with ) * @param with String to replace with * @return the text with any replacements processed */ - public static String replace( String text, String repl, String with ) - { - return replace( text, repl, with, -1 ); + public static String replace(String text, String repl, String with) { + return replace(text, repl, with, -1); } /** @@ -841,26 +760,22 @@ public static String replace( String text, String repl, String with ) * @param max maximum number of values to replace, or -1 if no maximum * @return the text with any replacements processed */ - public static String replace( String text, String repl, String with, int max ) - { - if ( ( text == null ) || ( repl == null ) || ( with == null ) || ( repl.length() == 0 ) ) - { + public static String replace(String text, String repl, String with, int max) { + if ((text == null) || (repl == null) || (with == null) || (repl.length() == 0)) { return text; } - StringBuilder buf = new StringBuilder( text.length() ); + StringBuilder buf = new StringBuilder(text.length()); int start = 0, end; - while ( ( end = text.indexOf( repl, start ) ) != -1 ) - { - buf.append( text, start, end ).append( with ); + while ((end = text.indexOf(repl, start)) != -1) { + buf.append(text, start, end).append(with); start = end + repl.length(); - if ( --max == 0 ) - { + if (--max == 0) { break; } } - buf.append( text, start, text.length() ); + buf.append(text, start, text.length()); return buf.toString(); } @@ -876,10 +791,12 @@ public static String replace( String text, String repl, String with, int max ) * @return String with overlayed text * @throws NullPointerException if text or overlay is null */ - public static String overlayString( String text, String overlay, int start, int end ) - { - return new StringBuilder( start + overlay.length() + text.length() - end - + 1 ).append( text, 0, start ).append( overlay ).append( text, end, text.length() ).toString(); + public static String overlayString(String text, String overlay, int start, int end) { + return new StringBuilder(start + overlay.length() + text.length() - end + 1) + .append(text, 0, start) + .append(overlay) + .append(text, end, text.length()) + .toString(); } // Centering @@ -898,9 +815,8 @@ public static String overlayString( String text, String overlay, int start, int * @return String containing centered String * @throws NullPointerException if str is null */ - public static String center( String str, int size ) - { - return center( str, size, " " ); + public static String center(String str, int size) { + return center(str, size, " "); } /** @@ -918,16 +834,14 @@ public static String center( String str, int size ) * @throws NullPointerException if str or delim is null * @throws ArithmeticException if delim is the empty String */ - public static String center( String str, int size, String delim ) - { + public static String center(String str, int size, String delim) { int sz = str.length(); int p = size - sz; - if ( p < 1 ) - { + if (p < 1) { return str; } - str = leftPad( str, sz + p / 2, delim ); - str = rightPad( str, size, delim ); + str = leftPad(str, sz + p / 2, delim); + str = rightPad(str, size, delim); return str; } @@ -943,9 +857,8 @@ public static String center( String str, int size, String delim ) * @return String without chomped newline * @throws NullPointerException if str is null */ - public static String chomp( String str ) - { - return chomp( str, "\n" ); + public static String chomp(String str) { + return chomp(str, "\n"); } /** @@ -958,15 +871,11 @@ public static String chomp( String str ) * @return String without chomped ending * @throws NullPointerException if str or sep is null */ - public static String chomp( String str, String sep ) - { - int idx = str.lastIndexOf( sep ); - if ( idx != -1 ) - { - return str.substring( 0, idx ); - } - else - { + public static String chomp(String str, String sep) { + int idx = str.lastIndexOf(sep); + if (idx != -1) { + return str.substring(0, idx); + } else { return str; } } @@ -980,9 +889,8 @@ public static String chomp( String str, String sep ) * @return String without chomped ending * @throws NullPointerException if str is null */ - public static String chompLast( String str ) - { - return chompLast( str, "\n" ); + public static String chompLast(String str) { + return chompLast(str, "\n"); } /** @@ -995,19 +903,14 @@ public static String chompLast( String str ) * @return String without chomped ending * @throws NullPointerException if str or sep is null */ - public static String chompLast( String str, String sep ) - { - if ( str.length() == 0 ) - { + public static String chompLast(String str, String sep) { + if (str.length() == 0) { return str; } - String sub = str.substring( str.length() - sep.length() ); - if ( sep.equals( sub ) ) - { - return str.substring( 0, str.length() - sep.length() ); - } - else - { + String sub = str.substring(str.length() - sep.length()); + if (sep.equals(sub)) { + return str.substring(0, str.length() - sep.length()); + } else { return str; } } @@ -1022,19 +925,13 @@ public static String chompLast( String str, String sep ) * @return String chomped * @throws NullPointerException if str or sep is null */ - public static String getChomp( String str, String sep ) - { - int idx = str.lastIndexOf( sep ); - if ( idx == str.length() - sep.length() ) - { + public static String getChomp(String str, String sep) { + int idx = str.lastIndexOf(sep); + if (idx == str.length() - sep.length()) { return sep; - } - else if ( idx != -1 ) - { - return str.substring( idx ); - } - else - { + } else if (idx != -1) { + return str.substring(idx); + } else { return ""; } } @@ -1049,15 +946,11 @@ else if ( idx != -1 ) * @return String without chomped beginning * @throws NullPointerException if str or sep is null */ - public static String prechomp( String str, String sep ) - { - int idx = str.indexOf( sep ); - if ( idx != -1 ) - { - return str.substring( idx + sep.length() ); - } - else - { + public static String prechomp(String str, String sep) { + int idx = str.indexOf(sep); + if (idx != -1) { + return str.substring(idx + sep.length()); + } else { return str; } } @@ -1072,15 +965,11 @@ public static String prechomp( String str, String sep ) * @return String prechomped * @throws NullPointerException if str or sep is null */ - public static String getPrechomp( String str, String sep ) - { - int idx = str.indexOf( sep ); - if ( idx != -1 ) - { - return str.substring( 0, idx + sep.length() ); - } - else - { + public static String getPrechomp(String str, String sep) { + int idx = str.indexOf(sep); + if (idx != -1) { + return str.substring(0, idx + sep.length()); + } else { return ""; } } @@ -1100,24 +989,19 @@ public static String getPrechomp( String str, String sep ) * @return String without last character * @throws NullPointerException if str is null */ - public static String chop( String str ) - { - if ( "".equals( str ) ) - { + public static String chop(String str) { + if ("".equals(str)) { return ""; } - if ( str.length() == 1 ) - { + if (str.length() == 1) { return ""; } int lastIdx = str.length() - 1; - String ret = str.substring( 0, lastIdx ); - char last = str.charAt( lastIdx ); - if ( last == '\n' ) - { - if ( ret.charAt( lastIdx - 1 ) == '\r' ) - { - return ret.substring( 0, lastIdx - 1 ); + String ret = str.substring(0, lastIdx); + char last = str.charAt(lastIdx); + if (last == '\n') { + if (ret.charAt(lastIdx - 1) == '\r') { + return ret.substring(0, lastIdx - 1); } } return ret; @@ -1133,22 +1017,17 @@ public static String chop( String str ) * @return String without newline * @throws NullPointerException if str is null */ - public static String chopNewline( String str ) - { + public static String chopNewline(String str) { int lastIdx = str.length() - 1; - char last = str.charAt( lastIdx ); - if ( last == '\n' ) - { - if ( str.charAt( lastIdx - 1 ) == '\r' ) - { + char last = str.charAt(lastIdx); + if (last == '\n') { + if (str.charAt(lastIdx - 1) == '\r') { lastIdx--; } - } - else - { + } else { lastIdx++; } - return str.substring( 0, lastIdx ); + return str.substring(0, lastIdx); } // Conversion @@ -1167,83 +1046,67 @@ public static String chopNewline( String str ) * @return String with escaped values * @throws NullPointerException if str is null */ - public static String escape( String str ) - { + public static String escape(String str) { // improved with code from cybertiger@cyberiantiger.org // unicode from him, and default for < 32's. int sz = str.length(); - StringBuilder buffer = new StringBuilder( 2 * sz ); - for ( int i = 0; i < sz; i++ ) - { - char ch = str.charAt( i ); + StringBuilder buffer = new StringBuilder(2 * sz); + for (int i = 0; i < sz; i++) { + char ch = str.charAt(i); // handle unicode - if ( ch > 0xfff ) - { - buffer.append( "\\u" + Integer.toHexString( ch ) ); - } - else if ( ch > 0xff ) - { - buffer.append( "\\u0" + Integer.toHexString( ch ) ); - } - else if ( ch > 0x7f ) - { - buffer.append( "\\u00" + Integer.toHexString( ch ) ); - } - else if ( ch < 32 ) - { - switch ( ch ) - { + if (ch > 0xfff) { + buffer.append("\\u" + Integer.toHexString(ch)); + } else if (ch > 0xff) { + buffer.append("\\u0" + Integer.toHexString(ch)); + } else if (ch > 0x7f) { + buffer.append("\\u00" + Integer.toHexString(ch)); + } else if (ch < 32) { + switch (ch) { case '\b': - buffer.append( '\\' ); - buffer.append( 'b' ); + buffer.append('\\'); + buffer.append('b'); break; case '\n': - buffer.append( '\\' ); - buffer.append( 'n' ); + buffer.append('\\'); + buffer.append('n'); break; case '\t': - buffer.append( '\\' ); - buffer.append( 't' ); + buffer.append('\\'); + buffer.append('t'); break; case '\f': - buffer.append( '\\' ); - buffer.append( 'f' ); + buffer.append('\\'); + buffer.append('f'); break; case '\r': - buffer.append( '\\' ); - buffer.append( 'r' ); + buffer.append('\\'); + buffer.append('r'); break; default: - if ( ch > 0xf ) - { - buffer.append( "\\u00" + Integer.toHexString( ch ) ); - } - else - { - buffer.append( "\\u000" + Integer.toHexString( ch ) ); + if (ch > 0xf) { + buffer.append("\\u00" + Integer.toHexString(ch)); + } else { + buffer.append("\\u000" + Integer.toHexString(ch)); } break; } - } - else - { - switch ( ch ) - { + } else { + switch (ch) { case '\'': - buffer.append( '\\' ); - buffer.append( '\'' ); + buffer.append('\\'); + buffer.append('\''); break; case '"': - buffer.append( '\\' ); - buffer.append( '"' ); + buffer.append('\\'); + buffer.append('"'); break; case '\\': - buffer.append( '\\' ); - buffer.append( '\\' ); + buffer.append('\\'); + buffer.append('\\'); break; default: - buffer.append( ch ); + buffer.append(ch); break; } } @@ -1265,12 +1128,10 @@ else if ( ch < 32 ) * @throws NegativeArraySizeException if repeat < 0 * @throws NullPointerException if str is null */ - public static String repeat( String str, int repeat ) - { - StringBuilder buffer = new StringBuilder( repeat * str.length() ); - for ( int i = 0; i < repeat; i++ ) - { - buffer.append( str ); + public static String repeat(String str, int repeat) { + StringBuilder buffer = new StringBuilder(repeat * str.length()); + for (int i = 0; i < repeat; i++) { + buffer.append(str); } return buffer.toString(); } @@ -1288,9 +1149,8 @@ public static String repeat( String str, int repeat ) * @return right padded String * @throws NullPointerException if str is null */ - public static String rightPad( String str, int size ) - { - return rightPad( str, size, " " ); + public static String rightPad(String str, int size) { + return rightPad(str, size, " "); } /** @@ -1308,12 +1168,10 @@ public static String rightPad( String str, int size ) * @throws NullPointerException if str or delim is null * @throws ArithmeticException if delim is the empty String */ - public static String rightPad( String str, int size, String delim ) - { - size = ( size - str.length() ) / delim.length(); - if ( size > 0 ) - { - str += repeat( delim, size ); + public static String rightPad(String str, int size, String delim) { + size = (size - str.length()) / delim.length(); + if (size > 0) { + str += repeat(delim, size); } return str; } @@ -1331,9 +1189,8 @@ public static String rightPad( String str, int size, String delim ) * @return left padded String * @throws NullPointerException if str or delim is null */ - public static String leftPad( String str, int size ) - { - return leftPad( str, size, " " ); + public static String leftPad(String str, int size) { + return leftPad(str, size, " "); } /** @@ -1346,12 +1203,10 @@ public static String leftPad( String str, int size ) * @throws NullPointerException if str or delim is null * @throws ArithmeticException if delim is the empty string */ - public static String leftPad( String str, int size, String delim ) - { - size = ( size - str.length() ) / delim.length(); - if ( size > 0 ) - { - str = repeat( delim, size ) + str; + public static String leftPad(String str, int size, String delim) { + size = (size - str.length()) / delim.length(); + if (size > 0) { + str = repeat(delim, size) + str; } return str; } @@ -1367,9 +1222,8 @@ public static String leftPad( String str, int size, String delim ) * @param str the String to remove whitespace from * @return the stripped String */ - public static String strip( String str ) - { - return strip( str, null ); + public static String strip(String str) { + return strip(str, null); } /** @@ -1384,10 +1238,9 @@ public static String strip( String str ) * @param delim the String to remove at start and end * @return the stripped String */ - public static String strip( String str, String delim ) - { - str = stripStart( str, delim ); - return stripEnd( str, delim ); + public static String strip(String str, String delim) { + str = stripStart(str, delim); + return stripEnd(str, delim); } /** @@ -1398,9 +1251,8 @@ public static String strip( String str, String delim ) * @param strs the Strings to remove whitespace from * @return the stripped Strings */ - public static String[] stripAll( String[] strs ) - { - return stripAll( strs, null ); + public static String[] stripAll(String[] strs) { + return stripAll(strs, null); } /** @@ -1412,17 +1264,14 @@ public static String[] stripAll( String[] strs ) * @param delimiter the String to remove at start and end * @return the stripped Strings */ - public static String[] stripAll( String[] strs, String delimiter ) - { - if ( ( strs == null ) || ( strs.length == 0 ) ) - { + public static String[] stripAll(String[] strs, String delimiter) { + if ((strs == null) || (strs.length == 0)) { return strs; } int sz = strs.length; String[] newArr = new String[sz]; - for ( int i = 0; i < sz; i++ ) - { - newArr[i] = strip( strs[i], delimiter ); + for (int i = 0; i < sz; i++) { + newArr[i] = strip(strs[i], delimiter); } return newArr; } @@ -1439,29 +1288,22 @@ public static String[] stripAll( String[] strs, String delimiter ) * @param strip the String to remove * @return the stripped String */ - public static String stripEnd( String str, String strip ) - { - if ( str == null ) - { + public static String stripEnd(String str, String strip) { + if (str == null) { return null; } int end = str.length(); - if ( strip == null ) - { - while ( ( end != 0 ) && Character.isWhitespace( str.charAt( end - 1 ) ) ) - { + if (strip == null) { + while ((end != 0) && Character.isWhitespace(str.charAt(end - 1))) { end--; } - } - else - { - while ( ( end != 0 ) && ( strip.indexOf( str.charAt( end - 1 ) ) != -1 ) ) - { + } else { + while ((end != 0) && (strip.indexOf(str.charAt(end - 1)) != -1)) { end--; } } - return str.substring( 0, end ); + return str.substring(0, end); } /** @@ -1476,10 +1318,8 @@ public static String stripEnd( String str, String strip ) * @param strip the String to remove * @return the stripped String */ - public static String stripStart( String str, String strip ) - { - if ( str == null ) - { + public static String stripStart(String str, String strip) { + if (str == null) { return null; } @@ -1487,21 +1327,16 @@ public static String stripStart( String str, String strip ) int sz = str.length(); - if ( strip == null ) - { - while ( ( start != sz ) && Character.isWhitespace( str.charAt( start ) ) ) - { + if (strip == null) { + while ((start != sz) && Character.isWhitespace(str.charAt(start))) { start++; } - } - else - { - while ( ( start != sz ) && ( strip.indexOf( str.charAt( start ) ) != -1 ) ) - { + } else { + while ((start != sz) && (strip.indexOf(str.charAt(start)) != -1)) { start++; } } - return str.substring( start ); + return str.substring(start); } // Case conversion @@ -1515,10 +1350,8 @@ public static String stripStart( String str, String strip ) * @param str the String to uppercase * @return the upper cased String */ - public static String upperCase( String str ) - { - if ( str == null ) - { + public static String upperCase(String str) { + if (str == null) { return null; } return str.toUpperCase(); @@ -1532,10 +1365,8 @@ public static String upperCase( String str ) * @param str the string to lowercase * @return the lower cased String */ - public static String lowerCase( String str ) - { - if ( str == null ) - { + public static String lowerCase(String str) { + if (str == null) { return null; } return str.toLowerCase(); @@ -1552,20 +1383,16 @@ public static String lowerCase( String str ) * @param str the String to uncapitalise * @return uncapitalised String */ - public static String uncapitalise( String str ) - { - if ( str == null ) - { + public static String uncapitalise(String str) { + if (str == null) { return null; - } - else if ( str.length() == 0 ) - { + } else if (str.length() == 0) { return ""; - } - else - { - return new StringBuilder( str.length() ).append( Character.toLowerCase( str.charAt( 0 ) ) ).append( str, 1, - str.length() ).toString(); + } else { + return new StringBuilder(str.length()) + .append(Character.toLowerCase(str.charAt(0))) + .append(str, 1, str.length()) + .toString(); } } @@ -1580,20 +1407,16 @@ else if ( str.length() == 0 ) * @param str the String to capitalise * @return capitalised String */ - public static String capitalise( String str ) - { - if ( str == null ) - { + public static String capitalise(String str) { + if (str == null) { return null; - } - else if ( str.length() == 0 ) - { + } else if (str.length() == 0) { return ""; - } - else - { - return new StringBuilder( str.length() ).append( Character.toTitleCase( str.charAt( 0 ) ) ).append( str, 1, - str.length() ).toString(); + } else { + return new StringBuilder(str.length()) + .append(Character.toTitleCase(str.charAt(0))) + .append(str, 1, str.length()) + .toString(); } } @@ -1611,47 +1434,34 @@ else if ( str.length() == 0 ) * @param str the String to swap the case of * @return the modified String */ - public static String swapCase( String str ) - { - if ( str == null ) - { + public static String swapCase(String str) { + if (str == null) { return null; } int sz = str.length(); - StringBuilder buffer = new StringBuilder( sz ); + StringBuilder buffer = new StringBuilder(sz); boolean whitespace = false; char ch; char tmp; - for ( int i = 0; i < sz; i++ ) - { - ch = str.charAt( i ); - if ( Character.isUpperCase( ch ) ) - { - tmp = Character.toLowerCase( ch ); - } - else if ( Character.isTitleCase( ch ) ) - { - tmp = Character.toLowerCase( ch ); - } - else if ( Character.isLowerCase( ch ) ) - { - if ( whitespace ) - { - tmp = Character.toTitleCase( ch ); - } - else - { - tmp = Character.toUpperCase( ch ); + for (int i = 0; i < sz; i++) { + ch = str.charAt(i); + if (Character.isUpperCase(ch)) { + tmp = Character.toLowerCase(ch); + } else if (Character.isTitleCase(ch)) { + tmp = Character.toLowerCase(ch); + } else if (Character.isLowerCase(ch)) { + if (whitespace) { + tmp = Character.toTitleCase(ch); + } else { + tmp = Character.toUpperCase(ch); } - } - else - { + } else { tmp = ch; } - buffer.append( tmp ); - whitespace = Character.isWhitespace( ch ); + buffer.append(tmp); + whitespace = Character.isWhitespace(ch); } return buffer.toString(); } @@ -1670,31 +1480,23 @@ else if ( Character.isLowerCase( ch ) ) * @param str the String to capitalise * @return capitalised String */ - public static String capitaliseAllWords( String str ) - { - if ( str == null ) - { + public static String capitaliseAllWords(String str) { + if (str == null) { return null; } int sz = str.length(); - StringBuilder buffer = new StringBuilder( sz ); + StringBuilder buffer = new StringBuilder(sz); boolean space = true; - for ( int i = 0; i < sz; i++ ) - { - char ch = str.charAt( i ); - if ( Character.isWhitespace( ch ) ) - { - buffer.append( ch ); + for (int i = 0; i < sz; i++) { + char ch = str.charAt(i); + if (Character.isWhitespace(ch)) { + buffer.append(ch); space = true; - } - else if ( space ) - { - buffer.append( Character.toTitleCase( ch ) ); + } else if (space) { + buffer.append(Character.toTitleCase(ch)); space = false; - } - else - { - buffer.append( ch ); + } else { + buffer.append(ch); } } return buffer.toString(); @@ -1714,31 +1516,23 @@ else if ( space ) * @param str the string to uncapitalise * @return uncapitalised string */ - public static String uncapitaliseAllWords( String str ) - { - if ( str == null ) - { + public static String uncapitaliseAllWords(String str) { + if (str == null) { return null; } int sz = str.length(); - StringBuilder buffer = new StringBuilder( sz ); + StringBuilder buffer = new StringBuilder(sz); boolean space = true; - for ( int i = 0; i < sz; i++ ) - { - char ch = str.charAt( i ); - if ( Character.isWhitespace( ch ) ) - { - buffer.append( ch ); + for (int i = 0; i < sz; i++) { + char ch = str.charAt(i); + if (Character.isWhitespace(ch)) { + buffer.append(ch); space = true; - } - else if ( space ) - { - buffer.append( Character.toLowerCase( ch ) ); + } else if (space) { + buffer.append(Character.toLowerCase(ch)); space = false; - } - else - { - buffer.append( ch ); + } else { + buffer.append(ch); } } return buffer.toString(); @@ -1760,9 +1554,8 @@ else if ( space ) * @return the String that was nested, or null * @throws NullPointerException if tag is null */ - public static String getNestedString( String str, String tag ) - { - return getNestedString( str, tag, tag ); + public static String getNestedString(String str, String tag) { + return getNestedString(str, tag, tag); } /** @@ -1776,19 +1569,15 @@ public static String getNestedString( String str, String tag ) * @return the String that was nested, or null * @throws NullPointerException if open or close is null */ - public static String getNestedString( String str, String open, String close ) - { - if ( str == null ) - { + public static String getNestedString(String str, String open, String close) { + if (str == null) { return null; } - int start = str.indexOf( open ); - if ( start != -1 ) - { - int end = str.indexOf( close, start + open.length() ); - if ( end != -1 ) - { - return str.substring( start + open.length(), end ); + int start = str.indexOf(open); + if (start != -1) { + int end = str.indexOf(close, start + open.length()); + if (end != -1) { + return str.substring(start + open.length(), end); } } return null; @@ -1807,20 +1596,16 @@ public static String getNestedString( String str, String open, String close ) * @return the number of occurrences, 0 if the String is null * @throws NullPointerException if sub is null */ - public static int countMatches( String str, String sub ) - { - if ( sub.equals( "" ) ) - { + public static int countMatches(String str, String sub) { + if (sub.equals("")) { return 0; } - if ( str == null ) - { + if (str == null) { return 0; } int count = 0; int idx = 0; - while ( ( idx = str.indexOf( sub, idx ) ) != -1 ) - { + while ((idx = str.indexOf(sub, idx)) != -1) { count++; idx += sub.length(); } @@ -1841,17 +1626,13 @@ public static int countMatches( String str, String sub ) * @param str the String to check * @return true if only contains letters, and is non-null */ - public static boolean isAlpha( String str ) - { - if ( str == null ) - { + public static boolean isAlpha(String str) { + if (str == null) { return false; } int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( Character.isLetter( str.charAt( i ) ) == false ) - { + for (int i = 0; i < sz; i++) { + if (Character.isLetter(str.charAt(i)) == false) { return false; } } @@ -1869,17 +1650,13 @@ public static boolean isAlpha( String str ) * @param str the String to check * @return true if only contains whitespace, and is non-null */ - public static boolean isWhitespace( String str ) - { - if ( str == null ) - { + public static boolean isWhitespace(String str) { + if (str == null) { return false; } int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( ( Character.isWhitespace( str.charAt( i ) ) == false ) ) - { + for (int i = 0; i < sz; i++) { + if ((Character.isWhitespace(str.charAt(i)) == false)) { return false; } } @@ -1897,17 +1674,13 @@ public static boolean isWhitespace( String str ) * @param str the String to check * @return true if only contains letters and space, and is non-null */ - public static boolean isAlphaSpace( String str ) - { - if ( str == null ) - { + public static boolean isAlphaSpace(String str) { + if (str == null) { return false; } int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( ( Character.isLetter( str.charAt( i ) ) == false ) && ( str.charAt( i ) != ' ' ) ) - { + for (int i = 0; i < sz; i++) { + if ((Character.isLetter(str.charAt(i)) == false) && (str.charAt(i) != ' ')) { return false; } } @@ -1925,17 +1698,13 @@ public static boolean isAlphaSpace( String str ) * @param str the String to check * @return true if only contains letters or digits, and is non-null */ - public static boolean isAlphanumeric( String str ) - { - if ( str == null ) - { + public static boolean isAlphanumeric(String str) { + if (str == null) { return false; } int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( Character.isLetterOrDigit( str.charAt( i ) ) == false ) - { + for (int i = 0; i < sz; i++) { + if (Character.isLetterOrDigit(str.charAt(i)) == false) { return false; } } @@ -1953,17 +1722,13 @@ public static boolean isAlphanumeric( String str ) * @param str the String to check * @return true if only contains letters, digits or space, and is non-null */ - public static boolean isAlphanumericSpace( String str ) - { - if ( str == null ) - { + public static boolean isAlphanumericSpace(String str) { + if (str == null) { return false; } int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( ( Character.isLetterOrDigit( str.charAt( i ) ) == false ) && ( str.charAt( i ) != ' ' ) ) - { + for (int i = 0; i < sz; i++) { + if ((Character.isLetterOrDigit(str.charAt(i)) == false) && (str.charAt(i) != ' ')) { return false; } } @@ -1981,17 +1746,13 @@ public static boolean isAlphanumericSpace( String str ) * @param str the String to check * @return true if only contains digits, and is non-null */ - public static boolean isNumeric( String str ) - { - if ( str == null ) - { + public static boolean isNumeric(String str) { + if (str == null) { return false; } int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( Character.isDigit( str.charAt( i ) ) == false ) - { + for (int i = 0; i < sz; i++) { + if (Character.isDigit(str.charAt(i)) == false) { return false; } } @@ -2009,17 +1770,13 @@ public static boolean isNumeric( String str ) * @param str the String to check * @return true if only contains digits or space, and is non-null */ - public static boolean isNumericSpace( String str ) - { - if ( str == null ) - { + public static boolean isNumericSpace(String str) { + if (str == null) { return false; } int sz = str.length(); - for ( int i = 0; i < sz; i++ ) - { - if ( ( Character.isDigit( str.charAt( i ) ) == false ) && ( str.charAt( i ) != ' ' ) ) - { + for (int i = 0; i < sz; i++) { + if ((Character.isDigit(str.charAt(i)) == false) && (str.charAt(i) != ' ')) { return false; } } @@ -2040,9 +1797,8 @@ public static boolean isNumericSpace( String str ) * @see Objects#toString(Object, String) */ @Deprecated - public static String defaultString( Object obj ) - { - return defaultString( obj, "" ); + public static String defaultString(Object obj) { + return defaultString(obj, ""); } /** @@ -2057,9 +1813,8 @@ public static String defaultString( Object obj ) * @see Objects#toString(Object, String) */ @Deprecated - public static String defaultString( Object obj, String defaultString ) - { - return Objects.toString( obj, defaultString ); + public static String defaultString(Object obj, String defaultString) { + return Objects.toString(obj, defaultString); } // Reversing @@ -2076,13 +1831,11 @@ public static String defaultString( Object obj, String defaultString ) * @param str the String to reverse * @return the reversed String */ - public static String reverse( String str ) - { - if ( str == null ) - { + public static String reverse(String str) { + if (str == null) { return null; } - return new StringBuilder( str ).reverse().toString(); + return new StringBuilder(str).reverse().toString(); } /** @@ -2098,13 +1851,12 @@ public static String reverse( String str ) * @param delimiter the delimiter to use * @return the reversed String */ - public static String reverseDelimitedString( String str, String delimiter ) - { + public static String reverseDelimitedString(String str, String delimiter) { // could implement manually, but simple way is to reuse other, // probably slower, methods. - String[] strs = split( str, delimiter ); - reverseArray( strs ); - return join( strs, delimiter ); + String[] strs = split(str, delimiter); + reverseArray(strs); + return join(strs, delimiter); } /** @@ -2117,14 +1869,12 @@ public static String reverseDelimitedString( String str, String delimiter ) * * @param array the array to reverse */ - private static void reverseArray( Object[] array ) - { + private static void reverseArray(Object[] array) { int i = 0; int j = array.length - 1; Object tmp; - while ( j > i ) - { + while (j > i) { tmp = array[j]; array[j] = array[i]; array[i] = tmp; @@ -2147,9 +1897,8 @@ private static void reverseArray( Object[] array ) * @param s string * @param maxWidth maximum length of result string **/ - public static String abbreviate( String s, int maxWidth ) - { - return abbreviate( s, 0, maxWidth ); + public static String abbreviate(String s, int maxWidth) { + return abbreviate(s, 0, maxWidth); } /** @@ -2162,37 +1911,29 @@ public static String abbreviate( String s, int maxWidth ) * @param offset left edge of source string * @param maxWidth maximum length of result string **/ - public static String abbreviate( String s, int offset, int maxWidth ) - { - if ( maxWidth < 4 ) - { - throw new IllegalArgumentException( "Minimum abbreviation width is 4" ); - } - if ( s.length() <= maxWidth ) - { + public static String abbreviate(String s, int offset, int maxWidth) { + if (maxWidth < 4) { + throw new IllegalArgumentException("Minimum abbreviation width is 4"); + } + if (s.length() <= maxWidth) { return s; } - if ( offset > s.length() ) - { + if (offset > s.length()) { offset = s.length(); } - if ( ( s.length() - offset ) < ( maxWidth - 3 ) ) - { - offset = s.length() - ( maxWidth - 3 ); + if ((s.length() - offset) < (maxWidth - 3)) { + offset = s.length() - (maxWidth - 3); } - if ( offset <= 4 ) - { - return s.substring( 0, maxWidth - 3 ) + "..."; + if (offset <= 4) { + return s.substring(0, maxWidth - 3) + "..."; } - if ( maxWidth < 7 ) - { - throw new IllegalArgumentException( "Minimum abbreviation width with offset is 7" ); + if (maxWidth < 7) { + throw new IllegalArgumentException("Minimum abbreviation width with offset is 7"); } - if ( ( offset + ( maxWidth - 3 ) ) < s.length() ) - { - return "..." + abbreviate( s.substring( offset ), maxWidth - 3 ); + if ((offset + (maxWidth - 3)) < s.length()) { + return "..." + abbreviate(s.substring(offset), maxWidth - 3); } - return "..." + s.substring( s.length() - ( maxWidth - 3 ) ); + return "..." + s.substring(s.length() - (maxWidth - 3)); } // Difference @@ -2207,14 +1948,12 @@ public static String abbreviate( String s, int offset, int maxWidth ) * @param s2 string * @return the portion of s2 where it differs from s1; returns the empty string ("") if they are equal **/ - public static String difference( String s1, String s2 ) - { - int at = differenceAt( s1, s2 ); - if ( at == -1 ) - { + public static String difference(String s1, String s2) { + int at = differenceAt(s1, s2); + if (at == -1) { return ""; } - return s2.substring( at ); + return s2.substring(at); } /** @@ -2226,103 +1965,88 @@ public static String difference( String s1, String s2 ) * @param s2 string * @return the index where s2 and s1 begin to differ; -1 if they are equal **/ - public static int differenceAt( String s1, String s2 ) - { + public static int differenceAt(String s1, String s2) { int i; - for ( i = 0; ( i < s1.length() ) && ( i < s2.length() ); ++i ) - { - if ( s1.charAt( i ) != s2.charAt( i ) ) - { + for (i = 0; (i < s1.length()) && (i < s2.length()); ++i) { + if (s1.charAt(i) != s2.charAt(i)) { break; } } - if ( ( i < s2.length() ) || ( i < s1.length() ) ) - { + if ((i < s2.length()) || (i < s1.length())) { return i; } return -1; } - public static String interpolate( String text, Map namespace ) - { + public static String interpolate(String text, Map namespace) { Iterator keys = namespace.keySet().iterator(); - while ( keys.hasNext() ) - { + while (keys.hasNext()) { String key = keys.next().toString(); - Object obj = namespace.get( key ); + Object obj = namespace.get(key); - if ( obj == null ) - { - throw new NullPointerException( "The value of the key '" + key + "' is null." ); + if (obj == null) { + throw new NullPointerException("The value of the key '" + key + "' is null."); } String value = obj.toString(); - text = replace( text, "${" + key + "}", value ); + text = replace(text, "${" + key + "}", value); - if ( !key.contains( " " ) ) - { - text = replace( text, "$" + key, value ); + if (!key.contains(" ")) { + text = replace(text, "$" + key, value); } } return text; } - public static String removeAndHump( String data, String replaceThis ) - { + public static String removeAndHump(String data, String replaceThis) { String temp; StringBuilder out = new StringBuilder(); temp = data; - StringTokenizer st = new StringTokenizer( temp, replaceThis ); + StringTokenizer st = new StringTokenizer(temp, replaceThis); - while ( st.hasMoreTokens() ) - { + while (st.hasMoreTokens()) { String element = (String) st.nextElement(); - out.append( capitalizeFirstLetter( element ) ); + out.append(capitalizeFirstLetter(element)); } return out.toString(); } - public static String capitalizeFirstLetter( String data ) - { - char firstLetter = Character.toTitleCase( data.substring( 0, 1 ).charAt( 0 ) ); + public static String capitalizeFirstLetter(String data) { + char firstLetter = Character.toTitleCase(data.substring(0, 1).charAt(0)); - String restLetters = data.substring( 1 ); + String restLetters = data.substring(1); return firstLetter + restLetters; } - public static String lowercaseFirstLetter( String data ) - { - char firstLetter = Character.toLowerCase( data.substring( 0, 1 ).charAt( 0 ) ); + public static String lowercaseFirstLetter(String data) { + char firstLetter = Character.toLowerCase(data.substring(0, 1).charAt(0)); - String restLetters = data.substring( 1 ); + String restLetters = data.substring(1); return firstLetter + restLetters; } - public static String addAndDeHump( String view ) - { + public static String addAndDeHump(String view) { StringBuilder sb = new StringBuilder(); - for ( int i = 0; i < view.length(); i++ ) - { - if ( ( i != 0 ) && Character.isUpperCase( view.charAt( i ) ) ) - { - sb.append( '-' ); + for (int i = 0; i < view.length(); i++) { + if ((i != 0) && Character.isUpperCase(view.charAt(i))) { + sb.append('-'); } - sb.append( view.charAt( i ) ); + sb.append(view.charAt(i)); } - return sb.toString().trim().toLowerCase( Locale.ENGLISH ); + return sb.toString().trim().toLowerCase(Locale.ENGLISH); } /** @@ -2344,9 +2068,8 @@ public static String addAndDeHump( String view ) * @since 1.5.1 * @see #quoteAndEscape(String, char, char[], char[], char, boolean) */ - public static String quoteAndEscape( String source, char quoteChar ) - { - return quoteAndEscape( source, quoteChar, new char[] { quoteChar }, new char[] { ' ' }, '\\', false ); + public static String quoteAndEscape(String source, char quoteChar) { + return quoteAndEscape(source, quoteChar, new char[] {quoteChar}, new char[] {' '}, '\\', false); } /** @@ -2361,9 +2084,8 @@ public static String quoteAndEscape( String source, char quoteChar ) * @since 1.5.1 * @see #quoteAndEscape(String, char, char[], char[], char, boolean) */ - public static String quoteAndEscape( String source, char quoteChar, char[] quotingTriggers ) - { - return quoteAndEscape( source, quoteChar, new char[] { quoteChar }, quotingTriggers, '\\', false ); + public static String quoteAndEscape(String source, char quoteChar, char[] quotingTriggers) { + return quoteAndEscape(source, quoteChar, new char[] {quoteChar}, quotingTriggers, '\\', false); } /** @@ -2376,10 +2098,9 @@ public static String quoteAndEscape( String source, char quoteChar, char[] quoti * @since 1.5.1 * @see #quoteAndEscape(String, char, char[], char[], char, boolean) */ - public static String quoteAndEscape( String source, char quoteChar, final char[] escapedChars, char escapeChar, - boolean force ) - { - return quoteAndEscape( source, quoteChar, escapedChars, new char[] { ' ' }, escapeChar, force ); + public static String quoteAndEscape( + String source, char quoteChar, final char[] escapedChars, char escapeChar, boolean force) { + return quoteAndEscape(source, quoteChar, escapedChars, new char[] {' '}, escapeChar, force); } /** @@ -2392,10 +2113,14 @@ public static String quoteAndEscape( String source, char quoteChar, final char[] * @return the String quoted and escaped * @since 1.5.1 */ - public static String quoteAndEscape( String source, char quoteChar, final char[] escapedChars, - final char[] quotingTriggers, char escapeChar, boolean force ) - { - return quoteAndEscape( source, quoteChar, escapedChars, quotingTriggers, escapeChar + "%s", force ); + public static String quoteAndEscape( + String source, + char quoteChar, + final char[] escapedChars, + final char[] quotingTriggers, + char escapeChar, + boolean force) { + return quoteAndEscape(source, quoteChar, escapedChars, quotingTriggers, escapeChar + "%s", force); } /** @@ -2408,45 +2133,40 @@ public static String quoteAndEscape( String source, char quoteChar, final char[] * @return the String quoted and escaped * @since 3.0.4 */ - public static String quoteAndEscape( String source, char quoteChar, final char[] escapedChars, - final char[] quotingTriggers, String escapePattern, boolean force ) - { - if ( source == null ) - { + public static String quoteAndEscape( + String source, + char quoteChar, + final char[] escapedChars, + final char[] quotingTriggers, + String escapePattern, + boolean force) { + if (source == null) { return null; } - if ( !force && source.startsWith( Character.toString( quoteChar ) ) - && source.endsWith( Character.toString( quoteChar ) ) ) - { + if (!force + && source.startsWith(Character.toString(quoteChar)) + && source.endsWith(Character.toString(quoteChar))) { return source; } - String escaped = escape( source, escapedChars, escapePattern ); + String escaped = escape(source, escapedChars, escapePattern); boolean quote = false; - if ( force ) - { + if (force) { quote = true; - } - else if ( !escaped.equals( source ) ) - { + } else if (!escaped.equals(source)) { quote = true; - } - else - { - for ( char quotingTrigger : quotingTriggers ) - { - if ( escaped.indexOf( quotingTrigger ) > -1 ) - { + } else { + for (char quotingTrigger : quotingTriggers) { + if (escaped.indexOf(quotingTrigger) > -1) { quote = true; break; } } } - if ( quote ) - { + if (quote) { return quoteChar + escaped + quoteChar; } @@ -2460,9 +2180,8 @@ else if ( !escaped.equals( source ) ) * @return the String escaped * @since 1.5.1 */ - public static String escape( String source, final char[] escapedChars, char escapeChar ) - { - return escape( source, escapedChars, escapeChar + "%s" ); + public static String escape(String source, final char[] escapedChars, char escapeChar) { + return escape(source, escapedChars, escapeChar + "%s"); } /** @@ -2472,31 +2191,25 @@ public static String escape( String source, final char[] escapedChars, char esca * @return the String escaped * @since 3.0.4 */ - public static String escape( String source, final char[] escapedChars, String escapePattern ) - { - if ( source == null ) - { + public static String escape(String source, final char[] escapedChars, String escapePattern) { + if (source == null) { return null; } char[] eqc = new char[escapedChars.length]; - System.arraycopy( escapedChars, 0, eqc, 0, escapedChars.length ); - Arrays.sort( eqc ); + System.arraycopy(escapedChars, 0, eqc, 0, escapedChars.length); + Arrays.sort(eqc); - StringBuilder buffer = new StringBuilder( source.length() ); + StringBuilder buffer = new StringBuilder(source.length()); - for ( int i = 0; i < source.length(); i++ ) - { - final char c = source.charAt( i ); - int result = Arrays.binarySearch( eqc, c ); + for (int i = 0; i < source.length(); i++) { + final char c = source.charAt(i); + int result = Arrays.binarySearch(eqc, c); - if ( result > -1 ) - { - buffer.append( String.format( escapePattern, c ) ); - } - else - { - buffer.append( c ); + if (result > -1) { + buffer.append(String.format(escapePattern, c)); + } else { + buffer.append(c); } } @@ -2510,18 +2223,15 @@ public static String escape( String source, final char[] escapedChars, String es * @return a string with unique whitespace. * @since 1.5.7 */ - public static String removeDuplicateWhitespace( String s ) - { + public static String removeDuplicateWhitespace(String s) { StringBuilder result = new StringBuilder(); int length = s.length(); boolean isPreviousWhiteSpace = false; - for ( int i = 0; i < length; i++ ) - { - char c = s.charAt( i ); - boolean thisCharWhiteSpace = Character.isWhitespace( c ); - if ( !( isPreviousWhiteSpace && thisCharWhiteSpace ) ) - { - result.append( c ); + for (int i = 0; i < length; i++) { + char c = s.charAt(i); + boolean thisCharWhiteSpace = Character.isWhitespace(c); + if (!(isPreviousWhiteSpace && thisCharWhiteSpace)) { + result.append(c); } isPreviousWhiteSpace = thisCharWhiteSpace; } @@ -2536,9 +2246,8 @@ public static String removeDuplicateWhitespace( String s ) * @see #unifyLineSeparators(String, String) * @since 1.5.7 */ - public static String unifyLineSeparators( String s ) - { - return unifyLineSeparators( s, System.getProperty( "line.separator" ) ); + public static String unifyLineSeparators(String s) { + return unifyLineSeparators(s, System.getProperty("line.separator")); } /** @@ -2550,44 +2259,33 @@ public static String unifyLineSeparators( String s ) * @throws IllegalArgumentException if ls is not '\n', '\r' and '\r\n' characters. * @since 1.5.7 */ - public static String unifyLineSeparators( String s, String ls ) - { - if ( s == null ) - { + public static String unifyLineSeparators(String s, String ls) { + if (s == null) { return null; } - if ( ls == null ) - { - ls = System.getProperty( "line.separator" ); + if (ls == null) { + ls = System.getProperty("line.separator"); } - if ( !( ls.equals( "\n" ) || ls.equals( "\r" ) || ls.equals( "\r\n" ) ) ) - { - throw new IllegalArgumentException( "Requested line separator is invalid." ); + if (!(ls.equals("\n") || ls.equals("\r") || ls.equals("\r\n"))) { + throw new IllegalArgumentException("Requested line separator is invalid."); } int length = s.length(); - StringBuilder buffer = new StringBuilder( length ); - for ( int i = 0; i < length; i++ ) - { - if ( s.charAt( i ) == '\r' ) - { - if ( ( i + 1 ) < length && s.charAt( i + 1 ) == '\n' ) - { + StringBuilder buffer = new StringBuilder(length); + for (int i = 0; i < length; i++) { + if (s.charAt(i) == '\r') { + if ((i + 1) < length && s.charAt(i + 1) == '\n') { i++; } - buffer.append( ls ); - } - else if ( s.charAt( i ) == '\n' ) - { - buffer.append( ls ); - } - else - { - buffer.append( s.charAt( i ) ); + buffer.append(ls); + } else if (s.charAt(i) == '\n') { + buffer.append(ls); + } else { + buffer.append(s.charAt(i)); } } @@ -2615,13 +2313,11 @@ else if ( s.charAt( i ) == '\n' ) * @return true if the String contains the search character, false if not or null string input * @since 1.5.7 */ - public static boolean contains( String str, char searchChar ) - { - if ( isEmpty( str ) ) - { + public static boolean contains(String str, char searchChar) { + if (isEmpty(str)) { return false; } - return str.indexOf( searchChar ) >= 0; + return str.indexOf(searchChar) >= 0; } /** @@ -2647,12 +2343,10 @@ public static boolean contains( String str, char searchChar ) * @return true if the String contains the search String, false if not or null string input * @since 1.5.7 */ - public static boolean contains( String str, String searchStr ) - { - if ( str == null || searchStr == null ) - { + public static boolean contains(String str, String searchStr) { + if (str == null || searchStr == null) { return false; } - return str.contains( searchStr ); + return str.contains(searchStr); } } diff --git a/src/main/java/org/codehaus/plexus/util/SweeperPool.java b/src/main/java/org/codehaus/plexus/util/SweeperPool.java index 0a2a97a4..2070b9b8 100644 --- a/src/main/java/org/codehaus/plexus/util/SweeperPool.java +++ b/src/main/java/org/codehaus/plexus/util/SweeperPool.java @@ -25,8 +25,7 @@ * @author Bert van Brakel * */ -public class SweeperPool -{ +public class SweeperPool { /***/ private static final boolean DEBUG = false; @@ -66,41 +65,34 @@ public class SweeperPool * @param intialCapacity the intial capacity *

    Any value less than 0 is automatically converted to 0

    */ - public SweeperPool( int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize ) - { + public SweeperPool(int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize) { super(); - this.maxSize = saneConvert( maxSize ); - this.minSize = saneConvert( minSize ); - this.triggerSize = saneConvert( triggerSize ); - pooledObjects = new ArrayList( intialCapacity ); + this.maxSize = saneConvert(maxSize); + this.minSize = saneConvert(minSize); + this.triggerSize = saneConvert(triggerSize); + pooledObjects = new ArrayList(intialCapacity); // only run a sweeper if sweep interval is positive - if ( sweepInterval > 0 ) - { - sweeper = new Sweeper( this, sweepInterval ); + if (sweepInterval > 0) { + sweeper = new Sweeper(this, sweepInterval); sweeper.start(); } } - private int saneConvert( int value ) - { - return Math.max( value, 0 ); + private int saneConvert(int value) { + return Math.max(value, 0); } /** * Return the pooled object * @return first available object from the pool */ - public synchronized Object get() - { - if ( ( pooledObjects.size() == 0 ) || shuttingDown ) - { + public synchronized Object get() { + if ((pooledObjects.size() == 0) || shuttingDown) { return null; - } - else - { - Object obj = pooledObjects.remove( 0 ); - objectRetrieved( obj ); + } else { + Object obj = pooledObjects.remove(0); + objectRetrieved(obj); // used.add(obj); return obj; @@ -113,20 +105,16 @@ public synchronized Object get() * @param obj the object to pool. Can be null. * @return true if the object was added to the pool, false if it was disposed or null */ - public synchronized boolean put( Object obj ) - { - objectAdded( obj ); + public synchronized boolean put(Object obj) { + objectAdded(obj); - if ( ( obj != null ) && ( pooledObjects.size() < maxSize ) && ( shuttingDown == false ) ) - { - pooledObjects.add( obj ); + if ((obj != null) && (pooledObjects.size() < maxSize) && (shuttingDown == false)) { + pooledObjects.add(obj); return true; - } - else if ( obj != null ) - { + } else if (obj != null) { // no longer need the object, so dispose it - objectDisposed( obj ); + objectDisposed(obj); } return false; @@ -137,41 +125,33 @@ else if ( obj != null ) * * @return the number of pooled objects */ - public synchronized int getSize() - { + public synchronized int getSize() { return pooledObjects.size(); } /** * Dispose of this pool. Stops the sweeper and disposes each object in the pool */ - public void dispose() - { + public void dispose() { shuttingDown = true; - if ( sweeper != null ) - { + if (sweeper != null) { sweeper.stop(); - try - { + try { sweeper.join(); - } - catch ( InterruptedException e ) - { - System.err.println( "Unexpected exception occurred: " ); + } catch (InterruptedException e) { + System.err.println("Unexpected exception occurred: "); e.printStackTrace(); } } - synchronized ( this ) - { + synchronized (this) { // use an array here as objects may still be being put back in the pool // and we don't want to throw a ConcurrentModificationException Object[] objects = pooledObjects.toArray(); - for ( Object object : objects ) - { - objectDisposed( object ); + for (Object object : objects) { + objectDisposed(object); } pooledObjects.clear(); @@ -183,16 +163,13 @@ public void dispose() * * @return true if the pool has been disposed, false otherwise */ - boolean isDisposed() - { - if ( !shuttingDown ) - { + boolean isDisposed() { + if (!shuttingDown) { return false; } // A null sweeper means one was never started. - if ( sweeper == null ) - { + if (sweeper == null) { return true; } @@ -202,14 +179,11 @@ boolean isDisposed() /** * Trim the pool down to min size */ - public synchronized void trim() - { - if ( ( ( triggerSize > 0 ) && ( pooledObjects.size() >= triggerSize ) ) - || ( ( maxSize > 0 ) && ( pooledObjects.size() >= maxSize ) ) ) - { - while ( pooledObjects.size() > minSize ) - { - objectDisposed( pooledObjects.remove( 0 ) ); + public synchronized void trim() { + if (((triggerSize > 0) && (pooledObjects.size() >= triggerSize)) + || ((maxSize > 0) && (pooledObjects.size() >= maxSize))) { + while (pooledObjects.size() > minSize) { + objectDisposed(pooledObjects.remove(0)); } } } @@ -220,18 +194,14 @@ public synchronized void trim() * * @param obj the Object */ - public void objectDisposed( Object obj ) - { - } + public void objectDisposed(Object obj) {} /** * Override this to be notified of object addition. Called before object is to be added. * * @param obj the Object */ - public void objectAdded( Object obj ) - { - } + public void objectAdded(Object obj) {} /** * Override this to be notified of object retrieval. Called after object removed from the pool, but before returned @@ -239,18 +209,14 @@ public void objectAdded( Object obj ) * * @param obj the Object */ - public void objectRetrieved( Object obj ) - { - } + public void objectRetrieved(Object obj) {} /** * Periodically at sweepInterval goes through and tests if the pool should be trimmed. * * @author bert */ - private static class Sweeper - implements Runnable - { + private static class Sweeper implements Runnable { private final transient SweeperPool pool; private transient boolean service = false; @@ -262,8 +228,7 @@ private static class Sweeper /** * */ - public Sweeper( SweeperPool pool, int sweepInterval ) - { + public Sweeper(SweeperPool pool, int sweepInterval) { super(); this.sweepInterval = sweepInterval; this.pool = pool; @@ -275,72 +240,56 @@ public Sweeper( SweeperPool pool, int sweepInterval ) * @see java.lang.Runnable#run() */ @Override - public void run() - { - debug( "started" ); - - if ( sweepInterval > 0 ) - { - synchronized ( this ) - { - while ( service ) - { - try - { + public void run() { + debug("started"); + + if (sweepInterval > 0) { + synchronized (this) { + while (service) { + try { // wait specified number of seconds // before running next sweep - wait( sweepInterval * 1000 ); - } - catch ( InterruptedException e ) - { + wait(sweepInterval * 1000); + } catch (InterruptedException e) { } runSweep(); } } } - debug( "stopped" ); + debug("stopped"); } - public void start() - { - if ( !service ) - { + public void start() { + if (!service) { service = true; - t = new Thread( this ); - t.setName( "Sweeper" ); + t = new Thread(this); + t.setName("Sweeper"); t.start(); } } - public synchronized void stop() - { + public synchronized void stop() { service = false; notifyAll(); } - void join() - throws InterruptedException - { + void join() throws InterruptedException { t.join(); } - boolean hasStopped() - { + boolean hasStopped() { return !service && !t.isAlive(); } - private final void debug( String msg ) - { - if ( DEBUG ) - { - System.err.println( this + ":" + msg ); + private final void debug(String msg) { + if (DEBUG) { + System.err.println(this + ":" + msg); } } - private void runSweep() - { - debug( "runningSweep. time=" + System.currentTimeMillis() ); + private void runSweep() { + debug("runningSweep. time=" + System.currentTimeMillis()); pool.trim(); } } diff --git a/src/main/java/org/codehaus/plexus/util/TypeFormat.java b/src/main/java/org/codehaus/plexus/util/TypeFormat.java index f950003b..e4fc64b7 100644 --- a/src/main/java/org/codehaus/plexus/util/TypeFormat.java +++ b/src/main/java/org/codehaus/plexus/util/TypeFormat.java @@ -16,7 +16,7 @@ *

    * For class instances, formatting is typically performed using specialized java.text.Format * (Locale sensitive) and/or using conventional methods (class sensitive). For example: - * + * *
      *     public class Foo {
      *         public static Foo valueOf(CharSequence chars) {...} // Parses.
    @@ -33,21 +33,20 @@
      * @author Jean-Marie Dautelle
      * @version 4.6, June 22, 2003
      */
    -public final class TypeFormat
    -{
    +public final class TypeFormat {
     
         /**
          * Holds the characters used to represent numbers.
          */
    -    private final static char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e',
    -        'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
    +    private static final char[] DIGITS = {
    +        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
    +        'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
    +    };
     
         /**
          * Default constructor (forbids derivation).
          */
    -    private TypeFormat()
    -    {
    -    }
    +    private TypeFormat() {}
     
         /**
          * Searches for a particular sequence within a character sequence (general purpose parsing function).
    @@ -58,38 +57,29 @@ private TypeFormat()
          * @return the index in the range [fromIndex, chars.length()-pattern.length()] or -1 if
          *         the character sequence is not found.
          */
    -    public static int indexOf( CharSequence pattern, CharSequence chars, int fromIndex )
    -    {
    +    public static int indexOf(CharSequence pattern, CharSequence chars, int fromIndex) {
             int patternLength = pattern.length();
    -        fromIndex = Math.max( 0, fromIndex );
    -        if ( patternLength != 0 )
    -        { // At least one character to search for.
    -            char firstChar = pattern.charAt( 0 );
    +        fromIndex = Math.max(0, fromIndex);
    +        if (patternLength != 0) { // At least one character to search for.
    +            char firstChar = pattern.charAt(0);
                 int last = chars.length() - patternLength;
    -            for ( int i = fromIndex; i <= last; i++ )
    -            {
    -                if ( chars.charAt( i ) == firstChar )
    -                {
    +            for (int i = fromIndex; i <= last; i++) {
    +                if (chars.charAt(i) == firstChar) {
                         boolean match = true;
    -                    for ( int j = 1; j < patternLength; j++ )
    -                    {
    -                        if ( chars.charAt( i + j ) != pattern.charAt( j ) )
    -                        {
    +                    for (int j = 1; j < patternLength; j++) {
    +                        if (chars.charAt(i + j) != pattern.charAt(j)) {
                                 match = false;
                                 break;
                             }
                         }
    -                    if ( match )
    -                    {
    +                    if (match) {
                             return i;
                         }
                     }
                 }
                 return -1;
    -        }
    -        else
    -        {
    -            return Math.min( 0, fromIndex );
    +        } else {
    +            return Math.min(0, fromIndex);
             }
         }
     
    @@ -99,12 +89,12 @@ public static int indexOf( CharSequence pattern, CharSequence chars, int fromInd
          * @param chars the character sequence to parse.
          * @return the corresponding boolean.
          */
    -    public static boolean parseBoolean( CharSequence chars )
    -    {
    -        return ( chars.length() == 4 ) && ( chars.charAt( 0 ) == 't' || chars.charAt( 0 ) == 'T' )
    -            && ( chars.charAt( 1 ) == 'r' || chars.charAt( 1 ) == 'R' )
    -            && ( chars.charAt( 2 ) == 'u' || chars.charAt( 2 ) == 'U' )
    -            && ( chars.charAt( 3 ) == 'e' || chars.charAt( 3 ) == 'E' );
    +    public static boolean parseBoolean(CharSequence chars) {
    +        return (chars.length() == 4)
    +                && (chars.charAt(0) == 't' || chars.charAt(0) == 'T')
    +                && (chars.charAt(1) == 'r' || chars.charAt(1) == 'R')
    +                && (chars.charAt(2) == 'u' || chars.charAt(2) == 'U')
    +                && (chars.charAt(3) == 'e' || chars.charAt(3) == 'E');
         }
     
         /**
    @@ -115,9 +105,8 @@ public static boolean parseBoolean( CharSequence chars )
          * @throws NumberFormatException if the specified character sequence does not contain a parsable short.
          * @see #parseShort(CharSequence, int)
          */
    -    public static short parseShort( CharSequence chars )
    -    {
    -        return parseShort( chars, 10 );
    +    public static short parseShort(CharSequence chars) {
    +        return parseShort(chars, 10);
         }
     
         /**
    @@ -130,36 +119,29 @@ public static short parseShort( CharSequence chars )
          * @return the corresponding short.
          * @throws NumberFormatException if the specified character sequence does not contain a parsable short.
          */
    -    public static short parseShort( CharSequence chars, int radix )
    -    {
    -        try
    -        {
    -            boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
    +    public static short parseShort(CharSequence chars, int radix) {
    +        try {
    +            boolean isNegative = (chars.charAt(0) == '-') ? true : false;
                 int result = 0;
    -            int limit = ( isNegative ) ? Short.MIN_VALUE : -Short.MAX_VALUE;
    +            int limit = (isNegative) ? Short.MIN_VALUE : -Short.MAX_VALUE;
                 int multmin = limit / radix;
                 int length = chars.length();
    -            int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
    -            while ( true )
    -            {
    -                int digit = Character.digit( chars.charAt( i ), radix );
    +            int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
    +            while (true) {
    +                int digit = Character.digit(chars.charAt(i), radix);
                     int tmp = result * radix;
    -                if ( ( digit < 0 ) || ( result < multmin ) || ( tmp < limit + digit ) )
    -                { // Overflow.
    -                    throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    +                if ((digit < 0) || (result < multmin) || (tmp < limit + digit)) { // Overflow.
    +                    throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
                     }
                     // Accumulates negatively.
                     result = tmp - digit;
    -                if ( ++i >= length )
    -                {
    +                if (++i >= length) {
                         break;
                     }
                 }
    -            return (short) ( isNegative ? result : -result );
    -        }
    -        catch ( IndexOutOfBoundsException e )
    -        {
    -            throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    +            return (short) (isNegative ? result : -result);
    +        } catch (IndexOutOfBoundsException e) {
    +            throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
             }
         }
     
    @@ -171,9 +153,8 @@ public static short parseShort( CharSequence chars, int radix )
          * @throws NumberFormatException if the specified character sequence does not contain a parsable int.
          * @see #parseInt(CharSequence, int)
          */
    -    public static int parseInt( CharSequence chars )
    -    {
    -        return parseInt( chars, 10 );
    +    public static int parseInt(CharSequence chars) {
    +        return parseInt(chars, 10);
         }
     
         /**
    @@ -186,36 +167,29 @@ public static int parseInt( CharSequence chars )
          * @return the corresponding int.
          * @throws NumberFormatException if the specified character sequence does not contain a parsable int.
          */
    -    public static int parseInt( CharSequence chars, int radix )
    -    {
    -        try
    -        {
    -            boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
    +    public static int parseInt(CharSequence chars, int radix) {
    +        try {
    +            boolean isNegative = (chars.charAt(0) == '-') ? true : false;
                 int result = 0;
    -            int limit = ( isNegative ) ? Integer.MIN_VALUE : -Integer.MAX_VALUE;
    +            int limit = (isNegative) ? Integer.MIN_VALUE : -Integer.MAX_VALUE;
                 int multmin = limit / radix;
                 int length = chars.length();
    -            int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
    -            while ( true )
    -            {
    -                int digit = Character.digit( chars.charAt( i ), radix );
    +            int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
    +            while (true) {
    +                int digit = Character.digit(chars.charAt(i), radix);
                     int tmp = result * radix;
    -                if ( ( digit < 0 ) || ( result < multmin ) || ( tmp < limit + digit ) )
    -                { // Overflow.
    -                    throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    +                if ((digit < 0) || (result < multmin) || (tmp < limit + digit)) { // Overflow.
    +                    throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
                     }
                     // Accumulates negatively to avoid surprises near MAX_VALUE
                     result = tmp - digit;
    -                if ( ++i >= length )
    -                {
    +                if (++i >= length) {
                         break;
                     }
                 }
                 return isNegative ? result : -result;
    -        }
    -        catch ( IndexOutOfBoundsException e )
    -        {
    -            throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    +        } catch (IndexOutOfBoundsException e) {
    +            throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
             }
         }
     
    @@ -227,9 +201,8 @@ public static int parseInt( CharSequence chars, int radix )
          * @throws NumberFormatException if the specified character sequence does not contain a parsable long.
          * @see #parseLong(CharSequence, int)
          */
    -    public static long parseLong( CharSequence chars )
    -    {
    -        return parseLong( chars, 10 );
    +    public static long parseLong(CharSequence chars) {
    +        return parseLong(chars, 10);
         }
     
         /**
    @@ -242,36 +215,29 @@ public static long parseLong( CharSequence chars )
          * @return the corresponding long.
          * @throws NumberFormatException if the specified character sequence does not contain a parsable long.
          */
    -    public static long parseLong( CharSequence chars, int radix )
    -    {
    -        try
    -        {
    -            boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
    +    public static long parseLong(CharSequence chars, int radix) {
    +        try {
    +            boolean isNegative = (chars.charAt(0) == '-') ? true : false;
                 long result = 0;
    -            long limit = ( isNegative ) ? Long.MIN_VALUE : -Long.MAX_VALUE;
    +            long limit = (isNegative) ? Long.MIN_VALUE : -Long.MAX_VALUE;
                 long multmin = limit / radix;
                 int length = chars.length();
    -            int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
    -            while ( true )
    -            {
    -                int digit = Character.digit( chars.charAt( i ), radix );
    +            int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
    +            while (true) {
    +                int digit = Character.digit(chars.charAt(i), radix);
                     long tmp = result * radix;
    -                if ( ( digit < 0 ) || ( result < multmin ) || ( tmp < limit + digit ) )
    -                { // Overflow.
    -                    throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    +                if ((digit < 0) || (result < multmin) || (tmp < limit + digit)) { // Overflow.
    +                    throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
                     }
                     // Accumulates negatively to avoid surprises near MAX_VALUE
                     result = tmp - digit;
    -                if ( ++i >= length )
    -                {
    +                if (++i >= length) {
                         break;
                     }
                 }
                 return isNegative ? result : -result;
    -        }
    -        catch ( IndexOutOfBoundsException e )
    -        {
    -            throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    +        } catch (IndexOutOfBoundsException e) {
    +            throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
             }
         }
     
    @@ -282,16 +248,12 @@ public static long parseLong( CharSequence chars, int radix )
          * @return the float number represented by the specified character sequence.
          * @throws NumberFormatException if the character sequence does not contain a parsable float.
          */
    -    public static float parseFloat( CharSequence chars )
    -    {
    -        double d = parseDouble( chars );
    -        if ( ( d >= Float.MIN_VALUE ) && ( d <= Float.MAX_VALUE ) )
    -        {
    +    public static float parseFloat(CharSequence chars) {
    +        double d = parseDouble(chars);
    +        if ((d >= Float.MIN_VALUE) && (d <= Float.MAX_VALUE)) {
                 return (float) d;
    -        }
    -        else
    -        {
    -            throw new NumberFormatException( "Float overflow for input characters: \"" + chars.toString() + "\"" );
    +        } else {
    +            throw new NumberFormatException("Float overflow for input characters: \"" + chars.toString() + "\"");
             }
         }
     
    @@ -302,87 +264,63 @@ public static float parseFloat( CharSequence chars )
          * @return the double number represented by this character sequence.
          * @throws NumberFormatException if the character sequence does not contain a parsable double.
          */
    -    public static double parseDouble( CharSequence chars )
    -        throws NumberFormatException
    -    {
    -        try
    -        {
    +    public static double parseDouble(CharSequence chars) throws NumberFormatException {
    +        try {
                 int length = chars.length();
                 double result = 0.0;
                 int exp = 0;
     
    -            boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
    -            int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
    +            boolean isNegative = (chars.charAt(0) == '-') ? true : false;
    +            int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
     
                 // Checks special cases NaN or Infinity.
    -            if ( ( chars.charAt( i ) == 'N' ) || ( chars.charAt( i ) == 'I' ) )
    -            {
    -                if ( chars.toString().equals( "NaN" ) )
    -                {
    +            if ((chars.charAt(i) == 'N') || (chars.charAt(i) == 'I')) {
    +                if (chars.toString().equals("NaN")) {
                         return Double.NaN;
    -                }
    -                else if ( chars.subSequence( i, length ).toString().equals( "Infinity" ) )
    -                {
    +                } else if (chars.subSequence(i, length).toString().equals("Infinity")) {
                         return isNegative ? Double.NEGATIVE_INFINITY : Double.POSITIVE_INFINITY;
                     }
                 }
     
                 // Reads decimal number.
                 boolean fraction = false;
    -            while ( true )
    -            {
    -                char c = chars.charAt( i );
    -                if ( ( c == '.' ) && ( !fraction ) )
    -                {
    +            while (true) {
    +                char c = chars.charAt(i);
    +                if ((c == '.') && (!fraction)) {
                         fraction = true;
    -                }
    -                else if ( ( c == 'e' ) || ( c == 'E' ) )
    -                {
    +                } else if ((c == 'e') || (c == 'E')) {
                         break;
    -                }
    -                else if ( ( c >= '0' ) && ( c <= '9' ) )
    -                {
    -                    result = result * 10 + ( c - '0' );
    -                    if ( fraction )
    -                    {
    +                } else if ((c >= '0') && (c <= '9')) {
    +                    result = result * 10 + (c - '0');
    +                    if (fraction) {
                             exp--;
                         }
    +                } else {
    +                    throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
                     }
    -                else
    -                {
    -                    throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    -                }
    -                if ( ++i >= length )
    -                {
    +                if (++i >= length) {
                         break;
                     }
                 }
                 result = isNegative ? -result : result;
     
                 // Reads exponent (if any).
    -            if ( i < length )
    -            {
    +            if (i < length) {
                     i++;
    -                boolean negE = ( chars.charAt( i ) == '-' ) ? true : false;
    -                i = ( negE || ( chars.charAt( i ) == '+' ) ) ? i + 1 : i;
    +                boolean negE = (chars.charAt(i) == '-') ? true : false;
    +                i = (negE || (chars.charAt(i) == '+')) ? i + 1 : i;
                     int valE = 0;
    -                while ( true )
    -                {
    -                    char c = chars.charAt( i );
    -                    if ( ( c >= '0' ) && ( c <= '9' ) )
    -                    {
    -                        valE = valE * 10 + ( c - '0' );
    -                        if ( valE > 10000000 )
    -                        { // Hard-limit to avoid overflow.
    +                while (true) {
    +                    char c = chars.charAt(i);
    +                    if ((c >= '0') && (c <= '9')) {
    +                        valE = valE * 10 + (c - '0');
    +                        if (valE > 10000000) { // Hard-limit to avoid overflow.
                                 valE = 10000000;
                             }
    +                    } else {
    +                        throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
                         }
    -                    else
    -                    {
    -                        throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    -                    }
    -                    if ( ++i >= length )
    -                    {
    +                    if (++i >= length) {
                             break;
                         }
                     }
    @@ -390,12 +328,10 @@ else if ( ( c >= '0' ) && ( c <= '9' ) )
                 }
     
                 // Returns product decimal number with exponent.
    -            return multE( result, exp );
    +            return multE(result, exp);
     
    -        }
    -        catch ( IndexOutOfBoundsException e )
    -        {
    -            throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
    +        } catch (IndexOutOfBoundsException e) {
    +            throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
             }
         }
     
    @@ -408,9 +344,8 @@ else if ( ( c >= '0' ) && ( c <= '9' ) )
          * @return the specified StringBuffer object.
          * @see #parseBoolean
          */
    -    public static StringBuffer format( boolean b, StringBuffer sb )
    -    {
    -        return b ? sb.append( "true" ) : sb.append( "false" );
    +    public static StringBuffer format(boolean b, StringBuffer sb) {
    +        return b ? sb.append("true") : sb.append("false");
         }
     
         /**
    @@ -427,9 +362,8 @@ public static StringBuffer format( boolean b, StringBuffer sb )
          * @return the specified StringBuffer object.
          * @see #parseShort
          */
    -    public static StringBuffer format( short s, StringBuffer sb )
    -    {
    -        return format( (int) s, sb ); // Forwards to int formatting (fast).
    +    public static StringBuffer format(short s, StringBuffer sb) {
    +        return format((int) s, sb); // Forwards to int formatting (fast).
         }
     
         /**
    @@ -442,9 +376,8 @@ public static StringBuffer format( short s, StringBuffer sb )
          * @return the specified StringBuffer object.
          * @see #parseShort(CharSequence, int) throws IllegalArgumentException if radix is not in [2 .. 36] range.
          */
    -    public static StringBuffer format( short s, int radix, StringBuffer sb )
    -    {
    -        return format( (int) s, radix, sb ); // Forwards to int formatting (fast).
    +    public static StringBuffer format(short s, int radix, StringBuffer sb) {
    +        return format((int) s, radix, sb); // Forwards to int formatting (fast).
         }
     
         /**
    @@ -461,42 +394,33 @@ public static StringBuffer format( short s, int radix, StringBuffer sb )
          * @return the specified StringBuffer object.
          * @see #parseInt
          */
    -    public static StringBuffer format( int i, StringBuffer sb )
    -    {
    -        if ( i <= 0 )
    -        {
    -            if ( i == Integer.MIN_VALUE )
    -            { // Negation would overflow.
    -                return sb.append( "-2147483648" ); // 11 char max.
    -            }
    -            else if ( i == 0 )
    -            {
    -                return sb.append( '0' );
    +    public static StringBuffer format(int i, StringBuffer sb) {
    +        if (i <= 0) {
    +            if (i == Integer.MIN_VALUE) { // Negation would overflow.
    +                return sb.append("-2147483648"); // 11 char max.
    +            } else if (i == 0) {
    +                return sb.append('0');
                 }
                 i = -i;
    -            sb.append( '-' );
    +            sb.append('-');
             }
             int j = 1;
    -        for ( ; ( j < 10 ) && ( i >= INT_POW_10[j] ); j++ )
    -        {
    -        }
    +        for (; (j < 10) && (i >= INT_POW_10[j]); j++) {}
             // POW_10[j] > i >= POW_10[j-1]
    -        for ( j--; j >= 0; j-- )
    -        {
    +        for (j--; j >= 0; j--) {
                 int pow10 = INT_POW_10[j];
                 int digit = i / pow10;
                 i -= digit * pow10;
    -            sb.append( DIGITS[digit] );
    +            sb.append(DIGITS[digit]);
             }
             return sb;
         }
     
         private static final int[] INT_POW_10 = new int[10];
    -    static
    -    {
    +
    +    static {
             int pow = 1;
    -        for ( int i = 0; i < 10; i++ )
    -        {
    +        for (int i = 0; i < 10; i++) {
                 INT_POW_10[i] = pow;
                 pow *= 10;
             }
    @@ -512,38 +436,27 @@ else if ( i == 0 )
          * @return the specified StringBuffer object.
          * @see #parseInt(CharSequence, int) throws IllegalArgumentException if radix is not in [2 .. 36] range.
          */
    -    public static StringBuffer format( int i, int radix, StringBuffer sb )
    -    {
    -        if ( radix == 10 )
    -        {
    -            return format( i, sb ); // Faster version.
    -        }
    -        else if ( radix < 2 || radix > 36 )
    -        {
    -            throw new IllegalArgumentException( "radix: " + radix );
    -        }
    -        if ( i < 0 )
    -        {
    -            sb.append( '-' );
    -        }
    -        else
    -        {
    +    public static StringBuffer format(int i, int radix, StringBuffer sb) {
    +        if (radix == 10) {
    +            return format(i, sb); // Faster version.
    +        } else if (radix < 2 || radix > 36) {
    +            throw new IllegalArgumentException("radix: " + radix);
    +        }
    +        if (i < 0) {
    +            sb.append('-');
    +        } else {
                 i = -i;
             }
    -        format2( i, radix, sb );
    +        format2(i, radix, sb);
             return sb;
         }
     
    -    private static void format2( int i, int radix, StringBuffer sb )
    -    {
    -        if ( i <= -radix )
    -        {
    -            format2( i / radix, radix, sb );
    -            sb.append( DIGITS[-( i % radix )] );
    -        }
    -        else
    -        {
    -            sb.append( DIGITS[-i] );
    +    private static void format2(int i, int radix, StringBuffer sb) {
    +        if (i <= -radix) {
    +            format2(i / radix, radix, sb);
    +            sb.append(DIGITS[-(i % radix)]);
    +        } else {
    +            sb.append(DIGITS[-i]);
             }
         }
     
    @@ -561,42 +474,33 @@ private static void format2( int i, int radix, StringBuffer sb )
          * @return the specified StringBuffer object.
          * @see #parseLong
          */
    -    public static StringBuffer format( long l, StringBuffer sb )
    -    {
    -        if ( l <= 0 )
    -        {
    -            if ( l == Long.MIN_VALUE )
    -            { // Negation would overflow.
    -                return sb.append( "-9223372036854775808" ); // 20 characters max.
    -            }
    -            else if ( l == 0 )
    -            {
    -                return sb.append( '0' );
    +    public static StringBuffer format(long l, StringBuffer sb) {
    +        if (l <= 0) {
    +            if (l == Long.MIN_VALUE) { // Negation would overflow.
    +                return sb.append("-9223372036854775808"); // 20 characters max.
    +            } else if (l == 0) {
    +                return sb.append('0');
                 }
                 l = -l;
    -            sb.append( '-' );
    +            sb.append('-');
             }
             int j = 1;
    -        for ( ; ( j < 19 ) && ( l >= LONG_POW_10[j] ); j++ )
    -        {
    -        }
    +        for (; (j < 19) && (l >= LONG_POW_10[j]); j++) {}
             // POW_10[j] > l >= POW_10[j-1]
    -        for ( j--; j >= 0; j-- )
    -        {
    +        for (j--; j >= 0; j--) {
                 long pow10 = LONG_POW_10[j];
    -            int digit = (int) ( l / pow10 );
    +            int digit = (int) (l / pow10);
                 l -= digit * pow10;
    -            sb.append( DIGITS[digit] );
    +            sb.append(DIGITS[digit]);
             }
             return sb;
         }
     
         private static final long[] LONG_POW_10 = new long[19];
    -    static
    -    {
    +
    +    static {
             long pow = 1;
    -        for ( int i = 0; i < 19; i++ )
    -        {
    +        for (int i = 0; i < 19; i++) {
                 LONG_POW_10[i] = pow;
                 pow *= 10;
             }
    @@ -612,38 +516,27 @@ else if ( l == 0 )
          * @return the specified StringBuffer object.
          * @see #parseLong(CharSequence, int) throws IllegalArgumentException if radix is not in [2 .. 36] range.
          */
    -    public static StringBuffer format( long l, int radix, StringBuffer sb )
    -    {
    -        if ( radix == 10 )
    -        {
    -            return format( l, sb ); // Faster version.
    -        }
    -        else if ( radix < 2 || radix > 36 )
    -        {
    -            throw new IllegalArgumentException( "radix: " + radix );
    -        }
    -        if ( l < 0 )
    -        {
    -            sb.append( '-' );
    -        }
    -        else
    -        {
    +    public static StringBuffer format(long l, int radix, StringBuffer sb) {
    +        if (radix == 10) {
    +            return format(l, sb); // Faster version.
    +        } else if (radix < 2 || radix > 36) {
    +            throw new IllegalArgumentException("radix: " + radix);
    +        }
    +        if (l < 0) {
    +            sb.append('-');
    +        } else {
                 l = -l;
             }
    -        format2( l, radix, sb );
    +        format2(l, radix, sb);
             return sb;
         }
     
    -    private static void format2( long l, int radix, StringBuffer sb )
    -    {
    -        if ( l <= -radix )
    -        {
    -            format2( l / radix, radix, sb );
    -            sb.append( DIGITS[(int) -( l % radix )] );
    -        }
    -        else
    -        {
    -            sb.append( DIGITS[(int) -l] );
    +    private static void format2(long l, int radix, StringBuffer sb) {
    +        if (l <= -radix) {
    +            format2(l / radix, radix, sb);
    +            sb.append(DIGITS[(int) -(l % radix)]);
    +        } else {
    +            sb.append(DIGITS[(int) -l]);
             }
         }
     
    @@ -656,9 +549,8 @@ private static void format2( long l, int radix, StringBuffer sb )
          * @return format(f, 0.0f, sb)
          * @see #format(float, float, StringBuffer)
          */
    -    public static StringBuffer format( float f, StringBuffer sb )
    -    {
    -        return format( f, 0.0f, sb );
    +    public static StringBuffer format(float f, StringBuffer sb) {
    +        return format(f, 0.0f, sb);
         }
     
         /**
    @@ -680,31 +572,22 @@ public static StringBuffer format( float f, StringBuffer sb )
          * @return the specified StringBuffer object.
          * @throws IllegalArgumentException if the specified precision is negative or would result in too many digits (19+).
          */
    -    public static StringBuffer format( float f, float precision, StringBuffer sb )
    -    {
    +    public static StringBuffer format(float f, float precision, StringBuffer sb) {
             // Adjusts precision.
             boolean precisionOnLastDigit;
    -        if ( precision > 0.0f )
    -        {
    +        if (precision > 0.0f) {
                 precisionOnLastDigit = true;
    -        }
    -        else if ( precision == 0.0f )
    -        {
    -            if ( f != 0.0f )
    -            {
    +        } else if (precision == 0.0f) {
    +            if (f != 0.0f) {
                     precisionOnLastDigit = false;
    -                precision = Math.max( Math.abs( f * FLOAT_RELATIVE_ERROR ), Float.MIN_VALUE );
    +                precision = Math.max(Math.abs(f * FLOAT_RELATIVE_ERROR), Float.MIN_VALUE);
    +            } else {
    +                return sb.append("0.0"); // Exact zero.
                 }
    -            else
    -            {
    -                return sb.append( "0.0" ); // Exact zero.
    -            }
    -        }
    -        else
    -        {
    -            throw new IllegalArgumentException( "precision: Negative values not allowed" );
    +        } else {
    +            throw new IllegalArgumentException("precision: Negative values not allowed");
             }
    -        return format( f, precision, precisionOnLastDigit, sb );
    +        return format(f, precision, precisionOnLastDigit, sb);
         }
     
         /**
    @@ -723,9 +606,8 @@ else if ( precision == 0.0f )
          * @return format(d, 0.0, sb)
          * @see #format(double, double, StringBuffer)
          */
    -    public static StringBuffer format( double d, StringBuffer sb )
    -    {
    -        return format( d, 0.0, sb );
    +    public static StringBuffer format(double d, StringBuffer sb) {
    +        return format(d, 0.0, sb);
         }
     
         /**
    @@ -738,16 +620,12 @@ public static StringBuffer format( double d, StringBuffer sb )
          * @return the specified StringBuffer object.
          * @throws IllegalArgumentException if the number of digits is not in range [1..19].
          */
    -    public static StringBuffer format( double d, int digits, StringBuffer sb )
    -    {
    -        if ( ( digits >= 1 ) && ( digits <= 19 ) )
    -        {
    -            double precision = Math.abs( d / DOUBLE_POW_10[digits - 1] );
    -            return format( d, precision, sb );
    -        }
    -        else
    -        {
    -            throw new java.lang.IllegalArgumentException( "digits: " + digits + " is not in range [1 .. 19]" );
    +    public static StringBuffer format(double d, int digits, StringBuffer sb) {
    +        if ((digits >= 1) && (digits <= 19)) {
    +            double precision = Math.abs(d / DOUBLE_POW_10[digits - 1]);
    +            return format(d, precision, sb);
    +        } else {
    +            throw new java.lang.IllegalArgumentException("digits: " + digits + " is not in range [1 .. 19]");
             }
         }
     
    @@ -770,30 +648,21 @@ public static StringBuffer format( double d, int digits, StringBuffer sb )
          * @return the specified StringBuffer object.
          * @throws IllegalArgumentException if the specified precision is negative or would result in too many digits (19+).
          */
    -    public static StringBuffer format( double d, double precision, StringBuffer sb )
    -    {
    +    public static StringBuffer format(double d, double precision, StringBuffer sb) {
             // Adjusts precision.
             boolean precisionOnLastDigit = false;
    -        if ( precision > 0.0 )
    -        {
    +        if (precision > 0.0) {
                 precisionOnLastDigit = true;
    -        }
    -        else if ( precision == 0.0 )
    -        {
    -            if ( d != 0.0 )
    -            {
    -                precision = Math.max( Math.abs( d * DOUBLE_RELATIVE_ERROR ), Double.MIN_VALUE );
    -            }
    -            else
    -            {
    -                return sb.append( "0.0" ); // Exact zero.
    +        } else if (precision == 0.0) {
    +            if (d != 0.0) {
    +                precision = Math.max(Math.abs(d * DOUBLE_RELATIVE_ERROR), Double.MIN_VALUE);
    +            } else {
    +                return sb.append("0.0"); // Exact zero.
                 }
    +        } else if (precision < 0.0) { // Not NaN
    +            throw new IllegalArgumentException("precision: Negative values not allowed");
             }
    -        else if ( precision < 0.0 )
    -        { // Not NaN
    -            throw new IllegalArgumentException( "precision: Negative values not allowed" );
    -        }
    -        return format( d, precision, precisionOnLastDigit, sb );
    +        return format(d, precision, precisionOnLastDigit, sb);
         }
     
         /**
    @@ -806,96 +675,77 @@ else if ( precision < 0.0 )
          * @param sb the StringBuffer to append.
          * @return the specified StringBuffer object.
          */
    -    private static StringBuffer format( double d, double precision, boolean precisionOnLastDigit, StringBuffer sb )
    -    {
    +    private static StringBuffer format(double d, double precision, boolean precisionOnLastDigit, StringBuffer sb) {
             // Special cases.
    -        if ( Double.isNaN( d ) )
    -        {
    -            return sb.append( "NaN" );
    -        }
    -        else if ( Double.isInfinite( d ) )
    -        {
    -            return ( d >= 0 ) ? sb.append( "Infinity" ) : sb.append( "-Infinity" );
    +        if (Double.isNaN(d)) {
    +            return sb.append("NaN");
    +        } else if (Double.isInfinite(d)) {
    +            return (d >= 0) ? sb.append("Infinity") : sb.append("-Infinity");
             }
    -        if ( d < 0 )
    -        {
    +        if (d < 0) {
                 d = -d;
    -            sb.append( '-' );
    +            sb.append('-');
             }
     
             // Formats decimal part.
    -        int rank = (int) Math.floor( Math.log( precision ) / LOG_10 );
    -        double digitValue = multE( d, -rank );
    -        if ( digitValue >= Long.MAX_VALUE )
    -        {
    -            throw new IllegalArgumentException( "Specified precision would result in too many digits" );
    +        int rank = (int) Math.floor(Math.log(precision) / LOG_10);
    +        double digitValue = multE(d, -rank);
    +        if (digitValue >= Long.MAX_VALUE) {
    +            throw new IllegalArgumentException("Specified precision would result in too many digits");
             }
             int digitStart = sb.length();
    -        format( Math.round( digitValue ), sb );
    +        format(Math.round(digitValue), sb);
             int digitLength = sb.length() - digitStart;
             int dotPos = digitLength + rank;
             boolean useScientificNotation = false;
     
             // Inserts dot ('.')
    -        if ( ( dotPos <= -LEADING_ZEROS.length ) || ( dotPos > digitLength ) )
    -        {
    +        if ((dotPos <= -LEADING_ZEROS.length) || (dotPos > digitLength)) {
                 // Scientific notation has to be used ("x.xxxEyy").
    -            sb.insert( digitStart + 1, '.' );
    +            sb.insert(digitStart + 1, '.');
                 useScientificNotation = true;
    -        }
    -        else if ( dotPos > 0 )
    -        {
    +        } else if (dotPos > 0) {
                 // Dot within the string ("xxxx.xxxxx").
    -            sb.insert( digitStart + dotPos, '.' );
    -        }
    -        else
    -        {
    +            sb.insert(digitStart + dotPos, '.');
    +        } else {
                 // Leading zeros ("0.xxxxx").
    -            sb.insert( digitStart, LEADING_ZEROS[-dotPos] );
    +            sb.insert(digitStart, LEADING_ZEROS[-dotPos]);
             }
     
             // Removes trailing zeros.
    -        if ( !precisionOnLastDigit )
    -        {
    +        if (!precisionOnLastDigit) {
                 int newLength = sb.length();
    -            do
    -            {
    +            do {
                     newLength--;
    -            }
    -            while ( sb.charAt( newLength ) == '0' );
    -            sb.setLength( newLength + 1 );
    +            } while (sb.charAt(newLength) == '0');
    +            sb.setLength(newLength + 1);
             }
     
             // Avoids trailing '.'
    -        if ( sb.charAt( sb.length() - 1 ) == '.' )
    -        {
    -            if ( precisionOnLastDigit )
    -            {
    -                sb.setLength( sb.length() - 1 ); // Prefers "xxx" to "xxx."
    -            }
    -            else
    -            {
    -                sb.append( '0' ); // Prefer "xxx.0" to "xxx."
    +        if (sb.charAt(sb.length() - 1) == '.') {
    +            if (precisionOnLastDigit) {
    +                sb.setLength(sb.length() - 1); // Prefers "xxx" to "xxx."
    +            } else {
    +                sb.append('0'); // Prefer "xxx.0" to "xxx."
                 }
             }
     
             // Writes exponent.
    -        if ( useScientificNotation )
    -        {
    -            sb.append( 'E' );
    -            format( dotPos - 1, sb );
    +        if (useScientificNotation) {
    +            sb.append('E');
    +            format(dotPos - 1, sb);
             }
     
             return sb;
         }
     
    -    private static final double LOG_10 = Math.log( 10 );
    +    private static final double LOG_10 = Math.log(10);
     
    -    private static final float FLOAT_RELATIVE_ERROR = (float) Math.pow( 2, -24 );
    +    private static final float FLOAT_RELATIVE_ERROR = (float) Math.pow(2, -24);
     
    -    private static final double DOUBLE_RELATIVE_ERROR = Math.pow( 2, -53 );
    +    private static final double DOUBLE_RELATIVE_ERROR = Math.pow(2, -53);
     
    -    private static String[] LEADING_ZEROS = { "0.", "0.0", "0.00" };
    +    private static String[] LEADING_ZEROS = {"0.", "0.0", "0.00"};
     
         /**
          * Returns the product of the specified value with 10 raised at the specified power exponent.
    @@ -904,33 +754,23 @@ else if ( dotPos > 0 )
          * @param E the exponent.
          * @return value * 10^E
          */
    -    private static final double multE( double value, int E )
    -    {
    -        if ( E >= 0 )
    -        {
    -            if ( E <= 308 )
    -            {
    +    private static final double multE(double value, int E) {
    +        if (E >= 0) {
    +            if (E <= 308) {
                     // Max: 1.7976931348623157E+308
                     return value * DOUBLE_POW_10[E];
    -            }
    -            else
    -            {
    +            } else {
                     value *= 1E21; // Exact multiplicand.
    -                E = Math.min( 308, E - 21 );
    +                E = Math.min(308, E - 21);
                     return value * DOUBLE_POW_10[E];
                 }
    -        }
    -        else
    -        {
    -            if ( E >= -308 )
    -            {
    +        } else {
    +            if (E >= -308) {
                     return value / DOUBLE_POW_10[-E];
    -            }
    -            else
    -            {
    +            } else {
                     // Min: 4.9E-324
                     value /= 1E21; // Exact divisor.
    -                E = Math.max( -308, E + 21 );
    +                E = Math.max(-308, E + 21);
                     return value / DOUBLE_POW_10[-E];
                 }
             }
    @@ -939,30 +779,25 @@ private static final double multE( double value, int E )
         // Note: Approximation for exponents > 21. This may introduce round-off
         // errors (e.g. 1E23 represented as "9.999999999999999E22").
         private static final double[] DOUBLE_POW_10 = new double[] {
    -
             1E000, 1E001, 1E002, 1E003, 1E004, 1E005, 1E006, 1E007, 1E008, 1E009, 1E010, 1E011, 1E012, 1E013, 1E014, 1E015,
             1E016, 1E017, 1E018, 1E019, 1E020, 1E021, 1E022, 1E023, 1E024, 1E025, 1E026, 1E027, 1E028, 1E029, 1E030, 1E031,
             1E032, 1E033, 1E034, 1E035, 1E036, 1E037, 1E038, 1E039, 1E040, 1E041, 1E042, 1E043, 1E044, 1E045, 1E046, 1E047,
             1E048, 1E049, 1E050, 1E051, 1E052, 1E053, 1E054, 1E055, 1E056, 1E057, 1E058, 1E059, 1E060, 1E061, 1E062, 1E063,
             1E064, 1E065, 1E066, 1E067, 1E068, 1E069, 1E070, 1E071, 1E072, 1E073, 1E074, 1E075, 1E076, 1E077, 1E078, 1E079,
             1E080, 1E081, 1E082, 1E083, 1E084, 1E085, 1E086, 1E087, 1E088, 1E089, 1E090, 1E091, 1E092, 1E093, 1E094, 1E095,
    -        1E096, 1E097, 1E098, 1E099,
    -
    -        1E100, 1E101, 1E102, 1E103, 1E104, 1E105, 1E106, 1E107, 1E108, 1E109, 1E110, 1E111, 1E112, 1E113, 1E114, 1E115,
    -        1E116, 1E117, 1E118, 1E119, 1E120, 1E121, 1E122, 1E123, 1E124, 1E125, 1E126, 1E127, 1E128, 1E129, 1E130, 1E131,
    -        1E132, 1E133, 1E134, 1E135, 1E136, 1E137, 1E138, 1E139, 1E140, 1E141, 1E142, 1E143, 1E144, 1E145, 1E146, 1E147,
    -        1E148, 1E149, 1E150, 1E151, 1E152, 1E153, 1E154, 1E155, 1E156, 1E157, 1E158, 1E159, 1E160, 1E161, 1E162, 1E163,
    -        1E164, 1E165, 1E166, 1E167, 1E168, 1E169, 1E170, 1E171, 1E172, 1E173, 1E174, 1E175, 1E176, 1E177, 1E178, 1E179,
    -        1E180, 1E181, 1E182, 1E183, 1E184, 1E185, 1E186, 1E187, 1E188, 1E189, 1E190, 1E191, 1E192, 1E193, 1E194, 1E195,
    -        1E196, 1E197, 1E198, 1E199,
    -
    -        1E200, 1E201, 1E202, 1E203, 1E204, 1E205, 1E206, 1E207, 1E208, 1E209, 1E210, 1E211, 1E212, 1E213, 1E214, 1E215,
    -        1E216, 1E217, 1E218, 1E219, 1E220, 1E221, 1E222, 1E223, 1E224, 1E225, 1E226, 1E227, 1E228, 1E229, 1E230, 1E231,
    -        1E232, 1E233, 1E234, 1E235, 1E236, 1E237, 1E238, 1E239, 1E240, 1E241, 1E242, 1E243, 1E244, 1E245, 1E246, 1E247,
    -        1E248, 1E249, 1E250, 1E251, 1E252, 1E253, 1E254, 1E255, 1E256, 1E257, 1E258, 1E259, 1E260, 1E261, 1E262, 1E263,
    -        1E264, 1E265, 1E266, 1E267, 1E268, 1E269, 1E270, 1E271, 1E272, 1E273, 1E274, 1E275, 1E276, 1E277, 1E278, 1E279,
    -        1E280, 1E281, 1E282, 1E283, 1E284, 1E285, 1E286, 1E287, 1E288, 1E289, 1E290, 1E291, 1E292, 1E293, 1E294, 1E295,
    -        1E296, 1E297, 1E298, 1E299,
    -
    -        1E300, 1E301, 1E302, 1E303, 1E304, 1E305, 1E306, 1E307, 1E308 };
    -}
    \ No newline at end of file
    +        1E096, 1E097, 1E098, 1E099, 1E100, 1E101, 1E102, 1E103, 1E104, 1E105, 1E106, 1E107, 1E108, 1E109, 1E110, 1E111,
    +        1E112, 1E113, 1E114, 1E115, 1E116, 1E117, 1E118, 1E119, 1E120, 1E121, 1E122, 1E123, 1E124, 1E125, 1E126, 1E127,
    +        1E128, 1E129, 1E130, 1E131, 1E132, 1E133, 1E134, 1E135, 1E136, 1E137, 1E138, 1E139, 1E140, 1E141, 1E142, 1E143,
    +        1E144, 1E145, 1E146, 1E147, 1E148, 1E149, 1E150, 1E151, 1E152, 1E153, 1E154, 1E155, 1E156, 1E157, 1E158, 1E159,
    +        1E160, 1E161, 1E162, 1E163, 1E164, 1E165, 1E166, 1E167, 1E168, 1E169, 1E170, 1E171, 1E172, 1E173, 1E174, 1E175,
    +        1E176, 1E177, 1E178, 1E179, 1E180, 1E181, 1E182, 1E183, 1E184, 1E185, 1E186, 1E187, 1E188, 1E189, 1E190, 1E191,
    +        1E192, 1E193, 1E194, 1E195, 1E196, 1E197, 1E198, 1E199, 1E200, 1E201, 1E202, 1E203, 1E204, 1E205, 1E206, 1E207,
    +        1E208, 1E209, 1E210, 1E211, 1E212, 1E213, 1E214, 1E215, 1E216, 1E217, 1E218, 1E219, 1E220, 1E221, 1E222, 1E223,
    +        1E224, 1E225, 1E226, 1E227, 1E228, 1E229, 1E230, 1E231, 1E232, 1E233, 1E234, 1E235, 1E236, 1E237, 1E238, 1E239,
    +        1E240, 1E241, 1E242, 1E243, 1E244, 1E245, 1E246, 1E247, 1E248, 1E249, 1E250, 1E251, 1E252, 1E253, 1E254, 1E255,
    +        1E256, 1E257, 1E258, 1E259, 1E260, 1E261, 1E262, 1E263, 1E264, 1E265, 1E266, 1E267, 1E268, 1E269, 1E270, 1E271,
    +        1E272, 1E273, 1E274, 1E275, 1E276, 1E277, 1E278, 1E279, 1E280, 1E281, 1E282, 1E283, 1E284, 1E285, 1E286, 1E287,
    +        1E288, 1E289, 1E290, 1E291, 1E292, 1E293, 1E294, 1E295, 1E296, 1E297, 1E298, 1E299, 1E300, 1E301, 1E302, 1E303,
    +        1E304, 1E305, 1E306, 1E307, 1E308
    +    };
    +}
    diff --git a/src/main/java/org/codehaus/plexus/util/WriterFactory.java b/src/main/java/org/codehaus/plexus/util/WriterFactory.java
    index bd592e38..09d8ca64 100644
    --- a/src/main/java/org/codehaus/plexus/util/WriterFactory.java
    +++ b/src/main/java/org/codehaus/plexus/util/WriterFactory.java
    @@ -16,8 +16,6 @@
      * limitations under the License.
      */
     
    -import org.codehaus.plexus.util.xml.XmlStreamWriter;
    -
     import java.io.File;
     import java.io.IOException;
     import java.io.OutputStream;
    @@ -27,6 +25,8 @@
     import java.nio.charset.Charset;
     import java.nio.file.Files;
     
    +import org.codehaus.plexus.util.xml.XmlStreamWriter;
    +
     /**
      * Utility to create Writers, with explicit encoding choice: platform default, XML, or specified.
      *
    @@ -40,12 +40,11 @@
      * @since 1.4.4
      */
     @Deprecated
    -public class WriterFactory
    -{
    +public class WriterFactory {
         /**
          * ISO Latin Alphabet #1, also known as ISO-LATIN-1. Every implementation of the Java platform is required to
          * support this character encoding.
    -     * 
    +     *
          * @see Charset
          */
         public static final String ISO_8859_1 = "ISO-8859-1";
    @@ -53,7 +52,7 @@ public class WriterFactory
         /**
          * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. Every
          * implementation of the Java platform is required to support this character encoding.
    -     * 
    +     *
          * @see Charset
          */
         public static final String US_ASCII = "US-ASCII";
    @@ -62,7 +61,7 @@ public class WriterFactory
          * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either
          * order accepted on input, big-endian used on output). Every implementation of the Java platform is required to
          * support this character encoding.
    -     * 
    +     *
          * @see Charset
          */
         public static final String UTF_16 = "UTF-16";
    @@ -70,7 +69,7 @@ public class WriterFactory
         /**
          * Sixteen-bit Unicode Transformation Format, big-endian byte order. Every implementation of the Java platform is
          * required to support this character encoding.
    -     * 
    +     *
          * @see Charset
          */
         public static final String UTF_16BE = "UTF-16BE";
    @@ -78,7 +77,7 @@ public class WriterFactory
         /**
          * Sixteen-bit Unicode Transformation Format, little-endian byte order. Every implementation of the Java platform is
          * required to support this character encoding.
    -     * 
    +     *
          * @see Charset
          */
         public static final String UTF_16LE = "UTF-16LE";
    @@ -86,7 +85,7 @@ public class WriterFactory
         /**
          * Eight-bit Unicode Transformation Format. Every implementation of the Java platform is required to support this
          * character encoding.
    -     * 
    +     *
          * @see Charset
          */
         public static final String UTF_8 = "UTF-8";
    @@ -94,7 +93,7 @@ public class WriterFactory
         /**
          * The file.encoding System Property.
          */
    -    public static final String FILE_ENCODING = System.getProperty( "file.encoding" );
    +    public static final String FILE_ENCODING = System.getProperty("file.encoding");
     
         /**
          * Create a new Writer with XML encoding detection rules.
    @@ -104,10 +103,8 @@ public class WriterFactory
          * @throws IOException if any.
          * @see XmlStreamWriter
          */
    -    public static XmlStreamWriter newXmlWriter( OutputStream out )
    -        throws IOException
    -    {
    -        return new XmlStreamWriter( out );
    +    public static XmlStreamWriter newXmlWriter(OutputStream out) throws IOException {
    +        return new XmlStreamWriter(out);
         }
     
         /**
    @@ -118,10 +115,8 @@ public static XmlStreamWriter newXmlWriter( OutputStream out )
          * @throws IOException if any.
          * @see XmlStreamWriter
          */
    -    public static XmlStreamWriter newXmlWriter(File file )
    -        throws IOException
    -    {
    -        return new XmlStreamWriter( file );
    +    public static XmlStreamWriter newXmlWriter(File file) throws IOException {
    +        return new XmlStreamWriter(file);
         }
     
         /**
    @@ -131,9 +126,8 @@ public static XmlStreamWriter newXmlWriter(File file )
          * @return a writer instance for the output stream using the default platform charset.
          * @see Charset#defaultCharset()
          */
    -    public static Writer newPlatformWriter( OutputStream out )
    -    {
    -        return new OutputStreamWriter( out );
    +    public static Writer newPlatformWriter(OutputStream out) {
    +        return new OutputStreamWriter(out);
         }
     
         /**
    @@ -144,10 +138,8 @@ public static Writer newPlatformWriter( OutputStream out )
          * @throws IOException if any.
          * @see Charset#defaultCharset()
          */
    -    public static Writer newPlatformWriter( File file )
    -        throws IOException
    -    {
    -        return Files.newBufferedWriter( file.toPath() );
    +    public static Writer newPlatformWriter(File file) throws IOException {
    +        return Files.newBufferedWriter(file.toPath());
         }
     
         /**
    @@ -159,10 +151,8 @@ public static Writer newPlatformWriter( File file )
          * @throws UnsupportedEncodingException if any.
          * @see Supported encodings
          */
    -    public static Writer newWriter( OutputStream out, String encoding )
    -        throws UnsupportedEncodingException
    -    {
    -        return new OutputStreamWriter( out, encoding );
    +    public static Writer newWriter(OutputStream out, String encoding) throws UnsupportedEncodingException {
    +        return new OutputStreamWriter(out, encoding);
         }
     
         /**
    @@ -174,9 +164,7 @@ public static Writer newWriter( OutputStream out, String encoding )
          * @throws IOException if any.
          * @see Supported encodings
          */
    -    public static Writer newWriter( File file, String encoding )
    -        throws IOException
    -    {
    -        return newWriter( Files.newOutputStream( file.toPath() ), encoding );
    +    public static Writer newWriter(File file, String encoding) throws IOException {
    +        return newWriter(Files.newOutputStream(file.toPath()), encoding);
         }
     }
    diff --git a/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java b/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java
    index 2ad16366..64b9deba 100644
    --- a/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java
    +++ b/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java
    @@ -19,40 +19,30 @@
     /**
      * @author Kristian Rosenvold
      */
    -public class AbstractStreamHandler
    -    extends Thread
    -{
    +public class AbstractStreamHandler extends Thread {
         private boolean done;
     
         private volatile boolean disabled;
     
    -    public boolean isDone()
    -    {
    +    public boolean isDone() {
             return done;
         }
     
    -    public synchronized void waitUntilDone()
    -        throws InterruptedException
    -    {
    -        while ( !isDone() )
    -        {
    +    public synchronized void waitUntilDone() throws InterruptedException {
    +        while (!isDone()) {
                 wait();
             }
         }
     
    -    protected boolean isDisabled()
    -    {
    +    protected boolean isDisabled() {
             return disabled;
         }
     
    -    public void disable()
    -    {
    +    public void disable() {
             disabled = true;
         }
     
    -    public void setDone()
    -    {
    +    public void setDone() {
             done = true;
         }
    -
     }
    diff --git a/src/main/java/org/codehaus/plexus/util/cli/Arg.java b/src/main/java/org/codehaus/plexus/util/cli/Arg.java
    index 75886ef9..4650288c 100644
    --- a/src/main/java/org/codehaus/plexus/util/cli/Arg.java
    +++ b/src/main/java/org/codehaus/plexus/util/cli/Arg.java
    @@ -18,13 +18,12 @@
     
     import java.io.File;
     
    -public interface Arg
    -{
    -    void setValue( String value );
    +public interface Arg {
    +    void setValue(String value);
     
    -    void setLine( String line );
    +    void setLine(String line);
     
    -    void setFile( File value );
    +    void setFile(File value);
     
         String[] getParts();
     }
    diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java
    index 0a861a75..f80a8bc1 100644
    --- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java
    +++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java
    @@ -20,13 +20,10 @@
     
     /**
      * Callable wrapper that exposes the proper exception type to the client.
    - * 
    + *
      * @author Kristian Rosenvold
      */
    -public interface CommandLineCallable
    -    extends Callable
    -{
    +public interface CommandLineCallable extends Callable {
         @Override
    -    Integer call()
    -        throws CommandLineException;
    +    Integer call() throws CommandLineException;
     }
    diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java
    index 9d0a439e..a6bf993c 100644
    --- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java
    +++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java
    @@ -20,16 +20,12 @@
      * @author Trygve Laugstøl
      *
      */
    -public class CommandLineException
    -    extends Exception
    -{
    -    public CommandLineException( String message )
    -    {
    -        super( message );
    +public class CommandLineException extends Exception {
    +    public CommandLineException(String message) {
    +        super(message);
         }
     
    -    public CommandLineException( String message, Throwable cause )
    -    {
    -        super( message, cause );
    +    public CommandLineException(String message, Throwable cause) {
    +        super(message, cause);
         }
     }
    diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java
    index 9d90c674..fcfdf3c1 100644
    --- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java
    +++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java
    @@ -24,18 +24,13 @@
      * @since 1.5.9
      *
      */
    -public class CommandLineTimeOutException
    -    extends CommandLineException
    -{
    +public class CommandLineTimeOutException extends CommandLineException {
     
    -    public CommandLineTimeOutException( String message )
    -    {
    -        super( message );
    +    public CommandLineTimeOutException(String message) {
    +        super(message);
         }
     
    -    public CommandLineTimeOutException( String message, Throwable cause )
    -    {
    -        super( message, cause );
    +    public CommandLineTimeOutException(String message, Throwable cause) {
    +        super(message, cause);
         }
    -
     }
    diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java
    index 0e168c04..81b053b9 100644
    --- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java
    +++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java
    @@ -16,7 +16,6 @@
      * limitations under the License.
      */
     
    -import java.io.IOException;
     import java.io.InputStream;
     import java.util.Locale;
     import java.util.Map;
    @@ -31,33 +30,27 @@
      * @author Trygve Laugstøl 
      *
      */
    -public abstract class CommandLineUtils
    -{
    +public abstract class CommandLineUtils {
     
         /**
          * A {@code StreamConsumer} providing consumed lines as a {@code String}.
          *
          * @see #getOutput()
          */
    -    public static class StringStreamConsumer
    -        implements StreamConsumer
    -    {
    +    public static class StringStreamConsumer implements StreamConsumer {
     
             private StringBuffer string = new StringBuffer();
     
    -        private String ls = System.getProperty( "line.separator" );
    +        private String ls = System.getProperty("line.separator");
     
             @Override
    -        public void consumeLine( String line )
    -        {
    -            string.append( line ).append( ls );
    +        public void consumeLine(String line) {
    +            string.append(line).append(ls);
             }
     
    -        public String getOutput()
    -        {
    +        public String getOutput() {
                 return string.toString();
             }
    -
         }
     
         /**
    @@ -70,24 +63,21 @@ public String getOutput()
          */
         private static final long NANOS_PER_SECOND = 1000000000L;
     
    -    public static int executeCommandLine( Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr )
    -        throws CommandLineException
    -    {
    -        return executeCommandLine( cl, null, systemOut, systemErr, 0 );
    +    public static int executeCommandLine(Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr)
    +            throws CommandLineException {
    +        return executeCommandLine(cl, null, systemOut, systemErr, 0);
         }
     
    -    public static int executeCommandLine( Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr,
    -                                          int timeoutInSeconds )
    -        throws CommandLineException
    -    {
    -        return executeCommandLine( cl, null, systemOut, systemErr, timeoutInSeconds );
    +    public static int executeCommandLine(
    +            Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr, int timeoutInSeconds)
    +            throws CommandLineException {
    +        return executeCommandLine(cl, null, systemOut, systemErr, timeoutInSeconds);
         }
     
    -    public static int executeCommandLine( Commandline cl, InputStream systemIn, StreamConsumer systemOut,
    -                                          StreamConsumer systemErr )
    -        throws CommandLineException
    -    {
    -        return executeCommandLine( cl, systemIn, systemOut, systemErr, 0 );
    +    public static int executeCommandLine(
    +            Commandline cl, InputStream systemIn, StreamConsumer systemOut, StreamConsumer systemErr)
    +            throws CommandLineException {
    +        return executeCommandLine(cl, systemIn, systemOut, systemErr, 0);
         }
     
         /**
    @@ -99,12 +89,15 @@ public static int executeCommandLine( Commandline cl, InputStream systemIn, Stre
          * @return A return value, see {@link Process#exitValue()}
          * @throws CommandLineException or CommandLineTimeOutException if time out occurs
          */
    -    public static int executeCommandLine( Commandline cl, InputStream systemIn, StreamConsumer systemOut,
    -                                          StreamConsumer systemErr, int timeoutInSeconds )
    -        throws CommandLineException
    -    {
    +    public static int executeCommandLine(
    +            Commandline cl,
    +            InputStream systemIn,
    +            StreamConsumer systemOut,
    +            StreamConsumer systemErr,
    +            int timeoutInSeconds)
    +            throws CommandLineException {
             final CommandLineCallable future =
    -            executeCommandLineAsCallable( cl, systemIn, systemOut, systemErr, timeoutInSeconds );
    +                executeCommandLineAsCallable(cl, systemIn, systemOut, systemErr, timeoutInSeconds);
             return future.call();
         }
     
    @@ -121,83 +114,70 @@ public static int executeCommandLine( Commandline cl, InputStream systemIn, Stre
          *         internal state before after the completion of the call statements
          * @throws CommandLineException or CommandLineTimeOutException if time out occurs
          */
    -    public static CommandLineCallable executeCommandLineAsCallable( final Commandline cl, final InputStream systemIn,
    -                                                                    final StreamConsumer systemOut,
    -                                                                    final StreamConsumer systemErr,
    -                                                                    final int timeoutInSeconds )
    -        throws CommandLineException
    -    {
    -        if ( cl == null )
    -        {
    -            throw new IllegalArgumentException( "cl cannot be null." );
    +    public static CommandLineCallable executeCommandLineAsCallable(
    +            final Commandline cl,
    +            final InputStream systemIn,
    +            final StreamConsumer systemOut,
    +            final StreamConsumer systemErr,
    +            final int timeoutInSeconds)
    +            throws CommandLineException {
    +        if (cl == null) {
    +            throw new IllegalArgumentException("cl cannot be null.");
             }
     
             final Process p = cl.execute();
     
    -        final Thread processHook = new Thread()
    -        {
    +        final Thread processHook = new Thread() {
     
                 {
    -                this.setName( "CommandLineUtils process shutdown hook" );
    -                this.setContextClassLoader( null );
    +                this.setName("CommandLineUtils process shutdown hook");
    +                this.setContextClassLoader(null);
                 }
     
                 @Override
    -            public void run()
    -            {
    +            public void run() {
                     p.destroy();
                 }
    -
             };
     
    -        ShutdownHookUtils.addShutDownHook( processHook );
    +        ShutdownHookUtils.addShutDownHook(processHook);
     
    -        return new CommandLineCallable()
    -        {
    +        return new CommandLineCallable() {
     
                 @Override
    -            public Integer call()
    -                throws CommandLineException
    -            {
    +            public Integer call() throws CommandLineException {
                     StreamFeeder inputFeeder = null;
                     StreamPumper outputPumper = null;
                     StreamPumper errorPumper = null;
                     boolean success = false;
    -                try
    -                {
    -                    if ( systemIn != null )
    -                    {
    -                        inputFeeder = new StreamFeeder( systemIn, p.getOutputStream() );
    +                try {
    +                    if (systemIn != null) {
    +                        inputFeeder = new StreamFeeder(systemIn, p.getOutputStream());
                             inputFeeder.start();
                         }
     
    -                    outputPumper = new StreamPumper( p.getInputStream(), systemOut );
    +                    outputPumper = new StreamPumper(p.getInputStream(), systemOut);
                         outputPumper.start();
     
    -                    errorPumper = new StreamPumper( p.getErrorStream(), systemErr );
    +                    errorPumper = new StreamPumper(p.getErrorStream(), systemErr);
                         errorPumper.start();
     
                         int returnValue;
    -                    if ( timeoutInSeconds <= 0 )
    -                    {
    +                    if (timeoutInSeconds <= 0) {
                             returnValue = p.waitFor();
    -                    }
    -                    else
    -                    {
    +                    } else {
                             final long now = System.nanoTime();
                             final long timeout = now + NANOS_PER_SECOND * timeoutInSeconds;
     
    -                        while ( isAlive( p ) && ( System.nanoTime() < timeout ) )
    -                        {
    +                        while (isAlive(p) && (System.nanoTime() < timeout)) {
                                 // The timeout is specified in seconds. Therefore we must not sleep longer than one second
                                 // but we should sleep as long as possible to reduce the number of iterations performed.
    -                            Thread.sleep( MILLIS_PER_SECOND - 1L );
    +                            Thread.sleep(MILLIS_PER_SECOND - 1L);
                             }
     
    -                        if ( isAlive( p ) )
    -                        {
    -                            throw new InterruptedException( String.format( "Process timed out after %d seconds.",
    -                                                                           timeoutInSeconds ) );
    +                        if (isAlive(p)) {
    +                            throw new InterruptedException(
    +                                    String.format("Process timed out after %d seconds.", timeoutInSeconds));
                             }
     
                             returnValue = p.exitValue();
    @@ -224,96 +204,72 @@ public Integer call()
                         // errorPumper.waitUntilDone();
                         // }
                         // }
    -                    if ( inputFeeder != null )
    -                    {
    +                    if (inputFeeder != null) {
                             inputFeeder.waitUntilDone();
                         }
     
                         outputPumper.waitUntilDone();
                         errorPumper.waitUntilDone();
     
    -                    if ( inputFeeder != null )
    -                    {
    +                    if (inputFeeder != null) {
                             inputFeeder.close();
    -                        handleException( inputFeeder, "stdin" );
    +                        handleException(inputFeeder, "stdin");
                         }
     
                         outputPumper.close();
    -                    handleException( outputPumper, "stdout" );
    +                    handleException(outputPumper, "stdout");
     
                         errorPumper.close();
    -                    handleException( errorPumper, "stderr" );
    +                    handleException(errorPumper, "stderr");
     
                         success = true;
                         return returnValue;
    -                }
    -                catch ( InterruptedException ex )
    -                {
    -                    throw new CommandLineTimeOutException( "Error while executing external command, process killed.",
    -                                                           ex );
    +                } catch (InterruptedException ex) {
    +                    throw new CommandLineTimeOutException(
    +                            "Error while executing external command, process killed.", ex);
     
    -                }
    -                finally
    -                {
    -                    if ( inputFeeder != null )
    -                    {
    +                } finally {
    +                    if (inputFeeder != null) {
                             inputFeeder.disable();
                         }
    -                    if ( outputPumper != null )
    -                    {
    +                    if (outputPumper != null) {
                             outputPumper.disable();
                         }
    -                    if ( errorPumper != null )
    -                    {
    +                    if (errorPumper != null) {
                             errorPumper.disable();
                         }
     
    -                    try
    -                    {
    -                        ShutdownHookUtils.removeShutdownHook( processHook );
    +                    try {
    +                        ShutdownHookUtils.removeShutdownHook(processHook);
                             processHook.run();
    -                    }
    -                    finally
    -                    {
    -                        try
    -                        {
    -                            if ( inputFeeder != null )
    -                            {
    +                    } finally {
    +                        try {
    +                            if (inputFeeder != null) {
                                     inputFeeder.close();
     
    -                                if ( success )
    -                                {
    +                                if (success) {
                                         success = false;
    -                                    handleException( inputFeeder, "stdin" );
    +                                    handleException(inputFeeder, "stdin");
                                         success = true; // Only reached when no exception has been thrown.
                                     }
                                 }
    -                        }
    -                        finally
    -                        {
    -                            try
    -                            {
    -                                if ( outputPumper != null )
    -                                {
    +                        } finally {
    +                            try {
    +                                if (outputPumper != null) {
                                         outputPumper.close();
     
    -                                    if ( success )
    -                                    {
    +                                    if (success) {
                                             success = false;
    -                                        handleException( outputPumper, "stdout" );
    +                                        handleException(outputPumper, "stdout");
                                             success = true; // Only reached when no exception has been thrown.
                                         }
                                     }
    -                            }
    -                            finally
    -                            {
    -                                if ( errorPumper != null )
    -                                {
    +                            } finally {
    +                                if (errorPumper != null) {
                                         errorPumper.close();
     
    -                                    if ( success )
    -                                    {
    -                                        handleException( errorPumper, "stderr" );
    +                                    if (success) {
    +                                        handleException(errorPumper, "stderr");
                                         }
                                     }
                                 }
    @@ -321,29 +277,22 @@ public Integer call()
                         }
                     }
                 }
    -
             };
         }
     
    -    private static void handleException( final StreamPumper streamPumper, final String streamName )
    -        throws CommandLineException
    -    {
    -        if ( streamPumper.getException() != null )
    -        {
    -            throw new CommandLineException( String.format( "Failure processing %s.", streamName ),
    -                                            streamPumper.getException() );
    -
    +    private static void handleException(final StreamPumper streamPumper, final String streamName)
    +            throws CommandLineException {
    +        if (streamPumper.getException() != null) {
    +            throw new CommandLineException(
    +                    String.format("Failure processing %s.", streamName), streamPumper.getException());
             }
         }
     
    -    private static void handleException( final StreamFeeder streamFeeder, final String streamName )
    -        throws CommandLineException
    -    {
    -        if ( streamFeeder.getException() != null )
    -        {
    -            throw new CommandLineException( String.format( "Failure processing %s.", streamName ),
    -                                            streamFeeder.getException() );
    -
    +    private static void handleException(final StreamFeeder streamFeeder, final String streamName)
    +            throws CommandLineException {
    +        if (streamFeeder.getException() != null) {
    +            throw new CommandLineException(
    +                    String.format("Failure processing %s.", streamName), streamFeeder.getException());
             }
         }
     
    @@ -357,9 +306,8 @@ private static void handleException( final StreamFeeder streamFeeder, final Stri
          * @see System#getenv() System.getenv() API, new in JDK 5.0, to get the same result since 2.0.2 System#getenv()
          *      will be used if available in the current running jvm.
          */
    -    public static Properties getSystemEnvVars()
    -    {
    -        return getSystemEnvVars( !Os.isFamily( Os.FAMILY_WINDOWS ) );
    +    public static Properties getSystemEnvVars() {
    +        return getSystemEnvVars(!Os.isFamily(Os.FAMILY_WINDOWS));
         }
     
         /**
    @@ -371,45 +319,34 @@ public static Properties getSystemEnvVars()
          * @see System#getenv() System.getenv() API, new in JDK 5.0, to get the same result since 2.0.2 System#getenv()
          *      will be used if available in the current running jvm.
          */
    -    public static Properties getSystemEnvVars( boolean caseSensitive )
    -    {
    +    public static Properties getSystemEnvVars(boolean caseSensitive) {
             Properties envVars = new Properties();
             Map envs = System.getenv();
    -        for ( String key : envs.keySet() )
    -        {
    -            String value = envs.get( key );
    -            if ( !caseSensitive )
    -            {
    -                key = key.toUpperCase( Locale.ENGLISH );
    +        for (String key : envs.keySet()) {
    +            String value = envs.get(key);
    +            if (!caseSensitive) {
    +                key = key.toUpperCase(Locale.ENGLISH);
                 }
    -            envVars.put( key, value );
    +            envVars.put(key, value);
             }
             return envVars;
         }
     
    -    public static boolean isAlive( Process p )
    -    {
    -        if ( p == null )
    -        {
    +    public static boolean isAlive(Process p) {
    +        if (p == null) {
                 return false;
             }
     
    -        try
    -        {
    +        try {
                 p.exitValue();
                 return false;
    -        }
    -        catch ( IllegalThreadStateException e )
    -        {
    +        } catch (IllegalThreadStateException e) {
                 return true;
             }
         }
     
    -    public static String[] translateCommandline( String toProcess )
    -        throws Exception
    -    {
    -        if ( ( toProcess == null ) || ( toProcess.length() == 0 ) )
    -        {
    +    public static String[] translateCommandline(String toProcess) throws Exception {
    +        if ((toProcess == null) || (toProcess.length() == 0)) {
                 return new String[0];
             }
     
    @@ -419,72 +356,54 @@ public static String[] translateCommandline( String toProcess )
             final int inQuote = 1;
             final int inDoubleQuote = 2;
             int state = normal;
    -        StringTokenizer tok = new StringTokenizer( toProcess, "\"\' ", true );
    +        StringTokenizer tok = new StringTokenizer(toProcess, "\"\' ", true);
             Vector v = new Vector();
             StringBuilder current = new StringBuilder();
     
    -        while ( tok.hasMoreTokens() )
    -        {
    +        while (tok.hasMoreTokens()) {
                 String nextTok = tok.nextToken();
    -            switch ( state )
    -            {
    +            switch (state) {
                     case inQuote:
    -                    if ( "\'".equals( nextTok ) )
    -                    {
    +                    if ("\'".equals(nextTok)) {
                             state = normal;
    -                    }
    -                    else
    -                    {
    -                        current.append( nextTok );
    +                    } else {
    +                        current.append(nextTok);
                         }
                         break;
                     case inDoubleQuote:
    -                    if ( "\"".equals( nextTok ) )
    -                    {
    +                    if ("\"".equals(nextTok)) {
                             state = normal;
    -                    }
    -                    else
    -                    {
    -                        current.append( nextTok );
    +                    } else {
    +                        current.append(nextTok);
                         }
                         break;
                     default:
    -                    if ( "\'".equals( nextTok ) )
    -                    {
    +                    if ("\'".equals(nextTok)) {
                             state = inQuote;
    -                    }
    -                    else if ( "\"".equals( nextTok ) )
    -                    {
    +                    } else if ("\"".equals(nextTok)) {
                             state = inDoubleQuote;
    -                    }
    -                    else if ( " ".equals( nextTok ) )
    -                    {
    -                        if ( current.length() != 0 )
    -                        {
    -                            v.addElement( current.toString() );
    -                            current.setLength( 0 );
    +                    } else if (" ".equals(nextTok)) {
    +                        if (current.length() != 0) {
    +                            v.addElement(current.toString());
    +                            current.setLength(0);
                             }
    -                    }
    -                    else
    -                    {
    -                        current.append( nextTok );
    +                    } else {
    +                        current.append(nextTok);
                         }
                         break;
                 }
             }
     
    -        if ( current.length() != 0 )
    -        {
    -            v.addElement( current.toString() );
    +        if (current.length() != 0) {
    +            v.addElement(current.toString());
             }
     
    -        if ( ( state == inQuote ) || ( state == inDoubleQuote ) )
    -        {
    -            throw new CommandLineException( "unbalanced quotes in " + toProcess );
    +        if ((state == inQuote) || (state == inDoubleQuote)) {
    +            throw new CommandLineException("unbalanced quotes in " + toProcess);
             }
     
             String[] args = new String[v.size()];
    -        v.copyInto( args );
    +        v.copyInto(args);
             return args;
         }
     
    @@ -504,11 +423,9 @@ else if ( " ".equals( nextTok ) )
          *             {@link StringUtils#quoteAndEscape(String, char)} instead.
          */
         @Deprecated
    -    @SuppressWarnings( { "JavaDoc", "deprecation" } )
    -    public static String quote( String argument )
    -        throws CommandLineException
    -    {
    -        return quote( argument, false, false, true );
    +    @SuppressWarnings({"JavaDoc", "deprecation"})
    +    public static String quote(String argument) throws CommandLineException {
    +        return quote(argument, false, false, true);
         }
     
         /**
    @@ -528,11 +445,9 @@ public static String quote( String argument )
          *             {@link StringUtils#quoteAndEscape(String, char)} instead.
          */
         @Deprecated
    -    @SuppressWarnings( { "JavaDoc", "UnusedDeclaration", "deprecation" } )
    -    public static String quote( String argument, boolean wrapExistingQuotes )
    -        throws CommandLineException
    -    {
    -        return quote( argument, false, false, wrapExistingQuotes );
    +    @SuppressWarnings({"JavaDoc", "UnusedDeclaration", "deprecation"})
    +    public static String quote(String argument, boolean wrapExistingQuotes) throws CommandLineException {
    +        return quote(argument, false, false, wrapExistingQuotes);
         }
     
         /**
    @@ -547,48 +462,30 @@ public static String quote( String argument, boolean wrapExistingQuotes )
          *             {@link StringUtils#quoteAndEscape(String, char)} instead.
          */
         @Deprecated
    -    @SuppressWarnings( { "JavaDoc" } )
    -    public static String quote( String argument, boolean escapeSingleQuotes, boolean escapeDoubleQuotes,
    -                                boolean wrapExistingQuotes )
    -        throws CommandLineException
    -    {
    -        if ( argument.contains( "\"" ) )
    -        {
    -            if ( argument.contains( "\'" ) )
    -            {
    -                throw new CommandLineException( "Can't handle single and double quotes in same argument" );
    -            }
    -            else
    -            {
    -                if ( escapeSingleQuotes )
    -                {
    +    @SuppressWarnings({"JavaDoc"})
    +    public static String quote(
    +            String argument, boolean escapeSingleQuotes, boolean escapeDoubleQuotes, boolean wrapExistingQuotes)
    +            throws CommandLineException {
    +        if (argument.contains("\"")) {
    +            if (argument.contains("\'")) {
    +                throw new CommandLineException("Can't handle single and double quotes in same argument");
    +            } else {
    +                if (escapeSingleQuotes) {
                         return "\\\'" + argument + "\\\'";
    -                }
    -                else if ( wrapExistingQuotes )
    -                {
    +                } else if (wrapExistingQuotes) {
                         return '\'' + argument + '\'';
                     }
                 }
    -        }
    -        else if ( argument.contains( "\'" ) )
    -        {
    -            if ( escapeDoubleQuotes )
    -            {
    +        } else if (argument.contains("\'")) {
    +            if (escapeDoubleQuotes) {
                     return "\\\"" + argument + "\\\"";
    -            }
    -            else if ( wrapExistingQuotes )
    -            {
    +            } else if (wrapExistingQuotes) {
                     return '\"' + argument + '\"';
                 }
    -        }
    -        else if ( argument.contains( " " ) )
    -        {
    -            if ( escapeDoubleQuotes )
    -            {
    +        } else if (argument.contains(" ")) {
    +            if (escapeDoubleQuotes) {
                     return "\\\"" + argument + "\\\"";
    -            }
    -            else
    -            {
    +            } else {
                     return '\"' + argument + '\"';
                 }
             }
    @@ -596,32 +493,24 @@ else if ( argument.contains( " " ) )
             return argument;
         }
     
    -    public static String toString( String[] line )
    -    {
    +    public static String toString(String[] line) {
             // empty path return empty string
    -        if ( ( line == null ) || ( line.length == 0 ) )
    -        {
    +        if ((line == null) || (line.length == 0)) {
                 return "";
             }
     
             // path containing one or more elements
             final StringBuilder result = new StringBuilder();
    -        for ( int i = 0; i < line.length; i++ )
    -        {
    -            if ( i > 0 )
    -            {
    -                result.append( ' ' );
    +        for (int i = 0; i < line.length; i++) {
    +            if (i > 0) {
    +                result.append(' ');
                 }
    -            try
    -            {
    -                result.append( StringUtils.quoteAndEscape( line[i], '\"' ) );
    -            }
    -            catch ( Exception e )
    -            {
    -                System.err.println( "Error quoting argument: " + e.getMessage() );
    +            try {
    +                result.append(StringUtils.quoteAndEscape(line[i], '\"'));
    +            } catch (Exception e) {
    +                System.err.println("Error quoting argument: " + e.getMessage());
                 }
             }
             return result.toString();
         }
    -
     }
    diff --git a/src/main/java/org/codehaus/plexus/util/cli/Commandline.java b/src/main/java/org/codehaus/plexus/util/cli/Commandline.java
    index c06147a9..db145c50 100644
    --- a/src/main/java/org/codehaus/plexus/util/cli/Commandline.java
    +++ b/src/main/java/org/codehaus/plexus/util/cli/Commandline.java
    @@ -57,13 +57,6 @@
      * ====================================================================
      */
     
    -import org.codehaus.plexus.util.Os;
    -import org.codehaus.plexus.util.StringUtils;
    -import org.codehaus.plexus.util.cli.shell.BourneShell;
    -import org.codehaus.plexus.util.cli.shell.CmdShell;
    -import org.codehaus.plexus.util.cli.shell.CommandShell;
    -import org.codehaus.plexus.util.cli.shell.Shell;
    -
     import java.io.File;
     import java.io.IOException;
     import java.util.Collections;
    @@ -72,12 +65,19 @@
     import java.util.Properties;
     import java.util.Vector;
     
    +import org.codehaus.plexus.util.Os;
    +import org.codehaus.plexus.util.StringUtils;
    +import org.codehaus.plexus.util.cli.shell.BourneShell;
    +import org.codehaus.plexus.util.cli.shell.CmdShell;
    +import org.codehaus.plexus.util.cli.shell.CommandShell;
    +import org.codehaus.plexus.util.cli.shell.Shell;
    +
     /**
      * 

    Commandline objects help handling command lines specifying processes to execute.

    - * + * *

    The class can be used to define a command line as nested elements or as a helper to define a command line by an * application.

    - * + * * * <someelement>
    *   <acommandline executable="/executable/to/run">
    @@ -87,16 +87,14 @@ *   </acommandline>
    * </someelement>
    *
    - * + * *

    The element someelement must provide a method createAcommandline which returns an instance * of this class.

    * * @author thomas.haas@softwired-inc.com * @author Stefan Bodewig */ -public class Commandline - implements Cloneable -{ +public class Commandline implements Cloneable { /** * @deprecated Use {@link org.codehaus.plexus.util.Os} class instead. */ @@ -113,7 +111,7 @@ public class Commandline // protected Vector envVars = new Vector(); // synchronized added to preserve synchronize of Vector class - protected Map envVars = Collections.synchronizedMap( new LinkedHashMap() ); + protected Map envVars = Collections.synchronizedMap(new LinkedHashMap()); private long pid = -1; @@ -139,25 +137,19 @@ public class Commandline * @param toProcess sh to process * @param shell Shell to use */ - public Commandline( String toProcess, Shell shell ) - { + public Commandline(String toProcess, Shell shell) { this.shell = shell; String[] tmp = new String[0]; - try - { - tmp = CommandLineUtils.translateCommandline( toProcess ); - } - catch ( Exception e ) - { - System.err.println( "Error translating Commandline." ); - } - if ( ( tmp != null ) && ( tmp.length > 0 ) ) - { - setExecutable( tmp[0] ); - for ( int i = 1; i < tmp.length; i++ ) - { - createArgument().setValue( tmp[i] ); + try { + tmp = CommandLineUtils.translateCommandline(toProcess); + } catch (Exception e) { + System.err.println("Error translating Commandline."); + } + if ((tmp != null) && (tmp.length > 0)) { + setExecutable(tmp[0]); + for (int i = 1; i < tmp.length; i++) { + createArgument().setValue(tmp[i]); } } } @@ -167,8 +159,7 @@ public Commandline( String toProcess, Shell shell ) * generating code for remote execution. * @param shell the Shell */ - public Commandline( Shell shell ) - { + public Commandline(Shell shell) { this.shell = shell; } @@ -177,24 +168,18 @@ public Commandline( Shell shell ) * * @param toProcess the process */ - public Commandline( String toProcess ) - { + public Commandline(String toProcess) { setDefaultShell(); String[] tmp = new String[0]; - try - { - tmp = CommandLineUtils.translateCommandline( toProcess ); - } - catch ( Exception e ) - { - System.err.println( "Error translating Commandline." ); - } - if ( ( tmp != null ) && ( tmp.length > 0 ) ) - { - setExecutable( tmp[0] ); - for ( int i = 1; i < tmp.length; i++ ) - { - createArgument().setValue( tmp[i] ); + try { + tmp = CommandLineUtils.translateCommandline(toProcess); + } catch (Exception e) { + System.err.println("Error translating Commandline."); + } + if ((tmp != null) && (tmp.length > 0)) { + setExecutable(tmp[0]); + for (int i = 1; i < tmp.length; i++) { + createArgument().setValue(tmp[i]); } } } @@ -202,23 +187,19 @@ public Commandline( String toProcess ) /** * Create a new command line object. */ - public Commandline() - { + public Commandline() { setDefaultShell(); } - public long getPid() - { - if ( pid == -1 ) - { - pid = Long.parseLong( String.valueOf( System.currentTimeMillis() ) ); + public long getPid() { + if (pid == -1) { + pid = Long.parseLong(String.valueOf(System.currentTimeMillis())); } return pid; } - public void setPid( long pid ) - { + public void setPid(long pid) { this.pid = pid; } @@ -228,31 +209,26 @@ public void setPid( long pid ) //

    This class is there to support the srcfile and targetfile // elements of <execon> and <transform> - don't know // whether there might be additional use cases.

    --SB - public class Marker - { + public class Marker { private int position; private int realPos = -1; - Marker( int position ) - { + Marker(int position) { this.position = position; } /** * @return the number of arguments that preceded this marker. - * + * *

    The name of the executable - if set - is counted as the very first argument.

    */ - public int getPosition() - { - if ( realPos == -1 ) - { - realPos = ( getLiteralExecutable() == null ? 0 : 1 ); - for ( int i = 0; i < position; i++ ) - { - Arg arg = arguments.elementAt( i ); + public int getPosition() { + if (realPos == -1) { + realPos = (getLiteralExecutable() == null ? 0 : 1); + for (int i = 0; i < position; i++) { + Arg arg = arguments.elementAt(i); realPos += arg.getParts().length; } } @@ -265,29 +241,22 @@ public int getPosition() * Sets the shell or command-line interpreter for the detected operating system, and the shell arguments. *

    */ - private void setDefaultShell() - { + private void setDefaultShell() { // If this is windows set the shell to command.com or cmd.exe with correct arguments. - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - if ( Os.isFamily( Os.FAMILY_WIN9X ) ) - { - setShell( new CommandShell() ); - } - else - { - setShell( new CmdShell() ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + if (Os.isFamily(Os.FAMILY_WIN9X)) { + setShell(new CommandShell()); + } else { + setShell(new CmdShell()); } - } - else - { - setShell( new BourneShell() ); + } else { + setShell(new BourneShell()); } } /** *

    Creates an argument object.

    - * + * *

    Each commandline object has at most one instance of the argument class. This method calls * this.createArgument(false).

    * @@ -296,14 +265,13 @@ private void setDefaultShell() * @deprecated Use {@link Commandline#createArg()} instead */ @Deprecated - public Argument createArgument() - { - return this.createArgument( false ); + public Argument createArgument() { + return this.createArgument(false); } /** *

    Creates an argument object and adds it to our list of args.

    - * + * *

    Each commandline object has at most one instance of the argument class.

    * * @param insertAtStart if true, the argument is inserted at the beginning of the list of args, otherwise it is @@ -312,52 +280,43 @@ public Argument createArgument() * @return Argument the argument Object */ @Deprecated - public Argument createArgument( boolean insertAtStart ) - { + public Argument createArgument(boolean insertAtStart) { Argument argument = new Argument(); - if ( insertAtStart ) - { - arguments.insertElementAt( argument, 0 ); - } - else - { - arguments.addElement( argument ); + if (insertAtStart) { + arguments.insertElementAt(argument, 0); + } else { + arguments.addElement(argument); } return argument; } /** *

    Creates an argument object.

    - * + * *

    Each commandline object has at most one instance of the argument class. This method calls * this.createArgument(false).

    * * @return the argument object. * @see #createArgument(boolean) */ - public Arg createArg() - { - return this.createArg( false ); + public Arg createArg() { + return this.createArg(false); } /** * @return Creates an argument object and adds it to our list of args. - * + * *

    Each commandline object has at most one instance of the argument class.

    * * @param insertAtStart if true, the argument is inserted at the beginning of the list of args, otherwise it is * appended. */ - public Arg createArg( boolean insertAtStart ) - { + public Arg createArg(boolean insertAtStart) { Arg argument = new Argument(); - if ( insertAtStart ) - { - arguments.insertElementAt( argument, 0 ); - } - else - { - arguments.addElement( argument ); + if (insertAtStart) { + arguments.insertElementAt(argument, 0); + } else { + arguments.addElement(argument); } return argument; } @@ -366,9 +325,8 @@ public Arg createArg( boolean insertAtStart ) * @param argument the argument * @see #addArg(Arg,boolean) */ - public void addArg( Arg argument ) - { - this.addArg( argument, false ); + public void addArg(Arg argument) { + this.addArg(argument, false); } /** @@ -377,15 +335,11 @@ public void addArg( Arg argument ) * @param insertAtStart if true, the argument is inserted at the beginning of the list of args, otherwise it is * appended. */ - public void addArg( Arg argument, boolean insertAtStart ) - { - if ( insertAtStart ) - { - arguments.insertElementAt( argument, 0 ); - } - else - { - arguments.addElement( argument ); + public void addArg(Arg argument, boolean insertAtStart) { + if (insertAtStart) { + arguments.insertElementAt(argument, 0); + } else { + arguments.addElement(argument); } } @@ -393,17 +347,15 @@ public void addArg( Arg argument, boolean insertAtStart ) * Sets the executable to run. * @param executable the executable */ - public void setExecutable( String executable ) - { - shell.setExecutable( executable ); + public void setExecutable(String executable) { + shell.setExecutable(executable); this.executable = executable; } /** * @return Executable to be run, as a literal string (no shell quoting/munging) */ - public String getLiteralExecutable() - { + public String getLiteralExecutable() { return executable; } @@ -413,23 +365,19 @@ public String getLiteralExecutable() * * @return Executable to be run, quoted for shell interpretation */ - public String getExecutable() - { + public String getExecutable() { String exec = shell.getExecutable(); - if ( exec == null ) - { + if (exec == null) { exec = executable; } return exec; } - public void addArguments( String[] line ) - { - for ( String aLine : line ) - { - createArgument().setValue( aLine ); + public void addArguments(String[] line) { + for (String aLine : line) { + createArgument().setValue(aLine); } } @@ -438,27 +386,22 @@ public void addArguments( String[] line ) * @param name name * @param value value */ - public void addEnvironment( String name, String value ) - { + public void addEnvironment(String name, String value) { // envVars.add( name + "=" + value ); - envVars.put( name, value ); + envVars.put(name, value); } /** * Add system environment variables * @throws Exception if error */ - public void addSystemEnvironment() - throws Exception - { + public void addSystemEnvironment() throws Exception { Properties systemEnvVars = CommandLineUtils.getSystemEnvVars(); - for ( Object o : systemEnvVars.keySet() ) - { + for (Object o : systemEnvVars.keySet()) { String key = (String) o; - if ( !envVars.containsKey( key ) ) - { - addEnvironment( key, systemEnvVars.getProperty( key ) ); + if (!envVars.containsKey(key)) { + addEnvironment(key, systemEnvVars.getProperty(key)); } } } @@ -467,23 +410,17 @@ public void addSystemEnvironment() * @return String[] Return the list of environment variables * @throws CommandLineException if error */ - public String[] getEnvironmentVariables() - throws CommandLineException - { - try - { + public String[] getEnvironmentVariables() throws CommandLineException { + try { addSystemEnvironment(); - } - catch ( Exception e ) - { - throw new CommandLineException( "Error setting up environmental variables", e ); + } catch (Exception e) { + throw new CommandLineException("Error setting up environmental variables", e); } String[] environmentVars = new String[envVars.size()]; int i = 0; - for ( Object o : envVars.keySet() ) - { + for (Object o : envVars.keySet()) { String name = (String) o; - String value = envVars.get( name ); + String value = envVars.get(name); environmentVars[i] = name + "=" + value; i++; } @@ -494,10 +431,8 @@ public String[] getEnvironmentVariables() * @return Returns the executable and all defined arguments. * For Windows Family, {@link Commandline#getShellCommandline()} is returned */ - public String[] getCommandline() - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { + public String[] getCommandline() { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { return getShellCommandline(); } @@ -508,87 +443,76 @@ public String[] getCommandline() * Returns the executable and all defined arguments. * @return the command line as array not escaped neither quoted */ - public String[] getRawCommandline() - { + public String[] getRawCommandline() { final String[] args = getArguments(); String executable = getLiteralExecutable(); - if ( executable == null ) - { + if (executable == null) { return args; } final String[] result = new String[args.length + 1]; result[0] = executable; - System.arraycopy( args, 0, result, 1, args.length ); + System.arraycopy(args, 0, result, 1, args.length); return result; } - /** + /** * Returns the shell, executable and all defined arguments. Shell usage is only desirable when generating code for * remote execution. * @return the command line as array */ - public String[] getShellCommandline() - { + public String[] getShellCommandline() { // TODO: Provided only for backward compat. with <= 1.4 verifyShellState(); - return getShell().getShellCommandLine( getArguments() ).toArray( new String[0] ); + return getShell().getShellCommandLine(getArguments()).toArray(new String[0]); } /** * @return Returns all arguments defined by addLine, addValue or the argument object. */ - public String[] getArguments() - { - Vector result = new Vector<>( arguments.size() * 2 ); - for ( int i = 0; i < arguments.size(); i++ ) - { - Arg arg = arguments.elementAt( i ); + public String[] getArguments() { + Vector result = new Vector<>(arguments.size() * 2); + for (int i = 0; i < arguments.size(); i++) { + Arg arg = arguments.elementAt(i); String[] s = arg.getParts(); - if ( s != null ) - { - for ( String value : s ) - { - result.addElement( value ); + if (s != null) { + for (String value : s) { + result.addElement(value); } } } String[] res = new String[result.size()]; - result.copyInto( res ); + result.copyInto(res); return res; } @Override - public String toString() - { - return StringUtils.join( getShellCommandline(), " " ); + public String toString() { + return StringUtils.join(getShellCommandline(), " "); } - public int size() - { + public int size() { return getCommandline().length; } @Override - public Object clone() - { - Commandline c = new Commandline( (Shell) shell.clone() ); + public Object clone() { + Commandline c = new Commandline((Shell) shell.clone()); c.executable = executable; c.workingDir = workingDir; - c.addArguments( getArguments() ); + c.addArguments(getArguments()); return c; } /** * Clear out the whole command line. */ - public void clear() - { + public void clear() { executable = null; workingDir = null; - shell.setExecutable( null ); + shell.setExecutable(null); shell.clearArguments(); arguments.removeAllElements(); } @@ -596,8 +520,7 @@ public void clear() /** * Clear out the arguments but leave the executable in place for another operation. */ - public void clearArgs() - { + public void clearArgs() { arguments.removeAllElements(); } @@ -608,37 +531,32 @@ public void clearArgs() *

    * @return Return a marker. */ - public Marker createMarker() - { - return new Marker( arguments.size() ); + public Marker createMarker() { + return new Marker(arguments.size()); } /** * Sets execution directory. * @param path the working directory as String */ - public void setWorkingDirectory( String path ) - { - shell.setWorkingDirectory( path ); - workingDir = new File( path ); + public void setWorkingDirectory(String path) { + shell.setWorkingDirectory(path); + workingDir = new File(path); } /** * Sets execution directory. * @param workingDirectory the File used as working directory */ - public void setWorkingDirectory( File workingDirectory ) - { - shell.setWorkingDirectory( workingDirectory ); + public void setWorkingDirectory(File workingDirectory) { + shell.setWorkingDirectory(workingDirectory); workingDir = workingDirectory; } - public File getWorkingDirectory() - { + public File getWorkingDirectory() { File workDir = shell.getWorkingDirectory(); - if ( workDir == null ) - { + if (workDir == null) { workDir = workingDir; } @@ -650,9 +568,7 @@ public File getWorkingDirectory() * @return the Process * @throws CommandLineException if error */ - public Process execute() - throws CommandLineException - { + public Process execute() throws CommandLineException { // TODO: Provided only for backward compat. with <= 1.4 verifyShellState(); @@ -664,31 +580,22 @@ public Process execute() File workingDir = shell.getWorkingDirectory(); - try - { - if ( workingDir == null ) - { - process = Runtime.getRuntime().exec( getCommandline(), environment, workingDir ); - } - else - { - if ( !workingDir.exists() ) - { - throw new CommandLineException( "Working directory \"" + workingDir.getPath() - + "\" does not exist!" ); - } - else if ( !workingDir.isDirectory() ) - { - throw new CommandLineException( "Path \"" + workingDir.getPath() - + "\" does not specify a directory." ); + try { + if (workingDir == null) { + process = Runtime.getRuntime().exec(getCommandline(), environment, workingDir); + } else { + if (!workingDir.exists()) { + throw new CommandLineException( + "Working directory \"" + workingDir.getPath() + "\" does not exist!"); + } else if (!workingDir.isDirectory()) { + throw new CommandLineException( + "Path \"" + workingDir.getPath() + "\" does not specify a directory."); } - process = Runtime.getRuntime().exec( getCommandline(), environment, workingDir ); + process = Runtime.getRuntime().exec(getCommandline(), environment, workingDir); } - } - catch ( IOException ex ) - { - throw new CommandLineException( "Error while executing process.", ex ); + } catch (IOException ex) { + throw new CommandLineException("Error while executing process.", ex); } return process; @@ -698,22 +605,17 @@ else if ( !workingDir.isDirectory() ) * @deprecated Remove once backward compat with plexus-utils <= 1.4 is no longer a consideration */ @Deprecated - private void verifyShellState() - { - if ( shell.getWorkingDirectory() == null ) - { - shell.setWorkingDirectory( workingDir ); + private void verifyShellState() { + if (shell.getWorkingDirectory() == null) { + shell.setWorkingDirectory(workingDir); } - if ( shell.getOriginalExecutable() == null ) - { - shell.setExecutable( executable ); + if (shell.getOriginalExecutable() == null) { + shell.setExecutable(executable); } } - public Properties getSystemEnvVars() - throws Exception - { + public Properties getSystemEnvVars() throws Exception { return CommandLineUtils.getSystemEnvVars(); } @@ -724,20 +626,18 @@ public Properties getSystemEnvVars() * @param shell Shell to use * @since 1.2 */ - public void setShell( Shell shell ) - { + public void setShell(Shell shell) { this.shell = shell; } /** * Get the shell to be used in this command line. Shell usage is only desirable when generating code for remote * execution. - * + * * @since 1.2 * @return the Shell */ - public Shell getShell() - { + public Shell getShell() { return shell; } @@ -748,10 +648,8 @@ public Shell getShell() * @deprecated Use {@link CommandLineUtils#translateCommandline(String)} instead. */ @Deprecated - public static String[] translateCommandline( String toProcess ) - throws Exception - { - return CommandLineUtils.translateCommandline( toProcess ); + public static String[] translateCommandline(String toProcess) throws Exception { + return CommandLineUtils.translateCommandline(toProcess); } /** @@ -761,10 +659,8 @@ public static String[] translateCommandline( String toProcess ) * @deprecated Use {@link CommandLineUtils#quote(String)} instead. */ @Deprecated - public static String quoteArgument( String argument ) - throws CommandLineException - { - return CommandLineUtils.quote( argument ); + public static String quoteArgument(String argument) throws CommandLineException { + return CommandLineUtils.quote(argument); } /** @@ -773,14 +669,11 @@ public static String quoteArgument( String argument ) * @return lines as single String */ @Deprecated - public static String toString( String[] line ) - { - return CommandLineUtils.toString( line ); + public static String toString(String[] line) { + return CommandLineUtils.toString(line); } - public static class Argument - implements Arg - { + public static class Argument implements Arg { private String[] parts; /* @@ -788,11 +681,9 @@ public static class Argument * @see org.codehaus.plexus.util.cli.Argument#setValue(java.lang.String) */ @Override - public void setValue( String value ) - { - if ( value != null ) - { - parts = new String[] { value }; + public void setValue(String value) { + if (value != null) { + parts = new String[] {value}; } } @@ -801,19 +692,14 @@ public void setValue( String value ) * @see org.codehaus.plexus.util.cli.Argument#setLine(java.lang.String) */ @Override - public void setLine( String line ) - { - if ( line == null ) - { + public void setLine(String line) { + if (line == null) { return; } - try - { - parts = CommandLineUtils.translateCommandline( line ); - } - catch ( Exception e ) - { - System.err.println( "Error translating Commandline." ); + try { + parts = CommandLineUtils.translateCommandline(line); + } catch (Exception e) { + System.err.println("Error translating Commandline."); } } @@ -822,9 +708,8 @@ public void setLine( String line ) * @see org.codehaus.plexus.util.cli.Argument#setFile(java.io.File) */ @Override - public void setFile( File value ) - { - parts = new String[] { value.getAbsolutePath() }; + public void setFile(File value) { + parts = new String[] {value.getAbsolutePath()}; } /* @@ -832,8 +717,7 @@ public void setFile( File value ) * @see org.codehaus.plexus.util.cli.Argument#getParts() */ @Override - public String[] getParts() - { + public String[] getParts() { return parts; } } diff --git a/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java b/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java index 802dfb02..3808db81 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java +++ b/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java @@ -22,20 +22,14 @@ * @author Emmanuel Venisse * */ -public class DefaultConsumer - implements StreamConsumer -{ +public class DefaultConsumer implements StreamConsumer { @Override - public void consumeLine( String line ) - throws IOException - { - System.out.println( line ); + public void consumeLine(String line) throws IOException { + System.out.println(line); - if ( System.out.checkError() ) - { - throw new IOException( String.format( "Failure printing line '%s' to stdout.", line ) ); + if (System.out.checkError()) { + throw new IOException(String.format("Failure printing line '%s' to stdout.", line)); } } - } diff --git a/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java b/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java index 2db89002..565a87cf 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java +++ b/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java @@ -21,11 +21,10 @@ /** * The java.util.StringTokenizer is horribly broken. Given the string 1,,,3,,4 (, delim) It will return 1,3,4 Which is * clearly wrong - 1,EMPTY,EMPTY,3,EMPTY,4 is what it should return - * + * * */ -public final class EnhancedStringTokenizer -{ +public final class EnhancedStringTokenizer { private StringTokenizer cst = null; String cdelim; @@ -40,98 +39,73 @@ public final class EnhancedStringTokenizer boolean delimLast = true; - public EnhancedStringTokenizer( String str ) - { - this( str, " \t\n\r\f", false ); + public EnhancedStringTokenizer(String str) { + this(str, " \t\n\r\f", false); } - public EnhancedStringTokenizer( String str, String delim ) - { - this( str, delim, false ); + public EnhancedStringTokenizer(String str, String delim) { + this(str, delim, false); } - public EnhancedStringTokenizer( String str, String delim, boolean returnDelims ) - { - cst = new StringTokenizer( str, delim, true ); + public EnhancedStringTokenizer(String str, String delim, boolean returnDelims) { + cst = new StringTokenizer(str, delim, true); cdelim = delim; creturnDelims = returnDelims; - cdelimSingleChar = ( delim.length() == 1 ); - cdelimChar = delim.charAt( 0 ); + cdelimSingleChar = (delim.length() == 1); + cdelimChar = delim.charAt(0); } - public boolean hasMoreTokens() - { + public boolean hasMoreTokens() { return cst.hasMoreTokens(); } - private String internalNextToken() - { - if ( lastToken != null ) - { + private String internalNextToken() { + if (lastToken != null) { String last = lastToken; lastToken = null; return last; } String token = cst.nextToken(); - if ( isDelim( token ) ) - { - if ( delimLast ) - { + if (isDelim(token)) { + if (delimLast) { lastToken = token; return ""; - } - else - { + } else { delimLast = true; return token; } - } - else - { + } else { delimLast = false; return token; } } - public String nextToken() - { + public String nextToken() { String token = internalNextToken(); - if ( creturnDelims ) - { + if (creturnDelims) { return token; } - if ( isDelim( token ) ) - { + if (isDelim(token)) { return hasMoreTokens() ? internalNextToken() : ""; - } - else - { + } else { return token; } } - private boolean isDelim( String str ) - { - if ( str.length() == 1 ) - { - char ch = str.charAt( 0 ); - if ( cdelimSingleChar ) - { - if ( cdelimChar == ch ) - { + private boolean isDelim(String str) { + if (str.length() == 1) { + char ch = str.charAt(0); + if (cdelimSingleChar) { + if (cdelimChar == ch) { return true; } - } - else - { - if ( cdelim.indexOf( ch ) >= 0 ) - { + } else { + if (cdelim.indexOf(ch) >= 0) { return true; } } } return false; - } } diff --git a/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java b/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java index 453b566e..bb967b42 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java +++ b/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java @@ -24,36 +24,21 @@ * * @author Kristian Rosenvold */ -class ShutdownHookUtils -{ +class ShutdownHookUtils { - public static void addShutDownHook( Thread hook ) - { - try - { - Runtime.getRuntime().addShutdownHook( hook ); + public static void addShutDownHook(Thread hook) { + try { + Runtime.getRuntime().addShutdownHook(hook); + } catch (IllegalStateException ignore) { + } catch (AccessControlException ignore) { } - catch ( IllegalStateException ignore ) - { - } - catch ( AccessControlException ignore ) - { - } - } - public static void removeShutdownHook( Thread hook ) - { - try - { - Runtime.getRuntime().removeShutdownHook( hook ); - } - catch ( IllegalStateException ignore ) - { - } - catch ( AccessControlException ignore ) - { + public static void removeShutdownHook(Thread hook) { + try { + Runtime.getRuntime().removeShutdownHook(hook); + } catch (IllegalStateException ignore) { + } catch (AccessControlException ignore) { } } - } diff --git a/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java b/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java index e01bda2c..7367ccdc 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java +++ b/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java @@ -52,7 +52,6 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ********************************************************************************/ - import java.io.IOException; /** @@ -64,14 +63,12 @@ * @author Paul Julius * */ -public interface StreamConsumer -{ +public interface StreamConsumer { /** * Called when the StreamPumper pumps a line from the Stream. - * + * * @param line The line to be consumed. * @throws IOException if consuming {@code line} fails. */ - public void consumeLine( String line ) - throws IOException; + public void consumeLine(String line) throws IOException; } diff --git a/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java b/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java index 270d7d8b..81289044 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java +++ b/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java @@ -26,9 +26,7 @@ * @author Trygve Laugstøl * */ -public class StreamFeeder - extends AbstractStreamHandler -{ +public class StreamFeeder extends AbstractStreamHandler { private InputStream input; @@ -42,33 +40,24 @@ public class StreamFeeder * @param input Stream to read from * @param output Stream to write to */ - public StreamFeeder( InputStream input, OutputStream output ) - { + public StreamFeeder(InputStream input, OutputStream output) { super(); this.input = input; this.output = output; } @Override - public void run() - { - try - { + public void run() { + try { feed(); - } - catch ( Throwable ex ) - { - if ( exception == null ) - { + } catch (Throwable ex) { + if (exception == null) { exception = ex; } - } - finally - { + } finally { close(); - synchronized ( this ) - { + synchronized (this) { setDone(); this.notifyAll(); @@ -76,20 +65,13 @@ public void run() } } - public void close() - { - if ( input != null ) - { - synchronized ( input ) - { - try - { + public void close() { + if (input != null) { + synchronized (input) { + try { input.close(); - } - catch ( IOException ex ) - { - if ( exception == null ) - { + } catch (IOException ex) { + if (exception == null) { exception = ex; } } @@ -98,18 +80,12 @@ public void close() } } - if ( output != null ) - { - synchronized ( output ) - { - try - { + if (output != null) { + synchronized (output) { + try { output.close(); - } - catch ( IOException ex ) - { - if ( exception == null ) - { + } catch (IOException ex) { + if (exception == null) { exception = ex; } } @@ -123,24 +99,18 @@ public void close() * @since 3.1.0 * @return the Exception */ - public Throwable getException() - { + public Throwable getException() { return exception; } - private void feed() - throws IOException - { + private void feed() throws IOException { boolean flush = false; int data = input.read(); - while ( !isDone() && data != -1 ) - { - synchronized ( output ) - { - if ( !isDisabled() ) - { - output.write( data ); + while (!isDone() && data != -1) { + synchronized (output) { + if (!isDisabled()) { + output.write(data); flush = true; } @@ -148,10 +118,8 @@ private void feed() } } - if ( flush ) - { + if (flush) { output.flush(); } } - } diff --git a/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java b/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java index 12126e88..9c4865ff 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java +++ b/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java @@ -84,9 +84,7 @@ * * @since June 11, 2001 */ -public class StreamPumper - extends AbstractStreamHandler -{ +public class StreamPumper extends AbstractStreamHandler { private final BufferedReader in; private final StreamConsumer consumer; @@ -97,93 +95,68 @@ public class StreamPumper private static final int SIZE = 1024; - public StreamPumper( InputStream in ) - { - this( in, (StreamConsumer) null ); + public StreamPumper(InputStream in) { + this(in, (StreamConsumer) null); } - public StreamPumper( InputStream in, StreamConsumer consumer ) - { - this( in, null, consumer ); + public StreamPumper(InputStream in, StreamConsumer consumer) { + this(in, null, consumer); } - public StreamPumper( InputStream in, PrintWriter writer ) - { - this( in, writer, null ); + public StreamPumper(InputStream in, PrintWriter writer) { + this(in, writer, null); } - public StreamPumper( InputStream in, PrintWriter writer, StreamConsumer consumer ) - { + public StreamPumper(InputStream in, PrintWriter writer, StreamConsumer consumer) { super(); - this.in = new BufferedReader( new InputStreamReader( in ), SIZE ); + this.in = new BufferedReader(new InputStreamReader(in), SIZE); this.out = writer; this.consumer = consumer; } @Override - public void run() - { + public void run() { boolean outError = out != null ? out.checkError() : false; - try - { - for ( String line = in.readLine(); line != null; line = in.readLine() ) - { - try - { - if ( exception == null && consumer != null && !isDisabled() ) - { - consumer.consumeLine( line ); + try { + for (String line = in.readLine(); line != null; line = in.readLine()) { + try { + if (exception == null && consumer != null && !isDisabled()) { + consumer.consumeLine(line); } - } - catch ( Exception t ) - { + } catch (Exception t) { exception = t; } - if ( out != null && !outError ) - { - out.println( line ); + if (out != null && !outError) { + out.println(line); out.flush(); - if ( out.checkError() ) - { + if (out.checkError()) { outError = true; - try - { + try { // Thrown to fill in stack trace elements. - throw new IOException( String.format( "Failure printing line '%s'.", line ) ); - } - catch ( final IOException e ) - { + throw new IOException(String.format("Failure printing line '%s'.", line)); + } catch (final IOException e) { exception = e; } } } } - } - catch ( IOException e ) - { + } catch (IOException e) { exception = e; - } - finally - { - try - { + } finally { + try { in.close(); - } - catch ( final IOException e2 ) - { - if ( exception == null ) - { + } catch (final IOException e2) { + if (exception == null) { exception = e2; } } - synchronized ( this ) - { + synchronized (this) { setDone(); this.notifyAll(); @@ -191,50 +164,37 @@ public void run() } } - public void flush() - { - if ( out != null ) - { + public void flush() { + if (out != null) { out.flush(); - if ( out.checkError() && exception == null ) - { - try - { + if (out.checkError() && exception == null) { + try { // Thrown to fill in stack trace elements. - throw new IOException( "Failure flushing output." ); - } - catch ( final IOException e ) - { + throw new IOException("Failure flushing output."); + } catch (final IOException e) { exception = e; } } } } - public void close() - { - if ( out != null ) - { + public void close() { + if (out != null) { out.close(); - if ( out.checkError() && exception == null ) - { - try - { + if (out.checkError() && exception == null) { + try { // Thrown to fill in stack trace elements. - throw new IOException( "Failure closing output." ); - } - catch ( final IOException e ) - { + throw new IOException("Failure closing output."); + } catch (final IOException e) { exception = e; } } } } - public Exception getException() - { + public Exception getException() { return exception; } } diff --git a/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java b/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java index ed24136e..b8e6cc2e 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java +++ b/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java @@ -23,20 +23,16 @@ * @author Jason van Zyl * */ -public class WriterStreamConsumer - implements StreamConsumer -{ +public class WriterStreamConsumer implements StreamConsumer { private PrintWriter writer; - public WriterStreamConsumer( Writer writer ) - { - this.writer = new PrintWriter( writer ); + public WriterStreamConsumer(Writer writer) { + this.writer = new PrintWriter(writer); } @Override - public void consumeLine( String line ) - { - writer.println( line ); + public void consumeLine(String line) { + writer.println(line); writer.flush(); } diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java index 089bc6fd..912a431b 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java +++ b/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java @@ -16,83 +16,71 @@ * limitations under the License. */ -import org.codehaus.plexus.util.Os; - import java.util.ArrayList; import java.util.List; +import org.codehaus.plexus.util.Os; + /** * @author Jason van Zyl * */ -public class BourneShell - extends Shell -{ +public class BourneShell extends Shell { - public BourneShell() - { - this( false ); + public BourneShell() { + this(false); } - public BourneShell( boolean isLoginShell ) - { - setUnconditionalQuoting( true ); - setShellCommand( "/bin/sh" ); - setArgumentQuoteDelimiter( '\'' ); - setExecutableQuoteDelimiter( '\'' ); - setSingleQuotedArgumentEscaped( true ); - setSingleQuotedExecutableEscaped( false ); - setQuotedExecutableEnabled( true ); - setArgumentEscapePattern( "'\\%s'" ); - - if ( isLoginShell ) - { - addShellArg( "-l" ); + public BourneShell(boolean isLoginShell) { + setUnconditionalQuoting(true); + setShellCommand("/bin/sh"); + setArgumentQuoteDelimiter('\''); + setExecutableQuoteDelimiter('\''); + setSingleQuotedArgumentEscaped(true); + setSingleQuotedExecutableEscaped(false); + setQuotedExecutableEnabled(true); + setArgumentEscapePattern("'\\%s'"); + + if (isLoginShell) { + addShellArg("-l"); } } /** {@inheritDoc} */ @Override - public String getExecutable() - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { + public String getExecutable() { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { return super.getExecutable(); } - return quoteOneItem( super.getOriginalExecutable(), true ); + return quoteOneItem(super.getOriginalExecutable(), true); } @Override - public List getShellArgsList() - { + public List getShellArgsList() { List shellArgs = new ArrayList(); List existingShellArgs = super.getShellArgsList(); - if ( ( existingShellArgs != null ) && !existingShellArgs.isEmpty() ) - { - shellArgs.addAll( existingShellArgs ); + if ((existingShellArgs != null) && !existingShellArgs.isEmpty()) { + shellArgs.addAll(existingShellArgs); } - shellArgs.add( "-c" ); + shellArgs.add("-c"); return shellArgs; } @Override - public String[] getShellArgs() - { + public String[] getShellArgs() { String[] shellArgs = super.getShellArgs(); - if ( shellArgs == null ) - { + if (shellArgs == null) { shellArgs = new String[0]; } - if ( ( shellArgs.length > 0 ) && !shellArgs[shellArgs.length - 1].equals( "-c" ) ) - { + if ((shellArgs.length > 0) && !shellArgs[shellArgs.length - 1].equals("-c")) { String[] newArgs = new String[shellArgs.length + 1]; - System.arraycopy( shellArgs, 0, newArgs, 0, shellArgs.length ); + System.arraycopy(shellArgs, 0, newArgs, 0, shellArgs.length); newArgs[shellArgs.length] = "-c"; shellArgs = newArgs; @@ -102,19 +90,17 @@ public String[] getShellArgs() } @Override - protected String getExecutionPreamble() - { - if ( getWorkingDirectoryAsString() == null ) - { + protected String getExecutionPreamble() { + if (getWorkingDirectoryAsString() == null) { return null; } String dir = getWorkingDirectoryAsString(); StringBuilder sb = new StringBuilder(); - sb.append( "cd " ); + sb.append("cd "); - sb.append( quoteOneItem( dir, false ) ); - sb.append( " && " ); + sb.append(quoteOneItem(dir, false)); + sb.append(" && "); return sb.toString(); } @@ -139,17 +125,15 @@ protected String getExecutionPreamble() * @return the path unified correctly for the Bourne shell. */ @Override - protected String quoteOneItem( String path, boolean isExecutable ) - { - if ( path == null ) - { + protected String quoteOneItem(String path, boolean isExecutable) { + if (path == null) { return null; } StringBuilder sb = new StringBuilder(); - sb.append( "'" ); - sb.append( path.replace( "'", "'\"'\"'" ) ); - sb.append( "'" ); + sb.append("'"); + sb.append(path.replace("'", "'\"'\"'")); + sb.append("'"); return sb.toString(); } diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java index aa0af43a..47cc5154 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java +++ b/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java @@ -28,14 +28,11 @@ * @since 1.2 * */ -public class CmdShell - extends Shell -{ - public CmdShell() - { - setShellCommand( "cmd.exe" ); - setQuotedExecutableEnabled( true ); - setShellArgs( new String[] { "/X", "/C" } ); +public class CmdShell extends Shell { + public CmdShell() { + setShellCommand("cmd.exe"); + setQuotedExecutableEnabled(true); + setShellArgs(new String[] {"/X", "/C"}); } /** @@ -77,13 +74,12 @@ public CmdShell() *

    */ @Override - public List getCommandLine( String executable, String[] arguments ) - { + public List getCommandLine(String executable, String[] arguments) { StringBuilder sb = new StringBuilder(); - sb.append( "\"" ); - sb.append( super.getCommandLine( executable, arguments ).get( 0 ) ); - sb.append( "\"" ); + sb.append("\""); + sb.append(super.getCommandLine(executable, arguments).get(0)); + sb.append("\""); - return Arrays.asList( new String[] { sb.toString() } ); + return Arrays.asList(new String[] {sb.toString()}); } } diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java index 4aa4c2af..947045f9 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java +++ b/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java @@ -25,13 +25,9 @@ * @since 1.2 * */ -public class CommandShell - extends Shell -{ - public CommandShell() - { - setShellCommand( "command.com" ); - setShellArgs( new String[] { "/C" } ); +public class CommandShell extends Shell { + public CommandShell() { + setShellCommand("command.com"); + setShellArgs(new String[] {"/C"}); } - } diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java index c3c911dd..03a6065c 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java +++ b/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java @@ -16,13 +16,13 @@ * limitations under the License. */ -import org.codehaus.plexus.util.StringUtils; - import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.codehaus.plexus.util.StringUtils; + /** * Class that abstracts the Shell functionality, with subclasses for shells that behave particularly, like *
      @@ -34,10 +34,8 @@ * @since 1.2 * */ -public class Shell - implements Cloneable -{ - private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS = { ' ' }; +public class Shell implements Cloneable { + private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS = {' '}; private String shellCommand; @@ -72,8 +70,7 @@ public class Shell * * @param unconditionallyQuote see name */ - public void setUnconditionalQuoting( boolean unconditionallyQuote ) - { + public void setUnconditionalQuoting(boolean unconditionallyQuote) { this.unconditionallyQuote = unconditionallyQuote; } @@ -82,8 +79,7 @@ public void setUnconditionalQuoting( boolean unconditionallyQuote ) * * @param shellCommand see name */ - public void setShellCommand( String shellCommand ) - { + public void setShellCommand(String shellCommand) { this.shellCommand = shellCommand; } @@ -92,8 +88,7 @@ public void setShellCommand( String shellCommand ) * * @return the command */ - public String getShellCommand() - { + public String getShellCommand() { return shellCommand; } @@ -102,24 +97,19 @@ public String getShellCommand() * * @param shellArgs see name */ - public void setShellArgs( String[] shellArgs ) - { + public void setShellArgs(String[] shellArgs) { this.shellArgs.clear(); - this.shellArgs.addAll( Arrays.asList( shellArgs ) ); + this.shellArgs.addAll(Arrays.asList(shellArgs)); } /** * @return the shell arguments */ - public String[] getShellArgs() - { - if ( ( shellArgs == null ) || shellArgs.isEmpty() ) - { + public String[] getShellArgs() { + if ((shellArgs == null) || shellArgs.isEmpty()) { return null; - } - else - { - return shellArgs.toArray( new String[0] ); + } else { + return shellArgs.toArray(new String[0]); } } @@ -130,139 +120,115 @@ public String[] getShellArgs() * @param arguments arguments for the executable, not the shell * @return List with one String object with executable and arguments quoted as needed */ - public List getCommandLine( String executable, String[] arguments ) - { - return getRawCommandLine( executable, arguments ); + public List getCommandLine(String executable, String[] arguments) { + return getRawCommandLine(executable, arguments); } - protected String quoteOneItem( String inputString, boolean isExecutable ) - { - char[] escapeChars = getEscapeChars( isSingleQuotedExecutableEscaped(), isDoubleQuotedExecutableEscaped() ); - return StringUtils.quoteAndEscape( inputString, - isExecutable ? getExecutableQuoteDelimiter() : getArgumentQuoteDelimiter(), - escapeChars, getQuotingTriggerChars(), '\\', unconditionallyQuote ); + protected String quoteOneItem(String inputString, boolean isExecutable) { + char[] escapeChars = getEscapeChars(isSingleQuotedExecutableEscaped(), isDoubleQuotedExecutableEscaped()); + return StringUtils.quoteAndEscape( + inputString, + isExecutable ? getExecutableQuoteDelimiter() : getArgumentQuoteDelimiter(), + escapeChars, + getQuotingTriggerChars(), + '\\', + unconditionallyQuote); } - protected List getRawCommandLine( String executable, String[] arguments ) - { + protected List getRawCommandLine(String executable, String[] arguments) { List commandLine = new ArrayList(); StringBuilder sb = new StringBuilder(); - if ( executable != null ) - { + if (executable != null) { String preamble = getExecutionPreamble(); - if ( preamble != null ) - { - sb.append( preamble ); + if (preamble != null) { + sb.append(preamble); } - if ( isQuotedExecutableEnabled() ) - { - sb.append( quoteOneItem( getOriginalExecutable(), true ) ); - } - else - { - sb.append( getExecutable() ); + if (isQuotedExecutableEnabled()) { + sb.append(quoteOneItem(getOriginalExecutable(), true)); + } else { + sb.append(getExecutable()); } } - for ( String argument : arguments ) - { - if ( sb.length() > 0 ) - { - sb.append( " " ); + for (String argument : arguments) { + if (sb.length() > 0) { + sb.append(" "); } - if ( isQuotedArgumentsEnabled() ) - { - sb.append( quoteOneItem( argument, false ) ); - } - else - { - sb.append( argument ); + if (isQuotedArgumentsEnabled()) { + sb.append(quoteOneItem(argument, false)); + } else { + sb.append(argument); } } - commandLine.add( sb.toString() ); + commandLine.add(sb.toString()); return commandLine; } - protected char[] getQuotingTriggerChars() - { + protected char[] getQuotingTriggerChars() { return DEFAULT_QUOTING_TRIGGER_CHARS; } - protected String getExecutionPreamble() - { + protected String getExecutionPreamble() { return null; } - protected char[] getEscapeChars( boolean includeSingleQuote, boolean includeDoubleQuote ) - { - StringBuilder buf = new StringBuilder( 2 ); - if ( includeSingleQuote ) - { - buf.append( '\'' ); + protected char[] getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote) { + StringBuilder buf = new StringBuilder(2); + if (includeSingleQuote) { + buf.append('\''); } - if ( includeDoubleQuote ) - { - buf.append( '\"' ); + if (includeDoubleQuote) { + buf.append('\"'); } char[] result = new char[buf.length()]; - buf.getChars( 0, buf.length(), result, 0 ); + buf.getChars(0, buf.length(), result, 0); return result; } - protected boolean isDoubleQuotedArgumentEscaped() - { + protected boolean isDoubleQuotedArgumentEscaped() { return doubleQuotedArgumentEscaped; } - protected boolean isSingleQuotedArgumentEscaped() - { + protected boolean isSingleQuotedArgumentEscaped() { return singleQuotedArgumentEscaped; } - protected boolean isDoubleQuotedExecutableEscaped() - { + protected boolean isDoubleQuotedExecutableEscaped() { return doubleQuotedExecutableEscaped; } - protected boolean isSingleQuotedExecutableEscaped() - { + protected boolean isSingleQuotedExecutableEscaped() { return singleQuotedExecutableEscaped; } - protected void setArgumentQuoteDelimiter( char argQuoteDelimiter ) - { + protected void setArgumentQuoteDelimiter(char argQuoteDelimiter) { this.argQuoteDelimiter = argQuoteDelimiter; } - protected char getArgumentQuoteDelimiter() - { + protected char getArgumentQuoteDelimiter() { return argQuoteDelimiter; } - protected void setExecutableQuoteDelimiter( char exeQuoteDelimiter ) - { + protected void setExecutableQuoteDelimiter(char exeQuoteDelimiter) { this.exeQuoteDelimiter = exeQuoteDelimiter; } - protected char getExecutableQuoteDelimiter() - { + protected char getExecutableQuoteDelimiter() { return exeQuoteDelimiter; } - protected void setArgumentEscapePattern( String argumentEscapePattern ) - { + protected void setArgumentEscapePattern(String argumentEscapePattern) { this.argumentEscapePattern = argumentEscapePattern; } - protected String getArgumentEscapePattern() - { + protected String getArgumentEscapePattern() { return argumentEscapePattern; } @@ -274,54 +240,44 @@ protected String getArgumentEscapePattern() * @return List of String objects, whose array version is suitable to be used as argument of * Runtime.getRuntime().exec() */ - public List getShellCommandLine( String[] arguments ) - { + public List getShellCommandLine(String[] arguments) { List commandLine = new ArrayList(); - if ( getShellCommand() != null ) - { - commandLine.add( getShellCommand() ); + if (getShellCommand() != null) { + commandLine.add(getShellCommand()); } - if ( getShellArgs() != null ) - { - commandLine.addAll( getShellArgsList() ); + if (getShellArgs() != null) { + commandLine.addAll(getShellArgsList()); } - commandLine.addAll( getCommandLine( getOriginalExecutable(), arguments ) ); + commandLine.addAll(getCommandLine(getOriginalExecutable(), arguments)); return commandLine; - } - public List getShellArgsList() - { + public List getShellArgsList() { return shellArgs; } - public void addShellArg( String arg ) - { - shellArgs.add( arg ); + public void addShellArg(String arg) { + shellArgs.add(arg); } - public void setQuotedArgumentsEnabled( boolean quotedArgumentsEnabled ) - { + public void setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled) { this.quotedArgumentsEnabled = quotedArgumentsEnabled; } - public boolean isQuotedArgumentsEnabled() - { + public boolean isQuotedArgumentsEnabled() { return quotedArgumentsEnabled; } - public void setQuotedExecutableEnabled( boolean quotedExecutableEnabled ) - { + public void setQuotedExecutableEnabled(boolean quotedExecutableEnabled) { this.quotedExecutableEnabled = quotedExecutableEnabled; } - public boolean isQuotedExecutableEnabled() - { + public boolean isQuotedExecutableEnabled() { return quotedExecutableEnabled; } @@ -329,27 +285,22 @@ public boolean isQuotedExecutableEnabled() * * @param executable Sets the executable to run. */ - public void setExecutable( String executable ) - { - if ( ( executable == null ) || ( executable.length() == 0 ) ) - { + public void setExecutable(String executable) { + if ((executable == null) || (executable.length() == 0)) { return; } - this.executable = executable.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); + this.executable = executable.replace('/', File.separatorChar).replace('\\', File.separatorChar); } - public String getExecutable() - { + public String getExecutable() { return executable; } /** * @param path Sets execution directory. */ - public void setWorkingDirectory( String path ) - { - if ( path != null ) - { + public void setWorkingDirectory(String path) { + if (path != null) { workingDir = path; } } @@ -357,66 +308,54 @@ public void setWorkingDirectory( String path ) /** * @param workingDir Sets execution directory. */ - public void setWorkingDirectory( File workingDir ) - { - if ( workingDir != null ) - { + public void setWorkingDirectory(File workingDir) { + if (workingDir != null) { this.workingDir = workingDir.getAbsolutePath(); } } - public File getWorkingDirectory() - { - return workingDir == null ? null : new File( workingDir ); + public File getWorkingDirectory() { + return workingDir == null ? null : new File(workingDir); } - public String getWorkingDirectoryAsString() - { + public String getWorkingDirectoryAsString() { return workingDir; } - public void clearArguments() - { + public void clearArguments() { shellArgs.clear(); } @Override - public Object clone() - { + public Object clone() { Shell shell = new Shell(); - shell.setExecutable( getExecutable() ); - shell.setWorkingDirectory( getWorkingDirectory() ); - shell.setShellArgs( getShellArgs() ); + shell.setExecutable(getExecutable()); + shell.setWorkingDirectory(getWorkingDirectory()); + shell.setShellArgs(getShellArgs()); return shell; } - public String getOriginalExecutable() - { + public String getOriginalExecutable() { return executable; } - public List getOriginalCommandLine( String executable, String[] arguments ) - { - return getRawCommandLine( executable, arguments ); + public List getOriginalCommandLine(String executable, String[] arguments) { + return getRawCommandLine(executable, arguments); } - protected void setDoubleQuotedArgumentEscaped( boolean doubleQuotedArgumentEscaped ) - { + protected void setDoubleQuotedArgumentEscaped(boolean doubleQuotedArgumentEscaped) { this.doubleQuotedArgumentEscaped = doubleQuotedArgumentEscaped; } - protected void setDoubleQuotedExecutableEscaped( boolean doubleQuotedExecutableEscaped ) - { + protected void setDoubleQuotedExecutableEscaped(boolean doubleQuotedExecutableEscaped) { this.doubleQuotedExecutableEscaped = doubleQuotedExecutableEscaped; } - protected void setSingleQuotedArgumentEscaped( boolean singleQuotedArgumentEscaped ) - { + protected void setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped) { this.singleQuotedArgumentEscaped = singleQuotedArgumentEscaped; } - protected void setSingleQuotedExecutableEscaped( boolean singleQuotedExecutableEscaped ) - { + protected void setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped) { this.singleQuotedExecutableEscaped = singleQuotedExecutableEscaped; } } diff --git a/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java b/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java index e350af9d..c4b99e44 100644 --- a/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java +++ b/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java @@ -19,43 +19,34 @@ import java.util.Iterator; import java.util.List; -public class CycleDetectedException - extends Exception -{ +public class CycleDetectedException extends Exception { private List cycle; - public CycleDetectedException( final String message, final List cycle ) - { - super( message ); + public CycleDetectedException(final String message, final List cycle) { + super(message); this.cycle = cycle; - } - public List getCycle() - { + public List getCycle() { return cycle; } - public String cycleToString() - { + public String cycleToString() { final StringBuilder buffer = new StringBuilder(); - for ( Iterator iterator = cycle.iterator(); iterator.hasNext(); ) - { - buffer.append( iterator.next() ); + for (Iterator iterator = cycle.iterator(); iterator.hasNext(); ) { + buffer.append(iterator.next()); - if ( iterator.hasNext() ) - { - buffer.append( " --> " ); + if (iterator.hasNext()) { + buffer.append(" --> "); } } return buffer.toString(); } @Override - public String getMessage() - { + public String getMessage() { return super.getMessage() + " " + cycleToString(); } } diff --git a/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java b/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java index 6f810043..98c2f451 100644 --- a/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java +++ b/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java @@ -26,31 +26,26 @@ * @author Michal Maczka * */ -public class CycleDetector -{ +public class CycleDetector { - private final static Integer NOT_VISITED = 0; + private static final Integer NOT_VISITED = 0; - private final static Integer VISITING = 1; + private static final Integer VISITING = 1; - private final static Integer VISITED = 2; + private static final Integer VISITED = 2; - public static List hasCycle( final DAG graph ) - { + public static List hasCycle(final DAG graph) { final List vertices = graph.getVertices(); final Map vertexStateMap = new HashMap<>(); List retValue = null; - for ( Vertex vertex : vertices ) - { - if ( isNotVisited( vertex, vertexStateMap ) ) - { - retValue = introducesCycle( vertex, vertexStateMap ); + for (Vertex vertex : vertices) { + if (isNotVisited(vertex, vertexStateMap)) { + retValue = introducesCycle(vertex, vertexStateMap); - if ( retValue != null ) - { + if (retValue != null) { break; } } @@ -67,14 +62,12 @@ public static List hasCycle( final DAG graph ) * @param vertexStateMap the vertex Map * @return the found cycle */ - public static List introducesCycle( final Vertex vertex, final Map vertexStateMap ) - { + public static List introducesCycle(final Vertex vertex, final Map vertexStateMap) { final LinkedList cycleStack = new LinkedList<>(); - final boolean hasCycle = dfsVisit( vertex, cycleStack, vertexStateMap ); + final boolean hasCycle = dfsVisit(vertex, cycleStack, vertexStateMap); - if ( hasCycle ) - { + if (hasCycle) { // we have a situation like: [b, a, c, d, b, f, g, h]. // Label of Vertex which introduced the cycle is at the first position in the list // We have to find second occurrence of this label and use its position in the list @@ -83,11 +76,11 @@ public static List introducesCycle( final Vertex vertex, final Map cycle = cycleStack.subList( 0, pos + 1 ); + final List cycle = cycleStack.subList(0, pos + 1); - Collections.reverse( cycle ); + Collections.reverse(cycle); return cycle; } @@ -95,57 +88,47 @@ public static List introducesCycle( final Vertex vertex, final Map introducesCycle( final Vertex vertex ) - { + public static List introducesCycle(final Vertex vertex) { final Map vertexStateMap = new HashMap<>(); - return introducesCycle( vertex, vertexStateMap ); + return introducesCycle(vertex, vertexStateMap); } - private static boolean isNotVisited( final Vertex vertex, final Map vertexStateMap ) - { - final Integer state = vertexStateMap.get( vertex ); + private static boolean isNotVisited(final Vertex vertex, final Map vertexStateMap) { + final Integer state = vertexStateMap.get(vertex); - return ( state == null ) || NOT_VISITED.equals( state ); + return (state == null) || NOT_VISITED.equals(state); } - private static boolean isVisiting( final Vertex vertex, final Map vertexStateMap ) - { - final Integer state = vertexStateMap.get( vertex ); + private static boolean isVisiting(final Vertex vertex, final Map vertexStateMap) { + final Integer state = vertexStateMap.get(vertex); - return VISITING.equals( state ); + return VISITING.equals(state); } - private static boolean dfsVisit( final Vertex vertex, final LinkedList cycle, - final Map vertexStateMap ) - { - cycle.addFirst( vertex.getLabel() ); + private static boolean dfsVisit( + final Vertex vertex, final LinkedList cycle, final Map vertexStateMap) { + cycle.addFirst(vertex.getLabel()); - vertexStateMap.put( vertex, VISITING ); + vertexStateMap.put(vertex, VISITING); - for ( Vertex v : vertex.getChildren() ) - { - if ( isNotVisited( v, vertexStateMap ) ) - { - final boolean hasCycle = dfsVisit( v, cycle, vertexStateMap ); + for (Vertex v : vertex.getChildren()) { + if (isNotVisited(v, vertexStateMap)) { + final boolean hasCycle = dfsVisit(v, cycle, vertexStateMap); - if ( hasCycle ) - { + if (hasCycle) { return true; } - } - else if ( isVisiting( v, vertexStateMap ) ) - { - cycle.addFirst( v.getLabel() ); + } else if (isVisiting(v, vertexStateMap)) { + cycle.addFirst(v.getLabel()); return true; } } - vertexStateMap.put( vertex, VISITED ); + vertexStateMap.put(vertex, VISITED); cycle.removeFirst(); return false; } - } diff --git a/src/main/java/org/codehaus/plexus/util/dag/DAG.java b/src/main/java/org/codehaus/plexus/util/dag/DAG.java index 4d0f9a45..a652fcd0 100644 --- a/src/main/java/org/codehaus/plexus/util/dag/DAG.java +++ b/src/main/java/org/codehaus/plexus/util/dag/DAG.java @@ -30,9 +30,7 @@ * * TODO this class should be renamed from DAG to Dag */ -public class DAG - implements Cloneable, Serializable -{ +public class DAG implements Cloneable, Serializable { // ------------------------------------------------------------ // Fields // ------------------------------------------------------------ @@ -56,8 +54,7 @@ public class DAG /** * */ - public DAG() - { + public DAG() { super(); } @@ -68,8 +65,7 @@ public DAG() /** * @return the vertices */ - public List getVertices() - { + public List getVertices() { return vertexList; } @@ -78,13 +74,11 @@ public List getVertices() * @return the vertices */ @Deprecated - public List getVerticies() - { + public List getVerticies() { return getVertices(); } - public Set getLabels() - { + public Set getLabels() { return vertexMap.keySet(); } @@ -99,101 +93,86 @@ public Set getLabels() * @return New vertex if vertex of given label was not present in the DAG or existing vertex if vertex of given * label was already added to DAG */ - public Vertex addVertex( final String label ) - { + public Vertex addVertex(final String label) { Vertex retValue = null; // check if vertex is already in DAG - if ( vertexMap.containsKey( label ) ) - { - retValue = vertexMap.get( label ); - } - else - { - retValue = new Vertex( label ); + if (vertexMap.containsKey(label)) { + retValue = vertexMap.get(label); + } else { + retValue = new Vertex(label); - vertexMap.put( label, retValue ); + vertexMap.put(label, retValue); - vertexList.add( retValue ); + vertexList.add(retValue); } return retValue; } - public void addEdge( final String from, final String to ) - throws CycleDetectedException - { - final Vertex v1 = addVertex( from ); + public void addEdge(final String from, final String to) throws CycleDetectedException { + final Vertex v1 = addVertex(from); - final Vertex v2 = addVertex( to ); + final Vertex v2 = addVertex(to); - addEdge( v1, v2 ); + addEdge(v1, v2); } - public void addEdge( final Vertex from, final Vertex to ) - throws CycleDetectedException - { + public void addEdge(final Vertex from, final Vertex to) throws CycleDetectedException { - from.addEdgeTo( to ); + from.addEdgeTo(to); - to.addEdgeFrom( from ); + to.addEdgeFrom(from); - final List cycle = CycleDetector.introducesCycle( to ); + final List cycle = CycleDetector.introducesCycle(to); - if ( cycle != null ) - { + if (cycle != null) { // remove edge which introduced cycle - removeEdge( from, to ); + removeEdge(from, to); final String msg = "Edge between '" + from + "' and '" + to + "' introduces to cycle in the graph"; - throw new CycleDetectedException( msg, cycle ); + throw new CycleDetectedException(msg, cycle); } } - public void removeEdge( final String from, final String to ) - { - final Vertex v1 = addVertex( from ); + public void removeEdge(final String from, final String to) { + final Vertex v1 = addVertex(from); - final Vertex v2 = addVertex( to ); + final Vertex v2 = addVertex(to); - removeEdge( v1, v2 ); + removeEdge(v1, v2); } - public void removeEdge( final Vertex from, final Vertex to ) - { - from.removeEdgeTo( to ); + public void removeEdge(final Vertex from, final Vertex to) { + from.removeEdgeTo(to); - to.removeEdgeFrom( from ); + to.removeEdgeFrom(from); } - public Vertex getVertex( final String label ) - { - final Vertex retValue = vertexMap.get( label ); + public Vertex getVertex(final String label) { + final Vertex retValue = vertexMap.get(label); return retValue; } - public boolean hasEdge( final String label1, final String label2 ) - { - final Vertex v1 = getVertex( label1 ); + public boolean hasEdge(final String label1, final String label2) { + final Vertex v1 = getVertex(label1); - final Vertex v2 = getVertex( label2 ); + final Vertex v2 = getVertex(label2); - final boolean retValue = v1.getChildren().contains( v2 ); + final boolean retValue = v1.getChildren().contains(v2); return retValue; - } /** * @param label see name * @return the childs */ - public List getChildLabels( final String label ) - { - final Vertex vertex = getVertex( label ); + public List getChildLabels(final String label) { + final Vertex vertex = getVertex(label); return vertex.getChildLabels(); } @@ -202,9 +181,8 @@ public List getChildLabels( final String label ) * @param label see name * @return the parents */ - public List getParentLabels( final String label ) - { - final Vertex vertex = getVertex( label ); + public List getParentLabels(final String label) { + final Vertex vertex = getVertex(label); return vertex.getParentLabels(); } @@ -213,9 +191,7 @@ public List getParentLabels( final String label ) * @see java.lang.Object#clone() */ @Override - public Object clone() - throws CloneNotSupportedException - { + public Object clone() throws CloneNotSupportedException { // this is what's failing.. final Object retValue = super.clone(); @@ -227,14 +203,12 @@ public Object clone() * @param label the label * @return true if this vertex is connected with other vertex,false otherwise */ - public boolean isConnected( final String label ) - { - final Vertex vertex = getVertex( label ); + public boolean isConnected(final String label) { + final Vertex vertex = getVertex(label); final boolean retValue = vertex.isConnected(); return retValue; - } /** @@ -244,25 +218,20 @@ public boolean isConnected( final String label ) * @return The list of labels. Returned list contains also the label passed as parameter to this method. This label * should always be the last item in the list. */ - public List getSuccessorLabels( final String label ) - { - final Vertex vertex = getVertex( label ); + public List getSuccessorLabels(final String label) { + final Vertex vertex = getVertex(label); final List retValue; // optimization. - if ( vertex.isLeaf() ) - { - retValue = new ArrayList<>( 1 ); + if (vertex.isLeaf()) { + retValue = new ArrayList<>(1); - retValue.add( label ); - } - else - { - retValue = TopologicalSorter.sort( vertex ); + retValue.add(label); + } else { + retValue = TopologicalSorter.sort(vertex); } return retValue; } - } diff --git a/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java b/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java index b2736255..da801335 100644 --- a/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java +++ b/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java @@ -25,74 +25,63 @@ * @author Michal Maczka * */ -public class TopologicalSorter -{ +public class TopologicalSorter { - private final static Integer NOT_VISITED = 0; + private static final Integer NOT_VISITED = 0; - private final static Integer VISITING = 1; + private static final Integer VISITING = 1; - private final static Integer VISITED = 2; + private static final Integer VISITED = 2; /** * @param graph the graph * @return List of String (vertex labels) */ - public static List sort( final DAG graph ) - { - return dfs( graph ); + public static List sort(final DAG graph) { + return dfs(graph); } - public static List sort( final Vertex vertex ) - { + public static List sort(final Vertex vertex) { // we need to use addFirst method so we will use LinkedList explicitly final List retValue = new LinkedList<>(); - dfsVisit( vertex, new HashMap(), retValue ); + dfsVisit(vertex, new HashMap(), retValue); return retValue; } - private static List dfs( final DAG graph ) - { + private static List dfs(final DAG graph) { // we need to use addFirst method so we will use LinkedList explicitly final List retValue = new LinkedList<>(); final Map vertexStateMap = new HashMap<>(); - for ( Vertex vertex : graph.getVertices() ) - { - if ( isNotVisited( vertex, vertexStateMap ) ) - { - dfsVisit( vertex, vertexStateMap, retValue ); + for (Vertex vertex : graph.getVertices()) { + if (isNotVisited(vertex, vertexStateMap)) { + dfsVisit(vertex, vertexStateMap, retValue); } } return retValue; } - private static boolean isNotVisited( final Vertex vertex, final Map vertexStateMap ) - { - final Integer state = vertexStateMap.get( vertex ); + private static boolean isNotVisited(final Vertex vertex, final Map vertexStateMap) { + final Integer state = vertexStateMap.get(vertex); - return ( state == null ) || NOT_VISITED.equals( state ); + return (state == null) || NOT_VISITED.equals(state); } - private static void dfsVisit( final Vertex vertex, final Map vertexStateMap, - final List list ) - { - vertexStateMap.put( vertex, VISITING ); + private static void dfsVisit( + final Vertex vertex, final Map vertexStateMap, final List list) { + vertexStateMap.put(vertex, VISITING); - for ( Vertex v : vertex.getChildren() ) - { - if ( isNotVisited( v, vertexStateMap ) ) - { - dfsVisit( v, vertexStateMap, list ); + for (Vertex v : vertex.getChildren()) { + if (isNotVisited(v, vertexStateMap)) { + dfsVisit(v, vertexStateMap, list); } } - vertexStateMap.put( vertex, VISITED ); + vertexStateMap.put(vertex, VISITED); - list.add( vertex.getLabel() ); + list.add(vertex.getLabel()); } - } diff --git a/src/main/java/org/codehaus/plexus/util/dag/Vertex.java b/src/main/java/org/codehaus/plexus/util/dag/Vertex.java index 489b6185..bb3cfcc1 100644 --- a/src/main/java/org/codehaus/plexus/util/dag/Vertex.java +++ b/src/main/java/org/codehaus/plexus/util/dag/Vertex.java @@ -24,9 +24,7 @@ * @author Michal Maczka * */ -public class Vertex - implements Cloneable, Serializable -{ +public class Vertex implements Cloneable, Serializable { // ------------------------------------------------------------ // Fields // ------------------------------------------------------------ @@ -40,8 +38,7 @@ public class Vertex // Constructors // ------------------------------------------------------------ - public Vertex( final String label ) - { + public Vertex(final String label) { this.label = label; } @@ -49,33 +46,27 @@ public Vertex( final String label ) // Accessors // ------------------------------------------------------------ - public String getLabel() - { + public String getLabel() { return label; } - public void addEdgeTo( final Vertex vertex ) - { - children.add( vertex ); + public void addEdgeTo(final Vertex vertex) { + children.add(vertex); } - public void removeEdgeTo( final Vertex vertex ) - { - children.remove( vertex ); + public void removeEdgeTo(final Vertex vertex) { + children.remove(vertex); } - public void addEdgeFrom( final Vertex vertex ) - { - parents.add( vertex ); + public void addEdgeFrom(final Vertex vertex) { + parents.add(vertex); } - public void removeEdgeFrom( final Vertex vertex ) - { - parents.remove( vertex ); + public void removeEdgeFrom(final Vertex vertex) { + parents.remove(vertex); } - public List getChildren() - { + public List getChildren() { return children; } @@ -84,13 +75,11 @@ public List getChildren() * * @return the labels used by the most direct children. */ - public List getChildLabels() - { - final List retValue = new ArrayList<>( children.size() ); + public List getChildLabels() { + final List retValue = new ArrayList<>(children.size()); - for ( Vertex vertex : children ) - { - retValue.add( vertex.getLabel() ); + for (Vertex vertex : children) { + retValue.add(vertex.getLabel()); } return retValue; } @@ -100,8 +89,7 @@ public List getChildLabels() * * @return list of parents */ - public List getParents() - { + public List getParents() { return parents; } @@ -110,13 +98,11 @@ public List getParents() * * @return the labels used parents */ - public List getParentLabels() - { - final List retValue = new ArrayList<>( parents.size() ); + public List getParentLabels() { + final List retValue = new ArrayList<>(parents.size()); - for ( Vertex vertex : parents ) - { - retValue.add( vertex.getLabel() ); + for (Vertex vertex : parents) { + retValue.add(vertex.getLabel()); } return retValue; } @@ -126,8 +112,7 @@ public List getParentLabels() * * @return true if this vertex has no child, false otherwise */ - public boolean isLeaf() - { + public boolean isLeaf() { return children.size() == 0; } @@ -136,8 +121,7 @@ public boolean isLeaf() * * @return true if this vertex has no parent, false otherwise */ - public boolean isRoot() - { + public boolean isRoot() { return parents.size() == 0; } @@ -146,15 +130,12 @@ public boolean isRoot() * * @return true if this vertex is connected with other vertex,false otherwise */ - public boolean isConnected() - { + public boolean isConnected() { return isRoot() || isLeaf(); } @Override - public Object clone() - throws CloneNotSupportedException - { + public Object clone() throws CloneNotSupportedException { // this is what's failing.. final Object retValue = super.clone(); @@ -162,9 +143,7 @@ public Object clone() } @Override - public String toString() - { + public String toString() { return "Vertex{" + "label='" + label + "'" + "}"; } - } diff --git a/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java b/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java index 6e0c8be2..472419df 100644 --- a/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java +++ b/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java @@ -31,11 +31,8 @@ * @author Geir Magnusson Jr. * */ -public class ClassMap -{ - private static final class CacheMiss - { - } +public class ClassMap { + private static final class CacheMiss {} private static final CacheMiss CACHE_MISS = new CacheMiss(); @@ -44,7 +41,6 @@ private static final class CacheMiss /** * Class passed into the constructor used to as the basis for the Method map. */ - private final Class clazz; /** @@ -58,8 +54,7 @@ private static final class CacheMiss * Standard constructor * @param clazz the Class */ - public ClassMap( Class clazz ) - { + public ClassMap(Class clazz) { this.clazz = clazz; populateMethodCache(); } @@ -67,58 +62,47 @@ public ClassMap( Class clazz ) /** * @return the class object whose methods are cached by this map. */ - Class getCachedClass() - { + Class getCachedClass() { return clazz; } /** *

      Find a Method using the methodKey provided.

      - * + * *

      Look in the methodMap for an entry. If found, it'll either be a CACHE_MISS, in which case we simply give up, or * it'll be a Method, in which case, we return it.

      - * + * *

      If nothing is found, then we must actually go and introspect the method from the MethodMap.

      * @param name method name * @param params method params * @return the find Method or null * @throws org.codehaus.plexus.util.introspection.MethodMap.AmbiguousException if ambiguous name */ - public Method findMethod( String name, Object[] params ) - throws MethodMap.AmbiguousException - { - String methodKey = makeMethodKey( name, params ); - Object cacheEntry = methodCache.get( methodKey ); - - if ( cacheEntry == CACHE_MISS ) - { + public Method findMethod(String name, Object[] params) throws MethodMap.AmbiguousException { + String methodKey = makeMethodKey(name, params); + Object cacheEntry = methodCache.get(methodKey); + + if (cacheEntry == CACHE_MISS) { return null; } - if ( cacheEntry == null ) - { - try - { - cacheEntry = methodMap.find( name, params ); - } - catch ( MethodMap.AmbiguousException ae ) - { + if (cacheEntry == null) { + try { + cacheEntry = methodMap.find(name, params); + } catch (MethodMap.AmbiguousException ae) { /* * that's a miss :) */ - methodCache.put( methodKey, CACHE_MISS ); + methodCache.put(methodKey, CACHE_MISS); throw ae; } - if ( cacheEntry == null ) - { - methodCache.put( methodKey, CACHE_MISS ); - } - else - { - methodCache.put( methodKey, cacheEntry ); + if (cacheEntry == null) { + methodCache.put(methodKey, CACHE_MISS); + } else { + methodCache.put(methodKey, cacheEntry); } } @@ -130,28 +114,26 @@ public Method findMethod( String name, Object[] params ) /** * Populate the Map of direct hits. These are taken from all the public methods that our class provides. */ - private void populateMethodCache() - { + private void populateMethodCache() { StringBuffer methodKey; /* * get all publicly accessible methods */ - Method[] methods = getAccessibleMethods( clazz ); + Method[] methods = getAccessibleMethods(clazz); /* * map and cache them */ - for ( Method method : methods ) - { + for (Method method : methods) { /* * now get the 'public method', the method declared by a public interface or class. (because the actual * implementing class may be a facade... */ - Method publicMethod = getPublicMethod( method ); + Method publicMethod = getPublicMethod(method); /* * it is entirely possible that there is no public method for the methods of this class (i.e. in the facade, @@ -159,10 +141,9 @@ private void populateMethodCache() * cache */ - if ( publicMethod != null ) - { - methodMap.add( publicMethod ); - methodCache.put( makeMethodKey( publicMethod ), publicMethod ); + if (publicMethod != null) { + methodMap.add(publicMethod); + methodCache.put(makeMethodKey(publicMethod), publicMethod); } } } @@ -170,76 +151,53 @@ private void populateMethodCache() /** * Make a methodKey for the given method using the concatenation of the name and the types of the method parameters. */ - private String makeMethodKey( Method method ) - { + private String makeMethodKey(Method method) { Class[] parameterTypes = method.getParameterTypes(); - StringBuilder methodKey = new StringBuilder( method.getName() ); + StringBuilder methodKey = new StringBuilder(method.getName()); - for ( Class parameterType : parameterTypes ) - { + for (Class parameterType : parameterTypes) { /* * If the argument type is primitive then we want to convert our primitive type signature to the * corresponding Object type so introspection for methods with primitive types will work correctly. */ - if ( parameterType.isPrimitive() ) - { - if ( parameterType.equals( Boolean.TYPE ) ) - { - methodKey.append( "java.lang.Boolean" ); - } - else if ( parameterType.equals( Byte.TYPE ) ) - { - methodKey.append( "java.lang.Byte" ); - } - else if ( parameterType.equals( Character.TYPE ) ) - { - methodKey.append( "java.lang.Character" ); + if (parameterType.isPrimitive()) { + if (parameterType.equals(Boolean.TYPE)) { + methodKey.append("java.lang.Boolean"); + } else if (parameterType.equals(Byte.TYPE)) { + methodKey.append("java.lang.Byte"); + } else if (parameterType.equals(Character.TYPE)) { + methodKey.append("java.lang.Character"); + } else if (parameterType.equals(Double.TYPE)) { + methodKey.append("java.lang.Double"); + } else if (parameterType.equals(Float.TYPE)) { + methodKey.append("java.lang.Float"); + } else if (parameterType.equals(Integer.TYPE)) { + methodKey.append("java.lang.Integer"); + } else if (parameterType.equals(Long.TYPE)) { + methodKey.append("java.lang.Long"); + } else if (parameterType.equals(Short.TYPE)) { + methodKey.append("java.lang.Short"); } - else if ( parameterType.equals( Double.TYPE ) ) - { - methodKey.append( "java.lang.Double" ); - } - else if ( parameterType.equals( Float.TYPE ) ) - { - methodKey.append( "java.lang.Float" ); - } - else if ( parameterType.equals( Integer.TYPE ) ) - { - methodKey.append( "java.lang.Integer" ); - } - else if ( parameterType.equals( Long.TYPE ) ) - { - methodKey.append( "java.lang.Long" ); - } - else if ( parameterType.equals( Short.TYPE ) ) - { - methodKey.append( "java.lang.Short" ); - } - } - else - { - methodKey.append( parameterType.getName() ); + } else { + methodKey.append(parameterType.getName()); } } return methodKey.toString(); } - private static String makeMethodKey( String method, Object[] params ) - { - StringBuilder methodKey = new StringBuilder().append( method ); + private static String makeMethodKey(String method, Object[] params) { + StringBuilder methodKey = new StringBuilder().append(method); - for ( Object param : params ) - { + for (Object param : params) { Object arg = param; - if ( arg == null ) - { + if (arg == null) { arg = OBJECT; } - methodKey.append( arg.getClass().getName() ); + methodKey.append(arg.getClass().getName()); } return methodKey.toString(); @@ -250,16 +208,14 @@ private static String makeMethodKey( String method, Object[] params ) * its public methods from public superclasses and interfaces (if they exist). Basically upcasts every method to the * nearest accessible method. */ - private static Method[] getAccessibleMethods( Class clazz ) - { + private static Method[] getAccessibleMethods(Class clazz) { Method[] methods = clazz.getMethods(); /* * Short circuit for the (hopefully) majority of cases where the clazz is public */ - if ( Modifier.isPublic( clazz.getModifiers() ) ) - { + if (Modifier.isPublic(clazz.getModifiers())) { return methods; } @@ -269,27 +225,23 @@ private static Method[] getAccessibleMethods( Class clazz ) MethodInfo[] methodInfos = new MethodInfo[methods.length]; - for ( int i = methods.length; i-- > 0; ) - { - methodInfos[i] = new MethodInfo( methods[i] ); + for (int i = methods.length; i-- > 0; ) { + methodInfos[i] = new MethodInfo(methods[i]); } - int upcastCount = getAccessibleMethods( clazz, methodInfos, 0 ); + int upcastCount = getAccessibleMethods(clazz, methodInfos, 0); /* * Reallocate array in case some method had no accessible counterpart. */ - if ( upcastCount < methods.length ) - { + if (upcastCount < methods.length) { methods = new Method[upcastCount]; } int j = 0; - for ( MethodInfo methodInfo : methodInfos ) - { - if ( methodInfo.upcast ) - { + for (MethodInfo methodInfo : methodInfos) { + if (methodInfo.upcast) { methods[j++] = methodInfo.method; } } @@ -305,30 +257,23 @@ private static Method[] getAccessibleMethods( Class clazz ) * @param upcastCount current number of methods we have matched * @return count of matched methods */ - private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos, int upcastCount ) - { + private static int getAccessibleMethods(Class clazz, MethodInfo[] methodInfos, int upcastCount) { int l = methodInfos.length; /* * if this class is public, then check each of the currently 'non-upcasted' methods to see if we have a match */ - if ( Modifier.isPublic( clazz.getModifiers() ) ) - { - for ( int i = 0; i < l && upcastCount < l; ++i ) - { - try - { + if (Modifier.isPublic(clazz.getModifiers())) { + for (int i = 0; i < l && upcastCount < l; ++i) { + try { MethodInfo methodInfo = methodInfos[i]; - if ( !methodInfo.upcast ) - { - methodInfo.tryUpcasting( clazz ); + if (!methodInfo.upcast) { + methodInfo.tryUpcasting(clazz); upcastCount++; } - } - catch ( NoSuchMethodException e ) - { + } catch (NoSuchMethodException e) { /* * Intentionally ignored - it means it wasn't found in the current class */ @@ -339,8 +284,7 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos, * Short circuit if all methods were upcast */ - if ( upcastCount == l ) - { + if (upcastCount == l) { return upcastCount; } } @@ -351,16 +295,14 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos, Class superclazz = clazz.getSuperclass(); - if ( superclazz != null ) - { - upcastCount = getAccessibleMethods( superclazz, methodInfos, upcastCount ); + if (superclazz != null) { + upcastCount = getAccessibleMethods(superclazz, methodInfos, upcastCount); /* * Short circuit if all methods were upcast */ - if ( upcastCount == l ) - { + if (upcastCount == l) { return upcastCount; } } @@ -372,16 +314,14 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos, Class[] interfaces = clazz.getInterfaces(); - for ( int i = interfaces.length; i-- > 0; ) - { - upcastCount = getAccessibleMethods( interfaces[i], methodInfos, upcastCount ); + for (int i = interfaces.length; i-- > 0; ) { + upcastCount = getAccessibleMethods(interfaces[i], methodInfos, upcastCount); /* * Short circuit if all methods were upcast */ - if ( upcastCount == l ) - { + if (upcastCount == l) { return upcastCount; } } @@ -398,20 +338,18 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos, * @return the publicly callable counterpart method. Note that if the parameter method is itself declared by a * public class, this method is an identity function. */ - public static Method getPublicMethod( Method method ) - { + public static Method getPublicMethod(Method method) { Class clazz = method.getDeclaringClass(); /* * Short circuit for (hopefully the majority of) cases where the declaring class is public. */ - if ( ( clazz.getModifiers() & Modifier.PUBLIC ) != 0 ) - { + if ((clazz.getModifiers() & Modifier.PUBLIC) != 0) { return method; } - return getPublicMethod( clazz, method.getName(), method.getParameterTypes() ); + return getPublicMethod(clazz, method.getName(), method.getParameterTypes()); } /** @@ -422,20 +360,15 @@ public static Method getPublicMethod( Method method ) * @param name the name of the method * @param paramTypes the classes of method parameters */ - private static Method getPublicMethod( Class clazz, String name, Class[] paramTypes ) - { + private static Method getPublicMethod(Class clazz, String name, Class[] paramTypes) { /* * if this class is public, then try to get it */ - if ( ( clazz.getModifiers() & Modifier.PUBLIC ) != 0 ) - { - try - { - return clazz.getMethod( name, paramTypes ); - } - catch ( NoSuchMethodException e ) - { + if ((clazz.getModifiers() & Modifier.PUBLIC) != 0) { + try { + return clazz.getMethod(name, paramTypes); + } catch (NoSuchMethodException e) { /* * If the class does not have the method, then neither its superclass nor any of its interfaces has it * so quickly return null. @@ -450,12 +383,10 @@ private static Method getPublicMethod( Class clazz, String name, Class[] paramTy Class superclazz = clazz.getSuperclass(); - if ( superclazz != null ) - { - Method superclazzMethod = getPublicMethod( superclazz, name, paramTypes ); + if (superclazz != null) { + Method superclazzMethod = getPublicMethod(superclazz, name, paramTypes); - if ( superclazzMethod != null ) - { + if (superclazzMethod != null) { return superclazzMethod; } } @@ -466,12 +397,10 @@ private static Method getPublicMethod( Class clazz, String name, Class[] paramTy Class[] interfaces = clazz.getInterfaces(); - for ( Class anInterface : interfaces ) - { - Method interfaceMethod = getPublicMethod( anInterface, name, paramTypes ); + for (Class anInterface : interfaces) { + Method interfaceMethod = getPublicMethod(anInterface, name, paramTypes); - if ( interfaceMethod != null ) - { + if (interfaceMethod != null) { return interfaceMethod; } } @@ -482,8 +411,7 @@ private static Method getPublicMethod( Class clazz, String name, Class[] paramTy /** * Used for the iterative discovery process for public methods. */ - private static final class MethodInfo - { + private static final class MethodInfo { Method method; String name; @@ -492,18 +420,15 @@ private static final class MethodInfo boolean upcast; - MethodInfo( Method method ) - { + MethodInfo(Method method) { this.method = null; name = method.getName(); parameterTypes = method.getParameterTypes(); upcast = false; } - void tryUpcasting( Class clazz ) - throws NoSuchMethodException - { - method = clazz.getMethod( name, parameterTypes ); + void tryUpcasting(Class clazz) throws NoSuchMethodException { + method = clazz.getMethod(name, parameterTypes); name = null; parameterTypes = null; upcast = true; diff --git a/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java b/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java index 51420cca..52493ce0 100644 --- a/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java +++ b/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java @@ -32,8 +32,7 @@ * @author Attila Szegedi * */ -public class MethodMap -{ +public class MethodMap { private static final int MORE_SPECIFIC = 0; private static final int LESS_SPECIFIC = 1; @@ -48,22 +47,20 @@ public class MethodMap /** * Add a method to a list of methods by name. For a particular class we are keeping track of all the methods with * the same name. - * + * * @param method The method */ - public void add( Method method ) - { + public void add(Method method) { String methodName = method.getName(); - List l = get( methodName ); + List l = get(methodName); - if ( l == null ) - { + if (l == null) { l = new ArrayList(); - methodByNameMap.put( methodName, l ); + methodByNameMap.put(methodName, l); } - l.add( method ); + l.add(method); } /** @@ -72,9 +69,8 @@ public void add( Method method ) * @param key The name of the method. * @return List list of methods */ - public List get( String key ) - { - return methodByNameMap.get( key ); + public List get(String key) { + return methodByNameMap.get(key); } /** @@ -94,21 +90,17 @@ public List get( String key ) * @return the most specific applicable method, or null if no method is applicable. * @throws AmbiguousException if there is more than one maximally specific applicable method */ - public Method find( String methodName, Object[] args ) - throws AmbiguousException - { - List methodList = get( methodName ); + public Method find(String methodName, Object[] args) throws AmbiguousException { + List methodList = get(methodName); - if ( methodList == null ) - { + if (methodList == null) { return null; } int l = args.length; Class[] classes = new Class[l]; - for ( int i = 0; i < l; ++i ) - { + for (int i = 0; i < l; ++i) { Object arg = args[i]; /* @@ -118,29 +110,22 @@ public Method find( String methodName, Object[] args ) classes[i] = arg == null ? null : arg.getClass(); } - return getMostSpecific( methodList, classes ); + return getMostSpecific(methodList, classes); } /** * simple distinguishable exception, used when we run across ambiguous overloading */ - public static class AmbiguousException - extends Exception - { - } + public static class AmbiguousException extends Exception {} - private static Method getMostSpecific( List methods, Class[] classes ) - throws AmbiguousException - { - LinkedList applicables = getApplicables( methods, classes ); + private static Method getMostSpecific(List methods, Class[] classes) throws AmbiguousException { + LinkedList applicables = getApplicables(methods, classes); - if ( applicables.isEmpty() ) - { + if (applicables.isEmpty()) { return null; } - if ( applicables.size() == 1 ) - { + if (applicables.size() == 1) { return applicables.getFirst(); } @@ -151,19 +136,15 @@ private static Method getMostSpecific( List methods, Class[] classes ) LinkedList maximals = new LinkedList(); - for ( Method app : applicables ) - { + for (Method app : applicables) { Class[] appArgs = app.getParameterTypes(); boolean lessSpecific = false; - for ( Iterator maximal = maximals.iterator(); !lessSpecific && maximal.hasNext(); ) - { + for (Iterator maximal = maximals.iterator(); !lessSpecific && maximal.hasNext(); ) { Method max = maximal.next(); - switch ( moreSpecific( appArgs, max.getParameterTypes() ) ) - { - case MORE_SPECIFIC: - { + switch (moreSpecific(appArgs, max.getParameterTypes())) { + case MORE_SPECIFIC: { /* * This method is more specific than the previously known maximally specific, so remove the old * maximum. @@ -173,8 +154,7 @@ private static Method getMostSpecific( List methods, Class[] classes ) break; } - case LESS_SPECIFIC: - { + case LESS_SPECIFIC: { /* * This method is less specific than some of the currently known maximally specific methods, so * we won't add it into the set of maximally specific methods @@ -186,14 +166,12 @@ private static Method getMostSpecific( List methods, Class[] classes ) } } - if ( !lessSpecific ) - { - maximals.addLast( app ); + if (!lessSpecific) { + maximals.addLast(app); } } - if ( maximals.size() > 1 ) - { + if (maximals.size() > 1) { // We have more than one maximally specific method throw new AmbiguousException(); } @@ -204,30 +182,25 @@ private static Method getMostSpecific( List methods, Class[] classes ) /** * Determines which method signature (represented by a class array) is more specific. This defines a partial * ordering on the method signatures. - * + * * @param c1 first signature to compare * @param c2 second signature to compare * @return MORE_SPECIFIC if c1 is more specific than c2, LESS_SPECIFIC if c1 is less specific than c2, INCOMPARABLE * if they are incomparable. */ - private static int moreSpecific( Class[] c1, Class[] c2 ) - { + private static int moreSpecific(Class[] c1, Class[] c2) { boolean c1MoreSpecific = false; boolean c2MoreSpecific = false; - for ( int i = 0; i < c1.length; ++i ) - { - if ( c1[i] != c2[i] ) - { - c1MoreSpecific = c1MoreSpecific || isStrictMethodInvocationConvertible( c2[i], c1[i] ); - c2MoreSpecific = c2MoreSpecific || isStrictMethodInvocationConvertible( c1[i], c2[i] ); + for (int i = 0; i < c1.length; ++i) { + if (c1[i] != c2[i]) { + c1MoreSpecific = c1MoreSpecific || isStrictMethodInvocationConvertible(c2[i], c1[i]); + c2MoreSpecific = c2MoreSpecific || isStrictMethodInvocationConvertible(c1[i], c2[i]); } } - if ( c1MoreSpecific ) - { - if ( c2MoreSpecific ) - { + if (c1MoreSpecific) { + if (c2MoreSpecific) { /* * Incomparable due to cross-assignable arguments (i.e. foo(String, Object) vs. foo(Object, String)) */ @@ -238,8 +211,7 @@ private static int moreSpecific( Class[] c1, Class[] c2 ) return MORE_SPECIFIC; } - if ( c2MoreSpecific ) - { + if (c2MoreSpecific) { return LESS_SPECIFIC; } @@ -252,49 +224,41 @@ private static int moreSpecific( Class[] c1, Class[] c2 ) /** * Returns all methods that are applicable to actual argument types. - * + * * @param methods list of all candidate methods * @param classes the actual types of the arguments * @return a list that contains only applicable methods (number of formal and actual arguments matches, and argument * types are assignable to formal types through a method invocation conversion). */ - private static LinkedList getApplicables( List methods, Class[] classes ) - { + private static LinkedList getApplicables(List methods, Class[] classes) { LinkedList list = new LinkedList(); - for ( Object method1 : methods ) - { + for (Object method1 : methods) { Method method = (Method) method1; - if ( isApplicable( method, classes ) ) - { - list.add( method ); + if (isApplicable(method, classes)) { + list.add(method); } - } return list; } /** * Returns true if the supplied method is applicable to actual argument types. - * + * * @param method The method to check for applicability * @param classes The arguments * @return true if the method applies to the parameter types */ - private static boolean isApplicable( Method method, Class[] classes ) - { + private static boolean isApplicable(Method method, Class[] classes) { Class[] methodArgs = method.getParameterTypes(); - if ( methodArgs.length != classes.length ) - { + if (methodArgs.length != classes.length) { return false; } - for ( int i = 0; i < classes.length; ++i ) - { - if ( !isMethodInvocationConvertible( methodArgs[i], classes[i] ) ) - { + for (int i = 0; i < classes.length; ++i) { + if (!isMethodInvocationConvertible(methodArgs[i], classes[i])) { return false; } } @@ -315,13 +279,11 @@ private static boolean isApplicable( Method method, Class[] classes ) * its corresponding object type or an object type of a primitive type that can be converted to the formal * type. */ - private static boolean isMethodInvocationConvertible( Class formal, Class actual ) - { + private static boolean isMethodInvocationConvertible(Class formal, Class actual) { /* * if it's a null, it means the arg was null */ - if ( actual == null && !formal.isPrimitive() ) - { + if (actual == null && !formal.isPrimitive()) { return true; } @@ -329,8 +291,7 @@ private static boolean isMethodInvocationConvertible( Class formal, Class actual * Check for identity or widening reference conversion */ - if ( actual != null && formal.isAssignableFrom( actual ) ) - { + if (actual != null && formal.isAssignableFrom(actual)) { return true; } @@ -338,28 +299,31 @@ private static boolean isMethodInvocationConvertible( Class formal, Class actual * Check for boxing with widening primitive conversion. Note that actual parameters are never primitives. */ - if ( formal.isPrimitive() ) - { - if ( formal == Boolean.TYPE && actual == Boolean.class ) - return true; - if ( formal == Character.TYPE && actual == Character.class ) - return true; - if ( formal == Byte.TYPE && actual == Byte.class ) - return true; - if ( formal == Short.TYPE && ( actual == Short.class || actual == Byte.class ) ) - return true; - if ( formal == Integer.TYPE - && ( actual == Integer.class || actual == Short.class || actual == Byte.class ) ) - return true; - if ( formal == Long.TYPE && ( actual == Long.class || actual == Integer.class || actual == Short.class - || actual == Byte.class ) ) - return true; - if ( formal == Float.TYPE && ( actual == Float.class || actual == Long.class || actual == Integer.class - || actual == Short.class || actual == Byte.class ) ) - return true; - if ( formal == Double.TYPE && ( actual == Double.class || actual == Float.class || actual == Long.class - || actual == Integer.class || actual == Short.class || actual == Byte.class ) ) + if (formal.isPrimitive()) { + if (formal == Boolean.TYPE && actual == Boolean.class) return true; + if (formal == Character.TYPE && actual == Character.class) return true; + if (formal == Byte.TYPE && actual == Byte.class) return true; + if (formal == Short.TYPE && (actual == Short.class || actual == Byte.class)) return true; + if (formal == Integer.TYPE && (actual == Integer.class || actual == Short.class || actual == Byte.class)) return true; + if (formal == Long.TYPE + && (actual == Long.class + || actual == Integer.class + || actual == Short.class + || actual == Byte.class)) return true; + if (formal == Float.TYPE + && (actual == Float.class + || actual == Long.class + || actual == Integer.class + || actual == Short.class + || actual == Byte.class)) return true; + if (formal == Double.TYPE + && (actual == Double.class + || actual == Float.class + || actual == Long.class + || actual == Integer.class + || actual == Short.class + || actual == Byte.class)) return true; } return false; @@ -375,13 +339,11 @@ private static boolean isMethodInvocationConvertible( Class formal, Class actual * @return true if either formal type is assignable from actual type, or formal and actual are both primitive types * and actual can be subject to widening conversion to formal. */ - private static boolean isStrictMethodInvocationConvertible( Class formal, Class actual ) - { + private static boolean isStrictMethodInvocationConvertible(Class formal, Class actual) { /* * we shouldn't get a null into, but if so */ - if ( actual == null && !formal.isPrimitive() ) - { + if (actual == null && !formal.isPrimitive()) { return true; } @@ -389,8 +351,7 @@ private static boolean isStrictMethodInvocationConvertible( Class formal, Class * Check for identity or widening reference conversion */ - if ( formal.isAssignableFrom( actual ) ) - { + if (formal.isAssignableFrom(actual)) { return true; } @@ -398,20 +359,20 @@ private static boolean isStrictMethodInvocationConvertible( Class formal, Class * Check for widening primitive conversion. */ - if ( formal.isPrimitive() ) - { - if ( formal == Short.TYPE && ( actual == Byte.TYPE ) ) - return true; - if ( formal == Integer.TYPE && ( actual == Short.TYPE || actual == Byte.TYPE ) ) - return true; - if ( formal == Long.TYPE && ( actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE ) ) - return true; - if ( formal == Float.TYPE - && ( actual == Long.TYPE || actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE ) ) + if (formal.isPrimitive()) { + if (formal == Short.TYPE && (actual == Byte.TYPE)) return true; + if (formal == Integer.TYPE && (actual == Short.TYPE || actual == Byte.TYPE)) return true; + if (formal == Long.TYPE && (actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE)) return true; - if ( formal == Double.TYPE && ( actual == Float.TYPE || actual == Long.TYPE || actual == Integer.TYPE - || actual == Short.TYPE || actual == Byte.TYPE ) ) + if (formal == Float.TYPE + && (actual == Long.TYPE || actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE)) return true; + if (formal == Double.TYPE + && (actual == Float.TYPE + || actual == Long.TYPE + || actual == Integer.TYPE + || actual == Short.TYPE + || actual == Byte.TYPE)) return true; } return false; } diff --git a/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java b/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java index 656c8201..0ca46b7f 100644 --- a/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java +++ b/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java @@ -34,15 +34,14 @@ *

      * The implementation supports indexed, nested and mapped properties similar to the JSP way. *

      - * + * * @author Jason van Zyl * @author Vincent Siveton * * @see http://struts.apache.org/1.x/struts-taglib/indexedprops.html */ -public class ReflectionValueExtractor -{ +public class ReflectionValueExtractor { private static final Class[] CLASS_ARGS = new Class[0]; private static final Object[] OBJECT_ARGS = new Object[0]; @@ -52,7 +51,7 @@ public class ReflectionValueExtractor * space overflows due to retention of discarded classloaders. */ private static final Map, WeakReference> classMaps = - new WeakHashMap, WeakReference>(); + new WeakHashMap, WeakReference>(); static final int EOF = -1; @@ -66,83 +65,69 @@ public class ReflectionValueExtractor static final char MAPPED_END = ')'; - static class Tokenizer - { + static class Tokenizer { final String expression; int idx; - public Tokenizer( String expression ) - { + public Tokenizer(String expression) { this.expression = expression; } - public int peekChar() - { - return idx < expression.length() ? expression.charAt( idx ) : EOF; + public int peekChar() { + return idx < expression.length() ? expression.charAt(idx) : EOF; } - public int skipChar() - { - return idx < expression.length() ? expression.charAt( idx++ ) : EOF; + public int skipChar() { + return idx < expression.length() ? expression.charAt(idx++) : EOF; } - public String nextToken( char delimiter ) - { + public String nextToken(char delimiter) { int start = idx; - while ( idx < expression.length() && delimiter != expression.charAt( idx ) ) - { + while (idx < expression.length() && delimiter != expression.charAt(idx)) { idx++; } // delimiter MUST be present - if ( idx <= start || idx >= expression.length() ) - { + if (idx <= start || idx >= expression.length()) { return null; } - return expression.substring( start, idx++ ); + return expression.substring(start, idx++); } - public String nextPropertyName() - { + public String nextPropertyName() { final int start = idx; - while ( idx < expression.length() && Character.isJavaIdentifierPart( expression.charAt( idx ) ) ) - { + while (idx < expression.length() && Character.isJavaIdentifierPart(expression.charAt(idx))) { idx++; } // property name does not require delimiter - if ( idx <= start || idx > expression.length() ) - { + if (idx <= start || idx > expression.length()) { return null; } - return expression.substring( start, idx ); + return expression.substring(start, idx); } - public int getPosition() - { + public int getPosition() { return idx < expression.length() ? idx : EOF; } // to make tokenizer look pretty in debugger @Override - public String toString() - { - return idx < expression.length() ? expression.substring( idx ) : ""; + public String toString() { + return idx < expression.length() ? expression.substring(idx) : ""; } } - private ReflectionValueExtractor() - { - } + private ReflectionValueExtractor() {} /** *

      The implementation supports indexed, nested and mapped properties.

      - * + * *
        *
      • nested properties should be defined by a dot, i.e. "user.address.street"
      • *
      • indexed properties (java.util.List or array instance) should be contains (\\w+)\\[(\\d+)\\] @@ -150,21 +135,19 @@ private ReflectionValueExtractor() *
      • mapped properties should be contains (\\w+)\\((.+)\\) pattern, i.e. * "user.addresses(myAddress).street"
      • *
      - * + * * @param expression not null expression * @param root not null object * @return the object defined by the expression * @throws Exception if any */ - public static Object evaluate( String expression, Object root ) - throws Exception - { - return evaluate( expression, root, true ); + public static Object evaluate(String expression, Object root) throws Exception { + return evaluate(expression, root, true); } /** *

      The implementation supports indexed, nested and mapped properties.

      - * + * *
        *
      • nested properties should be defined by a dot, i.e. "user.address.street"
      • *
      • indexed properties (java.util.List or array instance) should be contains (\\w+)\\[(\\d+)\\] @@ -172,7 +155,7 @@ public static Object evaluate( String expression, Object root ) *
      • mapped properties should be contains (\\w+)\\((.+)\\) pattern, i.e. * "user.addresses(myAddress).street"
      • *
      - * + * * @param expression not null expression * @param root not null object * @param trimRootToken root start @@ -180,9 +163,7 @@ public static Object evaluate( String expression, Object root ) * @throws Exception if any */ // TODO: don't throw Exception - public static Object evaluate( String expression, final Object root, final boolean trimRootToken ) - throws Exception - { + public static Object evaluate(String expression, final Object root, final boolean trimRootToken) throws Exception { Object value = root; // ---------------------------------------------------------------------- @@ -190,44 +171,45 @@ public static Object evaluate( String expression, final Object root, final boole // MavenProject instance. // ---------------------------------------------------------------------- - if ( StringUtils.isEmpty( expression ) || !Character.isJavaIdentifierStart( expression.charAt( 0 ) ) ) - { + if (StringUtils.isEmpty(expression) || !Character.isJavaIdentifierStart(expression.charAt(0))) { return null; } - boolean hasDots = expression.indexOf( PROPERTY_START ) >= 0; + boolean hasDots = expression.indexOf(PROPERTY_START) >= 0; final Tokenizer tokenizer; - if ( trimRootToken && hasDots ) - { - tokenizer = new Tokenizer( expression ); + if (trimRootToken && hasDots) { + tokenizer = new Tokenizer(expression); tokenizer.nextPropertyName(); - if ( tokenizer.getPosition() == EOF ) - { + if (tokenizer.getPosition() == EOF) { return null; } - } - else - { - tokenizer = new Tokenizer( "." + expression ); + } else { + tokenizer = new Tokenizer("." + expression); } int propertyPosition = tokenizer.getPosition(); - while ( value != null && tokenizer.peekChar() != EOF ) - { - switch ( tokenizer.skipChar() ) - { + while (value != null && tokenizer.peekChar() != EOF) { + switch (tokenizer.skipChar()) { case INDEXED_START: - value = getIndexedValue( expression, propertyPosition, tokenizer.getPosition(), value, - tokenizer.nextToken( INDEXED_END ) ); + value = getIndexedValue( + expression, + propertyPosition, + tokenizer.getPosition(), + value, + tokenizer.nextToken(INDEXED_END)); break; case MAPPED_START: - value = getMappedValue( expression, propertyPosition, tokenizer.getPosition(), value, - tokenizer.nextToken( MAPPED_END ) ); + value = getMappedValue( + expression, + propertyPosition, + tokenizer.getPosition(), + value, + tokenizer.nextToken(MAPPED_END)); break; case PROPERTY_START: propertyPosition = tokenizer.getPosition(); - value = getPropertyValue( value, tokenizer.nextPropertyName() ); + value = getPropertyValue(value, tokenizer.nextPropertyName()); break; default: // could not parse expression @@ -238,122 +220,100 @@ public static Object evaluate( String expression, final Object root, final boole return value; } - private static Object getMappedValue( final String expression, final int from, final int to, final Object value, - final String key ) - throws Exception - { - if ( value == null || key == null ) - { + private static Object getMappedValue( + final String expression, final int from, final int to, final Object value, final String key) + throws Exception { + if (value == null || key == null) { return null; } - if ( value instanceof Map ) - { - Object[] localParams = new Object[] { key }; - ClassMap classMap = getClassMap( value.getClass() ); - Method method = classMap.findMethod( "get", localParams ); - return method.invoke( value, localParams ); + if (value instanceof Map) { + Object[] localParams = new Object[] {key}; + ClassMap classMap = getClassMap(value.getClass()); + Method method = classMap.findMethod("get", localParams); + return method.invoke(value, localParams); } - final String message = - String.format( "The token '%s' at position '%d' refers to a java.util.Map, but the value seems is an instance of '%s'", - expression.subSequence( from, to ), from, value.getClass() ); + final String message = String.format( + "The token '%s' at position '%d' refers to a java.util.Map, but the value seems is an instance of '%s'", + expression.subSequence(from, to), from, value.getClass()); - throw new Exception( message ); + throw new Exception(message); } - private static Object getIndexedValue( final String expression, final int from, final int to, final Object value, - final String indexStr ) - throws Exception - { - try - { - int index = Integer.parseInt( indexStr ); - - if ( value.getClass().isArray() ) - { - return Array.get( value, index ); + private static Object getIndexedValue( + final String expression, final int from, final int to, final Object value, final String indexStr) + throws Exception { + try { + int index = Integer.parseInt(indexStr); + + if (value.getClass().isArray()) { + return Array.get(value, index); } - if ( value instanceof List ) - { - ClassMap classMap = getClassMap( value.getClass() ); + if (value instanceof List) { + ClassMap classMap = getClassMap(value.getClass()); // use get method on List interface - Object[] localParams = new Object[] { index }; - Method method = classMap.findMethod( "get", localParams ); - return method.invoke( value, localParams ); + Object[] localParams = new Object[] {index}; + Method method = classMap.findMethod("get", localParams); + return method.invoke(value, localParams); } - } - catch ( NumberFormatException e ) - { + } catch (NumberFormatException e) { return null; - } - catch ( InvocationTargetException e ) - { + } catch (InvocationTargetException e) { // catch array index issues gracefully, otherwise release - if ( e.getCause() instanceof IndexOutOfBoundsException ) - { + if (e.getCause() instanceof IndexOutOfBoundsException) { return null; } throw e; } - final String message = - String.format( "The token '%s' at position '%d' refers to a java.util.List or an array, but the value seems is an instance of '%s'", - expression.subSequence( from, to ), from, value.getClass() ); + final String message = String.format( + "The token '%s' at position '%d' refers to a java.util.List or an array, but the value seems is an instance of '%s'", + expression.subSequence(from, to), from, value.getClass()); - throw new Exception( message ); + throw new Exception(message); } - private static Object getPropertyValue( Object value, String property ) - throws Exception - { - if ( value == null || property == null ) - { + private static Object getPropertyValue(Object value, String property) throws Exception { + if (value == null || property == null) { return null; } - ClassMap classMap = getClassMap( value.getClass() ); - String methodBase = StringUtils.capitalizeFirstLetter( property ); + ClassMap classMap = getClassMap(value.getClass()); + String methodBase = StringUtils.capitalizeFirstLetter(property); String methodName = "get" + methodBase; - Method method = classMap.findMethod( methodName, CLASS_ARGS ); + Method method = classMap.findMethod(methodName, CLASS_ARGS); - if ( method == null ) - { + if (method == null) { // perhaps this is a boolean property?? methodName = "is" + methodBase; - method = classMap.findMethod( methodName, CLASS_ARGS ); + method = classMap.findMethod(methodName, CLASS_ARGS); } - if ( method == null ) - { + if (method == null) { return null; } - try - { - return method.invoke( value, OBJECT_ARGS ); - } - catch ( InvocationTargetException e ) - { + try { + return method.invoke(value, OBJECT_ARGS); + } catch (InvocationTargetException e) { throw e; } } - private static ClassMap getClassMap( Class clazz ) - { + private static ClassMap getClassMap(Class clazz) { - WeakReference softRef = classMaps.get( clazz ); + WeakReference softRef = classMaps.get(clazz); ClassMap classMap; - if ( softRef == null || ( classMap = softRef.get() ) == null ) - { - classMap = new ClassMap( clazz ); + if (softRef == null || (classMap = softRef.get()) == null) { + classMap = new ClassMap(clazz); - classMaps.put( clazz, new WeakReference( classMap ) ); + classMaps.put(clazz, new WeakReference(classMap)); } return classMap; diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java index 4bea628a..4023b053 100644 --- a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java +++ b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java @@ -22,153 +22,124 @@ import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; -import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; -import java.nio.file.attribute.FileTime; -import java.time.Instant; import java.util.Objects; /** * Caching OutputStream to avoid overwriting a file with * the same content. */ -public class CachingOutputStream extends OutputStream -{ +public class CachingOutputStream extends OutputStream { private final Path path; private FileChannel channel; private ByteBuffer readBuffer; private ByteBuffer writeBuffer; private boolean modified; - public CachingOutputStream( File path ) throws IOException - { - this( Objects.requireNonNull( path ).toPath() ); + public CachingOutputStream(File path) throws IOException { + this(Objects.requireNonNull(path).toPath()); } - public CachingOutputStream( Path path ) throws IOException - { - this( path, 32 * 1024 ); + public CachingOutputStream(Path path) throws IOException { + this(path, 32 * 1024); } - public CachingOutputStream( Path path, int bufferSize ) throws IOException - { - this.path = Objects.requireNonNull( path ); - this.channel = FileChannel.open( path, - StandardOpenOption.READ, StandardOpenOption.WRITE, StandardOpenOption.CREATE ); - this.readBuffer = ByteBuffer.allocate( bufferSize ); - this.writeBuffer = ByteBuffer.allocate( bufferSize ); + public CachingOutputStream(Path path, int bufferSize) throws IOException { + this.path = Objects.requireNonNull(path); + this.channel = + FileChannel.open(path, StandardOpenOption.READ, StandardOpenOption.WRITE, StandardOpenOption.CREATE); + this.readBuffer = ByteBuffer.allocate(bufferSize); + this.writeBuffer = ByteBuffer.allocate(bufferSize); } @Override - public void write( int b ) throws IOException - { - if ( writeBuffer.remaining() < 1 ) - { - ( ( Buffer ) writeBuffer ).flip(); - flushBuffer( writeBuffer ); - ( ( Buffer ) writeBuffer ).clear(); + public void write(int b) throws IOException { + if (writeBuffer.remaining() < 1) { + ((Buffer) writeBuffer).flip(); + flushBuffer(writeBuffer); + ((Buffer) writeBuffer).clear(); } - writeBuffer.put( ( byte ) b ); + writeBuffer.put((byte) b); } @Override - public void write( byte[] b ) throws IOException - { - write( b, 0, b.length ); + public void write(byte[] b) throws IOException { + write(b, 0, b.length); } @Override - public void write( byte[] b, int off, int len ) throws IOException - { - if ( writeBuffer.remaining() < len ) - { - ( ( Buffer ) writeBuffer ).flip(); - flushBuffer( writeBuffer ); - ( ( Buffer ) writeBuffer ).clear(); + public void write(byte[] b, int off, int len) throws IOException { + if (writeBuffer.remaining() < len) { + ((Buffer) writeBuffer).flip(); + flushBuffer(writeBuffer); + ((Buffer) writeBuffer).clear(); } int capacity = writeBuffer.capacity(); - while ( len >= capacity ) - { - flushBuffer( ByteBuffer.wrap( b, off, capacity ) ); + while (len >= capacity) { + flushBuffer(ByteBuffer.wrap(b, off, capacity)); off += capacity; len -= capacity; } - if ( len > 0 ) - { - writeBuffer.put( b, off, len ); + if (len > 0) { + writeBuffer.put(b, off, len); } } @Override - public void flush() throws IOException - { - ( ( Buffer ) writeBuffer ).flip(); - flushBuffer( writeBuffer ); - ( ( Buffer ) writeBuffer ).clear(); + public void flush() throws IOException { + ((Buffer) writeBuffer).flip(); + flushBuffer(writeBuffer); + ((Buffer) writeBuffer).clear(); super.flush(); } - private void flushBuffer( ByteBuffer writeBuffer ) throws IOException - { - if ( modified ) - { - channel.write( writeBuffer ); - } - else - { + private void flushBuffer(ByteBuffer writeBuffer) throws IOException { + if (modified) { + channel.write(writeBuffer); + } else { int len = writeBuffer.remaining(); ByteBuffer readBuffer; - if ( this.readBuffer.capacity() >= len ) - { + if (this.readBuffer.capacity() >= len) { readBuffer = this.readBuffer; - ( ( Buffer ) readBuffer ).clear(); - readBuffer.limit( len ); - } - else - { - readBuffer = ByteBuffer.allocate( len ); + ((Buffer) readBuffer).clear(); + readBuffer.limit(len); + } else { + readBuffer = ByteBuffer.allocate(len); } - while ( len > 0 ) - { - int read = channel.read( readBuffer ); - if ( read <= 0 ) - { + while (len > 0) { + int read = channel.read(readBuffer); + if (read <= 0) { modified = true; - channel.position( channel.position() - readBuffer.position() ); - channel.write( writeBuffer ); + channel.position(channel.position() - readBuffer.position()); + channel.write(writeBuffer); return; } len -= read; } - ( ( Buffer ) readBuffer ).flip(); - if ( readBuffer.compareTo( writeBuffer ) != 0 ) - { + ((Buffer) readBuffer).flip(); + if (readBuffer.compareTo(writeBuffer) != 0) { modified = true; - channel.position( channel.position() - readBuffer.remaining() ); - channel.write( writeBuffer ); + channel.position(channel.position() - readBuffer.remaining()); + channel.write(writeBuffer); } } } @Override - public void close() throws IOException - { - if ( channel.isOpen() ) - { + public void close() throws IOException { + if (channel.isOpen()) { flush(); long position = channel.position(); - if ( position != channel.size() ) - { + if (position != channel.size()) { modified = true; - channel.truncate( position ); + channel.truncate(position); } channel.close(); } } - public boolean isModified() - { + public boolean isModified() { return modified; } } diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java b/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java index 23cc4411..98698712 100644 --- a/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java +++ b/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java @@ -19,44 +19,35 @@ import java.io.File; import java.io.IOException; import java.io.OutputStreamWriter; -import java.io.StringWriter; import java.nio.charset.Charset; -import java.nio.file.Files; import java.nio.file.Path; -import java.util.Arrays; import java.util.Objects; /** * Caching Writer to avoid overwriting a file with * the same content. */ -public class CachingWriter extends OutputStreamWriter -{ +public class CachingWriter extends OutputStreamWriter { private final CachingOutputStream cos; - public CachingWriter( File path, Charset charset ) throws IOException - { - this( Objects.requireNonNull( path ).toPath(), charset ); + public CachingWriter(File path, Charset charset) throws IOException { + this(Objects.requireNonNull(path).toPath(), charset); } - public CachingWriter( Path path, Charset charset ) throws IOException - { - this( path, charset, 32 * 1024 ); + public CachingWriter(Path path, Charset charset) throws IOException { + this(path, charset, 32 * 1024); } - public CachingWriter( Path path, Charset charset, int bufferSize ) throws IOException - { - this( new CachingOutputStream( path, bufferSize ), charset ); + public CachingWriter(Path path, Charset charset, int bufferSize) throws IOException { + this(new CachingOutputStream(path, bufferSize), charset); } - private CachingWriter( CachingOutputStream outputStream, Charset charset ) throws IOException - { - super( outputStream, charset ); + private CachingWriter(CachingOutputStream outputStream, Charset charset) throws IOException { + super(outputStream, charset); this.cos = outputStream; } - public boolean isModified() - { + public boolean isModified() { return cos.isModified(); } } diff --git a/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java b/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java index bfa5c471..ff6112f0 100644 --- a/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java +++ b/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java @@ -23,13 +23,11 @@ * Interface of a wrapper for input streams. This facade is used by methods, which are being implemented for files, * URL's, or input streams. */ -public interface InputStreamFacade -{ +public interface InputStreamFacade { /** * The caller must assume, that this method may be invoked only once. * @return Retrieves the actual {@link InputStream}. * @throws IOException if io issue */ - InputStream getInputStream() - throws IOException; + InputStream getInputStream() throws IOException; } diff --git a/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java b/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java index e634b95f..02fac256 100644 --- a/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java +++ b/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java @@ -22,21 +22,16 @@ /** * Implementation of {@link InputStreamFacade} for raw input streams. */ -@SuppressWarnings( { "UnusedDeclaration" } ) -public class RawInputStreamFacade - implements InputStreamFacade -{ +@SuppressWarnings({"UnusedDeclaration"}) +public class RawInputStreamFacade implements InputStreamFacade { final InputStream stream; - public RawInputStreamFacade( InputStream stream ) - { + public RawInputStreamFacade(InputStream stream) { this.stream = stream; } @Override - public InputStream getInputStream() - throws IOException - { + public InputStream getInputStream() throws IOException { return stream; } } diff --git a/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java b/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java index da09b4c1..be5a67ed 100644 --- a/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java +++ b/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java @@ -23,20 +23,15 @@ /** * Implementation of {@link InputStreamFacade} for URL's. */ -public class URLInputStreamFacade - implements InputStreamFacade -{ +public class URLInputStreamFacade implements InputStreamFacade { private final URL url; - public URLInputStreamFacade( URL url ) - { + public URLInputStreamFacade(URL url) { this.url = url; } @Override - public InputStream getInputStream() - throws IOException - { + public InputStream getInputStream() throws IOException { return url.openStream(); } } diff --git a/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java b/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java index 4f3a9d84..df530ffb 100644 --- a/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java +++ b/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java @@ -20,7 +20,6 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; - import java.util.HashMap; import java.util.Map; @@ -30,19 +29,16 @@ * * @author John Casey */ -public final class Reflector -{ +public final class Reflector { private static final String CONSTRUCTOR_METHOD_NAME = "$$CONSTRUCTOR$$"; private static final String GET_INSTANCE_METHOD_NAME = "getInstance"; private Map>> classMaps = - new HashMap>>(); + new HashMap>>(); /** Ensure no instances of Reflector are created...this is a utility. */ - public Reflector() - { - } + public Reflector() {} /** * Create a new instance of a class, given the array of parameters... Uses constructor caching to find a constructor @@ -54,50 +50,41 @@ public Reflector() * @return The instantiated object * @throws ReflectorException In case anything goes wrong here... */ - @SuppressWarnings( { "UnusedDeclaration" } ) - public T newInstance( Class theClass, Object[] params ) - throws ReflectorException - { - if ( params == null ) - { + @SuppressWarnings({"UnusedDeclaration"}) + public T newInstance(Class theClass, Object[] params) throws ReflectorException { + if (params == null) { params = new Object[0]; } Class[] paramTypes = new Class[params.length]; - for ( int i = 0, len = params.length; i < len; i++ ) - { + for (int i = 0, len = params.length; i < len; i++) { paramTypes[i] = params[i].getClass(); } - try - { - Constructor con = getConstructor( theClass, paramTypes ); + try { + Constructor con = getConstructor(theClass, paramTypes); - if ( con == null ) - { + if (con == null) { StringBuilder buffer = new StringBuilder(); - buffer.append( "Constructor not found for class: " ); - buffer.append( theClass.getName() ); - buffer.append( " with specified or ancestor parameter classes: " ); + buffer.append("Constructor not found for class: "); + buffer.append(theClass.getName()); + buffer.append(" with specified or ancestor parameter classes: "); - for ( Class paramType : paramTypes ) - { - buffer.append( paramType.getName() ); - buffer.append( ',' ); + for (Class paramType : paramTypes) { + buffer.append(paramType.getName()); + buffer.append(','); } - buffer.setLength( buffer.length() - 1 ); + buffer.setLength(buffer.length() - 1); - throw new ReflectorException( buffer.toString() ); + throw new ReflectorException(buffer.toString()); } - return con.newInstance( params ); - } - catch ( InstantiationException | InvocationTargetException | IllegalAccessException ex ) - { - throw new ReflectorException( ex ); + return con.newInstance(params); + } catch (InstantiationException | InvocationTargetException | IllegalAccessException ex) { + throw new ReflectorException(ex); } } @@ -111,27 +98,21 @@ public T newInstance( Class theClass, Object[] params ) * @return The singleton object * @throws ReflectorException In case anything goes wrong here... */ - @SuppressWarnings( { "UnusedDeclaration" } ) - public T getSingleton( Class theClass, Object[] initParams ) - throws ReflectorException - { + @SuppressWarnings({"UnusedDeclaration"}) + public T getSingleton(Class theClass, Object[] initParams) throws ReflectorException { Class[] paramTypes = new Class[initParams.length]; - for ( int i = 0, len = initParams.length; i < len; i++ ) - { + for (int i = 0, len = initParams.length; i < len; i++) { paramTypes[i] = initParams[i].getClass(); } - try - { - Method method = getMethod( theClass, GET_INSTANCE_METHOD_NAME, paramTypes ); + try { + Method method = getMethod(theClass, GET_INSTANCE_METHOD_NAME, paramTypes); // noinspection unchecked - return (T) method.invoke( null, initParams ); - } - catch ( InvocationTargetException | IllegalAccessException ex ) - { - throw new ReflectorException( ex ); + return (T) method.invoke(null, initParams); + } catch (InvocationTargetException | IllegalAccessException ex) { + throw new ReflectorException(ex); } } @@ -144,113 +125,86 @@ public T getSingleton( Class theClass, Object[] initParams ) * @return The result of the method call * @throws ReflectorException In case of an error looking up or invoking the method. */ - @SuppressWarnings( { "UnusedDeclaration" } ) - public Object invoke( Object target, String methodName, Object[] params ) - throws ReflectorException - { - if ( params == null ) - { + @SuppressWarnings({"UnusedDeclaration"}) + public Object invoke(Object target, String methodName, Object[] params) throws ReflectorException { + if (params == null) { params = new Object[0]; } Class[] paramTypes = new Class[params.length]; - for ( int i = 0, len = params.length; i < len; i++ ) - { + for (int i = 0, len = params.length; i < len; i++) { paramTypes[i] = params[i].getClass(); } - try - { - Method method = getMethod( target.getClass(), methodName, paramTypes ); + try { + Method method = getMethod(target.getClass(), methodName, paramTypes); - if ( method == null ) - { + if (method == null) { StringBuilder buffer = new StringBuilder(); - buffer.append( "Singleton-producing method named '" ).append( methodName ).append( "' not found with specified parameter classes: " ); + buffer.append("Singleton-producing method named '") + .append(methodName) + .append("' not found with specified parameter classes: "); - for ( Class paramType : paramTypes ) - { - buffer.append( paramType.getName() ); - buffer.append( ',' ); + for (Class paramType : paramTypes) { + buffer.append(paramType.getName()); + buffer.append(','); } - buffer.setLength( buffer.length() - 1 ); + buffer.setLength(buffer.length() - 1); - throw new ReflectorException( buffer.toString() ); + throw new ReflectorException(buffer.toString()); } - return method.invoke( target, params ); - } - catch ( InvocationTargetException | IllegalAccessException ex ) - { - throw new ReflectorException( ex ); + return method.invoke(target, params); + } catch (InvocationTargetException | IllegalAccessException ex) { + throw new ReflectorException(ex); } } - @SuppressWarnings( { "UnusedDeclaration" } ) - public Object getStaticField( Class targetClass, String fieldName ) - throws ReflectorException - { - try - { - Field field = targetClass.getField( fieldName ); + @SuppressWarnings({"UnusedDeclaration"}) + public Object getStaticField(Class targetClass, String fieldName) throws ReflectorException { + try { + Field field = targetClass.getField(fieldName); - return field.get( null ); - } - catch ( SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e ) - { - throw new ReflectorException( e ); + return field.get(null); + } catch (SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { + throw new ReflectorException(e); } } - @SuppressWarnings( { "UnusedDeclaration" } ) - public Object getField( Object target, String fieldName ) - throws ReflectorException - { - return getField( target, fieldName, false ); + @SuppressWarnings({"UnusedDeclaration"}) + public Object getField(Object target, String fieldName) throws ReflectorException { + return getField(target, fieldName, false); } - public Object getField( Object target, String fieldName, boolean breakAccessibility ) - throws ReflectorException - { + public Object getField(Object target, String fieldName, boolean breakAccessibility) throws ReflectorException { Class targetClass = target.getClass(); - while ( targetClass != null ) - { - try - { - Field field = targetClass.getDeclaredField( fieldName ); + while (targetClass != null) { + try { + Field field = targetClass.getDeclaredField(fieldName); boolean accessibilityBroken = false; - if ( !field.isAccessible() && breakAccessibility ) - { - field.setAccessible( true ); + if (!field.isAccessible() && breakAccessibility) { + field.setAccessible(true); accessibilityBroken = true; } - Object result = field.get( target ); + Object result = field.get(target); - if ( accessibilityBroken ) - { - field.setAccessible( false ); + if (accessibilityBroken) { + field.setAccessible(false); } return result; - } - catch ( SecurityException e ) - { - throw new ReflectorException( e ); - } - catch ( NoSuchFieldException e ) - { - if ( targetClass == Object.class ) - throw new ReflectorException( e ); + } catch (SecurityException e) { + throw new ReflectorException(e); + } catch (NoSuchFieldException e) { + if (targetClass == Object.class) throw new ReflectorException(e); targetClass = targetClass.getSuperclass(); - } - catch ( IllegalAccessException e ) - { - throw new ReflectorException( e ); + } catch (IllegalAccessException e) { + throw new ReflectorException(e); } } // Never reached, but needed to satisfy compiler @@ -266,48 +220,41 @@ public Object getField( Object target, String fieldName, boolean breakAccessibil * @return The result of the method call * @throws ReflectorException In case of an error looking up or invoking the method. */ - @SuppressWarnings( { "UnusedDeclaration" } ) - public Object invokeStatic( Class targetClass, String methodName, Object[] params ) - throws ReflectorException - { - if ( params == null ) - { + @SuppressWarnings({"UnusedDeclaration"}) + public Object invokeStatic(Class targetClass, String methodName, Object[] params) throws ReflectorException { + if (params == null) { params = new Object[0]; } Class[] paramTypes = new Class[params.length]; - for ( int i = 0, len = params.length; i < len; i++ ) - { + for (int i = 0, len = params.length; i < len; i++) { paramTypes[i] = params[i].getClass(); } - try - { - Method method = getMethod( targetClass, methodName, paramTypes ); + try { + Method method = getMethod(targetClass, methodName, paramTypes); - if ( method == null ) - { + if (method == null) { StringBuilder buffer = new StringBuilder(); - buffer.append( "Singleton-producing method named \'" ).append( methodName ).append( "\' not found with specified parameter classes: " ); + buffer.append("Singleton-producing method named \'") + .append(methodName) + .append("\' not found with specified parameter classes: "); - for ( Class paramType : paramTypes ) - { - buffer.append( paramType.getName() ); - buffer.append( ',' ); + for (Class paramType : paramTypes) { + buffer.append(paramType.getName()); + buffer.append(','); } - buffer.setLength( buffer.length() - 1 ); + buffer.setLength(buffer.length() - 1); - throw new ReflectorException( buffer.toString() ); + throw new ReflectorException(buffer.toString()); } - return method.invoke( null, params ); - } - catch ( InvocationTargetException | IllegalAccessException ex ) - { - throw new ReflectorException( ex ); + return method.invoke(null, params); + } catch (InvocationTargetException | IllegalAccessException ex) { + throw new ReflectorException(ex); } } @@ -320,142 +267,112 @@ public Object invokeStatic( Class targetClass, String methodName, Object[] param * @return the Constructor object that matches. * @throws ReflectorException In case we can't retrieve the proper constructor. */ - public Constructor getConstructor( Class targetClass, Class[] params ) - throws ReflectorException - { - Map> constructorMap = getConstructorMap( targetClass ); + public Constructor getConstructor(Class targetClass, Class[] params) throws ReflectorException { + Map> constructorMap = getConstructorMap(targetClass); - StringBuilder key = new StringBuilder( 200 ); + StringBuilder key = new StringBuilder(200); - key.append( "(" ); + key.append("("); - for ( Class param : params ) - { - key.append( param.getName() ); - key.append( "," ); + for (Class param : params) { + key.append(param.getName()); + key.append(","); } - if ( params.length > 0 ) - { - key.setLength( key.length() - 1 ); + if (params.length > 0) { + key.setLength(key.length() - 1); } - key.append( ")" ); + key.append(")"); Constructor constructor; String paramKey = key.toString(); - synchronized ( paramKey.intern() ) - { - constructor = constructorMap.get( paramKey ); + synchronized (paramKey.intern()) { + constructor = constructorMap.get(paramKey); - if ( constructor == null ) - { - @SuppressWarnings( { "unchecked" } ) + if (constructor == null) { + @SuppressWarnings({"unchecked"}) Constructor[] cands = (Constructor[]) targetClass.getConstructors(); - for ( Constructor cand : cands ) - { + for (Constructor cand : cands) { Class[] types = cand.getParameterTypes(); - if ( params.length != types.length ) - { + if (params.length != types.length) { continue; } - for ( int j = 0, len2 = params.length; j < len2; j++ ) - { - if ( !types[j].isAssignableFrom( params[j] ) ) - { + for (int j = 0, len2 = params.length; j < len2; j++) { + if (!types[j].isAssignableFrom(params[j])) { continue; } } // we got it, so store it! constructor = cand; - constructorMap.put( paramKey, constructor ); + constructorMap.put(paramKey, constructor); } } } - if ( constructor == null ) - { - throw new ReflectorException( "Error retrieving constructor object for: " + targetClass.getName() - + paramKey ); + if (constructor == null) { + throw new ReflectorException( + "Error retrieving constructor object for: " + targetClass.getName() + paramKey); } return constructor; } - public Object getObjectProperty( Object target, String propertyName ) - throws ReflectorException - { + public Object getObjectProperty(Object target, String propertyName) throws ReflectorException { Object returnValue; - if ( propertyName == null || propertyName.trim().length() < 1 ) - { - throw new ReflectorException( "Cannot retrieve value for empty property." ); + if (propertyName == null || propertyName.trim().length() < 1) { + throw new ReflectorException("Cannot retrieve value for empty property."); } - String beanAccessor = "get" + Character.toUpperCase( propertyName.charAt( 0 ) ); - if ( propertyName.trim().length() > 1 ) - { - beanAccessor += propertyName.substring( 1 ).trim(); + String beanAccessor = "get" + Character.toUpperCase(propertyName.charAt(0)); + if (propertyName.trim().length() > 1) { + beanAccessor += propertyName.substring(1).trim(); } Class targetClass = target.getClass(); Class[] emptyParams = {}; - Method method = _getMethod( targetClass, beanAccessor, emptyParams ); - if ( method == null ) - { - method = _getMethod( targetClass, propertyName, emptyParams ); - } - if ( method != null ) - { - try - { - returnValue = method.invoke( target, new Object[] {} ); - } - catch ( IllegalAccessException e ) - { - throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass - + "\'", e ); - } - catch ( InvocationTargetException e ) - { - throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass - + "\'", e ); + Method method = _getMethod(targetClass, beanAccessor, emptyParams); + if (method == null) { + method = _getMethod(targetClass, propertyName, emptyParams); + } + if (method != null) { + try { + returnValue = method.invoke(target, new Object[] {}); + } catch (IllegalAccessException e) { + throw new ReflectorException( + "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e); + } catch (InvocationTargetException e) { + throw new ReflectorException( + "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e); } } - if ( method != null ) - { - try - { - returnValue = method.invoke( target, new Object[] {} ); - } - catch ( IllegalAccessException e ) - { - throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass - + "\'", e ); + if (method != null) { + try { + returnValue = method.invoke(target, new Object[] {}); + } catch (IllegalAccessException e) { + throw new ReflectorException( + "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e); + } catch (InvocationTargetException e) { + throw new ReflectorException( + "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e); } - catch ( InvocationTargetException e ) - { - throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass - + "\'", e ); - } - } - else - { - returnValue = getField( target, propertyName, true ); - if ( returnValue == null ) - { + } else { + returnValue = getField(target, propertyName, true); + if (returnValue == null) { // TODO: Check if exception is the right action! Field exists, but contains null - throw new ReflectorException( "Neither method: \'" + propertyName + "\' nor bean accessor: \'" - + beanAccessor + "\' can be found for class: \'" + targetClass + "\', and retrieval of field: \'" - + propertyName + "\' returned null as value." ); + throw new ReflectorException("Neither method: \'" + propertyName + "\' nor bean accessor: \'" + + beanAccessor + "\' can be found for class: \'" + targetClass + + "\', and retrieval of field: \'" + + propertyName + "\' returned null as value."); } } @@ -471,76 +388,62 @@ public Object getObjectProperty( Object target, String propertyName ) * @return the Method object that matches. * @throws ReflectorException In case we can't retrieve the proper method. */ - public Method getMethod( Class targetClass, String methodName, Class[] params ) - throws ReflectorException - { - Method method = _getMethod( targetClass, methodName, params ); - - if ( method == null ) - { - throw new ReflectorException( "Method: \'" + methodName + "\' not found in class: \'" + targetClass - + "\'" ); + public Method getMethod(Class targetClass, String methodName, Class[] params) throws ReflectorException { + Method method = _getMethod(targetClass, methodName, params); + + if (method == null) { + throw new ReflectorException("Method: \'" + methodName + "\' not found in class: \'" + targetClass + "\'"); } return method; } - private Method _getMethod( Class targetClass, String methodName, Class[] params ) - throws ReflectorException - { - Map methodMap = (Map) getMethodMap( targetClass, methodName ); + private Method _getMethod(Class targetClass, String methodName, Class[] params) throws ReflectorException { + Map methodMap = (Map) getMethodMap(targetClass, methodName); - StringBuilder key = new StringBuilder( 200 ); + StringBuilder key = new StringBuilder(200); - key.append( "(" ); + key.append("("); - for ( Class param : params ) - { - key.append( param.getName() ); - key.append( "," ); + for (Class param : params) { + key.append(param.getName()); + key.append(","); } - key.append( ")" ); + key.append(")"); Method method; String paramKey = key.toString(); - synchronized ( paramKey.intern() ) - { - method = methodMap.get( paramKey ); + synchronized (paramKey.intern()) { + method = methodMap.get(paramKey); - if ( method == null ) - { + if (method == null) { Method[] cands = targetClass.getMethods(); - for ( Method cand : cands ) - { + for (Method cand : cands) { String name = cand.getName(); - if ( !methodName.equals( name ) ) - { + if (!methodName.equals(name)) { continue; } Class[] types = cand.getParameterTypes(); - if ( params.length != types.length ) - { + if (params.length != types.length) { continue; } - for ( int j = 0, len2 = params.length; j < len2; j++ ) - { - if ( !types[j].isAssignableFrom( params[j] ) ) - { + for (int j = 0, len2 = params.length; j < len2; j++) { + if (!types[j].isAssignableFrom(params[j])) { continue; } } // we got it, so store it! method = cand; - methodMap.put( paramKey, method ); + methodMap.put(paramKey, method); } } } @@ -555,10 +458,8 @@ private Method _getMethod( Class targetClass, String methodName, Class[] params * @return The cache of constructors. * @throws ReflectorException in case of a lookup error. */ - private Map> getConstructorMap( Class theClass ) - throws ReflectorException - { - return (Map>) getMethodMap( theClass, CONSTRUCTOR_METHOD_NAME ); + private Map> getConstructorMap(Class theClass) throws ReflectorException { + return (Map>) getMethodMap(theClass, CONSTRUCTOR_METHOD_NAME); } /** @@ -569,41 +470,32 @@ private Map> getConstructorMap( Class theClass ) * @return The cache of constructors. * @throws ReflectorException in case of a lookup error. */ - private Map getMethodMap( Class theClass, String methodName ) - throws ReflectorException - { + private Map getMethodMap(Class theClass, String methodName) throws ReflectorException { Map methodMap; - if ( theClass == null ) - { + if (theClass == null) { return null; } String className = theClass.getName(); - synchronized ( className.intern() ) - { - Map> classMethods = classMaps.get( className ); + synchronized (className.intern()) { + Map> classMethods = classMaps.get(className); - if ( classMethods == null ) - { + if (classMethods == null) { classMethods = new HashMap<>(); methodMap = new HashMap<>(); - classMethods.put( methodName, methodMap ); - classMaps.put( className, classMethods ); - } - else - { + classMethods.put(methodName, methodMap); + classMaps.put(className, classMethods); + } else { String key = className + "::" + methodName; - synchronized ( key.intern() ) - { - methodMap = classMethods.get( methodName ); + synchronized (key.intern()) { + methodMap = classMethods.get(methodName); - if ( methodMap == null ) - { + if (methodMap == null) { methodMap = new HashMap<>(); - classMethods.put( methodName, methodMap ); + classMethods.put(methodName, methodMap); } } } diff --git a/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java b/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java index 01952f7b..4608e175 100644 --- a/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java +++ b/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java @@ -22,22 +22,17 @@ * * @author John Casey */ -public class ReflectorException - extends Exception -{ - @SuppressWarnings( { "UnusedDeclaration" } ) - public ReflectorException() - { - } +public class ReflectorException extends Exception { + @SuppressWarnings({"UnusedDeclaration"}) + public ReflectorException() {} /** * Create a new ReflectorException with the specified message. * * @param msg The message. */ - public ReflectorException( String msg ) - { - super( msg ); + public ReflectorException(String msg) { + super(msg); } /** @@ -45,9 +40,8 @@ public ReflectorException( String msg ) * * @param root The root cause. */ - public ReflectorException( Throwable root ) - { - super( root ); + public ReflectorException(Throwable root) { + super(root); } /** @@ -56,8 +50,7 @@ public ReflectorException( Throwable root ) * @param msg The message. * @param root The root cause. */ - public ReflectorException( String msg, Throwable root ) - { - super( msg, root ); + public ReflectorException(String msg, Throwable root) { + super(msg, root); } -} \ No newline at end of file +} diff --git a/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java b/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java index ca5ba4ed..1a67c001 100644 --- a/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java +++ b/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java @@ -27,9 +27,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public abstract class AbstractTestThread - implements Runnable -{ +public abstract class AbstractTestThread implements Runnable { // ~ Instance fields ---------------------------------------------------------------------------- private String name; @@ -65,8 +63,7 @@ public abstract class AbstractTestThread *

      * Remember to call setThreadRegistry(ThreadRegistry) */ - public AbstractTestThread() - { + public AbstractTestThread() { super(); } @@ -75,10 +72,9 @@ public AbstractTestThread() * * @param registry a {@link org.codehaus.plexus.util.TestThreadManager} object. */ - public AbstractTestThread( TestThreadManager registry ) - { + public AbstractTestThread(TestThreadManager registry) { super(); - setThreadRegistry( registry ); + setThreadRegistry(registry); } // ~ Methods ------------------------------------------------------------------------------------ @@ -88,8 +84,7 @@ public AbstractTestThread( TestThreadManager registry ) * * @return a {@link java.lang.Throwable} object. */ - public Throwable getError() - { + public Throwable getError() { return error; } @@ -97,19 +92,13 @@ public Throwable getError() * Resets the test back to it's state before starting. If the test is currently running this method will block until * the test has finished running. Subclasses should call this method if overriding it. */ - public void reset() - { + public void reset() { // shouldn't reset until the test has finished running - synchronized ( this ) - { - while ( isRunning ) - { - try - { + synchronized (this) { + while (isRunning) { + try { wait(); - } - catch ( InterruptedException e ) - { + } catch (InterruptedException e) { } } @@ -123,15 +112,12 @@ public void reset() /** * Start this TestThread running. If the test is currently running then this method does nothing. */ - public final void start() - { + public final void start() { // shouldn't have multiple threads running this test at the same time - synchronized ( this ) - { - if ( isRunning == false ) - { + synchronized (this) { + if (isRunning == false) { isRunning = true; - Thread t = new Thread( this ); + Thread t = new Thread(this); t.start(); } } @@ -142,8 +128,7 @@ public final void start() * * @return a {@link java.lang.String} object. */ - public String getErrorMsg() - { + public String getErrorMsg() { return errorMsg; } @@ -152,8 +137,7 @@ public String getErrorMsg() * * @return a boolean. */ - public boolean hasFailed() - { + public boolean hasFailed() { return !passed; } @@ -162,8 +146,7 @@ public boolean hasFailed() * * @return DOCUMENT ME! */ - public boolean hasPassed() - { + public boolean hasPassed() { return passed; } @@ -172,29 +155,24 @@ public boolean hasPassed() * * @see java.lang.Runnable#run() */ - public final void run() - { - if ( registry == null ) - { - throw new IllegalArgumentException( "The ThreadRegistry is null. Ensure this is set before running this thread" ); + public final void run() { + if (registry == null) { + throw new IllegalArgumentException( + "The ThreadRegistry is null. Ensure this is set before running this thread"); } passed = false; - try - { + try { doRun(); - } - catch ( Throwable t ) - { + } catch (Throwable t) { error = t; } - registry.completed( this ); + registry.completed(this); hasRun = true; isRunning = false; // notify objects with blocked methods which are waiting // on this test to complete running - synchronized ( this ) - { + synchronized (this) { notifyAll(); } } @@ -204,17 +182,15 @@ public final void run() * * @throws java.lang.Throwable */ - public abstract void doRun() - throws Throwable; + public abstract void doRun() throws Throwable; /** * Set the registry this thread should notify when it has completed running * * @param registry a {@link org.codehaus.plexus.util.TestThreadManager} object. */ - public void setThreadRegistry( TestThreadManager registry ) + public void setThreadRegistry(TestThreadManager registry) { - { this.registry = registry; } @@ -223,8 +199,7 @@ public void setThreadRegistry( TestThreadManager registry ) * * @return a boolean. */ - public boolean hasRun() - { + public boolean hasRun() { return hasRun; } @@ -233,8 +208,7 @@ public boolean hasRun() * * @param throwable a {@link java.lang.Throwable} object. */ - public void setError( Throwable throwable ) - { + public void setError(Throwable throwable) { error = throwable; } @@ -243,8 +217,7 @@ public void setError( Throwable throwable ) * * @param string a {@link java.lang.String} object. */ - public void setErrorMsg( String string ) - { + public void setErrorMsg(String string) { errorMsg = string; } @@ -253,8 +226,7 @@ public void setErrorMsg( String string ) * * @param b a boolean. */ - public void setPassed( boolean b ) - { + public void setPassed(boolean b) { passed = b; } @@ -263,8 +235,7 @@ public void setPassed( boolean b ) * * @return a {@link java.lang.String} object. */ - public String getName() - { + public String getName() { return name; } @@ -273,16 +244,13 @@ public String getName() * * @param string a {@link java.lang.String} object. */ - public void setName( String string ) - { + public void setName(String string) { name = string; } - private final void debug( String msg ) - { - if ( DEBUG ) - { - System.out.println( this + ":" + msg ); + private final void debug(String msg) { + if (DEBUG) { + System.out.println(this + ":" + msg); } } } diff --git a/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java b/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java index edd76231..765e536a 100644 --- a/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java @@ -16,10 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -28,6 +24,10 @@ import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + /** *

      CollectionUtilsTest class.

      * @@ -35,109 +35,105 @@ * @version $Id: $Id * @since 3.4.0 */ -public class CollectionUtilsTest -{ +public class CollectionUtilsTest { /** *

      testMergeMaps.

      */ @Test - public void testMergeMaps() - { + public void testMergeMaps() { Map dominantMap = new HashMap(); - dominantMap.put( "a", "a" ); - dominantMap.put( "b", "b" ); - dominantMap.put( "c", "c" ); - dominantMap.put( "d", "d" ); - dominantMap.put( "e", "e" ); - dominantMap.put( "f", "f" ); + dominantMap.put("a", "a"); + dominantMap.put("b", "b"); + dominantMap.put("c", "c"); + dominantMap.put("d", "d"); + dominantMap.put("e", "e"); + dominantMap.put("f", "f"); Map recessiveMap = new HashMap(); - recessiveMap.put( "a", "invalid" ); - recessiveMap.put( "b", "invalid" ); - recessiveMap.put( "c", "invalid" ); - recessiveMap.put( "x", "x" ); - recessiveMap.put( "y", "y" ); - recessiveMap.put( "z", "z" ); + recessiveMap.put("a", "invalid"); + recessiveMap.put("b", "invalid"); + recessiveMap.put("c", "invalid"); + recessiveMap.put("x", "x"); + recessiveMap.put("y", "y"); + recessiveMap.put("z", "z"); - Map result = CollectionUtils.mergeMaps( dominantMap, recessiveMap ); + Map result = CollectionUtils.mergeMaps(dominantMap, recessiveMap); // We should have 9 elements - assertEquals( 9, result.keySet().size() ); + assertEquals(9, result.keySet().size()); // Check the elements. - assertEquals( "a", result.get( "a" ) ); - assertEquals( "b", result.get( "b" ) ); - assertEquals( "c", result.get( "c" ) ); - assertEquals( "d", result.get( "d" ) ); - assertEquals( "e", result.get( "e" ) ); - assertEquals( "f", result.get( "f" ) ); - assertEquals( "x", result.get( "x" ) ); - assertEquals( "y", result.get( "y" ) ); - assertEquals( "z", result.get( "z" ) ); + assertEquals("a", result.get("a")); + assertEquals("b", result.get("b")); + assertEquals("c", result.get("c")); + assertEquals("d", result.get("d")); + assertEquals("e", result.get("e")); + assertEquals("f", result.get("f")); + assertEquals("x", result.get("x")); + assertEquals("y", result.get("y")); + assertEquals("z", result.get("z")); } /** *

      testMergeMapArray.

      */ - @SuppressWarnings( "unchecked" ) + @SuppressWarnings("unchecked") @Test - public void testMergeMapArray() - { + public void testMergeMapArray() { // Test empty array of Maps - Map result0 = CollectionUtils.mergeMaps( new Map[] {} ); + Map result0 = CollectionUtils.mergeMaps(new Map[] {}); - assertNull( result0 ); + assertNull(result0); // Test with an array with a single element. Map map1 = new HashMap(); - map1.put( "a", "a" ); + map1.put("a", "a"); - Map result1 = CollectionUtils.mergeMaps( new Map[] { map1 } ); + Map result1 = CollectionUtils.mergeMaps(new Map[] {map1}); - assertEquals( "a", result1.get( "a" ) ); + assertEquals("a", result1.get("a")); // Test with an array with two elements. Map map2 = new HashMap(); - map2.put( "a", "aa" ); - map2.put( "b", "bb" ); + map2.put("a", "aa"); + map2.put("b", "bb"); - Map result2 = CollectionUtils.mergeMaps( new Map[] { map1, map2 } ); + Map result2 = CollectionUtils.mergeMaps(new Map[] {map1, map2}); - assertEquals( "a", result2.get( "a" ) ); - assertEquals( "bb", result2.get( "b" ) ); + assertEquals("a", result2.get("a")); + assertEquals("bb", result2.get("b")); // Now swap the dominant order. - Map result3 = CollectionUtils.mergeMaps( new Map[] { map2, map1 } ); + Map result3 = CollectionUtils.mergeMaps(new Map[] {map2, map1}); - assertEquals( "aa", result3.get( "a" ) ); - assertEquals( "bb", result3.get( "b" ) ); + assertEquals("aa", result3.get("a")); + assertEquals("bb", result3.get("b")); // Test with an array with three elements. Map map3 = new HashMap(); - map3.put( "a", "aaa" ); - map3.put( "b", "bbb" ); - map3.put( "c", "ccc" ); + map3.put("a", "aaa"); + map3.put("b", "bbb"); + map3.put("c", "ccc"); - Map result4 = CollectionUtils.mergeMaps( new Map[] { map1, map2, map3 } ); + Map result4 = CollectionUtils.mergeMaps(new Map[] {map1, map2, map3}); - assertEquals( "a", result4.get( "a" ) ); - assertEquals( "bb", result4.get( "b" ) ); - assertEquals( "ccc", result4.get( "c" ) ); + assertEquals("a", result4.get("a")); + assertEquals("bb", result4.get("b")); + assertEquals("ccc", result4.get("c")); // Now swap the dominant order. - Map result5 = CollectionUtils.mergeMaps( new Map[] { map3, map2, map1 } ); + Map result5 = CollectionUtils.mergeMaps(new Map[] {map3, map2, map1}); - assertEquals( "aaa", result5.get( "a" ) ); - assertEquals( "bbb", result5.get( "b" ) ); - assertEquals( "ccc", result5.get( "c" ) ); + assertEquals("aaa", result5.get("a")); + assertEquals("bbb", result5.get("b")); + assertEquals("ccc", result5.get("c")); } /** *

      testMavenPropertiesLoading.

      */ @org.junit.jupiter.api.Test - public void testMavenPropertiesLoading() - { + public void testMavenPropertiesLoading() { // Mimic MavenSession properties loading. Properties listed // in dominant order. Properties systemProperties = new Properties(); @@ -147,86 +143,85 @@ public void testMavenPropertiesLoading() Properties driverProperties = new Properties(); // System properties - systemProperties.setProperty( "maven.home", "/projects/maven" ); + systemProperties.setProperty("maven.home", "/projects/maven"); // User build properties - userBuildProperties.setProperty( "maven.username", "jvanzyl" ); - userBuildProperties.setProperty( "maven.repo.remote.enabled", "false" ); - userBuildProperties.setProperty( "maven.repo.local", "/opt/maven/artifact" ); + userBuildProperties.setProperty("maven.username", "jvanzyl"); + userBuildProperties.setProperty("maven.repo.remote.enabled", "false"); + userBuildProperties.setProperty("maven.repo.local", "/opt/maven/artifact"); // Project build properties - projectBuildProperties.setProperty( "maven.final.name", "maven" ); + projectBuildProperties.setProperty("maven.final.name", "maven"); String mavenRepoRemote = "http://www.ibiblio.org/maven,http://foo/bar"; // Project properties - projectProperties.setProperty( "maven.repo.remote", mavenRepoRemote ); + projectProperties.setProperty("maven.repo.remote", mavenRepoRemote); String basedir = "/home/jvanzyl/projects/maven"; // Driver properties - driverProperties.setProperty( "basedir", basedir ); - driverProperties.setProperty( "maven.build.src", "${basedir}/src" ); - driverProperties.setProperty( "maven.build.dir", "${basedir}/target" ); - driverProperties.setProperty( "maven.build.dest", "${maven.build.dir}/classes" ); - driverProperties.setProperty( "maven.repo.remote", "http://www.ibiblio.org/maven" ); - driverProperties.setProperty( "maven.final.name", "maven-1.0" ); - driverProperties.setProperty( "maven.repo.remote.enabled", "true" ); - driverProperties.setProperty( "maven.repo.local", "${maven.home}/artifact" ); - - Map result = CollectionUtils.mergeMaps( new Map[] { systemProperties, userBuildProperties, - projectBuildProperties, projectProperties, driverProperties } ); + driverProperties.setProperty("basedir", basedir); + driverProperties.setProperty("maven.build.src", "${basedir}/src"); + driverProperties.setProperty("maven.build.dir", "${basedir}/target"); + driverProperties.setProperty("maven.build.dest", "${maven.build.dir}/classes"); + driverProperties.setProperty("maven.repo.remote", "http://www.ibiblio.org/maven"); + driverProperties.setProperty("maven.final.name", "maven-1.0"); + driverProperties.setProperty("maven.repo.remote.enabled", "true"); + driverProperties.setProperty("maven.repo.local", "${maven.home}/artifact"); + + Map result = CollectionUtils.mergeMaps(new Map[] { + systemProperties, userBuildProperties, projectBuildProperties, projectProperties, driverProperties + }); // Values that should be taken from systemProperties. - assertEquals( "/projects/maven", (String) result.get( "maven.home" ) ); + assertEquals("/projects/maven", (String) result.get("maven.home")); // Values that should be taken from userBuildProperties. - assertEquals( "/opt/maven/artifact", (String) result.get( "maven.repo.local" ) ); - assertEquals( "false", (String) result.get( "maven.repo.remote.enabled" ) ); - assertEquals( "jvanzyl", (String) result.get( "maven.username" ) ); + assertEquals("/opt/maven/artifact", (String) result.get("maven.repo.local")); + assertEquals("false", (String) result.get("maven.repo.remote.enabled")); + assertEquals("jvanzyl", (String) result.get("maven.username")); // Values take from projectBuildProperties. - assertEquals( "maven", (String) result.get( "maven.final.name" ) ); + assertEquals("maven", (String) result.get("maven.final.name")); // Values take from projectProperties. - assertEquals( mavenRepoRemote, (String) result.get( "maven.repo.remote" ) ); + assertEquals(mavenRepoRemote, (String) result.get("maven.repo.remote")); } /** *

      testIteratorToListWithAPopulatedList.

      */ @org.junit.jupiter.api.Test - public void testIteratorToListWithAPopulatedList() - { + public void testIteratorToListWithAPopulatedList() { List original = new ArrayList(); - original.add( "en" ); - original.add( "to" ); - original.add( "tre" ); + original.add("en"); + original.add("to"); + original.add("tre"); - List copy = CollectionUtils.iteratorToList( original.iterator() ); + List copy = CollectionUtils.iteratorToList(original.iterator()); - assertNotNull( copy ); + assertNotNull(copy); - assertEquals( 3, copy.size() ); + assertEquals(3, copy.size()); - assertEquals( "en", copy.get( 0 ) ); - assertEquals( "to", copy.get( 1 ) ); - assertEquals( "tre", copy.get( 2 ) ); + assertEquals("en", copy.get(0)); + assertEquals("to", copy.get(1)); + assertEquals("tre", copy.get(2)); } /** *

      testIteratorToListWithAEmptyList.

      */ @org.junit.jupiter.api.Test - public void testIteratorToListWithAEmptyList() - { + public void testIteratorToListWithAEmptyList() { List original = new ArrayList(); - List copy = CollectionUtils.iteratorToList( original.iterator() ); + List copy = CollectionUtils.iteratorToList(original.iterator()); - assertNotNull( copy ); + assertNotNull(copy); - assertEquals( 0, copy.size() ); + assertEquals(0, copy.size()); } } diff --git a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java index 3901e594..e437922a 100644 --- a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java +++ b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java @@ -16,12 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; -import static org.junit.jupiter.api.Assumptions.assumeTrue; - import java.io.File; import java.io.IOException; import java.net.URI; @@ -38,6 +32,12 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.Assumptions.assumeTrue; + /** * Base class for testcases doing tests with files. * @@ -45,24 +45,18 @@ * @version $Id: $Id * @since 3.4.0 */ -public class DirectoryScannerTest - extends FileBasedTestCase -{ +public class DirectoryScannerTest extends FileBasedTestCase { private static String testDir = getTestDirectory().getPath(); /** *

      setUp.

      */ @BeforeEach - public void setUp() - { - try - { - FileUtils.deleteDirectory( testDir ); - } - catch ( IOException e ) - { - fail( "Could not delete directory " + testDir ); + public void setUp() { + try { + FileUtils.deleteDirectory(testDir); + } catch (IOException e) { + fail("Could not delete directory " + testDir); } } @@ -73,28 +67,23 @@ public void setUp() * @throws java.net.URISyntaxException if any. */ @Test - public void testCrossPlatformIncludesString() - throws IOException, URISyntaxException - { + public void testCrossPlatformIncludesString() throws IOException, URISyntaxException { DirectoryScanner ds = new DirectoryScanner(); - ds.setBasedir( new File( getTestResourcesDir() + File.separator + "directory-scanner" ).getCanonicalFile() ); + ds.setBasedir(new File(getTestResourcesDir() + File.separator + "directory-scanner").getCanonicalFile()); String fs; - if ( File.separatorChar == '/' ) - { + if (File.separatorChar == '/') { fs = "\\"; - } - else - { + } else { fs = "/"; } - ds.setIncludes( new String[] { "foo" + fs } ); + ds.setIncludes(new String[] {"foo" + fs}); ds.addDefaultExcludes(); ds.scan(); String[] files = ds.getIncludedFiles(); - assertEquals( 1, files.length ); + assertEquals(1, files.length); } /** @@ -104,94 +93,77 @@ public void testCrossPlatformIncludesString() * @throws java.net.URISyntaxException if any. */ @Test - public void testCrossPlatformExcludesString() - throws IOException, URISyntaxException - { + public void testCrossPlatformExcludesString() throws IOException, URISyntaxException { DirectoryScanner ds = new DirectoryScanner(); - ds.setBasedir( new File( getTestResourcesDir() + File.separator + "directory-scanner" ).getCanonicalFile() ); - ds.setIncludes( new String[] { "**" } ); + ds.setBasedir(new File(getTestResourcesDir() + File.separator + "directory-scanner").getCanonicalFile()); + ds.setIncludes(new String[] {"**"}); String fs; - if ( File.separatorChar == '/' ) - { + if (File.separatorChar == '/') { fs = "\\"; - } - else - { + } else { fs = "/"; } - ds.setExcludes( new String[] { "foo" + fs } ); + ds.setExcludes(new String[] {"foo" + fs}); ds.addDefaultExcludes(); ds.scan(); String[] files = ds.getIncludedFiles(); - assertEquals( 0, files.length ); + assertEquals(0, files.length); } - private String getTestResourcesDir() - throws URISyntaxException - { + private String getTestResourcesDir() throws URISyntaxException { ClassLoader cloader = Thread.currentThread().getContextClassLoader(); - URL resource = cloader.getResource( "test.txt" ); - if ( resource == null ) - { - fail( "Cannot locate test-resources directory containing 'test.txt' in the classloader." ); + URL resource = cloader.getResource("test.txt"); + if (resource == null) { + fail("Cannot locate test-resources directory containing 'test.txt' in the classloader."); } - File file = new File( new URI( resource.toExternalForm() ).normalize().getPath() ); + File file = new File(new URI(resource.toExternalForm()).normalize().getPath()); return file.getParent(); } - private void createTestFiles() - throws IOException - { - FileUtils.mkdir( testDir ); - this.createFile( new File( testDir + "/scanner1.dat" ), 0 ); - this.createFile( new File( testDir + "/scanner2.dat" ), 0 ); - this.createFile( new File( testDir + "/scanner3.dat" ), 0 ); - this.createFile( new File( testDir + "/scanner4.dat" ), 0 ); - this.createFile( new File( testDir + "/scanner5.dat" ), 0 ); + private void createTestFiles() throws IOException { + FileUtils.mkdir(testDir); + this.createFile(new File(testDir + "/scanner1.dat"), 0); + this.createFile(new File(testDir + "/scanner2.dat"), 0); + this.createFile(new File(testDir + "/scanner3.dat"), 0); + this.createFile(new File(testDir + "/scanner4.dat"), 0); + this.createFile(new File(testDir + "/scanner5.dat"), 0); } - + /** * Check if 'src/test/resources/symlinks/src/sym*' test files (start with 'sym') exist and are symlinks.
      * On some OS (like Windows 10), the 'git clone' requires to be executed with admin permissions and the * 'core.symlinks=true' git option. - * + * * @return true If files here and symlinks, false otherwise */ - private boolean checkTestFilesSymlinks() - { - File symlinksDirectory = new File( "src/test/resources/symlinks/src" ); - try - { + private boolean checkTestFilesSymlinks() { + File symlinksDirectory = new File("src/test/resources/symlinks/src"); + try { List symlinks = - FileUtils.getFileAndDirectoryNames( symlinksDirectory, "sym*", null, true, true, true, true ); - if ( symlinks.isEmpty() ) - { - throw new IOException( "Symlinks files/directories are not present" ); + FileUtils.getFileAndDirectoryNames(symlinksDirectory, "sym*", null, true, true, true, true); + if (symlinks.isEmpty()) { + throw new IOException("Symlinks files/directories are not present"); } - for ( String symLink : symlinks ) - { - if ( !Files.isSymbolicLink( Paths.get( symLink ) ) ) - { - throw new IOException( String.format( "Path is not a symlink: %s", symLink ) ); + for (String symLink : symlinks) { + if (!Files.isSymbolicLink(Paths.get(symLink))) { + throw new IOException(String.format("Path is not a symlink: %s", symLink)); } } return true; - } - catch ( IOException e ) - { - System.err.println( String.format( "The unit test '%s.%s' will be skipped, reason: %s", - this.getClass().getSimpleName(), getTestMethodName(), - e.getMessage() ) ); - System.out.println( String.format( "This test requires symlinks files in '%s' directory.", - symlinksDirectory.getPath() ) ); - System.out.println( "On some OS (like Windows 10), files are present only if the clone/checkout is done" - + " in administrator mode, and correct (symlinks and not flat file/directory)" - + " if symlinks option are used (for git: git clone -c core.symlinks=true [url])" ); + } catch (IOException e) { + System.err.println(String.format( + "The unit test '%s.%s' will be skipped, reason: %s", + this.getClass().getSimpleName(), getTestMethodName(), e.getMessage())); + System.out.println( + String.format("This test requires symlinks files in '%s' directory.", symlinksDirectory.getPath())); + System.out.println("On some OS (like Windows 10), files are present only if the clone/checkout is done" + + " in administrator mode, and correct (symlinks and not flat file/directory)" + + " if symlinks option are used (for git: git clone -c core.symlinks=true [url])"); return false; } } @@ -202,20 +174,18 @@ private boolean checkTestFilesSymlinks() * @throws java.io.IOException if any. */ @Test - public void testGeneral() - throws IOException - { + public void testGeneral() throws IOException { this.createTestFiles(); String includes = "scanner1.dat,scanner2.dat,scanner3.dat,scanner4.dat,scanner5.dat"; String excludes = "scanner1.dat,scanner2.dat"; - List fileNames = FileUtils.getFiles( new File( testDir ), includes, excludes, false ); + List fileNames = FileUtils.getFiles(new File(testDir), includes, excludes, false); - assertEquals( 3, fileNames.size(), "Wrong number of results." ); - assertTrue( fileNames.contains( new File( "scanner3.dat" ) ), "3 not found." ); - assertTrue( fileNames.contains( new File( "scanner4.dat" ) ), "4 not found." ); - assertTrue( fileNames.contains( new File( "scanner5.dat" ) ), "5 not found." ); + assertEquals(3, fileNames.size(), "Wrong number of results."); + assertTrue(fileNames.contains(new File("scanner3.dat")), "3 not found."); + assertTrue(fileNames.contains(new File("scanner4.dat")), "4 not found."); + assertTrue(fileNames.contains(new File("scanner5.dat")), "5 not found."); } /** @@ -224,100 +194,99 @@ public void testGeneral() * @throws java.io.IOException if any. */ @Test - public void testIncludesExcludesWithWhiteSpaces() - throws IOException - { + public void testIncludesExcludesWithWhiteSpaces() throws IOException { this.createTestFiles(); String includes = "scanner1.dat,\n \n,scanner2.dat \n\r, scanner3.dat\n, \tscanner4.dat,scanner5.dat\n,"; String excludes = "scanner1.dat,\n \n,scanner2.dat \n\r,,"; - List fileNames = FileUtils.getFiles( new File( testDir ), includes, excludes, false ); + List fileNames = FileUtils.getFiles(new File(testDir), includes, excludes, false); - assertEquals( 3, fileNames.size(), "Wrong number of results." ); - assertTrue( fileNames.contains( new File( "scanner3.dat" ) ), "3 not found." ); - assertTrue( fileNames.contains( new File( "scanner4.dat" ) ), "4 not found." ); - assertTrue( fileNames.contains( new File( "scanner5.dat" ) ), "5 not found." ); + assertEquals(3, fileNames.size(), "Wrong number of results."); + assertTrue(fileNames.contains(new File("scanner3.dat")), "3 not found."); + assertTrue(fileNames.contains(new File("scanner4.dat")), "4 not found."); + assertTrue(fileNames.contains(new File("scanner5.dat")), "5 not found."); } /** *

      testFollowSymlinksFalse.

      */ @Test - public void testFollowSymlinksFalse() - { - assumeTrue( checkTestFilesSymlinks() ); - + public void testFollowSymlinksFalse() { + assumeTrue(checkTestFilesSymlinks()); + DirectoryScanner ds = new DirectoryScanner(); - ds.setBasedir( new File( "src/test/resources/symlinks/src/" ) ); - ds.setFollowSymlinks( false ); + ds.setBasedir(new File("src/test/resources/symlinks/src/")); + ds.setFollowSymlinks(false); ds.scan(); - List included = Arrays.asList( ds.getIncludedFiles() ); - assertAlwaysIncluded( included ); - assertEquals( 9, included.size() ); - List includedDirs = Arrays.asList( ds.getIncludedDirectories() ); - assertTrue( includedDirs.contains( "" ) ); // w00t ! - assertTrue( includedDirs.contains( "aRegularDir" ) ); - assertTrue( includedDirs.contains( "symDir" ) ); - assertTrue( includedDirs.contains( "symLinkToDirOnTheOutside" ) ); - assertTrue( includedDirs.contains( "targetDir" ) ); - assertEquals( 5, includedDirs.size() ); + List included = Arrays.asList(ds.getIncludedFiles()); + assertAlwaysIncluded(included); + assertEquals(9, included.size()); + List includedDirs = Arrays.asList(ds.getIncludedDirectories()); + assertTrue(includedDirs.contains("")); // w00t ! + assertTrue(includedDirs.contains("aRegularDir")); + assertTrue(includedDirs.contains("symDir")); + assertTrue(includedDirs.contains("symLinkToDirOnTheOutside")); + assertTrue(includedDirs.contains("targetDir")); + assertEquals(5, includedDirs.size()); } - private void assertAlwaysIncluded( List included ) - { - assertTrue( included.contains( "aRegularDir" + File.separator + "aRegularFile.txt" ) ); - assertTrue( included.contains( "targetDir" + File.separator + "targetFile.txt" ) ); - assertTrue( included.contains( "fileR.txt" ) ); - assertTrue( included.contains( "fileW.txt" ) ); - assertTrue( included.contains( "fileX.txt" ) ); - assertTrue( included.contains( "symR" ) ); - assertTrue( included.contains( "symW" ) ); - assertTrue( included.contains( "symX" ) ); - assertTrue( included.contains( "symLinkToFileOnTheOutside" ) ); + private void assertAlwaysIncluded(List included) { + assertTrue(included.contains("aRegularDir" + File.separator + "aRegularFile.txt")); + assertTrue(included.contains("targetDir" + File.separator + "targetFile.txt")); + assertTrue(included.contains("fileR.txt")); + assertTrue(included.contains("fileW.txt")); + assertTrue(included.contains("fileX.txt")); + assertTrue(included.contains("symR")); + assertTrue(included.contains("symW")); + assertTrue(included.contains("symX")); + assertTrue(included.contains("symLinkToFileOnTheOutside")); } /** *

      testFollowSymlinks.

      */ @Test - public void testFollowSymlinks() - { - assumeTrue( checkTestFilesSymlinks() ); - + public void testFollowSymlinks() { + assumeTrue(checkTestFilesSymlinks()); + DirectoryScanner ds = new DirectoryScanner(); - ds.setBasedir( new File( "src/test/resources/symlinks/src/" ) ); - ds.setFollowSymlinks( true ); + ds.setBasedir(new File("src/test/resources/symlinks/src/")); + ds.setFollowSymlinks(true); ds.scan(); - List included = Arrays.asList( ds.getIncludedFiles() ); - assertAlwaysIncluded( included ); - assertTrue( included.contains( "symDir" + File.separator + "targetFile.txt" ) ); - assertTrue( included.contains( "symLinkToDirOnTheOutside" + File.separator + "FileInDirOnTheOutside.txt" ) ); - assertEquals( 11, included.size() ); - - List includedDirs = Arrays.asList( ds.getIncludedDirectories() ); - assertTrue( includedDirs.contains( "" ) ); // w00t ! - assertTrue( includedDirs.contains( "aRegularDir" ) ); - assertTrue( includedDirs.contains( "symDir" ) ); - assertTrue( includedDirs.contains( "symLinkToDirOnTheOutside" ) ); - assertTrue( includedDirs.contains( "targetDir" ) ); - assertEquals( 5, includedDirs.size() ); + List included = Arrays.asList(ds.getIncludedFiles()); + assertAlwaysIncluded(included); + assertTrue(included.contains("symDir" + File.separator + "targetFile.txt")); + assertTrue(included.contains("symLinkToDirOnTheOutside" + File.separator + "FileInDirOnTheOutside.txt")); + assertEquals(11, included.size()); + + List includedDirs = Arrays.asList(ds.getIncludedDirectories()); + assertTrue(includedDirs.contains("")); // w00t ! + assertTrue(includedDirs.contains("aRegularDir")); + assertTrue(includedDirs.contains("symDir")); + assertTrue(includedDirs.contains("symLinkToDirOnTheOutside")); + assertTrue(includedDirs.contains("targetDir")); + assertEquals(5, includedDirs.size()); } - private void createTestDirectories() - throws IOException - { - FileUtils.mkdir( testDir + File.separator + "directoryTest" ); - FileUtils.mkdir( testDir + File.separator + "directoryTest" + File.separator + "testDir123" ); - FileUtils.mkdir( testDir + File.separator + "directoryTest" + File.separator + "test_dir_123" ); - FileUtils.mkdir( testDir + File.separator + "directoryTest" + File.separator + "test-dir-123" ); - this.createFile( new File( testDir + File.separator + "directoryTest" + File.separator + "testDir123" - + File.separator + "file1.dat" ), 0 ); - this.createFile( new File( testDir + File.separator + "directoryTest" + File.separator + "test_dir_123" - + File.separator + "file1.dat" ), 0 ); - this.createFile( new File( testDir + File.separator + "directoryTest" + File.separator + "test-dir-123" - + File.separator + "file1.dat" ), 0 ); + private void createTestDirectories() throws IOException { + FileUtils.mkdir(testDir + File.separator + "directoryTest"); + FileUtils.mkdir(testDir + File.separator + "directoryTest" + File.separator + "testDir123"); + FileUtils.mkdir(testDir + File.separator + "directoryTest" + File.separator + "test_dir_123"); + FileUtils.mkdir(testDir + File.separator + "directoryTest" + File.separator + "test-dir-123"); + this.createFile( + new File(testDir + File.separator + "directoryTest" + File.separator + "testDir123" + File.separator + + "file1.dat"), + 0); + this.createFile( + new File(testDir + File.separator + "directoryTest" + File.separator + "test_dir_123" + File.separator + + "file1.dat"), + 0); + this.createFile( + new File(testDir + File.separator + "directoryTest" + File.separator + "test-dir-123" + File.separator + + "file1.dat"), + 0); } /** @@ -326,22 +295,20 @@ private void createTestDirectories() * @throws java.io.IOException if any. */ @Test - public void testDirectoriesWithHyphens() - throws IOException - { + public void testDirectoriesWithHyphens() throws IOException { this.createTestDirectories(); DirectoryScanner ds = new DirectoryScanner(); - String[] includes = { "**/*.dat" }; - String[] excludes = { "" }; - ds.setIncludes( includes ); - ds.setExcludes( excludes ); - ds.setBasedir( new File( testDir + File.separator + "directoryTest" ) ); - ds.setCaseSensitive( true ); + String[] includes = {"**/*.dat"}; + String[] excludes = {""}; + ds.setIncludes(includes); + ds.setExcludes(excludes); + ds.setBasedir(new File(testDir + File.separator + "directoryTest")); + ds.setCaseSensitive(true); ds.scan(); String[] files = ds.getIncludedFiles(); - assertEquals( 3, files.length, "Wrong number of results." ); + assertEquals(3, files.length, "Wrong number of results."); } /** @@ -350,38 +317,36 @@ public void testDirectoriesWithHyphens() * @throws java.io.IOException if any. */ @Test - public void testAntExcludesOverrideIncludes() - throws IOException - { + public void testAntExcludesOverrideIncludes() throws IOException { printTestHeader(); - File dir = new File( testDir, "regex-dir" ); + File dir = new File(testDir, "regex-dir"); dir.mkdirs(); - String[] excludedPaths = { "target/foo.txt" }; + String[] excludedPaths = {"target/foo.txt"}; - createFiles( dir, excludedPaths ); + createFiles(dir, excludedPaths); - String[] includedPaths = { "src/main/resources/project/target/foo.txt" }; + String[] includedPaths = {"src/main/resources/project/target/foo.txt"}; - createFiles( dir, includedPaths ); + createFiles(dir, includedPaths); DirectoryScanner ds = new DirectoryScanner(); - String[] includes = { "**/target/*" }; - String[] excludes = { "target/*" }; + String[] includes = {"**/target/*"}; + String[] excludes = {"target/*"}; // This doesn't work, since excluded patterns refine included ones, meaning they operate on // the list of paths that passed the included patterns, and can override them. // String[] includes = {"**src/**/target/**/*" }; // String[] excludes = { "**/target/**/*" }; - ds.setIncludes( includes ); - ds.setExcludes( excludes ); - ds.setBasedir( dir ); + ds.setIncludes(includes); + ds.setExcludes(excludes); + ds.setBasedir(dir); ds.scan(); - assertInclusionsAndExclusions( ds.getIncludedFiles(), excludedPaths, includedPaths ); + assertInclusionsAndExclusions(ds.getIncludedFiles(), excludedPaths, includedPaths); } /** @@ -390,39 +355,37 @@ public void testAntExcludesOverrideIncludes() * @throws java.io.IOException if any. */ @org.junit.jupiter.api.Test - public void testAntExcludesOverrideIncludesWithExplicitAntPrefix() - throws IOException - { + public void testAntExcludesOverrideIncludesWithExplicitAntPrefix() throws IOException { printTestHeader(); - File dir = new File( testDir, "regex-dir" ); + File dir = new File(testDir, "regex-dir"); dir.mkdirs(); - String[] excludedPaths = { "target/foo.txt" }; + String[] excludedPaths = {"target/foo.txt"}; - createFiles( dir, excludedPaths ); + createFiles(dir, excludedPaths); - String[] includedPaths = { "src/main/resources/project/target/foo.txt" }; + String[] includedPaths = {"src/main/resources/project/target/foo.txt"}; - createFiles( dir, includedPaths ); + createFiles(dir, includedPaths); DirectoryScanner ds = new DirectoryScanner(); - String[] includes = - { SelectorUtils.ANT_HANDLER_PREFIX + "**/target/**/*" + SelectorUtils.PATTERN_HANDLER_SUFFIX }; - String[] excludes = { SelectorUtils.ANT_HANDLER_PREFIX + "target/**/*" + SelectorUtils.PATTERN_HANDLER_SUFFIX }; + String[] includes = {SelectorUtils.ANT_HANDLER_PREFIX + "**/target/**/*" + SelectorUtils.PATTERN_HANDLER_SUFFIX + }; + String[] excludes = {SelectorUtils.ANT_HANDLER_PREFIX + "target/**/*" + SelectorUtils.PATTERN_HANDLER_SUFFIX}; // This doesn't work, since excluded patterns refine included ones, meaning they operate on // the list of paths that passed the included patterns, and can override them. // String[] includes = {"**src/**/target/**/*" }; // String[] excludes = { "**/target/**/*" }; - ds.setIncludes( includes ); - ds.setExcludes( excludes ); - ds.setBasedir( dir ); + ds.setIncludes(includes); + ds.setExcludes(excludes); + ds.setBasedir(dir); ds.scan(); - assertInclusionsAndExclusions( ds.getIncludedFiles(), excludedPaths, includedPaths ); + assertInclusionsAndExclusions(ds.getIncludedFiles(), excludedPaths, includedPaths); } /** @@ -431,21 +394,19 @@ public void testAntExcludesOverrideIncludesWithExplicitAntPrefix() * @throws java.io.IOException if any. */ @org.junit.jupiter.api.Test - public void testRegexIncludeWithExcludedPrefixDirs() - throws IOException - { + public void testRegexIncludeWithExcludedPrefixDirs() throws IOException { printTestHeader(); - File dir = new File( testDir, "regex-dir" ); + File dir = new File(testDir, "regex-dir"); dir.mkdirs(); - String[] excludedPaths = { "src/main/foo.txt" }; + String[] excludedPaths = {"src/main/foo.txt"}; - createFiles( dir, excludedPaths ); + createFiles(dir, excludedPaths); - String[] includedPaths = { "src/main/resources/project/target/foo.txt" }; + String[] includedPaths = {"src/main/resources/project/target/foo.txt"}; - createFiles( dir, includedPaths ); + createFiles(dir, includedPaths); String regex = ".+/target.*"; @@ -453,12 +414,12 @@ public void testRegexIncludeWithExcludedPrefixDirs() String includeExpr = SelectorUtils.REGEX_HANDLER_PREFIX + regex + SelectorUtils.PATTERN_HANDLER_SUFFIX; - String[] includes = { includeExpr }; - ds.setIncludes( includes ); - ds.setBasedir( dir ); + String[] includes = {includeExpr}; + ds.setIncludes(includes); + ds.setBasedir(dir); ds.scan(); - assertInclusionsAndExclusions( ds.getIncludedFiles(), excludedPaths, includedPaths ); + assertInclusionsAndExclusions(ds.getIncludedFiles(), excludedPaths, includedPaths); } /** @@ -467,29 +428,24 @@ public void testRegexIncludeWithExcludedPrefixDirs() * @throws java.io.IOException if any. */ @org.junit.jupiter.api.Test - public void testRegexExcludeWithNegativeLookahead() - throws IOException - { + public void testRegexExcludeWithNegativeLookahead() throws IOException { printTestHeader(); - File dir = new File( testDir, "regex-dir" ); - try - { - FileUtils.deleteDirectory( dir ); - } - catch ( IOException e ) - { + File dir = new File(testDir, "regex-dir"); + try { + FileUtils.deleteDirectory(dir); + } catch (IOException e) { } dir.mkdirs(); - String[] excludedPaths = { "target/foo.txt" }; + String[] excludedPaths = {"target/foo.txt"}; - createFiles( dir, excludedPaths ); + createFiles(dir, excludedPaths); - String[] includedPaths = { "src/main/resources/project/target/foo.txt" }; + String[] includedPaths = {"src/main/resources/project/target/foo.txt"}; - createFiles( dir, includedPaths ); + createFiles(dir, includedPaths); String regex = "(?!.*src/).*target.*"; @@ -497,12 +453,12 @@ public void testRegexExcludeWithNegativeLookahead() String excludeExpr = SelectorUtils.REGEX_HANDLER_PREFIX + regex + SelectorUtils.PATTERN_HANDLER_SUFFIX; - String[] excludes = { excludeExpr }; - ds.setExcludes( excludes ); - ds.setBasedir( dir ); + String[] excludes = {excludeExpr}; + ds.setExcludes(excludes); + ds.setBasedir(dir); ds.scan(); - assertInclusionsAndExclusions( ds.getIncludedFiles(), excludedPaths, includedPaths ); + assertInclusionsAndExclusions(ds.getIncludedFiles(), excludedPaths, includedPaths); } /** @@ -511,29 +467,24 @@ public void testRegexExcludeWithNegativeLookahead() * @throws java.io.IOException if any. */ @Test - public void testRegexWithSlashInsideCharacterClass() - throws IOException - { + public void testRegexWithSlashInsideCharacterClass() throws IOException { printTestHeader(); - File dir = new File( testDir, "regex-dir" ); - try - { - FileUtils.deleteDirectory( dir ); - } - catch ( IOException e ) - { + File dir = new File(testDir, "regex-dir"); + try { + FileUtils.deleteDirectory(dir); + } catch (IOException e) { } dir.mkdirs(); - String[] excludedPaths = { "target/foo.txt", "target/src/main/target/foo.txt" }; + String[] excludedPaths = {"target/foo.txt", "target/src/main/target/foo.txt"}; - createFiles( dir, excludedPaths ); + createFiles(dir, excludedPaths); - String[] includedPaths = { "module/src/main/target/foo.txt" }; + String[] includedPaths = {"module/src/main/target/foo.txt"}; - createFiles( dir, includedPaths ); + createFiles(dir, includedPaths); // NOTE: The portion "[^/]" is the interesting part of this pattern. String regex = "(?!((?!target/)[^/]+/)*src/).*target.*"; @@ -542,12 +493,12 @@ public void testRegexWithSlashInsideCharacterClass() String excludeExpr = SelectorUtils.REGEX_HANDLER_PREFIX + regex + SelectorUtils.PATTERN_HANDLER_SUFFIX; - String[] excludes = { excludeExpr }; - ds.setExcludes( excludes ); - ds.setBasedir( dir ); + String[] excludes = {excludeExpr}; + ds.setExcludes(excludes); + ds.setBasedir(dir); ds.scan(); - assertInclusionsAndExclusions( ds.getIncludedFiles(), excludedPaths, includedPaths ); + assertInclusionsAndExclusions(ds.getIncludedFiles(), excludedPaths, includedPaths); } /** @@ -557,33 +508,37 @@ public void testRegexWithSlashInsideCharacterClass() * @throws java.io.IOException if occurs an I/O error. */ @Test - public void testDoNotScanUnnecesaryDirectories() - throws IOException - { + public void testDoNotScanUnnecesaryDirectories() throws IOException { createTestDirectories(); // create additional directories 'anotherDir1', 'anotherDir2' and 'anotherDir3' with a 'file1.dat' file - FileUtils.mkdir( testDir + File.separator + "directoryTest" + File.separator + "testDir123" + File.separator - + "anotherDir1" ); - FileUtils.mkdir( testDir + File.separator + "directoryTest" + File.separator + "test_dir_123" + File.separator - + "anotherDir2" ); - FileUtils.mkdir( testDir + File.separator + "directoryTest" + File.separator + "test-dir-123" + File.separator - + "anotherDir3" ); - - this.createFile( new File( testDir + File.separator + "directoryTest" + File.separator + "testDir123" - + File.separator + "anotherDir1" + File.separator + "file1.dat" ), 0 ); - this.createFile( new File( testDir + File.separator + "directoryTest" + File.separator + "test_dir_123" - + File.separator + "anotherDir2" + File.separator + "file1.dat" ), 0 ); - this.createFile( new File( testDir + File.separator + "directoryTest" + File.separator + "test-dir-123" - + File.separator + "anotherDir3" + File.separator + "file1.dat" ), 0 ); + FileUtils.mkdir(testDir + File.separator + "directoryTest" + File.separator + "testDir123" + File.separator + + "anotherDir1"); + FileUtils.mkdir(testDir + File.separator + "directoryTest" + File.separator + "test_dir_123" + File.separator + + "anotherDir2"); + FileUtils.mkdir(testDir + File.separator + "directoryTest" + File.separator + "test-dir-123" + File.separator + + "anotherDir3"); + + this.createFile( + new File(testDir + File.separator + "directoryTest" + File.separator + "testDir123" + File.separator + + "anotherDir1" + File.separator + "file1.dat"), + 0); + this.createFile( + new File(testDir + File.separator + "directoryTest" + File.separator + "test_dir_123" + File.separator + + "anotherDir2" + File.separator + "file1.dat"), + 0); + this.createFile( + new File(testDir + File.separator + "directoryTest" + File.separator + "test-dir-123" + File.separator + + "anotherDir3" + File.separator + "file1.dat"), + 0); String[] excludedPaths = { "directoryTest" + File.separator + "testDir123" + File.separator + "anotherDir1" + File.separator - + "file1.dat", + + "file1.dat", "directoryTest" + File.separator + "test_dir_123" + File.separator + "anotherDir2" + File.separator - + "file1.dat", + + "file1.dat", "directoryTest" + File.separator + "test-dir-123" + File.separator + "anotherDir3" + File.separator - + "file1.dat" + + "file1.dat" }; String[] includedPaths = { @@ -594,29 +549,26 @@ public void testDoNotScanUnnecesaryDirectories() final Set scannedDirSet = new HashSet(); - DirectoryScanner ds = new DirectoryScanner() - { + DirectoryScanner ds = new DirectoryScanner() { @Override - protected void scandir( File dir, String vpath, boolean fast ) - { - scannedDirSet.add( dir.getName() ); - super.scandir( dir, vpath, fast ); + protected void scandir(File dir, String vpath, boolean fast) { + scannedDirSet.add(dir.getName()); + super.scandir(dir, vpath, fast); } - }; // one '*' matches only ONE directory level - String[] includes = { "directoryTest" + File.separator + "*" + File.separator + "file1.dat" }; - ds.setIncludes( includes ); - ds.setBasedir( new File( testDir ) ); + String[] includes = {"directoryTest" + File.separator + "*" + File.separator + "file1.dat"}; + ds.setIncludes(includes); + ds.setBasedir(new File(testDir)); ds.scan(); - assertInclusionsAndExclusions( ds.getIncludedFiles(), excludedPaths, includedPaths ); + assertInclusionsAndExclusions(ds.getIncludedFiles(), excludedPaths, includedPaths); Set expectedScannedDirSet = - new HashSet( Arrays.asList( "io", "directoryTest", "testDir123", "test_dir_123", "test-dir-123" ) ); + new HashSet(Arrays.asList("io", "directoryTest", "testDir123", "test_dir_123", "test-dir-123")); - assertEquals( expectedScannedDirSet, scannedDirSet ); + assertEquals(expectedScannedDirSet, scannedDirSet); } /** @@ -625,17 +577,15 @@ protected void scandir( File dir, String vpath, boolean fast ) * @throws java.io.IOException if any. */ @Test - public void testIsSymbolicLink() - throws IOException - { - assumeTrue( checkTestFilesSymlinks() ); + public void testIsSymbolicLink() throws IOException { + assumeTrue(checkTestFilesSymlinks()); - final File directory = new File( "src/test/resources/symlinks/src" ); + final File directory = new File("src/test/resources/symlinks/src"); DirectoryScanner ds = new DirectoryScanner(); - assertTrue( ds.isSymbolicLink( directory, "symR" ) ); - assertTrue( ds.isSymbolicLink( directory, "symDir" ) ); - assertFalse( ds.isSymbolicLink( directory, "fileR.txt" ) ); - assertFalse( ds.isSymbolicLink( directory, "aRegularDir" ) ); + assertTrue(ds.isSymbolicLink(directory, "symR")); + assertTrue(ds.isSymbolicLink(directory, "symDir")); + assertFalse(ds.isSymbolicLink(directory, "fileR.txt")); + assertFalse(ds.isSymbolicLink(directory, "aRegularDir")); } /** @@ -644,105 +594,83 @@ public void testIsSymbolicLink() * @throws java.io.IOException if any. */ @Test - public void testIsParentSymbolicLink() - throws IOException - { - assumeTrue( checkTestFilesSymlinks() ); + public void testIsParentSymbolicLink() throws IOException { + assumeTrue(checkTestFilesSymlinks()); - final File directory = new File( "src/test/resources/symlinks/src" ); + final File directory = new File("src/test/resources/symlinks/src"); DirectoryScanner ds = new DirectoryScanner(); - assertFalse( ds.isParentSymbolicLink( directory, "symR" ) ); - assertFalse( ds.isParentSymbolicLink( directory, "symDir" ) ); - assertFalse( ds.isParentSymbolicLink( directory, "fileR.txt" ) ); - assertFalse( ds.isParentSymbolicLink( directory, "aRegularDir" ) ); - assertFalse( ds.isParentSymbolicLink( new File( directory, "aRegularDir" ), "aRegulatFile.txt" ) ); - assertTrue( ds.isParentSymbolicLink( new File( directory, "symDir" ), "targetFile.txt" ) ); - assertTrue( ds.isParentSymbolicLink( new File( directory, "symLinkToDirOnTheOutside" ), - "FileInDirOnTheOutside.txt" ) ); + assertFalse(ds.isParentSymbolicLink(directory, "symR")); + assertFalse(ds.isParentSymbolicLink(directory, "symDir")); + assertFalse(ds.isParentSymbolicLink(directory, "fileR.txt")); + assertFalse(ds.isParentSymbolicLink(directory, "aRegularDir")); + assertFalse(ds.isParentSymbolicLink(new File(directory, "aRegularDir"), "aRegulatFile.txt")); + assertTrue(ds.isParentSymbolicLink(new File(directory, "symDir"), "targetFile.txt")); + assertTrue( + ds.isParentSymbolicLink(new File(directory, "symLinkToDirOnTheOutside"), "FileInDirOnTheOutside.txt")); } - private void printTestHeader() - { + private void printTestHeader() { StackTraceElement ste = new Throwable().getStackTrace()[1]; - System.out.println( "Test: " + ste.getMethodName() ); + System.out.println("Test: " + ste.getMethodName()); } - private void assertInclusionsAndExclusions( String[] files, String[] excludedPaths, String... includedPaths ) - { - Arrays.sort( files ); + private void assertInclusionsAndExclusions(String[] files, String[] excludedPaths, String... includedPaths) { + Arrays.sort(files); - System.out.println( "Included files: " ); - for ( String file : files ) - { - System.out.println( file ); + System.out.println("Included files: "); + for (String file : files) { + System.out.println(file); } List failedToExclude = new ArrayList(); - for ( String excludedPath : excludedPaths ) - { - String alt = excludedPath.replace( '/', '\\' ); - System.out.println( "Searching for exclusion as: " + excludedPath + "\nor: " + alt ); - if ( Arrays.binarySearch( files, excludedPath ) > -1 || Arrays.binarySearch( files, alt ) > -1 ) - { - failedToExclude.add( excludedPath ); + for (String excludedPath : excludedPaths) { + String alt = excludedPath.replace('/', '\\'); + System.out.println("Searching for exclusion as: " + excludedPath + "\nor: " + alt); + if (Arrays.binarySearch(files, excludedPath) > -1 || Arrays.binarySearch(files, alt) > -1) { + failedToExclude.add(excludedPath); } } List failedToInclude = new ArrayList(); - for ( String includedPath : includedPaths ) - { - String alt = includedPath.replace( '/', '\\' ); - System.out.println( "Searching for inclusion as: " + includedPath + "\nor: " + alt ); - if ( Arrays.binarySearch( files, includedPath ) < 0 && Arrays.binarySearch( files, alt ) < 0 ) - { - failedToInclude.add( includedPath ); + for (String includedPath : includedPaths) { + String alt = includedPath.replace('/', '\\'); + System.out.println("Searching for inclusion as: " + includedPath + "\nor: " + alt); + if (Arrays.binarySearch(files, includedPath) < 0 && Arrays.binarySearch(files, alt) < 0) { + failedToInclude.add(includedPath); } } StringBuilder buffer = new StringBuilder(); - if ( !failedToExclude.isEmpty() ) - { - buffer.append( "Should NOT have included:\n" ).append( StringUtils.join( failedToExclude.iterator(), - "\n\t- " ) ); + if (!failedToExclude.isEmpty()) { + buffer.append("Should NOT have included:\n").append(StringUtils.join(failedToExclude.iterator(), "\n\t- ")); } - if ( !failedToInclude.isEmpty() ) - { - if ( buffer.length() > 0 ) - { - buffer.append( "\n\n" ); + if (!failedToInclude.isEmpty()) { + if (buffer.length() > 0) { + buffer.append("\n\n"); } - buffer.append( "Should have included:\n" ).append( StringUtils.join( failedToInclude.iterator(), - "\n\t- " ) ); + buffer.append("Should have included:\n").append(StringUtils.join(failedToInclude.iterator(), "\n\t- ")); } - if ( buffer.length() > 0 ) - { - fail( buffer.toString() ); + if (buffer.length() > 0) { + fail(buffer.toString()); } } - private void createFiles( File dir, String... paths ) - throws IOException - { - for ( String path1 : paths ) - { - String path = path1.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); - File file = new File( dir, path ); + private void createFiles(File dir, String... paths) throws IOException { + for (String path1 : paths) { + String path = path1.replace('/', File.separatorChar).replace('\\', File.separatorChar); + File file = new File(dir, path); - if ( path.endsWith( File.separator ) ) - { + if (path.endsWith(File.separator)) { file.mkdirs(); - } - else - { - if ( file.getParentFile() != null ) - { + } else { + if (file.getParentFile() != null) { file.getParentFile().mkdirs(); } - createFile( file, 0 ); + createFile(file, 0); } } } diff --git a/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java b/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java index da925818..ef59ba7c 100644 --- a/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java +++ b/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java @@ -16,14 +16,14 @@ * limitations under the License. */ +import java.io.File; + import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import java.io.File; - /** *

      DirectoryWalkerTest class.

      * @@ -31,30 +31,28 @@ * @version $Id: $Id * @since 3.4.0 */ -public class DirectoryWalkerTest -{ +public class DirectoryWalkerTest { /** *

      testDirectoryWalk.

      */ @Test - public void testDirectoryWalk() - { + public void testDirectoryWalk() { DirectoryWalker walker = new DirectoryWalker(); walker.addSCMExcludes(); - walker.setBaseDir( new File( "src/test/resources/directorywalker" ) ); + walker.setBaseDir(new File("src/test/resources/directorywalker")); WalkCollector collector = new WalkCollector(); - walker.addDirectoryWalkListener( collector ); + walker.addDirectoryWalkListener(collector); walker.scan(); - assertEquals( 1, collector.startCount, "Walk Collector / Starting Count" ); - assertNotNull( collector.startingDir, "Walk Collector / Starting Dir" ); - assertEquals( 1, collector.finishCount, "Walk Collector / Finish Count" ); - assertEquals( 4, collector.steps.size(), "Walk Collector / Steps Count" ); - assertTrue( collector.percentageLow >= 0, "Walk Collector / percentage low >= 0" ); - assertTrue( collector.percentageHigh <= 100, "Walk Collector / percentage high <= 100" ); + assertEquals(1, collector.startCount, "Walk Collector / Starting Count"); + assertNotNull(collector.startingDir, "Walk Collector / Starting Dir"); + assertEquals(1, collector.finishCount, "Walk Collector / Finish Count"); + assertEquals(4, collector.steps.size(), "Walk Collector / Steps Count"); + assertTrue(collector.percentageLow >= 0, "Walk Collector / percentage low >= 0"); + assertTrue(collector.percentageHigh <= 100, "Walk Collector / percentage high <= 100"); } } diff --git a/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java b/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java index ac592e66..a2888538 100644 --- a/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java +++ b/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java @@ -16,26 +16,23 @@ * limitations under the License. */ -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.TestInfo; - -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.io.Writer; import java.lang.reflect.Method; import java.nio.file.Files; -import java.util.Arrays; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestInfo; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /** * Base class for testcases doing tests with files. @@ -44,8 +41,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public abstract class FileBasedTestCase -{ +public abstract class FileBasedTestCase { private static File testDir; private TestInfo testInfo; @@ -55,11 +51,9 @@ public abstract class FileBasedTestCase * * @return a {@link java.io.File} object. */ - public static File getTestDirectory() - { - if ( testDir == null ) - { - testDir = ( new File( "target/test/io/" ) ).getAbsoluteFile(); + public static File getTestDirectory() { + if (testDir == null) { + testDir = (new File("target/test/io/")).getAbsoluteFile(); } return testDir; } @@ -72,26 +66,20 @@ public static File getTestDirectory() * @return an array of {@link byte} objects. * @throws java.io.IOException if any. */ - protected byte[] createFile( final File file, final long size ) - throws IOException - { - if ( !file.getParentFile().exists() ) - { - throw new IOException( "Cannot create file " + file + " as the parent directory does not exist" ); + protected byte[] createFile(final File file, final long size) throws IOException { + if (!file.getParentFile().exists()) { + throw new IOException("Cannot create file " + file + " as the parent directory does not exist"); } - byte[] data = generateTestData( size ); + byte[] data = generateTestData(size); - final BufferedOutputStream output = new BufferedOutputStream( Files.newOutputStream( file.toPath() ) ); + final BufferedOutputStream output = new BufferedOutputStream(Files.newOutputStream(file.toPath())); - try - { - output.write( data ); + try { + output.write(data); return data; - } - finally - { + } finally { output.close(); } } @@ -103,20 +91,15 @@ protected byte[] createFile( final File file, final long size ) * @param target a {@link java.io.File} object. * @return a boolean. */ - protected boolean createSymlink( final File link, final File target ) - { - try - { - String[] args = { "ln", "-s", target.getAbsolutePath(), link.getAbsolutePath() }; - Process process = Runtime.getRuntime().exec( args ); + protected boolean createSymlink(final File link, final File target) { + try { + String[] args = {"ln", "-s", target.getAbsolutePath(), link.getAbsolutePath()}; + Process process = Runtime.getRuntime().exec(args); process.waitFor(); - if ( 0 != process.exitValue() ) - { + if (0 != process.exitValue()) { return false; } - } - catch ( Exception e ) - { + } catch (Exception e) { // assume platform does not support "ln" command, tests should be skipped return false; } @@ -129,17 +112,13 @@ protected boolean createSymlink( final File link, final File target ) * @param size a long. * @return an array of {@link byte} objects. */ - protected byte[] generateTestData( final long size ) - { - try - { + protected byte[] generateTestData(final long size) { + try { ByteArrayOutputStream baout = new ByteArrayOutputStream(); - generateTestData( baout, size ); + generateTestData(baout, size); return baout.toByteArray(); - } - catch ( IOException ioe ) - { - throw new RuntimeException( "This should never happen: " + ioe.getMessage() ); + } catch (IOException ioe) { + throw new RuntimeException("This should never happen: " + ioe.getMessage()); } } @@ -150,15 +129,12 @@ protected byte[] generateTestData( final long size ) * @param size a long. * @throws java.io.IOException if any. */ - protected void generateTestData( final OutputStream out, final long size ) - throws IOException - { - for ( int i = 0; i < size; i++ ) - { + protected void generateTestData(final OutputStream out, final long size) throws IOException { + for (int i = 0; i < size; i++) { // output.write((byte)'X'); // nice varied byte pattern compatible with Readers and Writers - out.write( (byte) ( ( i % 127 ) + 1 ) ); + out.write((byte) ((i % 127) + 1)); } } @@ -169,16 +145,13 @@ protected void generateTestData( final OutputStream out, final long size ) * @return a {@link java.io.File} object. * @throws java.io.IOException if any. */ - protected File newFile( String filename ) - throws IOException - { - final File destination = new File( getTestDirectory(), filename ); + protected File newFile(String filename) throws IOException { + final File destination = new File(getTestDirectory(), filename); /* * assertTrue( filename + "Test output data file shouldn't previously exist", !destination.exists() ); */ - if ( destination.exists() ) - { - FileUtils.forceDelete( destination ); + if (destination.exists()) { + FileUtils.forceDelete(destination); } return destination; } @@ -190,11 +163,9 @@ protected File newFile( String filename ) * @param referenceFile a {@link java.io.File} object. * @throws java.lang.Exception if any. */ - protected void checkFile( final File file, final File referenceFile ) - throws Exception - { - assertTrue( file.exists(), "Check existence of output file" ); - assertEqualContent( referenceFile, file ); + protected void checkFile(final File file, final File referenceFile) throws Exception { + assertTrue(file.exists(), "Check existence of output file"); + assertEqualContent(referenceFile, file); } /** @@ -203,17 +174,11 @@ protected void checkFile( final File file, final File referenceFile ) * @param output a {@link java.io.OutputStream} object. * @throws java.lang.Exception if any. */ - protected void checkWrite( final OutputStream output ) - throws Exception - { - try - { - new PrintStream( output ).write( 0 ); - } - catch ( final Throwable t ) - { - fail( "The copy() method closed the stream " + "when it shouldn't have. " - + t.getMessage() ); + protected void checkWrite(final OutputStream output) throws Exception { + try { + new PrintStream(output).write(0); + } catch (final Throwable t) { + fail("The copy() method closed the stream " + "when it shouldn't have. " + t.getMessage()); } } @@ -223,17 +188,11 @@ protected void checkWrite( final OutputStream output ) * @param output a {@link java.io.Writer} object. * @throws java.lang.Exception if any. */ - protected void checkWrite( final Writer output ) - throws Exception - { - try - { - new PrintWriter( output ).write( 'a' ); - } - catch ( final Throwable t ) - { - fail( "The copy() method closed the stream " + "when it shouldn't have. " - + t.getMessage() ); + protected void checkWrite(final Writer output) throws Exception { + try { + new PrintWriter(output).write('a'); + } catch (final Throwable t) { + fail("The copy() method closed the stream " + "when it shouldn't have. " + t.getMessage()); } } @@ -243,12 +202,9 @@ protected void checkWrite( final Writer output ) * @param file a {@link java.io.File} object. * @throws java.lang.Exception if any. */ - protected void deleteFile( final File file ) - throws Exception - { - if ( file.exists() ) - { - assertTrue( file.delete(), "Couldn't delete file: " + file ); + protected void deleteFile(final File file) throws Exception { + if (file.exists()) { + assertTrue(file.delete(), "Couldn't delete file: " + file); } } @@ -257,18 +213,15 @@ protected void deleteFile( final File file ) // ---------------------------------------------------------------------- /** Assert that the content of two files is the same. */ - private void assertEqualContent( final File f0, final File f1 ) - throws IOException - { + private void assertEqualContent(final File f0, final File f1) throws IOException { /* * This doesn't work because the filesize isn't updated until the file is closed. assertTrue( "The files " + f0 * + " and " + f1 + " have differing file sizes (" + f0.length() + " vs " + f1.length() + ")", ( f0.length() == * f1.length() ) ); */ - byte[] buf0 = Files.readAllBytes( f0.toPath() ); - byte[] buf1 = Files.readAllBytes( f0.toPath() ); - assertArrayEquals( buf0, buf1, - "The files " + f0 + " and " + f1 + " have different content" ); + byte[] buf0 = Files.readAllBytes(f0.toPath()); + byte[] buf1 = Files.readAllBytes(f0.toPath()); + assertArrayEquals(buf0, buf1, "The files " + f0 + " and " + f1 + " have different content"); } /** @@ -278,10 +231,8 @@ private void assertEqualContent( final File f0, final File f1 ) * @param file a {@link java.io.File} object. * @throws java.io.IOException if any. */ - protected void assertEqualContent( final byte[] b0, final File file ) - throws IOException - { - byte[] b1 = Files.readAllBytes( file.toPath() ); + protected void assertEqualContent(final byte[] b0, final File file) throws IOException { + byte[] b1 = Files.readAllBytes(file.toPath()); assertArrayEquals(b0, b1, "Content differs"); } @@ -290,11 +241,10 @@ protected void assertEqualContent( final byte[] b0, final File file ) * * @param file a {@link java.io.File} object. */ - protected void assertIsDirectory( File file ) - { - assertTrue( file.exists(), "The File doesn't exists: " + file.getAbsolutePath() ); + protected void assertIsDirectory(File file) { + assertTrue(file.exists(), "The File doesn't exists: " + file.getAbsolutePath()); - assertTrue( file.isDirectory(), "The File isn't a directory: " + file.getAbsolutePath() ); + assertTrue(file.isDirectory(), "The File isn't a directory: " + file.getAbsolutePath()); } /** @@ -302,11 +252,10 @@ protected void assertIsDirectory( File file ) * * @param file a {@link java.io.File} object. */ - protected void assertIsFile( File file ) - { - assertTrue( file.exists(), "The File doesn't exists: " + file.getAbsolutePath() ); + protected void assertIsFile(File file) { + assertTrue(file.exists(), "The File doesn't exists: " + file.getAbsolutePath()); - assertTrue( file.isFile(), "The File isn't a file: " + file.getAbsolutePath() ); + assertTrue(file.isFile(), "The File isn't a file: " + file.getAbsolutePath()); } @BeforeEach @@ -317,5 +266,4 @@ void init(TestInfo testInfo) { protected String getTestMethodName() { return testInfo.getTestMethod().map(Method::getName).orElse(null); } - } diff --git a/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java b/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java index 5c106088..090ed10b 100644 --- a/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java @@ -16,13 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; @@ -39,6 +32,13 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + /** * This is used to test FileUtils for correctness. * @@ -48,9 +48,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public final class FileUtilsTest - extends FileBasedTestCase -{ +public final class FileUtilsTest extends FileBasedTestCase { // Test data /** @@ -71,11 +69,9 @@ public final class FileUtilsTest * * @throws java.lang.Exception if any. */ - public FileUtilsTest() - throws Exception - { - testFile1 = new File( getTestDirectory(), "file1-test.txt" ); - testFile2 = new File( getTestDirectory(), "file1a-test.txt" ); + public FileUtilsTest() throws Exception { + testFile1 = new File(getTestDirectory(), "file1-test.txt"); + testFile2 = new File(getTestDirectory(), "file1a-test.txt"); testFile1Size = (int) testFile1.length(); testFile2Size = (int) testFile2.length(); @@ -87,16 +83,14 @@ public FileUtilsTest() * @throws java.lang.Exception if any. */ @BeforeEach - public void setUp() - throws Exception - { + public void setUp() throws Exception { getTestDirectory().mkdirs(); - createFile( testFile1, testFile1Size ); - createFile( testFile2, testFile2Size ); - FileUtils.deleteDirectory( getTestDirectory() ); + createFile(testFile1, testFile1Size); + createFile(testFile2, testFile2Size); + FileUtils.deleteDirectory(getTestDirectory()); getTestDirectory().mkdirs(); - createFile( testFile1, testFile1Size ); - createFile( testFile2, testFile2Size ); + createFile(testFile1, testFile1Size); + createFile(testFile2, testFile2Size); } // byteCountToDisplaySize @@ -105,12 +99,11 @@ public void setUp() *

      testByteCountToDisplaySize.

      */ @Test - public void testByteCountToDisplaySize() - { - assertEquals( FileUtils.byteCountToDisplaySize( 0 ), "0 bytes" ); - assertEquals( FileUtils.byteCountToDisplaySize( 1024 ), "1 KB" ); - assertEquals( FileUtils.byteCountToDisplaySize( 1024 * 1024 ), "1 MB" ); - assertEquals( FileUtils.byteCountToDisplaySize( 1024 * 1024 * 1024 ), "1 GB" ); + public void testByteCountToDisplaySize() { + assertEquals(FileUtils.byteCountToDisplaySize(0), "0 bytes"); + assertEquals(FileUtils.byteCountToDisplaySize(1024), "1 KB"); + assertEquals(FileUtils.byteCountToDisplaySize(1024 * 1024), "1 MB"); + assertEquals(FileUtils.byteCountToDisplaySize(1024 * 1024 * 1024), "1 GB"); } // waitFor @@ -119,11 +112,10 @@ public void testByteCountToDisplaySize() *

      testWaitFor.

      */ @Test - public void testWaitFor() - { - FileUtils.waitFor( "", -1 ); + public void testWaitFor() { + FileUtils.waitFor("", -1); - FileUtils.waitFor( "", 2 ); + FileUtils.waitFor("", 2); } /** @@ -132,13 +124,11 @@ public void testWaitFor() * @throws java.lang.Exception if any. */ @Test - public void testToFile() - throws Exception - { - URL url = getClass().getResource( "/test.txt" ); - url = new URL( url.toString() + "/name%20%23%2520%3F%7B%7D%5B%5D%3C%3E.txt" ); - File file = FileUtils.toFile( url ); - assertEquals( "name #%20?{}[]<>.txt", file.getName() ); + public void testToFile() throws Exception { + URL url = getClass().getResource("/test.txt"); + url = new URL(url.toString() + "/name%20%23%2520%3F%7B%7D%5B%5D%3C%3E.txt"); + File file = FileUtils.toFile(url); + assertEquals("name #%20?{}[]<>.txt", file.getName()); } /** @@ -147,12 +137,10 @@ public void testToFile() * @throws java.lang.Exception if any. */ @Test - public void testToFileBadProtocol() - throws Exception - { - URL url = new URL( "http://maven.apache.org/" ); - File file = FileUtils.toFile( url ); - assertNull( file ); + public void testToFileBadProtocol() throws Exception { + URL url = new URL("http://maven.apache.org/"); + File file = FileUtils.toFile(url); + assertNull(file); } /** @@ -161,11 +149,9 @@ public void testToFileBadProtocol() * @throws java.lang.Exception if any. */ @Test - public void testToFileNull() - throws Exception - { - File file = FileUtils.toFile( null ); - assertNull( file ); + public void testToFileNull() throws Exception { + File file = FileUtils.toFile(null); + assertNull(file); } // Hacked to sanity by Trygve @@ -175,20 +161,21 @@ public void testToFileNull() * @throws java.lang.Exception if any. */ @Test - public void testToURLs() - throws Exception - { - File[] files = new File[] { new File( "file1" ), new File( "file2" ), }; + public void testToURLs() throws Exception { + File[] files = new File[] { + new File("file1"), new File("file2"), + }; - URL[] urls = FileUtils.toURLs( files ); + URL[] urls = FileUtils.toURLs(files); - assertEquals( files.length, urls.length, - "The length of the generated URL's is not equals to the length of files. " + "Was " + files.length - + ", expected " + urls.length ); + assertEquals( + files.length, + urls.length, + "The length of the generated URL's is not equals to the length of files. " + "Was " + files.length + + ", expected " + urls.length); - for ( int i = 0; i < urls.length; i++ ) - { - assertEquals( files[i].toURI().toURL(), urls[i] ); + for (int i = 0; i < urls.length; i++) { + assertEquals(files[i].toURI().toURL(), urls[i]); } } @@ -196,15 +183,14 @@ public void testToURLs() *

      testGetFilesFromExtension.

      */ @Test - public void testGetFilesFromExtension() - { + public void testGetFilesFromExtension() { // TODO I'm not sure what is supposed to happen here - FileUtils.getFilesFromExtension( "dir", null ); + FileUtils.getFilesFromExtension("dir", null); // Non-existent files final String[] emptyFileNames = - FileUtils.getFilesFromExtension( getTestDirectory().getAbsolutePath(), new String[] { "java" } ); - assertTrue( emptyFileNames.length == 0 ); + FileUtils.getFilesFromExtension(getTestDirectory().getAbsolutePath(), new String[] {"java"}); + assertTrue(emptyFileNames.length == 0); // Existing files // TODO Figure out how to test this @@ -220,24 +206,19 @@ public void testGetFilesFromExtension() *

      testMkdir.

      */ @Test - public void testMkdir() - { - final File dir = new File( getTestDirectory(), "testdir" ); - FileUtils.mkdir( dir.getAbsolutePath() ); + public void testMkdir() { + final File dir = new File(getTestDirectory(), "testdir"); + FileUtils.mkdir(dir.getAbsolutePath()); dir.deleteOnExit(); - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - try - { - File winFile = new File( getTestDirectory(), "bla*bla" ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + try { + File winFile = new File(getTestDirectory(), "bla*bla"); winFile.deleteOnExit(); - FileUtils.mkdir( winFile.getAbsolutePath() ); - assertTrue( false ); - } - catch ( IllegalArgumentException e ) - { - assertTrue( true ); + FileUtils.mkdir(winFile.getAbsolutePath()); + assertTrue(false); + } catch (IllegalArgumentException e) { + assertTrue(true); } } } @@ -250,31 +231,29 @@ public void testMkdir() * @throws java.lang.Exception if any. */ @Test - public void testContentEquals() - throws Exception - { + public void testContentEquals() throws Exception { // Non-existent files - final File file = new File( getTestDirectory(), getTestMethodName() ); - assertTrue( FileUtils.contentEquals( file, file ) ); + final File file = new File(getTestDirectory(), getTestMethodName()); + assertTrue(FileUtils.contentEquals(file, file)); // TODO Should comparing 2 directories throw an Exception instead of returning false? // Directories - assertTrue( !FileUtils.contentEquals( getTestDirectory(), getTestDirectory() ) ); + assertTrue(!FileUtils.contentEquals(getTestDirectory(), getTestDirectory())); // Different files - final File objFile1 = new File( getTestDirectory(), getTestMethodName() + ".object" ); + final File objFile1 = new File(getTestDirectory(), getTestMethodName() + ".object"); objFile1.deleteOnExit(); - FileUtils.copyURLToFile( getClass().getResource( "/java/lang/Object.class" ), objFile1 ); + FileUtils.copyURLToFile(getClass().getResource("/java/lang/Object.class"), objFile1); - final File objFile2 = new File( getTestDirectory(), getTestMethodName() + ".collection" ); + final File objFile2 = new File(getTestDirectory(), getTestMethodName() + ".collection"); objFile2.deleteOnExit(); - FileUtils.copyURLToFile( getClass().getResource( "/java/util/Collection.class" ), objFile2 ); + FileUtils.copyURLToFile(getClass().getResource("/java/util/Collection.class"), objFile2); - assertTrue( !FileUtils.contentEquals( objFile1, objFile2 ), "Files should not be equal." ); + assertTrue(!FileUtils.contentEquals(objFile1, objFile2), "Files should not be equal."); // Equal files file.createNewFile(); - assertTrue( FileUtils.contentEquals( file, file ) ); + assertTrue(FileUtils.contentEquals(file, file)); } // removePath @@ -283,11 +262,10 @@ public void testContentEquals() *

      testRemovePath.

      */ @Test - public void testRemovePath() - { + public void testRemovePath() { final String fileName = - FileUtils.removePath( new File( getTestDirectory(), getTestMethodName() ).getAbsolutePath() ); - assertEquals( getTestMethodName(), fileName ); + FileUtils.removePath(new File(getTestDirectory(), getTestMethodName()).getAbsolutePath()); + assertEquals(getTestMethodName(), fileName); } // getPath @@ -296,11 +274,9 @@ public void testRemovePath() *

      testGetPath.

      */ @Test - public void testGetPath() - { - final String fileName = - FileUtils.getPath( new File( getTestDirectory(), getTestMethodName() ).getAbsolutePath() ); - assertEquals( getTestDirectory().getAbsolutePath(), fileName ); + public void testGetPath() { + final String fileName = FileUtils.getPath(new File(getTestDirectory(), getTestMethodName()).getAbsolutePath()); + assertEquals(getTestDirectory().getAbsolutePath(), fileName); } // copyURLToFile @@ -311,26 +287,21 @@ public void testGetPath() * @throws java.lang.Exception if any. */ @Test - public void testCopyURLToFile() - throws Exception - { + public void testCopyURLToFile() throws Exception { // Creates file - final File file = new File( getTestDirectory(), getTestMethodName() ); + final File file = new File(getTestDirectory(), getTestMethodName()); file.deleteOnExit(); // Loads resource final String resourceName = "/java/lang/Object.class"; - FileUtils.copyURLToFile( getClass().getResource( resourceName ), file ); + FileUtils.copyURLToFile(getClass().getResource(resourceName), file); // Tests that resource was copied correctly - final InputStream fis = Files.newInputStream( file.toPath() ); - try - { - assertTrue( IOUtil.contentEquals( getClass().getResourceAsStream( resourceName ), fis ), - "Content is not equal."); - } - finally - { + final InputStream fis = Files.newInputStream(file.toPath()); + try { + assertTrue( + IOUtil.contentEquals(getClass().getResourceAsStream(resourceName), fis), "Content is not equal."); + } finally { fis.close(); } } @@ -341,14 +312,13 @@ public void testCopyURLToFile() *

      testCatPath.

      */ @Test - public void testCatPath() - { + public void testCatPath() { // TODO StringIndexOutOfBoundsException thrown if file doesn't contain slash. // Is this acceptable? // assertEquals("", FileUtils.catPath("a", "b")); - assertEquals( "/a/c", FileUtils.catPath( "/a/b", "c" ) ); - assertEquals( "/a/d", FileUtils.catPath( "/a/b/c", "../d" ) ); + assertEquals("/a/c", FileUtils.catPath("/a/b", "c")); + assertEquals("/a/d", FileUtils.catPath("/a/b/c", "../d")); } // forceMkdir @@ -359,46 +329,37 @@ public void testCatPath() * @throws java.lang.Exception if any. */ @Test - public void testForceMkdir() - throws Exception - { + public void testForceMkdir() throws Exception { // Tests with existing directory - FileUtils.forceMkdir( getTestDirectory() ); + FileUtils.forceMkdir(getTestDirectory()); // Creates test file - final File testFile = new File( getTestDirectory(), getTestMethodName() ); + final File testFile = new File(getTestDirectory(), getTestMethodName()); testFile.deleteOnExit(); testFile.createNewFile(); - assertTrue( testFile.exists(), "Test file does not exist." ); + assertTrue(testFile.exists(), "Test file does not exist."); // Tests with existing file - try - { - FileUtils.forceMkdir( testFile ); - fail( "Exception expected." ); - } - catch ( IOException ex ) - { + try { + FileUtils.forceMkdir(testFile); + fail("Exception expected."); + } catch (IOException ex) { } testFile.delete(); // Tests with non-existent directory - FileUtils.forceMkdir( testFile ); - assertTrue( testFile.exists(), "Directory was not created." ); + FileUtils.forceMkdir(testFile); + assertTrue(testFile.exists(), "Directory was not created."); - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - try - { - File winFile = new File( getTestDirectory(), "bla*bla" ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + try { + File winFile = new File(getTestDirectory(), "bla*bla"); winFile.deleteOnExit(); - FileUtils.forceMkdir( winFile ); - assertTrue( false ); - } - catch ( IllegalArgumentException e ) - { - assertTrue( true ); + FileUtils.forceMkdir(winFile); + assertTrue(false); + } catch (IllegalArgumentException e) { + assertTrue(true); } } } @@ -411,19 +372,14 @@ public void testForceMkdir() * @throws java.lang.Exception if any. */ @Test - public void testSizeOfDirectory() - throws Exception - { - final File file = new File( getTestDirectory(), getTestMethodName() ); + public void testSizeOfDirectory() throws Exception { + final File file = new File(getTestDirectory(), getTestMethodName()); // Non-existent file - try - { - FileUtils.sizeOfDirectory( file ); - fail( "Exception expected." ); - } - catch ( IllegalArgumentException ex ) - { + try { + FileUtils.sizeOfDirectory(file); + fail("Exception expected."); + } catch (IllegalArgumentException ex) { } // Creates file @@ -431,20 +387,17 @@ public void testSizeOfDirectory() file.deleteOnExit(); // Existing file - try - { - FileUtils.sizeOfDirectory( file ); - fail( "Exception expected." ); - } - catch ( IllegalArgumentException ex ) - { + try { + FileUtils.sizeOfDirectory(file); + fail("Exception expected."); + } catch (IllegalArgumentException ex) { } // Existing directory file.delete(); file.mkdir(); - assertEquals( TEST_DIRECTORY_SIZE, FileUtils.sizeOfDirectory( file ), "Unexpected directory size" ); + assertEquals(TEST_DIRECTORY_SIZE, FileUtils.sizeOfDirectory(file), "Unexpected directory size"); } // isFileNewer @@ -454,9 +407,7 @@ public void testSizeOfDirectory() /** *

      XtestIsFileNewer.

      */ - public void XtestIsFileNewer() - { - } + public void XtestIsFileNewer() {} // copyFile /** @@ -465,13 +416,11 @@ public void XtestIsFileNewer() * @throws java.lang.Exception if any. */ @Test - public void testCopyFile1() - throws Exception - { - final File destination = new File( getTestDirectory(), "copy1.txt" ); - FileUtils.copyFile( testFile1, destination ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile1Size, "Check Full copy" ); + public void testCopyFile1() throws Exception { + final File destination = new File(getTestDirectory(), "copy1.txt"); + FileUtils.copyFile(testFile1, destination); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile1Size, "Check Full copy"); } /** @@ -480,13 +429,11 @@ public void testCopyFile1() * @throws java.lang.Exception if any. */ @Test - public void testCopyFile2() - throws Exception - { - final File destination = new File( getTestDirectory(), "copy2.txt" ); - FileUtils.copyFile( testFile1, destination ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile2Size, "Check Full copy" ); + public void testCopyFile2() throws Exception { + final File destination = new File(getTestDirectory(), "copy2.txt"); + FileUtils.copyFile(testFile1, destination); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile2Size, "Check Full copy"); } /** @@ -495,18 +442,15 @@ public void testCopyFile2() * @throws java.lang.Exception */ @Test - public void testCopyFile3() - throws Exception - { - File destDirectory = new File( getTestDirectory(), "foo/bar/testcopy" ); - if ( destDirectory.exists() ) - { + public void testCopyFile3() throws Exception { + File destDirectory = new File(getTestDirectory(), "foo/bar/testcopy"); + if (destDirectory.exists()) { destDirectory.delete(); } - final File destination = new File( destDirectory, "copy2.txt" ); - FileUtils.copyFile( testFile1, destination ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile2Size, "Check Full copy" ); + final File destination = new File(destDirectory, "copy2.txt"); + FileUtils.copyFile(testFile1, destination); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile2Size, "Check Full copy"); } // linkFile @@ -516,14 +460,12 @@ public void testCopyFile3() * @throws java.lang.Exception if any. */ @Test - public void testLinkFile1() - throws Exception - { - final File destination = new File( getTestDirectory(), "link1.txt" ); - FileUtils.linkFile( testFile1, destination ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile1Size, "Check File length" ); - assertTrue( Files.isSymbolicLink(destination.toPath()), "Check is link" ); + public void testLinkFile1() throws Exception { + final File destination = new File(getTestDirectory(), "link1.txt"); + FileUtils.linkFile(testFile1, destination); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile1Size, "Check File length"); + assertTrue(Files.isSymbolicLink(destination.toPath()), "Check is link"); } /** @@ -532,14 +474,12 @@ public void testLinkFile1() * @throws java.lang.Exception if any. */ @Test - public void testLinkFile2() - throws Exception - { - final File destination = new File( getTestDirectory(), "link2.txt" ); - FileUtils.linkFile( testFile1, destination ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile2Size, "Check File length" ); - assertTrue( Files.isSymbolicLink(destination.toPath()), "Check is link" ); + public void testLinkFile2() throws Exception { + final File destination = new File(getTestDirectory(), "link2.txt"); + FileUtils.linkFile(testFile1, destination); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile2Size, "Check File length"); + assertTrue(Files.isSymbolicLink(destination.toPath()), "Check is link"); } /** @@ -548,19 +488,16 @@ public void testLinkFile2() * @throws java.lang.Exception */ @Test - public void testLinkFile3() - throws Exception - { - File destDirectory = new File( getTestDirectory(), "foo/bar/testlink" ); - if ( destDirectory.exists() ) - { + public void testLinkFile3() throws Exception { + File destDirectory = new File(getTestDirectory(), "foo/bar/testlink"); + if (destDirectory.exists()) { destDirectory.delete(); } - final File destination = new File( destDirectory, "link2.txt" ); - FileUtils.linkFile( testFile1, destination ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile2Size, "Check File length" ); - assertTrue( Files.isSymbolicLink(destination.toPath()), "Check is link" ); + final File destination = new File(destDirectory, "link2.txt"); + FileUtils.linkFile(testFile1, destination); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile2Size, "Check File length"); + assertTrue(Files.isSymbolicLink(destination.toPath()), "Check is link"); } // copyFileIfModified @@ -571,26 +508,25 @@ public void testLinkFile3() * @throws java.lang.Exception if any. */ @Test - public void testCopyIfModifiedWhenSourceIsNewer() - throws Exception - { - FileUtils.forceMkdir( new File( getTestDirectory() + "/temp" ) ); + public void testCopyIfModifiedWhenSourceIsNewer() throws Exception { + FileUtils.forceMkdir(new File(getTestDirectory() + "/temp")); // Place destination - File destination = new File( getTestDirectory() + "/temp/copy1.txt" ); - FileUtils.copyFile( testFile1, destination ); + File destination = new File(getTestDirectory() + "/temp/copy1.txt"); + FileUtils.copyFile(testFile1, destination); // Make sure source is newer - reallySleep( 1000 ); + reallySleep(1000); // Place source - File source = new File( getTestDirectory(), "copy1.txt" ); - FileUtils.copyFile( testFile1, source ); - source.setLastModified( System.currentTimeMillis() ); + File source = new File(getTestDirectory(), "copy1.txt"); + FileUtils.copyFile(testFile1, source); + source.setLastModified(System.currentTimeMillis()); // Copy will occur when source is newer - assertTrue( FileUtils.copyFileIfModified( source, destination ), - "Failed copy. Target file should have been updated." ); + assertTrue( + FileUtils.copyFileIfModified(source, destination), + "Failed copy. Target file should have been updated."); } /** @@ -599,25 +535,22 @@ public void testCopyIfModifiedWhenSourceIsNewer() * @throws java.lang.Exception if any. */ @Test - public void testCopyIfModifiedWhenSourceIsOlder() - throws Exception - { - FileUtils.forceMkdir( new File( getTestDirectory() + "/temp" ) ); + public void testCopyIfModifiedWhenSourceIsOlder() throws Exception { + FileUtils.forceMkdir(new File(getTestDirectory() + "/temp")); // Place source - File source = new File( getTestDirectory() + "copy1.txt" ); - FileUtils.copyFile( testFile1, source ); + File source = new File(getTestDirectory() + "copy1.txt"); + FileUtils.copyFile(testFile1, source); // Make sure destination is newer - reallySleep( 1000 ); + reallySleep(1000); // Place destination - File destination = new File( getTestDirectory(), "/temp/copy1.txt" ); - FileUtils.copyFile( testFile1, destination ); + File destination = new File(getTestDirectory(), "/temp/copy1.txt"); + FileUtils.copyFile(testFile1, destination); // Copy will occur when destination is newer - assertFalse( FileUtils.copyFileIfModified( source, destination ), - "Source file should not have been copied." ); + assertFalse(FileUtils.copyFileIfModified(source, destination), "Source file should not have been copied."); } /** @@ -626,22 +559,19 @@ public void testCopyIfModifiedWhenSourceIsOlder() * @throws java.lang.Exception if any. */ @Test - public void testCopyIfModifiedWhenSourceHasZeroDate() - throws Exception - { - FileUtils.forceMkdir( new File( getTestDirectory(), "temp" ) ); + public void testCopyIfModifiedWhenSourceHasZeroDate() throws Exception { + FileUtils.forceMkdir(new File(getTestDirectory(), "temp")); // Source modified on 1970-01-01T00:00Z - File source = new File( getTestDirectory(), "copy1.txt" ); - FileUtils.copyFile( testFile1, source ); - source.setLastModified( 0L ); + File source = new File(getTestDirectory(), "copy1.txt"); + FileUtils.copyFile(testFile1, source); + source.setLastModified(0L); // A non existing destination - File destination = new File( getTestDirectory(), "temp/copy1.txt" ); + File destination = new File(getTestDirectory(), "temp/copy1.txt"); // Should copy the source to the non existing destination. - assertTrue( FileUtils.copyFileIfModified( source, destination ), - "Source file should have been copied." ); + assertTrue(FileUtils.copyFileIfModified(source, destination), "Source file should have been copied."); } // forceDelete @@ -652,14 +582,12 @@ public void testCopyIfModifiedWhenSourceHasZeroDate() * @throws java.lang.Exception if any. */ @Test - public void testForceDeleteAFile1() - throws Exception - { - final File destination = new File( getTestDirectory(), "copy1.txt" ); + public void testForceDeleteAFile1() throws Exception { + final File destination = new File(getTestDirectory(), "copy1.txt"); destination.createNewFile(); - assertTrue( destination.exists(), "Copy1.txt doesn't exist to delete" ); - FileUtils.forceDelete( destination ); - assertTrue( !destination.exists(), "Check No Exist" ); + assertTrue(destination.exists(), "Copy1.txt doesn't exist to delete"); + FileUtils.forceDelete(destination); + assertTrue(!destination.exists(), "Check No Exist"); } /** @@ -668,14 +596,12 @@ public void testForceDeleteAFile1() * @throws java.lang.Exception if any. */ @Test - public void testForceDeleteAFile2() - throws Exception - { - final File destination = new File( getTestDirectory(), "copy2.txt" ); + public void testForceDeleteAFile2() throws Exception { + final File destination = new File(getTestDirectory(), "copy2.txt"); destination.createNewFile(); - assertTrue( destination.exists(), "Copy2.txt doesn't exist to delete" ); - FileUtils.forceDelete( destination ); - assertTrue( !destination.exists(), "Check No Exist" ); + assertTrue(destination.exists(), "Copy2.txt doesn't exist to delete"); + FileUtils.forceDelete(destination); + assertTrue(!destination.exists(), "Check No Exist"); } // copyFileToDirectory @@ -686,18 +612,15 @@ public void testForceDeleteAFile2() * @throws java.lang.Exception if any. */ @Test - public void testCopyFile1ToDir() - throws Exception - { - final File directory = new File( getTestDirectory(), "subdir" ); - if ( !directory.exists() ) - { + public void testCopyFile1ToDir() throws Exception { + final File directory = new File(getTestDirectory(), "subdir"); + if (!directory.exists()) { directory.mkdirs(); } - final File destination = new File( directory, testFile1.getName() ); - FileUtils.copyFileToDirectory( testFile1, directory ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile1Size, "Check Full copy" ); + final File destination = new File(directory, testFile1.getName()); + FileUtils.copyFileToDirectory(testFile1, directory); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile1Size, "Check Full copy"); } /** @@ -706,18 +629,15 @@ public void testCopyFile1ToDir() * @throws java.lang.Exception if any. */ @Test - public void testCopyFile2ToDir() - throws Exception - { - final File directory = new File( getTestDirectory(), "subdir" ); - if ( !directory.exists() ) - { + public void testCopyFile2ToDir() throws Exception { + final File directory = new File(getTestDirectory(), "subdir"); + if (!directory.exists()) { directory.mkdirs(); } - final File destination = new File( directory, testFile1.getName() ); - FileUtils.copyFileToDirectory( testFile1, directory ); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile2Size, "Check Full copy" ); + final File destination = new File(directory, testFile1.getName()); + FileUtils.copyFileToDirectory(testFile1, directory); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile2Size, "Check Full copy"); } // copyFileToDirectoryIfModified @@ -728,29 +648,26 @@ public void testCopyFile2ToDir() * @throws java.lang.Exception if any. */ @Test - public void testCopyFile1ToDirIfModified() - throws Exception - { - final File directory = new File( getTestDirectory(), "subdir" ); - if ( directory.exists() ) - { - FileUtils.forceDelete( directory ); + public void testCopyFile1ToDirIfModified() throws Exception { + final File directory = new File(getTestDirectory(), "subdir"); + if (directory.exists()) { + FileUtils.forceDelete(directory); } directory.mkdirs(); - final File destination = new File( directory, testFile1.getName() ); + final File destination = new File(directory, testFile1.getName()); - FileUtils.copyFileToDirectoryIfModified( testFile1, directory ); + FileUtils.copyFileToDirectoryIfModified(testFile1, directory); - final File target = new File( getTestDirectory() + "/subdir", testFile1.getName() ); + final File target = new File(getTestDirectory() + "/subdir", testFile1.getName()); long timestamp = target.lastModified(); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile1Size, "Check Full copy" ); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile1Size, "Check Full copy"); - FileUtils.copyFileToDirectoryIfModified( testFile1, directory ); + FileUtils.copyFileToDirectoryIfModified(testFile1, directory); - assertTrue( timestamp == target.lastModified(), "Timestamp was changed" ); + assertTrue(timestamp == target.lastModified(), "Timestamp was changed"); } /** @@ -759,29 +676,26 @@ public void testCopyFile1ToDirIfModified() * @throws java.lang.Exception if any. */ @Test - public void testCopyFile2ToDirIfModified() - throws Exception - { - final File directory = new File( getTestDirectory(), "subdir" ); - if ( directory.exists() ) - { - FileUtils.forceDelete( directory ); + public void testCopyFile2ToDirIfModified() throws Exception { + final File directory = new File(getTestDirectory(), "subdir"); + if (directory.exists()) { + FileUtils.forceDelete(directory); } directory.mkdirs(); - final File destination = new File( directory, testFile2.getName() ); + final File destination = new File(directory, testFile2.getName()); - FileUtils.copyFileToDirectoryIfModified( testFile2, directory ); + FileUtils.copyFileToDirectoryIfModified(testFile2, directory); - final File target = new File( getTestDirectory() + "/subdir", testFile2.getName() ); + final File target = new File(getTestDirectory() + "/subdir", testFile2.getName()); long timestamp = target.lastModified(); - assertTrue( destination.exists(), "Check Exist" ); - assertTrue( destination.length() == testFile2Size, "Check Full copy" ); + assertTrue(destination.exists(), "Check Exist"); + assertTrue(destination.length() == testFile2Size, "Check Full copy"); - FileUtils.copyFileToDirectoryIfModified( testFile2, directory ); + FileUtils.copyFileToDirectoryIfModified(testFile2, directory); - assertTrue( timestamp == target.lastModified(), "Timestamp was changed" ); + assertTrue(timestamp == target.lastModified(), "Timestamp was changed"); } // forceDelete @@ -792,11 +706,9 @@ public void testCopyFile2ToDirIfModified() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testForceDeleteDir() - throws Exception - { - FileUtils.forceDelete( getTestDirectory().getParentFile() ); - assertTrue( !getTestDirectory().getParentFile().exists(), "Check No Exist" ); + public void testForceDeleteDir() throws Exception { + FileUtils.forceDelete(getTestDirectory().getParentFile()); + assertTrue(!getTestDirectory().getParentFile().exists(), "Check No Exist"); } // resolveFile @@ -807,11 +719,9 @@ public void testForceDeleteDir() * @throws java.lang.Exception if any. */ @Test - public void testResolveFileDotDot() - throws Exception - { - final File file = FileUtils.resolveFile( getTestDirectory(), ".." ); - assertEquals( file, getTestDirectory().getParentFile(), "Check .. operator" ); + public void testResolveFileDotDot() throws Exception { + final File file = FileUtils.resolveFile(getTestDirectory(), ".."); + assertEquals(file, getTestDirectory().getParentFile(), "Check .. operator"); } /** @@ -820,11 +730,9 @@ public void testResolveFileDotDot() * @throws java.lang.Exception if any. */ @Test - public void testResolveFileDot() - throws Exception - { - final File file = FileUtils.resolveFile( getTestDirectory(), "." ); - assertEquals( file, getTestDirectory(), "Check . operator" ); + public void testResolveFileDot() throws Exception { + final File file = FileUtils.resolveFile(getTestDirectory(), "."); + assertEquals(file, getTestDirectory(), "Check . operator"); } // normalize @@ -835,36 +743,63 @@ public void testResolveFileDot() * @throws java.lang.Exception if any. */ @Test - public void testNormalize() - throws Exception - { - final String[] src = { "", "/", "///", "/foo", "/foo//", "/./", "/foo/./", "/foo/./bar", "/foo/../bar", - "/foo/../bar/../baz", "/foo/bar/../../baz", "/././", "/foo/./../bar", "/foo/.././bar/", "//foo//./bar", - "/../", "/foo/../../" }; - - final String[] dest = { "", "/", "/", "/foo", "/foo/", "/", "/foo/", "/foo/bar", "/bar", "/baz", "/baz", "/", - "/bar", "/bar/", "/foo/bar", null, null }; - - assertEquals( src.length, dest.length, "Oops, test writer goofed" ); - - for ( int i = 0; i < src.length; i++ ) - { - assertEquals( dest[i], FileUtils.normalize( src[i] ), - "Check if '" + src[i] + "' normalized to '" + dest[i] + "'" ); + public void testNormalize() throws Exception { + final String[] src = { + "", + "/", + "///", + "/foo", + "/foo//", + "/./", + "/foo/./", + "/foo/./bar", + "/foo/../bar", + "/foo/../bar/../baz", + "/foo/bar/../../baz", + "/././", + "/foo/./../bar", + "/foo/.././bar/", + "//foo//./bar", + "/../", + "/foo/../../" + }; + + final String[] dest = { + "", + "/", + "/", + "/foo", + "/foo/", + "/", + "/foo/", + "/foo/bar", + "/bar", + "/baz", + "/baz", + "/", + "/bar", + "/bar/", + "/foo/bar", + null, + null + }; + + assertEquals(src.length, dest.length, "Oops, test writer goofed"); + + for (int i = 0; i < src.length; i++) { + assertEquals( + dest[i], FileUtils.normalize(src[i]), "Check if '" + src[i] + "' normalized to '" + dest[i] + "'"); } } - private String replaceAll( String text, String lookFor, String replaceWith ) - { - StringBuilder sb = new StringBuilder( text ); - while ( true ) - { - int idx = sb.indexOf( lookFor ); - if ( idx < 0 ) - { + private String replaceAll(String text, String lookFor, String replaceWith) { + StringBuilder sb = new StringBuilder(text); + while (true) { + int idx = sb.indexOf(lookFor); + if (idx < 0) { break; } - sb.replace( idx, idx + lookFor.length(), replaceWith ); + sb.replace(idx, idx + lookFor.length(), replaceWith); } return sb.toString(); } @@ -876,54 +811,54 @@ private String replaceAll( String text, String lookFor, String replaceWith ) */ // Used to exist as IOTestCase class @Test - public void testFileUtils() - throws Exception - { + public void testFileUtils() throws Exception { // Loads file from classpath final String path = "/test.txt"; - final URL url = this.getClass().getResource( path ); - assertNotNull( url, path + " was not found." ); + final URL url = this.getClass().getResource(path); + assertNotNull(url, path + " was not found."); final String filename = Paths.get(url.toURI()).toString(); final String filename2 = "test2.txt"; - assertTrue( FileUtils.getExtension( filename ).equals( "txt" ), "test.txt extension == \"txt\"" ); + assertTrue(FileUtils.getExtension(filename).equals("txt"), "test.txt extension == \"txt\""); - assertTrue( FileUtils.fileExists( filename ), "Test file does exist: " + filename ); + assertTrue(FileUtils.fileExists(filename), "Test file does exist: " + filename); - assertTrue( !FileUtils.fileExists( filename2 ), "Second test file does not exist" ); + assertTrue(!FileUtils.fileExists(filename2), "Second test file does not exist"); - FileUtils.fileWrite( filename2, filename ); - assertTrue( FileUtils.fileExists( filename2 ), "Second file was written" ); + FileUtils.fileWrite(filename2, filename); + assertTrue(FileUtils.fileExists(filename2), "Second file was written"); - final String file2contents = FileUtils.fileRead( filename2 ); - assertTrue( FileUtils.fileRead( filename2 ).equals( file2contents ), "Second file's contents correct" ); + final String file2contents = FileUtils.fileRead(filename2); + assertTrue(FileUtils.fileRead(filename2).equals(file2contents), "Second file's contents correct"); - FileUtils.fileAppend( filename2, filename ); - assertTrue( FileUtils.fileRead( filename2 ).equals( file2contents + file2contents ), - "Second file's contents correct" ); + FileUtils.fileAppend(filename2, filename); + assertTrue( + FileUtils.fileRead(filename2).equals(file2contents + file2contents), "Second file's contents correct"); - FileUtils.fileDelete( filename2 ); - assertTrue( !FileUtils.fileExists( filename2 ), "Second test file does not exist" ); - - final String contents = FileUtils.fileRead( filename ); - assertTrue( contents.equals( "This is a test" ), "FileUtils.fileRead()" ); + FileUtils.fileDelete(filename2); + assertTrue(!FileUtils.fileExists(filename2), "Second test file does not exist"); + final String contents = FileUtils.fileRead(filename); + assertTrue(contents.equals("This is a test"), "FileUtils.fileRead()"); } /** *

      testGetExtension.

      */ @Test - public void testGetExtension() - { - final String[][] tests = - { { "filename.ext", "ext" }, { "README", "" }, { "domain.dot.com", "com" }, { "image.jpeg", "jpeg" }, - { "folder" + File.separator + "image.jpeg", "jpeg" }, { "folder" + File.separator + "README", "" } }; - - for ( String[] test : tests ) - { - assertEquals( test[1], FileUtils.getExtension( test[0] ) ); + public void testGetExtension() { + final String[][] tests = { + {"filename.ext", "ext"}, + {"README", ""}, + {"domain.dot.com", "com"}, + {"image.jpeg", "jpeg"}, + {"folder" + File.separator + "image.jpeg", "jpeg"}, + {"folder" + File.separator + "README", ""} + }; + + for (String[] test : tests) { + assertEquals(test[1], FileUtils.getExtension(test[0])); // assertEquals(tests[i][1], FileUtils.extension(tests[i][0])); } } @@ -932,21 +867,22 @@ public void testGetExtension() *

      testGetExtensionWithPaths.

      */ @org.junit.jupiter.api.Test - public void testGetExtensionWithPaths() - { + public void testGetExtensionWithPaths() { // Since the utilities are based on the separator for the platform // running the test, ensure we are using the right separator final String sep = File.separator; - final String[][] testsWithPaths = { { sep + "tmp" + sep + "foo" + sep + "filename.ext", "ext" }, - { "C:" + sep + "temp" + sep + "foo" + sep + "filename.ext", "ext" }, - { "" + sep + "tmp" + sep + "foo.bar" + sep + "filename.ext", "ext" }, - { "C:" + sep + "temp" + sep + "foo.bar" + sep + "filename.ext", "ext" }, - { "" + sep + "tmp" + sep + "foo.bar" + sep + "README", "" }, - { "C:" + sep + "temp" + sep + "foo.bar" + sep + "README", "" }, { ".." + sep + "filename.ext", "ext" }, - { "blabla", "" } }; - for ( String[] testsWithPath : testsWithPaths ) - { - assertEquals( testsWithPath[1], FileUtils.getExtension( testsWithPath[0] ) ); + final String[][] testsWithPaths = { + {sep + "tmp" + sep + "foo" + sep + "filename.ext", "ext"}, + {"C:" + sep + "temp" + sep + "foo" + sep + "filename.ext", "ext"}, + {"" + sep + "tmp" + sep + "foo.bar" + sep + "filename.ext", "ext"}, + {"C:" + sep + "temp" + sep + "foo.bar" + sep + "filename.ext", "ext"}, + {"" + sep + "tmp" + sep + "foo.bar" + sep + "README", ""}, + {"C:" + sep + "temp" + sep + "foo.bar" + sep + "README", ""}, + {".." + sep + "filename.ext", "ext"}, + {"blabla", ""} + }; + for (String[] testsWithPath : testsWithPaths) { + assertEquals(testsWithPath[1], FileUtils.getExtension(testsWithPath[0])); // assertEquals(testsWithPaths[i][1], FileUtils.extension(testsWithPaths[i][0])); } } @@ -955,14 +891,17 @@ public void testGetExtensionWithPaths() *

      testRemoveExtension.

      */ @Test - public void testRemoveExtension() - { - final String[][] tests = { { "filename.ext", "filename" }, { "first.second.third.ext", "first.second.third" }, - { "README", "README" }, { "domain.dot.com", "domain.dot" }, { "image.jpeg", "image" } }; - - for ( String[] test : tests ) - { - assertEquals( test[1], FileUtils.removeExtension( test[0] ) ); + public void testRemoveExtension() { + final String[][] tests = { + {"filename.ext", "filename"}, + {"first.second.third.ext", "first.second.third"}, + {"README", "README"}, + {"domain.dot.com", "domain.dot"}, + {"image.jpeg", "image"} + }; + + for (String[] test : tests) { + assertEquals(test[1], FileUtils.removeExtension(test[0])); // assertEquals(tests[i][1], FileUtils.basename(tests[i][0])); } } @@ -972,26 +911,31 @@ public void testRemoveExtension() *

      testRemoveExtensionWithPaths.

      */ @Test - public void testRemoveExtensionWithPaths() - { + public void testRemoveExtensionWithPaths() { // Since the utilities are based on the separator for the platform // running the test, ensure we are using the right separator final String sep = File.separator; final String[][] testsWithPaths = { - { sep + "tmp" + sep + "foo" + sep + "filename.ext", sep + "tmp" + sep + "foo" + sep + "filename" }, - { "C:" + sep + "temp" + sep + "foo" + sep + "filename.ext", - "C:" + sep + "temp" + sep + "foo" + sep + "filename" }, - { sep + "tmp" + sep + "foo.bar" + sep + "filename.ext", sep + "tmp" + sep + "foo.bar" + sep + "filename" }, - { "C:" + sep + "temp" + sep + "foo.bar" + sep + "filename.ext", - "C:" + sep + "temp" + sep + "foo.bar" + sep + "filename" }, - { sep + "tmp" + sep + "foo.bar" + sep + "README", sep + "tmp" + sep + "foo.bar" + sep + "README" }, - { "C:" + sep + "temp" + sep + "foo.bar" + sep + "README", - "C:" + sep + "temp" + sep + "foo.bar" + sep + "README" }, - { ".." + sep + "filename.ext", ".." + sep + "filename" } }; - - for ( String[] testsWithPath : testsWithPaths ) - { - assertEquals( testsWithPath[1], FileUtils.removeExtension( testsWithPath[0] ) ); + {sep + "tmp" + sep + "foo" + sep + "filename.ext", sep + "tmp" + sep + "foo" + sep + "filename"}, + { + "C:" + sep + "temp" + sep + "foo" + sep + "filename.ext", + "C:" + sep + "temp" + sep + "foo" + sep + "filename" + }, + {sep + "tmp" + sep + "foo.bar" + sep + "filename.ext", sep + "tmp" + sep + "foo.bar" + sep + "filename"}, + { + "C:" + sep + "temp" + sep + "foo.bar" + sep + "filename.ext", + "C:" + sep + "temp" + sep + "foo.bar" + sep + "filename" + }, + {sep + "tmp" + sep + "foo.bar" + sep + "README", sep + "tmp" + sep + "foo.bar" + sep + "README"}, + { + "C:" + sep + "temp" + sep + "foo.bar" + sep + "README", + "C:" + sep + "temp" + sep + "foo.bar" + sep + "README" + }, + {".." + sep + "filename.ext", ".." + sep + "filename"} + }; + + for (String[] testsWithPath : testsWithPaths) { + assertEquals(testsWithPath[1], FileUtils.removeExtension(testsWithPath[0])); // assertEquals(testsWithPaths[i][1], FileUtils.basename(testsWithPaths[i][0])); } } @@ -1002,20 +946,18 @@ public void testRemoveExtensionWithPaths() * @throws java.lang.Exception if any. */ @Test - public void testCopyDirectoryStructureWithAEmptyDirectoryStructure() - throws Exception - { - File from = new File( getTestDirectory(), "from" ); + public void testCopyDirectoryStructureWithAEmptyDirectoryStructure() throws Exception { + File from = new File(getTestDirectory(), "from"); - FileUtils.deleteDirectory( from ); + FileUtils.deleteDirectory(from); - assertTrue( from.mkdirs() ); + assertTrue(from.mkdirs()); - File to = new File( getTestDirectory(), "to" ); + File to = new File(getTestDirectory(), "to"); - assertTrue( to.mkdirs() ); + assertTrue(to.mkdirs()); - FileUtils.copyDirectoryStructure( from, to ); + FileUtils.copyDirectoryStructure(from, to); } /** @@ -1024,63 +966,61 @@ public void testCopyDirectoryStructureWithAEmptyDirectoryStructure() * @throws java.lang.Exception if any. */ @Test - public void testCopyDirectoryStructureWithAPopulatedStructure() - throws Exception - { + public void testCopyDirectoryStructureWithAPopulatedStructure() throws Exception { // Make a structure to copy - File from = new File( getTestDirectory(), "from" ); + File from = new File(getTestDirectory(), "from"); - FileUtils.deleteDirectory( from ); + FileUtils.deleteDirectory(from); - File fRoot = new File( from, "root.txt" ); + File fRoot = new File(from, "root.txt"); - File d1 = new File( from, "1" ); + File d1 = new File(from, "1"); - File d1_1 = new File( d1, "1_1" ); + File d1_1 = new File(d1, "1_1"); - File d2 = new File( from, "2" ); + File d2 = new File(from, "2"); - File f2 = new File( d2, "2.txt" ); + File f2 = new File(d2, "2.txt"); - File d2_1 = new File( d2, "2_1" ); + File d2_1 = new File(d2, "2_1"); - File f2_1 = new File( d2_1, "2_1.txt" ); + File f2_1 = new File(d2_1, "2_1.txt"); - assertTrue( from.mkdir() ); + assertTrue(from.mkdir()); - assertTrue( d1.mkdir() ); + assertTrue(d1.mkdir()); - assertTrue( d1_1.mkdir() ); + assertTrue(d1_1.mkdir()); - assertTrue( d2.mkdir() ); + assertTrue(d2.mkdir()); - assertTrue( d2_1.mkdir() ); + assertTrue(d2_1.mkdir()); - createFile( fRoot, 100 ); + createFile(fRoot, 100); - createFile( f2, 100 ); + createFile(f2, 100); - createFile( f2_1, 100 ); + createFile(f2_1, 100); - File to = new File( getTestDirectory(), "to" ); + File to = new File(getTestDirectory(), "to"); - assertTrue( to.mkdirs() ); + assertTrue(to.mkdirs()); - FileUtils.copyDirectoryStructure( from, to ); + FileUtils.copyDirectoryStructure(from, to); - checkFile( fRoot, new File( to, "root.txt" ) ); + checkFile(fRoot, new File(to, "root.txt")); - assertIsDirectory( new File( to, "1" ) ); + assertIsDirectory(new File(to, "1")); - assertIsDirectory( new File( to, "1/1_1" ) ); + assertIsDirectory(new File(to, "1/1_1")); - assertIsDirectory( new File( to, "2" ) ); + assertIsDirectory(new File(to, "2")); - assertIsDirectory( new File( to, "2/2_1" ) ); + assertIsDirectory(new File(to, "2/2_1")); - checkFile( f2, new File( to, "2/2.txt" ) ); + checkFile(f2, new File(to, "2/2.txt")); - checkFile( f2_1, new File( to, "2/2_1/2_1.txt" ) ); + checkFile(f2_1, new File(to, "2/2_1/2_1.txt")); } /** @@ -1089,83 +1029,80 @@ public void testCopyDirectoryStructureWithAPopulatedStructure() * @throws java.lang.Exception if any. */ @Test - public void testCopyDirectoryStructureIfModified() - throws Exception - { + public void testCopyDirectoryStructureIfModified() throws Exception { // Make a structure to copy - File from = new File( getTestDirectory(), "from" ); + File from = new File(getTestDirectory(), "from"); - FileUtils.deleteDirectory( from ); + FileUtils.deleteDirectory(from); - File fRoot = new File( from, "root.txt" ); + File fRoot = new File(from, "root.txt"); - File d1 = new File( from, "1" ); + File d1 = new File(from, "1"); - File d1_1 = new File( d1, "1_1" ); + File d1_1 = new File(d1, "1_1"); - File d2 = new File( from, "2" ); + File d2 = new File(from, "2"); - File f2 = new File( d2, "2.txt" ); + File f2 = new File(d2, "2.txt"); - File d2_1 = new File( d2, "2_1" ); + File d2_1 = new File(d2, "2_1"); - File f2_1 = new File( d2_1, "2_1.txt" ); + File f2_1 = new File(d2_1, "2_1.txt"); - assertTrue( from.mkdir() ); + assertTrue(from.mkdir()); - assertTrue( d1.mkdir() ); + assertTrue(d1.mkdir()); - assertTrue( d1_1.mkdir() ); + assertTrue(d1_1.mkdir()); - assertTrue( d2.mkdir() ); + assertTrue(d2.mkdir()); - assertTrue( d2_1.mkdir() ); + assertTrue(d2_1.mkdir()); - createFile( fRoot, 100 ); + createFile(fRoot, 100); - createFile( f2, 100 ); + createFile(f2, 100); - createFile( f2_1, 100 ); + createFile(f2_1, 100); - File to = new File( getTestDirectory(), "to" ); + File to = new File(getTestDirectory(), "to"); - assertTrue( to.mkdirs() ); + assertTrue(to.mkdirs()); - FileUtils.copyDirectoryStructureIfModified( from, to ); + FileUtils.copyDirectoryStructureIfModified(from, to); - File files[] = { new File( to, "root.txt" ), new File( to, "2/2.txt" ), new File( to, "2/2_1/2_1.txt" ) }; + File files[] = {new File(to, "root.txt"), new File(to, "2/2.txt"), new File(to, "2/2_1/2_1.txt")}; - long timestamps[] = { files[0].lastModified(), files[1].lastModified(), files[2].lastModified() }; + long timestamps[] = {files[0].lastModified(), files[1].lastModified(), files[2].lastModified()}; - checkFile( fRoot, files[0] ); + checkFile(fRoot, files[0]); - assertIsDirectory( new File( to, "1" ) ); + assertIsDirectory(new File(to, "1")); - assertIsDirectory( new File( to, "1/1_1" ) ); + assertIsDirectory(new File(to, "1/1_1")); - assertIsDirectory( new File( to, "2" ) ); + assertIsDirectory(new File(to, "2")); - assertIsDirectory( new File( to, "2/2_1" ) ); + assertIsDirectory(new File(to, "2/2_1")); - checkFile( f2, files[1] ); + checkFile(f2, files[1]); - checkFile( f2_1, files[2] ); + checkFile(f2_1, files[2]); - FileUtils.copyDirectoryStructureIfModified( from, to ); + FileUtils.copyDirectoryStructureIfModified(from, to); - assertTrue( timestamps[0] == files[0].lastModified(), "Unmodified file was overwritten" ); - assertTrue( timestamps[1] == files[1].lastModified(), "Unmodified file was overwritten" ); - assertTrue( timestamps[2] == files[2].lastModified(), "Unmodified file was overwritten" ); + assertTrue(timestamps[0] == files[0].lastModified(), "Unmodified file was overwritten"); + assertTrue(timestamps[1] == files[1].lastModified(), "Unmodified file was overwritten"); + assertTrue(timestamps[2] == files[2].lastModified(), "Unmodified file was overwritten"); - files[1].setLastModified( f2.lastModified() - 5000L ); + files[1].setLastModified(f2.lastModified() - 5000L); timestamps[1] = files[1].lastModified(); - FileUtils.copyDirectoryStructureIfModified( from, to ); - - assertTrue( timestamps[0] == files[0].lastModified(), "Unmodified file was overwritten" ); - assertTrue( timestamps[1] < files[1].lastModified(), "Outdated file was not overwritten" ); - assertTrue( timestamps[2] == files[2].lastModified(), "Unmodified file was overwritten" ); + FileUtils.copyDirectoryStructureIfModified(from, to); + assertTrue(timestamps[0] == files[0].lastModified(), "Unmodified file was overwritten"); + assertTrue(timestamps[1] < files[1].lastModified(), "Outdated file was not overwritten"); + assertTrue(timestamps[2] == files[2].lastModified(), "Unmodified file was overwritten"); } /** @@ -1174,43 +1111,38 @@ public void testCopyDirectoryStructureIfModified() * @throws java.lang.Exception if any. */ @Test - public void testCopyDirectoryStructureToSelf() - throws Exception - { + public void testCopyDirectoryStructureToSelf() throws Exception { // Make a structure to copy - File toFrom = new File( getTestDirectory(), "tofrom" ); + File toFrom = new File(getTestDirectory(), "tofrom"); - FileUtils.deleteDirectory( toFrom ); + FileUtils.deleteDirectory(toFrom); - File fRoot = new File( toFrom, "root.txt" ); + File fRoot = new File(toFrom, "root.txt"); - File dSub = new File( toFrom, "subdir" ); + File dSub = new File(toFrom, "subdir"); - File f1 = new File( dSub, "notempty.txt" ); + File f1 = new File(dSub, "notempty.txt"); - File dSubSub = new File( dSub, "subsubdir" ); + File dSubSub = new File(dSub, "subsubdir"); - File f2 = new File( dSubSub, "notemptytoo.txt" ); + File f2 = new File(dSubSub, "notemptytoo.txt"); - assertTrue( toFrom.mkdir() ); + assertTrue(toFrom.mkdir()); - assertTrue( dSub.mkdir() ); + assertTrue(dSub.mkdir()); - assertTrue( dSubSub.mkdir() ); + assertTrue(dSubSub.mkdir()); - createFile( fRoot, 100 ); + createFile(fRoot, 100); - createFile( f1, 100 ); + createFile(f1, 100); - createFile( f2, 100 ); + createFile(f2, 100); - try - { - FileUtils.copyDirectoryStructure( toFrom, toFrom ); - fail( "An exception must be thrown." ); - } - catch ( IOException e ) - { + try { + FileUtils.copyDirectoryStructure(toFrom, toFrom); + fail("An exception must be thrown."); + } catch (IOException e) { // expected } } @@ -1221,31 +1153,29 @@ public void testCopyDirectoryStructureToSelf() * @throws java.lang.Exception if any. */ @Test - public void testFilteredFileCopy() - throws Exception - { - File compareFile = new File( getTestDirectory(), "compare.txt" ); - FileUtils.fileWrite( compareFile.getAbsolutePath(), "UTF-8", "This is a test. Test sample text\n" ); + public void testFilteredFileCopy() throws Exception { + File compareFile = new File(getTestDirectory(), "compare.txt"); + FileUtils.fileWrite(compareFile.getAbsolutePath(), "UTF-8", "This is a test. Test sample text\n"); - File destFile = new File( getTestDirectory(), "target.txt" ); + File destFile = new File(getTestDirectory(), "target.txt"); final Properties filterProperties = new Properties(); - filterProperties.setProperty( "s", "sample text" ); + filterProperties.setProperty("s", "sample text"); // test ${token} - FileUtils.FilterWrapper[] wrappers1 = new FileUtils.FilterWrapper[] { new FileUtils.FilterWrapper() - { - public Reader getReader( Reader reader ) - { - return new InterpolationFilterReader( reader, filterProperties, "${", "}" ); + FileUtils.FilterWrapper[] wrappers1 = new FileUtils.FilterWrapper[] { + new FileUtils.FilterWrapper() { + public Reader getReader(Reader reader) { + return new InterpolationFilterReader(reader, filterProperties, "${", "}"); + } } - } }; + }; - File srcFile = new File( getTestDirectory(), "root.txt" ); - FileUtils.fileWrite( srcFile.getAbsolutePath(), "UTF-8", "This is a test. Test ${s}\n" ); + File srcFile = new File(getTestDirectory(), "root.txt"); + FileUtils.fileWrite(srcFile.getAbsolutePath(), "UTF-8", "This is a test. Test ${s}\n"); - FileUtils.copyFile( srcFile, destFile, "UTF-8", wrappers1 ); - assertTrue( FileUtils.contentEquals( compareFile, destFile ), "Files should be equal." ); + FileUtils.copyFile(srcFile, destFile, "UTF-8", wrappers1); + assertTrue(FileUtils.contentEquals(compareFile, destFile), "Files should be equal."); srcFile.delete(); destFile.delete(); @@ -1258,33 +1188,29 @@ public Reader getReader( Reader reader ) * @throws java.lang.Exception if any. */ @Test - public void testFilteredWithoutFilterAndOlderFile() - throws Exception - { + public void testFilteredWithoutFilterAndOlderFile() throws Exception { String content = "This is a test."; - File sourceFile = new File( getTestDirectory(), "source.txt" ); - FileUtils.fileWrite( sourceFile.getAbsolutePath(), "UTF-8", content ); + File sourceFile = new File(getTestDirectory(), "source.txt"); + FileUtils.fileWrite(sourceFile.getAbsolutePath(), "UTF-8", content); - File destFile = new File( getTestDirectory(), "target.txt" ); - if ( destFile.exists() ) - { + File destFile = new File(getTestDirectory(), "target.txt"); + if (destFile.exists()) { destFile.delete(); } - FileUtils.copyFile( sourceFile, destFile, null, null ); - assertEqualContent( content.getBytes( "UTF-8" ), destFile ); + FileUtils.copyFile(sourceFile, destFile, null, null); + assertEqualContent(content.getBytes("UTF-8"), destFile); String newercontent = "oldercontent"; - File olderFile = new File( getTestDirectory(), "oldersource.txt" ); + File olderFile = new File(getTestDirectory(), "oldersource.txt"); - FileUtils.fileWrite( olderFile.getAbsolutePath(), "UTF-8", newercontent ); + FileUtils.fileWrite(olderFile.getAbsolutePath(), "UTF-8", newercontent); // very old file ;-) - olderFile.setLastModified( 1 ); - destFile = new File( getTestDirectory(), "target.txt" ); - FileUtils.copyFile( olderFile, destFile, null, null ); - String destFileContent = FileUtils.fileRead( destFile, "UTF-8" ); - assertEquals( content, destFileContent ); - + olderFile.setLastModified(1); + destFile = new File(getTestDirectory(), "target.txt"); + FileUtils.copyFile(olderFile, destFile, null, null); + String destFileContent = FileUtils.fileRead(destFile, "UTF-8"); + assertEquals(content, destFileContent); } /** @@ -1293,33 +1219,29 @@ public void testFilteredWithoutFilterAndOlderFile() * @throws java.lang.Exception if any. */ @Test - public void testFilteredWithoutFilterAndOlderFileAndOverwrite() - throws Exception - { + public void testFilteredWithoutFilterAndOlderFileAndOverwrite() throws Exception { String content = "This is a test."; - File sourceFile = new File( getTestDirectory(), "source.txt" ); - FileUtils.fileWrite( sourceFile.getAbsolutePath(), "UTF-8", content ); + File sourceFile = new File(getTestDirectory(), "source.txt"); + FileUtils.fileWrite(sourceFile.getAbsolutePath(), "UTF-8", content); - File destFile = new File( getTestDirectory(), "target.txt" ); - if ( destFile.exists() ) - { + File destFile = new File(getTestDirectory(), "target.txt"); + if (destFile.exists()) { destFile.delete(); } - FileUtils.copyFile( sourceFile, destFile, null, null ); - assertEqualContent( content.getBytes( "UTF-8" ), destFile ); + FileUtils.copyFile(sourceFile, destFile, null, null); + assertEqualContent(content.getBytes("UTF-8"), destFile); String newercontent = "oldercontent"; - File olderFile = new File( getTestDirectory(), "oldersource.txt" ); + File olderFile = new File(getTestDirectory(), "oldersource.txt"); - FileUtils.fileWrite( olderFile.getAbsolutePath(), "UTF-8", newercontent ); + FileUtils.fileWrite(olderFile.getAbsolutePath(), "UTF-8", newercontent); // very old file ;-) - olderFile.setLastModified( 1 ); - destFile = new File( getTestDirectory(), "target.txt" ); - FileUtils.copyFile( olderFile, destFile, null, null, true ); - String destFileContent = FileUtils.fileRead( destFile, "UTF-8" ); - assertEquals( newercontent, destFileContent ); - + olderFile.setLastModified(1); + destFile = new File(getTestDirectory(), "target.txt"); + FileUtils.copyFile(olderFile, destFile, null, null, true); + String destFileContent = FileUtils.fileRead(destFile, "UTF-8"); + assertEquals(newercontent, destFileContent); } /** @@ -1328,10 +1250,8 @@ public void testFilteredWithoutFilterAndOlderFileAndOverwrite() * @throws java.io.IOException if any. */ @Test - public void testFileRead() - throws IOException - { - File testFile = new File( getTestDirectory(), "testFileRead.txt" ); + public void testFileRead() throws IOException { + File testFile = new File(getTestDirectory(), "testFileRead.txt"); String testFileName = testFile.getAbsolutePath(); /* * NOTE: The method under test uses the JVM's default encoding which by its nature varies from machine to @@ -1341,18 +1261,15 @@ public void testFileRead() */ String testString = "Only US-ASCII characters here, see comment above!"; Writer writer = null; - try - { - writer = new OutputStreamWriter( Files.newOutputStream( testFile.toPath() ) ); - writer.write( testString ); + try { + writer = new OutputStreamWriter(Files.newOutputStream(testFile.toPath())); + writer.write(testString); writer.flush(); + } finally { + IOUtil.close(writer); } - finally - { - IOUtil.close( writer ); - } - assertEquals( testString, FileUtils.fileRead( testFile ), "testString should be equal" ); - assertEquals( testString, FileUtils.fileRead( testFileName ), "testString should be equal" ); + assertEquals(testString, FileUtils.fileRead(testFile), "testString should be equal"); + assertEquals(testString, FileUtils.fileRead(testFileName), "testString should be equal"); testFile.delete(); } @@ -1362,27 +1279,22 @@ public void testFileRead() * @throws java.io.IOException if any. */ @Test - public void testFileReadWithEncoding() - throws IOException - { + public void testFileReadWithEncoding() throws IOException { String encoding = "UTF-8"; - File testFile = new File( getTestDirectory(), "testFileRead.txt" ); + File testFile = new File(getTestDirectory(), "testFileRead.txt"); String testFileName = testFile.getAbsolutePath(); // unicode escaped Japanese hiragana, "aiueo" + Umlaut a String testString = "\u3042\u3044\u3046\u3048\u304a\u00e4"; Writer writer = null; - try - { - writer = new OutputStreamWriter( Files.newOutputStream( testFile.toPath() ), encoding ); - writer.write( testString ); + try { + writer = new OutputStreamWriter(Files.newOutputStream(testFile.toPath()), encoding); + writer.write(testString); writer.flush(); + } finally { + IOUtil.close(writer); } - finally - { - IOUtil.close( writer ); - } - assertEquals( testString, FileUtils.fileRead( testFile, "UTF-8" ), "testString should be equal" ); - assertEquals( testString, FileUtils.fileRead( testFileName, "UTF-8" ), "testString should be equal" ); + assertEquals(testString, FileUtils.fileRead(testFile, "UTF-8"), "testString should be equal"); + assertEquals(testString, FileUtils.fileRead(testFileName, "UTF-8"), "testString should be equal"); testFile.delete(); } @@ -1392,27 +1304,22 @@ public void testFileReadWithEncoding() * @throws java.io.IOException if any. */ @Test - public void testFileAppend() - throws IOException - { + public void testFileAppend() throws IOException { String baseString = "abc"; - File testFile = new File( getTestDirectory(), "testFileAppend.txt" ); + File testFile = new File(getTestDirectory(), "testFileAppend.txt"); String testFileName = testFile.getAbsolutePath(); Writer writer = null; - try - { - writer = new OutputStreamWriter( Files.newOutputStream( testFile.toPath() ) ); - writer.write( baseString ); + try { + writer = new OutputStreamWriter(Files.newOutputStream(testFile.toPath())); + writer.write(baseString); writer.flush(); - } - finally - { - IOUtil.close( writer ); + } finally { + IOUtil.close(writer); } // unicode escaped Japanese hiragana, "aiueo" + Umlaut a String testString = "\u3042\u3044\u3046\u3048\u304a\u00e4"; - FileUtils.fileAppend( testFileName, testString ); - assertEqualContent( ( baseString + testString ).getBytes(), testFile ); + FileUtils.fileAppend(testFileName, testString); + assertEqualContent((baseString + testString).getBytes(), testFile); testFile.delete(); } @@ -1422,28 +1329,23 @@ public void testFileAppend() * @throws java.io.IOException if any. */ @Test - public void testFileAppendWithEncoding() - throws IOException - { + public void testFileAppendWithEncoding() throws IOException { String baseString = "abc"; String encoding = "UTF-8"; - File testFile = new File( getTestDirectory(), "testFileAppend.txt" ); + File testFile = new File(getTestDirectory(), "testFileAppend.txt"); String testFileName = testFile.getAbsolutePath(); Writer writer = null; - try - { - writer = new OutputStreamWriter( Files.newOutputStream( testFile.toPath() ), encoding ); - writer.write( baseString ); + try { + writer = new OutputStreamWriter(Files.newOutputStream(testFile.toPath()), encoding); + writer.write(baseString); writer.flush(); - } - finally - { - IOUtil.close( writer ); + } finally { + IOUtil.close(writer); } // unicode escaped Japanese hiragana, "aiueo" + Umlaut a String testString = "\u3042\u3044\u3046\u3048\u304a\u00e4"; - FileUtils.fileAppend( testFileName, encoding, testString ); - assertEqualContent( ( baseString + testString ).getBytes( encoding ), testFile ); + FileUtils.fileAppend(testFileName, encoding, testString); + assertEqualContent((baseString + testString).getBytes(encoding), testFile); testFile.delete(); } @@ -1453,15 +1355,13 @@ public void testFileAppendWithEncoding() * @throws java.io.IOException if any. */ @Test - public void testFileWrite() - throws IOException - { - File testFile = new File( getTestDirectory(), "testFileWrite.txt" ); + public void testFileWrite() throws IOException { + File testFile = new File(getTestDirectory(), "testFileWrite.txt"); String testFileName = testFile.getAbsolutePath(); // unicode escaped Japanese hiragana, "aiueo" + Umlaut a String testString = "\u3042\u3044\u3046\u3048\u304a\u00e4"; - FileUtils.fileWrite( testFileName, testString ); - assertEqualContent( testString.getBytes(), testFile ); + FileUtils.fileWrite(testFileName, testString); + assertEqualContent(testString.getBytes(), testFile); testFile.delete(); } @@ -1471,16 +1371,14 @@ public void testFileWrite() * @throws java.io.IOException if any. */ @Test - public void testFileWriteWithEncoding() - throws IOException - { + public void testFileWriteWithEncoding() throws IOException { String encoding = "UTF-8"; - File testFile = new File( getTestDirectory(), "testFileWrite.txt" ); + File testFile = new File(getTestDirectory(), "testFileWrite.txt"); String testFileName = testFile.getAbsolutePath(); // unicode escaped Japanese hiragana, "aiueo" + Umlaut a String testString = "\u3042\u3044\u3046\u3048\u304a\u00e4"; - FileUtils.fileWrite( testFileName, encoding, testString ); - assertEqualContent( testString.getBytes( encoding ), testFile ); + FileUtils.fileWrite(testFileName, encoding, testString); + assertEqualContent(testString.getBytes(encoding), testFile); testFile.delete(); } @@ -1493,39 +1391,34 @@ public void testFileWriteWithEncoding() * @see Sun bug id=6481955 */ @Test - public void testDeleteLongPathOnWindows() - throws Exception - { - if ( !Os.isFamily( Os.FAMILY_WINDOWS ) ) - { + public void testDeleteLongPathOnWindows() throws Exception { + if (!Os.isFamily(Os.FAMILY_WINDOWS)) { return; } - File a = new File( getTestDirectory(), "longpath" ); + File a = new File(getTestDirectory(), "longpath"); a.mkdir(); - File a1 = new File( a, "a" ); + File a1 = new File(a, "a"); a1.mkdir(); - StringBuilder path = new StringBuilder( "" ); - for ( int i = 0; i < 100; i++ ) - { - path.append( "../a/" ); + StringBuilder path = new StringBuilder(""); + for (int i = 0; i < 100; i++) { + path.append("../a/"); } - File f = new File( a1, path.toString() + "test.txt" ); + File f = new File(a1, path.toString() + "test.txt"); - InputStream is = new ByteArrayInputStream( "Blabla".getBytes( "UTF-8" ) ); - OutputStream os = Files.newOutputStream( f.getCanonicalFile().toPath() ); - IOUtil.copy( is, os ); - IOUtil.close( is ); - IOUtil.close( os ); + InputStream is = new ByteArrayInputStream("Blabla".getBytes("UTF-8")); + OutputStream os = Files.newOutputStream(f.getCanonicalFile().toPath()); + IOUtil.copy(is, os); + IOUtil.close(is); + IOUtil.close(os); - FileUtils.forceDelete( f ); + FileUtils.forceDelete(f); - File f1 = new File( a1, "test.txt" ); - if ( f1.exists() ) - { - throw new Exception( "Unable to delete the file :" + f1.getAbsolutePath() ); + File f1 = new File(a1, "test.txt"); + if (f1.exists()) { + throw new Exception("Unable to delete the file :" + f1.getAbsolutePath()); } } @@ -1536,20 +1429,18 @@ public void testDeleteLongPathOnWindows() * @throws java.io.IOException if any. */ @Test - public void testCopyFileOnSameFile() - throws IOException - { + public void testCopyFileOnSameFile() throws IOException { String content = "ggrgreeeeeeeeeeeeeeeeeeeeeeeoierjgioejrgiojregioejrgufcdxivbsdibgfizgerfyaezgv!zeez"; - final File theFile = File.createTempFile( "test", ".txt" ); + final File theFile = File.createTempFile("test", ".txt"); theFile.deleteOnExit(); - FileUtils.fileAppend( theFile.getAbsolutePath(), content ); + FileUtils.fileAppend(theFile.getAbsolutePath(), content); - assertTrue( theFile.length() > 0 ); + assertTrue(theFile.length() > 0); // Now copy file over itself - FileUtils.copyFile( theFile, theFile ); + FileUtils.copyFile(theFile, theFile); // This should not fail - assertTrue( theFile.length() > 0 ); + assertTrue(theFile.length() > 0); } /** @@ -1558,22 +1449,26 @@ public void testCopyFileOnSameFile() * @throws java.lang.Exception if any. */ @Test - public void testExtensions() - throws Exception - { - - String[][] values = - { { "fry.frozen", "frozen" }, { "fry", "" }, { "fry.", "" }, { "/turanga/leela/meets.fry", "fry" }, - { "/3000/turanga.leela.fry/zoidberg.helps", "helps" }, { "/3000/turanga.leela.fry/zoidberg.", "" }, - { "/3000/turanga.leela.fry/zoidberg", "" }, { "/3000/leela.fry.bender/", "" }, - { "/3000/leela.fry.bdner/.", "" }, { "/3000/leela.fry.bdner/foo.bar.txt", "txt" } }; - - for ( int i = 0; i < values.length; i++ ) - { - String fileName = values[i][0].replace( '/', File.separatorChar ); + public void testExtensions() throws Exception { + + String[][] values = { + {"fry.frozen", "frozen"}, + {"fry", ""}, + {"fry.", ""}, + {"/turanga/leela/meets.fry", "fry"}, + {"/3000/turanga.leela.fry/zoidberg.helps", "helps"}, + {"/3000/turanga.leela.fry/zoidberg.", ""}, + {"/3000/turanga.leela.fry/zoidberg", ""}, + {"/3000/leela.fry.bender/", ""}, + {"/3000/leela.fry.bdner/.", ""}, + {"/3000/leela.fry.bdner/foo.bar.txt", "txt"} + }; + + for (int i = 0; i < values.length; i++) { + String fileName = values[i][0].replace('/', File.separatorChar); String ext = values[i][1]; - String computed = FileUtils.extension( fileName ); - assertEquals( ext, computed, "case [" + i + "]:" + fileName + " -> " + ext + ", computed : " + computed ); + String computed = FileUtils.extension(fileName); + assertEquals(ext, computed, "case [" + i + "]:" + fileName + " -> " + ext + ", computed : " + computed); } } @@ -1583,28 +1478,25 @@ public void testExtensions() * @throws java.lang.Exception if any. */ @Test - public void testIsValidWindowsFileName() - throws Exception - { - File f = new File( "c:\test" ); - assertTrue( FileUtils.isValidWindowsFileName( f ) ); - - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - f = new File( "c:\test\bla:bla" ); - assertFalse( FileUtils.isValidWindowsFileName( f ) ); - f = new File( "c:\test\bla*bla" ); - assertFalse( FileUtils.isValidWindowsFileName( f ) ); - f = new File( "c:\test\bla\"bla" ); - assertFalse( FileUtils.isValidWindowsFileName( f ) ); - f = new File( "c:\test\blabla" ); - assertFalse( FileUtils.isValidWindowsFileName( f ) ); - f = new File( "c:\test\bla|bla" ); - assertFalse( FileUtils.isValidWindowsFileName( f ) ); - f = new File( "c:\test\bla*bla" ); - assertFalse( FileUtils.isValidWindowsFileName( f ) ); + public void testIsValidWindowsFileName() throws Exception { + File f = new File("c:\test"); + assertTrue(FileUtils.isValidWindowsFileName(f)); + + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + f = new File("c:\test\bla:bla"); + assertFalse(FileUtils.isValidWindowsFileName(f)); + f = new File("c:\test\bla*bla"); + assertFalse(FileUtils.isValidWindowsFileName(f)); + f = new File("c:\test\bla\"bla"); + assertFalse(FileUtils.isValidWindowsFileName(f)); + f = new File("c:\test\blabla"); + assertFalse(FileUtils.isValidWindowsFileName(f)); + f = new File("c:\test\bla|bla"); + assertFalse(FileUtils.isValidWindowsFileName(f)); + f = new File("c:\test\bla*bla"); + assertFalse(FileUtils.isValidWindowsFileName(f)); } } @@ -1614,25 +1506,20 @@ public void testIsValidWindowsFileName() * @throws java.lang.Exception if any. */ @Test - public void testDeleteDirectoryWithValidFileSymlink() - throws Exception - { - File symlinkTarget = new File( getTestDirectory(), "fileSymlinkTarget" ); - createFile( symlinkTarget, 1 ); - File symlink = new File( getTestDirectory(), "fileSymlink" ); - createSymlink( symlink, symlinkTarget ); - try - { - FileUtils.deleteDirectory( getTestDirectory() ); - } - finally - { + public void testDeleteDirectoryWithValidFileSymlink() throws Exception { + File symlinkTarget = new File(getTestDirectory(), "fileSymlinkTarget"); + createFile(symlinkTarget, 1); + File symlink = new File(getTestDirectory(), "fileSymlink"); + createSymlink(symlink, symlinkTarget); + try { + FileUtils.deleteDirectory(getTestDirectory()); + } finally { /* * Ensure to cleanup problematic symlink or "mvn clean" will fail */ symlink.delete(); } - assertTrue( !getTestDirectory().exists(), "Failed to delete test directory" ); + assertTrue(!getTestDirectory().exists(), "Failed to delete test directory"); } /** @@ -1641,25 +1528,20 @@ public void testDeleteDirectoryWithValidFileSymlink() * @throws java.lang.Exception if any. */ @Test - public void testDeleteDirectoryWithValidDirSymlink() - throws Exception - { - File symlinkTarget = new File( getTestDirectory(), "dirSymlinkTarget" ); + public void testDeleteDirectoryWithValidDirSymlink() throws Exception { + File symlinkTarget = new File(getTestDirectory(), "dirSymlinkTarget"); symlinkTarget.mkdir(); - File symlink = new File( getTestDirectory(), "dirSymlink" ); - createSymlink( symlink, symlinkTarget ); - try - { - FileUtils.deleteDirectory( getTestDirectory() ); - } - finally - { + File symlink = new File(getTestDirectory(), "dirSymlink"); + createSymlink(symlink, symlinkTarget); + try { + FileUtils.deleteDirectory(getTestDirectory()); + } finally { /* * Ensure to cleanup problematic symlink or "mvn clean" will fail */ symlink.delete(); } - assertTrue( !getTestDirectory().exists(), "Failed to delete test directory" ); + assertTrue(!getTestDirectory().exists(), "Failed to delete test directory"); } /** @@ -1668,24 +1550,19 @@ public void testDeleteDirectoryWithValidDirSymlink() * @throws java.lang.Exception if any. */ @Test - public void testDeleteDirectoryWithDanglingSymlink() - throws Exception - { - File symlinkTarget = new File( getTestDirectory(), "missingSymlinkTarget" ); - File symlink = new File( getTestDirectory(), "danglingSymlink" ); - createSymlink( symlink, symlinkTarget ); - try - { - FileUtils.deleteDirectory( getTestDirectory() ); - } - finally - { + public void testDeleteDirectoryWithDanglingSymlink() throws Exception { + File symlinkTarget = new File(getTestDirectory(), "missingSymlinkTarget"); + File symlink = new File(getTestDirectory(), "danglingSymlink"); + createSymlink(symlink, symlinkTarget); + try { + FileUtils.deleteDirectory(getTestDirectory()); + } finally { /* * Ensure to cleanup problematic symlink or "mvn clean" will fail */ symlink.delete(); } - assertTrue( !getTestDirectory().exists(), "Failed to delete test directory" ); + assertTrue(!getTestDirectory().exists(), "Failed to delete test directory"); } /** @@ -1694,38 +1571,30 @@ public void testDeleteDirectoryWithDanglingSymlink() * @throws java.lang.Exception if any. */ @Test - public void testcopyDirectoryLayoutWithExcludesIncludes() - throws Exception - { - File destination = new File( "target", "copyDirectoryStructureWithExcludesIncludes" ); - if ( !destination.exists() ) - { + public void testcopyDirectoryLayoutWithExcludesIncludes() throws Exception { + File destination = new File("target", "copyDirectoryStructureWithExcludesIncludes"); + if (!destination.exists()) { destination.mkdirs(); } - FileUtils.cleanDirectory( destination ); + FileUtils.cleanDirectory(destination); - File source = new File( "src/test/resources/dir-layout-copy" ); + File source = new File("src/test/resources/dir-layout-copy"); - FileUtils.copyDirectoryLayout( source, destination, null, null ); + FileUtils.copyDirectoryLayout(source, destination, null, null); - assertTrue( destination.exists() ); + assertTrue(destination.exists()); File[] childs = destination.listFiles(); - assertEquals( 2, childs.length ); + assertEquals(2, childs.length); - for ( File current : childs ) - { - if ( current.getName().endsWith( "empty-dir" ) || current.getName().endsWith( "dir1" ) ) - { - if ( current.getName().endsWith( "dir1" ) ) - { - assertEquals( 1, current.listFiles().length ); - assertTrue( current.listFiles()[0].getName().endsWith( "dir2" ) ); + for (File current : childs) { + if (current.getName().endsWith("empty-dir") || current.getName().endsWith("dir1")) { + if (current.getName().endsWith("dir1")) { + assertEquals(1, current.listFiles().length); + assertTrue(current.listFiles()[0].getName().endsWith("dir2")); } - } - else - { - fail( "not empty-dir or dir1" ); + } else { + fail("not empty-dir or dir1"); } } } @@ -1736,14 +1605,11 @@ public void testcopyDirectoryLayoutWithExcludesIncludes() * @throws java.lang.Exception if any */ @Test - public void testCreateTempFile() - throws Exception - { - File last = FileUtils.createTempFile( "unique", ".tmp", null ); - for ( int i = 0; i < 10; i++ ) - { - File current = FileUtils.createTempFile( "unique", ".tmp", null ); - assertTrue( !current.getName().equals( last.getName() ), "No unique name: " + current.getName() ); + public void testCreateTempFile() throws Exception { + File last = FileUtils.createTempFile("unique", ".tmp", null); + for (int i = 0; i < 10; i++) { + File current = FileUtils.createTempFile("unique", ".tmp", null); + assertTrue(!current.getName().equals(last.getName()), "No unique name: " + current.getName()); last = current; } } @@ -1754,14 +1620,11 @@ public void testCreateTempFile() * @param time The amount of time to sleep * @throws InterruptedException */ - private void reallySleep( int time ) - throws InterruptedException - { + private void reallySleep(int time) throws InterruptedException { long until = System.currentTimeMillis() + time; - Thread.sleep( time ); - while ( System.currentTimeMillis() < until ) - { - Thread.sleep( time / 10 ); + Thread.sleep(time); + while (System.currentTimeMillis() < until) { + Thread.sleep(time / 10); Thread.yield(); } } diff --git a/src/test/java/org/codehaus/plexus/util/IOUtilTest.java b/src/test/java/org/codehaus/plexus/util/IOUtilTest.java index 83d2ce6e..2f73453f 100644 --- a/src/test/java/org/codehaus/plexus/util/IOUtilTest.java +++ b/src/test/java/org/codehaus/plexus/util/IOUtilTest.java @@ -16,11 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -36,6 +31,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + /** * This is used to test IOUtil for correctness. The following checks are performed: *
        @@ -51,8 +51,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public final class IOUtilTest -{ +public final class IOUtilTest { /* * Note: this is not particularly beautiful code. A better way to check for flush and close status would be to * implement "trojan horse" wrapper implementations of the various stream classes, which set a flag when relevant @@ -69,68 +68,54 @@ public final class IOUtilTest *

        setUp.

        */ @BeforeEach - public void setUp() - { - try - { - testDirectory = ( new File( "target/test/io/" ) ).getAbsoluteFile(); - if ( !testDirectory.exists() ) - { + public void setUp() { + try { + testDirectory = (new File("target/test/io/")).getAbsoluteFile(); + if (!testDirectory.exists()) { testDirectory.mkdirs(); } - testFile = new File( testDirectory, "file2-test.txt" ); + testFile = new File(testDirectory, "file2-test.txt"); - createFile( testFile, FILE_SIZE ); - } - catch ( IOException ioe ) - { - throw new RuntimeException( "Can't run this test because environment could not be built" ); + createFile(testFile, FILE_SIZE); + } catch (IOException ioe) { + throw new RuntimeException("Can't run this test because environment could not be built"); } } /** *

        tearDown.

        */ - public void tearDown() - { + public void tearDown() { testFile.delete(); testDirectory.delete(); } - private void createFile( File file, long size ) - throws IOException - { - BufferedOutputStream output = new BufferedOutputStream( Files.newOutputStream( file.toPath() ) ); + private void createFile(File file, long size) throws IOException { + BufferedOutputStream output = new BufferedOutputStream(Files.newOutputStream(file.toPath())); - for ( int i = 0; i < size; i++ ) - { - output.write( (byte) ( i % 128 ) ); // nice varied byte pattern compatible with Readers and Writers + for (int i = 0; i < size; i++) { + output.write((byte) (i % 128)); // nice varied byte pattern compatible with Readers and Writers } output.close(); } /** Assert that the contents of two byte arrays are the same. */ - private void assertEqualContent( byte[] b0, byte[] b1 ) - { - assertTrue( Arrays.equals( b0, b1 ), "Content not equal according to java.util.Arrays#equals()" ); + private void assertEqualContent(byte[] b0, byte[] b1) { + assertTrue(Arrays.equals(b0, b1), "Content not equal according to java.util.Arrays#equals()"); } /** Assert that the content of two files is the same. */ - private void assertEqualContent( File f0, File f1 ) - throws IOException - { - byte[] buf0 = Files.readAllBytes( f0.toPath() ); - byte[] buf1 = Files.readAllBytes( f1.toPath() ); - assertArrayEquals( buf0, buf1, "The files " + f0 + " and " + f1 + " have different content" ); + private void assertEqualContent(File f0, File f1) throws IOException { + byte[] buf0 = Files.readAllBytes(f0.toPath()); + byte[] buf1 = Files.readAllBytes(f1.toPath()); + assertArrayEquals(buf0, buf1, "The files " + f0 + " and " + f1 + " have different content"); } /** Assert that the content of a file is equal to that in a byte[]. */ - private void assertEqualContent( byte[] b0, File file ) - throws IOException - { - byte[] b1 = Files.readAllBytes( file.toPath() ); + private void assertEqualContent(byte[] b0, File file) throws IOException { + byte[] b1 = Files.readAllBytes(file.toPath()); assertArrayEquals(b0, b1, "Content differs"); } @@ -140,22 +125,20 @@ private void assertEqualContent( byte[] b0, File file ) * @throws java.lang.Exception if any. */ @Test - public void testInputStreamToOutputStream() - throws Exception - { - File destination = newFile( "copy1.txt" ); - InputStream fin = Files.newInputStream( testFile.toPath() ); - OutputStream fout = Files.newOutputStream( destination.toPath() ); - - IOUtil.copy( fin, fout ); - assertTrue( fin.available() == 0, "Not all bytes were read" ); + public void testInputStreamToOutputStream() throws Exception { + File destination = newFile("copy1.txt"); + InputStream fin = Files.newInputStream(testFile.toPath()); + OutputStream fout = Files.newOutputStream(destination.toPath()); + + IOUtil.copy(fin, fout); + assertTrue(fin.available() == 0, "Not all bytes were read"); fout.flush(); - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } /** @@ -164,23 +147,21 @@ public void testInputStreamToOutputStream() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testInputStreamToWriter() - throws Exception - { - File destination = newFile( "copy2.txt" ); - InputStream fin = Files.newInputStream( testFile.toPath() ); - Writer fout = Files.newBufferedWriter( destination.toPath() ); + public void testInputStreamToWriter() throws Exception { + File destination = newFile("copy2.txt"); + InputStream fin = Files.newInputStream(testFile.toPath()); + Writer fout = Files.newBufferedWriter(destination.toPath()); - IOUtil.copy( fin, fout ); + IOUtil.copy(fin, fout); - assertTrue( fin.available() == 0, "Not all bytes were read" ); + assertTrue(fin.available() == 0, "Not all bytes were read"); fout.flush(); - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } /** @@ -189,14 +170,12 @@ public void testInputStreamToWriter() * @throws java.lang.Exception if any. */ @Test - public void testInputStreamToString() - throws Exception - { - InputStream fin = Files.newInputStream( testFile.toPath() ); - String out = IOUtil.toString( fin ); - assertNotNull( out ); - assertTrue( fin.available() == 0, "Not all bytes were read" ); - assertTrue( out.length() == FILE_SIZE, "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE ); + public void testInputStreamToString() throws Exception { + InputStream fin = Files.newInputStream(testFile.toPath()); + String out = IOUtil.toString(fin); + assertNotNull(out); + assertTrue(fin.available() == 0, "Not all bytes were read"); + assertTrue(out.length() == FILE_SIZE, "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE); fin.close(); } @@ -206,13 +185,11 @@ public void testInputStreamToString() * @throws java.lang.Exception if any. */ @Test - public void testReaderToOutputStream() - throws Exception - { - File destination = newFile( "copy3.txt" ); - Reader fin = Files.newBufferedReader( testFile.toPath() ); - OutputStream fout = Files.newOutputStream( destination.toPath() ); - IOUtil.copy( fin, fout ); + public void testReaderToOutputStream() throws Exception { + File destination = newFile("copy3.txt"); + Reader fin = Files.newBufferedReader(testFile.toPath()); + OutputStream fout = Files.newOutputStream(destination.toPath()); + IOUtil.copy(fin, fout); // Note: this method *does* flush. It is equivalent to: // OutputStreamWriter _out = new OutputStreamWriter(fout); // IOUtil.copy( fin, _out, 4096 ); // copy( Reader, Writer, int ); @@ -220,11 +197,11 @@ public void testReaderToOutputStream() // out = fout; // Note: rely on the method to flush - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } /** @@ -233,20 +210,18 @@ public void testReaderToOutputStream() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testReaderToWriter() - throws Exception - { - File destination = newFile( "copy4.txt" ); - Reader fin = Files.newBufferedReader( testFile.toPath() ); - Writer fout = Files.newBufferedWriter( destination.toPath() ); - IOUtil.copy( fin, fout ); + public void testReaderToWriter() throws Exception { + File destination = newFile("copy4.txt"); + Reader fin = Files.newBufferedReader(testFile.toPath()); + Writer fout = Files.newBufferedWriter(destination.toPath()); + IOUtil.copy(fin, fout); fout.flush(); - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } /** @@ -255,13 +230,11 @@ public void testReaderToWriter() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testReaderToString() - throws Exception - { - Reader fin = Files.newBufferedReader( testFile.toPath() ); - String out = IOUtil.toString( fin ); - assertNotNull( out ); - assertTrue( out.length() == FILE_SIZE, "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE ); + public void testReaderToString() throws Exception { + Reader fin = Files.newBufferedReader(testFile.toPath()); + String out = IOUtil.toString(fin); + assertNotNull(out); + assertTrue(out.length() == FILE_SIZE, "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE); fin.close(); } @@ -271,15 +244,13 @@ public void testReaderToString() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testStringToOutputStream() - throws Exception - { - File destination = newFile( "copy5.txt" ); - Reader fin = Files.newBufferedReader( testFile.toPath() ); + public void testStringToOutputStream() throws Exception { + File destination = newFile("copy5.txt"); + Reader fin = Files.newBufferedReader(testFile.toPath()); // Create our String. Rely on testReaderToString() to make sure this is valid. - String str = IOUtil.toString( fin ); - OutputStream fout = Files.newOutputStream( destination.toPath() ); - IOUtil.copy( str, fout ); + String str = IOUtil.toString(fin); + OutputStream fout = Files.newOutputStream(destination.toPath()); + IOUtil.copy(str, fout); // Note: this method *does* flush. It is equivalent to: // OutputStreamWriter _out = new OutputStreamWriter(fout); // IOUtil.copy( str, _out, 4096 ); // copy( Reader, Writer, int ); @@ -287,11 +258,11 @@ public void testStringToOutputStream() // out = fout; // note: we don't flush here; this IOUtils method does it for us - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } /** @@ -300,23 +271,21 @@ public void testStringToOutputStream() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testStringToWriter() - throws Exception - { - File destination = newFile( "copy6.txt" ); - Reader fin = Files.newBufferedReader( testFile.toPath() ); + public void testStringToWriter() throws Exception { + File destination = newFile("copy6.txt"); + Reader fin = Files.newBufferedReader(testFile.toPath()); // Create our String. Rely on testReaderToString() to make sure this is valid. - String str = IOUtil.toString( fin ); - Writer fout = Files.newBufferedWriter( destination.toPath() ); - IOUtil.copy( str, fout ); + String str = IOUtil.toString(fin); + Writer fout = Files.newBufferedWriter(destination.toPath()); + IOUtil.copy(str, fout); fout.flush(); - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } /** @@ -325,15 +294,13 @@ public void testStringToWriter() * @throws java.lang.Exception if any. */ @Test - public void testInputStreamToByteArray() - throws Exception - { - InputStream fin = Files.newInputStream( testFile.toPath() ); - byte[] out = IOUtil.toByteArray( fin ); - assertNotNull( out ); - assertTrue( fin.available() == 0, "Not all bytes were read" ); - assertTrue( out.length == FILE_SIZE, "Wrong output size: out.length=" + out.length + "!=" + FILE_SIZE ); - assertEqualContent( out, testFile ); + public void testInputStreamToByteArray() throws Exception { + InputStream fin = Files.newInputStream(testFile.toPath()); + byte[] out = IOUtil.toByteArray(fin); + assertNotNull(out); + assertTrue(fin.available() == 0, "Not all bytes were read"); + assertTrue(out.length == FILE_SIZE, "Wrong output size: out.length=" + out.length + "!=" + FILE_SIZE); + assertEqualContent(out, testFile); fin.close(); } @@ -343,16 +310,14 @@ public void testInputStreamToByteArray() * @throws java.lang.Exception if any. */ @Test - public void testStringToByteArray() - throws Exception - { - Reader fin = Files.newBufferedReader( testFile.toPath() ); + public void testStringToByteArray() throws Exception { + Reader fin = Files.newBufferedReader(testFile.toPath()); // Create our String. Rely on testReaderToString() to make sure this is valid. - String str = IOUtil.toString( fin ); + String str = IOUtil.toString(fin); - byte[] out = IOUtil.toByteArray( str ); - assertEqualContent( str.getBytes(), out ); + byte[] out = IOUtil.toByteArray(str); + assertEqualContent(str.getBytes(), out); fin.close(); } @@ -362,22 +327,20 @@ public void testStringToByteArray() * @throws java.lang.Exception if any. */ @Test - public void testByteArrayToWriter() - throws Exception - { - File destination = newFile( "copy7.txt" ); - Writer fout = Files.newBufferedWriter( destination.toPath() ); - InputStream fin = Files.newInputStream( testFile.toPath() ); + public void testByteArrayToWriter() throws Exception { + File destination = newFile("copy7.txt"); + Writer fout = Files.newBufferedWriter(destination.toPath()); + InputStream fin = Files.newInputStream(testFile.toPath()); // Create our byte[]. Rely on testInputStreamToByteArray() to make sure this is valid. - byte[] in = IOUtil.toByteArray( fin ); - IOUtil.copy( in, fout ); + byte[] in = IOUtil.toByteArray(fin); + IOUtil.copy(in, fout); fout.flush(); - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } /** @@ -386,14 +349,12 @@ public void testByteArrayToWriter() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testByteArrayToString() - throws Exception - { - InputStream fin = Files.newInputStream( testFile.toPath() ); - byte[] in = IOUtil.toByteArray( fin ); + public void testByteArrayToString() throws Exception { + InputStream fin = Files.newInputStream(testFile.toPath()); + byte[] in = IOUtil.toByteArray(fin); // Create our byte[]. Rely on testInputStreamToByteArray() to make sure this is valid. - String str = IOUtil.toString( in ); - assertEqualContent( in, str.getBytes() ); + String str = IOUtil.toString(in); + assertEqualContent(in, str.getBytes()); fin.close(); } @@ -403,25 +364,23 @@ public void testByteArrayToString() * @throws java.lang.Exception if any. */ @Test - public void testByteArrayToOutputStream() - throws Exception - { - File destination = newFile( "copy8.txt" ); - OutputStream fout = Files.newOutputStream( destination.toPath() ); - InputStream fin = Files.newInputStream( testFile.toPath() ); + public void testByteArrayToOutputStream() throws Exception { + File destination = newFile("copy8.txt"); + OutputStream fout = Files.newOutputStream(destination.toPath()); + InputStream fin = Files.newInputStream(testFile.toPath()); // Create our byte[]. Rely on testInputStreamToByteArray() to make sure this is valid. - byte[] in = IOUtil.toByteArray( fin ); + byte[] in = IOUtil.toByteArray(fin); - IOUtil.copy( in, fout ); + IOUtil.copy(in, fout); fout.flush(); - checkFile( destination ); - checkWrite( fout ); + checkFile(destination); + checkWrite(fout); fout.close(); fin.close(); - deleteFile( destination ); + deleteFile(destination); } // ---------------------------------------------------------------------- @@ -434,16 +393,14 @@ public void testByteArrayToOutputStream() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testCloseInputStream() - throws Exception - { - IOUtil.close( (InputStream) null ); + public void testCloseInputStream() throws Exception { + IOUtil.close((InputStream) null); TestInputStream inputStream = new TestInputStream(); - IOUtil.close( inputStream ); + IOUtil.close(inputStream); - assertTrue( inputStream.closed ); + assertTrue(inputStream.closed); } /** @@ -452,16 +409,14 @@ public void testCloseInputStream() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testCloseOutputStream() - throws Exception - { - IOUtil.close( (OutputStream) null ); + public void testCloseOutputStream() throws Exception { + IOUtil.close((OutputStream) null); TestOutputStream outputStream = new TestOutputStream(); - IOUtil.close( outputStream ); + IOUtil.close(outputStream); - assertTrue( outputStream.closed ); + assertTrue(outputStream.closed); } /** @@ -470,16 +425,14 @@ public void testCloseOutputStream() * @throws java.lang.Exception if any. */ @Test - public void testCloseReader() - throws Exception - { - IOUtil.close( (Reader) null ); + public void testCloseReader() throws Exception { + IOUtil.close((Reader) null); TestReader reader = new TestReader(); - IOUtil.close( reader ); + IOUtil.close(reader); - assertTrue( reader.closed ); + assertTrue(reader.closed); } /** @@ -488,88 +441,69 @@ public void testCloseReader() * @throws java.lang.Exception if any. */ @Test - public void testCloseWriter() - throws Exception - { - IOUtil.close( (Writer) null ); + public void testCloseWriter() throws Exception { + IOUtil.close((Writer) null); TestWriter writer = new TestWriter(); - IOUtil.close( writer ); + IOUtil.close(writer); - assertTrue( writer.closed ); + assertTrue(writer.closed); } - private class TestInputStream - extends InputStream - { + private class TestInputStream extends InputStream { boolean closed; - public void close() - { + public void close() { closed = true; } - public int read() - { - fail( "This method shouldn't be called" ); + public int read() { + fail("This method shouldn't be called"); return 0; } } - private class TestOutputStream - extends OutputStream - { + private class TestOutputStream extends OutputStream { boolean closed; - public void close() - { + public void close() { closed = true; } - public void write( int value ) - { - fail( "This method shouldn't be called" ); + public void write(int value) { + fail("This method shouldn't be called"); } } - private class TestReader - extends Reader - { + private class TestReader extends Reader { boolean closed; - public void close() - { + public void close() { closed = true; } - public int read( char cbuf[], int off, int len ) - { - fail( "This method shouldn't be called" ); + public int read(char cbuf[], int off, int len) { + fail("This method shouldn't be called"); return 0; } } - private class TestWriter - extends Writer - { + private class TestWriter extends Writer { boolean closed; - public void close() - { + public void close() { closed = true; } - public void write( char cbuf[], int off, int len ) - { - fail( "This method shouldn't be called" ); + public void write(char cbuf[], int off, int len) { + fail("This method shouldn't be called"); } - public void flush() - { - fail( "This method shouldn't be called" ); + public void flush() { + fail("This method shouldn't be called"); } } @@ -577,55 +511,39 @@ public void flush() // Utility methods // ---------------------------------------------------------------------- - private File newFile( String filename ) - throws Exception - { - File destination = new File( testDirectory, filename ); - assertTrue( !destination.exists(), filename + "Test output data file shouldn't previously exist" ); + private File newFile(String filename) throws Exception { + File destination = new File(testDirectory, filename); + assertTrue(!destination.exists(), filename + "Test output data file shouldn't previously exist"); return destination; } - private void checkFile( File file ) - throws Exception - { - assertTrue( file.exists(), "Check existence of output file" ); - assertEqualContent( testFile, file ); + private void checkFile(File file) throws Exception { + assertTrue(file.exists(), "Check existence of output file"); + assertEqualContent(testFile, file); } - private void checkWrite( OutputStream output ) - throws Exception - { - try - { - new PrintStream( output ).write( 0 ); - } - catch ( Throwable t ) - { - throw new Exception( "The copy() method closed the stream " + "when it shouldn't have. " - + t.getMessage() ); + private void checkWrite(OutputStream output) throws Exception { + try { + new PrintStream(output).write(0); + } catch (Throwable t) { + throw new Exception("The copy() method closed the stream " + "when it shouldn't have. " + t.getMessage()); } } - private void checkWrite( Writer output ) - throws Exception - { - try - { - new PrintWriter( output ).write( 'a' ); - } - catch ( Throwable t ) - { - throw new Exception( "The copy() method closed the stream " + "when it shouldn't have. " - + t.getMessage() ); + private void checkWrite(Writer output) throws Exception { + try { + new PrintWriter(output).write('a'); + } catch (Throwable t) { + throw new Exception("The copy() method closed the stream " + "when it shouldn't have. " + t.getMessage()); } } - private void deleteFile( File file ) - throws Exception - { - assertTrue( file.length() == FILE_SIZE + 1, "Wrong output size: file.length()=" + file.length() + "!=" + FILE_SIZE + 1 ); + private void deleteFile(File file) throws Exception { + assertTrue( + file.length() == FILE_SIZE + 1, + "Wrong output size: file.length()=" + file.length() + "!=" + FILE_SIZE + 1); - assertTrue( ( file.delete() || ( !file.exists() ) ), "File would not delete" ); + assertTrue((file.delete() || (!file.exists())), "File would not delete"); } } diff --git a/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java b/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java index eb821b5c..04f9924c 100644 --- a/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java +++ b/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java @@ -16,14 +16,14 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; - import java.io.StringReader; import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** *

        InterpolationFilterReaderTest class.

        * @@ -31,8 +31,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class InterpolationFilterReaderTest -{ +public class InterpolationFilterReaderTest { /* * Added and commented by jdcasey@03-Feb-2005 because it is a bug in the InterpolationFilterReader. * kenneyw@15-04-2005 fixed the bug. @@ -43,15 +42,13 @@ public class InterpolationFilterReaderTest * @throws java.lang.Exception if any. */ @Test - public void testShouldNotInterpolateExpressionAtEndOfDataWithInvalidEndToken() - throws Exception - { + public void testShouldNotInterpolateExpressionAtEndOfDataWithInvalidEndToken() throws Exception { Map m = new HashMap(); - m.put( "test", "TestValue" ); + m.put("test", "TestValue"); String testStr = "This is a ${test"; - assertEquals( "This is a ${test", interpolate( testStr, m ) ); + assertEquals("This is a ${test", interpolate(testStr, m)); } /* @@ -63,15 +60,13 @@ public void testShouldNotInterpolateExpressionAtEndOfDataWithInvalidEndToken() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testShouldNotInterpolateExpressionWithMissingEndToken() - throws Exception - { + public void testShouldNotInterpolateExpressionWithMissingEndToken() throws Exception { Map m = new HashMap(); - m.put( "test", "TestValue" ); + m.put("test", "TestValue"); String testStr = "This is a ${test, really"; - assertEquals( "This is a ${test, really", interpolate( testStr, m ) ); + assertEquals("This is a ${test, really", interpolate(testStr, m)); } /** @@ -80,15 +75,13 @@ public void testShouldNotInterpolateExpressionWithMissingEndToken() * @throws java.lang.Exception if any. */ @Test - public void testShouldNotInterpolateWithMalformedStartToken() - throws Exception - { + public void testShouldNotInterpolateWithMalformedStartToken() throws Exception { Map m = new HashMap(); - m.put( "test", "testValue" ); + m.put("test", "testValue"); String foo = "This is a $!test} again"; - assertEquals( "This is a $!test} again", interpolate( foo, m ) ); + assertEquals("This is a $!test} again", interpolate(foo, m)); } /** @@ -97,15 +90,13 @@ public void testShouldNotInterpolateWithMalformedStartToken() * @throws java.lang.Exception if any. */ @Test - public void testShouldNotInterpolateWithMalformedEndToken() - throws Exception - { + public void testShouldNotInterpolateWithMalformedEndToken() throws Exception { Map m = new HashMap(); - m.put( "test", "testValue" ); + m.put("test", "testValue"); String foo = "This is a ${test!} again"; - assertEquals( "This is a ${test!} again", interpolate( foo, m, "${", "$}" ) ); + assertEquals("This is a ${test!} again", interpolate(foo, m, "${", "$}")); } /** @@ -114,15 +105,13 @@ public void testShouldNotInterpolateWithMalformedEndToken() * @throws java.lang.Exception if any. */ @Test - public void testInterpolationWithMulticharDelimiters() - throws Exception - { + public void testInterpolationWithMulticharDelimiters() throws Exception { Map m = new HashMap(); - m.put( "test", "testValue" ); + m.put("test", "testValue"); String foo = "This is a ${test$} again"; - assertEquals( "This is a testValue again", interpolate( foo, m, "${", "$}" ) ); + assertEquals("This is a testValue again", interpolate(foo, m, "${", "$}")); } /** @@ -131,16 +120,14 @@ public void testInterpolationWithMulticharDelimiters() * @throws java.lang.Exception if any. */ @Test - public void testDefaultInterpolationWithNonInterpolatedValueAtEnd() - throws Exception - { + public void testDefaultInterpolationWithNonInterpolatedValueAtEnd() throws Exception { Map m = new HashMap(); - m.put( "name", "jason" ); - m.put( "noun", "asshole" ); + m.put("name", "jason"); + m.put("noun", "asshole"); String foo = "${name} is an ${noun}. ${not.interpolated}"; - assertEquals( "jason is an asshole. ${not.interpolated}", interpolate( foo, m ) ); + assertEquals("jason is an asshole. ${not.interpolated}", interpolate(foo, m)); } /** @@ -149,16 +136,14 @@ public void testDefaultInterpolationWithNonInterpolatedValueAtEnd() * @throws java.lang.Exception if any. */ @Test - public void testDefaultInterpolationWithInterpolatedValueAtEnd() - throws Exception - { + public void testDefaultInterpolationWithInterpolatedValueAtEnd() throws Exception { Map m = new HashMap(); - m.put( "name", "jason" ); - m.put( "noun", "asshole" ); + m.put("name", "jason"); + m.put("noun", "asshole"); String foo = "${name} is an ${noun}"; - assertEquals( "jason is an asshole", interpolate( foo, m ) ); + assertEquals("jason is an asshole", interpolate(foo, m)); } /** @@ -167,16 +152,14 @@ public void testDefaultInterpolationWithInterpolatedValueAtEnd() * @throws java.lang.Exception if any. */ @Test - public void testInterpolationWithSpecifiedBoundaryTokens() - throws Exception - { + public void testInterpolationWithSpecifiedBoundaryTokens() throws Exception { Map m = new HashMap(); - m.put( "name", "jason" ); - m.put( "noun", "asshole" ); + m.put("name", "jason"); + m.put("noun", "asshole"); String foo = "@name@ is an @noun@. @not.interpolated@ baby @foo@. @bar@"; - assertEquals( "jason is an asshole. @not.interpolated@ baby @foo@. @bar@", interpolate( foo, m, "@", "@" ) ); + assertEquals("jason is an asshole. @not.interpolated@ baby @foo@. @bar@", interpolate(foo, m, "@", "@")); } /** @@ -185,16 +168,14 @@ public void testInterpolationWithSpecifiedBoundaryTokens() * @throws java.lang.Exception if any. */ @Test - public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValueAtEnd() - throws Exception - { + public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValueAtEnd() throws Exception { Map m = new HashMap(); - m.put( "name", "jason" ); - m.put( "noun", "asshole" ); + m.put("name", "jason"); + m.put("noun", "asshole"); String foo = "@name@ is an @foobarred@"; - assertEquals( "jason is an @foobarred@", interpolate( foo, m, "@", "@" ) ); + assertEquals("jason is an @foobarred@", interpolate(foo, m, "@", "@")); } /** @@ -203,16 +184,14 @@ public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValue * @throws java.lang.Exception if any. */ @Test - public void testInterpolationWithSpecifiedBoundaryTokensWithInterpolatedValueAtEnd() - throws Exception - { + public void testInterpolationWithSpecifiedBoundaryTokensWithInterpolatedValueAtEnd() throws Exception { Map m = new HashMap(); - m.put( "name", "jason" ); - m.put( "noun", "asshole" ); + m.put("name", "jason"); + m.put("noun", "asshole"); String foo = "@name@ is an @noun@"; - assertEquals( "jason is an asshole", interpolate( foo, m, "@", "@" ) ); + assertEquals("jason is an asshole", interpolate(foo, m, "@", "@")); } /** @@ -221,32 +200,25 @@ public void testInterpolationWithSpecifiedBoundaryTokensWithInterpolatedValueAtE * @throws java.lang.Exception if any. */ @Test - public void testInterpolationWithSpecifiedBoundaryTokensAndAdditionalTokenCharacter() - throws Exception - { + public void testInterpolationWithSpecifiedBoundaryTokensAndAdditionalTokenCharacter() throws Exception { Map m = new HashMap(); - m.put( "name", "jason" ); - m.put( "noun", "asshole" ); + m.put("name", "jason"); + m.put("noun", "asshole"); String foo = "@name@ (known as jason@somewhere) is an @noun@"; - assertEquals( "jason (known as jason@somewhere) is an asshole", interpolate( foo, m, "@", "@" ) ); + assertEquals("jason (known as jason@somewhere) is an asshole", interpolate(foo, m, "@", "@")); } // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- - private String interpolate( String input, Map context ) - throws Exception - { - return IOUtil.toString( new InterpolationFilterReader( new StringReader( input ), context ) ); + private String interpolate(String input, Map context) throws Exception { + return IOUtil.toString(new InterpolationFilterReader(new StringReader(input), context)); } - private String interpolate( String input, Map context, String startToken, String endToken ) - throws Exception - { - return IOUtil.toString( new InterpolationFilterReader( new StringReader( input ), context, startToken, - endToken ) ); + private String interpolate(String input, Map context, String startToken, String endToken) throws Exception { + return IOUtil.toString(new InterpolationFilterReader(new StringReader(input), context, startToken, endToken)); } } diff --git a/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java b/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java index 1e3a3d05..f05bff0b 100644 --- a/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java +++ b/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java @@ -16,10 +16,6 @@ * limitations under the License. */ -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; @@ -28,6 +24,10 @@ import java.util.HashMap; import java.util.Map; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Generated by JUnitDoclet, a tool provided by ObjectFab GmbH under LGPL. Please see www.junitdoclet.org, www.gnu.org * and www.objectfab.de for informations about the tool, the licence and the authors. @@ -36,8 +36,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class LineOrientedInterpolatingReaderTest -{ +public class LineOrientedInterpolatingReaderTest { /* * Added and commented by jdcasey@03-Feb-2005 because it is a bug in the InterpolationFilterReader. */ @@ -47,18 +46,15 @@ public class LineOrientedInterpolatingReaderTest * @throws java.io.IOException if any. */ @org.junit.jupiter.api.Test - public void testShouldInterpolateExpressionAtEndOfDataWithInvalidEndToken() - throws IOException - { + public void testShouldInterpolateExpressionAtEndOfDataWithInvalidEndToken() throws IOException { String testStr = "This is a ${test"; - LineOrientedInterpolatingReader iReader = - new LineOrientedInterpolatingReader( new StringReader( testStr ), - Collections.singletonMap( "test", "TestValue" ) ); - BufferedReader reader = new BufferedReader( iReader ); + LineOrientedInterpolatingReader iReader = new LineOrientedInterpolatingReader( + new StringReader(testStr), Collections.singletonMap("test", "TestValue")); + BufferedReader reader = new BufferedReader(iReader); String result = reader.readLine(); - assertEquals( "This is a ${test", result ); + assertEquals("This is a ${test", result); } /** @@ -67,27 +63,24 @@ public void testShouldInterpolateExpressionAtEndOfDataWithInvalidEndToken() * @throws java.lang.Exception if any. */ @Test - public void testDefaultInterpolationWithNonInterpolatedValueAtEnd() - throws Exception - { + public void testDefaultInterpolationWithNonInterpolatedValueAtEnd() throws Exception { Map m = getStandardMap(); String foo = "${name} is an ${noun}. ${not.interpolated}"; - LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader( new StringReader( foo ), m ); + LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader(new StringReader(foo), m); StringWriter writer = new StringWriter(); - IOUtil.copy( reader, writer ); + IOUtil.copy(reader, writer); String bar = writer.toString(); - assertEquals( "jason is an asshole. ${not.interpolated}", bar ); + assertEquals("jason is an asshole. ${not.interpolated}", bar); } - private Map getStandardMap() - { + private Map getStandardMap() { Map m = new HashMap(); - m.put( "name", "jason" ); - m.put( "noun", "asshole" ); + m.put("name", "jason"); + m.put("noun", "asshole"); return m; } @@ -97,20 +90,18 @@ private Map getStandardMap() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testDefaultInterpolationWithEscapedExpression() - throws Exception - { + public void testDefaultInterpolationWithEscapedExpression() throws Exception { Map m = getStandardMap(); String foo = "${name} is an ${noun}. \\${noun} value"; - LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader( new StringReader( foo ), m ); + LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader(new StringReader(foo), m); StringWriter writer = new StringWriter(); - IOUtil.copy( reader, writer ); + IOUtil.copy(reader, writer); String bar = writer.toString(); - assertEquals( "jason is an asshole. ${noun} value", bar ); + assertEquals("jason is an asshole. ${noun} value", bar); } /** @@ -119,20 +110,18 @@ public void testDefaultInterpolationWithEscapedExpression() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testDefaultInterpolationWithInterpolatedValueAtEnd() - throws Exception - { + public void testDefaultInterpolationWithInterpolatedValueAtEnd() throws Exception { Map m = getStandardMap(); String foo = "${name} is an ${noun}"; - LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader( new StringReader( foo ), m ); + LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader(new StringReader(foo), m); StringWriter writer = new StringWriter(); - IOUtil.copy( reader, writer ); + IOUtil.copy(reader, writer); String bar = writer.toString(); - assertEquals( "jason is an asshole", bar ); + assertEquals("jason is an asshole", bar); } /** @@ -141,21 +130,19 @@ public void testDefaultInterpolationWithInterpolatedValueAtEnd() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testInterpolationWithSpecifiedBoundaryTokens() - throws Exception - { + public void testInterpolationWithSpecifiedBoundaryTokens() throws Exception { Map m = getStandardMap(); String foo = "@name@ is an @noun@. @not.interpolated@ baby @foo@. @bar@"; LineOrientedInterpolatingReader reader = - new LineOrientedInterpolatingReader( new StringReader( foo ), m, "@", "@" ); + new LineOrientedInterpolatingReader(new StringReader(foo), m, "@", "@"); StringWriter writer = new StringWriter(); - IOUtil.copy( reader, writer ); + IOUtil.copy(reader, writer); String bar = writer.toString(); - assertEquals( "jason is an asshole. @not.interpolated@ baby @foo@. @bar@", bar ); + assertEquals("jason is an asshole. @not.interpolated@ baby @foo@. @bar@", bar); } /** @@ -164,21 +151,19 @@ public void testInterpolationWithSpecifiedBoundaryTokens() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValueAtEnd() - throws Exception - { + public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValueAtEnd() throws Exception { Map m = getStandardMap(); String foo = "@name@ is an @foobarred@"; LineOrientedInterpolatingReader reader = - new LineOrientedInterpolatingReader( new StringReader( foo ), m, "@", "@" ); + new LineOrientedInterpolatingReader(new StringReader(foo), m, "@", "@"); StringWriter writer = new StringWriter(); - IOUtil.copy( reader, writer ); + IOUtil.copy(reader, writer); String bar = writer.toString(); - assertEquals( "jason is an @foobarred@", bar ); + assertEquals("jason is an @foobarred@", bar); } /** @@ -187,20 +172,18 @@ public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValue * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testInterpolationWithSpecifiedBoundaryTokensWithInterpolatedValueAtEnd() - throws Exception - { + public void testInterpolationWithSpecifiedBoundaryTokensWithInterpolatedValueAtEnd() throws Exception { Map m = getStandardMap(); String foo = "@name@ is an @noun@"; LineOrientedInterpolatingReader reader = - new LineOrientedInterpolatingReader( new StringReader( foo ), m, "@", "@" ); + new LineOrientedInterpolatingReader(new StringReader(foo), m, "@", "@"); StringWriter writer = new StringWriter(); - IOUtil.copy( reader, writer ); + IOUtil.copy(reader, writer); String bar = writer.toString(); - assertEquals( "jason is an asshole", bar ); + assertEquals("jason is an asshole", bar); } } diff --git a/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java b/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java index 5745b408..7dbef6b3 100644 --- a/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java +++ b/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java @@ -28,19 +28,16 @@ * @version $Id: $Id * @since 3.4.0 */ -public class MatchPatternTest -{ +public class MatchPatternTest { /** *

        testMatchPath.

        * * @throws java.lang.Exception if any. */ @Test - public void testMatchPath() - throws Exception - { - MatchPattern mp = MatchPattern.fromString( "ABC*" ); - assertTrue( mp.matchPath( "ABCD", true ) ); + public void testMatchPath() throws Exception { + MatchPattern mp = MatchPattern.fromString("ABC*"); + assertTrue(mp.matchPath("ABCD", true)); } /** @@ -49,18 +46,16 @@ public void testMatchPath() * @see Issue #63 */ @org.junit.jupiter.api.Test - public void testMatchPatternStart() - { - MatchPattern mp = MatchPattern.fromString( "ABC*" ); + public void testMatchPatternStart() { + MatchPattern mp = MatchPattern.fromString("ABC*"); - assertTrue( mp.matchPatternStart( "ABCD", true ) ); - assertFalse( mp.matchPatternStart( "AbCD", true ) ); + assertTrue(mp.matchPatternStart("ABCD", true)); + assertFalse(mp.matchPatternStart("AbCD", true)); - assertTrue( mp.matchPatternStart( "ABCD", false ) ); - assertTrue( mp.matchPatternStart( "AbCD", false ) ); + assertTrue(mp.matchPatternStart("ABCD", false)); + assertTrue(mp.matchPatternStart("AbCD", false)); - assertFalse( mp.matchPatternStart( "XXXX", true ) ); - assertFalse( mp.matchPatternStart( "XXXX", false ) ); + assertFalse(mp.matchPatternStart("XXXX", true)); + assertFalse(mp.matchPatternStart("XXXX", false)); } - } diff --git a/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java b/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java index 202428a3..47074f8f 100644 --- a/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java +++ b/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java @@ -28,20 +28,17 @@ * @version $Id: $Id * @since 3.4.0 */ -public class MatchPatternsTest -{ +public class MatchPatternsTest { /** *

        testMatches.

        * * @throws java.lang.Exception if any. */ @Test - public void testMatches() - throws Exception - { - MatchPatterns from = MatchPatterns.from( "ABC**", "CDE**" ); - assertTrue( from.matches( "ABCDE", true ) ); - assertTrue( from.matches( "CDEF", true ) ); - assertFalse( from.matches( "XYZ", true ) ); + public void testMatches() throws Exception { + MatchPatterns from = MatchPatterns.from("ABC**", "CDE**"); + assertTrue(from.matches("ABCDE", true)); + assertTrue(from.matches("CDEF", true)); + assertFalse(from.matches("XYZ", true)); } } diff --git a/src/test/java/org/codehaus/plexus/util/OsTest.java b/src/test/java/org/codehaus/plexus/util/OsTest.java index 77b781ce..0c5a8592 100644 --- a/src/test/java/org/codehaus/plexus/util/OsTest.java +++ b/src/test/java/org/codehaus/plexus/util/OsTest.java @@ -16,14 +16,14 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.Iterator; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * Test Case for Os * @@ -31,74 +31,66 @@ * @version $Id: $Id * @since 3.4.0 */ -public class OsTest -{ +public class OsTest { /** *

        testUndefinedFamily.

        */ @Test - public void testUndefinedFamily() - { - assertFalse( Os.isFamily( "bogus family" ) ); + public void testUndefinedFamily() { + assertFalse(Os.isFamily("bogus family")); } /** *

        testOs.

        */ @Test - public void testOs() - { + public void testOs() { Iterator iter = Os.getValidFamilies().iterator(); String currentFamily = null; String notCurrentFamily = null; - while ( iter.hasNext() && ( currentFamily == null || notCurrentFamily == null ) ) - { + while (iter.hasNext() && (currentFamily == null || notCurrentFamily == null)) { String fam = iter.next(); - if ( Os.isFamily( fam ) ) - { + if (Os.isFamily(fam)) { currentFamily = fam; - } - else - { + } else { notCurrentFamily = fam; } } // make sure the OS_FAMILY is set right. - assertEquals( currentFamily, Os.OS_FAMILY ); + assertEquals(currentFamily, Os.OS_FAMILY); // check the current family and one of the others - assertTrue( Os.isOs( currentFamily, null, null, null ) ); - assertFalse( Os.isOs( notCurrentFamily, null, null, null ) ); + assertTrue(Os.isOs(currentFamily, null, null, null)); + assertFalse(Os.isOs(notCurrentFamily, null, null, null)); // check for junk - assertFalse( Os.isOs( "junk", null, null, null ) ); + assertFalse(Os.isOs("junk", null, null, null)); // check the current name - assertTrue( Os.isOs( currentFamily, Os.OS_NAME, null, null ) ); + assertTrue(Os.isOs(currentFamily, Os.OS_NAME, null, null)); // check some other name - assertFalse( Os.isOs( currentFamily, "myos", null, null ) ); + assertFalse(Os.isOs(currentFamily, "myos", null, null)); // check the arch - assertTrue( Os.isOs( currentFamily, Os.OS_NAME, Os.OS_ARCH, null ) ); - assertFalse( Os.isOs( currentFamily, Os.OS_NAME, "myarch", null ) ); + assertTrue(Os.isOs(currentFamily, Os.OS_NAME, Os.OS_ARCH, null)); + assertFalse(Os.isOs(currentFamily, Os.OS_NAME, "myarch", null)); // check the version - assertTrue( Os.isOs( currentFamily, Os.OS_NAME, Os.OS_ARCH, Os.OS_VERSION ) ); - assertFalse( Os.isOs( currentFamily, Os.OS_NAME, Os.OS_ARCH, "myversion" ) ); + assertTrue(Os.isOs(currentFamily, Os.OS_NAME, Os.OS_ARCH, Os.OS_VERSION)); + assertFalse(Os.isOs(currentFamily, Os.OS_NAME, Os.OS_ARCH, "myversion")); } /** *

        testValidList.

        */ @org.junit.jupiter.api.Test - public void testValidList() - { - assertTrue( Os.isValidFamily( "dos" ) ); + public void testValidList() { + assertTrue(Os.isValidFamily("dos")); - assertFalse( Os.isValidFamily( "" ) ); - assertFalse( Os.isValidFamily( null ) ); - assertFalse( Os.isValidFamily( "something" ) ); + assertFalse(Os.isValidFamily("")); + assertFalse(Os.isValidFamily(null)); + assertFalse(Os.isValidFamily("something")); } } diff --git a/src/test/java/org/codehaus/plexus/util/PathToolTest.java b/src/test/java/org/codehaus/plexus/util/PathToolTest.java index 82744cd2..c415a6dd 100644 --- a/src/test/java/org/codehaus/plexus/util/PathToolTest.java +++ b/src/test/java/org/codehaus/plexus/util/PathToolTest.java @@ -16,10 +16,10 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; - import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** *

        PathToolTest class.

        * @@ -27,23 +27,20 @@ * @version $Id: $Id * @since 3.4.0 */ -public class PathToolTest -{ +public class PathToolTest { /** *

        testGetRelativePath.

        * * @throws java.lang.Exception */ @org.junit.jupiter.api.Test - public void testGetRelativePath() - throws Exception - { - assertEquals( PathTool.getRelativePath( null, null ), "" ); - assertEquals( PathTool.getRelativePath( null, "/usr/local/java/bin" ), "" ); - assertEquals( PathTool.getRelativePath( "/usr/local/", null ), "" ); - assertEquals( PathTool.getRelativePath( "/usr/local/", "/usr/local/java/bin" ), ".." ); - assertEquals( PathTool.getRelativePath( "/usr/local/", "/usr/local/java/bin/java.sh" ), "../.." ); - assertEquals( PathTool.getRelativePath( "/usr/local/java/bin/java.sh", "/usr/local/" ), "" ); + public void testGetRelativePath() throws Exception { + assertEquals(PathTool.getRelativePath(null, null), ""); + assertEquals(PathTool.getRelativePath(null, "/usr/local/java/bin"), ""); + assertEquals(PathTool.getRelativePath("/usr/local/", null), ""); + assertEquals(PathTool.getRelativePath("/usr/local/", "/usr/local/java/bin"), ".."); + assertEquals(PathTool.getRelativePath("/usr/local/", "/usr/local/java/bin/java.sh"), "../.."); + assertEquals(PathTool.getRelativePath("/usr/local/java/bin/java.sh", "/usr/local/"), ""); } /** @@ -52,13 +49,11 @@ public void testGetRelativePath() * @throws java.lang.Exception */ @Test - public void testGetDirectoryComponent() - throws Exception - { - assertEquals( PathTool.getDirectoryComponent( null ), "" ); - assertEquals( PathTool.getDirectoryComponent( "/usr/local/java/bin" ), "/usr/local/java" ); - assertEquals( PathTool.getDirectoryComponent( "/usr/local/java/bin/" ), "/usr/local/java/bin" ); - assertEquals( PathTool.getDirectoryComponent( "/usr/local/java/bin/java.sh" ), "/usr/local/java/bin" ); + public void testGetDirectoryComponent() throws Exception { + assertEquals(PathTool.getDirectoryComponent(null), ""); + assertEquals(PathTool.getDirectoryComponent("/usr/local/java/bin"), "/usr/local/java"); + assertEquals(PathTool.getDirectoryComponent("/usr/local/java/bin/"), "/usr/local/java/bin"); + assertEquals(PathTool.getDirectoryComponent("/usr/local/java/bin/java.sh"), "/usr/local/java/bin"); } /** @@ -67,18 +62,18 @@ public void testGetDirectoryComponent() * @throws java.lang.Exception */ @org.junit.jupiter.api.Test - public void testCalculateLink() - throws Exception - { - assertEquals( PathTool.calculateLink( "/index.html", "../.." ), "../../index.html" ); - assertEquals( PathTool.calculateLink( "http://plexus.codehaus.org/plexus-utils/index.html", "../.." ), - "http://plexus.codehaus.org/plexus-utils/index.html" ); - assertEquals( PathTool.calculateLink( "/usr/local/java/bin/java.sh", "../.." ), - "../../usr/local/java/bin/java.sh" ); - assertEquals( PathTool.calculateLink( "../index.html", "/usr/local/java/bin" ), - "/usr/local/java/bin/../index.html" ); - assertEquals( PathTool.calculateLink( "../index.html", "http://plexus.codehaus.org/plexus-utils" ), - "http://plexus.codehaus.org/plexus-utils/../index.html" ); + public void testCalculateLink() throws Exception { + assertEquals(PathTool.calculateLink("/index.html", "../.."), "../../index.html"); + assertEquals( + PathTool.calculateLink("http://plexus.codehaus.org/plexus-utils/index.html", "../.."), + "http://plexus.codehaus.org/plexus-utils/index.html"); + assertEquals( + PathTool.calculateLink("/usr/local/java/bin/java.sh", "../.."), "../../usr/local/java/bin/java.sh"); + assertEquals( + PathTool.calculateLink("../index.html", "/usr/local/java/bin"), "/usr/local/java/bin/../index.html"); + assertEquals( + PathTool.calculateLink("../index.html", "http://plexus.codehaus.org/plexus-utils"), + "http://plexus.codehaus.org/plexus-utils/../index.html"); } /** @@ -87,18 +82,18 @@ public void testCalculateLink() * @throws java.lang.Exception */ @Test - public void testGetRelativeWebPath() - throws Exception - { - assertEquals( PathTool.getRelativeWebPath( null, null ), "" ); - assertEquals( PathTool.getRelativeWebPath( null, "http://plexus.codehaus.org/" ), "" ); - assertEquals( PathTool.getRelativeWebPath( "http://plexus.codehaus.org/", null ), "" ); - assertEquals( PathTool.getRelativeWebPath( "http://plexus.codehaus.org/", - "http://plexus.codehaus.org/plexus-utils/index.html" ), - "plexus-utils/index.html" ); - assertEquals( PathTool.getRelativeWebPath( "http://plexus.codehaus.org/plexus-utils/index.html", - "http://plexus.codehaus.org/" ), - "../../" ); + public void testGetRelativeWebPath() throws Exception { + assertEquals(PathTool.getRelativeWebPath(null, null), ""); + assertEquals(PathTool.getRelativeWebPath(null, "http://plexus.codehaus.org/"), ""); + assertEquals(PathTool.getRelativeWebPath("http://plexus.codehaus.org/", null), ""); + assertEquals( + PathTool.getRelativeWebPath( + "http://plexus.codehaus.org/", "http://plexus.codehaus.org/plexus-utils/index.html"), + "plexus-utils/index.html"); + assertEquals( + PathTool.getRelativeWebPath( + "http://plexus.codehaus.org/plexus-utils/index.html", "http://plexus.codehaus.org/"), + "../../"); } /** @@ -107,38 +102,34 @@ public void testGetRelativeWebPath() * @throws java.lang.Exception */ @Test - public void testGetRelativeFilePath() - throws Exception - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - assertEquals( PathTool.getRelativeFilePath( null, null ), "" ); - assertEquals( PathTool.getRelativeFilePath( null, "c:\\tools\\java\\bin" ), "" ); - assertEquals( PathTool.getRelativeFilePath( "c:\\tools\\java", null ), "" ); - assertEquals( PathTool.getRelativeFilePath( "c:\\tools", "c:\\tools\\java\\bin" ), "java\\bin" ); - assertEquals( PathTool.getRelativeFilePath( "c:\\tools", "c:\\tools\\java\\bin\\" ), "java\\bin\\" ); - assertEquals( PathTool.getRelativeFilePath( "c:\\tools\\java\\bin", "c:\\tools" ), "..\\.." ); - assertEquals( PathTool.getRelativeFilePath( "c:\\tools\\", "c:\\tools\\java\\bin\\java.exe" ), - "java\\bin\\java.exe" ); - assertEquals( PathTool.getRelativeFilePath( "c:\\tools\\java\\bin\\java.sh", "c:\\tools" ), "..\\..\\.." ); - assertEquals( PathTool.getRelativeFilePath( "c:\\tools", "c:\\bin" ), "..\\bin" ); - assertEquals( PathTool.getRelativeFilePath( "c:\\bin", "c:\\tools" ), "..\\tools" ); - assertEquals( PathTool.getRelativeFilePath( "c:\\bin", "c:\\bin" ), "" ); - } - else - { - assertEquals( PathTool.getRelativeFilePath( null, null ), "" ); - assertEquals( PathTool.getRelativeFilePath( null, "/usr/local/java/bin" ), "" ); - assertEquals( PathTool.getRelativeFilePath( "/usr/local", null ), "" ); - assertEquals( PathTool.getRelativeFilePath( "/usr/local", "/usr/local/java/bin" ), "java/bin" ); - assertEquals( PathTool.getRelativeFilePath( "/usr/local", "/usr/local/java/bin/" ), "java/bin/" ); - assertEquals( PathTool.getRelativeFilePath( "/usr/local/java/bin", "/usr/local/" ), "../../" ); - assertEquals( PathTool.getRelativeFilePath( "/usr/local/", "/usr/local/java/bin/java.sh" ), - "java/bin/java.sh" ); - assertEquals( PathTool.getRelativeFilePath( "/usr/local/java/bin/java.sh", "/usr/local/" ), "../../../" ); - assertEquals( PathTool.getRelativeFilePath( "/usr/local/", "/bin" ), "../../bin" ); - assertEquals( PathTool.getRelativeFilePath( "/bin", "/usr/local" ), "../usr/local" ); - assertEquals( PathTool.getRelativeFilePath( "/bin", "/bin" ), "" ); + public void testGetRelativeFilePath() throws Exception { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + assertEquals(PathTool.getRelativeFilePath(null, null), ""); + assertEquals(PathTool.getRelativeFilePath(null, "c:\\tools\\java\\bin"), ""); + assertEquals(PathTool.getRelativeFilePath("c:\\tools\\java", null), ""); + assertEquals(PathTool.getRelativeFilePath("c:\\tools", "c:\\tools\\java\\bin"), "java\\bin"); + assertEquals(PathTool.getRelativeFilePath("c:\\tools", "c:\\tools\\java\\bin\\"), "java\\bin\\"); + assertEquals(PathTool.getRelativeFilePath("c:\\tools\\java\\bin", "c:\\tools"), "..\\.."); + assertEquals( + PathTool.getRelativeFilePath("c:\\tools\\", "c:\\tools\\java\\bin\\java.exe"), + "java\\bin\\java.exe"); + assertEquals(PathTool.getRelativeFilePath("c:\\tools\\java\\bin\\java.sh", "c:\\tools"), "..\\..\\.."); + assertEquals(PathTool.getRelativeFilePath("c:\\tools", "c:\\bin"), "..\\bin"); + assertEquals(PathTool.getRelativeFilePath("c:\\bin", "c:\\tools"), "..\\tools"); + assertEquals(PathTool.getRelativeFilePath("c:\\bin", "c:\\bin"), ""); + } else { + assertEquals(PathTool.getRelativeFilePath(null, null), ""); + assertEquals(PathTool.getRelativeFilePath(null, "/usr/local/java/bin"), ""); + assertEquals(PathTool.getRelativeFilePath("/usr/local", null), ""); + assertEquals(PathTool.getRelativeFilePath("/usr/local", "/usr/local/java/bin"), "java/bin"); + assertEquals(PathTool.getRelativeFilePath("/usr/local", "/usr/local/java/bin/"), "java/bin/"); + assertEquals(PathTool.getRelativeFilePath("/usr/local/java/bin", "/usr/local/"), "../../"); + assertEquals( + PathTool.getRelativeFilePath("/usr/local/", "/usr/local/java/bin/java.sh"), "java/bin/java.sh"); + assertEquals(PathTool.getRelativeFilePath("/usr/local/java/bin/java.sh", "/usr/local/"), "../../../"); + assertEquals(PathTool.getRelativeFilePath("/usr/local/", "/bin"), "../../bin"); + assertEquals(PathTool.getRelativeFilePath("/bin", "/usr/local"), "../usr/local"); + assertEquals(PathTool.getRelativeFilePath("/bin", "/bin"), ""); } } } diff --git a/src/test/java/org/codehaus/plexus/util/PerfTest.java b/src/test/java/org/codehaus/plexus/util/PerfTest.java index de8164a2..30676752 100644 --- a/src/test/java/org/codehaus/plexus/util/PerfTest.java +++ b/src/test/java/org/codehaus/plexus/util/PerfTest.java @@ -25,8 +25,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class PerfTest -{ +public class PerfTest { String src = "012345578901234556789012345678901234456789012345678901234567890"; private final int oops = 100; @@ -35,37 +34,31 @@ public class PerfTest *

        testSubString.

        */ @Test - public void testSubString() - { + public void testSubString() { StringBuilder res = new StringBuilder(); int len = src.length(); - for ( int cnt = 0; cnt < oops; cnt++ ) - { - for ( int i = 0; i < len - 5; i++ ) - { - res.append( src.substring( i, i + 4 ) ); + for (int cnt = 0; cnt < oops; cnt++) { + for (int i = 0; i < len - 5; i++) { + res.append(src.substring(i, i + 4)); } } int i = res.length(); - System.out.println( "i = " + i ); + System.out.println("i = " + i); } /** *

        testResDir.

        */ @Test - public void testResDir() - { + public void testResDir() { StringBuilder res = new StringBuilder(); int len = src.length(); - for ( int cnt = 0; cnt < oops; cnt++ ) - { - for ( int i = 0; i < len - 5; i++ ) - { - res.append( src, i, i + 4 ); + for (int cnt = 0; cnt < oops; cnt++) { + for (int i = 0; i < len - 5; i++) { + res.append(src, i, i + 4); } } int i = res.length(); - System.out.println( "i = " + i ); + System.out.println("i = " + i); } } diff --git a/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java b/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java index 8ea9a314..53f1441f 100644 --- a/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java @@ -16,13 +16,12 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; - +import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import java.util.HashMap; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * This is used to test ReflectionUtils for correctness. @@ -32,8 +31,7 @@ * @see org.codehaus.plexus.util.ReflectionUtils * @since 3.4.0 */ -public final class ReflectionUtilsTest -{ +public final class ReflectionUtilsTest { public ReflectionUtilsTestClass testClass = new ReflectionUtilsTestClass(); /** @@ -42,10 +40,8 @@ public final class ReflectionUtilsTest * @throws java.lang.IllegalAccessException if any. */ @Test - public void testSimpleVariableAccess() - throws IllegalAccessException - { - assertEquals( "woohoo", (String) ReflectionUtils.getValueIncludingSuperclasses( "myString", testClass ) ); + public void testSimpleVariableAccess() throws IllegalAccessException { + assertEquals("woohoo", (String) ReflectionUtils.getValueIncludingSuperclasses("myString", testClass)); } /** @@ -54,16 +50,13 @@ public void testSimpleVariableAccess() * @throws java.lang.IllegalAccessException if any. */ @org.junit.jupiter.api.Test - public void testComplexVariableAccess() - throws IllegalAccessException - { - Map map = ReflectionUtils.getVariablesAndValuesIncludingSuperclasses( testClass ); - - Map myMap = (Map) map.get( "myMap" ); + public void testComplexVariableAccess() throws IllegalAccessException { + Map map = ReflectionUtils.getVariablesAndValuesIncludingSuperclasses(testClass); - assertEquals( "myValue", (String) myMap.get( "myKey" ) ); - assertEquals( "myOtherValue", (String) myMap.get( "myOtherKey" ) ); + Map myMap = (Map) map.get("myMap"); + assertEquals("myValue", (String) myMap.get("myKey")); + assertEquals("myOtherValue", (String) myMap.get("myOtherKey")); } /** @@ -72,11 +65,8 @@ public void testComplexVariableAccess() * @throws java.lang.IllegalAccessException if any. */ @Test - public void testSuperClassVariableAccess() - throws IllegalAccessException - { - assertEquals( "super-duper", - (String) ReflectionUtils.getValueIncludingSuperclasses( "mySuperString", testClass ) ); + public void testSuperClassVariableAccess() throws IllegalAccessException { + assertEquals("super-duper", (String) ReflectionUtils.getValueIncludingSuperclasses("mySuperString", testClass)); } /** @@ -85,39 +75,33 @@ public void testSuperClassVariableAccess() * @throws java.lang.IllegalAccessException if any. */ @Test - public void testSettingVariableValue() - throws IllegalAccessException - { - ReflectionUtils.setVariableValueInObject( testClass, "mySettableString", "mySetString" ); + public void testSettingVariableValue() throws IllegalAccessException { + ReflectionUtils.setVariableValueInObject(testClass, "mySettableString", "mySetString"); - assertEquals( "mySetString", - (String) ReflectionUtils.getValueIncludingSuperclasses( "mySettableString", testClass ) ); + assertEquals( + "mySetString", (String) ReflectionUtils.getValueIncludingSuperclasses("mySettableString", testClass)); - ReflectionUtils.setVariableValueInObject( testClass, "myParentsSettableString", "myParentsSetString" ); + ReflectionUtils.setVariableValueInObject(testClass, "myParentsSettableString", "myParentsSetString"); - assertEquals( "myParentsSetString", - (String) ReflectionUtils.getValueIncludingSuperclasses( "myParentsSettableString", testClass ) ); + assertEquals("myParentsSetString", (String) + ReflectionUtils.getValueIncludingSuperclasses("myParentsSettableString", testClass)); } - private class ReflectionUtilsTestClass - extends AbstractReflectionUtilsTestClass + private class ReflectionUtilsTestClass extends AbstractReflectionUtilsTestClass { - { private String myString = "woohoo"; private String mySettableString; private Map myMap = new HashMap(); - public ReflectionUtilsTestClass() - { - myMap.put( "myKey", "myValue" ); - myMap.put( "myOtherKey", "myOtherValue" ); + public ReflectionUtilsTestClass() { + myMap.put("myKey", "myValue"); + myMap.put("myOtherKey", "myOtherValue"); } } - private class AbstractReflectionUtilsTestClass - { + private class AbstractReflectionUtilsTestClass { private String mySuperString = "super-duper"; private String myParentsSettableString; diff --git a/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java b/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java index 047e591a..21a10e2f 100644 --- a/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java @@ -16,130 +16,104 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.io.File; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** *

        SelectorUtilsTest class.

        * * @author herve * @since 3.4.0 */ -public class SelectorUtilsTest -{ +public class SelectorUtilsTest { /** *

        testMatchPath_DefaultFileSeparator.

        */ @Test - public void testMatchPath_DefaultFileSeparator() - { + public void testMatchPath_DefaultFileSeparator() { String separator = File.separator; // Pattern and target start with file separator - assertTrue( SelectorUtils.matchPath( separator + "*" + separator + "a.txt", - separator + "b" + separator + "a.txt" ) ); + assertTrue( + SelectorUtils.matchPath(separator + "*" + separator + "a.txt", separator + "b" + separator + "a.txt")); // Pattern starts with file separator, target doesn't - assertFalse( SelectorUtils.matchPath( separator + "*" + separator + "a.txt", "b" + separator + "a.txt" ) ); + assertFalse(SelectorUtils.matchPath(separator + "*" + separator + "a.txt", "b" + separator + "a.txt")); // Pattern doesn't start with file separator, target does - assertFalse( SelectorUtils.matchPath( "*" + separator + "a.txt", separator + "b" + separator + "a.txt" ) ); + assertFalse(SelectorUtils.matchPath("*" + separator + "a.txt", separator + "b" + separator + "a.txt")); // Pattern and target don't start with file separator - assertTrue( SelectorUtils.matchPath( "*" + separator + "a.txt", "b" + separator + "a.txt" ) ); + assertTrue(SelectorUtils.matchPath("*" + separator + "a.txt", "b" + separator + "a.txt")); } /** *

        testMatchPath_UnixFileSeparator.

        */ @Test - public void testMatchPath_UnixFileSeparator() - { + public void testMatchPath_UnixFileSeparator() { String separator = "/"; // Pattern and target start with file separator - assertTrue( SelectorUtils.matchPath( separator + "*" + separator + "a.txt", - separator + "b" + separator + "a.txt", separator, false ) ); + assertTrue(SelectorUtils.matchPath( + separator + "*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern starts with file separator, target doesn't - assertFalse( SelectorUtils.matchPath( separator + "*" + separator + "a.txt", "b" + separator + "a.txt", - separator, false ) ); + assertFalse(SelectorUtils.matchPath( + separator + "*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); // Pattern doesn't start with file separator, target does - assertFalse( SelectorUtils.matchPath( "*" + separator + "a.txt", separator + "b" + separator + "a.txt", - separator, false ) ); + assertFalse(SelectorUtils.matchPath( + "*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern and target don't start with file separator - assertTrue( SelectorUtils.matchPath( "*" + separator + "a.txt", "b" + separator + "a.txt", separator, false ) ); + assertTrue(SelectorUtils.matchPath("*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); } /** *

        testMatchPath_WindowsFileSeparator.

        */ @Test - public void testMatchPath_WindowsFileSeparator() - { + public void testMatchPath_WindowsFileSeparator() { String separator = "\\"; // Pattern and target start with file separator - assertTrue( SelectorUtils.matchPath( separator + "*" + separator + "a.txt", - separator + "b" + separator + "a.txt", separator, false ) ); + assertTrue(SelectorUtils.matchPath( + separator + "*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern starts with file separator, target doesn't - assertFalse( SelectorUtils.matchPath( separator + "*" + separator + "a.txt", "b" + separator + "a.txt", - separator, false ) ); + assertFalse(SelectorUtils.matchPath( + separator + "*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); // Pattern doesn't start with file separator, target does - assertFalse( SelectorUtils.matchPath( "*" + separator + "a.txt", separator + "b" + separator + "a.txt", - separator, false ) ); + assertFalse(SelectorUtils.matchPath( + "*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern and target don't start with file separator - assertTrue( SelectorUtils.matchPath( "*" + separator + "a.txt", "b" + separator + "a.txt", separator, false ) ); + assertTrue(SelectorUtils.matchPath("*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); } @org.junit.jupiter.api.Test - public void testPatternMatchSingleWildcardPosix() - { - assertFalse(SelectorUtils.matchPath( - "/com/test/*", - "/com/test/test/hallo")); + public void testPatternMatchSingleWildcardPosix() { + assertFalse(SelectorUtils.matchPath("/com/test/*", "/com/test/test/hallo")); } - @Test - public void testPatternMatchDoubleWildcardCaseInsensitivePosix() - { - assertTrue(SelectorUtils.matchPath( - "/com/test/**", - "/com/test/test/hallo")); + public void testPatternMatchDoubleWildcardCaseInsensitivePosix() { + assertTrue(SelectorUtils.matchPath("/com/test/**", "/com/test/test/hallo")); } - @Test - public void testPatternMatchDoubleWildcardPosix() - { - assertTrue(SelectorUtils.matchPath( - "/com/test/**", - "/com/test/test/hallo")); + public void testPatternMatchDoubleWildcardPosix() { + assertTrue(SelectorUtils.matchPath("/com/test/**", "/com/test/test/hallo")); } - @org.junit.jupiter.api.Test - public void testPatternMatchSingleWildcardWindows() - { - assertFalse(SelectorUtils.matchPath( - "D:\\com\\test\\*", - "D:\\com\\test\\test\\hallo")); + public void testPatternMatchSingleWildcardWindows() { + assertFalse(SelectorUtils.matchPath("D:\\com\\test\\*", "D:\\com\\test\\test\\hallo")); - assertFalse(SelectorUtils.matchPath( - "D:/com/test/*", - "D:/com/test/test/hallo")); + assertFalse(SelectorUtils.matchPath("D:/com/test/*", "D:/com/test/test/hallo")); } @Test - public void testPatternMatchDoubleWildcardWindows() - { - assertTrue(SelectorUtils.matchPath( - "D:\\com\\test\\**", - "D:\\com\\test\\test\\hallo")); + public void testPatternMatchDoubleWildcardWindows() { + assertTrue(SelectorUtils.matchPath("D:\\com\\test\\**", "D:\\com\\test\\test\\hallo")); - assertTrue(SelectorUtils.matchPath( - "D:\\com\\test\\**", - "D:/com/test/test/hallo")); + assertTrue(SelectorUtils.matchPath("D:\\com\\test\\**", "D:/com/test/test/hallo")); } } diff --git a/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java b/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java index 659aecf1..f8a114a1 100644 --- a/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java @@ -16,15 +16,15 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.Arrays; import java.util.Locale; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * Test string utils. * @@ -32,287 +32,266 @@ * @version $Id: $Id * @since 3.4.0 */ -public class StringUtilsTest -{ +public class StringUtilsTest { /** *

        testIsEmpty.

        */ @Test - public void testIsEmpty() - { - assertEquals( true, StringUtils.isEmpty( null ) ); - assertEquals( true, StringUtils.isEmpty( "" ) ); - assertEquals( false, StringUtils.isEmpty( " " ) ); - assertEquals( false, StringUtils.isEmpty( "foo" ) ); - assertEquals( false, StringUtils.isEmpty( " foo " ) ); + public void testIsEmpty() { + assertEquals(true, StringUtils.isEmpty(null)); + assertEquals(true, StringUtils.isEmpty("")); + assertEquals(false, StringUtils.isEmpty(" ")); + assertEquals(false, StringUtils.isEmpty("foo")); + assertEquals(false, StringUtils.isEmpty(" foo ")); } /** *

        testIsNotEmpty.

        */ @Test - public void testIsNotEmpty() - { - assertEquals( false, StringUtils.isNotEmpty( null ) ); - assertEquals( false, StringUtils.isNotEmpty( "" ) ); - assertEquals( true, StringUtils.isNotEmpty( " " ) ); - assertEquals( true, StringUtils.isNotEmpty( "foo" ) ); - assertEquals( true, StringUtils.isNotEmpty( " foo " ) ); + public void testIsNotEmpty() { + assertEquals(false, StringUtils.isNotEmpty(null)); + assertEquals(false, StringUtils.isNotEmpty("")); + assertEquals(true, StringUtils.isNotEmpty(" ")); + assertEquals(true, StringUtils.isNotEmpty("foo")); + assertEquals(true, StringUtils.isNotEmpty(" foo ")); } @org.junit.jupiter.api.Test - public void testIsNotEmptyNegatesIsEmpty() - { - assertEquals( !StringUtils.isEmpty( null ), StringUtils.isNotEmpty( null ) ); - assertEquals( !StringUtils.isEmpty( "" ), StringUtils.isNotEmpty( "" ) ); - assertEquals( !StringUtils.isEmpty( " " ), StringUtils.isNotEmpty( " " ) ); - assertEquals( !StringUtils.isEmpty( "foo" ), StringUtils.isNotEmpty( "foo" ) ); - assertEquals( !StringUtils.isEmpty( " foo " ), StringUtils.isNotEmpty( " foo " ) ); + public void testIsNotEmptyNegatesIsEmpty() { + assertEquals(!StringUtils.isEmpty(null), StringUtils.isNotEmpty(null)); + assertEquals(!StringUtils.isEmpty(""), StringUtils.isNotEmpty("")); + assertEquals(!StringUtils.isEmpty(" "), StringUtils.isNotEmpty(" ")); + assertEquals(!StringUtils.isEmpty("foo"), StringUtils.isNotEmpty("foo")); + assertEquals(!StringUtils.isEmpty(" foo "), StringUtils.isNotEmpty(" foo ")); } /** *

        testIsBlank.

        */ @Test - public void testIsBlank() - { - assertEquals( true, StringUtils.isBlank( null ) ); - assertEquals( true, StringUtils.isBlank( "" ) ); - assertEquals( true, StringUtils.isBlank( " \t\r\n" ) ); - assertEquals( false, StringUtils.isBlank( "foo" ) ); - assertEquals( false, StringUtils.isBlank( " foo " ) ); + public void testIsBlank() { + assertEquals(true, StringUtils.isBlank(null)); + assertEquals(true, StringUtils.isBlank("")); + assertEquals(true, StringUtils.isBlank(" \t\r\n")); + assertEquals(false, StringUtils.isBlank("foo")); + assertEquals(false, StringUtils.isBlank(" foo ")); } /** *

        testIsNotBlank.

        */ @Test - public void testIsNotBlank() - { - assertEquals( false, StringUtils.isNotBlank( null ) ); - assertEquals( false, StringUtils.isNotBlank( "" ) ); - assertEquals( false, StringUtils.isNotBlank( " \t\r\n" ) ); - assertEquals( true, StringUtils.isNotBlank( "foo" ) ); - assertEquals( true, StringUtils.isNotBlank( " foo " ) ); + public void testIsNotBlank() { + assertEquals(false, StringUtils.isNotBlank(null)); + assertEquals(false, StringUtils.isNotBlank("")); + assertEquals(false, StringUtils.isNotBlank(" \t\r\n")); + assertEquals(true, StringUtils.isNotBlank("foo")); + assertEquals(true, StringUtils.isNotBlank(" foo ")); } /** *

        testCapitalizeFirstLetter.

        */ @Test - public void testCapitalizeFirstLetter() - { - assertEquals( "Id", StringUtils.capitalizeFirstLetter( "id" ) ); - assertEquals( "Id", StringUtils.capitalizeFirstLetter( "Id" ) ); + public void testCapitalizeFirstLetter() { + assertEquals("Id", StringUtils.capitalizeFirstLetter("id")); + assertEquals("Id", StringUtils.capitalizeFirstLetter("Id")); } /** *

        testCapitalizeFirstLetterTurkish.

        */ @Test - public void testCapitalizeFirstLetterTurkish() - { + public void testCapitalizeFirstLetterTurkish() { Locale l = Locale.getDefault(); - Locale.setDefault( new Locale( "tr" ) ); - assertEquals( "Id", StringUtils.capitalizeFirstLetter( "id" ) ); - assertEquals( "Id", StringUtils.capitalizeFirstLetter( "Id" ) ); - Locale.setDefault( l ); + Locale.setDefault(new Locale("tr")); + assertEquals("Id", StringUtils.capitalizeFirstLetter("id")); + assertEquals("Id", StringUtils.capitalizeFirstLetter("Id")); + Locale.setDefault(l); } /** *

        testLowerCaseFirstLetter.

        */ @org.junit.jupiter.api.Test - public void testLowerCaseFirstLetter() - { - assertEquals( "id", StringUtils.lowercaseFirstLetter( "id" ) ); - assertEquals( "id", StringUtils.lowercaseFirstLetter( "Id" ) ); + public void testLowerCaseFirstLetter() { + assertEquals("id", StringUtils.lowercaseFirstLetter("id")); + assertEquals("id", StringUtils.lowercaseFirstLetter("Id")); } /** *

        testLowerCaseFirstLetterTurkish.

        */ @org.junit.jupiter.api.Test - public void testLowerCaseFirstLetterTurkish() - { + public void testLowerCaseFirstLetterTurkish() { Locale l = Locale.getDefault(); - Locale.setDefault( new Locale( "tr" ) ); - assertEquals( "id", StringUtils.lowercaseFirstLetter( "id" ) ); - assertEquals( "id", StringUtils.lowercaseFirstLetter( "Id" ) ); - Locale.setDefault( l ); + Locale.setDefault(new Locale("tr")); + assertEquals("id", StringUtils.lowercaseFirstLetter("id")); + assertEquals("id", StringUtils.lowercaseFirstLetter("Id")); + Locale.setDefault(l); } /** *

        testRemoveAndHump.

        */ @org.junit.jupiter.api.Test - public void testRemoveAndHump() - { - assertEquals( "Id", StringUtils.removeAndHump( "id", "-" ) ); - assertEquals( "SomeId", StringUtils.removeAndHump( "some-id", "-" ) ); + public void testRemoveAndHump() { + assertEquals("Id", StringUtils.removeAndHump("id", "-")); + assertEquals("SomeId", StringUtils.removeAndHump("some-id", "-")); } /** *

        testRemoveAndHumpTurkish.

        */ @Test - public void testRemoveAndHumpTurkish() - { + public void testRemoveAndHumpTurkish() { Locale l = Locale.getDefault(); - Locale.setDefault( new Locale( "tr" ) ); - assertEquals( "Id", StringUtils.removeAndHump( "id", "-" ) ); - assertEquals( "SomeId", StringUtils.removeAndHump( "some-id", "-" ) ); - Locale.setDefault( l ); + Locale.setDefault(new Locale("tr")); + assertEquals("Id", StringUtils.removeAndHump("id", "-")); + assertEquals("SomeId", StringUtils.removeAndHump("some-id", "-")); + Locale.setDefault(l); } /** *

        testQuote_EscapeEmbeddedSingleQuotes.

        */ @Test - public void testQuote_EscapeEmbeddedSingleQuotes() - { + public void testQuote_EscapeEmbeddedSingleQuotes() { String src = "This \'is a\' test"; String check = "\'This \\\'is a\\\' test\'"; - char[] escaped = { '\'', '\"' }; - String result = StringUtils.quoteAndEscape( src, '\'', escaped, '\\', false ); + char[] escaped = {'\'', '\"'}; + String result = StringUtils.quoteAndEscape(src, '\'', escaped, '\\', false); - assertEquals( check, result ); + assertEquals(check, result); } /** *

        testQuote_EscapeEmbeddedSingleQuotesWithPattern.

        */ @org.junit.jupiter.api.Test - public void testQuote_EscapeEmbeddedSingleQuotesWithPattern() - { + public void testQuote_EscapeEmbeddedSingleQuotesWithPattern() { String src = "This \'is a\' test"; String check = "\'This pre'postis apre'post test\'"; - char[] escaped = { '\'', '\"' }; - String result = StringUtils.quoteAndEscape( src, '\'', escaped, new char[] { ' ' }, "pre%spost", false ); + char[] escaped = {'\'', '\"'}; + String result = StringUtils.quoteAndEscape(src, '\'', escaped, new char[] {' '}, "pre%spost", false); - assertEquals( check, result ); + assertEquals(check, result); } /** *

        testQuote_EscapeEmbeddedDoubleQuotesAndSpaces.

        */ @Test - public void testQuote_EscapeEmbeddedDoubleQuotesAndSpaces() - { + public void testQuote_EscapeEmbeddedDoubleQuotesAndSpaces() { String src = "This \"is a\" test"; String check = "\'This\\ \\\"is\\ a\\\"\\ test\'"; - char[] escaped = { '\'', '\"', ' ' }; - String result = StringUtils.quoteAndEscape( src, '\'', escaped, '\\', false ); + char[] escaped = {'\'', '\"', ' '}; + String result = StringUtils.quoteAndEscape(src, '\'', escaped, '\\', false); - assertEquals( check, result ); + assertEquals(check, result); } /** *

        testQuote_DontQuoteIfUnneeded.

        */ @org.junit.jupiter.api.Test - public void testQuote_DontQuoteIfUnneeded() - { + public void testQuote_DontQuoteIfUnneeded() { String src = "ThisIsATest"; - char[] escaped = { '\'', '\"' }; - String result = StringUtils.quoteAndEscape( src, '\'', escaped, '\\', false ); + char[] escaped = {'\'', '\"'}; + String result = StringUtils.quoteAndEscape(src, '\'', escaped, '\\', false); - assertEquals( src, result ); + assertEquals(src, result); } /** *

        testQuote_WrapWithSingleQuotes.

        */ @Test - public void testQuote_WrapWithSingleQuotes() - { + public void testQuote_WrapWithSingleQuotes() { String src = "This is a test"; String check = "\'This is a test\'"; - char[] escaped = { '\'', '\"' }; - String result = StringUtils.quoteAndEscape( src, '\'', escaped, '\\', false ); + char[] escaped = {'\'', '\"'}; + String result = StringUtils.quoteAndEscape(src, '\'', escaped, '\\', false); - assertEquals( check, result ); + assertEquals(check, result); } /** *

        testQuote_PreserveExistingQuotes.

        */ @org.junit.jupiter.api.Test - public void testQuote_PreserveExistingQuotes() - { + public void testQuote_PreserveExistingQuotes() { String src = "\'This is a test\'"; - char[] escaped = { '\'', '\"' }; - String result = StringUtils.quoteAndEscape( src, '\'', escaped, '\\', false ); + char[] escaped = {'\'', '\"'}; + String result = StringUtils.quoteAndEscape(src, '\'', escaped, '\\', false); - assertEquals( src, result ); + assertEquals(src, result); } /** *

        testQuote_WrapExistingQuotesWhenForceIsTrue.

        */ @org.junit.jupiter.api.Test - public void testQuote_WrapExistingQuotesWhenForceIsTrue() - { + public void testQuote_WrapExistingQuotesWhenForceIsTrue() { String src = "\'This is a test\'"; String check = "\'\\\'This is a test\\\'\'"; - char[] escaped = { '\'', '\"' }; - String result = StringUtils.quoteAndEscape( src, '\'', escaped, '\\', true ); + char[] escaped = {'\'', '\"'}; + String result = StringUtils.quoteAndEscape(src, '\'', escaped, '\\', true); - assertEquals( check, result ); + assertEquals(check, result); } /** *

        testQuote_ShortVersion_SingleQuotesPreserved.

        */ @org.junit.jupiter.api.Test - public void testQuote_ShortVersion_SingleQuotesPreserved() - { + public void testQuote_ShortVersion_SingleQuotesPreserved() { String src = "\'This is a test\'"; - String result = StringUtils.quoteAndEscape( src, '\'' ); + String result = StringUtils.quoteAndEscape(src, '\''); - assertEquals( src, result ); + assertEquals(src, result); } /** *

        testSplit.

        */ @org.junit.jupiter.api.Test - public void testSplit() - { + public void testSplit() { String[] tokens; - tokens = StringUtils.split( "", ", " ); - assertNotNull( tokens ); - assertEquals( Arrays.asList( new String[0] ), Arrays.asList( tokens ) ); + tokens = StringUtils.split("", ", "); + assertNotNull(tokens); + assertEquals(Arrays.asList(new String[0]), Arrays.asList(tokens)); - tokens = StringUtils.split( ", ,,, ,", ", " ); - assertNotNull( tokens ); - assertEquals( Arrays.asList( new String[0] ), Arrays.asList( tokens ) ); + tokens = StringUtils.split(", ,,, ,", ", "); + assertNotNull(tokens); + assertEquals(Arrays.asList(new String[0]), Arrays.asList(tokens)); - tokens = StringUtils.split( "this", ", " ); - assertNotNull( tokens ); - assertEquals( Arrays.asList( new String[] { "this" } ), Arrays.asList( tokens ) ); + tokens = StringUtils.split("this", ", "); + assertNotNull(tokens); + assertEquals(Arrays.asList(new String[] {"this"}), Arrays.asList(tokens)); - tokens = StringUtils.split( "this is a test", ", " ); - assertNotNull( tokens ); - assertEquals( Arrays.asList( new String[] { "this", "is", "a", "test" } ), Arrays.asList( tokens ) ); + tokens = StringUtils.split("this is a test", ", "); + assertNotNull(tokens); + assertEquals(Arrays.asList(new String[] {"this", "is", "a", "test"}), Arrays.asList(tokens)); - tokens = StringUtils.split( " this is a test ", ", " ); - assertNotNull( tokens ); - assertEquals( Arrays.asList( new String[] { "this", "is", "a", "test" } ), Arrays.asList( tokens ) ); + tokens = StringUtils.split(" this is a test ", ", "); + assertNotNull(tokens); + assertEquals(Arrays.asList(new String[] {"this", "is", "a", "test"}), Arrays.asList(tokens)); - tokens = StringUtils.split( "this is a test, really", ", " ); - assertNotNull( tokens ); - assertEquals( Arrays.asList( new String[] { "this", "is", "a", "test", "really" } ), Arrays.asList( tokens ) ); + tokens = StringUtils.split("this is a test, really", ", "); + assertNotNull(tokens); + assertEquals(Arrays.asList(new String[] {"this", "is", "a", "test", "really"}), Arrays.asList(tokens)); } /** @@ -321,18 +300,15 @@ public void testSplit() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testRemoveDuplicateWhitespace() - throws Exception - { + public void testRemoveDuplicateWhitespace() throws Exception { String s = "this is test "; - assertEquals( "this is test ", StringUtils.removeDuplicateWhitespace( s ) ); + assertEquals("this is test ", StringUtils.removeDuplicateWhitespace(s)); s = "this \r\n is \n \r test "; - assertEquals( "this is test ", StringUtils.removeDuplicateWhitespace( s ) ); + assertEquals("this is test ", StringUtils.removeDuplicateWhitespace(s)); s = " this \r\n is \n \r test"; - assertEquals( " this is test", StringUtils.removeDuplicateWhitespace( s ) ); + assertEquals(" this is test", StringUtils.removeDuplicateWhitespace(s)); s = "this \r\n is \n \r test \n "; - assertEquals( "this is test ", StringUtils.removeDuplicateWhitespace( s ) ); - + assertEquals("this is test ", StringUtils.removeDuplicateWhitespace(s)); } /** @@ -341,22 +317,17 @@ public void testRemoveDuplicateWhitespace() * @throws java.lang.Exception if any. */ @Test - public void testUnifyLineSeparators() - throws Exception - { + public void testUnifyLineSeparators() throws Exception { String s = "this\r\nis\na\r\ntest"; - try - { - StringUtils.unifyLineSeparators( s, "abs" ); - assertTrue( false, "Exception NOT catched" ); - } - catch ( IllegalArgumentException e ) - { - assertTrue( true, "Exception catched" ); + try { + StringUtils.unifyLineSeparators(s, "abs"); + assertTrue(false, "Exception NOT catched"); + } catch (IllegalArgumentException e) { + assertTrue(true, "Exception catched"); } - assertEquals( "this\nis\na\ntest", StringUtils.unifyLineSeparators( s, "\n" ) ); - assertEquals( "this\r\nis\r\na\r\ntest", StringUtils.unifyLineSeparators( s, "\r\n" ) ); + assertEquals("this\nis\na\ntest", StringUtils.unifyLineSeparators(s, "\n")); + assertEquals("this\r\nis\r\na\r\ntest", StringUtils.unifyLineSeparators(s, "\r\n")); } } diff --git a/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java b/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java index 7e7d0112..63a39607 100644 --- a/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java +++ b/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java @@ -16,6 +16,12 @@ * limitations under the License. */ +import java.util.Vector; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotSame; import static org.junit.jupiter.api.Assertions.assertNull; @@ -23,12 +29,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; -import java.util.Vector; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - /** * Created on 21/06/2003 * @@ -36,8 +36,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class SweeperPoolTest -{ +public class SweeperPoolTest { /** The pool under test */ TestObjectPool pool; @@ -58,44 +57,41 @@ public class SweeperPoolTest * Test the pool limits it's size, and disposes unneeded objects correctly */ @Test - public void testMaxSize() - { + public void testMaxSize() { int sweepInterval = 0; int initialCapacity = 5; int maxSize = 2; int minSize = 1; int triggerSize = 2; - pool = new TestObjectPool( maxSize, minSize, initialCapacity, sweepInterval, triggerSize ); + pool = new TestObjectPool(maxSize, minSize, initialCapacity, sweepInterval, triggerSize); Object tmp = pool.get(); - assertNull( tmp, "Expected object from pool to be null" ); - pool.put( o1 ); - assertEquals( 1, pool.getSize(), "Expected pool to contain 1 object" ); + assertNull(tmp, "Expected object from pool to be null"); + pool.put(o1); + assertEquals(1, pool.getSize(), "Expected pool to contain 1 object"); tmp = pool.get(); - assertSame( tmp, o1, "Expected returned pool object to be the same as the one put in" ); - pool.put( o1 ); - pool.put( o2 ); - assertEquals( 2, pool.getSize(), "Expected pool to contain 2 objects" ); - pool.put( o3 ); - assertEquals( 2, pool.getSize(), "Expected pool to contain only a maximum of 2 objects." ); - assertEquals( 1, pool.testGetDisposedObjects().size(), "Expected 1 disposed pool object" ); + assertSame(tmp, o1, "Expected returned pool object to be the same as the one put in"); + pool.put(o1); + pool.put(o2); + assertEquals(2, pool.getSize(), "Expected pool to contain 2 objects"); + pool.put(o3); + assertEquals(2, pool.getSize(), "Expected pool to contain only a maximum of 2 objects."); + assertEquals(1, pool.testGetDisposedObjects().size(), "Expected 1 disposed pool object"); tmp = pool.testGetDisposedObjects().iterator().next(); tmp = pool.get(); - assertEquals( 1, pool.getSize(), "Expected pool size to be 1 after removing one object" ); + assertEquals(1, pool.getSize(), "Expected pool size to be 1 after removing one object"); Object tmp2 = pool.get(); - assertEquals( 0, pool.getSize(), "Expected pool size to be 0 after removing 2 objects" ); - assertNotSame( tmp, tmp2, "Expected returned objects to be different" ); - + assertEquals(0, pool.getSize(), "Expected pool size to be 0 after removing 2 objects"); + assertNotSame(tmp, tmp2, "Expected returned objects to be different"); } /** *

        testSweepAndTrim1.

        */ @org.junit.jupiter.api.Test - public void testSweepAndTrim1() - { + public void testSweepAndTrim1() { // test trigger int sweepInterval = 1; int initialCapacity = 5; @@ -103,26 +99,21 @@ public void testSweepAndTrim1() int minSize = 1; int triggerSize = 2; - pool = new TestObjectPool( maxSize, minSize, initialCapacity, sweepInterval, triggerSize ); - pool.put( o1 ); - pool.put( o2 ); - pool.put( o3 ); - pool.put( o4 ); + pool = new TestObjectPool(maxSize, minSize, initialCapacity, sweepInterval, triggerSize); + pool.put(o1); + pool.put(o2); + pool.put(o3); + pool.put(o4); // give the sweeper some time to run - synchronized ( this ) - { - try - { - wait( 2 * 1000 ); - } - catch ( InterruptedException e ) - { - fail( "Unexpected exception thrown. e=" + Tracer.traceToString( e ) ); + synchronized (this) { + try { + wait(2 * 1000); + } catch (InterruptedException e) { + fail("Unexpected exception thrown. e=" + Tracer.traceToString(e)); } } - assertEquals( 1, pool.getSize(), "Expected pool to only contain 1 object" ); - assertEquals( 3, pool.testGetDisposedObjects().size(), "Expected 3 disposed objects" ); - + assertEquals(1, pool.getSize(), "Expected pool to only contain 1 object"); + assertEquals(3, pool.testGetDisposedObjects().size(), "Expected 3 disposed objects"); } /** @@ -131,9 +122,7 @@ public void testSweepAndTrim1() * @throws java.lang.Exception if any. */ @BeforeEach - public void setUp() - throws Exception - { + public void setUp() throws Exception { o1 = new Object(); o2 = new Object(); o3 = new Object(); @@ -148,43 +137,32 @@ public void setUp() * @throws java.lang.Exception if any. */ @AfterEach - public void tearDown() - throws Exception - { + public void tearDown() throws Exception { pool.dispose(); - assertTrue( pool.isDisposed() ); + assertTrue(pool.isDisposed()); pool = null; - } - class TestObjectPool - extends SweeperPool - { + class TestObjectPool extends SweeperPool { private Vector disposedObjects = new Vector(); - public TestObjectPool( int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize ) - { - super( maxSize, minSize, intialCapacity, sweepInterval, triggerSize ); + public TestObjectPool(int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize) { + super(maxSize, minSize, intialCapacity, sweepInterval, triggerSize); } - public void reset() - { + public void reset() { disposedObjects.clear(); } /** * @see nz.co.bonzo.beans.castor.pool.ObjectPool#objectDisposed(java.lang.Object) */ - public void objectDisposed( Object obj ) - { - disposedObjects.add( obj ); + public void objectDisposed(Object obj) { + disposedObjects.add(obj); } - public Vector testGetDisposedObjects() - { + public Vector testGetDisposedObjects() { return disposedObjects; } - } - } diff --git a/src/test/java/org/codehaus/plexus/util/TestThreadManager.java b/src/test/java/org/codehaus/plexus/util/TestThreadManager.java index 1ee704b2..dda5b3b6 100644 --- a/src/test/java/org/codehaus/plexus/util/TestThreadManager.java +++ b/src/test/java/org/codehaus/plexus/util/TestThreadManager.java @@ -17,7 +17,6 @@ */ import java.util.Collection; -import java.util.Iterator; import java.util.Vector; import java.util.logging.Logger; @@ -32,8 +31,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class TestThreadManager -{ +public class TestThreadManager { // ~ Instance fields ---------------------------------------------------------------------------- /** Test threads which have completed running */ @@ -60,8 +58,7 @@ public class TestThreadManager * * @param notify a {@link java.lang.Object} object. */ - public TestThreadManager( Object notify ) - { + public TestThreadManager(Object notify) { super(); this.notify = notify; } @@ -73,23 +70,20 @@ public TestThreadManager( Object notify ) * * @return a {@link java.util.Collection} object. */ - public Collection getRunThreads() - { + public Collection getRunThreads() { return runThreads; } /** *

        runTestThreads.

        */ - public void runTestThreads() - { + public void runTestThreads() { failedThreads.clear(); // use an array as the tests may run very quickly // and modify the toRunThreads vector and hence // cause a Concurrent ModificationException on an // iterator - for ( AbstractTestThread toRunThread : toRunThreads ) - { + for (AbstractTestThread toRunThread : toRunThreads) { toRunThread.start(); } } @@ -99,8 +93,7 @@ public void runTestThreads() * * @return a {@link java.util.Collection} object. */ - public Collection getFailedTests() - { + public Collection getFailedTests() { return failedThreads; } @@ -109,8 +102,7 @@ public Collection getFailedTests() * * @return a {@link java.lang.Object} object. */ - public Object getNotifyObject() - { + public Object getNotifyObject() { return notify; } @@ -119,8 +111,7 @@ public Object getNotifyObject() * * @return a boolean. */ - public boolean hasFailedThreads() - { + public boolean hasFailedThreads() { return !failedThreads.isEmpty(); } @@ -129,8 +120,7 @@ public boolean hasFailedThreads() * * @return DOCUMENT ME! */ - public boolean isStillRunningThreads() - { + public boolean isStillRunningThreads() { return !toRunThreads.isEmpty(); } @@ -139,16 +129,14 @@ public boolean isStillRunningThreads() * * @return a {@link java.util.Collection} object. */ - public Collection getToRunThreads() - { + public Collection getToRunThreads() { return toRunThreads; } /** * DOCUMENT ME! */ - public void clear() - { + public void clear() { toRunThreads.clear(); runThreads.clear(); failedThreads.clear(); @@ -163,20 +151,16 @@ public void clear() * * @param thread a {@link org.codehaus.plexus.util.AbstractTestThread} object. */ - public synchronized void completed( AbstractTestThread thread ) - { - toRunThreads.remove( thread ); - runThreads.add( thread ); - if ( thread.hasFailed() ) - { - failedThreads.add( thread ); + public synchronized void completed(AbstractTestThread thread) { + toRunThreads.remove(thread); + runThreads.add(thread); + if (thread.hasFailed()) { + failedThreads.add(thread); } // wakeup thread which is waiting for the threads to complete // execution - if ( toRunThreads.isEmpty() ) - { - synchronized ( notify ) - { + if (toRunThreads.isEmpty()) { + synchronized (notify) { notify.notify(); } } @@ -187,37 +171,30 @@ public synchronized void completed( AbstractTestThread thread ) * * @param thread DOCUMENT ME! */ - public void doRegisterThread( AbstractTestThread thread ) - { - } + public void doRegisterThread(AbstractTestThread thread) {} /** *

        registerThread.

        * * @param thread a {@link org.codehaus.plexus.util.AbstractTestThread} object. */ - public final void registerThread( AbstractTestThread thread ) - { - thread.setThreadRegistry( this ); - if ( toRunThreads.contains( thread ) == false ) - { - toRunThreads.add( thread ); - doRegisterThread( thread ); + public final void registerThread(AbstractTestThread thread) { + thread.setThreadRegistry(this); + if (toRunThreads.contains(thread) == false) { + toRunThreads.add(thread); + doRegisterThread(thread); } - } /** * Put all the runThreads back in the que to be run again and clear the failedTest collection */ - public void reset() - { + public void reset() { toRunThreads.clear(); - for ( Object runThread : runThreads ) - { + for (Object runThread : runThreads) { AbstractTestThread test = (AbstractTestThread) runThread; test.reset(); - registerThread( test ); + registerThread(test); } runThreads.clear(); diff --git a/src/test/java/org/codehaus/plexus/util/Tracer.java b/src/test/java/org/codehaus/plexus/util/Tracer.java index 5bf4f84d..d5ff964d 100644 --- a/src/test/java/org/codehaus/plexus/util/Tracer.java +++ b/src/test/java/org/codehaus/plexus/util/Tracer.java @@ -29,14 +29,12 @@ * @version $Id: $Id * @since 3.4.0 */ -public class Tracer -{ +public class Tracer { /** * Constructor */ - private Tracer() - { + private Tracer() { super(); } @@ -46,15 +44,12 @@ private Tracer() * @param t a {@link java.lang.Throwable} object. * @return a {@link java.lang.String} object. */ - public static String traceToString( Throwable t ) - { - if ( t == null ) - { + public static String traceToString(Throwable t) { + if (t == null) { return null; } StringWriter sw = new StringWriter(); - t.printStackTrace( new PrintWriter( sw ) ); + t.printStackTrace(new PrintWriter(sw)); return sw.toString(); } - } diff --git a/src/test/java/org/codehaus/plexus/util/WalkCollector.java b/src/test/java/org/codehaus/plexus/util/WalkCollector.java index c5c4e018..183e7f94 100644 --- a/src/test/java/org/codehaus/plexus/util/WalkCollector.java +++ b/src/test/java/org/codehaus/plexus/util/WalkCollector.java @@ -20,9 +20,7 @@ import java.util.ArrayList; import java.util.List; -class WalkCollector - implements DirectoryWalkListener -{ +class WalkCollector implements DirectoryWalkListener { public List steps; public File startingDir; @@ -38,8 +36,7 @@ class WalkCollector /** *

        Constructor for WalkCollector.

        */ - public WalkCollector() - { + public WalkCollector() { steps = new ArrayList(); startCount = 0; finishCount = 0; @@ -48,34 +45,30 @@ public WalkCollector() } /** {@inheritDoc} */ - public void directoryWalkStarting( File basedir ) - { - debug( "Walk Starting: " + basedir ); + public void directoryWalkStarting(File basedir) { + debug("Walk Starting: " + basedir); startCount++; startingDir = basedir; } /** {@inheritDoc} */ - public void directoryWalkStep( int percentage, File file ) - { - percentageLow = Math.min( percentageLow, percentage ); - percentageHigh = Math.max( percentageHigh, percentage ); - debug( "Walk Step: [" + percentage + "%] " + file ); - steps.add( file ); + public void directoryWalkStep(int percentage, File file) { + percentageLow = Math.min(percentageLow, percentage); + percentageHigh = Math.max(percentageHigh, percentage); + debug("Walk Step: [" + percentage + "%] " + file); + steps.add(file); } /** *

        directoryWalkFinished.

        */ - public void directoryWalkFinished() - { - debug( "Walk Finished." ); + public void directoryWalkFinished() { + debug("Walk Finished."); finishCount++; } /** {@inheritDoc} */ - public void debug( String message ) - { - System.out.println( message ); + public void debug(String message) { + System.out.println(message); } } diff --git a/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java b/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java index 4e19f71f..fb6ddf3d 100644 --- a/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java @@ -16,10 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.fail; - import java.util.Arrays; import java.util.Locale; import java.util.Properties; @@ -27,6 +23,10 @@ import org.codehaus.plexus.util.Os; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.fail; + /** *

        CommandLineUtilsTest class.

        * @@ -34,39 +34,31 @@ * @version $Id: $Id * @since 3.4.0 */ -@SuppressWarnings( { "JavaDoc", "deprecation" } ) -public class CommandLineUtilsTest -{ +@SuppressWarnings({"JavaDoc", "deprecation"}) +public class CommandLineUtilsTest { /** *

        testQuoteArguments.

        */ @Test - public void testQuoteArguments() - { - try - { - String result = CommandLineUtils.quote( "Hello" ); - System.out.println( result ); - assertEquals( "Hello", result ); - result = CommandLineUtils.quote( "Hello World" ); - System.out.println( result ); - assertEquals( "\"Hello World\"", result ); - result = CommandLineUtils.quote( "\"Hello World\"" ); - System.out.println( result ); - assertEquals( "\'\"Hello World\"\'", result ); - } - catch ( Exception e ) - { - fail( e.getMessage() ); + public void testQuoteArguments() { + try { + String result = CommandLineUtils.quote("Hello"); + System.out.println(result); + assertEquals("Hello", result); + result = CommandLineUtils.quote("Hello World"); + System.out.println(result); + assertEquals("\"Hello World\"", result); + result = CommandLineUtils.quote("\"Hello World\""); + System.out.println(result); + assertEquals("\'\"Hello World\"\'", result); + } catch (Exception e) { + fail(e.getMessage()); } - try - { - CommandLineUtils.quote( "\"Hello \'World\'\'" ); + try { + CommandLineUtils.quote("\"Hello \'World\'\'"); fail(); - } - catch ( Exception e ) - { + } catch (Exception e) { } } @@ -76,14 +68,11 @@ public void testQuoteArguments() * @throws java.lang.Exception if any. */ @Test - public void testGetSystemEnvVarsCaseInsensitive() - throws Exception - { - Properties vars = CommandLineUtils.getSystemEnvVars( false ); - for ( Object o : vars.keySet() ) - { + public void testGetSystemEnvVarsCaseInsensitive() throws Exception { + Properties vars = CommandLineUtils.getSystemEnvVars(false); + for (Object o : vars.keySet()) { String variable = (String) o; - assertEquals( variable.toUpperCase( Locale.ENGLISH ), variable ); + assertEquals(variable.toUpperCase(Locale.ENGLISH), variable); } } @@ -93,18 +82,14 @@ public void testGetSystemEnvVarsCaseInsensitive() * @throws java.lang.Exception if any. */ @Test - public void testGetSystemEnvVarsWindows() - throws Exception - { - if ( !Os.isFamily( Os.FAMILY_WINDOWS ) ) - { + public void testGetSystemEnvVarsWindows() throws Exception { + if (!Os.isFamily(Os.FAMILY_WINDOWS)) { return; } Properties vars = CommandLineUtils.getSystemEnvVars(); - for ( Object o : vars.keySet() ) - { + for (Object o : vars.keySet()) { String variable = (String) o; - assertEquals( variable.toUpperCase( Locale.ENGLISH ), variable ); + assertEquals(variable.toUpperCase(Locale.ENGLISH), variable); } } @@ -114,29 +99,24 @@ public void testGetSystemEnvVarsWindows() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testTranslateCommandline() - throws Exception - { - assertCmdLineArgs( new String[] {}, null ); - assertCmdLineArgs( new String[] {}, "" ); + public void testTranslateCommandline() throws Exception { + assertCmdLineArgs(new String[] {}, null); + assertCmdLineArgs(new String[] {}, ""); - assertCmdLineArgs( new String[] { "foo", "bar" }, "foo bar" ); - assertCmdLineArgs( new String[] { "foo", "bar" }, " foo bar " ); + assertCmdLineArgs(new String[] {"foo", "bar"}, "foo bar"); + assertCmdLineArgs(new String[] {"foo", "bar"}, " foo bar "); - assertCmdLineArgs( new String[] { "foo", " double quotes ", "bar" }, "foo \" double quotes \" bar" ); - assertCmdLineArgs( new String[] { "foo", " single quotes ", "bar" }, "foo ' single quotes ' bar" ); + assertCmdLineArgs(new String[] {"foo", " double quotes ", "bar"}, "foo \" double quotes \" bar"); + assertCmdLineArgs(new String[] {"foo", " single quotes ", "bar"}, "foo ' single quotes ' bar"); - assertCmdLineArgs( new String[] { "foo", " \" ", "bar" }, "foo ' \" ' bar" ); - assertCmdLineArgs( new String[] { "foo", " ' ", "bar" }, "foo \" ' \" bar" ); + assertCmdLineArgs(new String[] {"foo", " \" ", "bar"}, "foo ' \" ' bar"); + assertCmdLineArgs(new String[] {"foo", " ' ", "bar"}, "foo \" ' \" bar"); } - private void assertCmdLineArgs( String[] expected, String cmdLine ) - throws Exception - { - String[] actual = CommandLineUtils.translateCommandline( cmdLine ); - assertNotNull( actual ); - assertEquals( expected.length, actual.length ); - assertEquals( Arrays.asList( expected ), Arrays.asList( actual ) ); + private void assertCmdLineArgs(String[] expected, String cmdLine) throws Exception { + String[] actual = CommandLineUtils.translateCommandline(cmdLine); + assertNotNull(actual); + assertEquals(expected.length, actual.length); + assertEquals(Arrays.asList(expected), Arrays.asList(actual)); } - } diff --git a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java index 43486862..dffead1c 100644 --- a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java +++ b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java @@ -16,10 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - import java.io.File; import java.io.IOException; import java.io.Writer; @@ -31,8 +27,12 @@ import org.codehaus.plexus.util.cli.shell.BourneShell; import org.codehaus.plexus.util.cli.shell.CmdShell; import org.codehaus.plexus.util.cli.shell.Shell; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /** *

        CommandlineTest class.

        @@ -41,8 +41,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class CommandlineTest -{ +public class CommandlineTest { private String baseDir; /** @@ -51,14 +50,11 @@ public class CommandlineTest * @throws java.lang.Exception if any. */ @BeforeEach - public void setUp() - throws Exception - { - baseDir = System.getProperty( "basedir" ); - - if ( baseDir == null ) - { - baseDir = new File( "." ).getCanonicalPath(); + public void setUp() throws Exception { + baseDir = System.getProperty("basedir"); + + if (baseDir == null) { + baseDir = new File(".").getCanonicalPath(); } } @@ -66,28 +62,26 @@ public void setUp() *

        testCommandlineWithoutCommandInConstructor.

        */ @Test - public void testCommandlineWithoutCommandInConstructor() - { - Commandline cmd = new Commandline( new Shell() ); - cmd.setWorkingDirectory( baseDir ); - cmd.createArgument().setValue( "cd" ); - cmd.createArgument().setValue( "." ); + public void testCommandlineWithoutCommandInConstructor() { + Commandline cmd = new Commandline(new Shell()); + cmd.setWorkingDirectory(baseDir); + cmd.createArgument().setValue("cd"); + cmd.createArgument().setValue("."); // NOTE: cmd.toString() uses CommandLineUtils.toString( String[] ), which *quotes* the result. - assertEquals( "cd .", cmd.toString() ); + assertEquals("cd .", cmd.toString()); } /** *

        testCommandlineWithCommandInConstructor.

        */ @Test - public void testCommandlineWithCommandInConstructor() - { - Commandline cmd = new Commandline( "cd .", new Shell() ); - cmd.setWorkingDirectory( baseDir ); + public void testCommandlineWithCommandInConstructor() { + Commandline cmd = new Commandline("cd .", new Shell()); + cmd.setWorkingDirectory(baseDir); // NOTE: cmd.toString() uses CommandLineUtils.toString( String[] ), which *quotes* the result. - assertEquals( "cd .", cmd.toString() ); + assertEquals("cd .", cmd.toString()); } /** @@ -96,20 +90,18 @@ public void testCommandlineWithCommandInConstructor() * @throws java.lang.Exception if any. */ @Test - public void testExecuteBinaryOnPath() - throws Exception - { + public void testExecuteBinaryOnPath() throws Exception { // Maven startup script on PATH is required for this test Commandline cmd = new Commandline(); - cmd.setWorkingDirectory( baseDir ); - cmd.setExecutable( "mvn" ); - assertEquals( "mvn", cmd.getShell().getOriginalExecutable() ); - cmd.createArg().setValue( "-version" ); + cmd.setWorkingDirectory(baseDir); + cmd.setExecutable("mvn"); + assertEquals("mvn", cmd.getShell().getOriginalExecutable()); + cmd.createArg().setValue("-version"); Process process = cmd.execute(); - String out = IOUtil.toString( process.getInputStream() ); - assertTrue( out.contains( "Apache Maven" ) ); - assertTrue( out.contains( "Maven home:" ) ); - assertTrue( out.contains( "Java version:" ) ); + String out = IOUtil.toString(process.getInputStream()); + assertTrue(out.contains("Apache Maven")); + assertTrue(out.contains("Maven home:")); + assertTrue(out.contains("Java version:")); } /** @@ -118,70 +110,64 @@ public void testExecuteBinaryOnPath() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testExecute() - throws Exception - { + public void testExecute() throws Exception { // allow it to detect the proper shell here. Commandline cmd = new Commandline(); - cmd.setWorkingDirectory( baseDir ); - cmd.setExecutable( "echo" ); - assertEquals( "echo", cmd.getShell().getOriginalExecutable() ); - cmd.createArgument().setValue( "Hello" ); + cmd.setWorkingDirectory(baseDir); + cmd.setExecutable("echo"); + assertEquals("echo", cmd.getShell().getOriginalExecutable()); + cmd.createArgument().setValue("Hello"); Process process = cmd.execute(); - assertEquals( "Hello", IOUtil.toString( process.getInputStream() ).trim() ); + assertEquals("Hello", IOUtil.toString(process.getInputStream()).trim()); } /** *

        testSetLine.

        */ @Test - public void testSetLine() - { - Commandline cmd = new Commandline( new Shell() ); - cmd.setWorkingDirectory( baseDir ); - cmd.setExecutable( "echo" ); - cmd.createArgument().setLine( null ); - cmd.createArgument().setLine( "Hello" ); + public void testSetLine() { + Commandline cmd = new Commandline(new Shell()); + cmd.setWorkingDirectory(baseDir); + cmd.setExecutable("echo"); + cmd.createArgument().setLine(null); + cmd.createArgument().setLine("Hello"); // NOTE: cmd.toString() uses CommandLineUtils.toString( String[] ), which *quotes* the result. - assertEquals( "echo Hello", cmd.toString() ); + assertEquals("echo Hello", cmd.toString()); } /** *

        testCreateCommandInReverseOrder.

        */ @Test - public void testCreateCommandInReverseOrder() - { - Commandline cmd = new Commandline( new Shell() ); - cmd.setWorkingDirectory( baseDir ); - cmd.createArgument().setValue( "." ); - cmd.createArgument( true ).setValue( "cd" ); + public void testCreateCommandInReverseOrder() { + Commandline cmd = new Commandline(new Shell()); + cmd.setWorkingDirectory(baseDir); + cmd.createArgument().setValue("."); + cmd.createArgument(true).setValue("cd"); // NOTE: cmd.toString() uses CommandLineUtils.toString( String[] ), which *quotes* the result. - assertEquals( "cd .", cmd.toString() ); + assertEquals("cd .", cmd.toString()); } /** *

        testSetFile.

        */ @Test - public void testSetFile() - { - Commandline cmd = new Commandline( new Shell() ); - cmd.setWorkingDirectory( baseDir ); - cmd.createArgument().setValue( "more" ); - File f = new File( "test.txt" ); - cmd.createArgument().setFile( f ); + public void testSetFile() { + Commandline cmd = new Commandline(new Shell()); + cmd.setWorkingDirectory(baseDir); + cmd.createArgument().setValue("more"); + File f = new File("test.txt"); + cmd.createArgument().setFile(f); String fileName = f.getAbsolutePath(); - if ( fileName.contains( " " ) ) - { + if (fileName.contains(" ")) { fileName = "\"" + fileName + "\""; } // NOTE: cmd.toString() uses CommandLineUtils.toString( String[] ), which *quotes* the result. - assertEquals( "more " + fileName, cmd.toString() ); + assertEquals("more " + fileName, cmd.toString()); } /** @@ -190,22 +176,20 @@ public void testSetFile() * @throws java.lang.Exception if any. */ @Test - public void testGetShellCommandLineWindows() - throws Exception - { - Commandline cmd = new Commandline( new CmdShell() ); - cmd.setExecutable( "c:\\Program Files\\xxx" ); - cmd.addArguments( new String[] { "a", "b" } ); + public void testGetShellCommandLineWindows() throws Exception { + Commandline cmd = new Commandline(new CmdShell()); + cmd.setExecutable("c:\\Program Files\\xxx"); + cmd.addArguments(new String[] {"a", "b"}); String[] shellCommandline = cmd.getShellCommandline(); - assertEquals( 4, shellCommandline.length, "Command line size" ); + assertEquals(4, shellCommandline.length, "Command line size"); - assertEquals( "cmd.exe", shellCommandline[0] ); - assertEquals( "/X", shellCommandline[1] ); - assertEquals( "/C", shellCommandline[2] ); + assertEquals("cmd.exe", shellCommandline[0]); + assertEquals("/X", shellCommandline[1]); + assertEquals("/C", shellCommandline[2]); String expectedShellCmd = "\"c:" + File.separator + "Program Files" + File.separator + "xxx\" a b"; expectedShellCmd = "\"" + expectedShellCmd + "\""; - assertEquals( expectedShellCmd, shellCommandline[3] ); + assertEquals(expectedShellCmd, shellCommandline[3]); } /** @@ -214,23 +198,21 @@ public void testGetShellCommandLineWindows() * @throws java.lang.Exception if any. */ @Test - public void testGetShellCommandLineWindowsWithSeveralQuotes() - throws Exception - { - Commandline cmd = new Commandline( new CmdShell() ); - cmd.setExecutable( "c:\\Program Files\\xxx" ); - cmd.addArguments( new String[] { "c:\\Documents and Settings\\whatever", "b" } ); + public void testGetShellCommandLineWindowsWithSeveralQuotes() throws Exception { + Commandline cmd = new Commandline(new CmdShell()); + cmd.setExecutable("c:\\Program Files\\xxx"); + cmd.addArguments(new String[] {"c:\\Documents and Settings\\whatever", "b"}); String[] shellCommandline = cmd.getShellCommandline(); - assertEquals( 4, shellCommandline.length, "Command line size" ); + assertEquals(4, shellCommandline.length, "Command line size"); - assertEquals( "cmd.exe", shellCommandline[0] ); - assertEquals( "/X", shellCommandline[1] ); - assertEquals( "/C", shellCommandline[2] ); + assertEquals("cmd.exe", shellCommandline[0]); + assertEquals("/X", shellCommandline[1]); + assertEquals("/C", shellCommandline[2]); String expectedShellCmd = "\"c:" + File.separator + "Program Files" + File.separator - + "xxx\" \"c:\\Documents and Settings\\whatever\" b"; + + "xxx\" \"c:\\Documents and Settings\\whatever\" b"; expectedShellCmd = "\"" + expectedShellCmd + "\""; - assertEquals( expectedShellCmd, shellCommandline[3] ); + assertEquals(expectedShellCmd, shellCommandline[3]); } /** @@ -239,25 +221,22 @@ public void testGetShellCommandLineWindowsWithSeveralQuotes() * @throws java.lang.Exception */ @Test - public void testGetShellCommandLineBash() - throws Exception - { - Commandline cmd = new Commandline( new BourneShell() ); - cmd.setExecutable( "/bin/echo" ); - cmd.addArguments( new String[] { "hello world" } ); + public void testGetShellCommandLineBash() throws Exception { + Commandline cmd = new Commandline(new BourneShell()); + cmd.setExecutable("/bin/echo"); + cmd.addArguments(new String[] {"hello world"}); String[] shellCommandline = cmd.getShellCommandline(); - assertEquals( 3, shellCommandline.length, "Command line size" ); + assertEquals(3, shellCommandline.length, "Command line size"); - assertEquals( "/bin/sh", shellCommandline[0] ); - assertEquals( "-c", shellCommandline[1] ); + assertEquals("/bin/sh", shellCommandline[0]); + assertEquals("-c", shellCommandline[1]); String expectedShellCmd = "'/bin/echo' 'hello world'"; - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { expectedShellCmd = "'\\bin\\echo' \'hello world\'"; } - assertEquals( expectedShellCmd, shellCommandline[2] ); + assertEquals(expectedShellCmd, shellCommandline[2]); } /** @@ -266,28 +245,25 @@ public void testGetShellCommandLineBash() * @throws java.lang.Exception */ @Test - public void testGetShellCommandLineBash_WithWorkingDirectory() - throws Exception - { - Commandline cmd = new Commandline( new BourneShell() ); - cmd.setExecutable( "/bin/echo" ); - cmd.addArguments( new String[] { "hello world" } ); + public void testGetShellCommandLineBash_WithWorkingDirectory() throws Exception { + Commandline cmd = new Commandline(new BourneShell()); + cmd.setExecutable("/bin/echo"); + cmd.addArguments(new String[] {"hello world"}); File root = File.listRoots()[0]; - File workingDirectory = new File( root, "path with spaces" ); - cmd.setWorkingDirectory( workingDirectory ); + File workingDirectory = new File(root, "path with spaces"); + cmd.setWorkingDirectory(workingDirectory); String[] shellCommandline = cmd.getShellCommandline(); - assertEquals( 3, shellCommandline.length, "Command line size" ); + assertEquals(3, shellCommandline.length, "Command line size"); - assertEquals( "/bin/sh", shellCommandline[0] ); - assertEquals( "-c", shellCommandline[1] ); + assertEquals("/bin/sh", shellCommandline[0]); + assertEquals("-c", shellCommandline[1]); String expectedShellCmd = "cd '" + root.getAbsolutePath() + "path with spaces' && '/bin/echo' 'hello world'"; - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { expectedShellCmd = "cd '" + root.getAbsolutePath() + "path with spaces' && '\\bin\\echo' 'hello world'"; } - assertEquals( expectedShellCmd, shellCommandline[2] ); + assertEquals(expectedShellCmd, shellCommandline[2]); } /** @@ -296,25 +272,22 @@ public void testGetShellCommandLineBash_WithWorkingDirectory() * @throws java.lang.Exception */ @Test - public void testGetShellCommandLineBash_WithSingleQuotedArg() - throws Exception - { - Commandline cmd = new Commandline( new BourneShell() ); - cmd.setExecutable( "/bin/echo" ); - cmd.addArguments( new String[] { "\'hello world\'" } ); + public void testGetShellCommandLineBash_WithSingleQuotedArg() throws Exception { + Commandline cmd = new Commandline(new BourneShell()); + cmd.setExecutable("/bin/echo"); + cmd.addArguments(new String[] {"\'hello world\'"}); String[] shellCommandline = cmd.getShellCommandline(); - assertEquals( 3, shellCommandline.length, "Command line size" ); + assertEquals(3, shellCommandline.length, "Command line size"); - assertEquals( "/bin/sh", shellCommandline[0] ); - assertEquals( "-c", shellCommandline[1] ); + assertEquals("/bin/sh", shellCommandline[0]); + assertEquals("-c", shellCommandline[1]); String expectedShellCmd = "'/bin/echo' ''\"'\"'hello world'\"'\"''"; - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - expectedShellCmd = expectedShellCmd.replace( "/bin/echo", "\\bin\\echo" ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + expectedShellCmd = expectedShellCmd.replace("/bin/echo", "\\bin\\echo"); } - assertEquals( expectedShellCmd, shellCommandline[2] ); + assertEquals(expectedShellCmd, shellCommandline[2]); } /** @@ -323,26 +296,21 @@ public void testGetShellCommandLineBash_WithSingleQuotedArg() * @throws java.lang.Exception if any. */ @Test - public void testGetShellCommandLineNonWindows() - throws Exception - { - Commandline cmd = new Commandline( new BourneShell() ); - cmd.setExecutable( "/usr/bin" ); - cmd.addArguments( new String[] { "a", "b" } ); + public void testGetShellCommandLineNonWindows() throws Exception { + Commandline cmd = new Commandline(new BourneShell()); + cmd.setExecutable("/usr/bin"); + cmd.addArguments(new String[] {"a", "b"}); String[] shellCommandline = cmd.getShellCommandline(); - assertEquals( 3, shellCommandline.length, "Command line size" ); + assertEquals(3, shellCommandline.length, "Command line size"); - assertEquals( "/bin/sh", shellCommandline[0] ); - assertEquals( "-c", shellCommandline[1] ); + assertEquals("/bin/sh", shellCommandline[0]); + assertEquals("-c", shellCommandline[1]); - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - assertEquals( "'\\usr\\bin' 'a' 'b'", shellCommandline[2] ); - } - else - { - assertEquals( "'/usr/bin' 'a' 'b'", shellCommandline[2] ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + assertEquals("'\\usr\\bin' 'a' 'b'", shellCommandline[2]); + } else { + assertEquals("'/usr/bin' 'a' 'b'", shellCommandline[2]); } } @@ -352,12 +320,10 @@ public void testGetShellCommandLineNonWindows() * @throws java.lang.Exception if any. */ @Test - public void testEnvironment() - throws Exception - { + public void testEnvironment() throws Exception { Commandline cmd = new Commandline(); - cmd.addEnvironment( "name", "value" ); - assertEquals( "name=value", cmd.getEnvironmentVariables()[0] ); + cmd.addEnvironment("name", "value"); + assertEquals("name=value", cmd.getEnvironmentVariables()[0]); } /** @@ -366,23 +332,19 @@ public void testEnvironment() * @throws java.lang.Exception if any. */ @Test - public void testEnvironmentWitOverrideSystemEnvironment() - throws Exception - { + public void testEnvironmentWitOverrideSystemEnvironment() throws Exception { Commandline cmd = new Commandline(); cmd.addSystemEnvironment(); - cmd.addEnvironment( "JAVA_HOME", "/usr/jdk1.5" ); + cmd.addEnvironment("JAVA_HOME", "/usr/jdk1.5"); String[] environmentVariables = cmd.getEnvironmentVariables(); - for ( String environmentVariable : environmentVariables ) - { - if ( "JAVA_HOME=/usr/jdk1.5".equals( environmentVariable ) ) - { + for (String environmentVariable : environmentVariables) { + if ("JAVA_HOME=/usr/jdk1.5".equals(environmentVariable)) { return; } } - fail( "can't find JAVA_HOME=/usr/jdk1.5" ); + fail("can't find JAVA_HOME=/usr/jdk1.5"); } /** @@ -391,14 +353,12 @@ public void testEnvironmentWitOverrideSystemEnvironment() * @throws java.lang.Exception */ @Test - public void testQuotedPathWithSingleApostrophe() - throws Exception - { - File dir = new File( System.getProperty( "basedir" ), "target/test/quotedpath'test" ); - createAndCallScript( dir, "echo Quoted" ); - - dir = new File( System.getProperty( "basedir" ), "target/test/quoted path'test" ); - createAndCallScript( dir, "echo Quoted" ); + public void testQuotedPathWithSingleApostrophe() throws Exception { + File dir = new File(System.getProperty("basedir"), "target/test/quotedpath'test"); + createAndCallScript(dir, "echo Quoted"); + + dir = new File(System.getProperty("basedir"), "target/test/quoted path'test"); + createAndCallScript(dir, "echo Quoted"); } /** @@ -407,11 +367,9 @@ public void testQuotedPathWithSingleApostrophe() * @throws java.lang.Exception */ @Test - public void testPathWithShellExpansionStrings() - throws Exception - { - File dir = new File( System.getProperty( "basedir" ), "target/test/dollar$test" ); - createAndCallScript( dir, "echo Quoted" ); + public void testPathWithShellExpansionStrings() throws Exception { + File dir = new File(System.getProperty("basedir"), "target/test/dollar$test"); + createAndCallScript(dir, "echo Quoted"); } /** @@ -420,20 +378,17 @@ public void testPathWithShellExpansionStrings() * @throws java.lang.Exception */ @Test - public void testQuotedPathWithQuotationMark() - throws Exception - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - System.out.println( "testQuotedPathWithQuotationMark() skipped on Windows" ); + public void testQuotedPathWithQuotationMark() throws Exception { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + System.out.println("testQuotedPathWithQuotationMark() skipped on Windows"); return; } - File dir = new File( System.getProperty( "basedir" ), "target/test/quotedpath\"test" ); - createAndCallScript( dir, "echo Quoted" ); + File dir = new File(System.getProperty("basedir"), "target/test/quotedpath\"test"); + createAndCallScript(dir, "echo Quoted"); - dir = new File( System.getProperty( "basedir" ), "target/test/quoted path\"test" ); - createAndCallScript( dir, "echo Quoted" ); + dir = new File(System.getProperty("basedir"), "target/test/quoted path\"test"); + createAndCallScript(dir, "echo Quoted"); } /** @@ -443,20 +398,17 @@ public void testQuotedPathWithQuotationMark() * @throws java.lang.Exception */ @Test - public void testQuotedPathWithQuotationMarkAndApostrophe() - throws Exception - { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - System.out.println( "testQuotedPathWithQuotationMarkAndApostrophe() skipped on Windows" ); + public void testQuotedPathWithQuotationMarkAndApostrophe() throws Exception { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + System.out.println("testQuotedPathWithQuotationMarkAndApostrophe() skipped on Windows"); return; } - File dir = new File( System.getProperty( "basedir" ), "target/test/quotedpath\"'test" ); - createAndCallScript( dir, "echo Quoted" ); + File dir = new File(System.getProperty("basedir"), "target/test/quotedpath\"'test"); + createAndCallScript(dir, "echo Quoted"); - dir = new File( System.getProperty( "basedir" ), "target/test/quoted path\"'test" ); - createAndCallScript( dir, "echo Quoted" ); + dir = new File(System.getProperty("basedir"), "target/test/quoted path\"'test"); + createAndCallScript(dir, "echo Quoted"); } /** @@ -465,34 +417,27 @@ public void testQuotedPathWithQuotationMarkAndApostrophe() * @throws java.lang.Exception */ @Test - public void testOnlyQuotedPath() - throws Exception - { - File dir = new File( System.getProperty( "basedir" ), "target/test/quotedpath\'test" ); + public void testOnlyQuotedPath() throws Exception { + File dir = new File(System.getProperty("basedir"), "target/test/quotedpath\'test"); - File javaHome = new File( System.getProperty( "java.home" ) ); + File javaHome = new File(System.getProperty("java.home")); File java; - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - java = new File( javaHome, "/bin/java.exe" ); - } - else - { - java = new File( javaHome, "/bin/java" ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + java = new File(javaHome, "/bin/java.exe"); + } else { + java = new File(javaHome, "/bin/java"); } - if ( !java.exists() ) - { - throw new IOException( java.getAbsolutePath() + " doesn't exist" ); + if (!java.exists()) { + throw new IOException(java.getAbsolutePath() + " doesn't exist"); } String javaBinStr = java.getAbsolutePath(); - if ( Os.isFamily( Os.FAMILY_WINDOWS ) && javaBinStr.contains( " " ) ) - { + if (Os.isFamily(Os.FAMILY_WINDOWS) && javaBinStr.contains(" ")) { javaBinStr = "\"" + javaBinStr + "\""; } - createAndCallScript( dir, javaBinStr + " -version" ); + createAndCallScript(dir, javaBinStr + " -version"); } /** @@ -501,38 +446,31 @@ public void testOnlyQuotedPath() * @throws java.lang.Exception if any. */ @Test - public void testDollarSignInArgumentPath() - throws Exception - { - File dir = new File( System.getProperty( "basedir" ), "target/test" ); - if ( !dir.exists() ) - { - assertTrue( dir.mkdirs(), "Can't create dir:" + dir.getAbsolutePath() ); + public void testDollarSignInArgumentPath() throws Exception { + File dir = new File(System.getProperty("basedir"), "target/test"); + if (!dir.exists()) { + assertTrue(dir.mkdirs(), "Can't create dir:" + dir.getAbsolutePath()); } Writer writer = null; - try - { - writer = Files.newBufferedWriter( dir.toPath().resolve( "test$1.txt" ) ); - IOUtil.copy( "Success", writer ); - } - finally - { - IOUtil.close( writer ); + try { + writer = Files.newBufferedWriter(dir.toPath().resolve("test$1.txt")); + IOUtil.copy("Success", writer); + } finally { + IOUtil.close(writer); } Commandline cmd = new Commandline(); // cmd.getShell().setShellCommand( "/bin/sh" ); - cmd.getShell().setQuotedArgumentsEnabled( true ); - cmd.setExecutable( "cat" ); - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - cmd.setExecutable( "dir" ); + cmd.getShell().setQuotedArgumentsEnabled(true); + cmd.setExecutable("cat"); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + cmd.setExecutable("dir"); } - cmd.setWorkingDirectory( dir ); - cmd.createArg().setLine( "test$1.txt" ); + cmd.setWorkingDirectory(dir); + cmd.createArg().setLine("test$1.txt"); - executeCommandLine( cmd ); + executeCommandLine(cmd); } /** @@ -541,39 +479,29 @@ public void testDollarSignInArgumentPath() * @throws java.lang.Exception if any. */ @Test - public void testTimeOutException() - throws Exception - { - File javaHome = new File( System.getProperty( "java.home" ) ); + public void testTimeOutException() throws Exception { + File javaHome = new File(System.getProperty("java.home")); File java; - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - java = new File( javaHome, "/bin/java.exe" ); - } - else - { - java = new File( javaHome, "/bin/java" ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + java = new File(javaHome, "/bin/java.exe"); + } else { + java = new File(javaHome, "/bin/java"); } - if ( !java.exists() ) - { - throw new IOException( java.getAbsolutePath() + " doesn't exist" ); + if (!java.exists()) { + throw new IOException(java.getAbsolutePath() + " doesn't exist"); } Commandline cli = new Commandline(); - cli.setExecutable( java.getAbsolutePath() ); - cli.createArg().setLine( "-version" ); + cli.setExecutable(java.getAbsolutePath()); + cli.createArg().setLine("-version"); CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer(); - try - { + try { // if the os is faster than 1s to execute java -version the unit will fail :-) - CommandLineUtils.executeCommandLine( cli, new DefaultConsumer(), err, 1 ); - } - catch ( CommandLineTimeOutException e ) - { + CommandLineUtils.executeCommandLine(cli, new DefaultConsumer(), err, 1); + } catch (CommandLineTimeOutException e) { // it works } - } /** @@ -582,31 +510,22 @@ public void testTimeOutException() * @param path not null * @throws IOException if any */ - private static void makeExecutable( File path ) - throws IOException - { - if ( path == null ) - { - throw new IllegalArgumentException( "The file is null" ); + private static void makeExecutable(File path) throws IOException { + if (path == null) { + throw new IllegalArgumentException("The file is null"); } - if ( !path.isFile() ) - { - throw new IllegalArgumentException( "The file '" + path.getAbsolutePath() + "' should be a file" ); + if (!path.isFile()) { + throw new IllegalArgumentException("The file '" + path.getAbsolutePath() + "' should be a file"); } - if ( !Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - Process proc = Runtime.getRuntime().exec( new String[] { "chmod", "a+x", path.getAbsolutePath() } ); - while ( true ) - { - try - { + if (!Os.isFamily(Os.FAMILY_WINDOWS)) { + Process proc = Runtime.getRuntime().exec(new String[] {"chmod", "a+x", path.getAbsolutePath()}); + while (true) { + try { proc.waitFor(); break; - } - catch ( InterruptedException e ) - { + } catch (InterruptedException e) { // ignore } } @@ -621,44 +540,35 @@ private static void makeExecutable( File path ) * @param content the content of the script file * @throws Exception if any */ - private static void createAndCallScript( File dir, String content ) - throws Exception - { - if ( !dir.exists() ) - { - assertTrue( dir.mkdirs(), "Can't create dir:" + dir.getAbsolutePath() ); + private static void createAndCallScript(File dir, String content) throws Exception { + if (!dir.exists()) { + assertTrue(dir.mkdirs(), "Can't create dir:" + dir.getAbsolutePath()); } // Create a script file File bat; - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - bat = new File( dir, "echo.bat" ); - } - else - { - bat = new File( dir, "echo" ); + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + bat = new File(dir, "echo.bat"); + } else { + bat = new File(dir, "echo"); } - Writer w = Files.newBufferedWriter( bat.toPath() ); - try - { - IOUtil.copy( content, w ); - } - finally - { - IOUtil.close( w ); + Writer w = Files.newBufferedWriter(bat.toPath()); + try { + IOUtil.copy(content, w); + } finally { + IOUtil.close(w); } // Change permission - makeExecutable( bat ); + makeExecutable(bat); Commandline cmd = new Commandline(); - cmd.setExecutable( bat.getAbsolutePath() ); - cmd.setWorkingDirectory( dir ); + cmd.setExecutable(bat.getAbsolutePath()); + cmd.setWorkingDirectory(dir); // Execute the script file - executeCommandLine( cmd ); + executeCommandLine(cmd); } /** @@ -667,26 +577,20 @@ private static void createAndCallScript( File dir, String content ) * @param cmd not null * @throws Exception if any */ - private static void executeCommandLine( Commandline cmd ) - throws Exception - { + private static void executeCommandLine(Commandline cmd) throws Exception { CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer(); - try - { - System.out.println( "Command line is: " + StringUtils.join( cmd.getShellCommandline(), " " ) ); + try { + System.out.println("Command line is: " + StringUtils.join(cmd.getShellCommandline(), " ")); - int exitCode = CommandLineUtils.executeCommandLine( cmd, new DefaultConsumer(), err ); + int exitCode = CommandLineUtils.executeCommandLine(cmd, new DefaultConsumer(), err); - if ( exitCode != 0 ) - { + if (exitCode != 0) { String msg = "Exit code: " + exitCode + " - " + err.getOutput(); - throw new Exception( msg.toString() ); + throw new Exception(msg.toString()); } - } - catch ( CommandLineException e ) - { - throw new Exception( "Unable to execute command: " + e.getMessage(), e ); + } catch (CommandLineException e) { + throw new Exception("Unable to execute command: " + e.getMessage(), e); } } } diff --git a/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java b/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java index 3e59e48b..968b2d2e 100644 --- a/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java +++ b/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java @@ -25,19 +25,15 @@ * @version $Id: $Id * @since 3.4.0 */ -public class DefaultConsumerTest -{ +public class DefaultConsumerTest { /** *

        testConsumeLine.

        * * @throws java.lang.Exception if any. */ @Test - public void testConsumeLine() - throws Exception - { + public void testConsumeLine() throws Exception { DefaultConsumer cons = new DefaultConsumer(); - cons.consumeLine( "Test DefaultConsumer consumeLine" ); + cons.consumeLine("Test DefaultConsumer consumeLine"); } - } diff --git a/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java b/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java index e5d78aad..dd95dd3b 100644 --- a/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java +++ b/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java @@ -16,12 +16,12 @@ * limitations under the License. */ +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.fail; -import org.junit.jupiter.api.Test; - /** *

        EnhancedStringTokenizerTest class.

        * @@ -29,91 +29,81 @@ * @version $Id: $Id * @since 3.4.0 */ -public class EnhancedStringTokenizerTest -{ +public class EnhancedStringTokenizerTest { /** *

        test1.

        */ @org.junit.jupiter.api.Test - public void test1() - { - EnhancedStringTokenizer est = new EnhancedStringTokenizer( "this is a test string" ); + public void test1() { + EnhancedStringTokenizer est = new EnhancedStringTokenizer("this is a test string"); StringBuilder sb = new StringBuilder(); - while ( est.hasMoreTokens() ) - { - sb.append( est.nextToken() ); - sb.append( " " ); + while (est.hasMoreTokens()) { + sb.append(est.nextToken()); + sb.append(" "); } - assertEquals( "this is a test string ", sb.toString() ); + assertEquals("this is a test string ", sb.toString()); } /** *

        test2.

        */ @Test - public void test2() - { - EnhancedStringTokenizer est = new EnhancedStringTokenizer( "1,,,3,,4", "," ); - assertEquals( "1", est.nextToken(), "Token 1" ); - assertEquals( "", est.nextToken(), "Token 2" ); - assertEquals( "", est.nextToken(), "Token 3" ); - assertEquals( "3", est.nextToken(), "Token 4" ); - assertEquals( "", est.nextToken(), "Token 5" ); - assertEquals( "4", est.nextToken(), "Token 6" ); + public void test2() { + EnhancedStringTokenizer est = new EnhancedStringTokenizer("1,,,3,,4", ","); + assertEquals("1", est.nextToken(), "Token 1"); + assertEquals("", est.nextToken(), "Token 2"); + assertEquals("", est.nextToken(), "Token 3"); + assertEquals("3", est.nextToken(), "Token 4"); + assertEquals("", est.nextToken(), "Token 5"); + assertEquals("4", est.nextToken(), "Token 6"); } /** *

        test3.

        */ @org.junit.jupiter.api.Test - public void test3() - { - EnhancedStringTokenizer est = new EnhancedStringTokenizer( "1,,,3,,4", ",", true ); - assertEquals( "1", est.nextToken(), "Token 1" ); - assertEquals( ",", est.nextToken(), "Token 2" ); - assertEquals( "", est.nextToken(), "Token 3" ); - assertEquals( ",", est.nextToken(), "Token 4" ); - assertEquals( "", est.nextToken(), "Token 5" ); - assertEquals( ",", est.nextToken(), "Token 6" ); - assertEquals( "3", est.nextToken(), "Token 7" ); - assertEquals( ",", est.nextToken(), "Token 8" ); - assertEquals( "", est.nextToken(), "Token 9" ); - assertEquals( ",", est.nextToken(), "Token 10" ); - assertEquals( "4", est.nextToken(), "Token 11" ); + public void test3() { + EnhancedStringTokenizer est = new EnhancedStringTokenizer("1,,,3,,4", ",", true); + assertEquals("1", est.nextToken(), "Token 1"); + assertEquals(",", est.nextToken(), "Token 2"); + assertEquals("", est.nextToken(), "Token 3"); + assertEquals(",", est.nextToken(), "Token 4"); + assertEquals("", est.nextToken(), "Token 5"); + assertEquals(",", est.nextToken(), "Token 6"); + assertEquals("3", est.nextToken(), "Token 7"); + assertEquals(",", est.nextToken(), "Token 8"); + assertEquals("", est.nextToken(), "Token 9"); + assertEquals(",", est.nextToken(), "Token 10"); + assertEquals("4", est.nextToken(), "Token 11"); } /** *

        testMultipleDelim.

        */ @org.junit.jupiter.api.Test - public void testMultipleDelim() - { - EnhancedStringTokenizer est = new EnhancedStringTokenizer( "1 2|3|4", " |", true ); - assertEquals( "1", est.nextToken(), "Token 1" ); - assertEquals( " ", est.nextToken(), "Token 2" ); - assertEquals( "2", est.nextToken(), "Token 3" ); - assertEquals( "|", est.nextToken(), "Token 4" ); - assertEquals( "3", est.nextToken(), "Token 5" ); - assertEquals( "|", est.nextToken(), "Token 6" ); - assertEquals( "4", est.nextToken(), "Token 7" ); - assertFalse( est.hasMoreTokens(), "est.hasMoreTokens()" ); + public void testMultipleDelim() { + EnhancedStringTokenizer est = new EnhancedStringTokenizer("1 2|3|4", " |", true); + assertEquals("1", est.nextToken(), "Token 1"); + assertEquals(" ", est.nextToken(), "Token 2"); + assertEquals("2", est.nextToken(), "Token 3"); + assertEquals("|", est.nextToken(), "Token 4"); + assertEquals("3", est.nextToken(), "Token 5"); + assertEquals("|", est.nextToken(), "Token 6"); + assertEquals("4", est.nextToken(), "Token 7"); + assertFalse(est.hasMoreTokens(), "est.hasMoreTokens()"); } /** *

        testEmptyString.

        */ @org.junit.jupiter.api.Test - public void testEmptyString() - { - EnhancedStringTokenizer est = new EnhancedStringTokenizer( "" ); - assertFalse( est.hasMoreTokens(), "est.hasMoreTokens()" ); - try - { + public void testEmptyString() { + EnhancedStringTokenizer est = new EnhancedStringTokenizer(""); + assertFalse(est.hasMoreTokens(), "est.hasMoreTokens()"); + try { est.nextToken(); fail(); - } - catch ( Exception e ) - { + } catch (Exception e) { } } @@ -121,11 +111,10 @@ public void testEmptyString() *

        testSimpleString.

        */ @org.junit.jupiter.api.Test - public void testSimpleString() - { - EnhancedStringTokenizer est = new EnhancedStringTokenizer( "a " ); - assertEquals( "a", est.nextToken(), "Token 1" ); - assertEquals( "", est.nextToken(), "Token 2" ); - assertFalse( est.hasMoreTokens(), "est.hasMoreTokens()" ); + public void testSimpleString() { + EnhancedStringTokenizer est = new EnhancedStringTokenizer("a "); + assertEquals("a", est.nextToken(), "Token 1"); + assertEquals("", est.nextToken(), "Token 2"); + assertFalse(est.hasMoreTokens(), "est.hasMoreTokens()"); } } diff --git a/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java b/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java index f96ebf41..94cde1ff 100644 --- a/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java +++ b/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java @@ -52,10 +52,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -66,6 +62,10 @@ import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** *

        StreamPumperTest class.

        * @@ -73,45 +73,42 @@ * @version $Id: $Id * @since 3.4.0 */ -public class StreamPumperTest -{ +public class StreamPumperTest { private String lineSeparator = System.lineSeparator(); /** *

        testPumping.

        */ @Test - public void testPumping() - { + public void testPumping() { String line1 = "line1"; String line2 = "line2"; String lines = line1 + "\n" + line2; - ByteArrayInputStream inputStream = new ByteArrayInputStream( lines.getBytes() ); + ByteArrayInputStream inputStream = new ByteArrayInputStream(lines.getBytes()); TestConsumer consumer = new TestConsumer(); - StreamPumper pumper = new StreamPumper( inputStream, consumer ); - new Thread( pumper ).run(); + StreamPumper pumper = new StreamPumper(inputStream, consumer); + new Thread(pumper).run(); // Check the consumer to see if it got both lines. - assertTrue( consumer.wasLineConsumed( line1, 1000 ) ); - assertTrue( consumer.wasLineConsumed( line2, 1000 ) ); + assertTrue(consumer.wasLineConsumed(line1, 1000)); + assertTrue(consumer.wasLineConsumed(line2, 1000)); } /** *

        testPumpingWithPrintWriter.

        */ @org.junit.jupiter.api.Test - public void testPumpingWithPrintWriter() - { + public void testPumpingWithPrintWriter() { String inputString = "This a test string"; - ByteArrayInputStream bais = new ByteArrayInputStream( inputString.getBytes() ); + ByteArrayInputStream bais = new ByteArrayInputStream(inputString.getBytes()); StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter( sw ); - StreamPumper pumper = new StreamPumper( bais, pw ); + PrintWriter pw = new PrintWriter(sw); + StreamPumper pumper = new StreamPumper(bais, pw); pumper.run(); pumper.flush(); - System.out.println( "aaa" + sw.toString() ); - assertEquals( "This a test string" + lineSeparator, sw.toString() ); + System.out.println("aaa" + sw.toString()); + assertEquals("This a test string" + lineSeparator, sw.toString()); pumper.close(); } @@ -119,20 +116,17 @@ public void testPumpingWithPrintWriter() *

        testPumperReadsInputStreamUntilEndEvenIfConsumerFails.

        */ @Test - public void testPumperReadsInputStreamUntilEndEvenIfConsumerFails() - { + public void testPumperReadsInputStreamUntilEndEvenIfConsumerFails() { // the number of bytes generated should surely exceed the read buffer used by the pumper - GeneratorInputStream gis = new GeneratorInputStream( 1024 * 1024 * 4 ); - StreamPumper pumper = new StreamPumper( gis, new FailingConsumer() ); + GeneratorInputStream gis = new GeneratorInputStream(1024 * 1024 * 4); + StreamPumper pumper = new StreamPumper(gis, new FailingConsumer()); pumper.run(); - assertEquals( gis.size, gis.read, "input stream was not fully consumed, producer deadlocks" ); - assertTrue( gis.closed ); - assertNotNull( pumper.getException() ); + assertEquals(gis.size, gis.read, "input stream was not fully consumed, producer deadlocks"); + assertTrue(gis.closed); + assertNotNull(pumper.getException()); } - static class GeneratorInputStream - extends InputStream - { + static class GeneratorInputStream extends InputStream { final int size; @@ -140,50 +134,35 @@ static class GeneratorInputStream boolean closed = false; - public GeneratorInputStream( int size ) - { + public GeneratorInputStream(int size) { this.size = size; } - public int read() - throws IOException - { - if ( read < size ) - { + public int read() throws IOException { + if (read < size) { read++; return '\n'; - } - else - { + } else { return -1; } } - public void close() - throws IOException - { + public void close() throws IOException { closed = true; } - } - static class FailingConsumer - implements StreamConsumer - { + static class FailingConsumer implements StreamConsumer { - public void consumeLine( String line ) - { - throw new NullPointerException( "too bad, the consumer is badly implemented..." ); + public void consumeLine(String line) { + throw new NullPointerException("too bad, the consumer is badly implemented..."); } - } /** * Used by the test to track whether a line actually got consumed or not. */ - static class TestConsumer - implements StreamConsumer - { + static class TestConsumer implements StreamConsumer { private List lines = new ArrayList(); @@ -195,42 +174,34 @@ static class TestConsumer * @param timeout Number of milliseconds to wait for the line. * @return true if the line gets consumed, else false. */ - public boolean wasLineConsumed( String testLine, long timeout ) - { + public boolean wasLineConsumed(String testLine, long timeout) { long start = System.currentTimeMillis(); long trialTime = 0; - do - { - if ( lines.contains( testLine ) ) - { + do { + if (lines.contains(testLine)) { return true; } // Sleep a bit. - try - { - Thread.sleep( 10 ); - } - catch ( InterruptedException e ) - { + try { + Thread.sleep(10); + } catch (InterruptedException e) { // ignoring... } // How long have been waiting for the line? trialTime = System.currentTimeMillis() - start; - } - while ( trialTime < timeout ); + } while (trialTime < timeout); // If we got here, then the line wasn't consumed within the timeout return false; } - public void consumeLine( String line ) - { - lines.add( line ); + public void consumeLine(String line) { + lines.add(line); } } @@ -238,26 +209,24 @@ public void consumeLine( String line ) *

        testEnabled.

        */ @org.junit.jupiter.api.Test - public void testEnabled() - { - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( "AB\nCE\nEF".getBytes() ); + public void testEnabled() { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream("AB\nCE\nEF".getBytes()); TestConsumer streamConsumer = new TestConsumer(); - StreamPumper streamPumper = new StreamPumper( byteArrayInputStream, streamConsumer ); + StreamPumper streamPumper = new StreamPumper(byteArrayInputStream, streamConsumer); streamPumper.run(); - assertEquals( 3, streamConsumer.lines.size() ); + assertEquals(3, streamConsumer.lines.size()); } /** *

        testDisabled.

        */ @Test - public void testDisabled() - { - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( "AB\nCE\nEF".getBytes() ); + public void testDisabled() { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream("AB\nCE\nEF".getBytes()); TestConsumer streamConsumer = new TestConsumer(); - StreamPumper streamPumper = new StreamPumper( byteArrayInputStream, streamConsumer ); + StreamPumper streamPumper = new StreamPumper(byteArrayInputStream, streamConsumer); streamPumper.disable(); streamPumper.run(); - assertEquals( 0, streamConsumer.lines.size() ); + assertEquals(0, streamConsumer.lines.size()); } } diff --git a/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java b/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java index d008188c..945b0bda 100644 --- a/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java +++ b/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java @@ -1,6 +1,5 @@ package org.codehaus.plexus.util.cli.shell; - /* * Copyright The Codehaus Foundation. * @@ -17,9 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.Arrays; import java.util.List; @@ -27,6 +23,9 @@ import org.codehaus.plexus.util.cli.Commandline; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** *

        BourneShellTest class.

        * @@ -34,16 +33,14 @@ * @version $Id: $Id * @since 3.4.0 */ -public class BourneShellTest -{ +public class BourneShellTest { /** *

        newShell.

        * * @return a {@link org.codehaus.plexus.util.cli.shell.Shell} object. */ - protected Shell newShell() - { + protected Shell newShell() { return new BourneShell(); } @@ -51,169 +48,165 @@ protected Shell newShell() *

        testQuoteWorkingDirectoryAndExecutable.

        */ @org.junit.jupiter.api.Test - public void testQuoteWorkingDirectoryAndExecutable() - { + public void testQuoteWorkingDirectoryAndExecutable() { Shell sh = newShell(); - sh.setWorkingDirectory( "/usr/local/bin" ); - sh.setExecutable( "chmod" ); + sh.setWorkingDirectory("/usr/local/bin"); + sh.setExecutable("chmod"); - String executable = StringUtils.join( sh.getShellCommandLine( new String[] {} ).iterator(), " " ); + String executable = + StringUtils.join(sh.getShellCommandLine(new String[] {}).iterator(), " "); - assertEquals( "/bin/sh -c cd '/usr/local/bin' && 'chmod'", executable ); + assertEquals("/bin/sh -c cd '/usr/local/bin' && 'chmod'", executable); } /** *

        testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes.

        */ @Test - public void testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes() - { + public void testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes() { Shell sh = newShell(); - sh.setWorkingDirectory( "/usr/local/'something else'" ); - sh.setExecutable( "chmod" ); + sh.setWorkingDirectory("/usr/local/'something else'"); + sh.setExecutable("chmod"); - String executable = StringUtils.join( sh.getShellCommandLine( new String[] {} ).iterator(), " " ); + String executable = + StringUtils.join(sh.getShellCommandLine(new String[] {}).iterator(), " "); - assertEquals( "/bin/sh -c cd '/usr/local/'\"'\"'something else'\"'\"'' && 'chmod'", executable ); + assertEquals("/bin/sh -c cd '/usr/local/'\"'\"'something else'\"'\"'' && 'chmod'", executable); } /** *

        testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes_BackslashFileSep.

        */ @org.junit.jupiter.api.Test - public void testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes_BackslashFileSep() - { + public void testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes_BackslashFileSep() { Shell sh = newShell(); - sh.setWorkingDirectory( "\\usr\\local\\'something else'" ); - sh.setExecutable( "chmod" ); + sh.setWorkingDirectory("\\usr\\local\\'something else'"); + sh.setExecutable("chmod"); - String executable = StringUtils.join( sh.getShellCommandLine( new String[] {} ).iterator(), " " ); + String executable = + StringUtils.join(sh.getShellCommandLine(new String[] {}).iterator(), " "); - assertEquals( "/bin/sh -c cd '\\usr\\local\\\'\"'\"'something else'\"'\"'' && 'chmod'", executable ); + assertEquals("/bin/sh -c cd '\\usr\\local\\\'\"'\"'something else'\"'\"'' && 'chmod'", executable); } /** *

        testPreserveSingleQuotesOnArgument.

        */ @Test - public void testPreserveSingleQuotesOnArgument() - { + public void testPreserveSingleQuotesOnArgument() { Shell sh = newShell(); - sh.setWorkingDirectory( "/usr/bin" ); - sh.setExecutable( "chmod" ); + sh.setWorkingDirectory("/usr/bin"); + sh.setExecutable("chmod"); - String[] args = { "\'some arg with spaces\'" }; + String[] args = {"\'some arg with spaces\'"}; - List shellCommandLine = sh.getShellCommandLine( args ); + List shellCommandLine = sh.getShellCommandLine(args); - String cli = StringUtils.join( shellCommandLine.iterator(), " " ); - System.out.println( cli ); - assertTrue( cli.endsWith( "''\"'\"'some arg with spaces'\"'\"''" ) ); + String cli = StringUtils.join(shellCommandLine.iterator(), " "); + System.out.println(cli); + assertTrue(cli.endsWith("''\"'\"'some arg with spaces'\"'\"''")); } /** *

        testAddSingleQuotesOnArgumentWithSpaces.

        */ @Test - public void testAddSingleQuotesOnArgumentWithSpaces() - { + public void testAddSingleQuotesOnArgumentWithSpaces() { Shell sh = newShell(); - sh.setWorkingDirectory( "/usr/bin" ); - sh.setExecutable( "chmod" ); + sh.setWorkingDirectory("/usr/bin"); + sh.setExecutable("chmod"); - String[] args = { "some arg with spaces" }; + String[] args = {"some arg with spaces"}; - List shellCommandLine = sh.getShellCommandLine( args ); + List shellCommandLine = sh.getShellCommandLine(args); - String cli = StringUtils.join( shellCommandLine.iterator(), " " ); - System.out.println( cli ); - assertTrue( cli.endsWith( "\'" + args[0] + "\'" ) ); + String cli = StringUtils.join(shellCommandLine.iterator(), " "); + System.out.println(cli); + assertTrue(cli.endsWith("\'" + args[0] + "\'")); } /** *

        testEscapeSingleQuotesOnArgument.

        */ @Test - public void testEscapeSingleQuotesOnArgument() - { + public void testEscapeSingleQuotesOnArgument() { Shell sh = newShell(); - sh.setWorkingDirectory( "/usr/bin" ); - sh.setExecutable( "chmod" ); + sh.setWorkingDirectory("/usr/bin"); + sh.setExecutable("chmod"); - String[] args = { "arg'withquote" }; + String[] args = {"arg'withquote"}; - List shellCommandLine = sh.getShellCommandLine( args ); + List shellCommandLine = sh.getShellCommandLine(args); - String cli = StringUtils.join( shellCommandLine.iterator(), " " ); - System.out.println( cli ); - assertEquals( "cd '/usr/bin' && 'chmod' 'arg'\"'\"'withquote'", - shellCommandLine.get( shellCommandLine.size() - 1 ) ); + String cli = StringUtils.join(shellCommandLine.iterator(), " "); + System.out.println(cli); + assertEquals( + "cd '/usr/bin' && 'chmod' 'arg'\"'\"'withquote'", shellCommandLine.get(shellCommandLine.size() - 1)); } /** *

        testArgumentsWithsemicolon.

        */ @Test - public void testArgumentsWithsemicolon() - { + public void testArgumentsWithsemicolon() { - System.out.println( "---- semi colon tests ----" ); + System.out.println("---- semi colon tests ----"); Shell sh = newShell(); - sh.setWorkingDirectory( "/usr/bin" ); - sh.setExecutable( "chmod" ); + sh.setWorkingDirectory("/usr/bin"); + sh.setExecutable("chmod"); - String[] args = { ";some&argwithunix$chars" }; + String[] args = {";some&argwithunix$chars"}; - List shellCommandLine = sh.getShellCommandLine( args ); + List shellCommandLine = sh.getShellCommandLine(args); - String cli = StringUtils.join( shellCommandLine.iterator(), " " ); - System.out.println( cli ); - assertTrue( cli.endsWith( "\'" + args[0] + "\'" ) ); + String cli = StringUtils.join(shellCommandLine.iterator(), " "); + System.out.println(cli); + assertTrue(cli.endsWith("\'" + args[0] + "\'")); - Commandline commandline = new Commandline( newShell() ); - commandline.setExecutable( "chmod" ); - commandline.getShell().setQuotedArgumentsEnabled( true ); - commandline.createArg().setValue( "--password" ); - commandline.createArg().setValue( ";password" ); + Commandline commandline = new Commandline(newShell()); + commandline.setExecutable("chmod"); + commandline.getShell().setQuotedArgumentsEnabled(true); + commandline.createArg().setValue("--password"); + commandline.createArg().setValue(";password"); String[] lines = commandline.getShellCommandline(); - System.out.println( Arrays.asList( lines ) ); + System.out.println(Arrays.asList(lines)); - assertEquals( "/bin/sh", lines[0] ); - assertEquals( "-c", lines[1] ); - assertEquals( "'chmod' '--password' ';password'", lines[2] ); + assertEquals("/bin/sh", lines[0]); + assertEquals("-c", lines[1]); + assertEquals("'chmod' '--password' ';password'", lines[2]); - commandline = new Commandline( newShell() ); - commandline.setExecutable( "chmod" ); - commandline.getShell().setQuotedArgumentsEnabled( true ); - commandline.createArg().setValue( "--password" ); - commandline.createArg().setValue( ";password" ); + commandline = new Commandline(newShell()); + commandline.setExecutable("chmod"); + commandline.getShell().setQuotedArgumentsEnabled(true); + commandline.createArg().setValue("--password"); + commandline.createArg().setValue(";password"); lines = commandline.getShellCommandline(); - System.out.println( Arrays.asList( lines ) ); + System.out.println(Arrays.asList(lines)); - assertEquals( "/bin/sh", lines[0] ); - assertEquals( "-c", lines[1] ); - assertEquals( "'chmod' '--password' ';password'", lines[2] ); + assertEquals("/bin/sh", lines[0]); + assertEquals("-c", lines[1]); + assertEquals("'chmod' '--password' ';password'", lines[2]); - commandline = new Commandline( new CmdShell() ); - commandline.getShell().setQuotedArgumentsEnabled( true ); - commandline.createArg().setValue( "--password" ); - commandline.createArg().setValue( ";password" ); + commandline = new Commandline(new CmdShell()); + commandline.getShell().setQuotedArgumentsEnabled(true); + commandline.createArg().setValue("--password"); + commandline.createArg().setValue(";password"); lines = commandline.getShellCommandline(); - System.out.println( Arrays.asList( lines ) ); + System.out.println(Arrays.asList(lines)); - assertEquals( "cmd.exe", lines[0] ); - assertEquals( "/X", lines[1] ); - assertEquals( "/C", lines[2] ); - assertEquals( "\"--password ;password\"", lines[3] ); + assertEquals("cmd.exe", lines[0]); + assertEquals("/X", lines[1]); + assertEquals("/C", lines[2]); + assertEquals("\"--password ;password\"", lines[3]); } /** @@ -222,42 +215,38 @@ public void testArgumentsWithsemicolon() * @throws java.lang.Exception if any. */ @Test - public void testBourneShellQuotingCharacters() - throws Exception - { + public void testBourneShellQuotingCharacters() throws Exception { // { ' ', '$', ';', '&', '|', '<', '>', '*', '?', '(', ')' }; // test with values http://steve-parker.org/sh/bourne.shtml Appendix B - Meta-characters and Reserved Words - Commandline commandline = new Commandline( newShell() ); - commandline.setExecutable( "chmod" ); - commandline.getShell().setQuotedArgumentsEnabled( true ); - commandline.createArg().setValue( " " ); - commandline.createArg().setValue( "|" ); - commandline.createArg().setValue( "&&" ); - commandline.createArg().setValue( "||" ); - commandline.createArg().setValue( ";" ); - commandline.createArg().setValue( ";;" ); - commandline.createArg().setValue( "&" ); - commandline.createArg().setValue( "()" ); - commandline.createArg().setValue( "<" ); - commandline.createArg().setValue( "<<" ); - commandline.createArg().setValue( ">" ); - commandline.createArg().setValue( ">>" ); - commandline.createArg().setValue( "*" ); - commandline.createArg().setValue( "?" ); - commandline.createArg().setValue( "[" ); - commandline.createArg().setValue( "]" ); - commandline.createArg().setValue( "{" ); - commandline.createArg().setValue( "}" ); - commandline.createArg().setValue( "`" ); + Commandline commandline = new Commandline(newShell()); + commandline.setExecutable("chmod"); + commandline.getShell().setQuotedArgumentsEnabled(true); + commandline.createArg().setValue(" "); + commandline.createArg().setValue("|"); + commandline.createArg().setValue("&&"); + commandline.createArg().setValue("||"); + commandline.createArg().setValue(";"); + commandline.createArg().setValue(";;"); + commandline.createArg().setValue("&"); + commandline.createArg().setValue("()"); + commandline.createArg().setValue("<"); + commandline.createArg().setValue("<<"); + commandline.createArg().setValue(">"); + commandline.createArg().setValue(">>"); + commandline.createArg().setValue("*"); + commandline.createArg().setValue("?"); + commandline.createArg().setValue("["); + commandline.createArg().setValue("]"); + commandline.createArg().setValue("{"); + commandline.createArg().setValue("}"); + commandline.createArg().setValue("`"); String[] lines = commandline.getShellCommandline(); - System.out.println( Arrays.asList( lines ) ); - - assertEquals( "/bin/sh", lines[0] ); - assertEquals( "-c", lines[1] ); - assertEquals( "'chmod' ' ' '|' '&&' '||' ';' ';;' '&' '()' '<' '<<' '>' '>>' '*' '?' '[' ']' '{' '}' '`'", - lines[2] ); + System.out.println(Arrays.asList(lines)); + assertEquals("/bin/sh", lines[0]); + assertEquals("-c", lines[1]); + assertEquals( + "'chmod' ' ' '|' '&&' '||' ';' ';;' '&' '()' '<' '<<' '>' '>>' '*' '?' '[' ']' '{' '}' '`'", lines[2]); } - } diff --git a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java index 771bc99f..dac7e57c 100644 --- a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java +++ b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java @@ -16,13 +16,13 @@ * limitations under the License. */ +import java.util.ArrayList; +import java.util.List; + import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; -import java.util.ArrayList; -import java.util.List; - /** *

        CycleDetectedExceptionTest class.

        * @@ -30,24 +30,22 @@ * @version $Id: $Id * @since 3.4.0 */ -public class CycleDetectedExceptionTest -{ +public class CycleDetectedExceptionTest { /** *

        testException.

        */ @Test - public void testException() - { + public void testException() { final List cycle = new ArrayList(); - cycle.add( "a" ); + cycle.add("a"); - cycle.add( "b" ); + cycle.add("b"); - cycle.add( "a" ); + cycle.add("a"); - final CycleDetectedException e = new CycleDetectedException( "Cycle detected", cycle ); + final CycleDetectedException e = new CycleDetectedException("Cycle detected", cycle); - assertEquals( "Cycle detected a --> b --> a", e.getMessage() ); + assertEquals("Cycle detected a --> b --> a", e.getMessage()); } } diff --git a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java index bd086e7e..0d088193 100644 --- a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java +++ b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java @@ -16,6 +16,8 @@ * limitations under the License. */ +import java.util.List; + import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -24,8 +26,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; -import java.util.List; - /** *

        CycleDetectorTest class.

        * @@ -33,32 +33,27 @@ * @version $Id: $Id * @since 3.4.0 */ -public class CycleDetectorTest -{ +public class CycleDetectorTest { /** *

        testCycyleDetection.

        */ @Test - public void testCycyleDetection() - { + public void testCycyleDetection() { // No cycle // // a --> b --->c // - try - { + try { final DAG dag1 = new DAG(); - dag1.addEdge( "a", "b" ); + dag1.addEdge("a", "b"); - dag1.addEdge( "b", "c" ); + dag1.addEdge("b", "c"); - } - catch ( CycleDetectedException e ) - { + } catch (CycleDetectedException e) { - fail( "Cycle should not be detected" ); + fail("Cycle should not be detected"); } // @@ -67,54 +62,47 @@ public void testCycyleDetection() // | | // -----------| - try - { + try { final DAG dag2 = new DAG(); - dag2.addEdge( "a", "b" ); + dag2.addEdge("a", "b"); - dag2.addEdge( "b", "c" ); + dag2.addEdge("b", "c"); - dag2.addEdge( "c", "a" ); + dag2.addEdge("c", "a"); - fail( "Cycle should be detected" ); + fail("Cycle should be detected"); - } - catch ( CycleDetectedException e ) - { + } catch (CycleDetectedException e) { final List cycle = e.getCycle(); - assertNotNull( cycle, "Cycle should be not null" ); + assertNotNull(cycle, "Cycle should be not null"); - assertTrue( cycle.contains( "a" ), "Cycle contains 'a'" ); + assertTrue(cycle.contains("a"), "Cycle contains 'a'"); - assertTrue( cycle.contains( "b" ), "Cycle contains 'b'" ); - - assertTrue( cycle.contains( "c" ), "Cycle contains 'c'" ); + assertTrue(cycle.contains("b"), "Cycle contains 'b'"); + assertTrue(cycle.contains("c"), "Cycle contains 'c'"); } // | --> c // a --> b // | | --> d // ---------> - try - { + try { final DAG dag3 = new DAG(); - dag3.addEdge( "a", "b" ); + dag3.addEdge("a", "b"); - dag3.addEdge( "b", "c" ); + dag3.addEdge("b", "c"); - dag3.addEdge( "b", "d" ); + dag3.addEdge("b", "d"); - dag3.addEdge( "a", "d" ); + dag3.addEdge("a", "d"); - } - catch ( CycleDetectedException e ) - { - fail( "Cycle should not be detected" ); + } catch (CycleDetectedException e) { + fail("Cycle should not be detected"); } // ------------ @@ -123,36 +111,33 @@ public void testCycyleDetection() // a --> b // | | --> d // ---------> - try - { + try { final DAG dag4 = new DAG(); - dag4.addEdge( "a", "b" ); + dag4.addEdge("a", "b"); - dag4.addEdge( "b", "c" ); + dag4.addEdge("b", "c"); - dag4.addEdge( "b", "d" ); + dag4.addEdge("b", "d"); - dag4.addEdge( "a", "d" ); + dag4.addEdge("a", "d"); - dag4.addEdge( "c", "a" ); + dag4.addEdge("c", "a"); - fail( "Cycle should be detected" ); + fail("Cycle should be detected"); - } - catch ( CycleDetectedException e ) - { + } catch (CycleDetectedException e) { final List cycle = e.getCycle(); - assertNotNull( cycle, "Cycle should be not null" ); + assertNotNull(cycle, "Cycle should be not null"); - assertEquals( "a", (String) cycle.get( 0 ), "Cycle contains 'a'" ); + assertEquals("a", (String) cycle.get(0), "Cycle contains 'a'"); - assertEquals( "b", cycle.get( 1 ), "Cycle contains 'b'" ); + assertEquals("b", cycle.get(1), "Cycle contains 'b'"); - assertEquals( "c", cycle.get( 2 ), "Cycle contains 'c'" ); + assertEquals("c", cycle.get(2), "Cycle contains 'c'"); - assertEquals( "a", (String) cycle.get( 3 ), "Cycle contains 'a'" ); + assertEquals("a", (String) cycle.get(3), "Cycle contains 'a'"); } // f --> g --> h @@ -165,63 +150,58 @@ public void testCycyleDetection() final DAG dag5 = new DAG(); - try - { + try { - dag5.addEdge( "a", "b" ); + dag5.addEdge("a", "b"); - dag5.addEdge( "b", "c" ); + dag5.addEdge("b", "c"); - dag5.addEdge( "b", "f" ); + dag5.addEdge("b", "f"); - dag5.addEdge( "f", "g" ); + dag5.addEdge("f", "g"); - dag5.addEdge( "g", "h" ); + dag5.addEdge("g", "h"); - dag5.addEdge( "c", "d" ); + dag5.addEdge("c", "d"); - dag5.addEdge( "d", "e" ); + dag5.addEdge("d", "e"); - dag5.addEdge( "e", "b" ); + dag5.addEdge("e", "b"); - fail( "Cycle should be detected" ); + fail("Cycle should be detected"); - } - catch ( CycleDetectedException e ) - { + } catch (CycleDetectedException e) { final List cycle = e.getCycle(); - assertNotNull( cycle, "Cycle should be not null" ); + assertNotNull(cycle, "Cycle should be not null"); - assertEquals( 5, cycle.size(), "Cycle contains 5 elements" ); + assertEquals(5, cycle.size(), "Cycle contains 5 elements"); - assertEquals( "b", (String) cycle.get( 0 ), "Cycle contains 'b'" ); + assertEquals("b", (String) cycle.get(0), "Cycle contains 'b'"); - assertEquals( "c", cycle.get( 1 ), "Cycle contains 'c'" ); + assertEquals("c", cycle.get(1), "Cycle contains 'c'"); - assertEquals( "d", cycle.get( 2 ), "Cycle contains 'd'" ); + assertEquals("d", cycle.get(2), "Cycle contains 'd'"); - assertEquals( "e", (String) cycle.get( 3 ), "Cycle contains 'e'" ); + assertEquals("e", (String) cycle.get(3), "Cycle contains 'e'"); - assertEquals( "b", (String) cycle.get( 4 ), "Cycle contains 'b'" ); + assertEquals("b", (String) cycle.get(4), "Cycle contains 'b'"); - assertTrue( dag5.hasEdge( "a", "b" ), "Edge exists" ); + assertTrue(dag5.hasEdge("a", "b"), "Edge exists"); - assertTrue( dag5.hasEdge( "b", "c" ), "Edge exists" ); + assertTrue(dag5.hasEdge("b", "c"), "Edge exists"); - assertTrue( dag5.hasEdge( "b", "f" ), "Edge exists" ); + assertTrue(dag5.hasEdge("b", "f"), "Edge exists"); - assertTrue( dag5.hasEdge( "f", "g" ), "Edge exists" ); + assertTrue(dag5.hasEdge("f", "g"), "Edge exists"); - assertTrue( dag5.hasEdge( "g", "h" ), "Edge exists" ); + assertTrue(dag5.hasEdge("g", "h"), "Edge exists"); - assertTrue( dag5.hasEdge( "c", "d" ), "Edge exists" ); + assertTrue(dag5.hasEdge("c", "d"), "Edge exists"); - assertTrue( dag5.hasEdge( "d", "e" ), "Edge exists" ); + assertTrue(dag5.hasEdge("d", "e"), "Edge exists"); - assertFalse( dag5.hasEdge( "e", "b" ) ); + assertFalse(dag5.hasEdge("e", "b")); } - } - } diff --git a/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java b/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java index 8918755a..7c12d9dc 100644 --- a/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java +++ b/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java @@ -16,16 +16,16 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.ArrayList; import java.util.List; import java.util.Set; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** *

        DAGTest class.

        * @@ -33,114 +33,111 @@ * @version $Id: $Id * @since 3.4.0 */ -public class DAGTest -{ +public class DAGTest { /** *

        testDAG.

        * * @throws org.codehaus.plexus.util.dag.CycleDetectedException if any. */ @Test - public void testDAG() - throws CycleDetectedException - { + public void testDAG() throws CycleDetectedException { final DAG dag = new DAG(); - dag.addVertex( "a" ); + dag.addVertex("a"); - assertEquals( 1, dag.getVertices().size() ); + assertEquals(1, dag.getVertices().size()); - assertEquals( "a", dag.getVertex( "a" ).getLabel() ); + assertEquals("a", dag.getVertex("a").getLabel()); - dag.addVertex( "a" ); + dag.addVertex("a"); - assertEquals( 1, dag.getVertices().size() ); + assertEquals(1, dag.getVertices().size()); - assertEquals( "a", dag.getVertex( "a" ).getLabel() ); + assertEquals("a", dag.getVertex("a").getLabel()); - dag.addVertex( "b" ); + dag.addVertex("b"); - assertEquals( 2, dag.getVertices().size() ); + assertEquals(2, dag.getVertices().size()); - assertFalse( dag.hasEdge( "a", "b" ) ); + assertFalse(dag.hasEdge("a", "b")); - assertFalse( dag.hasEdge( "b", "a" ) ); + assertFalse(dag.hasEdge("b", "a")); - final Vertex a = dag.getVertex( "a" ); + final Vertex a = dag.getVertex("a"); - final Vertex b = dag.getVertex( "b" ); + final Vertex b = dag.getVertex("b"); - assertEquals( "a", a.getLabel() ); + assertEquals("a", a.getLabel()); - assertEquals( "b", b.getLabel() ); + assertEquals("b", b.getLabel()); - dag.addEdge( "a", "b" ); + dag.addEdge("a", "b"); - assertTrue( a.getChildren().contains( b ) ); + assertTrue(a.getChildren().contains(b)); - assertTrue( b.getParents().contains( a ) ); + assertTrue(b.getParents().contains(a)); - assertTrue( dag.hasEdge( "a", "b" ) ); + assertTrue(dag.hasEdge("a", "b")); - assertFalse( dag.hasEdge( "b", "a" ) ); + assertFalse(dag.hasEdge("b", "a")); - dag.addEdge( "c", "d" ); + dag.addEdge("c", "d"); - assertEquals( 4, dag.getVertices().size() ); + assertEquals(4, dag.getVertices().size()); - final Vertex c = dag.getVertex( "c" ); + final Vertex c = dag.getVertex("c"); - final Vertex d = dag.getVertex( "d" ); + final Vertex d = dag.getVertex("d"); - assertEquals( "a", a.getLabel() ); + assertEquals("a", a.getLabel()); - assertEquals( "b", b.getLabel() ); + assertEquals("b", b.getLabel()); - assertEquals( "c", c.getLabel() ); + assertEquals("c", c.getLabel()); - assertEquals( "d", d.getLabel() ); + assertEquals("d", d.getLabel()); - assertFalse( dag.hasEdge( "b", "a" ) ); + assertFalse(dag.hasEdge("b", "a")); - assertFalse( dag.hasEdge( "a", "c" ) ); + assertFalse(dag.hasEdge("a", "c")); - assertFalse( dag.hasEdge( "a", "d" ) ); + assertFalse(dag.hasEdge("a", "d")); - assertTrue( dag.hasEdge( "c", "d" ) ); + assertTrue(dag.hasEdge("c", "d")); - assertFalse( dag.hasEdge( "d", "c" ) ); + assertFalse(dag.hasEdge("d", "c")); final Set labels = dag.getLabels(); - assertEquals( 4, labels.size() ); + assertEquals(4, labels.size()); - assertTrue( labels.contains( "a" ) ); + assertTrue(labels.contains("a")); - assertTrue( labels.contains( "b" ) ); + assertTrue(labels.contains("b")); - assertTrue( labels.contains( "c" ) ); + assertTrue(labels.contains("c")); - assertTrue( labels.contains( "d" ) ); + assertTrue(labels.contains("d")); - dag.addEdge( "a", "d" ); + dag.addEdge("a", "d"); - assertTrue( a.getChildren().contains( d ) ); + assertTrue(a.getChildren().contains(d)); - assertTrue( d.getParents().contains( a ) ); + assertTrue(d.getParents().contains(a)); // "b" and "d" are children of "a" - assertEquals( 2, a.getChildren().size() ); + assertEquals(2, a.getChildren().size()); - assertTrue( a.getChildLabels().contains( "b" ) ); + assertTrue(a.getChildLabels().contains("b")); - assertTrue( a.getChildLabels().contains( "d" ) ); + assertTrue(a.getChildLabels().contains("d")); // "a" and "c" are parents of "d" - assertEquals( 2, d.getParents().size() ); + assertEquals(2, d.getParents().size()); - assertTrue( d.getParentLabels().contains( "a" ) ); + assertTrue(d.getParentLabels().contains("a")); - assertTrue( d.getParentLabels().contains( "c" ) ); + assertTrue(d.getParentLabels().contains("c")); } /** @@ -149,12 +146,10 @@ public void testDAG() * @throws org.codehaus.plexus.util.dag.CycleDetectedException if any. */ @Test - public void testGetPredecessors() - throws CycleDetectedException - { + public void testGetPredecessors() throws CycleDetectedException { final DAG dag = new DAG(); - dag.addEdge( "a", "b" ); + dag.addEdge("a", "b"); // // a --> b --> c --> e @@ -165,42 +160,42 @@ public void testGetPredecessors() // force order of nodes - dag.addVertex( "c" ); + dag.addVertex("c"); - dag.addVertex( "d" ); + dag.addVertex("d"); - dag.addEdge( "a", "b" ); + dag.addEdge("a", "b"); - dag.addEdge( "b", "c" ); + dag.addEdge("b", "c"); - dag.addEdge( "b", "d" ); + dag.addEdge("b", "d"); - dag.addEdge( "c", "d" ); + dag.addEdge("c", "d"); - dag.addEdge( "c", "e" ); + dag.addEdge("c", "e"); - dag.addEdge( "f", "d" ); + dag.addEdge("f", "d"); - dag.addEdge( "e", "f" ); + dag.addEdge("e", "f"); - dag.addEdge( "f", "g" ); + dag.addEdge("f", "g"); - final List actual = dag.getSuccessorLabels( "b" ); + final List actual = dag.getSuccessorLabels("b"); final List expected = new ArrayList(); - expected.add( "d" ); + expected.add("d"); - expected.add( "g" ); + expected.add("g"); - expected.add( "f" ); + expected.add("f"); - expected.add( "e" ); + expected.add("e"); - expected.add( "c" ); + expected.add("c"); - expected.add( "b" ); + expected.add("b"); - assertEquals( expected, actual ); + assertEquals(expected, actual); } } diff --git a/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java b/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java index 5f6615c2..321fe1c6 100644 --- a/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java +++ b/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java @@ -16,13 +16,13 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; - import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** *

        TopologicalSorterTest class.

        * @@ -30,37 +30,34 @@ * @version $Id: $Id * @since 3.4.0 */ -public class TopologicalSorterTest -{ +public class TopologicalSorterTest { /** *

        testDfs.

        * * @throws org.codehaus.plexus.util.dag.CycleDetectedException if any. */ @Test - public void testDfs() - throws CycleDetectedException - { + public void testDfs() throws CycleDetectedException { // a --> b --->c // // result a,b,c final DAG dag1 = new DAG(); - dag1.addEdge( "a", "b" ); + dag1.addEdge("a", "b"); - dag1.addEdge( "b", "c" ); + dag1.addEdge("b", "c"); final List expected1 = new ArrayList(); - expected1.add( "c" ); + expected1.add("c"); - expected1.add( "b" ); + expected1.add("b"); - expected1.add( "a" ); + expected1.add("a"); - final List actual1 = TopologicalSorter.sort( dag1 ); + final List actual1 = TopologicalSorter.sort(dag1); - assertEquals( expected1, actual1, "Order is different then expected" ); + assertEquals(expected1, actual1, "Order is different then expected"); // // a <-- b <---c @@ -68,27 +65,27 @@ public void testDfs() // result c, b, a final DAG dag2 = new DAG(); - dag2.addVertex( "a" ); + dag2.addVertex("a"); - dag2.addVertex( "b" ); + dag2.addVertex("b"); - dag2.addVertex( "c" ); + dag2.addVertex("c"); - dag2.addEdge( "b", "a" ); + dag2.addEdge("b", "a"); - dag2.addEdge( "c", "b" ); + dag2.addEdge("c", "b"); final List expected2 = new ArrayList(); - expected2.add( "a" ); + expected2.add("a"); - expected2.add( "b" ); + expected2.add("b"); - expected2.add( "c" ); + expected2.add("c"); - final List actual2 = TopologicalSorter.sort( dag2 ); + final List actual2 = TopologicalSorter.sort(dag2); - assertEquals( expected2, actual2, "Order is different then expected" ); + assertEquals(expected2, actual2, "Order is different then expected"); // // a --> b --> c --> e @@ -99,53 +96,53 @@ public void testDfs() final DAG dag3 = new DAG(); // force order of nodes in the graph - dag3.addVertex( "a" ); + dag3.addVertex("a"); - dag3.addVertex( "b" ); + dag3.addVertex("b"); - dag3.addVertex( "c" ); + dag3.addVertex("c"); - dag3.addVertex( "d" ); + dag3.addVertex("d"); - dag3.addVertex( "e" ); + dag3.addVertex("e"); - dag3.addVertex( "f" ); + dag3.addVertex("f"); - dag3.addEdge( "a", "b" ); + dag3.addEdge("a", "b"); - dag3.addEdge( "b", "c" ); + dag3.addEdge("b", "c"); - dag3.addEdge( "b", "d" ); + dag3.addEdge("b", "d"); - dag3.addEdge( "c", "d" ); + dag3.addEdge("c", "d"); - dag3.addEdge( "c", "e" ); + dag3.addEdge("c", "e"); - dag3.addEdge( "f", "d" ); + dag3.addEdge("f", "d"); - dag3.addEdge( "e", "f" ); + dag3.addEdge("e", "f"); - dag3.addEdge( "f", "g" ); + dag3.addEdge("f", "g"); final List expected3 = new ArrayList(); - expected3.add( "d" ); + expected3.add("d"); - expected3.add( "g" ); + expected3.add("g"); - expected3.add( "f" ); + expected3.add("f"); - expected3.add( "e" ); + expected3.add("e"); - expected3.add( "c" ); + expected3.add("c"); - expected3.add( "b" ); + expected3.add("b"); - expected3.add( "a" ); + expected3.add("a"); - final List actual3 = TopologicalSorter.sort( dag3 ); + final List actual3 = TopologicalSorter.sort(dag3); - assertEquals( expected3, actual3, "Order is different then expected" ); + assertEquals(expected3, actual3, "Order is different then expected"); // // a --> b --> c --> e @@ -156,48 +153,48 @@ public void testDfs() final DAG dag4 = new DAG(); // force order of nodes in the graph - dag4.addVertex( "f" ); + dag4.addVertex("f"); - dag4.addVertex( "e" ); + dag4.addVertex("e"); - dag4.addVertex( "d" ); + dag4.addVertex("d"); - dag4.addVertex( "c" ); + dag4.addVertex("c"); - dag4.addVertex( "a" ); + dag4.addVertex("a"); - dag4.addVertex( "b" ); + dag4.addVertex("b"); - dag4.addEdge( "a", "b" ); + dag4.addEdge("a", "b"); - dag4.addEdge( "b", "c" ); + dag4.addEdge("b", "c"); - dag4.addEdge( "b", "d" ); + dag4.addEdge("b", "d"); - dag4.addEdge( "c", "d" ); + dag4.addEdge("c", "d"); - dag4.addEdge( "c", "e" ); + dag4.addEdge("c", "e"); - dag4.addEdge( "f", "d" ); + dag4.addEdge("f", "d"); - dag4.addEdge( "e", "f" ); + dag4.addEdge("e", "f"); final List expected4 = new ArrayList(); - expected4.add( "d" ); + expected4.add("d"); - expected4.add( "f" ); + expected4.add("f"); - expected4.add( "e" ); + expected4.add("e"); - expected4.add( "c" ); + expected4.add("c"); - expected4.add( "b" ); + expected4.add("b"); - expected4.add( "a" ); + expected4.add("a"); - final List actual4 = TopologicalSorter.sort( dag4 ); + final List actual4 = TopologicalSorter.sort(dag4); - assertEquals( expected4, actual4, "Order is different then expected" ); + assertEquals(expected4, actual4, "Order is different then expected"); } } diff --git a/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java b/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java index 5a911425..3274a11f 100644 --- a/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java +++ b/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java @@ -27,36 +27,33 @@ * @version $Id: $Id * @since 3.4.0 */ -public class VertexTest -{ +public class VertexTest { /** *

        testVertex.

        */ @Test - public void testVertex() - { + public void testVertex() { - final Vertex vertex1 = new Vertex( "a" ); + final Vertex vertex1 = new Vertex("a"); - assertEquals( "a", vertex1.getLabel() ); + assertEquals("a", vertex1.getLabel()); - assertEquals( 0, vertex1.getChildren().size() ); + assertEquals(0, vertex1.getChildren().size()); - assertEquals( 0, vertex1.getChildLabels().size() ); + assertEquals(0, vertex1.getChildLabels().size()); - final Vertex vertex2 = new Vertex( "b" ); + final Vertex vertex2 = new Vertex("b"); - assertEquals( "b", vertex2.getLabel() ); + assertEquals("b", vertex2.getLabel()); - vertex1.addEdgeTo( vertex2 ); + vertex1.addEdgeTo(vertex2); - assertEquals( 1, vertex1.getChildren().size() ); + assertEquals(1, vertex1.getChildren().size()); - assertEquals( 1, vertex1.getChildLabels().size() ); + assertEquals(1, vertex1.getChildLabels().size()); - assertEquals( vertex2, vertex1.getChildren().get( 0 ) ); - - assertEquals( "b", vertex1.getChildLabels().get( 0 ) ); + assertEquals(vertex2, vertex1.getChildren().get(0)); + assertEquals("b", vertex1.getChildLabels().get(0)); } } diff --git a/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java b/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java index a4244e34..0967b496 100644 --- a/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java +++ b/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java @@ -1,6 +1,5 @@ package org.codehaus.plexus.util.introspection; - /* * Copyright The Codehaus Foundation. * @@ -17,11 +16,6 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -30,6 +24,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** *

        ReflectionValueExtractorTest class.

        * @@ -37,8 +36,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class ReflectionValueExtractorTest -{ +public class ReflectionValueExtractorTest { private Project project; /** @@ -47,30 +45,28 @@ public class ReflectionValueExtractorTest * @throws java.lang.Exception if any. */ @BeforeEach - public void setUp() - throws Exception - { + public void setUp() throws Exception { Dependency dependency1 = new Dependency(); - dependency1.setArtifactId( "dep1" ); + dependency1.setArtifactId("dep1"); Dependency dependency2 = new Dependency(); - dependency2.setArtifactId( "dep2" ); + dependency2.setArtifactId("dep2"); project = new Project(); - project.setModelVersion( "4.0.0" ); - project.setGroupId( "org.apache.maven" ); - project.setArtifactId( "maven-core" ); - project.setName( "Maven" ); - project.setVersion( "2.0-SNAPSHOT" ); - project.setScm( new Scm() ); - project.getScm().setConnection( "scm-connection" ); - project.addDependency( dependency1 ); - project.addDependency( dependency2 ); - project.setBuild( new Build() ); + project.setModelVersion("4.0.0"); + project.setGroupId("org.apache.maven"); + project.setArtifactId("maven-core"); + project.setName("Maven"); + project.setVersion("2.0-SNAPSHOT"); + project.setScm(new Scm()); + project.getScm().setConnection("scm-connection"); + project.addDependency(dependency1); + project.addDependency(dependency2); + project.setBuild(new Build()); // Build up an artifactMap - project.addArtifact( new Artifact( "g0", "a0", "v0", "e0", "c0" ) ); - project.addArtifact( new Artifact( "g1", "a1", "v1", "e1", "c1" ) ); - project.addArtifact( new Artifact( "g2", "a2", "v2", "e2", "c2" ) ); + project.addArtifact(new Artifact("g0", "a0", "v0", "e0", "c0")); + project.addArtifact(new Artifact("g1", "a1", "v1", "e1", "c1")); + project.addArtifact(new Artifact("g2", "a2", "v2", "e2", "c2")); } /** @@ -79,86 +75,83 @@ public void setUp() * @throws java.lang.Exception if any. */ @Test - public void testValueExtraction() - throws Exception - { + public void testValueExtraction() throws Exception { // ---------------------------------------------------------------------- // Top level values // ---------------------------------------------------------------------- - assertEquals( "4.0.0", ReflectionValueExtractor.evaluate( "project.modelVersion", project ) ); + assertEquals("4.0.0", ReflectionValueExtractor.evaluate("project.modelVersion", project)); - assertEquals( "org.apache.maven", ReflectionValueExtractor.evaluate( "project.groupId", project ) ); + assertEquals("org.apache.maven", ReflectionValueExtractor.evaluate("project.groupId", project)); - assertEquals( "maven-core", ReflectionValueExtractor.evaluate( "project.artifactId", project ) ); + assertEquals("maven-core", ReflectionValueExtractor.evaluate("project.artifactId", project)); - assertEquals( "Maven", ReflectionValueExtractor.evaluate( "project.name", project ) ); + assertEquals("Maven", ReflectionValueExtractor.evaluate("project.name", project)); - assertEquals( "2.0-SNAPSHOT", ReflectionValueExtractor.evaluate( "project.version", project ) ); + assertEquals("2.0-SNAPSHOT", ReflectionValueExtractor.evaluate("project.version", project)); // ---------------------------------------------------------------------- // SCM // ---------------------------------------------------------------------- - assertEquals( "scm-connection", ReflectionValueExtractor.evaluate( "project.scm.connection", project ) ); + assertEquals("scm-connection", ReflectionValueExtractor.evaluate("project.scm.connection", project)); // ---------------------------------------------------------------------- // Dependencies // ---------------------------------------------------------------------- - List dependencies = (List) ReflectionValueExtractor.evaluate( "project.dependencies", project ); + List dependencies = (List) ReflectionValueExtractor.evaluate("project.dependencies", project); - assertNotNull( dependencies ); + assertNotNull(dependencies); - assertEquals( 2, dependencies.size() ); + assertEquals(2, dependencies.size()); // ---------------------------------------------------------------------- // Dependencies - using index notation // ---------------------------------------------------------------------- // List - Dependency dependency = (Dependency) ReflectionValueExtractor.evaluate( "project.dependencies[0]", project ); + Dependency dependency = (Dependency) ReflectionValueExtractor.evaluate("project.dependencies[0]", project); - assertNotNull( dependency ); + assertNotNull(dependency); - assertTrue( "dep1".equals( dependency.getArtifactId() ) ); + assertTrue("dep1".equals(dependency.getArtifactId())); - String artifactId = (String) ReflectionValueExtractor.evaluate( "project.dependencies[1].artifactId", project ); + String artifactId = (String) ReflectionValueExtractor.evaluate("project.dependencies[1].artifactId", project); - assertTrue( "dep2".equals( artifactId ) ); + assertTrue("dep2".equals(artifactId)); // Array - dependency = (Dependency) ReflectionValueExtractor.evaluate( "project.dependenciesAsArray[0]", project ); + dependency = (Dependency) ReflectionValueExtractor.evaluate("project.dependenciesAsArray[0]", project); - assertNotNull( dependency ); + assertNotNull(dependency); - assertTrue( "dep1".equals( dependency.getArtifactId() ) ); + assertTrue("dep1".equals(dependency.getArtifactId())); - artifactId = (String) ReflectionValueExtractor.evaluate( "project.dependenciesAsArray[1].artifactId", project ); + artifactId = (String) ReflectionValueExtractor.evaluate("project.dependenciesAsArray[1].artifactId", project); - assertTrue( "dep2".equals( artifactId ) ); + assertTrue("dep2".equals(artifactId)); // Map - dependency = (Dependency) ReflectionValueExtractor.evaluate( "project.dependenciesAsMap(dep1)", project ); + dependency = (Dependency) ReflectionValueExtractor.evaluate("project.dependenciesAsMap(dep1)", project); - assertNotNull( dependency ); + assertNotNull(dependency); - assertTrue( "dep1".equals( dependency.getArtifactId() ) ); + assertTrue("dep1".equals(dependency.getArtifactId())); - artifactId = - (String) ReflectionValueExtractor.evaluate( "project.dependenciesAsMap(dep2).artifactId", project ); + artifactId = (String) ReflectionValueExtractor.evaluate("project.dependenciesAsMap(dep2).artifactId", project); - assertTrue( "dep2".equals( artifactId ) ); + assertTrue("dep2".equals(artifactId)); // ---------------------------------------------------------------------- // Build // ---------------------------------------------------------------------- - Build build = (Build) ReflectionValueExtractor.evaluate( "project.build", project ); + Build build = (Build) ReflectionValueExtractor.evaluate("project.build", project); - assertNotNull( build ); + assertNotNull(build); } /** @@ -167,12 +160,10 @@ public void testValueExtraction() * @throws java.lang.Exception if any. */ @Test - public void testValueExtractorWithAInvalidExpression() - throws Exception - { - assertNull( ReflectionValueExtractor.evaluate( "project.foo", project ) ); - assertNull( ReflectionValueExtractor.evaluate( "project.dependencies[10]", project ) ); - assertNull( ReflectionValueExtractor.evaluate( "project.dependencies[0].foo", project ) ); + public void testValueExtractorWithAInvalidExpression() throws Exception { + assertNull(ReflectionValueExtractor.evaluate("project.foo", project)); + assertNull(ReflectionValueExtractor.evaluate("project.dependencies[10]", project)); + assertNull(ReflectionValueExtractor.evaluate("project.dependencies[0].foo", project)); } /** @@ -181,13 +172,11 @@ public void testValueExtractorWithAInvalidExpression() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testMappedDottedKey() - throws Exception - { + public void testMappedDottedKey() throws Exception { Map map = new HashMap(); - map.put( "a.b", "a.b-value" ); + map.put("a.b", "a.b-value"); - assertEquals( "a.b-value", ReflectionValueExtractor.evaluate( "h.value(a.b)", new ValueHolder( map ) ) ); + assertEquals("a.b-value", ReflectionValueExtractor.evaluate("h.value(a.b)", new ValueHolder(map))); } /** @@ -196,15 +185,13 @@ public void testMappedDottedKey() * @throws java.lang.Exception if any. */ @Test - public void testIndexedMapped() - throws Exception - { + public void testIndexedMapped() throws Exception { Map map = new HashMap(); - map.put( "a", "a-value" ); + map.put("a", "a-value"); List list = new ArrayList(); - list.add( map ); + list.add(map); - assertEquals( "a-value", ReflectionValueExtractor.evaluate( "h.value[0](a)", new ValueHolder( list ) ) ); + assertEquals("a-value", ReflectionValueExtractor.evaluate("h.value[0](a)", new ValueHolder(list))); } /** @@ -213,14 +200,12 @@ public void testIndexedMapped() * @throws java.lang.Exception if any. */ @Test - public void testMappedIndexed() - throws Exception - { + public void testMappedIndexed() throws Exception { List list = new ArrayList(); - list.add( "a-value" ); + list.add("a-value"); Map map = new HashMap(); - map.put( "a", list ); - assertEquals( "a-value", ReflectionValueExtractor.evaluate( "h.value(a)[0]", new ValueHolder( map ) ) ); + map.put("a", list); + assertEquals("a-value", ReflectionValueExtractor.evaluate("h.value(a)[0]", new ValueHolder(map))); } /** @@ -229,12 +214,10 @@ public void testMappedIndexed() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testMappedMissingDot() - throws Exception - { + public void testMappedMissingDot() throws Exception { Map map = new HashMap(); - map.put( "a", new ValueHolder( "a-value" ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value(a)value", new ValueHolder( map ) ) ); + map.put("a", new ValueHolder("a-value")); + assertNull(ReflectionValueExtractor.evaluate("h.value(a)value", new ValueHolder(map))); } /** @@ -243,12 +226,10 @@ public void testMappedMissingDot() * @throws java.lang.Exception if any. */ @Test - public void testIndexedMissingDot() - throws Exception - { + public void testIndexedMissingDot() throws Exception { List list = new ArrayList(); - list.add( new ValueHolder( "a-value" ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value[0]value", new ValueHolder( list ) ) ); + list.add(new ValueHolder("a-value")); + assertNull(ReflectionValueExtractor.evaluate("h.value[0]value", new ValueHolder(list))); } /** @@ -257,10 +238,8 @@ public void testIndexedMissingDot() * @throws java.lang.Exception if any. */ @Test - public void testDotDot() - throws Exception - { - assertNull( ReflectionValueExtractor.evaluate( "h..value", new ValueHolder( "value" ) ) ); + public void testDotDot() throws Exception { + assertNull(ReflectionValueExtractor.evaluate("h..value", new ValueHolder("value"))); } /** @@ -269,19 +248,17 @@ public void testDotDot() * @throws java.lang.Exception if any. */ @Test - public void testBadIndexedSyntax() - throws Exception - { + public void testBadIndexedSyntax() throws Exception { List list = new ArrayList(); - list.add( "a-value" ); - Object value = new ValueHolder( list ); - - assertNull( ReflectionValueExtractor.evaluate( "h.value[", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value[]", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value[a]", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value[0", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value[0)", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value[-1]", value ) ); + list.add("a-value"); + Object value = new ValueHolder(list); + + assertNull(ReflectionValueExtractor.evaluate("h.value[", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value[]", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value[a]", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value[0", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value[0)", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value[-1]", value)); } /** @@ -290,17 +267,15 @@ public void testBadIndexedSyntax() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testBadMappedSyntax() - throws Exception - { + public void testBadMappedSyntax() throws Exception { Map map = new HashMap(); - map.put( "a", "a-value" ); - Object value = new ValueHolder( map ); + map.put("a", "a-value"); + Object value = new ValueHolder(map); - assertNull( ReflectionValueExtractor.evaluate( "h.value(", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value()", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value(a", value ) ); - assertNull( ReflectionValueExtractor.evaluate( "h.value(a]", value ) ); + assertNull(ReflectionValueExtractor.evaluate("h.value(", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value()", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value(a", value)); + assertNull(ReflectionValueExtractor.evaluate("h.value(a]", value)); } /** @@ -309,15 +284,10 @@ public void testBadMappedSyntax() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testIllegalIndexedType() - throws Exception - { - try - { - ReflectionValueExtractor.evaluate( "h.value[1]", new ValueHolder( "string" ) ); - } - catch ( Exception e ) - { + public void testIllegalIndexedType() throws Exception { + try { + ReflectionValueExtractor.evaluate("h.value[1]", new ValueHolder("string")); + } catch (Exception e) { // TODO assert exception message } } @@ -328,15 +298,10 @@ public void testIllegalIndexedType() * @throws java.lang.Exception if any. */ @Test - public void testIllegalMappedType() - throws Exception - { - try - { - ReflectionValueExtractor.evaluate( "h.value(key)", new ValueHolder( "string" ) ); - } - catch ( Exception e ) - { + public void testIllegalMappedType() throws Exception { + try { + ReflectionValueExtractor.evaluate("h.value(key)", new ValueHolder("string")); + } catch (Exception e) { // TODO assert exception message } } @@ -347,10 +312,8 @@ public void testIllegalMappedType() * @throws java.lang.Exception if any. */ @Test - public void testTrimRootToken() - throws Exception - { - assertNull( ReflectionValueExtractor.evaluate( "project", project, true ) ); + public void testTrimRootToken() throws Exception { + assertNull(ReflectionValueExtractor.evaluate("project", project, true)); } /** @@ -359,19 +322,21 @@ public void testTrimRootToken() * @throws java.lang.Exception if any. */ @Test - public void testArtifactMap() - throws Exception - { - assertEquals( "g0", ( (Artifact) ReflectionValueExtractor.evaluate( "project.artifactMap(g0:a0:c0)", - project ) ).getGroupId() ); - assertEquals( "a1", ( (Artifact) ReflectionValueExtractor.evaluate( "project.artifactMap(g1:a1:c1)", - project ) ).getArtifactId() ); - assertEquals( "c2", ( (Artifact) ReflectionValueExtractor.evaluate( "project.artifactMap(g2:a2:c2)", - project ) ).getClassifier() ); + public void testArtifactMap() throws Exception { + assertEquals( + "g0", + ((Artifact) ReflectionValueExtractor.evaluate("project.artifactMap(g0:a0:c0)", project)).getGroupId()); + assertEquals( + "a1", + ((Artifact) ReflectionValueExtractor.evaluate("project.artifactMap(g1:a1:c1)", project)) + .getArtifactId()); + assertEquals( + "c2", + ((Artifact) ReflectionValueExtractor.evaluate("project.artifactMap(g2:a2:c2)", project)) + .getClassifier()); } - public static class Artifact - { + public static class Artifact { private String groupId; private String artifactId; @@ -382,8 +347,7 @@ public static class Artifact private String classifier; - public Artifact( String groupId, String artifactId, String version, String extension, String classifier ) - { + public Artifact(String groupId, String artifactId, String version, String extension, String classifier) { this.groupId = groupId; this.artifactId = artifactId; this.version = version; @@ -391,59 +355,48 @@ public Artifact( String groupId, String artifactId, String version, String exten this.classifier = classifier; } - public String getGroupId() - { + public String getGroupId() { return groupId; } - public void setGroupId( String groupId ) - { + public void setGroupId(String groupId) { this.groupId = groupId; } - public String getArtifactId() - { + public String getArtifactId() { return artifactId; } - public void setArtifactId( String artifactId ) - { + public void setArtifactId(String artifactId) { this.artifactId = artifactId; } - public String getVersion() - { + public String getVersion() { return version; } - public void setVersion( String version ) - { + public void setVersion(String version) { this.version = version; } - public String getExtension() - { + public String getExtension() { return extension; } - public void setExtension( String extension ) - { + public void setExtension(String extension) { this.extension = extension; } - public String getClassifier() - { + public String getClassifier() { return classifier; } - public void setClassifier( String classifier ) - { + public void setClassifier(String classifier) { this.classifier = classifier; } } - public static class Project - { + public static class Project { private String modelVersion; private String groupId; @@ -463,170 +416,135 @@ public static class Project private Map artifactMap = new HashMap(); private String description; - public void setModelVersion( String modelVersion ) - { + public void setModelVersion(String modelVersion) { this.modelVersion = modelVersion; } - public void setGroupId( String groupId ) - { + public void setGroupId(String groupId) { this.groupId = groupId; } - public void setScm( Scm scm ) - { + public void setScm(Scm scm) { this.scm = scm; } - public void addDependency( Dependency dependency ) - { - this.dependencies.add( dependency ); + public void addDependency(Dependency dependency) { + this.dependencies.add(dependency); } - public void setBuild( Build build ) - { + public void setBuild(Build build) { this.build = build; } - public void setArtifactId( String artifactId ) - { + public void setArtifactId(String artifactId) { this.artifactId = artifactId; } - public void setName( String name ) - { + public void setName(String name) { this.name = name; } - public void setVersion( String version ) - { + public void setVersion(String version) { this.version = version; } - public Scm getScm() - { + public Scm getScm() { return scm; } - public String getModelVersion() - { + public String getModelVersion() { return modelVersion; } - public String getGroupId() - { + public String getGroupId() { return groupId; } - public List getDependencies() - { + public List getDependencies() { return dependencies; } - public Build getBuild() - { + public Build getBuild() { return build; } - public String getArtifactId() - { + public String getArtifactId() { return artifactId; } - public String getName() - { + public String getName() { return name; } - public String getVersion() - { + public String getVersion() { return version; } - public Dependency[] getDependenciesAsArray() - { - return (Dependency[]) getDependencies().toArray( new Dependency[0] ); + public Dependency[] getDependenciesAsArray() { + return (Dependency[]) getDependencies().toArray(new Dependency[0]); } - public Map getDependenciesAsMap() - { + public Map getDependenciesAsMap() { Map ret = new HashMap(); - for ( Object o : getDependencies() ) - { + for (Object o : getDependencies()) { Dependency dep = (Dependency) o; - ret.put( dep.getArtifactId(), dep ); + ret.put(dep.getArtifactId(), dep); } return ret; } // ${project.artifactMap(g:a:v)} - public void addArtifact( Artifact a ) - { - artifactMap.put( a.getGroupId() + ":" + a.getArtifactId() + ":" + a.getClassifier(), a ); + public void addArtifact(Artifact a) { + artifactMap.put(a.getGroupId() + ":" + a.getArtifactId() + ":" + a.getClassifier(), a); } - public Map getArtifactMap() - { + public Map getArtifactMap() { return artifactMap; } - public void setDescription( String description ) - { + public void setDescription(String description) { this.description = description; } - public String getDescription() - { + public String getDescription() { return description; } } - public static class Build - { - - } + public static class Build {} - public static class Dependency - { + public static class Dependency { private String artifactId; - public String getArtifactId() - { + public String getArtifactId() { return artifactId; } - public void setArtifactId( String id ) - { + public void setArtifactId(String id) { artifactId = id; } } - public static class Scm - { + public static class Scm { private String connection; - public void setConnection( String connection ) - { + public void setConnection(String connection) { this.connection = connection; } - public String getConnection() - { + public String getConnection() { return connection; } } - public static class ValueHolder - { + public static class ValueHolder { private final Object value; - public ValueHolder( Object value ) - { + public ValueHolder(Object value) { this.value = value; } - public Object getValue() - { + public Object getValue() { return value; } } @@ -637,12 +555,10 @@ public Object getValue() * @throws java.lang.Exception if any. */ @Test - public void testRootPropertyRegression() - throws Exception - { + public void testRootPropertyRegression() throws Exception { Project project = new Project(); - project.setDescription( "c:\\\\org\\apache\\test" ); - Object evalued = ReflectionValueExtractor.evaluate( "description", project ); - assertNotNull( evalued ); + project.setDescription("c:\\\\org\\apache\\test"); + Object evalued = ReflectionValueExtractor.evaluate("description", project); + assertNotNull(evalued); } } diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java index c57dbf8c..d0959593 100644 --- a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java +++ b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java @@ -24,8 +24,8 @@ import java.nio.file.attribute.FileTime; import java.util.Objects; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -33,110 +33,98 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -public class CachingOutputStreamTest -{ +public class CachingOutputStreamTest { Path tempDir; Path checkLastModified; @BeforeEach - public void setup() throws IOException - { - Path dir = Paths.get( "target/io" ); - Files.createDirectories( dir ); - tempDir = Files.createTempDirectory( dir, "temp-" ); - checkLastModified = tempDir.resolve( ".check" ); + public void setup() throws IOException { + Path dir = Paths.get("target/io"); + Files.createDirectories(dir); + tempDir = Files.createTempDirectory(dir, "temp-"); + checkLastModified = tempDir.resolve(".check"); } - private void waitLastModified() throws IOException, InterruptedException - { - Files.newOutputStream( checkLastModified ).close(); - FileTime lm = Files.getLastModifiedTime( checkLastModified ); - while ( true ) - { - Files.newOutputStream( checkLastModified ).close(); - FileTime nlm = Files.getLastModifiedTime( checkLastModified ); - if ( !Objects.equals( nlm, lm ) ) - { + private void waitLastModified() throws IOException, InterruptedException { + Files.newOutputStream(checkLastModified).close(); + FileTime lm = Files.getLastModifiedTime(checkLastModified); + while (true) { + Files.newOutputStream(checkLastModified).close(); + FileTime nlm = Files.getLastModifiedTime(checkLastModified); + if (!Objects.equals(nlm, lm)) { break; } - Thread.sleep( 10 ); + Thread.sleep(10); } } @Test - public void testWriteNoExistingFile() throws IOException, InterruptedException - { - byte[] data = "Hello world!".getBytes( StandardCharsets.UTF_8 ); - Path path = tempDir.resolve( "file.txt" ); - assertFalse( Files.exists( path ) ); - - try ( CachingOutputStream cos = new CachingOutputStream( path, 4 ) ) - { - cos.write( data ); + public void testWriteNoExistingFile() throws IOException, InterruptedException { + byte[] data = "Hello world!".getBytes(StandardCharsets.UTF_8); + Path path = tempDir.resolve("file.txt"); + assertFalse(Files.exists(path)); + + try (CachingOutputStream cos = new CachingOutputStream(path, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - byte[] read = Files.readAllBytes( path ); - assertArrayEquals( data, read ); - FileTime modified = Files.getLastModifiedTime( path ); + assertTrue(Files.exists(path)); + byte[] read = Files.readAllBytes(path); + assertArrayEquals(data, read); + FileTime modified = Files.getLastModifiedTime(path); waitLastModified(); - try ( CachingOutputStream cos = new CachingOutputStream( path, 4 ) ) - { - cos.write( data ); + try (CachingOutputStream cos = new CachingOutputStream(path, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = Files.readAllBytes( path ); - assertArrayEquals( data, read ); - FileTime newModified = Files.getLastModifiedTime( path ); - assertEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = Files.readAllBytes(path); + assertArrayEquals(data, read); + FileTime newModified = Files.getLastModifiedTime(path); + assertEquals(modified, newModified); modified = newModified; waitLastModified(); // write longer data - data = "Good morning!".getBytes( StandardCharsets.UTF_8 ); - try ( CachingOutputStream cos = new CachingOutputStream( path, 4 ) ) - { - cos.write( data ); + data = "Good morning!".getBytes(StandardCharsets.UTF_8); + try (CachingOutputStream cos = new CachingOutputStream(path, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = Files.readAllBytes( path ); - assertArrayEquals( data, read ); - newModified = Files.getLastModifiedTime( path ); - assertNotEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = Files.readAllBytes(path); + assertArrayEquals(data, read); + newModified = Files.getLastModifiedTime(path); + assertNotEquals(modified, newModified); modified = newModified; waitLastModified(); // different data same size - data = "Good mornong!".getBytes( StandardCharsets.UTF_8 ); - try ( CachingOutputStream cos = new CachingOutputStream( path, 4 ) ) - { - cos.write( data ); + data = "Good mornong!".getBytes(StandardCharsets.UTF_8); + try (CachingOutputStream cos = new CachingOutputStream(path, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = Files.readAllBytes( path ); - assertArrayEquals( data, read ); - newModified = Files.getLastModifiedTime( path ); - assertNotEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = Files.readAllBytes(path); + assertArrayEquals(data, read); + newModified = Files.getLastModifiedTime(path); + assertNotEquals(modified, newModified); modified = newModified; waitLastModified(); // same data but shorter - data = "Good mornon".getBytes( StandardCharsets.UTF_8 ); - try ( CachingOutputStream cos = new CachingOutputStream( path, 4 ) ) - { - cos.write( data ); + data = "Good mornon".getBytes(StandardCharsets.UTF_8); + try (CachingOutputStream cos = new CachingOutputStream(path, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = Files.readAllBytes( path ); - assertArrayEquals( data, read ); - newModified = Files.getLastModifiedTime( path ); - assertNotEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = Files.readAllBytes(path); + assertArrayEquals(data, read); + newModified = Files.getLastModifiedTime(path); + assertNotEquals(modified, newModified); modified = newModified; } - } diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java index 17026092..f94e90b0 100644 --- a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java +++ b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java @@ -33,43 +33,37 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -public class CachingWriterTest -{ +public class CachingWriterTest { Path tempDir; Path checkLastModified; @BeforeEach - public void setup() throws IOException - { - Path dir = Paths.get( "target/io" ); - Files.createDirectories( dir ); - tempDir = Files.createTempDirectory( dir, "temp-" ); - checkLastModified = tempDir.resolve( ".check" ); + public void setup() throws IOException { + Path dir = Paths.get("target/io"); + Files.createDirectories(dir); + tempDir = Files.createTempDirectory(dir, "temp-"); + checkLastModified = tempDir.resolve(".check"); } - private void waitLastModified() throws IOException, InterruptedException - { - Files.newOutputStream( checkLastModified ).close(); - FileTime lm = Files.getLastModifiedTime( checkLastModified ); - while ( true ) - { - Files.newOutputStream( checkLastModified ).close(); - FileTime nlm = Files.getLastModifiedTime( checkLastModified ); - if ( !Objects.equals( nlm, lm ) ) - { + private void waitLastModified() throws IOException, InterruptedException { + Files.newOutputStream(checkLastModified).close(); + FileTime lm = Files.getLastModifiedTime(checkLastModified); + while (true) { + Files.newOutputStream(checkLastModified).close(); + FileTime nlm = Files.getLastModifiedTime(checkLastModified); + if (!Objects.equals(nlm, lm)) { break; } - Thread.sleep( 10 ); + Thread.sleep(10); } } @Test - public void testNoOverwriteWithFlush() throws IOException, InterruptedException - { + public void testNoOverwriteWithFlush() throws IOException, InterruptedException { String data = "Hello world!"; Path path = tempDir.resolve("file-bigger.txt"); - assertFalse( Files.exists(path)); + assertFalse(Files.exists(path)); try (Writer w = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) { for (int i = 0; i < 10; i++) { @@ -91,77 +85,71 @@ public void testNoOverwriteWithFlush() throws IOException, InterruptedException } @Test - public void testWriteNoExistingFile() throws IOException, InterruptedException - { + public void testWriteNoExistingFile() throws IOException, InterruptedException { String data = "Hello world!"; - Path path = tempDir.resolve( "file.txt" ); - assertFalse( Files.exists( path ) ); + Path path = tempDir.resolve("file.txt"); + assertFalse(Files.exists(path)); - try ( CachingWriter cos = new CachingWriter( path, StandardCharsets.UTF_8, 4 ) ) - { - cos.write( data ); + try (CachingWriter cos = new CachingWriter(path, StandardCharsets.UTF_8, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - String read = new String( Files.readAllBytes( path ), StandardCharsets.UTF_8 ); - assertEquals( data, read ); - FileTime modified = Files.getLastModifiedTime( path ); + assertTrue(Files.exists(path)); + String read = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); + assertEquals(data, read); + FileTime modified = Files.getLastModifiedTime(path); waitLastModified(); - try ( CachingWriter cos = new CachingWriter( path, StandardCharsets.UTF_8, 4 ) ) - { - cos.write( data ); + try (CachingWriter cos = new CachingWriter(path, StandardCharsets.UTF_8, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = new String( Files.readAllBytes( path ), StandardCharsets.UTF_8 ); - assertEquals( data, read ); - FileTime newModified = Files.getLastModifiedTime( path ); - assertEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); + assertEquals(data, read); + FileTime newModified = Files.getLastModifiedTime(path); + assertEquals(modified, newModified); modified = newModified; waitLastModified(); // write longer data data = "Good morning!"; - try ( CachingWriter cos = new CachingWriter( path, StandardCharsets.UTF_8, 4 ) ) - { - cos.write( data ); + try (CachingWriter cos = new CachingWriter(path, StandardCharsets.UTF_8, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = new String( Files.readAllBytes( path ), StandardCharsets.UTF_8 ); - assertEquals( data, read ); - newModified = Files.getLastModifiedTime( path ); - assertNotEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); + assertEquals(data, read); + newModified = Files.getLastModifiedTime(path); + assertNotEquals(modified, newModified); modified = newModified; waitLastModified(); // different data same size data = "Good mornong!"; - try ( CachingWriter cos = new CachingWriter( path, StandardCharsets.UTF_8, 4 ) ) - { - cos.write( data ); + try (CachingWriter cos = new CachingWriter(path, StandardCharsets.UTF_8, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = new String( Files.readAllBytes( path ), StandardCharsets.UTF_8 ); - assertEquals( data, read ); - newModified = Files.getLastModifiedTime( path ); - assertNotEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); + assertEquals(data, read); + newModified = Files.getLastModifiedTime(path); + assertNotEquals(modified, newModified); modified = newModified; waitLastModified(); // same data but shorter data = "Good mornon"; - try ( CachingWriter cos = new CachingWriter( path, StandardCharsets.UTF_8, 4 ) ) - { - cos.write( data ); + try (CachingWriter cos = new CachingWriter(path, StandardCharsets.UTF_8, 4)) { + cos.write(data); } - assertTrue( Files.exists( path ) ); - read = new String( Files.readAllBytes( path ), StandardCharsets.UTF_8 ); - assertEquals( data, read ); - newModified = Files.getLastModifiedTime( path ); - assertNotEquals( modified, newModified ); + assertTrue(Files.exists(path)); + read = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); + assertEquals(data, read); + newModified = Files.getLastModifiedTime(path); + assertNotEquals(modified, newModified); modified = newModified; } } diff --git a/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java b/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java index 9c892b35..f860d36b 100644 --- a/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java +++ b/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java @@ -16,11 +16,11 @@ * limitations under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** *

        ReflectorTest class.

        * @@ -28,8 +28,7 @@ * @version $Id: $Id * @since 3.4.0 */ -public class ReflectorTest -{ +public class ReflectorTest { private Project project; private Reflector reflector; @@ -40,12 +39,10 @@ public class ReflectorTest * @throws java.lang.Exception if any. */ @BeforeEach - public void setUp() - throws Exception - { + public void setUp() throws Exception { project = new Project(); - project.setModelVersion( "1.0.0" ); - project.setVersion( "42" ); + project.setModelVersion("1.0.0"); + project.setVersion("42"); reflector = new Reflector(); } @@ -56,10 +53,8 @@ public void setUp() * @throws java.lang.Exception if any. */ @Test - public void testObjectPropertyFromName() - throws Exception - { - assertEquals( "1.0.0", reflector.getObjectProperty( project, "modelVersion" ) ); + public void testObjectPropertyFromName() throws Exception { + assertEquals("1.0.0", reflector.getObjectProperty(project, "modelVersion")); } /** @@ -68,10 +63,8 @@ public void testObjectPropertyFromName() * @throws java.lang.Exception if any. */ @org.junit.jupiter.api.Test - public void testObjectPropertyFromBean() - throws Exception - { - assertEquals( "Foo", reflector.getObjectProperty( project, "name" ) ); + public void testObjectPropertyFromBean() throws Exception { + assertEquals("Foo", reflector.getObjectProperty(project, "name")); } /** @@ -80,37 +73,30 @@ public void testObjectPropertyFromBean() * @throws java.lang.Exception if any. */ @Test - public void testObjectPropertyFromField() - throws Exception - { - assertEquals( "42", reflector.getObjectProperty( project, "version" ) ); + public void testObjectPropertyFromField() throws Exception { + assertEquals("42", reflector.getObjectProperty(project, "version")); } - public static class Project - { + public static class Project { private String model; private String name; private String version; - public void setModelVersion( String modelVersion ) - { + public void setModelVersion(String modelVersion) { this.model = modelVersion; } - public void setVersion( String version ) - { + public void setVersion(String version) { this.version = version; } - public String modelVersion() - { + public String modelVersion() { return model; } - public String getName() - { + public String getName() { return "Foo"; } }