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

Commit 36a4ef4

Browse files
committed
#238 Fix for exporting CPF/triggers
1 parent 86d1e8d commit 36a4ef4

File tree

5 files changed

+54
-4
lines changed

5 files changed

+54
-4
lines changed

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
group=com.marklogic
22
javadocsDir=../gh-pages-marklogic-java/javadocs
3-
version=3.4.1
4-
mlJavaclientUtilVersion=3.4.0
3+
version=3.5.0
4+
mlJavaclientUtilVersion=3.5.0
55
mlJunitVersion=3.1.0
66

src/main/java/com/marklogic/appdeployer/export/Exporter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.marklogic.appdeployer.export.cpf.PipelineExporter;
77
import com.marklogic.appdeployer.export.databases.DatabaseExporter;
88
import com.marklogic.appdeployer.export.groups.GroupExporter;
9+
import com.marklogic.appdeployer.export.impl.AbstractNamedResourceExporter;
910
import com.marklogic.appdeployer.export.impl.CompositeResourceExporter;
1011
import com.marklogic.appdeployer.export.security.AmpExporter;
1112
import com.marklogic.appdeployer.export.security.PrivilegeExporter;
@@ -15,6 +16,7 @@
1516
import com.marklogic.appdeployer.export.triggers.TriggerExporter;
1617
import com.marklogic.client.ext.helper.LoggingObject;
1718
import com.marklogic.mgmt.ManageClient;
19+
import com.marklogic.mgmt.selector.AbstractNameMatchingResourceSelector;
1820
import com.marklogic.mgmt.selector.ResourceSelection;
1921
import com.marklogic.mgmt.selector.ResourceSelector;
2022

@@ -51,6 +53,11 @@ public Exporter(ManageClient manageClient, String groupName) {
5153
}
5254

5355
public Exporter select(ResourceSelector selector) {
56+
// TODO A bit hacky here... may want an interface of e.g. TriggersDatabaseAware
57+
if (selector instanceof AbstractNameMatchingResourceSelector) {
58+
((AbstractNameMatchingResourceSelector)selector).setTriggersDatabase(triggersDatabase);
59+
}
60+
5461
ResourceSelection selection = selector.selectResources(manageClient);
5562
amps(selection.getAmpUriRefs());
5663
cpfConfigs(triggersDatabase, selection.getCpfConfigNames());

src/main/java/com/marklogic/appdeployer/export/impl/CompositeResourceExporter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ public ExportedResources exportResources(File baseDir) {
4444
resources.add(er);
4545
}
4646
}
47+
if (resources == null) {
48+
resources = new ExportedResources(new ArrayList<>(), new String[]{});
49+
}
4750
return resources;
4851
}
4952

