// Generated by delombok at Sun Feb 26 12:31:38 KST 2017 package scouter.bytebuddy.matcher; import scouter.bytebuddy.description.method.MethodDescription; /** * Matches a method description by its general characteristics which are represented as a * {@link MethodSortMatcher.Sort}. * * @param <T> The type of the matched entity. */ public class MethodSortMatcher<T extends MethodDescription> extends ElementMatcher.Junction.AbstractBase<T> { /** * The sort of method description to be matched by this element matcher. */ private final Sort sort; /** * Creates a new element matcher that matches a specific sort of method description. * * @param sort The sort of method description to be matched by this element matcher. */ public MethodSortMatcher(Sort sort) { this.sort = sort; } @Override public boolean matches(T target) { return sort.isSort(target); } @Override public String toString() { return sort.getDescription(); } /** * Represents a specific characteristic of a method description. */ public enum Sort { /** * Matches method descriptions that represent methods, not constructors or the type initializer. */ METHOD("isMethod()") { @Override protected boolean isSort(MethodDescription target) { return target.isMethod(); } }, /** * Matches method descriptions that represent constructors, not methods or the type initializer. */ CONSTRUCTOR("isConstructor()") { @Override protected boolean isSort(MethodDescription target) { return target.isConstructor(); } }, /** * Matches method descriptions that represent the type initializers. */ TYPE_INITIALIZER("isTypeInitializer()") { @Override protected boolean isSort(MethodDescription target) { return target.isTypeInitializer(); } }, /** * Matches method descriptions that are overridable. */ VIRTUAL("isVirtual()") { @Override protected boolean isSort(MethodDescription target) { return target.isVirtual(); } }, /** * Matches method descriptions that represent Java 8 default methods. */ DEFAULT_METHOD("isDefaultMethod()") { @Override protected boolean isSort(MethodDescription target) { return target.isDefaultMethod(); } }; /** * A textual representation of the method sort that is represented by this instance. */ private final String description; /** * Creates a new method sort representation. * * @param description A textual representation of the method sort that is represented by this instance. */ Sort(String description) { this.description = description; } /** * Determines if a method description is of the represented method sort. * * @param target A textual representation of the method sort that is represented by this instance. * @return {@code true} if the given method if of the method sort that is represented by this instance. */ protected abstract boolean isSort(MethodDescription target); /** * Returns a textual representation of this instance's method sort. * * @return A textual representation of this instance's method sort. */ protected String getDescription() { return description; } @Override public String toString() { return "MethodSortMatcher.Sort." + name(); } } @java.lang.Override @java.lang.SuppressWarnings("all") @javax.annotation.Generated("lombok") public boolean equals(final java.lang.Object o) { if (o == this) return true; if (!(o instanceof MethodSortMatcher)) return false; final MethodSortMatcher<?> other = (MethodSortMatcher<?>) o; if (!other.canEqual((java.lang.Object) this)) return false; final java.lang.Object this$sort = this.sort; final java.lang.Object other$sort = other.sort; if (this$sort == null ? other$sort != null : !this$sort.equals(other$sort)) return false; return true; } @java.lang.SuppressWarnings("all") @javax.annotation.Generated("lombok") protected boolean canEqual(final java.lang.Object other) { return other instanceof MethodSortMatcher; } @java.lang.Override @java.lang.SuppressWarnings("all") @javax.annotation.Generated("lombok") public int hashCode() { final int PRIME = 59; int result = 1; final java.lang.Object $sort = this.sort; result = result * PRIME + ($sort == null ? 43 : $sort.hashCode()); return result; } }