Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit dfa97ab

Browse files
committed
#107 Loading files now supports a wildcard for collections and permissions
1 parent d18e525 commit dfa97ab

File tree

9 files changed

+99
-1
lines changed

9 files changed

+99
-1
lines changed

src/main/java/com/marklogic/client/ext/file/CollectionsFileDocumentFileProcessor.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
*/
1010
public class CollectionsFileDocumentFileProcessor extends PropertiesDrivenDocumentFileProcessor {
1111

12+
private String delimiter = ",";
13+
1214
public CollectionsFileDocumentFileProcessor() {
1315
this("collections.properties");
1416
}
@@ -22,7 +24,20 @@ protected void processProperties(DocumentFile documentFile, Properties propertie
2224
String name = documentFile.getFile().getName();
2325
if (properties.containsKey(name)) {
2426
String value = properties.getProperty(name);
25-
documentFile.getDocumentMetadata().withCollections(value.split(","));
27+
documentFile.getDocumentMetadata().withCollections(value.split(delimiter));
28+
}
29+
30+
if (properties.containsKey(WILDCARD_KEY)) {
31+
String value = properties.getProperty(WILDCARD_KEY);
32+
documentFile.getDocumentMetadata().withCollections(value.split(delimiter));
2633
}
2734
}
35+
36+
public String getDelimiter() {
37+
return delimiter;
38+
}
39+
40+
public void setDelimiter(String delimiter) {
41+
this.delimiter = delimiter;
42+
}
2843
}

src/main/java/com/marklogic/client/ext/file/PermissionsFileDocumentFileProcessor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ protected void processProperties(DocumentFile documentFile, Properties propertie
3333
String value = properties.getProperty(name);
3434
documentPermissionsParser.parsePermissions(value, documentFile.getDocumentMetadata().getPermissions());
3535
}
36+
37+
if (properties.containsKey(WILDCARD_KEY)) {
38+
String value = properties.getProperty(WILDCARD_KEY);
39+
documentPermissionsParser.parsePermissions(value, documentFile.getDocumentMetadata().getPermissions());
40+
}
3641
}
3742

3843
public void setDocumentPermissionsParser(DocumentPermissionsParser documentPermissionsParser) {

src/main/java/com/marklogic/client/ext/file/PropertiesDrivenDocumentFileProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
*/
1717
public abstract class PropertiesDrivenDocumentFileProcessor extends LoggingObject implements DocumentFileProcessor, FileFilter {
1818

19+
protected final static String WILDCARD_KEY = "*";
20+
1921
private String propertiesFilename;
2022

2123
// Used to avoid checking for and loading the properties for every file in a directory
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.marklogic.client.ext.file;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
import java.io.File;
7+
8+
public class CollectionsFileDocumentFileProcessorTest extends Assert {
9+
10+
private CollectionsFileDocumentFileProcessor processor = new CollectionsFileDocumentFileProcessor();
11+
12+
@Test
13+
public void wildcard() {
14+
File testDir = new File("src/test/resources/process-files/wildcard-test");
15+
16+
DocumentFile file = new DocumentFile("/test.json", new File(testDir, "test.json"));
17+
processor.processDocumentFile(file);
18+
assertTrue(file.getDocumentMetadata().getCollections().contains("json-data"));
19+
assertFalse(file.getDocumentMetadata().getCollections().contains("xml-data"));
20+
assertTrue(file.getDocumentMetadata().getCollections().contains("global"));
21+
22+
file = new DocumentFile("/test.xml", new File(testDir, "test.xml"));
23+
processor.processDocumentFile(file);
24+
assertFalse(file.getDocumentMetadata().getCollections().contains("json-data"));
25+
assertTrue(file.getDocumentMetadata().getCollections().contains("xml-data"));
26+
assertTrue(file.getDocumentMetadata().getCollections().contains("global"));
27+
}
28+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.marklogic.client.ext.file;
2+
3+
import com.marklogic.client.io.DocumentMetadataHandle;
4+
import org.junit.Assert;
5+
import org.junit.Test;
6+
7+
import java.io.File;
8+
9+
public class PermissionsFileDocumentFileProcessorTest extends Assert {
10+
11+
private PermissionsFileDocumentFileProcessor processor = new PermissionsFileDocumentFileProcessor();
12+
13+
/**
14+
* *=manage-user,read
15+
* test.json=manage-user,update,manage-admin,update
16+
* test.xml=qconsole-user,update
17+
*/
18+
@Test
19+
public void wildcard() {
20+
File testDir = new File("src/test/resources/process-files/wildcard-test");
21+
22+
DocumentFile file = new DocumentFile("/test.json", new File(testDir, "test.json"));
23+
processor.processDocumentFile(file);
24+
DocumentMetadataHandle.DocumentPermissions permissions = file.getDocumentMetadata().getPermissions();
25+
assertTrue(permissions.get("manage-user").contains(DocumentMetadataHandle.Capability.READ));
26+
assertTrue(permissions.get("manage-user").contains(DocumentMetadataHandle.Capability.UPDATE));
27+
assertTrue(permissions.get("manage-admin").contains(DocumentMetadataHandle.Capability.UPDATE));
28+
assertNull(permissions.get("qconsole-user"));
29+
30+
file = new DocumentFile("/test.xml", new File(testDir, "test.xml"));
31+
processor.processDocumentFile(file);
32+
permissions = file.getDocumentMetadata().getPermissions();
33+
assertTrue(permissions.get("manage-user").contains(DocumentMetadataHandle.Capability.READ));
34+
assertFalse(permissions.get("manage-user").contains(DocumentMetadataHandle.Capability.UPDATE));
35+
assertNull(permissions.get("manage-admin"));
36+
assertTrue(permissions.get("qconsole-user").contains(DocumentMetadataHandle.Capability.UPDATE));
37+
}
38+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*=global
2+
test.json=json-data
3+
test.xml=xml-data
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*=manage-user,read
2+
test.json=manage-user,update,manage-admin,update
3+
test.xml=qconsole-user,update
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"test": "test"
3+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<test/>

0 commit comments

Comments
 (0)