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) {