All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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