public void registerResources()

in src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java [480:521]


    public void registerResources(final String scheme, final InstallableResource[] resources) {
        this.listener.start();
        try {
            List<InternalResource> incomingResources = this.createResources(scheme, resources);
            if ( incomingResources == null ) {
                // create empty list to make processing easier
                incomingResources = new ArrayList<>();
            }
            logger.debug("Registered new resource scheme: {}", scheme);
            synchronized (this.resourcesLock) {
                this.newResourcesSchemes.put(scheme, incomingResources);

                // Update new/removed resources
                final String prefix = scheme + ':';

                // newResources are the ones that arrived (via updateResources IIUC)
                // since the last call to this method. Here we remove all newResources
                // that match our prefix, as the incoming ones replace them
                final Iterator<InternalResource> rsrcIter = this.newResources.iterator();
                while ( rsrcIter.hasNext() ) {
                    final InternalResource rsrc = rsrcIter.next();
                    if ( rsrc.getURL().startsWith(prefix) ) {
                        prepareToRemove(rsrc, incomingResources);
                        rsrcIter.remove();
                    }
                }

                // removed urls
                final Iterator<String> urlIter = this.urlsToRemove.iterator();
                while ( urlIter.hasNext() ) {
                    final String url = urlIter.next();
                    if ( url.startsWith(prefix) ) {
                        urlIter.remove();
                    }
                }
            }
            this.wakeUp();
        } finally {
            // we simply close all input streams now
            this.closeInputStreams(resources);
        }
    }