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

Commit 5de1390

Browse files
committed
#220 New mlModulesRegex property
1 parent ff7be77 commit 5de1390

File tree

5 files changed

+39
-1
lines changed

5 files changed

+39
-1
lines changed

src/main/java/com/marklogic/appdeployer/AppConfig.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,9 @@ public class AppConfig {
185185
// Additional PropertiesSources instance to use for replacing module tokens
186186
private List<PropertiesSource> moduleTokensPropertiesSources = new ArrayList<>();
187187

188-
private Map<String, Integer> forestCounts = new HashMap<>();
188+
private Pattern moduleFilenamesIncludePattern;
189+
190+
private Map<String, Integer> forestCounts = new HashMap<>();
189191

190192
// Entity Services properties
191193
private String modelsPath = "data/entity-services";
@@ -1149,4 +1151,12 @@ public List<ConfigDir> getConfigDirs() {
11491151
public void setConfigDirs(List<ConfigDir> configDirs) {
11501152
this.configDirs = configDirs;
11511153
}
1154+
1155+
public Pattern getModuleFilenamesIncludePattern() {
1156+
return moduleFilenamesIncludePattern;
1157+
}
1158+
1159+
public void setModuleFilenamesIncludePattern(Pattern moduleFilenamesIncludePattern) {
1160+
this.moduleFilenamesIncludePattern = moduleFilenamesIncludePattern;
1161+
}
11521162
}

src/main/java/com/marklogic/appdeployer/DefaultAppConfigFactory.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,12 @@ public AppConfig newAppConfig() {
518518
c.setModuleTimestampsPath(prop);
519519
}
520520

521+
prop = getProperty("mlModulesRegex");
522+
if (prop != null) {
523+
logger.info("Including module filenames matching regex: " + prop);
524+
c.setModuleFilenamesIncludePattern(Pattern.compile(prop));
525+
}
526+
521527
/**
522528
* Whether or not to load asset modules in bulk - i.e. in one transaction. Defaults to true.
523529
*/

src/main/java/com/marklogic/appdeployer/command/modules/DefaultModulesLoaderFactory.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import java.util.Map;
1717
import java.util.Properties;
18+
import java.util.regex.Pattern;
1819

1920
public class DefaultModulesLoaderFactory extends LoggingObject implements ModulesLoaderFactory {
2021

@@ -60,6 +61,12 @@ public ModulesLoader newModulesLoader(AppConfig appConfig) {
6061
if (appConfig.isStaticCheckAssets()) {
6162
modulesLoader.setStaticChecker(newStaticChecker(appConfig));
6263
}
64+
65+
Pattern modulesPattern = appConfig.getModuleFilenamesIncludePattern();
66+
if (modulesPattern != null) {
67+
modulesLoader.setIncludeFilenamePattern(modulesPattern);
68+
}
69+
6370
return modulesLoader;
6471
}
6572

src/test/java/com/marklogic/appdeployer/DefaultAppConfigFactoryTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ public void allProperties() {
108108
p.setProperty("mlCreateForests", "false");
109109
p.setProperty("mlForestsPerHost", "some-db,2,other-db,3");
110110
p.setProperty("mlModulePermissions", "some-perm,read,some-perm,update");
111+
p.setProperty("mlModulesRegex", "some-pattern");
111112
p.setProperty("mlAdditionalBinaryExtensions", ".gradle,.properties");
112113
p.setProperty("mlConfigPaths", "src/test/resources/sample-app/custom-forests,src/test/resources/sample-app/alert-config");
113114
p.setProperty("mlSimpleSsl", "true");
@@ -201,6 +202,7 @@ public void allProperties() {
201202
assertEquals(2, (int)forestCounts.get("some-db"));
202203
assertEquals(3, (int)forestCounts.get("other-db"));
203204
assertEquals("some-perm,read,some-perm,update", config.getModulePermissions());
205+
assertEquals("some-pattern", config.getModuleFilenamesIncludePattern().pattern());
204206
String[] extensions = config.getAdditionalBinaryExtensions();
205207
assertEquals(".gradle", extensions[0]);
206208
assertEquals(".properties", extensions[1]);

src/test/java/com/marklogic/appdeployer/command/modules/LoadModulesTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.junit.Test;
1212

1313
import java.io.File;
14+
import java.util.regex.Pattern;
1415

1516
public class LoadModulesTest extends AbstractAppDeployerTest {
1617

@@ -160,6 +161,18 @@ public void deleteTestModules() {
160161
assertEquals(1, Integer.parseInt(xccTemplate.executeAdhocQuery(xquery)));
161162
}
162163

164+
@Test
165+
public void includeModulesPattern() {
166+
appConfig.setModuleFilenamesIncludePattern(Pattern.compile(".*/ext.*"));
167+
168+
initializeAppDeployer(new DeployRestApiServersCommand(true), buildLoadModulesCommand());
169+
appDeployer.deploy(appConfig);
170+
171+
String xquery = "fn:count(cts:uris((), (), cts:true-query()))";
172+
assertEquals("Should have the 3 /ext modules plus the REST API properties file, which was loaded when the REST server was created",
173+
4, Integer.parseInt(xccTemplate.executeAdhocQuery(xquery)));
174+
}
175+
163176
private void assertModuleExistsWithDefaultPermissions(String message, String uri) {
164177
assertEquals(message, "true", xccTemplate.executeAdhocQuery(format("fn:doc-available('%s')", uri)));
165178
assertDefaultPermissionsExists(uri);

0 commit comments

Comments
 (0)