Package net.bytebuddy.build
Class AccessControllerPlugin
- java.lang.Object
-
- net.bytebuddy.build.Plugin.ForElementMatcher
-
- net.bytebuddy.build.AccessControllerPlugin
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,Plugin,Plugin.Factory,ElementMatcher<TypeDescription>
@Enhance public class AccessControllerPlugin extends Plugin.ForElementMatcher implements Plugin.Factory
A build tool plugin that instruments methods to dispatch to methodsjava.security.AccessControllerwith equal signature. This can be useful to avoid using types from thejava.securitypackage which were deprecated for removal in Java 17. Annotated methods are dispatched to the JVM's access controller only if this type is available on the current VM, and if no system property is added and set to disable such dispatch. In the process,java.security.AccessControlContextis represented byObject.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAccessControllerPlugin.AccessControlWrapperAn wrapper for a method that represents a method ofAccessControllerwhich is weaved.static interfaceAccessControllerPlugin.EnhanceIndicates that the annotated method represents a pseudo implementation ofjava.security.AccessControllerwhich can be weaved to dispatch to the access controller if this is possible on the current VM and not explicitly disabled on the current VM via a system property.protected static classAccessControllerPlugin.InitializerA byte code appender to create an initializer segment that determines if thejava.security.AccessControlleris available.-
Nested classes/interfaces inherited from interface net.bytebuddy.matcher.ElementMatcher
ElementMatcher.Junction<S>
-
Nested classes/interfaces inherited from interface net.bytebuddy.build.Plugin
Plugin.Engine, Plugin.Factory, Plugin.ForElementMatcher, Plugin.NoOp, Plugin.WithInitialization, Plugin.WithPreprocessor
-
Nested classes/interfaces inherited from interface net.bytebuddy.build.Plugin.Factory
Plugin.Factory.Simple, Plugin.Factory.UsingReflection
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringACCESS_CONTROLLERThe binary name ofjava.security.AccessController.private static java.lang.Object[]EMPTYAn empty array to create frames without additional allocation.private static java.lang.StringNAMEThe name of the generated field.private java.lang.StringpropertyThe property to control if the access controller should be used even if available ornullif such a property should not be available.private static java.util.Map<MethodDescription.SignatureToken,MethodDescription.SignatureToken>SIGNATURESA map to all signatures ofjava.security.AccessControllerfrom a signature that does not contain any types that are deprecated for removal.
-
Constructor Summary
Constructors Constructor Description AccessControllerPlugin()Creates a new plugin to weave access controller dispatches without a property to allow for disabling the access controller handling.AccessControllerPlugin(java.lang.String property)Creates a new plugin to weave access controller dispatches.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DynamicType.Builder<?>apply(DynamicType.Builder<?> builder, TypeDescription typeDescription, ClassFileLocator classFileLocator)Applies this plugin.voidclose()Pluginmake()Returns a plugin that can be used for a transformation and which is subsequently closed.-
Methods inherited from class net.bytebuddy.build.Plugin.ForElementMatcher
matches
-
-
-
-
Field Detail
-
ACCESS_CONTROLLER
private static final java.lang.String ACCESS_CONTROLLER
The binary name ofjava.security.AccessController.- See Also:
- Constant Field Values
-
NAME
private static final java.lang.String NAME
The name of the generated field.- See Also:
- Constant Field Values
-
EMPTY
private static final java.lang.Object[] EMPTY
An empty array to create frames without additional allocation.
-
SIGNATURES
private static final java.util.Map<MethodDescription.SignatureToken,MethodDescription.SignatureToken> SIGNATURES
A map to all signatures ofjava.security.AccessControllerfrom a signature that does not contain any types that are deprecated for removal.
-
property
@MaybeNull @ValueHandling(REVERSE_NULLABILITY) private final java.lang.String property
The property to control if the access controller should be used even if available ornullif such a property should not be available.
-
-
Constructor Detail
-
AccessControllerPlugin
public AccessControllerPlugin()
Creates a new plugin to weave access controller dispatches without a property to allow for disabling the access controller handling.
-
AccessControllerPlugin
@Priority(2147483647) public AccessControllerPlugin(@MaybeNull java.lang.String property)
Creates a new plugin to weave access controller dispatches.- Parameters:
property- The property to control if the access controller should be used even if available ornullif such a property should not be available.
-
-
Method Detail
-
make
public Plugin make()
Returns a plugin that can be used for a transformation and which is subsequently closed.- Specified by:
makein interfacePlugin.Factory- Returns:
- The plugin to use for type transformations.
-
apply
public DynamicType.Builder<?> apply(DynamicType.Builder<?> builder, TypeDescription typeDescription, ClassFileLocator classFileLocator)
Applies this plugin.- Specified by:
applyin interfacePlugin- Parameters:
builder- The builder to use as a basis for the applied transformation.typeDescription- The type being transformed.classFileLocator- A class file locator that can locate other types in the scope of the project.- Returns:
- The supplied builder with additional transformations registered.
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
-