You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2022/04/19 06:33:24 UTC

[santuario-xml-security-java] branch master updated: [SANTUARIO-586]sync JDK-8186958: better calculations for HashMap constructor parameter calculation

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

coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/santuario-xml-security-java.git


The following commit(s) were added to refs/heads/master by this push:
     new 3ba7d50a [SANTUARIO-586]sync JDK-8186958: better calculations for HashMap constructor parameter calculation
     new 1356c036 Merge pull request #64 from xenoamess-fork/fix-SANTUARIO-586
3ba7d50a is described below

commit 3ba7d50aedb5362c897b434b1b85f2e40fc3d154
Author: XenoAmess <xe...@gmail.com>
AuthorDate: Fri Apr 15 05:15:02 2022 +0800

    [SANTUARIO-586]sync JDK-8186958: better calculations for HashMap constructor parameter calculation
---
 .../apache/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java   | 2 +-
 .../java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathTransform.java | 2 +-
 .../apache/xml/security/stax/config/SecurityHeaderHandlerMapper.java | 5 +++--
 .../stax/impl/processor/input/AbstractDecryptInputProcessor.java     | 5 +++--
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java b/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java
index 2835747e..fae051b8 100644
--- a/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java
+++ b/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java
@@ -103,7 +103,7 @@ public final class DOMXPathFilter2Transform extends ApacheTransform {
             if (attributes != null) {
                 int length = attributes.getLength();
                 Map<String, String> namespaceMap =
-                    new HashMap<>(length);
+                    new HashMap<>((int) Math.ceil(length / 0.75));
                 for (int i = 0; i < length; i++) {
                     Attr attr = (Attr)attributes.item(i);
                     String prefix = attr.getPrefix();
diff --git a/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathTransform.java b/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathTransform.java
index 80e0f5d5..fec9ae67 100644
--- a/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathTransform.java
+++ b/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXPathTransform.java
@@ -71,7 +71,7 @@ public final class DOMXPathTransform extends ApacheTransform {
         if (attributes != null) {
             int length = attributes.getLength();
             Map<String, String> namespaceMap =
-                new HashMap<>(length);
+                new HashMap<>((int) Math.ceil(length / 0.75));
             for (int i = 0; i < length; i++) {
                 Attr attr = (Attr)attributes.item(i);
                 String prefix = attr.getPrefix();
diff --git a/src/main/java/org/apache/xml/security/stax/config/SecurityHeaderHandlerMapper.java b/src/main/java/org/apache/xml/security/stax/config/SecurityHeaderHandlerMapper.java
index e46b9693..b1c2c5c2 100644
--- a/src/main/java/org/apache/xml/security/stax/config/SecurityHeaderHandlerMapper.java
+++ b/src/main/java/org/apache/xml/security/stax/config/SecurityHeaderHandlerMapper.java
@@ -42,8 +42,9 @@ public final class SecurityHeaderHandlerMapper {
     protected static synchronized void init(SecurityHeaderHandlersType securityHeaderHandlersType,
             Class<?> callingClass) throws Exception {
         List<HandlerType> handlerList = securityHeaderHandlersType.getHandler();
-        handlerClassMap = new HashMap<>(handlerList.size() + 1);
-        for (int i = 0; i < handlerList.size(); i++) {
+        final int handlerListSize = handlerList.size();
+        handlerClassMap = new HashMap<>((int) Math.ceil(handlerListSize / 0.75));
+        for (int i = 0; i < handlerListSize; i++) {
             HandlerType handlerType = handlerList.get(i);
             QName qName = new QName(handlerType.getURI(), handlerType.getNAME());
             handlerClassMap.put(qName,
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
index a40feec5..67889511 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
@@ -125,8 +125,9 @@ public abstract class AbstractDecryptInputProcessor extends AbstractInputProcess
         this.keyInfoType = keyInfoType;
 
         final List<JAXBElement<ReferenceType>> dataReferenceOrKeyReference = referenceList.getDataReferenceOrKeyReference();
-        references = new HashMap<>(dataReferenceOrKeyReference.size() + 1); //+1 because the HashMap will resize otherwise
-        processedReferences = new ArrayList<>(dataReferenceOrKeyReference.size());
+        final int dataReferenceOrKeyReferenceSize = dataReferenceOrKeyReference.size();
+        references = new HashMap<>((int) Math.ceil(dataReferenceOrKeyReferenceSize / 0.75));
+        processedReferences = new ArrayList<>(dataReferenceOrKeyReferenceSize);
 
         Iterator<JAXBElement<ReferenceType>> referenceTypeIterator = dataReferenceOrKeyReference.iterator();
         while (referenceTypeIterator.hasNext()) {