private void processJar()

in atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/LauncherImpl.java [275:329]


    private void processJar(JarFile j, Context context, URLClassLoader classLoader)
        throws IOException
    {
        Attributes attributes = j.getManifest().getMainAttributes();
        String bundleActivatorClassName = attributes.getValue(
            org.osgi.framework.Constants.BUNDLE_ACTIVATOR);
        if (bundleActivatorClassName == null)
        {
            bundleActivatorClassName = attributes.getValue(
                Constants.EXTENSION_BUNDLE_ACTIVATOR);
        }
        if (bundleActivatorClassName != null)
        {
            Class<?> bundleActivatorClass;
            try
            {
                bundleActivatorClass = classLoader.loadClass(
                    bundleActivatorClassName.trim());
                orderdPluginsBy(BundleActivatorPlugin.class)//
                    .peek(System.out::println)//
                    .forEachOrdered(plugin -> plugin.doBundleActivator(
                        bundleActivatorClass, context, classLoader));
            }
            catch (ClassNotFoundException e)
            {
                e.printStackTrace();
            }
        }
        try
        {
            List<ComponentMetaDataPlugin<?>> cmdP = new ArrayList<>();
            orderdPluginsBy(ComponentMetaDataPlugin.class).forEachOrdered(cmdP::add);
            List<ComponentDescription> cds = readComponentDescription(j);
            for (ComponentDescription cd : cds)
            {
                cmdP.forEach(plugin -> {
                    plugin.doComponentMetaData(cd, context, classLoader);
                });
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        List<RegisterServicepPlugin<?>> rscP = new ArrayList<>();//
        orderdPluginsBy(RegisterServicepPlugin.class).forEachOrdered(rscP::add);
        List<RegisterServiceCall> rscs = context.getRegisterServiceCalls();
        for (RegisterServiceCall rsc : rscs)
        {
            rscP.forEach(plugin -> {
                plugin.doRegisterServiceCall(rsc, context, classLoader);
            });
        }
    }