Skip to content

Commit a2f0d40

Browse files
committed
#505. need to upgrade again when 3.1 final is released.
1 parent 821a053 commit a2f0d40

File tree

42 files changed

+695
-906
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+695
-906
lines changed

marklogic-data-hub/build.gradle

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
id 'java'
44
id 'maven-publish'
55
id 'com.jfrog.bintray' version '1.7.2'
6-
id 'com.marklogic.ml-gradle' version '2.8.0'
6+
id 'com.marklogic.ml-gradle' version '3.1-alpha1'
77
id 'com.moowork.node' version '1.1.1'
88
}
99

@@ -24,12 +24,12 @@ ext.junitPlatformVersion = '1.0.0-RC3'
2424
ext.junitJupiterVersion = '5.0.0-RC3'
2525

2626
dependencies {
27-
compile 'com.marklogic:marklogic-client-api:4.0.1'
28-
compile('com.marklogic:ml-javaclient-util:4.0.alpha4') {
29-
exclude group: 'com.marklogic', module: 'marklogic-xcc'
30-
}
27+
compile 'com.marklogic:marklogic-client-api:4.0.2'
28+
compile('com.marklogic:ml-javaclient-util:3.1-alpha2')
3129
compile("com.marklogic:mlcp-util:0.3.0")
32-
compile 'com.marklogic:ml-app-deployer:2.8.0'
30+
compile ('com.marklogic:ml-app-deployer:3.1-alpha1') {
31+
exclude group: 'com.marklogic', module: 'ml-javaclient-util'
32+
}
3333
compile 'commons-io:commons-io:2.4'
3434
compile 'org.apache.commons:commons-text:1.1'
3535

@@ -114,7 +114,8 @@ if (!(
114114
gradle.startParameter.taskNames*.toLowerCase().contains("test") ||
115115
gradle.startParameter.taskNames*.toLowerCase().contains("publishplugins") ||
116116
gradle.startParameter.taskNames*.toLowerCase().contains("publishtomavenlocal") ||
117-
gradle.startParameter.taskNames*.toLowerCase().contains("bintrayUpload")
117+
gradle.startParameter.taskNames*.toLowerCase().contains("bintrayUpload") ||
118+
project.hasProperty('skipui')
118119
)
119120
) {
120121
processResources.dependsOn copyUIAssets

marklogic-data-hub/src/main/java/com/marklogic/client/datamovement/impl/DataMovementServices.java

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,17 @@
1515
*/
1616
package com.marklogic.client.datamovement.impl;
1717

18-
import java.util.ArrayList;
19-
import java.util.UUID;
20-
2118
import com.fasterxml.jackson.databind.JsonNode;
2219
import com.marklogic.client.DatabaseClient;
20+
import com.marklogic.client.datamovement.*;
21+
import com.marklogic.client.datamovement.JobTicket.JobType;
2322
import com.marklogic.client.impl.DatabaseClientImpl;
2423
import com.marklogic.client.io.JacksonHandle;
25-
import com.marklogic.client.datamovement.Batcher;
26-
import com.marklogic.client.datamovement.JobTicket;
27-
import com.marklogic.client.datamovement.JobTicket.JobType;
28-
import com.marklogic.client.datamovement.QueryBatcher;
29-
import com.marklogic.client.datamovement.WriteBatcher;
30-
import com.marklogic.client.datamovement.JobReport;
31-
import com.marklogic.client.datamovement.impl.ForestConfigurationImpl;
24+
25+
import java.util.ArrayList;
3226
import java.util.List;
27+
import java.util.UUID;
28+
import java.util.concurrent.ConcurrentHashMap;
3329

3430
public class DataMovementServices {
3531
private DatabaseClient client;
@@ -55,27 +51,48 @@ public ForestConfigurationImpl readForestConfig() {
5551
String host = forestNode.get("host").asText();
5652
String openReplicaHost = null;
5753
if ( forestNode.get("openReplicaHost") != null ) openReplicaHost = forestNode.get("openReplicaHost").asText();
54+
String requestHost = null;
55+
if ( forestNode.get("requestHost") != null ) requestHost = forestNode.get("requestHost").asText();
5856
String alternateHost = null;
5957
if ( forestNode.get("alternateHost") != null ) alternateHost = forestNode.get("alternateHost").asText();
58+
// Since we added the forestinfo end point to populate both alternateHost and requestHost
59+
// in case we have a requestHost so that we don't break the existing API code, we will make the
60+
// alternateHost as null if both alternateHost and requestHost is set.
61+
if ( requestHost != null && alternateHost != null )
62+
alternateHost = null;
6063
boolean isUpdateable = "all".equals(forestNode.get("updatesAllowed").asText());
6164
boolean isDeleteOnly = false; // TODO: get this for real after we start using a REST endpoint
62-
forests.add(new ForestImpl(host, alternateHost, openReplicaHost, database, name, id, isUpdateable, isDeleteOnly));
65+
forests.add(new ForestImpl(host, openReplicaHost, requestHost, alternateHost, database, name, id, isUpdateable, isDeleteOnly));
6366
}
6467

6568
return new ForestConfigurationImpl(forests.toArray(new ForestImpl[forests.size()]));
6669
}
6770

68-
public JobTicket startJob(WriteBatcher batcher) {
69-
JobTicket jobTicket = new JobTicketImpl(generateJobId(), JobTicket.JobType.WRITE_BATCHER)
71+
public JobTicket startJob(WriteBatcher batcher, ConcurrentHashMap<String, JobTicket> activeJobs) {
72+
String jobId = batcher.getJobId() != null ? batcher.getJobId() : generateJobId();
73+
if (batcher.getJobId() == null && ! batcher.isStarted() ) batcher.withJobId(jobId);
74+
if (!batcher.isStarted() && activeJobs.containsKey(jobId)) {
75+
throw new DataMovementException(
76+
"Cannot start the batcher because the given job Id already exists in the active jobs", null);
77+
}
78+
JobTicket jobTicket = new JobTicketImpl(jobId, JobTicket.JobType.WRITE_BATCHER)
7079
.withWriteBatcher((WriteBatcherImpl) batcher);
7180
((WriteBatcherImpl) batcher).start(jobTicket);
81+
activeJobs.put(jobId, jobTicket);
7282
return jobTicket;
7383
}
7484

75-
public JobTicket startJob(QueryBatcher batcher) {
76-
JobTicket jobTicket = new JobTicketImpl(generateJobId(), JobTicket.JobType.QUERY_BATCHER)
85+
public JobTicket startJob(QueryBatcher batcher, ConcurrentHashMap<String, JobTicket> activeJobs) {
86+
String jobId = batcher.getJobId() != null ? batcher.getJobId() : generateJobId();
87+
if (batcher.getJobId() == null) batcher.withJobId(jobId);
88+
if (!batcher.isStarted() && activeJobs.containsKey(jobId)) {
89+
throw new DataMovementException(
90+
"Cannot start the batcher because the given job Id already exists in the active jobs", null);
91+
}
92+
JobTicket jobTicket = new JobTicketImpl(jobId, JobTicket.JobType.QUERY_BATCHER)
7793
.withQueryBatcher((QueryBatcherImpl) batcher);
7894
((QueryBatcherImpl) batcher).start(jobTicket);
95+
activeJobs.put(jobId, jobTicket);
7996
return jobTicket;
8097
}
8198

@@ -91,23 +108,25 @@ public JobReport getJobReport(JobTicket ticket) {
91108
return null;
92109
}
93110

94-
public void stopJob(JobTicket ticket) {
111+
public void stopJob(JobTicket ticket, ConcurrentHashMap<String, JobTicket> activeJobs) {
95112
if ( ticket instanceof JobTicketImpl ) {
96113
JobTicketImpl ticketImpl = (JobTicketImpl) ticket;
97114
if ( ticketImpl.getJobType() == JobType.WRITE_BATCHER ) {
98115
ticketImpl.getWriteBatcher().stop();
99116
} else if ( ticketImpl.getJobType() == JobType.QUERY_BATCHER ) {
100117
ticketImpl.getQueryBatcher().stop();
101118
}
119+
activeJobs.remove(ticket.getJobId());
102120
}
103121
}
104122

105-
public void stopJob(Batcher batcher) {
123+
public void stopJob(Batcher batcher, ConcurrentHashMap<String, JobTicket> activeJobs) {
106124
if ( batcher instanceof QueryBatcherImpl ) {
107125
((QueryBatcherImpl) batcher).stop();
108126
} else if ( batcher instanceof WriteBatcherImpl ) {
109127
((WriteBatcherImpl) batcher).stop();
110128
}
129+
if (batcher.getJobId() != null) activeJobs.remove(batcher.getJobId());
111130
}
112131

113132
private String generateJobId() {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.marklogic.com.marklogic.client.ext.file;
2+
3+
import com.marklogic.client.ext.file.DocumentFile;
4+
import com.marklogic.client.ext.file.DocumentFileProcessor;
5+
import com.marklogic.client.ext.helper.FilenameUtil;
6+
import com.marklogic.client.ext.helper.LoggingObject;
7+
import org.springframework.core.io.Resource;
8+
import org.springframework.util.FileCopyUtils;
9+
10+
import java.io.IOException;
11+
import java.util.UUID;
12+
13+
public class CacheBusterDocumentFileProcessor extends LoggingObject implements DocumentFileProcessor {
14+
15+
@Override
16+
public DocumentFile processDocumentFile(DocumentFile documentFile) {
17+
String text = documentFile.getModifiedContent();
18+
if (text == null) {
19+
Resource resource = documentFile.getResource();
20+
if (resource != null) {
21+
try {
22+
text = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()));
23+
} catch (IOException ie) {
24+
logger.warn("Unable to replace tokens in file: " + documentFile.getUri() + "; cause: " + ie.getMessage());
25+
}
26+
}
27+
}
28+
if (text != null) {
29+
Resource resource = documentFile.getResource();
30+
String comment = "";
31+
if (FilenameUtil.isJavascriptFile(resource.getFilename())) {
32+
comment = "// cache buster: " + UUID.randomUUID().toString() + "\n";
33+
} else if (FilenameUtil.isXqueryFile(resource.getFilename())) {
34+
comment = "(: cache buster: " + UUID.randomUUID().toString() + " :)\n";
35+
}
36+
37+
text = comment + text;
38+
documentFile.setModifiedContent(text);
39+
}
40+
return documentFile;
41+
}
42+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.marklogic.com.marklogic.client.ext.modulesloader.impl;
2+
3+
import com.marklogic.client.ext.modulesloader.Modules;
4+
import com.marklogic.client.ext.modulesloader.impl.BaseModulesFinder;
5+
6+
public class EntityDefModulesFinder extends BaseModulesFinder {
7+
8+
@Override
9+
protected Modules findModulesWithResolvedBaseDir(String baseDir) {
10+
Modules modules = new Modules();
11+
modules.setAssets(findResources(baseDir, "*.entity.json"));
12+
return modules;
13+
}
14+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.marklogic.com.marklogic.client.ext.modulesloader.impl;
2+
3+
import com.marklogic.client.ext.modulesloader.Modules;
4+
import com.marklogic.client.ext.modulesloader.impl.BaseModulesFinder;
5+
6+
public class SearchOptionsFinder extends BaseModulesFinder {
7+
@Override
8+
protected Modules findModulesWithResolvedBaseDir(String baseDir) {
9+
Modules modules = new Modules();
10+
addOptions(modules, baseDir);
11+
return modules;
12+
}
13+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.marklogic.com.marklogic.client.ext.modulesloader.impl;
2+
3+
import com.marklogic.client.ext.modulesloader.Modules;
4+
import com.marklogic.client.ext.modulesloader.ModulesFinder;
5+
import com.marklogic.client.ext.modulesloader.impl.BaseModulesFinder;
6+
import org.springframework.core.io.UrlResource;
7+
8+
import java.net.MalformedURLException;
9+
import java.util.Arrays;
10+
11+
public class UserModulesFinder extends BaseModulesFinder implements ModulesFinder {
12+
13+
@Override
14+
protected Modules findModulesWithResolvedBaseDir(String baseDir) {
15+
Modules modules = new Modules();
16+
try {
17+
modules.setAssetDirectories(Arrays.asList(new UrlResource(baseDir)));
18+
} catch (MalformedURLException e) {
19+
throw new RuntimeException(e);
20+
}
21+
return modules;
22+
}
23+
}

marklogic-data-hub/src/main/java/com/marklogic/hub/DataHub.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,33 +38,20 @@
3838
import com.marklogic.hub.deploy.commands.*;
3939
import com.marklogic.hub.deploy.util.HubDeployStatusListener;
4040
import com.marklogic.hub.error.ServerValidationException;
41-
import com.marklogic.hub.scaffold.Scaffolding;
42-
import com.marklogic.hub.util.JsonXor;
4341
import com.marklogic.mgmt.ManageClient;
4442
import com.marklogic.mgmt.admin.AdminManager;
45-
import com.marklogic.mgmt.appservers.ServerManager;
46-
import com.marklogic.mgmt.databases.DatabaseManager;
43+
import com.marklogic.mgmt.resource.appservers.ServerManager;
44+
import com.marklogic.mgmt.resource.databases.DatabaseManager;
4745
import com.marklogic.rest.util.Fragment;
4846
import com.marklogic.rest.util.ResourcesFragment;
49-
import org.apache.commons.io.FileUtils;
5047
import org.slf4j.Logger;
5148
import org.slf4j.LoggerFactory;
5249
import org.springframework.core.io.Resource;
5350
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
5451
import org.springframework.core.io.support.ResourcePatternResolver;
55-
import org.springframework.util.FileCopyUtils;
56-
import org.springframework.web.client.ResourceAccessException;
57-
58-
import java.io.File;
59-
import java.io.FileOutputStream;
6052
import java.io.IOException;
61-
import java.nio.file.*;
62-
import java.nio.file.attribute.BasicFileAttributes;
63-
import java.text.DateFormat;
64-
import java.text.ParseException;
6553
import java.text.SimpleDateFormat;
6654
import java.util.*;
67-
import java.util.regex.Pattern;
6855

6956
public class DataHub {
7057

marklogic-data-hub/src/main/java/com/marklogic/hub/FlowManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ public List<String> getLegacyFlows() {
268268
return oldFlows;
269269
}
270270

271-
public List<String> updateLegacyFlows(String fromVersion) throws IOException {
271+
public List<String> updateLegacyFlows(String fromVersion) {
272272

273273
Scaffolding scaffolding = new Scaffolding(hubConfig.getProjectDir(), hubConfig.newFinalClient());
274274

marklogic-data-hub/src/main/java/com/marklogic/hub/HubConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import com.marklogic.appdeployer.DefaultAppConfigFactory;
2222
import com.marklogic.client.DatabaseClient;
2323
import com.marklogic.client.DatabaseClientFactory;
24-
import com.marklogic.client.helper.DatabaseClientConfig;
24+
import com.marklogic.client.ext.DatabaseClientConfig;
2525
import com.marklogic.mgmt.ManageClient;
2626
import com.marklogic.mgmt.ManageConfig;
2727
import com.marklogic.mgmt.admin.AdminConfig;

0 commit comments

Comments
 (0)