You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2021/12/30 10:12:24 UTC

[ws-axiom] branch master updated: Use LinkedIdentityHashSet to make weaver results reproducible

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 <an...@gmail.com>
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) {