@Override protected ElementMatcher.Junction<MethodDescription> getExtraMethodElementMatcher() { return isPublic().and(not(isAnnotatedWith(Traced.class))); }
/** * Matches a {@link ModifierReviewable} that is package-private. * * @param <T> The type of the matched object. * @return A matcher for a package-private modifier reviewable. */ public static <T extends ModifierReviewable.OfByteCodeElement> ElementMatcher.Junction<T> isPackagePrivate() { return not(isPublic().or(isProtected()).or(isPrivate())); }
@Override protected ElementMatcher.Junction<MethodDescription> getExtraMethodElementMatcher() { return isPublic().and( overridesMethodFromRemoteAnnotationValue() .or(overridesMethodFromInterfaceWhichIsAnnotatedWithRemote()) ); }
/** * Makes sure that this transformer is only applied on Freemarker versions {@code >= 2.3.23} where the * {@link Environment#getCurrentTemplate()} method was made public. This prevents nasty * {@link IllegalAccessError}s and {@link NoSuchMethodError}s. */ @Override public boolean isActive() { try { return hasMethodThat(named("getCurrentTemplate") .and(ElementMatchers.<MethodDescription.InDefinedShape>isPublic()) .and(takesArguments(0))) .matches(new TypeDescription.ForLoadedType(Class.forName("freemarker.core.Environment"))); } catch (ClassNotFoundException e) { return false; } }
@Override protected List<MethodDescription.Token> doExtractConstructors(TypeDescription instrumentedType) { TypeDescription.Generic superClass = instrumentedType.getSuperClass(); return (superClass == null ? new MethodList.Empty<MethodDescription.InGenericShape>() : superClass.getDeclaredMethods().filter(isPublic().and(isConstructor()))).asTokenList(is(instrumentedType)); }
@Override protected ElementMatcher.Junction<MethodDescription> getExtraMethodElementMatcher() { return named("getConnection") .and(returns(Connection.class)) .and(isPublic()) .and(takesArguments(String.class, String.class).or(takesArguments(0))); }
.and(ElementMatchers.isGetter() .or(ElementMatchers.isSetter())) .and(ElementMatchers.isPublic() .or(ElementMatchers.isProtected()))
.and(ElementMatchers.isGetter() .or(ElementMatchers.isSetter())) .and(ElementMatchers.isPublic() .or(ElementMatchers.isProtected()))
@Override protected ElementMatcher.Junction<MethodDescription.InDefinedShape> getExtraMethodElementMatcher() { return isPublic().and(not(isAnnotatedWith(MonitorRequests.class))); }
@Override protected ElementMatcher.Junction<MethodDescription.InDefinedShape> getExtraMethodElementMatcher() { return isPublic().and( overridesMethodFromRemoteAnnotationValue() .or(overridesMethodFromInterfaceWhichIsAnnotatedWithRemote()) ); }
@SuppressWarnings("unchecked") public <T extends SebElement> T constructSebElement(Class<T> element, SebContext context, WebElement webElement, boolean optional) { try { if (optional) { element = (Class<T>) new ByteBuddy().subclass(element).method(ElementMatchers.isPublic()) .intercept(MethodDelegation.to(SebElementInterceptor.class).andThen(SuperMethodCall.INSTANCE)) .make().load(context.getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER).getLoaded(); } Constructor<T> ctor = element.getConstructor(); return (T) ctor.newInstance().with(context, webElement, optional); } catch (Exception e) { throw new SebElementConstructException("Unable to construct module " + element.getName(), e); } }
/** * Makes sure that this transformer is only applied on Freemarker versions >= 2.3.23 where the * {@link Environment#getCurrentTemplate()} method was made public. This prevents nasty * {@link IllegalAccessError}s and {@link NoSuchMethodError}s. */ @Override public boolean isActive() { try { return hasMethodThat(named("getCurrentTemplate") .and(ElementMatchers.<MethodDescription.InDefinedShape>isPublic()) .and(takesArguments(0))) .matches(new TypeDescription.ForLoadedType(Class.forName("freemarker.core.Environment"))); } catch (ClassNotFoundException e) { return false; } }
@Override protected ElementMatcher.Junction<MethodDescription> getExtraMethodElementMatcher() { return named("getConnection") .and(returns(Connection.class)) .and(isPublic()) .and(takesArguments(String.class, String.class).or(takesArguments(0))); }
switch (methodMatcher.getModifier()) { case Modifier.PUBLIC: matcher = matcher.and(ElementMatchers.isPublic()); break; case Modifier.PROTECTED:
@Override public final boolean matches(TypeDescription target) { MethodList<MethodDescription.InDefinedShape> methodsToCheck = target.getDeclaredMethods() .filter(not(isConstructor())) .filter(isPublic()) .filter(not(isStatic())) .filter(not(isBridge())) .filter(not(named("equals"))) .filter(not(named("hashCode"))) .filter(not(named("toString"))); for(MethodDescription md : methodsToCheck) { if(!md.isFinal()) { return false; } } return true; } }
.and(ElementMatchers.isGetter() .or(ElementMatchers.isSetter())) .and(ElementMatchers.isPublic() .or(ElementMatchers.isProtected()))