public void prepare()

in connectfeaturelauncher/src/main/java/org/apache/sling/feature/launcher/extensions/connect/impl/PojoSRLauncher.java [49:121]


    public void prepare(LauncherPrepareContext context, ArtifactId frameworkId, Feature app) throws Exception
    {
        context.addAppJar(context.getArtifactFile(frameworkId));

        String filter = "";
        if (frameworkId.getArtifactId().equals("org.apache.felix.connect"))
        {
            for (List<Artifact> bundles : app.getBundles().getBundlesByStartOrder().values())
            {
                for (Artifact artifact : bundles)
                {
                    URL url = context.getArtifactFile(artifact.getId());
                    try (JarFile jar = IOUtils.getJarFileFromURL(url, true, null)) {
                        Manifest mf = jar.getManifest();
                        String bsn = mf.getMainAttributes() != null ? mf.getMainAttributes().getValue(Constants.BUNDLE_SYMBOLICNAME) : null;
                        if (bsn != null)
                        {
                            String cp = mf.getMainAttributes().getValue(Constants.BUNDLE_CLASSPATH);
                            if (cp != null)
                            {
                                for (String entry : cp.split(","))
                                {
                                    int idx = entry.indexOf(';');
                                    if (idx != -1)
                                    {
                                        entry = entry.substring(0, idx);
                                    }
                                    entry = entry.trim();
                                    if (!entry.isEmpty() && !entry.equals("."))
                                    {
                                        JarEntry content = jar.getJarEntry(entry);
                                        if (content != null && !content.isDirectory())
                                        {
                                            try
                                            {
                                                String urlString = "jar:" + IOUtils.getFileFromURL(getJarFileURL(url, content), true, null).toURI().toURL() + "!/";
                                                context.addAppJar(new URL(urlString));
                                            }
                                            catch (Exception ex)
                                            {
                                                ex.printStackTrace();
                                            }
                                        }
                                    }
                                    else
                                    {
                                        context.addAppJar(url);
                                        filter += "(" + Constants.BUNDLE_SYMBOLICNAME + "=" +  bsn + ")";
                                    }
                                }
                            }
                            else
                            {
                                context.addAppJar(url);
                                filter += "(" + Constants.BUNDLE_SYMBOLICNAME + "=" +  bsn + ")";
                            }
                        }
                        else {
                            context.addAppJar(url);
                        }

                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            }

            if (!filter.isEmpty()) {
                filter = "(|" + filter + ")";
                app.getFrameworkProperties().put("pojosr.filter", filter);
            }
        }
    }