
io.opentelemetry.javaagent.tooling.muzzle.references.ReferenceMergeUtil Maven / Gradle / Ivy
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.tooling.muzzle.references;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
final class ReferenceMergeUtil {
static Set mergeSet(Set set1, Set set2) {
Set set = new LinkedHashSet<>();
set.addAll(set1);
set.addAll(set2);
return set;
}
static Set mergeMethods(Set methods1, Set methods2) {
List merged = new ArrayList<>(methods1);
for (MethodRef method : methods2) {
int i = merged.indexOf(method);
if (i == -1) {
merged.add(method);
} else {
merged.set(i, merged.get(i).merge(method));
}
}
return new LinkedHashSet<>(merged);
}
static Set mergeFields(Set fields1, Set fields2) {
List merged = new ArrayList<>(fields1);
for (FieldRef field : fields2) {
int i = merged.indexOf(field);
if (i == -1) {
merged.add(field);
} else {
merged.set(i, merged.get(i).merge(field));
}
}
return new LinkedHashSet<>(merged);
}
static Set mergeFlags(Set flags1, Set flags2) {
Set merged = mergeSet(flags1, flags2);
// TODO: Assert flags are non-contradictory and resolve
// public > protected > package-private > private
return merged;
}
private ReferenceMergeUtil() {}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy