You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by li...@apache.org on 2023/02/17 03:31:08 UTC

[tomcat] branch main updated: Many improvements.

This is an automated email from the ASF dual-hosted git repository.

lihan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new f9fa97a537 Many improvements.
f9fa97a537 is described below

commit f9fa97a5372117bcc58ae699e929065dfac74f1f
Author: lihan <li...@apache.org>
AuthorDate: Fri Feb 17 11:30:53 2023 +0800

    Many improvements.
---
 java/org/apache/coyote/ajp/AbstractAjpProtocol.java     |  6 +-----
 java/org/apache/coyote/ajp/AjpMessage.java              |  2 +-
 .../org/apache/tomcat/util/digester/CallMethodRule.java | 17 ++++++-----------
 java/org/apache/tomcat/util/json/JSONFilter.java        |  4 ++--
 java/org/apache/tomcat/util/net/SSLUtilBase.java        |  2 +-
 .../ciphers/OpenSSLCipherConfigurationParser.java       |  6 +++---
 .../apache/tomcat/util/scan/AbstractInputStreamJar.java |  4 ++--
 .../tomcat/util/xreflection/ReflectionProperty.java     |  8 +++-----
 .../tomcat/util/xreflection/SetPropertyClass.java       |  6 ++----
 9 files changed, 21 insertions(+), 34 deletions(-)

