protected void activate()

in src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java [190:272]


    protected void activate(BundleContext bundleContext, final Config config) {
        final FsMode fsMode = config.provider_fs_mode();
        String providerRoot = config.provider_root();
        if (StringUtils.isBlank(providerRoot)) {
            throw new IllegalArgumentException("provider.root property must be set");
        }

        String providerFileName = config.provider_file();
        if (StringUtils.isBlank(providerFileName)) {
            throw new IllegalArgumentException("provider.file property must be set");
        }

        this.providerRoot = providerRoot;
        this.providerFile = getProviderFile(providerFileName, bundleContext);
        boolean overlayParentResourceProvider = false;

        List<String> contentFileSuffixes = new ArrayList<>();
        if (fsMode == FsMode.FILEVAULT_XML) {
            contentFileSuffixes.add("/" + DOT_CONTENT_XML);
            contentFileSuffixes.add(ContentFileTypes.XML_SUFFIX);
        } else if (fsMode == FsMode.FILES_FOLDERS) {
            overlayParentResourceProvider = true;
        } else if (fsMode == FsMode.INITIAL_CONTENT) {
            InitialContentImportOptions options =
                    new InitialContentImportOptions(config.provider_initial_content_import_options());
            overlayParentResourceProvider = !options.isOverwrite();
            if (!options.getIgnoreImportProviders().contains(ContentType.JSON.getExtension())) {
                contentFileSuffixes.add(ContentFileTypes.JSON_SUFFIX);
            }
            if (!options.getIgnoreImportProviders().contains(ContentType.JCR_XML.getExtension())) {
                contentFileSuffixes.add(ContentFileTypes.JCR_XML_SUFFIX);
            }
            if (!options.getIgnoreImportProviders().contains(ContentType.XML.getExtension())) {
                contentFileSuffixes.add(ContentFileTypes.XML_SUFFIX);
            }
        }
        final ContentFileExtensions contentFileExtensions =
                contentFileSuffixes.isEmpty() ? null : new ContentFileExtensions(contentFileSuffixes);

        this.contentFileCache =
                fsMode != FsMode.FILES_FOLDERS ? new ContentFileCache(config.provider_cache_size()) : null;
        // cache for files that were requested but don't exist
        final FileStatCache fileStatCache = new FileStatCache(this.providerFile);

        if (fsMode == FsMode.FILEVAULT_XML) {
            File filterXmlFile = null;
            if (StringUtils.isNotBlank(config.provider_filevault_filterxml_path())) {
                filterXmlFile = new File(config.provider_filevault_filterxml_path());
            }
            this.fileMapper = new FileVaultResourceMapper(
                    this.providerRoot,
                    this.providerFile,
                    contentFileExtensions,
                    this.contentFileCache,
                    fileStatCache,
                    overlayParentResourceProvider,
                    filterXmlFile);
        } else {
            this.fileMapper = new FileResourceMapper(
                    this.providerRoot,
                    this.providerFile,
                    contentFileExtensions,
                    this.contentFileCache,
                    fileStatCache,
                    overlayParentResourceProvider,
                    true);
        }

        // start background monitor if check interval is higher than 100
        if (config.provider_checkinterval() > 100) {
            File rootFile = this.providerFile;
            if (fsMode == FsMode.FILEVAULT_XML) {
                rootFile = new File(this.providerFile, ".".concat(fileMapper.transformPath(this.getProviderRoot())));
            }
            this.monitor = new FileMonitor(
                    this,
                    rootFile,
                    config.provider_checkinterval(),
                    contentFileExtensions,
                    this.contentFileCache,
                    fileStatCache);
        }
    }