/*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed with
* this work for additional information regarding copyright ownership .
* The ASF licenses this file to You under the Apache License , Version 2 . 0
* ( the " License " ) ; you may not use this file except in compliance with
* the License . You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
package org.apache.tomcat;
import java.lang.instrument.ClassFileTransformer;
/**
* Specifies a class loader capable of being decorated with
* { @ link ClassFileTransformer } s . These transformers can instrument
* ( or weave ) the byte code of classes loaded through this class loader
* to alter their behavior . Currently only
* { @ link org . apache . catalina . loader . WebappClassLoaderBase } implements this
* interface . This allows web application frameworks or JPA providers
* bundled with a web application to instrument web application classes
* as necessary .
* < p >
* You should always program against the methods of this interface
* ( whether using reflection or otherwise ) . The methods in
* { @ code WebappClassLoaderBase } are protected by the default security
* manager if one is in use .
*
* @ since 8 . 0 , 7 . 0 . 64
*/
public interface InstrumentableClassLoader {
/**
* Adds the specified class file transformer to this class loader . The
* transformer will then be able to instrument the bytecode of any
* classes loaded by this class loader after the invocation of this
* method .
*
* @ param transformer The transformer to add to the class loader
* @ throws IllegalArgumentException if the { @ literal transformer } is null .
*/
void addTransformer(ClassFileTransformer transformer);
/**
* Removes the specified class file transformer from this class loader .
* It will no longer be able to instrument the byte code of any classes
* loaded by the class loader after the invocation of this method .
* However , any classes already instrumented by this transformer before
* this method call will remain in their instrumented state .
*
* @ param transformer The transformer to remove
*/
void removeTransformer(ClassFileTransformer transformer);
/**
* Returns a copy of this class loader without any class file
* transformers . This is a tool often used by Java Persistence API
* providers to inspect entity classes in the absence of any
* instrumentation , something that can ' t be guaranteed within the
* context of a { @ link ClassFileTransformer } ' s
* { @ link ClassFileTransformer # transform ( ClassLoader , String , Class ,
* java . security . ProtectionDomain , byte [ ] ) transform } method .
* < p >
* The returned class loader ' s resource cache will have been cleared
* so that classes already instrumented will not be retained or
* returned .
*
* @ return the transformer - free copy of this class loader .
*/
ClassLoader copyWithoutTransformers();
}
Messung V0.5 in Prozent C=94 H=95 G=94
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland