2525import java .io .InputStreamReader ;
2626import java .net .URL ;
2727import java .nio .file .Path ;
28+ import java .util .ArrayList ;
2829import java .util .Collection ;
30+ import java .util .Collections ;
2931import java .util .HashMap ;
3032import java .util .List ;
3133import java .util .Map ;
4850import org .osgi .framework .BundleContext ;
4951import org .osgi .framework .BundleException ;
5052import org .osgi .framework .Constants ;
53+ import org .osgi .framework .FrameworkUtil ;
5154import org .osgi .framework .InvalidSyntaxException ;
5255import org .osgi .framework .ServiceReference ;
5356import org .osgi .framework .Version ;
5457import org .osgi .framework .launch .Framework ;
58+ import org .osgi .framework .namespace .PackageNamespace ;
5559import org .osgi .framework .wiring .BundleWiring ;
60+ import org .osgi .framework .wiring .FrameworkWiring ;
61+ import org .osgi .resource .Namespace ;
62+ import org .osgi .resource .Requirement ;
63+ import org .osgi .resource .Resource ;
5664
5765public class IndexLaunchTest
5866{
@@ -274,23 +282,26 @@ void doTestFindEntries(@TempDir Path storage, String indexPath,
274282 {
275283 AtomosContent content = runtime .getBootLayer ().findAtomosContent (
276284 "bundle." + i ).get ();
277- List <String > expectedEntries = List .of ( //
278- "/META-INF/" , //
279- "/META-INF/MANIFEST.MF" , //
280- "/OSGI-INF/" , //
281- "/OSGI-INF/common.txt" , //
282- "/OSGI-INF/bundle." + i + "-1.txt" , //
283- "/OSGI-INF/bundle." + i + "-2.txt" , //
284- "/org/" , //
285- "/org/apache/" , //
286- "/org/apache/felix/" , //
287- "/org/apache/felix/atomos/" , //
288- "/org/apache/felix/atomos/tests/" , //
289- "/org/apache/felix/atomos/tests/index/" , //
290- "/org/apache/felix/atomos/tests/index/bundles/" , //
291- "/org/apache/felix/atomos/tests/index/bundles/b" + i + "/" , //
292- "/org/apache/felix/atomos/tests/index/bundles/b" + i + "/ActivatorBundle" + i + ".class" //
293- );
285+ List <String > expectedEntries = new ArrayList <>();
286+ expectedEntries .add ("/META-INF/" );
287+ expectedEntries .add ("/META-INF/MANIFEST.MF" );
288+ expectedEntries .add ("/OSGI-INF/" );
289+ expectedEntries .add ("/OSGI-INF/common.txt" );
290+ expectedEntries .add ("/OSGI-INF/bundle." + i + "-1.txt" );
291+ expectedEntries .add ("/OSGI-INF/bundle." + i + "-2.txt" );
292+ expectedEntries .add ("/org/" );
293+ expectedEntries .add ("/org/apache/" );
294+ expectedEntries .add ("/org/apache/felix/" );
295+ expectedEntries .add ("/org/apache/felix/atomos/" );
296+ expectedEntries .add ("/org/apache/felix/atomos/tests/" );
297+ expectedEntries .add ("/org/apache/felix/atomos/tests/index/" );
298+ expectedEntries .add ("/org/apache/felix/atomos/tests/index/bundles/" );
299+ if (i == 3 ) {
300+ expectedEntries .add ("/org/apache/felix/atomos/tests/index/bundles/TestClass.class" );
301+ }
302+ expectedEntries .add ("/org/apache/felix/atomos/tests/index/bundles/b" + i + "/" );
303+ expectedEntries .add ("/org/apache/felix/atomos/tests/index/bundles/b" + i + "/ActivatorBundle" + i + ".class" );
304+
294305 Bundle bundle = content .getBundle ();
295306 BundleWiring wiring = bundle .adapt (BundleWiring .class );
296307 List <URL > entryURLs = wiring .findEntries ("/" , "*" ,
@@ -305,6 +316,14 @@ void doTestFindEntries(@TempDir Path storage, String indexPath,
305316 }
306317 }
307318
319+ @ Test
320+ void testEmptyDirectoryPackages (@ TempDir Path storage ) throws BundleException {
321+ testFramework = getTestFramework (storage , null );
322+ Bundle b3 = FrameworkUtil .getBundle (TestClass .class );
323+ assertNotNull (b3 , "no bundle found." );
324+ assertEquals ("bundle.3" , b3 .getSymbolicName (), "Wrong BSN" );
325+ }
326+
308327 private void assertContent (String expected , URL url ) throws IOException
309328 {
310329 try (BufferedReader br = new BufferedReader (
0 commit comments