package com.marklogic.client.file;
import com.marklogic.client.modulesloader.impl.DefaultDocumentPermissionsParser;
import com.marklogic.client.modulesloader.impl.DocumentPermissionsParser;
import java.util.Properties;
/**
* Looks for a special file in each directory - defaults to permissions.properties - that contains properties where the
* key is the name of a file in the directory, and the value is a comma-delimited list of role,capability,role,capability,etc.
*/
public class PermissionsDocumentFileProcessor extends PropertiesDrivenDocumentFileProcessor {
private DocumentPermissionsParser documentPermissionsParser;
public PermissionsDocumentFileProcessor() {
this("permissions.properties");
}
public PermissionsDocumentFileProcessor(String propertiesFilename) {
this(propertiesFilename, new DefaultDocumentPermissionsParser());
}
public PermissionsDocumentFileProcessor(String propertiesFilename, DocumentPermissionsParser documentPermissionsParser) {
super(propertiesFilename);
this.documentPermissionsParser = documentPermissionsParser;
}
@Override
protected void processProperties(DocumentFile documentFile, Properties properties) {
String name = documentFile.getFile().getName();
if (properties.containsKey(name)) {
String value = properties.getProperty(name);
documentPermissionsParser.parsePermissions(value, documentFile.getDocumentMetadata().getPermissions());
}
}
public void setDocumentPermissionsParser(DocumentPermissionsParser documentPermissionsParser) {
this.documentPermissionsParser = documentPermissionsParser;
}
}