src/main/java/com/marklogic/mgmt/selector/AbstractNameMatchingResourceSelector.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33
import com.marklogic.mgmt.ManageClient;
44
import com.marklogic.mgmt.resource.ResourceManager;
55
import com.marklogic.mgmt.resource.appservers.ServerManager;
6+
import com.marklogic.mgmt.resource.cpf.CpfConfigManager;
7+
import com.marklogic.mgmt.resource.cpf.DomainManager;
8+
import com.marklogic.mgmt.resource.cpf.PipelineManager;
69
import com.marklogic.mgmt.resource.databases.DatabaseManager;
710
import com.marklogic.mgmt.resource.groups.GroupManager;
811
import com.marklogic.mgmt.resource.security.AmpManager;
912
import com.marklogic.mgmt.resource.security.PrivilegeManager;
1013
import com.marklogic.mgmt.resource.security.RoleManager;
1114
import com.marklogic.mgmt.resource.security.UserManager;
1215
import com.marklogic.mgmt.resource.tasks.TaskManager;
16+
import com.marklogic.mgmt.resource.triggers.TriggerManager;
1317
import com.marklogic.rest.util.ResourcesFragment;
1418
import org.jdom2.Element;
1519
import org.jdom2.Namespace;
@@ -20,6 +24,7 @@
2024
public abstract class AbstractNameMatchingResourceSelector implements ResourceSelector {
2125

2226
private List<String> includeTypes;
27+
private String triggersDatabase;
2328

2429
protected abstract boolean nameMatches(String resourceName);
2530

@@ -32,6 +37,14 @@ public ResourceSelection selectResources(ManageClient manageClient) {
3237
select(selection, new RoleManager(manageClient), MapResourceSelection.ROLES);
3338
select(selection, new UserManager(manageClient), MapResourceSelection.USERS);
3439
select(selection, new GroupManager(manageClient), MapResourceSelection.GROUPS);
40+
41+
if (triggersDatabase != null) {
42+
select(selection, new CpfConfigManager(manageClient, triggersDatabase), MapResourceSelection.CPF_CONFIGS);
43+
select(selection, new DomainManager(manageClient, triggersDatabase), MapResourceSelection.DOMAINS);
44+
select(selection, new PipelineManager(manageClient, triggersDatabase), MapResourceSelection.PIPELINES);
45+
select(selection, new TriggerManager(manageClient, triggersDatabase), MapResourceSelection.TRIGGERS);
46+
}
47+
3548
selectPrivileges(selection, manageClient);
3649
selectTasks(selection, manageClient);
3750
selectAmps(selection, manageClient);
@@ -84,8 +97,8 @@ protected void selectPrivileges(MapResourceSelection selection, ManageClient man
8497

8598
protected void select(MapResourceSelection selection, ResourceManager mgr, String type) {
8699
if (includeTypes == null || includeTypes.contains(type)) {
87-
ResourcesFragment databases = mgr.getAsXml();
88-
for (String name : databases.getListItemNameRefs()) {
100+
ResourcesFragment resources = mgr.getAsXml();
101+
for (String name : resources.getListItemNameRefs()) {
89102
if (nameMatches(name)) {
90103
selection.select(type, name);
91104
}
@@ -111,4 +124,12 @@ public void setIncludeTypes(String... types) {
111124
}
112125
}
113126
}
127+
128+
public String getTriggersDatabase() {
129+
return triggersDatabase;
130+
}
131+
132+
public void setTriggersDatabase(String triggersDatabase) {
133+
this.triggersDatabase = triggersDatabase;
134+
}
114135
}

src/test/java/com/marklogic/appdeployer/export/ExportTriggersTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import com.marklogic.appdeployer.command.databases.DeploySchemasDatabaseCommand;
66
import com.marklogic.appdeployer.command.databases.DeployTriggersDatabaseCommand;
77
import com.marklogic.appdeployer.command.triggers.DeployTriggersCommand;
8+
import com.marklogic.mgmt.selector.PrefixResourceSelector;
89
import com.marklogic.mgmt.selector.PropertiesResourceSelector;
10+
import com.marklogic.mgmt.selector.RegexResourceSelector;
911
import org.junit.After;
1012
import org.junit.Test;
1113

@@ -29,10 +31,27 @@ public void test() throws Exception {
2931
props.setProperty("triggers", "my-trigger");
3032

3133
ExportedResources resources = new Exporter(manageClient)
34+
.withTriggersDatabase(appConfig.getTriggersDatabaseName())
35+
.select(new RegexResourceSelector("my-trigger"))
36+
.export(exportDir);
37+
verifyExportedResources(resources);
38+
39+
initializeExportDir();
40+
resources = new Exporter(manageClient)
41+
.withTriggersDatabase(appConfig.getTriggersDatabaseName())
42+
.select(new PrefixResourceSelector("my-trig"))
43+
.export(exportDir);
44+
verifyExportedResources(resources);
45+
46+
initializeExportDir();
47+
resources = new Exporter(manageClient)
3248
.withTriggersDatabase(appConfig.getTriggersDatabaseName())
3349
.select(new PropertiesResourceSelector(props))
3450
.export(exportDir);
51+
verifyExportedResources(resources);
52+
}
3553

54+
private void verifyExportedResources(ExportedResources resources) throws Exception {
3655
assertEquals(1, resources.getMessages().size());
3756
assertEquals("Each exported trigger has the 'id' field removed from it, as that field should be generated by MarkLogic.",
3857
resources.getMessages().get(0));

0 commit comments

Comments
 (0)