class org.junit.jupiter.engine.extension.TempDirectory extends java.lang.Object implements org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.ParameterResolver
{
static final org.junit.jupiter.api.extension.ExtensionContext$Namespace NAMESPACE;
private static final java.lang.String KEY;
private static final java.lang.String TEMP_DIR_PREFIX;
static final java.lang.String FILE_OPERATIONS_KEY;
private final org.junit.jupiter.engine.config.JupiterConfiguration configuration;
public void <init>(org.junit.jupiter.engine.config.JupiterConfiguration)
{
org.junit.jupiter.engine.config.JupiterConfiguration v;
org.junit.jupiter.engine.extension.TempDirectory v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.engine.config.JupiterConfiguration;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.engine.config.JupiterConfiguration configuration> = v;
return;
}
public void beforeAll(org.junit.jupiter.api.extension.ExtensionContext)
{
java.lang.Class v;
org.junit.jupiter.engine.extension.TempDirectory v;
org.junit.jupiter.api.extension.ExtensionContext v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ExtensionContext: java.lang.Class getRequiredTestClass()>();
specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: void injectStaticFields(org.junit.jupiter.api.extension.ExtensionContext,java.lang.Class)>(v, v);
return;
}
public void beforeEach(org.junit.jupiter.api.extension.ExtensionContext)
{
java.util.function.Consumer v;
java.util.List v;
org.junit.jupiter.engine.extension.TempDirectory v;
org.junit.jupiter.api.extension.ExtensionContext v;
org.junit.jupiter.api.extension.TestInstances v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ExtensionContext: org.junit.jupiter.api.extension.TestInstances getRequiredTestInstances()>();
v = interfaceinvoke v.<org.junit.jupiter.api.extension.TestInstances: java.util.List getAllInstances()>();
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$lambda_beforeEach_0__281: java.util.function.Consumer bootstrap$(org.junit.jupiter.engine.extension.TempDirectory,org.junit.jupiter.api.extension.ExtensionContext)>(v, v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
return;
}
private void injectStaticFields(org.junit.jupiter.api.extension.ExtensionContext, java.lang.Class)
{
java.util.function.Predicate v;
java.lang.Class v;
org.junit.jupiter.engine.extension.TempDirectory v;
org.junit.jupiter.api.extension.ExtensionContext v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v := @parameter: java.lang.Class;
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$isStatic__282: java.util.function.Predicate bootstrap$()>();
specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: void injectFields(org.junit.jupiter.api.extension.ExtensionContext,java.lang.Object,java.lang.Class,java.util.function.Predicate)>(v, null, v, v);
return;
}
private void injectInstanceFields(org.junit.jupiter.api.extension.ExtensionContext, java.lang.Object)
{
java.util.function.Predicate v;
java.lang.Class v;
java.lang.Object v;
org.junit.jupiter.engine.extension.TempDirectory v;
org.junit.jupiter.api.extension.ExtensionContext v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$isNotStatic__283: java.util.function.Predicate bootstrap$()>();
specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: void injectFields(org.junit.jupiter.api.extension.ExtensionContext,java.lang.Object,java.lang.Class,java.util.function.Predicate)>(v, v, v, v);
return;
}
private void injectFields(org.junit.jupiter.api.extension.ExtensionContext, java.lang.Object, java.lang.Class, java.util.function.Predicate)
{
java.util.function.Consumer v;
java.util.List v;
java.util.function.Predicate v;
java.lang.Class v;
java.lang.Object v;
org.junit.jupiter.engine.extension.TempDirectory v;
org.junit.jupiter.api.extension.ExtensionContext v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Class;
v := @parameter: java.util.function.Predicate;
v = staticinvoke <org.junit.platform.commons.util.AnnotationUtils: java.util.List findAnnotatedFields(java.lang.Class,java.lang.Class,java.util.function.Predicate)>(v, class "Lorg/junit/jupiter/api/io/TempDir;", v);
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$lambda_injectFields_1__284: java.util.function.Consumer bootstrap$(org.junit.jupiter.engine.extension.TempDirectory,java.lang.Object,org.junit.jupiter.api.extension.ExtensionContext)>(v, v, v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
return;
}
public boolean supportsParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext)
{
org.junit.jupiter.api.extension.ParameterContext v;
org.junit.jupiter.api.extension.ParameterResolutionException v;
java.lang.reflect.Executable v;
org.junit.jupiter.engine.extension.TempDirectory v;
org.junit.jupiter.api.extension.ExtensionContext v;
boolean v, v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ParameterContext;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ParameterContext: boolean isAnnotated(java.lang.Class)>(class "Lorg/junit/jupiter/api/io/TempDir;");
if v == 0 goto label;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ParameterContext: java.lang.reflect.Executable getDeclaringExecutable()>();
v = v instanceof java.lang.reflect.Constructor;
if v == 0 goto label;
v = new org.junit.jupiter.api.extension.ParameterResolutionException;
specialinvoke v.<org.junit.jupiter.api.extension.ParameterResolutionException: void <init>(java.lang.String)>("@TempDir is not supported on constructor parameters. Please use field injection instead.");
throw v;
label:
return v;
}
public java.lang.Object resolveParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext)
{
org.junit.jupiter.api.io.CleanupMode v;
org.junit.jupiter.api.extension.ExtensionContext v;
org.junit.jupiter.api.extension.ParameterContext v;
java.lang.reflect.Parameter v, v;
java.lang.Class v;
java.lang.Object v;
org.junit.jupiter.engine.extension.TempDirectory v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ParameterContext;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ParameterContext: java.lang.reflect.Parameter getParameter()>();
v = virtualinvoke v.<java.lang.reflect.Parameter: java.lang.Class getType()>();
specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: void assertSupportedType(java.lang.String,java.lang.Class)>("parameter", v);
v = specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.api.io.CleanupMode determineCleanupModeForParameter(org.junit.jupiter.api.extension.ParameterContext)>(v);
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ParameterContext: java.lang.reflect.Parameter getParameter()>();
v = specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: java.lang.Object getPathOrFile(java.lang.reflect.AnnotatedElement,java.lang.Class,org.junit.jupiter.api.io.CleanupMode,org.junit.jupiter.api.extension.ExtensionContext)>(v, v, v, v);
return v;
}
private org.junit.jupiter.api.io.CleanupMode determineCleanupModeForField(java.lang.reflect.Field)
{
java.util.Optional v;
java.lang.Object v;
org.junit.jupiter.api.io.CleanupMode v;
org.junit.jupiter.engine.extension.TempDirectory v;
java.lang.reflect.Field v;
java.util.function.Supplier v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: java.lang.reflect.Field;
v = staticinvoke <org.junit.platform.commons.util.AnnotationUtils: java.util.Optional findAnnotation(java.lang.reflect.AnnotatedElement,java.lang.Class)>(v, class "Lorg/junit/jupiter/api/io/TempDir;");
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$lambda_determineCleanupModeForField_2__285: java.util.function.Supplier bootstrap$(java.lang.reflect.Field)>(v);
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElseThrow(java.util.function.Supplier)>(v);
v = specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.api.io.CleanupMode determineCleanupMode(org.junit.jupiter.api.io.TempDir)>(v);
return v;
}
private org.junit.jupiter.api.io.CleanupMode determineCleanupModeForParameter(org.junit.jupiter.api.extension.ParameterContext)
{
org.junit.jupiter.api.extension.ParameterContext v;
java.util.Optional v;
java.lang.Object v;
org.junit.jupiter.api.io.CleanupMode v;
org.junit.jupiter.engine.extension.TempDirectory v;
java.util.function.Supplier v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ParameterContext;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ParameterContext: java.util.Optional findAnnotation(java.lang.Class)>(class "Lorg/junit/jupiter/api/io/TempDir;");
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$lambda_determineCleanupModeForParameter_3__286: java.util.function.Supplier bootstrap$(org.junit.jupiter.api.extension.ParameterContext)>(v);
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElseThrow(java.util.function.Supplier)>(v);
v = specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.api.io.CleanupMode determineCleanupMode(org.junit.jupiter.api.io.TempDir)>(v);
return v;
}
private org.junit.jupiter.api.io.CleanupMode determineCleanupMode(org.junit.jupiter.api.io.TempDir)
{
org.junit.jupiter.api.io.TempDir v;
org.junit.jupiter.api.io.CleanupMode v, v, v;
org.junit.jupiter.engine.config.JupiterConfiguration v;
org.junit.jupiter.engine.extension.TempDirectory v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.io.TempDir;
v = interfaceinvoke v.<org.junit.jupiter.api.io.TempDir: org.junit.jupiter.api.io.CleanupMode cleanup()>();
v = <org.junit.jupiter.api.io.CleanupMode: org.junit.jupiter.api.io.CleanupMode DEFAULT>;
if v != v goto label;
v = v.<org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.engine.config.JupiterConfiguration configuration>;
v = interfaceinvoke v.<org.junit.jupiter.engine.config.JupiterConfiguration: org.junit.jupiter.api.io.CleanupMode getDefaultTempDirCleanupMode()>();
goto label;
label:
v = v;
label:
return v;
}
private void assertNonFinalField(java.lang.reflect.Field)
{
java.lang.String v;
org.junit.jupiter.engine.extension.TempDirectory v;
java.lang.reflect.Field v;
org.junit.jupiter.api.extension.ExtensionConfigurationException v;
boolean v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: java.lang.reflect.Field;
v = staticinvoke <org.junit.platform.commons.util.ReflectionUtils: boolean isFinal(java.lang.reflect.Member)>(v);
if v == 0 goto label;
v = new org.junit.jupiter.api.extension.ExtensionConfigurationException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.reflect.Field)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("@TempDir field [\u] must not be declared as final.");
specialinvoke v.<org.junit.jupiter.api.extension.ExtensionConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private void assertSupportedType(java.lang.String, java.lang.Class)
{
org.junit.jupiter.api.extension.ExtensionConfigurationException v;
java.lang.Class v, v, v;
java.lang.String v, v, v, v, v;
org.junit.jupiter.engine.extension.TempDirectory v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
if v == class "Ljava/nio/file/Path;" goto label;
if v == class "Ljava/io/File;" goto label;
v = new org.junit.jupiter.api.extension.ExtensionConfigurationException;
v = class "Ljava/nio/file/Path;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = class "Ljava/io/File;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String,java.lang.String)>(v, v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Can only resolve @TempDir \u of type \u or \u but was: \u0001");
specialinvoke v.<org.junit.jupiter.api.extension.ExtensionConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private java.lang.Object getPathOrFile(java.lang.reflect.AnnotatedElement, java.lang.Class, org.junit.jupiter.api.io.CleanupMode, org.junit.jupiter.api.extension.ExtensionContext)
{
org.junit.jupiter.api.extension.ExtensionContext$Namespace v, v;
java.lang.Object[] v;
org.junit.jupiter.engine.extension.TempDirectory$Scope v, v;
org.junit.jupiter.api.io.CleanupMode v;
org.junit.jupiter.api.extension.ExtensionContext v;
java.util.function.Function v;
org.junit.jupiter.api.extension.ExtensionContext$Store v;
java.lang.Class v;
java.lang.Comparable v;
java.lang.Object v;
org.junit.jupiter.engine.extension.TempDirectory v;
java.nio.file.Path v;
java.lang.reflect.AnnotatedElement v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: java.lang.reflect.AnnotatedElement;
v := @parameter: java.lang.Class;
v := @parameter: org.junit.jupiter.api.io.CleanupMode;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v = specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.engine.extension.TempDirectory$Scope getScope(org.junit.jupiter.api.extension.ExtensionContext)>(v);
v = <org.junit.jupiter.engine.extension.TempDirectory$Scope: org.junit.jupiter.engine.extension.TempDirectory$Scope PER_DECLARATION>;
if v != v goto label;
v = <org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.api.extension.ExtensionContext$Namespace NAMESPACE>;
v = newarray (java.lang.Object)[1];
v[0] = v;
v = virtualinvoke v.<org.junit.jupiter.api.extension.ExtensionContext$Namespace: org.junit.jupiter.api.extension.ExtensionContext$Namespace append(java.lang.Object[])>(v);
goto label;
label:
v = <org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.api.extension.ExtensionContext$Namespace NAMESPACE>;
label:
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ExtensionContext: org.junit.jupiter.api.extension.ExtensionContext$Store getStore(org.junit.jupiter.api.extension.ExtensionContext$Namespace)>(v);
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$lambda_getPathOrFile_4__287: java.util.function.Function bootstrap$(org.junit.jupiter.api.io.CleanupMode,org.junit.jupiter.api.extension.ExtensionContext)>(v, v);
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ExtensionContext$Store: java.lang.Object getOrComputeIfAbsent(java.lang.Object,java.util.function.Function,java.lang.Class)>("temp.dir", v, class "Lorg/junit/jupiter/engine/extension/TempDirectory$CloseablePath;");
v = virtualinvoke v.<org.junit.jupiter.engine.extension.TempDirectory$CloseablePath: java.nio.file.Path get()>();
if v != class "Ljava/nio/file/Path;" goto label;
v = v;
goto label;
label:
v = interfaceinvoke v.<java.nio.file.Path: java.io.File toFile()>();
label:
return v;
}
private org.junit.jupiter.engine.extension.TempDirectory$Scope getScope(org.junit.jupiter.api.extension.ExtensionContext)
{
org.junit.jupiter.api.extension.ExtensionContext$Namespace v;
org.junit.jupiter.api.extension.ExtensionContext$Store v;
java.lang.Object v;
org.junit.jupiter.engine.extension.TempDirectory v;
org.junit.jupiter.api.extension.ExtensionContext v, v;
java.util.function.Function v;
v := @this: org.junit.jupiter.engine.extension.TempDirectory;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ExtensionContext: org.junit.jupiter.api.extension.ExtensionContext getRoot()>();
v = <org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.api.extension.ExtensionContext$Namespace NAMESPACE>;
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ExtensionContext: org.junit.jupiter.api.extension.ExtensionContext$Store getStore(org.junit.jupiter.api.extension.ExtensionContext$Namespace)>(v);
v = staticinvoke <org.junit.jupiter.engine.extension.TempDirectory$lambda_getScope_5__288: java.util.function.Function bootstrap$(org.junit.jupiter.api.extension.ExtensionContext)>(v);
v = interfaceinvoke v.<org.junit.jupiter.api.extension.ExtensionContext$Store: java.lang.Object getOrComputeIfAbsent(java.lang.Object,java.util.function.Function,java.lang.Class)>(class "Lorg/junit/jupiter/engine/extension/TempDirectory$Scope;", v, class "Lorg/junit/jupiter/engine/extension/TempDirectory$Scope;");
return v;
}
static org.junit.jupiter.engine.extension.TempDirectory$CloseablePath createTempDir(org.junit.jupiter.api.io.CleanupMode, org.junit.jupiter.api.extension.ExtensionContext)
{
org.junit.jupiter.engine.extension.TempDirectory$CloseablePath v;
java.nio.file.attribute.FileAttribute[] v;
org.junit.jupiter.api.io.CleanupMode v;
org.junit.jupiter.api.extension.ExtensionContext v;
java.nio.file.Path v;
org.junit.jupiter.api.extension.ExtensionConfigurationException v;
java.lang.Exception v;
v := @parameter: org.junit.jupiter.api.io.CleanupMode;
v := @parameter: org.junit.jupiter.api.extension.ExtensionContext;
label:
v = new org.junit.jupiter.engine.extension.TempDirectory$CloseablePath;
v = newarray (java.nio.file.attribute.FileAttribute)[0];
v = staticinvoke <java.nio.file.Files: java.nio.file.Path createTempDirectory(java.lang.String,java.nio.file.attribute.FileAttribute[])>("junit", v);
specialinvoke v.<org.junit.jupiter.engine.extension.TempDirectory$CloseablePath: void <init>(java.nio.file.Path,org.junit.jupiter.api.io.CleanupMode,org.junit.jupiter.api.extension.ExtensionContext)>(v, v, v);
label:
return v;
label:
v := @caughtexception;
v = new org.junit.jupiter.api.extension.ExtensionConfigurationException;
specialinvoke v.<org.junit.jupiter.api.extension.ExtensionConfigurationException: void <init>(java.lang.String,java.lang.Throwable)>("Failed to create default temp directory", v);
throw v;
catch java.lang.Exception from label to label with label;
}
static void <clinit>()
{
org.junit.jupiter.api.extension.ExtensionContext$Namespace v;
java.lang.Object[] v;
v = newarray (java.lang.Object)[1];
v[0] = class "Lorg/junit/jupiter/engine/extension/TempDirectory;";
v = staticinvoke <org.junit.jupiter.api.extension.ExtensionContext$Namespace: org.junit.jupiter.api.extension.ExtensionContext$Namespace create(java.lang.Object[])>(v);
<org.junit.jupiter.engine.extension.TempDirectory: org.junit.jupiter.api.extension.ExtensionContext$Namespace NAMESPACE> = v;
return;
}
}