public void activate()

in src/main/java/org/apache/sling/distribution/serialization/impl/DistributionPackageBuilderFactory.java [161:196]


    public void activate(BundleContext context,
                         Config conf) {

        String[] nodeFilters = SettingsUtils.removeEmptyEntries(conf.package_filters());
        String[] propertyFilters = SettingsUtils.removeEmptyEntries(conf.property_filters());
        String persistenceType = conf.type();
        String tempFsFolder = SettingsUtils.removeEmptyEntry(conf.tempFsFolder());
        String digestAlgorithm = conf.digestAlgorithm();
        long cleanupDelay = conf.cleanupDelay();
        if (DEFAULT_DIGEST_ALGORITHM.equals(digestAlgorithm)) {
            digestAlgorithm = null;
        }

        DistributionPackageBuilder wrapped;
        if ("file".equals(persistenceType)) {
            wrapped = new FileDistributionPackageBuilder(contentSerializer.getName(), contentSerializer, tempFsFolder, digestAlgorithm, nodeFilters, propertyFilters);
        } else if ("inmemory".equals(persistenceType)) {
            wrapped = new InMemoryDistributionPackageBuilder(contentSerializer.getName(), contentSerializer, nodeFilters, propertyFilters);
        } else {
            final int fileThreshold = conf.fileThreshold();
            String memoryUnitName = conf.memoryUnit();
            final MemoryUnit memoryUnit = MemoryUnit.valueOf(memoryUnitName);
            final boolean useOffHeapMemory = conf.useOffHeapMemory();
            ResourceDistributionPackageBuilder resourceDistributionPackageBuilder = new ResourceDistributionPackageBuilder(contentSerializer.getName(), contentSerializer, tempFsFolder, fileThreshold, memoryUnit, useOffHeapMemory, digestAlgorithm, nodeFilters, propertyFilters);
            Runnable cleanup = new ResourceDistributionPackageCleanup(resolverFactory, resourceDistributionPackageBuilder);
            Dictionary<String, Object> props = new Hashtable<String, Object>();
            props.put(Scheduler.PROPERTY_SCHEDULER_CONCURRENT, false);
            props.put(Scheduler.PROPERTY_SCHEDULER_PERIOD, cleanupDelay);
            props.put(Scheduler.PROPERTY_SCHEDULER_THREAD_POOL, "content-distribution");
            packageCleanup = context.registerService(Runnable.class, cleanup, props);
            wrapped = resourceDistributionPackageBuilder;
        }

        int monitoringQueueSize = conf.monitoringQueueSize();
        packageBuilder = new MonitoringDistributionPackageBuilder(monitoringQueueSize, wrapped, context);
    }