scannerLoader = serverConfig.serviceLoad(ClassPathScannerFactory.class);
+ for (ClassPathScannerFactory factory : scannerLoader) {
+ ClassPathScanner scanner = factory.createScanner(serverConfig.getClassLoadConfig().getClassLoader());
+ scanners.add(scanner);
+ }
+
+ return scanners;
+ }
+}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java
index 42954eea9..049766a1e 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java
@@ -225,8 +225,7 @@ public class DefaultContainer implements SpiContainer {
return new BootupClasses(serverConfig.getClasses());
}
- BootupClassPathSearch search = new BootupClassPathSearch(null, serverConfig.getPackages(), serverConfig.getJars(), serverConfig.getClassPathReaderClassName());
- return search.getBootupClasses();
+ return BootupClassPathSearch.search(serverConfig);
}
/**
diff --git a/src/main/java/com/avaje/ebeaninternal/server/util/ClassPathSearch.java b/src/main/java/com/avaje/ebeaninternal/server/util/ClassPathSearch.java
deleted file mode 100644
index 46bf855b2..000000000
--- a/src/main/java/com/avaje/ebeaninternal/server/util/ClassPathSearch.java
+++ /dev/null
@@ -1,566 +0,0 @@
-package com.avaje.ebeaninternal.server.util;
-
-import com.avaje.ebeaninternal.api.ClassPathSearchService;
-import com.avaje.ebeaninternal.api.ClassUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.loader.jar.JarEntryData;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.jar.Attributes;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-
-/**
- * Can search the class path for classes using a ClassPathSearchMatcher. A
- * ClassPathSearch should only be used once in a single threaded manor. It is
- * not safe for multithreaded use.
- *
- * For example, used to find all the Entity beans and ScalarTypes for Ebean.
- *
- */
-public class ClassPathSearch implements ClassPathSearchService {
-
- private static final Logger logger = LoggerFactory.getLogger(ClassPathSearch.class);
-
- private ClassLoader classLoader;
-
- private final List