本文整理汇总了Java中net.bytebuddy.asm.Advice.Argument方法的典型用法代码示例。如果您正苦于以下问题:Java Advice.Argument方法的具体用法?Java Advice.Argument怎么用?Java Advice.Argument使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.bytebuddy.asm.Advice
的用法示例。
在下文中一共展示了Advice.Argument方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: addHandlers
import net.bytebuddy.asm.Advice; //导入方法依赖的package包/类
/**
* This code might be executed in the context of the bootstrap class loader. That's why we have to make sure we only
* call code which is visible. For example, we can't use slf4j or directly reference stagemonitor classes
*/
@Advice.OnMethodEnter
private static void addHandlers(@Advice.Argument(value = 0, readOnly = false) List<Handler> handlerChain, @Advice.This Binding binding) {
final java.util.logging.Logger logger = java.util.logging.Logger.getLogger("org.stagemonitor.tracing.soap.SoapHandlerTransformer");
final List<Handler<?>> stagemonitorHandlers = Dispatcher.get("org.stagemonitor.tracing.soap.SoapHandlerTransformer");
if (stagemonitorHandlers != null) {
logger.fine("Adding SOAPHandlers " + stagemonitorHandlers + " to handlerChain for Binding " + binding);
if (handlerChain == null) {
handlerChain = Collections.emptyList();
}
// creating a new list as we don't know if handlerChain is immutable or not
handlerChain = new ArrayList<Handler>(handlerChain);
for (Handler<?> stagemonitorHandler : stagemonitorHandlers) {
if (!handlerChain.contains(stagemonitorHandler) &&
// makes sure we only add the handler to the correct application
Dispatcher.isVisibleToCurrentContextClassLoader(stagemonitorHandler)) {
handlerChain.add(stagemonitorHandler);
}
}
logger.fine("Handler Chain: " + handlerChain);
} else {
logger.fine("No SOAPHandlers found in Dispatcher for Binding " + binding);
}
}
示例2: interceptVisitFrom
import net.bytebuddy.asm.Advice; //导入方法依赖的package包/类
@Advice.OnMethodEnter
public synchronized static void interceptVisitFrom(@Advice.Argument(1) File fileOrDirectory) {
File key = fileOrDirectory.getAbsoluteFile();
Integer count = COUNTS.get(key);
COUNTS.put(key, count != null ? count + 1 : 1);
if (TRACK_LOCATIONS) {
List<Exception> locations = LOCATIONS.get(key);
if (locations == null) {
locations = new ArrayList<Exception>();
LOCATIONS.put(key, locations);
}
locations.add(new Exception());
}
}
示例3: addInitializer
import net.bytebuddy.asm.Advice; //导入方法依赖的package包/类
@Advice.OnMethodExit(inline = false)
public static void addInitializer(@Advice.Argument(0) Object bean) {
if (bean instanceof ConfigurableEmbeddedServletContainer) {
((ConfigurableEmbeddedServletContainer) bean).addInitializers(new StagemonitorServletContextInitializer());
}
}
示例4: onBeforeEvaluate
import net.bytebuddy.asm.Advice; //导入方法依赖的package包/类
@Advice.OnMethodEnter(inline = false)
public static void onBeforeEvaluate(@Advice.Argument(0) Environment env, @Advice.This Expression dot) {
Profiler.start(env.getCurrentTemplate().getName() + ':' + dot.getBeginLine() + '#' + dot.toString());
}
示例5: addIOCall
import net.bytebuddy.asm.Advice; //导入方法依赖的package包/类
@Advice.OnMethodEnter(inline = false)
public static void addIOCall(@Advice.Argument(1) ActionRequest actionRequestBuilder) {
if (actionRequestBuilder instanceof SearchRequest) {
Profiler.addIOCall(ElasticsearchSearchQueryTransformer.getSearchRequestAsString((SearchRequest) actionRequestBuilder), 0L);
}
}
示例6: enter
import net.bytebuddy.asm.Advice; //导入方法依赖的package包/类
/**
* Wraps a {@link Runnable} so that it executes with the context that is associated with the
* current scope.
*
* <p>NB: This method is never called as is. Instead, Byte Buddy copies the method's bytecode
* into Executor#execute.
*
* @see Advice
*/
@Advice.OnMethodEnter
@SuppressWarnings(value = "UnusedAssignment")
@SuppressFBWarnings(value = {"DLS_DEAD_LOCAL_STORE", "UPM_UNCALLED_PRIVATE_METHOD"})
private static void enter(@Advice.Argument(value = 0, readOnly = false) Runnable runnable) {
runnable = ContextTrampoline.wrapInCurrentContext(runnable);
}