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

Commit c5ccb96

Browse files
author
Rob Rudin
committed
#133 Added support for mlResourceFilenamesToIgnore
1 parent f218b4e commit c5ccb96

File tree

5 files changed

+40
-9
lines changed

5 files changed

+40
-9
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ public class AppConfig {
133133
private boolean generateExtractionTemplate = true;
134134
private boolean generateSearchOptions = true;
135135

136+
private String[] resourceFilenamesToIgnore;
137+
136138
public AppConfig() {
137139
this(DEFAULT_MODULES_PATH, DEFAULT_SCHEMAS_PATH);
138140
}
@@ -696,4 +698,12 @@ public String getModuleTimestampsPath() {
696698
public void setModuleTimestampsPath(String moduleTimestampsPath) {
697699
this.moduleTimestampsPath = moduleTimestampsPath;
698700
}
701+
702+
public String[] getResourceFilenamesToIgnore() {
703+
return resourceFilenamesToIgnore;
704+
}
705+
706+
public void setResourceFilenamesToIgnore(String... resourceFilenamesToIgnore) {
707+
this.resourceFilenamesToIgnore = resourceFilenamesToIgnore;
708+
}
699709
}

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -281,47 +281,60 @@ public AppConfig newAppConfig() {
281281
c.setStaticCheckLibraryAssets(Boolean.parseBoolean(prop));
282282
}
283283

284+
/**
285+
* The following properties are all for generating Entity Services artifacts.
286+
*/
284287
prop = getProperty("mlModelsPath");
285288
if (prop != null) {
286289
logger.info("Entity Services models path: " + prop);
287290
c.setModelsPath(prop);
288291
}
289-
290292
prop = getProperty("mlInstanceConverterPath");
291293
if (prop != null) {
292294
logger.info("Entity Services instance converter path: " + prop);
293295
c.setInstanceConverterPath(prop);
294296
}
295-
296297
prop = getProperty("mlGenerateInstanceConverter");
297298
if (prop != null) {
298299
logger.info("Entity Services generate instance converter: " + prop);
299300
c.setGenerateInstanceConverter(Boolean.parseBoolean(prop));
300301
}
301-
302302
prop = getProperty("mlGenerateSchema");
303303
if (prop != null) {
304304
logger.info("Entity Services generate schema: " + prop);
305305
c.setGenerateSchema(Boolean.parseBoolean(prop));
306306
}
307-
308307
prop = getProperty("mlGenerateSearchOptions");
309308
if (prop != null) {
310309
logger.info("Entity Services generate search options: " + prop);
311310
c.setGenerateSearchOptions(Boolean.parseBoolean(prop));
312311
}
313-
314312
prop = getProperty("mlGenerateDatabaseProperties");
315313
if (prop != null) {
316314
logger.info("Entity Services generate database properties: " + prop);
317315
c.setGenerateDatabaseProperties(Boolean.parseBoolean(prop));
318316
}
319-
320317
prop = getProperty("mlGenerateExtractionTemplate");
321318
if (prop != null) {
322319
logger.info("Entity Services generate extraction template: " + prop);
323320
c.setGenerateExtractionTemplate(Boolean.parseBoolean(prop));
324321
}
322+
// End Entity Services properties
323+
324+
/**
325+
* Sets resource filenames to ignore on ALL commands. Be careful here, in case you have files for different kinds
326+
* of resources, but with the same filename (this should be very rare and easily avoided).
327+
*
328+
* Also that as of version 2.6.0 of ml-app-deployer, this property is processed by AbstractAppDeployer, NOT by
329+
* the Command itself. So in order for this property to be applied, you must execute a Command via a subclass of
330+
* AbstractAppDeployer (most commonly SimpleAppDeployer).
331+
*/
332+
prop = getProperty("mlResourceFilenamesToIgnore");
333+
if (prop != null) {
334+
String[] values = prop.split(",");
335+
logger.info("Ignoring resource filenames: " + Arrays.asList(values));
336+
c.setResourceFilenamesToIgnore(values);
337+
}
325338

326339
return c;
327340
}

src/main/java/com/marklogic/appdeployer/impl/AbstractAppDeployer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Comparator;
66
import java.util.List;
77

8+
import com.marklogic.appdeployer.command.AbstractCommand;
89
import com.marklogic.client.helper.LoggingObject;
910
import com.marklogic.appdeployer.AppConfig;
1011
import com.marklogic.appdeployer.AppDeployer;
@@ -52,9 +53,13 @@ public void deploy(AppConfig appConfig) {
5253

5354
CommandContext context = new CommandContext(appConfig, manageClient, adminManager);
5455

56+
String[] filenamesToIgnore = appConfig.getResourceFilenamesToIgnore();
5557
for (Command command : commands) {
5658
String name = command.getClass().getName();
5759
logger.info(format("Executing command [%s] with sort order [%d]", name, command.getExecuteSortOrder()));
60+
if (command instanceof AbstractCommand) {
61+
((AbstractCommand)command).setFilenamesToIgnore(filenamesToIgnore);
62+
}
5863
command.execute(context);
5964
logger.info(format("Finished executing command [%s]\n", name));
6065
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public void allProperties() {
7272
p.setProperty("mlGenerateSchema", "false");
7373
p.setProperty("mlGenerateSearchOptions", "false");
7474
p.setProperty("mlGenerateExtractionTemplate", "false");
75+
p.setProperty("mlResourceFilenamesToIgnore", "role1.json,role2.xml");
7576

7677
sut = new DefaultAppConfigFactory(new SimplePropertySource(p));
7778
AppConfig config = sut.newAppConfig();
@@ -111,6 +112,9 @@ public void allProperties() {
111112
assertEquals("path3", paths.get(2));
112113

113114
assertEquals("custom/timestamps/path.properties", config.getModuleTimestampsPath());
115+
116+
assertEquals("role1.json", config.getResourceFilenamesToIgnore()[0]);
117+
assertEquals("role2.xml", config.getResourceFilenamesToIgnore()[1]);
114118
}
115119

116120
/**

src/test/java/com/marklogic/appdeployer/command/security/IgnoreRoleTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ public class IgnoreRoleTest extends AbstractAppDeployerTest {
88

99
@Test
1010
public void test() {
11-
DeployRolesCommand command = new DeployRolesCommand();
12-
command.setFilenamesToIgnore("sample-app-role2.xml");
13-
initializeAppDeployer(command);
11+
appConfig.setResourceFilenamesToIgnore("sample-app-role2.xml");
12+
initializeAppDeployer(new DeployRolesCommand());
1413
appDeployer.deploy(appConfig);
1514

1615
try {

0 commit comments

Comments
 (0)