diff --git a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
index b62fe988a8..537a1d0b04 100644
--- a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
+++ b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
@@ -182,11 +182,7 @@ public abstract class AbstractAjpProtocol<S> extends AbstractProtocol<S> {
     private int packetSize = Constants.MAX_PACKET_SIZE;
     public int getPacketSize() { return packetSize; }
     public void setPacketSize(int packetSize) {
-        if (packetSize < Constants.MAX_PACKET_SIZE) {
-            this.packetSize = Constants.MAX_PACKET_SIZE;
-        } else {
-            this.packetSize = packetSize;
-        }
+        this.packetSize = Math.max(packetSize, Constants.MAX_PACKET_SIZE);
     }
 
 
diff --git a/java/org/apache/coyote/ajp/AjpMessage.java b/java/org/apache/coyote/ajp/AjpMessage.java
index 14d7e53cb9..f49a099125 100644
--- a/java/org/apache/coyote/ajp/AjpMessage.java
+++ b/java/org/apache/coyote/ajp/AjpMessage.java
@@ -398,7 +398,7 @@ public class AjpMessage {
         StringBuilder sb = new StringBuilder();
         for (int i = start; i < start + 16 ; i++) {
             if (i < len + 4) {
-                sb.append(hex(buf[i]) + " ");
+                sb.append(hex(buf[i])).append(" ");
             } else {
                 sb.append("   ");
             }
diff --git a/java/org/apache/tomcat/util/digester/CallMethodRule.java b/java/org/apache/tomcat/util/digester/CallMethodRule.java
index bd65535dbc..3110c4450b 100644
--- a/java/org/apache/tomcat/util/digester/CallMethodRule.java
+++ b/java/org/apache/tomcat/util/digester/CallMethodRule.java
@@ -19,6 +19,8 @@ package org.apache.tomcat.util.digester;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.xml.sax.Attributes;
 
+import java.util.Arrays;
+
 /**
  * <p>Rule implementation that calls a method on an object on the stack
  * (normally the top/parent object), passing arguments collected from
@@ -96,9 +98,7 @@ public class CallMethodRule extends Rule {
             this.paramTypes = new Class[] { String.class };
         } else {
             this.paramTypes = new Class[paramCount];
-            for (int i = 0; i < this.paramTypes.length; i++) {
-                this.paramTypes[i] = String.class;
-            }
+            Arrays.fill(this.paramTypes, String.class);
         }
     }
 
@@ -135,16 +135,14 @@ public class CallMethodRule extends Rule {
      *  for a <code>boolean</code> parameter)
      */
     public CallMethodRule(int targetOffset, String methodName, int paramCount,
-            Class<?> paramTypes[]) {
+                          Class<?>[] paramTypes) {
 
         this.targetOffset = targetOffset;
         this.methodName = methodName;
         this.paramCount = paramCount;
         if (paramTypes == null) {
             this.paramTypes = new Class[paramCount];
-            for (int i = 0; i < this.paramTypes.length; i++) {
-                this.paramTypes[i] = String.class;
-            }
+            Arrays.fill(this.paramTypes, String.class);
         } else {
             this.paramTypes = new Class[paramTypes.length];
             System.arraycopy(paramTypes, 0, this.paramTypes, 0, this.paramTypes.length);
@@ -232,10 +230,7 @@ public class CallMethodRule extends Rule {
 
         // Push an array to capture the parameter values if necessary
         if (paramCount > 0) {
-            Object parameters[] = new Object[paramCount];
-            for (int i = 0; i < parameters.length; i++) {
-                parameters[i] = null;
-            }
+            Object[] parameters = new Object[paramCount];
             digester.pushParams(parameters);
         }
 
diff --git a/java/org/apache/tomcat/util/json/JSONFilter.java b/java/org/apache/tomcat/util/json/JSONFilter.java
index cb255dc41b..b5992d95d6 100644
--- a/java/org/apache/tomcat/util/json/JSONFilter.java
+++ b/java/org/apache/tomcat/util/json/JSONFilter.java
@@ -34,12 +34,12 @@ public class JSONFilter {
          * MUST be escaped.
          */
         char[] chars = input.toCharArray();
-        StringBuffer escaped = null;
+        StringBuilder escaped = null;
         int lastUnescapedStart = 0;
         for (int i = 0; i < chars.length; i++) {
             if (chars[i] < 0x20 || chars[i] == 0x22 || chars[i] == 0x5c) {
                 if (escaped == null) {
-                    escaped = new StringBuffer(chars.length + 20);
+                    escaped = new StringBuilder(chars.length + 20);
                 }
                 if (lastUnescapedStart < i) {
                     escaped.append(input.subSequence(lastUnescapedStart, i));
diff --git a/java/org/apache/tomcat/util/net/SSLUtilBase.java b/java/org/apache/tomcat/util/net/SSLUtilBase.java
index c1988834e4..72161e9238 100644
--- a/java/org/apache/tomcat/util/net/SSLUtilBase.java
+++ b/java/org/apache/tomcat/util/net/SSLUtilBase.java
@@ -297,7 +297,7 @@ public abstract class SSLUtilBase implements SSLUtil {
         char[] keyPassArray = keyPass.toCharArray();
 
         KeyManagerFactory kmf = KeyManagerFactory.getInstance(algorithm);
-        if (kmf.getProvider().getInfo().indexOf("FIPS") != -1) {
+        if (kmf.getProvider().getInfo().contains("FIPS")) {
             // FIPS doesn't like ANY wrapping nor key manipulation.
             if (keyAlias != null) {
                 log.warn(sm.getString("sslUtilBase.aliasIgnored", keyAlias));
diff --git a/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java b/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java
index ee1c6c6db1..a32bb33c2d 100644
--- a/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java
+++ b/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java
@@ -536,7 +536,7 @@ public class OpenSSLCipherConfigurationParser {
         // COMPLEMENTOFDEFAULT is also not exactly as defined by the docs
         LinkedHashSet<Cipher> complementOfDefault = filterByKeyExchange(all, new HashSet<>(Arrays.asList(KeyExchange.EDH,KeyExchange.EECDH)));
         complementOfDefault = filterByAuthentication(complementOfDefault, Collections.singleton(Authentication.aNULL));
-        complementOfDefault.removeAll(aliases.get(eNULL));
+        aliases.get(eNULL).forEach(complementOfDefault::remove);
         complementOfDefault.addAll(aliases.get(Constants.SSL_PROTO_SSLv2));
         complementOfDefault.addAll(aliases.get(EXPORT));
         complementOfDefault.addAll(aliases.get(DES));
@@ -564,7 +564,7 @@ public class OpenSSLCipherConfigurationParser {
     static void moveToEnd(final LinkedHashSet<Cipher> ciphers, final Collection<Cipher> toBeMovedCiphers) {
         List<Cipher> movedCiphers = new ArrayList<>(toBeMovedCiphers);
         movedCiphers.retainAll(ciphers);
-        ciphers.removeAll(movedCiphers);
+        movedCiphers.forEach(ciphers::remove);
         ciphers.addAll(movedCiphers);
     }
 
@@ -582,7 +582,7 @@ public class OpenSSLCipherConfigurationParser {
     }
 
     static void remove(final Set<Cipher> ciphers, final String alias) {
-        ciphers.removeAll(aliases.get(alias));
+        aliases.get(alias).forEach(ciphers::remove);
     }
 
     static LinkedHashSet<Cipher> strengthSort(final LinkedHashSet<Cipher> ciphers) {
diff --git a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
index 148f57ab58..fa685ba81d 100644
--- a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
+++ b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
@@ -67,9 +67,9 @@ public abstract class AbstractInputStreamJar implements Jar {
                 // Skip base entries where there is a multi-release entry
                 // Skip multi-release entries that are not being used
                 while (entry != null &&
-                        (mrMap.keySet().contains(entry.getName()) ||
+                        (mrMap.containsKey(entry.getName()) ||
                                 entry.getName().startsWith("META-INF/versions/") &&
-                                !mrMap.values().contains(entry.getName()))) {
+                                !mrMap.containsValue(entry.getName()))) {
                     entry = jarInputStream.getNextJarEntry();
                 }
             } else {
diff --git a/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java b/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
index f6b94ef71c..2036af9f2a 100644
--- a/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
+++ b/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
@@ -116,11 +116,9 @@ final class ReflectionProperty implements Comparable<ReflectionProperty> {
 
     @Override
     public String toString() {
-        final StringBuffer sb = new StringBuffer("ReflectionProperty{");
-        sb.append("name='").append(propertyName).append('\'');
-        sb.append(", type=").append(propertyType);
-        sb.append('}');
-        return sb.toString();
+        return "ReflectionProperty{" + "name='" + propertyName + '\'' +
+            ", type=" + propertyType +
+            '}';
     }
 
     @Override
diff --git a/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java b/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
index a0a0146048..2011510432 100644
--- a/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
+++ b/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
@@ -118,10 +118,8 @@ final class SetPropertyClass implements Comparable<SetPropertyClass> {
 
     @Override
     public String toString() {
-        final StringBuffer sb = new StringBuffer("SetPropertyClass{");
-        sb.append("clazz=").append(clazz.getName());
-        sb.append('}');
-        return sb.toString();
+        return "SetPropertyClass{" + "clazz=" + clazz.getName() +
+            '}';
     }
 
     public void addProperty(ReflectionProperty property) {


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch main updated: Many improvements.

Posted by Mark Thomas <ma...@apache.org>.
On 18/02/2023 05:43, Han Li wrote:
> 
> 
>> On Feb 17, 2023, at 17:17, Rémy Maucherat <re...@apache.org> wrote:
>>
>> On Fri, Feb 17, 2023 at 4:32 AM <li...@apache.org> wrote:
>>> -        ciphers.removeAll(movedCiphers);
>>> +        movedCiphers.forEach(ciphers::remove);
>>
>> Ok for some of them maybe, but I don't understand why one this is better.
> 
> See:https://www.baeldung.com/java-hashset-removeall-performance <https://www.baeldung.com/java-hashset-removeall-performance>
> It’s just possible to avoid some potential performance issues. So i replaced old writing style with this. :)

Those performance issues are when the collection the items are being 
removed from is an ArrayList. These all look to be LinkedHashSet.

There may be a very small gain from these changes as it skips some logic 
in removeAll() that isn't necessary in these instances.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch main updated: Many improvements.

Posted by Han Li <li...@apache.org>.

> On Feb 17, 2023, at 17:17, Rémy Maucherat <re...@apache.org> wrote:
> 
> On Fri, Feb 17, 2023 at 4:32 AM <li...@apache.org> wrote:
>> -        ciphers.removeAll(movedCiphers);
>> +        movedCiphers.forEach(ciphers::remove);
> 
> Ok for some of them maybe, but I don't understand why one this is better.

See:https://www.baeldung.com/java-hashset-removeall-performance <https://www.baeldung.com/java-hashset-removeall-performance>
It’s just possible to avoid some potential performance issues. So i replaced old writing style with this. :)

Han
> Rémy
> 
>>         ciphers.addAll(movedCiphers);
>>     }
>> 
>> @@ -582,7 +582,7 @@ public class OpenSSLCipherConfigurationParser {
>>     }
>> 
>>     static void remove(final Set<Cipher> ciphers, final String alias) {
>> -        ciphers.removeAll(aliases.get(alias));
>> +        aliases.get(alias).forEach(ciphers::remove);
>>     }
>> 
>>     static LinkedHashSet<Cipher> strengthSort(final LinkedHashSet<Cipher> ciphers) {
>> diff --git a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
>> index 148f57ab58..fa685ba81d 100644
>> --- a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
>> +++ b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
>> @@ -67,9 +67,9 @@ public abstract class AbstractInputStreamJar implements Jar {
>>                 // Skip base entries where there is a multi-release entry
>>                 // Skip multi-release entries that are not being used
>>                 while (entry != null &&
>> -                        (mrMap.keySet().contains(entry.getName()) ||
>> +                        (mrMap.containsKey(entry.getName()) ||
>>                                 entry.getName().startsWith("META-INF/versions/") &&
>> -                                !mrMap.values().contains(entry.getName()))) {
>> +                                !mrMap.containsValue(entry.getName()))) {
>>                     entry = jarInputStream.getNextJarEntry();
>>                 }
>>             } else {
>> diff --git a/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java b/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
>> index f6b94ef71c..2036af9f2a 100644
>> --- a/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
>> +++ b/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
>> @@ -116,11 +116,9 @@ final class ReflectionProperty implements Comparable<ReflectionProperty> {
>> 
>>     @Override
>>     public String toString() {
>> -        final StringBuffer sb = new StringBuffer("ReflectionProperty{");
>> -        sb.append("name='").append(propertyName).append('\'');
>> -        sb.append(", type=").append(propertyType);
>> -        sb.append('}');
>> -        return sb.toString();
>> +        return "ReflectionProperty{" + "name='" + propertyName + '\'' +
>> +            ", type=" + propertyType +
>> +            '}';
>>     }
>> 
>>     @Override
>> diff --git a/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java b/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
>> index a0a0146048..2011510432 100644
>> --- a/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
>> +++ b/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
>> @@ -118,10 +118,8 @@ final class SetPropertyClass implements Comparable<SetPropertyClass> {
>> 
>>     @Override
>>     public String toString() {
>> -        final StringBuffer sb = new StringBuffer("SetPropertyClass{");
>> -        sb.append("clazz=").append(clazz.getName());
>> -        sb.append('}');
>> -        return sb.toString();
>> +        return "SetPropertyClass{" + "clazz=" + clazz.getName() +
>> +            '}';
>>     }
>> 
>>     public void addProperty(ReflectionProperty property) {
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: dev-help@tomcat.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 


Re: [tomcat] branch main updated: Many improvements.

Posted by Rémy Maucherat <re...@apache.org>.
On Fri, Feb 17, 2023 at 4:32 AM <li...@apache.org> wrote:
> -        ciphers.removeAll(movedCiphers);
> +        movedCiphers.forEach(ciphers::remove);

Ok for some of them maybe, but I don't understand why one this is better.

Rémy

>          ciphers.addAll(movedCiphers);
>      }
>
> @@ -582,7 +582,7 @@ public class OpenSSLCipherConfigurationParser {
>      }
>
>      static void remove(final Set<Cipher> ciphers, final String alias) {
> -        ciphers.removeAll(aliases.get(alias));
> +        aliases.get(alias).forEach(ciphers::remove);
>      }
>
>      static LinkedHashSet<Cipher> strengthSort(final LinkedHashSet<Cipher> ciphers) {
> diff --git a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
> index 148f57ab58..fa685ba81d 100644
> --- a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
> +++ b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
> @@ -67,9 +67,9 @@ public abstract class AbstractInputStreamJar implements Jar {
>                  // Skip base entries where there is a multi-release entry
>                  // Skip multi-release entries that are not being used
>                  while (entry != null &&
> -                        (mrMap.keySet().contains(entry.getName()) ||
> +                        (mrMap.containsKey(entry.getName()) ||
>                                  entry.getName().startsWith("META-INF/versions/") &&
> -                                !mrMap.values().contains(entry.getName()))) {
> +                                !mrMap.containsValue(entry.getName()))) {
>                      entry = jarInputStream.getNextJarEntry();
>                  }
>              } else {
> diff --git a/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java b/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
> index f6b94ef71c..2036af9f2a 100644
> --- a/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
> +++ b/java/org/apache/tomcat/util/xreflection/ReflectionProperty.java
> @@ -116,11 +116,9 @@ final class ReflectionProperty implements Comparable<ReflectionProperty> {
>
>      @Override
>      public String toString() {
> -        final StringBuffer sb = new StringBuffer("ReflectionProperty{");
> -        sb.append("name='").append(propertyName).append('\'');
> -        sb.append(", type=").append(propertyType);
> -        sb.append('}');
> -        return sb.toString();
> +        return "ReflectionProperty{" + "name='" + propertyName + '\'' +
> +            ", type=" + propertyType +
> +            '}';
>      }
>
>      @Override
> diff --git a/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java b/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
> index a0a0146048..2011510432 100644
> --- a/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
> +++ b/java/org/apache/tomcat/util/xreflection/SetPropertyClass.java
> @@ -118,10 +118,8 @@ final class SetPropertyClass implements Comparable<SetPropertyClass> {
>
>      @Override
>      public String toString() {
> -        final StringBuffer sb = new StringBuffer("SetPropertyClass{");
> -        sb.append("clazz=").append(clazz.getName());
> -        sb.append('}');
> -        return sb.toString();
> +        return "SetPropertyClass{" + "clazz=" + clazz.getName() +
> +            '}';
>      }
>
>      public void addProperty(ReflectionProperty property) {
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org