Skip to content

Commit 1aef162

Browse files
committed
add support for ExtensionMetadata.ScriptLanguage so we can specify when we're registering a non-xquery resource extension
1 parent 2ca2f03 commit 1aef162

File tree

4 files changed

+36
-2
lines changed

4 files changed

+36
-2
lines changed

src/main/java/com/marklogic/client/DatabaseClient.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.marklogic.client.document.TextDocumentManager;
2525
import com.marklogic.client.document.XMLDocumentManager;
2626
import com.marklogic.client.extensions.ResourceManager;
27+
import com.marklogic.client.admin.ExtensionMetadata;
2728
import com.marklogic.client.query.QueryManager;
2829
import com.marklogic.client.alerting.RuleManager;
2930
import com.marklogic.client.util.RequestLogger;
@@ -118,6 +119,17 @@ public interface DatabaseClient {
118119
*/
119120
public <T extends ResourceManager> T init(String resourceName, T resourceManager);
120121

122+
/**
123+
* Initializes a manager for a extension resource.
124+
*
125+
* @param resourceName the name of the extension resource
126+
* @param resourceManager the manager for the extension resource
127+
* @param scriptLanguage the script language for the extension resource, either XQUERY (default) or JAVASCRIPT
128+
* @return the initialized resource manager
129+
*/
130+
public <T extends ResourceManager> T init(String resourceName, T resourceManager,
131+
ExtensionMetadata.ScriptLanguage scriptLanguage);
132+
121133
/**
122134
* Creates a logger for document and query requests. To merge the logging output
123135
* with the output from other loggers, pass the output stream used by the other

src/main/java/com/marklogic/client/extensions/ResourceServices.java

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

1818
import java.util.Iterator;
1919

20+
import com.marklogic.client.admin.ExtensionMetadata;
2021
import com.marklogic.client.io.Format;
2122
import com.marklogic.client.util.RequestLogger;
2223
import com.marklogic.client.util.RequestParameters;
@@ -40,6 +41,12 @@ public interface ResourceServices {
4041
*/
4142
public String getResourceName();
4243

44+
/**
45+
* Returns the script language of the resource.
46+
* @return the script language
47+
*/
48+
public ExtensionMetadata.ScriptLanguage getScriptLanguage();
49+
4350
/**
4451
* Reads resource content by calling a GET service.
4552
* @param params the parameters for the call

src/main/java/com/marklogic/client/impl/DatabaseClientImpl.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
2222

23+
import com.marklogic.client.admin.ExtensionMetadata;
2324
import com.marklogic.client.document.BinaryDocumentManager;
2425
import com.marklogic.client.DatabaseClient;
2526
import com.marklogic.client.FailedRequestException;
@@ -127,6 +128,12 @@ public RequestLogger newLogger(OutputStream out) {
127128

128129
@Override
129130
public <T extends ResourceManager> T init(String resourceName, T resourceManager) {
131+
return init(resourceName, resourceManager, null);
132+
}
133+
134+
@Override
135+
public <T extends ResourceManager> T init(String resourceName, T resourceManager,
136+
ExtensionMetadata.ScriptLanguage scriptLanguage) {
130137
if (resourceManager == null)
131138
throw new IllegalArgumentException("Cannot initialize null resource manager");
132139
if (resourceName == null)
@@ -135,7 +142,7 @@ public <T extends ResourceManager> T init(String resourceName, T resourceManager
135142
throw new IllegalArgumentException("Cannot initialize resource manager with empty resource name");
136143

137144
((ResourceManagerImplementation) resourceManager).init(
138-
new ResourceServicesImpl(services,resourceName)
145+
new ResourceServicesImpl(services,resourceName,scriptLanguage)
139146
);
140147

141148
return resourceManager;

src/main/java/com/marklogic/client/impl/ResourceServicesImpl.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package com.marklogic.client.impl;
1717

18+
import com.marklogic.client.admin.ExtensionMetadata;
1819
import com.marklogic.client.Transaction;
1920
import com.marklogic.client.extensions.ResourceServices;
2021
import com.marklogic.client.io.marker.AbstractReadHandle;
@@ -28,11 +29,13 @@ class ResourceServicesImpl
2829
{
2930
private String resourceName;
3031
private RESTServices services;
32+
private ExtensionMetadata.ScriptLanguage scriptLanguage = ExtensionMetadata.XQUERY;
3133

32-
ResourceServicesImpl(RESTServices services, String resourceName) {
34+
ResourceServicesImpl(RESTServices services, String resourceName, ExtensionMetadata.ScriptLanguage scriptLanguage) {
3335
super();
3436
this.services = services;
3537
this.resourceName = resourceName;
38+
if ( scriptLanguage != null ) this.scriptLanguage = scriptLanguage;
3639
}
3740

3841
@Override
@@ -43,6 +46,11 @@ private String getResourcePath() {
4346
return "resources/"+getResourceName();
4447
}
4548

49+
@Override
50+
public ExtensionMetadata.ScriptLanguage getScriptLanguage() {
51+
return scriptLanguage;
52+
}
53+
4654
@Override
4755
public <R extends AbstractReadHandle> R get(RequestParameters params, R output) {
4856
return get(params, null, output);

0 commit comments

Comments
 (0)