diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 02a97d5e17..a658149596 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -344,6 +344,7 @@ import org.jooq.conf.RenderNameStyle; import org.jooq.conf.Settings; import org.jooq.exception.SQLDialectNotSupportedException; import org.jooq.tools.Convert; +import org.jooq.tools.StringUtils; import org.jooq.tools.jdbc.JDBCUtils; import org.jooq.types.DayToSecond; import org.jooq.types.UByte; @@ -12921,7 +12922,11 @@ public class DSL { @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) public static String escape(String value, char escape) { String esc = "" + escape; - return value.replace(esc, esc + esc).replace("%", esc + "%").replace("_", esc + "_"); + return StringUtils.replace( + StringUtils.replace( + StringUtils.replace(value, esc, esc + esc), "%", esc + "%" + ), "_", esc + "_" + ); } /** diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index f1e10c289b..48141d0d8c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -2467,7 +2467,7 @@ public class DefaultBinding implements Binding { String format = formatISO(val); // Replace the ISO standard Z character for UTC, as some databases don't like that - return (format.substring(0, 10) + ' ' + format.substring(11)).replace("Z", "+00:00"); + return StringUtils.replace(format.substring(0, 10) + ' ' + format.substring(11), "Z", "+00:00"); } private static final String formatISO(OffsetDateTime val) { @@ -2545,7 +2545,7 @@ public class DefaultBinding implements Binding { private static final String format(OffsetTime val) { // Replace the ISO standard Z character for UTC, as some databases don't like that - return val.format(DateTimeFormatter.ISO_OFFSET_TIME).replace("Z", "+00:00"); + return StringUtils.replace(val.format(DateTimeFormatter.ISO_OFFSET_TIME), "Z", "+00:00"); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java index f7f141d1c5..7454c03fb3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java @@ -554,10 +554,14 @@ final class ResultImpl implements Result { else writer.append(' '); - String value = format0(getValue(i, index), get(i).changed(index), true) - .replace("\n", "{lf}") - .replace("\r", "{cr}") - .replace("\t", "{tab}"); + String value = + StringUtils.replace( + StringUtils.replace( + StringUtils.replace( + format0(getValue(i, index), get(i).changed(index), true), "\n", "{lf}" + ), "\r", "{cr}" + ), "\t", "{tab}" + ); String padded; if (Number.class.isAssignableFrom(fields.fields[index].getType())) { @@ -875,10 +879,11 @@ final class ResultImpl implements Result { // no break case ALWAYS: default: - return format.quoteString() - + result.replace("\\", "\\\\") - .replace(format.quoteString(), format.quoteString() + format.quoteString()) - + format.quoteString(); + return StringUtils.replace( + StringUtils.replace( + format.quoteString(), "\\", "\\\\" + ), format.quoteString(), format.quoteString() + format.quoteString() + ) + format.quoteString(); } } diff --git a/jOOQ/src/main/java/org/jooq/util/jaxb/tools/StringAdapter.java b/jOOQ/src/main/java/org/jooq/util/jaxb/tools/StringAdapter.java index bbcf479589..4986bc774c 100644 --- a/jOOQ/src/main/java/org/jooq/util/jaxb/tools/StringAdapter.java +++ b/jOOQ/src/main/java/org/jooq/util/jaxb/tools/StringAdapter.java @@ -42,6 +42,8 @@ import java.util.regex.Pattern; import javax.xml.bind.annotation.adapters.XmlAdapter; +import org.jooq.tools.StringUtils; + /** * An {@link XmlAdapter} that implements useful features after parsing XML * strings with JAXB. @@ -67,8 +69,12 @@ public class StringAdapter extends XmlAdapter { String result = v.trim(); Matcher matcher = PROPERTY_PATTERN.matcher(result); - while (matcher.find()) - result = result.replace(matcher.group(0), System.getProperty(matcher.group(1), matcher.group(0))); + while (matcher.find()) { + String group0 = matcher.group(0); + String group1 = matcher.group(1); + + result = StringUtils.replace(result, group0, System.getProperty(group1, group0)); + } return result; } diff --git a/jOOQ/src/main/java/org/jooq/util/postgres/PostgresUtils.java b/jOOQ/src/main/java/org/jooq/util/postgres/PostgresUtils.java index 689e1e413a..382477d035 100644 --- a/jOOQ/src/main/java/org/jooq/util/postgres/PostgresUtils.java +++ b/jOOQ/src/main/java/org/jooq/util/postgres/PostgresUtils.java @@ -53,6 +53,7 @@ import java.util.List; import org.jooq.Converter; import org.jooq.Record; import org.jooq.exception.DataTypeException; +import org.jooq.tools.StringUtils; import org.jooq.tools.reflect.Reflect; import org.jooq.types.DayToSecond; import org.jooq.types.YearToMonth; @@ -445,7 +446,7 @@ public class PostgresUtils { sb.append(toPGString((byte[]) o)); else sb.append("\"") - .append(toPGString(o).replace("\\", "\\\\").replace("\"", "\\\"")) + .append(StringUtils.replace(StringUtils.replace(toPGString(o), "\\", "\\\\"), "\"", "\\\"")) .append("\""); separator = ","; @@ -492,7 +493,7 @@ public class PostgresUtils { sb.append(toPGString((byte[]) a)); else sb.append("\"") - .append(toPGString(a).replace("\\", "\\\\").replace("\"", "\\\"")) + .append(StringUtils.replace(StringUtils.replace(toPGString(a), "\\", "\\\\"), "\"", "\\\"")) .append("\""); }