Hi, interesting solution Emm, but you got an idea of the speedup ? Because it's really not helping readability of code :)
Perhaps we can do that on critical parts of code.
Sangjin : does some of you recent change in 1.0 branches need to be
ported to trunk ? If so I'll try to take a look.
Julien
On Tue, 05 Aug 2008 09:10:32 +0200
Emmanuel Lecharny <[EMAIL PROTECTED]> wrote:
> Sangjin Lee wrote:
> > Thanks for pointing that out. It was a mechanical
> > search-and-replace. I also wasn't familiar with the capability of
> > SLF4J in terms of evaluating args. I'll look at them again, and
> > remove isXXXEnabled() calls.
> You can keep the isXXXEnabled. It should not make a big difference.
> But Julien is right, when using the {} to pass arguments to the
> XXX.log( message, arg1...) the cost is almost the same than simply
> doing a ifXXXEnabled() {...}.
>
> The ultimate optimization, considering that the logs will become
> static, would be to add a static with an evaluation of the log state :
>
> private static final Logger LOG = LoggerFactory.getLogger( <your
> class>.class );
>
> /**
> * Speedup for logs
> */
> private static final boolean IS_DEBUG = LOG.isDebugEnabled();
> ...
> if ( IS_DEBUG ) {
> LOG.debug( blah );
> }
>
> Doing so will allow the JVM to simply remove the test, as if DEBUG is
> not true, and as it's static, the optimizer will consider that the
> inner code will never be executed.
>
> It might worth the extra effort for DEBUG, certainly not for warnings
> or errors.
>
> My 2cts ...
>
> > Regards,
> > Sangjin
> >
> >
> > On Mon, Aug 4, 2008 at 11:23 PM, Julien Vermillard
> > <[EMAIL PROTECTED]>wrote:
> >
> >
> >> Why using isTraceEnabled here ?
> >> there is no concatenation and even if there was, we could use {}
> >> in slf4j call.
> >> if (LOG.isTraceEnabled()) {
> >> LOG.trace("enter
> >> BasicScheme.authenticate(UsernamePasswordCredentials, String)");
> >> }
> >>
> >> Julien
> >>
> >> 2008/8/4 <[EMAIL PROTECTED]>:
> >>
> >>> Author: sjlee
> >>> Date: Mon Aug 4 12:46:17 2008
> >>> New Revision: 682480
> >>>
> >>> URL: http://svn.apache.org/viewvc?rev=682480&view=rev
> >>> Log:
> >>> ASYNCWEB-24
> >>>
> >>> Wrapped debug() and trace() calls with isDebugEnabled() and
> >>>
> >> isTraceEnabled() calls. Also prefer StringBuilder over
> >> StringBuffer.
> >>> Modified:
> >>>
> >>>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java
> >>
> >>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
> >>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -265,7 +265,7 @@
> >>> * @see java.lang.Object#toString()
> >>> */
> >>> public String toString() {
> >>> - StringBuffer buffer = new StringBuffer();
> >>> + StringBuilder buffer = new StringBuilder();
> >>> if (this.scheme != null) {
> >>> buffer.append(this.scheme.toUpperCase());
> >>> buffer.append(' ');
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -155,7 +155,7 @@
> >>> }
> >>>
> >>> public String toString() {
> >>> - StringBuffer buffer = new StringBuffer();
> >>> + StringBuilder buffer = new StringBuilder();
> >>> buffer.append("Auth state: auth requested [");
> >>> buffer.append(this.authRequested);
> >>> buffer.append("]; auth attempted [");
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -107,7 +107,9 @@
> >>> */
> >>> public String authenticate(Credentials credentials,
> >>>
> >> HttpRequestMessage request) throws AuthenticationException {
> >>
> >>> - LOG.trace("enter BasicScheme.authenticate(Credentials,
> >>>
> >> HttpMethod)");
> >>
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter
> >>> BasicScheme.authenticate(Credentials,
> >> HttpMethod)");
> >>
> >>> + }
> >>>
> >>> if (request == null) {
> >>> throw new IllegalArgumentException("Request may not be
> >>>
> >> null");
> >>
> >>> @@ -137,7 +139,9 @@
> >>> */
> >>> public static String authenticate(UsernamePasswordCredentials
> >>>
> >> credentials, String charset) {
> >>
> >>> - LOG.trace("enter
> >>>
> >> BasicScheme.authenticate(UsernamePasswordCredentials, String)");
> >>
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter
> >>>
> >> BasicScheme.authenticate(UsernamePasswordCredentials, String)");
> >>
> >>> + }
> >>>
> >>> if (credentials == null) {
> >>> throw new IllegalArgumentException("Credentials may
> >>> not be
> >> null");
> >>
> >>> @@ -145,7 +149,7 @@
> >>> if (charset == null || charset.length() == 0) {
> >>> throw new IllegalArgumentException("charset may not
> >>> be null
> >> or empty");
> >>
> >>> }
> >>> - StringBuffer buffer = new StringBuffer();
> >>> + StringBuilder buffer = new StringBuilder();
> >>> buffer.append(credentials.getUserName());
> >>> buffer.append(":");
> >>> buffer.append(credentials.getPassword());
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -176,7 +176,9 @@
> >>> public String authenticate(Credentials credentials,
> >>>
> >> HttpRequestMessage request)
> >>
> >>> throws AuthenticationException {
> >>>
> >>> - LOG.trace("enter DigestScheme.authenticate(Credentials,
> >>>
> >> HttpMethod)");
> >>
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter
> >>> DigestScheme.authenticate(Credentials,
> >> HttpMethod)");
> >>
> >>> + }
> >>>
> >>> UsernamePasswordCredentials usernamepassword = null;
> >>> try {
> >>> @@ -187,7 +189,7 @@
> >>> + credentials.getClass().getName());
> >>> }
> >>> getParameters().put("methodname",
> >>> request.getRequestMethod());
> >>> - StringBuffer buffer = new
> >>> StringBuffer(request.getPath());
> >>> + StringBuilder buffer = new
> >>> StringBuilder(request.getPath()); String query =
> >>> request.getUrl().getQuery(); if (query != null) {
> >>> if (query.indexOf("?") != 0) {
> >>> @@ -219,7 +221,9 @@
> >>> */
> >>> private String createDigest(final String uname, final String
> >>> pwd)
> >> throws AuthenticationException {
> >>
> >>> - LOG.trace("enter DigestScheme.createDigest(String,
> >>> String,
> >> Map)");
> >>
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter DigestScheme.createDigest(String,
> >>> String,
> >> Map)");
> >>
> >>> + }
> >>>
> >>> final String digAlg = "MD5";
> >>>
> >>> @@ -257,7 +261,7 @@
> >>> }
> >>>
> >>> // 3.2.2.2: Calculating digest
> >>> - StringBuffer tmp = new StringBuffer(uname.length() +
> >>>
> >> realm.length() + pwd.length() + 2);
> >>
> >>> + StringBuilder tmp = new StringBuilder(uname.length() +
> >>>
> >> realm.length() + pwd.length() + 2);
> >>
> >>> tmp.append(uname);
> >>> tmp.append(':');
> >>> tmp.append(realm);
> >>> @@ -272,7 +276,7 @@
> >>> // ":" unq(cnonce-value)
> >>>
> >>> String
> >>> tmp2=encode(md5Helper.digest(EncodingUtil.getBytes(a1,
> >> charset)));
> >>
> >>> - StringBuffer tmp3 = new StringBuffer(tmp2.length() +
> >>>
> >> nonce.length() + cnonce.length() + 2);
> >>
> >>> + StringBuilder tmp3 = new StringBuilder(tmp2.length()
> >>> +
> >> nonce.length() + cnonce.length() + 2);
> >>
> >>> tmp3.append(tmp2);
> >>> tmp3.append(':');
> >>> tmp3.append(nonce);
> >>> @@ -297,8 +301,10 @@
> >>> // 3.2.2.1
> >>> String serverDigestValue;
> >>> if (qopVariant == QOP_MISSING) {
> >>> - LOG.debug("Using null qop method");
> >>> - StringBuffer tmp2 = new StringBuffer(md5a1.length() +
> >>>
> >> nonce.length() + md5a2.length());
> >>
> >>> + if (LOG.isDebugEnabled()) {
> >>> + LOG.debug("Using null qop method");
> >>> + }
> >>> + StringBuilder tmp2 = new
> >>> StringBuilder(md5a1.length() +
> >> nonce.length() + md5a2.length());
> >>
> >>> tmp2.append(md5a1);
> >>> tmp2.append(':');
> >>> tmp2.append(nonce);
> >>> @@ -310,7 +316,7 @@
> >>> LOG.debug("Using qop method " + qop);
> >>> }
> >>> String qopOption = getQopVariantString();
> >>> - StringBuffer tmp2 = new StringBuffer(md5a1.length() +
> >>>
> >> nonce.length()
> >>
> >>> + StringBuilder tmp2 = new
> >>> StringBuilder(md5a1.length() +
> >> nonce.length()
> >>
> >>> + NC.length() + cnonce.length() +
> >>> qopOption.length() +
> >> md5a2.length() + 5);
> >>
> >>> tmp2.append(md5a1);
> >>> tmp2.append(':');
> >>> @@ -343,8 +349,10 @@
> >>> private String createDigestHeader(final String uname, final
> >>> String
> >> digest)
> >>
> >>> throws AuthenticationException {
> >>>
> >>> - LOG.trace("enter DigestScheme.createDigestHeader(String,
> >>> Map, "
> >>> - + "String)");
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter
> >>> DigestScheme.createDigestHeader(String,
> >> Map, "
> >>
> >>> + + "String)");
> >>> + }
> >>>
> >>> String uri = getParameter("uri");
> >>> String realm = getParameter("realm");
> >>> @@ -372,7 +380,7 @@
> >>> params.add(new NameValuePair("opaque", opaque));
> >>> }
> >>>
> >>> - StringBuffer buffer = new StringBuffer();
> >>> + StringBuilder buffer = new StringBuilder();
> >>> for (int i = 0; i < params.size(); i++) {
> >>> NameValuePair param = (NameValuePair) params.get(i);
> >>> if (i > 0) {
> >>> @@ -404,7 +412,9 @@
> >>> * @return encoded MD5, or <CODE>null</CODE> if encoding
> >>> failed */
> >>> private static String encode(byte[] binaryData) {
> >>> - LOG.trace("enter DigestScheme.encode(byte[])");
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter DigestScheme.encode(byte[])");
> >>> + }
> >>>
> >>> if (binaryData.length != 16) {
> >>> return null;
> >>> @@ -429,7 +439,9 @@
> >>> * @throws AsyncHttpClientException if MD5 algorithm is not
> >>>
> >> supported.
> >>
> >>> */
> >>> public static String createCnonce() {
> >>> - LOG.trace("enter DigestScheme.createCnonce()");
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter DigestScheme.createCnonce()");
> >>> + }
> >>>
> >>> String cnonce;
> >>> final String digAlg = "MD5";
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -130,7 +130,7 @@
> >>> * @return A string represenation of this object.
> >>> */
> >>> public String toString() {
> >>> - final StringBuffer sbResult = new
> >>>
> >> StringBuffer(super.toString());
> >>
> >>> + final StringBuilder sbResult = new
> >>>
> >> StringBuilder(super.toString());
> >>
> >>> sbResult.append("@");
> >>> sbResult.append(this.host);
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -173,7 +173,9 @@
> >>> */
> >>> public String authenticate(Credentials credentials,
> >>>
> >> HttpRequestMessage request)
> >>
> >>> throws AuthenticationException {
> >>> - LOG.trace("enter NTLMScheme.authenticate(Credentials,
> >>>
> >> HttpMethod)");
> >>
> >>> + if (LOG.isTraceEnabled()) {
> >>> + LOG.trace("enter NTLMScheme.authenticate(Credentials,
> >>>
> >> HttpMethod)");
> >>
> >>> + }
> >>>
> >>> if (this.state == UNINITIATED) {
> >>> throw new IllegalStateException("NTLM authentication
> >>> process
> >> has not been initiated");
> >>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -144,7 +144,7 @@
> >>> * @return the username:password formed string
> >>> */
> >>> public String toString() {
> >>> - StringBuffer result = new StringBuffer();
> >>> + StringBuilder result = new StringBuilder();
> >>> result.append(this.userName);
> >>> result.append(":");
> >>> result.append((this.password == null) ? "null" :
> >>> this.password);
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -248,7 +248,9 @@
> >>> * @throws Exception if any exception occurs
> >>> */
> >>> public void decodeHeader(String line, HttpResponseMessage
> >>> msg) throws
> >> Exception {
> >>
> >>> - LOG.debug("Processing Header Line: " + line);
> >>> + if (LOG.isDebugEnabled()) {
> >>> + LOG.debug("Processing Header Line: " + line);
> >>> + }
> >>> // first, get rid of the CRLF from linear whitespace
> >>> line = folding.matcher(line).replaceAll("$1");
> >>> int pos = line.indexOf(":");
> >>> @@ -420,7 +422,9 @@
> >>> * @see Cookie
> >>> */
> >>> public Cookie decodeCookie(String cookieStr,
> >>> HttpResponseMessage msg)
> >> throws Exception {
> >>
> >>> - LOG.debug("Processing Cookie Line: " + cookieStr);
> >>> + if (LOG.isDebugEnabled()) {
> >>> + LOG.debug("Processing Cookie Line: " + cookieStr);
> >>> + }
> >>> Cookie cookie = null;
> >>>
> >>> String pairs[] = cookieStr.split(";");
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -103,7 +103,7 @@
> >>> */
> >>> private static String doFormUrlEncode(NameValuePair[] pairs,
> >>> String
> >> charset)
> >>
> >>> throws UnsupportedEncodingException {
> >>> - StringBuffer buf = new StringBuffer();
> >>> + StringBuilder buf = new StringBuilder();
> >>> for (int i = 0; i < pairs.length; i++) {
> >>> URLCodec codec = new URLCodec();
> >>> NameValuePair pair = pairs[i];
> >>>
> >>> Modified:
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
> >>
> >>> URL:
> >>>
> >> http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java?rev=682480&r1=682479&r2=682480&view=diff
> >>
> >> ==============================================================================
> >>
> >>> ---
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
> >> (original)
> >>
> >>> +++
> >>>
> >> mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
> >> Mon Aug 4 12:46:17 2008
> >>
> >>> @@ -150,7 +150,7 @@
> >>> * potentially unsafe special characters
> >>> */
> >>> public static void formatValue(
> >>> - final StringBuffer buffer, final String value,
> >>> boolean
> >> alwaysUseQuotes) {
> >>
> >>> + final StringBuilder buffer, final String value,
> >>> boolean
> >> alwaysUseQuotes) {
> >>
> >>> if (buffer == null) {
> >>> throw new IllegalArgumentException("String buffer may
> >>> not be
> >> null");
> >>
> >>> }
> >>> @@ -194,7 +194,7 @@
> >>> * @param buffer output buffer
> >>> * @param param the parameter to be formatted
> >>> */
> >>> - public void format(final StringBuffer buffer, final
> >>> NameValuePair
> >> param) {
> >>
> >>> + public void format(final StringBuilder buffer, final
> >>> NameValuePair
> >> param) {
> >>
> >>> if (buffer == null) {
> >>> throw new IllegalArgumentException("String buffer may
> >>> not be
> >> null");
> >>
> >>> }
> >>> @@ -219,7 +219,7 @@
> >>> * attribute/value pair
> >>> */
> >>> public String format(final NameValuePair param) {
> >>> - StringBuffer buffer = new StringBuffer();
> >>> + StringBuilder buffer = new StringBuilder();
> >>> format(buffer, param);
> >>> return buffer.toString();
> >>> }
> >>>
> >>>
> >>>
> >>>
> >
> >
>
>
signature.asc
Description: PGP signature
