Forum

Forum Navigation
You need to log in to create posts and topics.

How to perform a scan based on files signature check instead a scan based on files extension check?

How can I do this?

Simply call the method SearchConfigAbst.withScanFileCriteria(FileSystemItem.Criteria) as follow:

import java.util.Collection;
import org.burningwave.core.assembler.ComponentContainer;
import org.burningwave.core.assembler.ComponentSupplier;
import org.burningwave.core.classes.CacheableSearchConfig;
import org.burningwave.core.classes.ClassHunter;
import org.burningwave.core.classes.ClassHunter.SearchResult;
import org.burningwave.core.classes.SearchConfig;
import org.burningwave.core.io.FileSystemItem;
import org.burningwave.core.io.PathHelper;

public class Finder {
    public Collection<Class<?>> find() {
        ComponentSupplier componentSupplier = ComponentContainer.getInstance();
        PathHelper pathHelper = componentSupplier.getPathHelper();
        ClassHunter classHunter = componentSupplier.getClassHunter();
        CacheableSearchConfig searchConfig = SearchConfig.forPaths(
            //Here you can add all absolute path you want:
            //both folders, zip and jar will be recursively scanned.
            //For example you can add: "C:\\Users\\user\\.m2"
            //With the row below the search will be executed on runtime Classpaths
            pathHelper.getMainClassPaths()
        ).withScanFileCriteria(
        	FileSystemItem.Criteria.forClassTypeFiles(	
        		FileSystemItem.CheckingOption.FOR_SIGNATURE
        	)
        );
        SearchResult searchResult = classHunter.findBy(searchConfig);
        return searchResult.getClasses();
    }
}