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);
}
}