Am 2019-11-25 um 03:08 schrieb Mark James:
Hello,Is there any chance of removing the dependency of Artifact on Commons-Lang? Something nine times bigger is pulled in just to reference the String utility functions isNotEmpty, notBlank, and isNumeric. I understand the advantages of libraries, but this comes at more of a cost in Java because common Java libraries are less likely to be on the system than native libraries, and so must be either specified as a dependency (that must be downloaded and added to build and class paths), distributed with the using JAR (requiring an installation expansion), or embedded into using JARs (defeating the space-saving advantage). Semi-automated dependency resolution probably makes this easier, but many such as myself aren't familiar with it. I'd like to be able to distribute my package as a single JAR, with Artifact but not Commons-Lang embedded. But this currently needs the following changes: 1. Replacing StringUtils.isNotEmpty in DefaultArtifact with a not-null + positive-length test. 2. In ArtifactUtils.notBlank, replacing Validate.notBlank( str, message ); with for (int i=0; i < str.length(); i++) if (!Character.isWhitespace(str.charAt(i))) return; throw new IllegalArgumentException(message); or, using Java 8 code, if (str.chars().allMatch(Character::isWhitespace)) throw new IllegalArgumentException(message);
These are not equivalient. Validate#notBlank throws NPE on null input, those alternatives don't do. I'd has to be interface specification equal.
M --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
