From c30a94191c13bc775c189f2f32bf90ef1bbdcbbf Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 17 Sep 2015 15:04:15 +0000
Subject: [PATCH] In Utils.wrapText(), use early exit
---
opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java | 155 +++++++++++++++++++++++----------------------------
1 files changed, 71 insertions(+), 84 deletions(-)
diff --git a/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java b/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java
index d69eff3..acdc829 100644
--- a/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java
+++ b/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java
@@ -57,9 +57,7 @@
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.RDN;
-/**
- * This class provides utility functions for all the client side tools.
- */
+/** This class provides utility functions for all the client side tools. */
public final class Utils {
/** Platform appropriate line separator. */
@@ -71,9 +69,7 @@
*/
public static final String OBFUSCATED_VALUE = "******";
- /**
- * The maximum number of times we try to confirm.
- */
+ /** The maximum number of times we try to confirm. */
public static final int CONFIRMATION_MAX_TRIES = 5;
/**
@@ -97,16 +93,11 @@
private static final String COMMENT_SHELL_UNIX = "# ";
private static final String COMMENT_BATCH_WINDOWS = "rem ";
- /**
- * The String used to write comments in a shell (or batch) script.
- */
+ /** The String used to write comments in a shell (or batch) script. */
public static final String SHELL_COMMENT_SEPARATOR = OperatingSystem.isWindows() ? COMMENT_BATCH_WINDOWS
: COMMENT_SHELL_UNIX;
- /**
- * The column at which to wrap long lines of output in the command-line
- * tools.
- */
+ /** The column at which to wrap long lines of output in the command-line tools. */
public static final int MAX_LINE_WIDTH;
static {
int columns = 80;
@@ -304,6 +295,10 @@
* @return The wrapped text.
*/
public static String wrapText(final String text, int width, final int indent) {
+ if (text == null) {
+ return "";
+ }
+
// Calculate the real width and indentation padding.
width -= indent;
final StringBuilder pb = new StringBuilder();
@@ -313,89 +308,82 @@
final String padding = pb.toString();
final StringBuilder buffer = new StringBuilder();
- if (text != null) {
- final StringTokenizer lineTokenizer = new StringTokenizer(text, "\r\n", true);
- while (lineTokenizer.hasMoreTokens()) {
- final String line = lineTokenizer.nextToken();
- if ("\r".equals(line) || "\n".equals(line)) {
- // It's an end-of-line character, so append it as-is.
- buffer.append(line);
- } else if (line.length() <= width) {
- // The line fits in the specified width, so append it as-is.
- buffer.append(padding);
- buffer.append(line);
- } else {
- // The line doesn't fit in the specified width, so it needs
- // to be wrapped. Do so at space boundaries.
- StringBuilder lineBuffer = new StringBuilder();
- StringBuilder delimBuffer = new StringBuilder();
- final StringTokenizer wordTokenizer = new StringTokenizer(line, " ", true);
- while (wordTokenizer.hasMoreTokens()) {
- final String word = wordTokenizer.nextToken();
- if (" ".equals(word)) {
- // It's a space, so add it to the delim buffer only
- // if the line buffer is not empty.
- if (lineBuffer.length() > 0) {
- delimBuffer.append(word);
- }
- } else if (word.length() > width) {
- // This is a long word that can't be wrapped, so
- // we'll just have to make do.
- if (lineBuffer.length() > 0) {
- buffer.append(padding);
- buffer.append(lineBuffer);
- buffer.append(EOL);
- lineBuffer = new StringBuilder();
- }
- buffer.append(padding);
- buffer.append(word);
+ final StringTokenizer lineTokenizer = new StringTokenizer(text, "\r\n", true);
+ while (lineTokenizer.hasMoreTokens()) {
+ final String line = lineTokenizer.nextToken();
+ if ("\r".equals(line) || "\n".equals(line)) {
+ // It's an end-of-line character, so append it as-is.
+ buffer.append(line);
+ } else if (line.length() <= width) {
+ // The line fits in the specified width, so append it as-is.
+ buffer.append(padding);
+ buffer.append(line);
+ } else {
+ // The line doesn't fit in the specified width, so it needs
+ // to be wrapped. Do so at space boundaries.
+ StringBuilder lineBuffer = new StringBuilder();
+ StringBuilder delimBuffer = new StringBuilder();
+ final StringTokenizer wordTokenizer = new StringTokenizer(line, " ", true);
+ while (wordTokenizer.hasMoreTokens()) {
+ final String word = wordTokenizer.nextToken();
+ if (" ".equals(word)) {
+ // It's a space, so add it to the delim buffer only
+ // if the line buffer is not empty.
+ if (lineBuffer.length() > 0) {
+ delimBuffer.append(word);
+ }
+ } else if (word.length() > width) {
+ // This is a long word that can't be wrapped,
+ // so we'll just have to make do.
+ if (lineBuffer.length() > 0) {
+ buffer.append(padding).append(lineBuffer).append(EOL);
+ lineBuffer = new StringBuilder();
+ }
+ buffer.append(padding);
+ buffer.append(word);
+ if (wordTokenizer.hasMoreTokens()) {
+ // The next token must be a space, so remove it.
+ // If there are still more tokens after that, then append an EOL.
+ wordTokenizer.nextToken();
if (wordTokenizer.hasMoreTokens()) {
- // The next token must be a space, so remove it.
- // If there are still more tokens after that, then append an EOL.
- wordTokenizer.nextToken();
- if (wordTokenizer.hasMoreTokens()) {
- buffer.append(EOL);
- }
+ buffer.append(EOL);
}
+ }
+
+ if (delimBuffer.length() > 0) {
+ delimBuffer = new StringBuilder();
+ }
+ } else {
+ // It's not a space, so see if we can fit it on the current line.
+ final int newLineLength =
+ lineBuffer.length() + delimBuffer.length() + word.length();
+ if (newLineLength < width) {
+ // It does fit on the line, so add it.
+ lineBuffer.append(delimBuffer).append(word);
if (delimBuffer.length() > 0) {
delimBuffer = new StringBuilder();
}
} else {
- // It's not a space, so see if we can fit it on the
- // current line.
- final int newLineLength =
- lineBuffer.length() + delimBuffer.length() + word.length();
- if (newLineLength < width) {
- // It does fit on the line, so add it.
- lineBuffer.append(delimBuffer).append(word);
+ // It doesn't fit on the line, so end the
+ // current line and start a new one.
+ buffer.append(padding).append(lineBuffer).append(EOL);
- if (delimBuffer.length() > 0) {
- delimBuffer = new StringBuilder();
- }
- } else {
- // It doesn't fit on the line, so end the
- // current line and start a new one.
- buffer.append(padding);
- buffer.append(lineBuffer);
- buffer.append(EOL);
+ lineBuffer = new StringBuilder();
+ lineBuffer.append(word);
- lineBuffer = new StringBuilder();
- lineBuffer.append(word);
-
- if (delimBuffer.length() > 0) {
- delimBuffer = new StringBuilder();
- }
+ if (delimBuffer.length() > 0) {
+ delimBuffer = new StringBuilder();
}
}
}
-
- // If there's anything left in the line buffer, then add it
- // to the final buffer.
- buffer.append(padding);
- buffer.append(lineBuffer);
}
+
+ // If there's anything left in the line buffer, then add it
+ // to the final buffer.
+ buffer.append(padding);
+ buffer.append(lineBuffer);
}
}
return buffer.toString();
@@ -531,7 +519,6 @@
return parentFile != null && parentFile.canWrite();
}
-
/** Prevent instantiation. */
private Utils() {
// Do nothing.
@@ -600,7 +587,7 @@
* @return The String that can be used to represent a given host name in a LDAP URL.
*/
public static String getHostNameForLdapUrl(String host) {
- if (host != null && host.indexOf(":") != -1) {
+ if (host != null && host.contains(":")) {
// Assume an IPv6 address has been specified and adds the brackets
// for the URL.
host = host.trim();
--
Gitblit v1.10.0