All Downloads are FREE. Search and download functionalities are using the official Maven repository.

buildSrc.src.main.java.gradle.advice.CountDirectoryScans Maven / Gradle / Ivy


package gradle.advice;

import net.bytebuddy.asm.Advice;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CountDirectoryScans {
    public static boolean TRACK_LOCATIONS = false;
    public static Map COUNTS = new HashMap();
    public static Map> LOCATIONS = new HashMap>();

    @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 locations = LOCATIONS.get(key);
            if(locations == null) {
               locations = new ArrayList();
               LOCATIONS.put(key, locations);
            }
            locations.add(new Exception());
        }
    }

    public synchronized static void reset() {
        COUNTS.clear();
        LOCATIONS.clear();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy