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

Commit 09ca0de

Browse files
committed
#87 Can now ignore filenames
1 parent 1eb9592 commit 09ca0de

File tree

5 files changed

+99
-10
lines changed

5 files changed

+99
-10
lines changed

src/main/java/com/marklogic/appdeployer/command/AbstractCommand.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.io.IOException;
66
import java.net.URI;
77
import java.util.Arrays;
8+
import java.util.HashSet;
9+
import java.util.Set;
810

911
import org.springframework.util.FileCopyUtils;
1012

@@ -32,6 +34,29 @@ public Integer getExecuteSortOrder() {
3234
return this.executeSortOrder;
3335
}
3436

37+
/**
38+
* Convenience method for setting the names of files to ignore when reading resources from a directory. Will
39+
* preserve any filenames already being ignored on the underlying FilenameFilter.
40+
*
41+
* @param filenames
42+
*/
43+
public void setFilenamesToIgnore(String... filenames) {
44+
if (resourceFilenameFilter != null && resourceFilenameFilter instanceof ResourceFilenameFilter) {
45+
ResourceFilenameFilter rff = (ResourceFilenameFilter) resourceFilenameFilter;
46+
Set<String> set = null;
47+
if (rff.getFilenamesToIgnore() != null) {
48+
set = rff.getFilenamesToIgnore();
49+
} else {
50+
set = new HashSet<>();
51+
}
52+
for (String f : filenames) {
53+
set.add(f);
54+
}
55+
} else {
56+
this.resourceFilenameFilter = new ResourceFilenameFilter(filenames);
57+
}
58+
}
59+
3560
/**
3661
* Simplifies reading the contents of a File into a String.
3762
*
@@ -42,8 +67,9 @@ protected String copyFileToString(File f) {
4267
try {
4368
return new String(FileCopyUtils.copyToByteArray(f));
4469
} catch (IOException ie) {
45-
throw new RuntimeException("Unable to copy file to string from path: " + f.getAbsolutePath() + "; cause: "
46-
+ ie.getMessage(), ie);
70+
throw new RuntimeException(
71+
"Unable to copy file to string from path: " + f.getAbsolutePath() + "; cause: " + ie.getMessage(),
72+
ie);
4773
}
4874
}
4975

src/main/java/com/marklogic/appdeployer/command/ResourceFilenameFilter.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,49 @@
22

33
import java.io.File;
44
import java.io.FilenameFilter;
5+
import java.util.HashSet;
6+
import java.util.Set;
7+
8+
import com.marklogic.client.helper.LoggingObject;
59

610
/**
711
* Simple filter implementation that returns true for .json and .xml files.
812
*/
9-
public class ResourceFilenameFilter implements FilenameFilter {
13+
public class ResourceFilenameFilter extends LoggingObject implements FilenameFilter {
14+
15+
private Set<String> filenamesToIgnore;
16+
17+
public ResourceFilenameFilter() {
18+
}
19+
20+
public ResourceFilenameFilter(String... filenamesToIgnore) {
21+
this.filenamesToIgnore = new HashSet<>();
22+
for (String f : filenamesToIgnore) {
23+
this.filenamesToIgnore.add(f);
24+
}
25+
}
26+
27+
public ResourceFilenameFilter(Set<String> filenamesToIgnore) {
28+
this.filenamesToIgnore = filenamesToIgnore;
29+
}
1030

1131
@Override
1232
public boolean accept(File dir, String name) {
33+
if (filenamesToIgnore != null && filenamesToIgnore.contains(name)) {
34+
if (logger.isInfoEnabled()) {
35+
logger.info("Ignoring filename: " + name);
36+
}
37+
return false;
38+
}
1339
return name.endsWith(".json") || name.endsWith(".xml");
1440
}
1541

42+
public void setFilenamesToIgnore(Set<String> ignoreFilenames) {
43+
this.filenamesToIgnore = ignoreFilenames;
44+
}
45+
46+
public Set<String> getFilenamesToIgnore() {
47+
return filenamesToIgnore;
48+
}
49+
1650
}

src/main/java/com/marklogic/appdeployer/command/appservers/DeployOtherServersCommand.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,7 @@ public DeployOtherServersCommand() {
2020
setUndoSortOrder(SortOrderConstants.DELETE_OTHER_SERVERS);
2121
setRestartAfterDelete(true);
2222
setCatchExceptionOnDeleteFailure(true);
23-
setResourceFilenameFilter(new ResourceFilenameFilter() {
24-
@Override
25-
public boolean accept(File dir, String name) {
26-
return super.accept(dir, name) && !name.startsWith("rest-api-server");
27-
}
28-
});
23+
setResourceFilenameFilter(new ResourceFilenameFilter("rest-api-server.xml", "rest-api-server.json"));
2924
}
3025

3126
@Override

src/test/java/com/marklogic/appdeployer/command/servers/ManageOtherServerTest.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,40 @@ public void odbcAndXdbcServers() {
4444

4545
assertTrue(mgr.exists("sample-app-xdbc"));
4646
assertTrue(mgr.exists("sample-app-odbc"));
47-
47+
assertFalse(
48+
"The command should ignore the rest-api-server.json file, as that's processed by DeployRestApiServersCommand",
49+
mgr.exists("sample-app"));
50+
51+
appDeployer.undeploy(appConfig);
52+
53+
assertFalse(mgr.exists("sample-app-xdbc"));
54+
assertFalse(mgr.exists("sample-app-odbc"));
55+
assertFalse(mgr.exists("sample-app"));
56+
}
57+
58+
@Test
59+
public void ignoreOdbcServer() {
60+
appConfig.setConfigDir(new ConfigDir(new File("src/test/resources/sample-app/other-servers")));
61+
62+
ServerManager mgr = new ServerManager(manageClient);
63+
64+
DeployOtherServersCommand c = new DeployOtherServersCommand();
65+
c.setFilenamesToIgnore("odbc-server.json");
66+
initializeAppDeployer(c);
67+
68+
appConfig.getCustomTokens().put("%%ODBC_PORT%%", "8048");
69+
appConfig.getCustomTokens().put("%%XDBC_PORT%%", "8049");
70+
appDeployer.deploy(appConfig);
71+
72+
final String message = "Both the ODBC and REST API server files should have been ignored";
73+
assertTrue(mgr.exists("sample-app-xdbc"));
74+
assertFalse(message, mgr.exists("sample-app-odbc"));
75+
assertFalse(message, mgr.exists("sample-app"));
76+
4877
appDeployer.undeploy(appConfig);
4978

5079
assertFalse(mgr.exists("sample-app-xdbc"));
5180
assertFalse(mgr.exists("sample-app-odbc"));
81+
assertFalse(mgr.exists("sample-app"));
5282
}
5383
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"server-name": "%%NAME%%",
3+
"authentication": "basic"
4+
}

0 commit comments

Comments
 (0)