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

veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git


The following commit(s) were added to refs/heads/master by this push:
     new a9d35a0  Use LinkedIdentityHashSet to make weaver results reproducible
a9d35a0 is described below

commit a9d35a0b9e4ca4d5a3928a7815bbae70ac314a3c
Author: Andreas Veithen <[email protected]>
AuthorDate: Thu Dec 30 10:10:17 2021 +0000

    Use LinkedIdentityHashSet to make weaver results reproducible
---
 .../main/java/org/apache/axiom/weaver/ImplementationNode.java    | 2 +-
 axiom-weaver/src/main/java/org/apache/axiom/weaver/Weaver.java   | 9 ++++-----
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git 
a/axiom-weaver/src/main/java/org/apache/axiom/weaver/ImplementationNode.java 
b/axiom-weaver/src/main/java/org/apache/axiom/weaver/ImplementationNode.java
index d6fadbe..1659dd4 100644
--- a/axiom-weaver/src/main/java/org/apache/axiom/weaver/ImplementationNode.java
+++ b/axiom-weaver/src/main/java/org/apache/axiom/weaver/ImplementationNode.java
@@ -284,7 +284,7 @@ final class ImplementationNode {
         if (requireImplementation || children.isEmpty()) {
             return false;
         }
-        Set<MixinNode> commonMixins = new LinkedHashSet<>();
+        Set<MixinNode> commonMixins = new LinkedIdentityHashSet<>();
         boolean first = true;
         for (ImplementationNode child : children) {
             if (first) {
diff --git a/axiom-weaver/src/main/java/org/apache/axiom/weaver/Weaver.java 
b/axiom-weaver/src/main/java/org/apache/axiom/weaver/Weaver.java
index 3f6950d..473bd50 100644
--- a/axiom-weaver/src/main/java/org/apache/axiom/weaver/Weaver.java
+++ b/axiom-weaver/src/main/java/org/apache/axiom/weaver/Weaver.java
@@ -20,7 +20,6 @@ package org.apache.axiom.weaver;
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -63,7 +62,7 @@ public final class Weaver {
 
     private void addMixin(Mixin mixin) {
         mixinsByInterface
-                .computeIfAbsent(mixin.getTargetInterface(), k -> new 
HashSet<>())
+                .computeIfAbsent(mixin.getTargetInterface(), k -> new 
LinkedIdentityHashSet<>())
                 .add(mixin);
     }
 
@@ -71,8 +70,8 @@ public final class Weaver {
         InterfaceNode interfaceNode = interfaceNodes.get(iface);
         if (interfaceNode == null) {
             FactoryMixinFactory.createFactoryMixin(classFetcher, 
iface).ifPresent(this::addMixin);
-            Set<InterfaceNode> parentInterfaces = new HashSet<>();
-            Set<ImplementationNode> parentImplementations = new HashSet<>();
+            Set<InterfaceNode> parentInterfaces = new 
LinkedIdentityHashSet<>();
+            Set<ImplementationNode> parentImplementations = new 
LinkedIdentityHashSet<>();
             for (Class<?> superClass : iface.getInterfaces()) {
                 InterfaceNode parentInterface = addInterface(superClass);
                 parentInterfaces.add(parentInterface);
@@ -82,7 +81,7 @@ public final class Weaver {
             classFetcher.fetch(iface.getName(), cv);
             interfaceNode = new InterfaceNode(iface, parentInterfaces, 
cv.isSingleton());
             interfaceNodes.put(iface, interfaceNode);
-            Set<MixinNode> mixinNodes = new HashSet<>();
+            Set<MixinNode> mixinNodes = new LinkedIdentityHashSet<>();
             Set<Mixin> mixins = mixinsByInterface.get(iface);
             if (mixins != null) {
                 for (Mixin mixin : mixins) {

Reply via email to