public ContainerDescriptor scan()

in src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java [51:92]


    public ContainerDescriptor scan(final Feature feature,
            final Extension extension,
            final ArtifactProvider provider)
    throws IOException {
        if (!Extension.EXTENSION_NAME_CONTENT_PACKAGES.equals(extension.getName())) {
            return null;
        }
        if ( extension.getType() != ExtensionType.ARTIFACTS ) {
            return null;
        }

        final ContentPackageScanner scanner = new ContentPackageScanner();
        final ContainerDescriptor cd = new ContainerDescriptor(feature.getId().toMvnId() + "(" + getId() + ")") {};

        for(final Artifact a : extension.getArtifacts()) {
            URL url = null;
            try {
                url = provider.provide(a.getId());
            } catch (Exception ex) {
                logger.debug("Unable to get artifact file for: " + a.getId(), ex);
            }

            if (url != null) {
                final Set<ContentPackageDescriptorImpl> pcks = scanner.scan(a, url);
                for (final ContentPackageDescriptorImpl desc : pcks) {
                    cd.getArtifactDescriptors().add(desc);
                    cd.getBundleDescriptors().addAll(desc.getBundles());
                }
            }
            else {
                final int lastDot = a.getId().toMvnPath().lastIndexOf(".");
                ContentPackageDescriptorImpl desc = new ContentPackageDescriptorImpl(a.getId().toMvnPath().substring(a.getId().toMvnPath().lastIndexOf("/") + 1, lastDot), 
                        a, url, null, null, null, null, new Properties());
                desc.lock();
                cd.getArtifactDescriptors().add(desc);
            }
        }

        cd.lock();

        return cd;
    }