Skip to content

Commit 3760071

Browse files
author
cgreer
committed
bug:21777 list query options in queryOptionsManager
git-svn-id: svn+ssh://svn.marklogic.com/project/engsvn/client-api/java/branches/b1_0@140992 62cac252-8da6-4816-9e9d-6dc37b19578c
1 parent 10e8851 commit 3760071

File tree

4 files changed

+54
-2
lines changed

4 files changed

+54
-2
lines changed

src/main/java/com/marklogic/client/admin/QueryOptionsManager.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package com.marklogic.client.admin;
1717

18+
import com.marklogic.client.io.StringHandle;
19+
import com.marklogic.client.io.marker.QueryOptionsListReadHandle;
1820
import com.marklogic.client.io.marker.QueryOptionsReadHandle;
1921
import com.marklogic.client.io.marker.QueryOptionsWriteHandle;
2022

@@ -52,5 +54,12 @@ public interface QueryOptionsManager {
5254
*/
5355
public void deleteOptions(String name);
5456

57+
/**
58+
* Retrieves the list of available named query options.
59+
* @param listHandle a handle for reading the list of name options
60+
* @return the handle populated with the names
61+
*/
62+
public <T extends QueryOptionsListReadHandle> T optionsList(T listHandle);
63+
5564

5665
}

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
*/
1616
package com.marklogic.client.impl;
1717

18+
import com.marklogic.client.Transaction;
1819
import com.marklogic.client.io.Format;
1920
import com.marklogic.client.admin.QueryOptionsManager;
21+
import com.marklogic.client.io.marker.QueryOptionsListReadHandle;
2022
import com.marklogic.client.io.marker.QueryOptionsReadHandle;
2123
import com.marklogic.client.io.marker.QueryOptionsWriteHandle;
2224

@@ -96,4 +98,26 @@ public void writeOptions(String name,
9698

9799
services.putValue(requestLogger, QUERY_OPTIONS_BASE, name, mimetype, queryOptionsBase);
98100
}
101+
102+
@Override
103+
public <T extends QueryOptionsListReadHandle> T optionsList(T optionsHandle) {
104+
HandleImplementation optionsBase = HandleAccessor.checkHandle(optionsHandle, "optionslist");
105+
106+
Format optionsFormat = optionsBase.getFormat();
107+
switch(optionsFormat) {
108+
case UNKNOWN:
109+
optionsFormat = Format.XML;
110+
break;
111+
case JSON:
112+
case XML:
113+
break;
114+
default:
115+
throw new UnsupportedOperationException("Only XML and JSON options list results are possible.");
116+
}
117+
118+
String mimetype = optionsFormat.getDefaultMimetype();
119+
120+
optionsBase.receiveContent(services.optionsList(optionsBase.receiveAs(), mimetype, null));
121+
return optionsHandle;
122+
}
99123
}

src/main/java/com/marklogic/client/query/QueryManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,10 +327,10 @@ public enum QueryView {
327327

328328
/**
329329
* Retrieves the list of available named query options.
330-
* @param valueHandle a handle for reading the list of name options
330+
* @param listHandle a handle for reading the list of name options
331331
* @return the handle populated with the names
332332
*/
333-
public <T extends QueryOptionsListReadHandle> T optionsList(T valueHandle);
333+
public <T extends QueryOptionsListReadHandle> T optionsList(T listHandle);
334334

335335
/**
336336
* Retrieves the list of available named query options.

src/test/java/com/marklogic/client/test/QueryOptionsListHandleTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333
import org.slf4j.LoggerFactory;
3434
import org.xml.sax.SAXException;
3535

36+
import com.marklogic.client.admin.QueryOptionsManager;
3637
import com.marklogic.client.io.QueryOptionsListHandle;
38+
import com.marklogic.client.io.StringHandle;
3739
import com.marklogic.client.query.QueryManager;
3840

3941
public class QueryOptionsListHandleTest {
@@ -74,6 +76,23 @@ public void serverOptionsList() throws IOException, ParserConfigurationException
7476
assertEquals("Map should contain two keys", map.size(), 2);
7577
assertEquals("photos should have this uri", map.get("photos"), "/v1/config/query/photos");
7678
}
79+
80+
@Test
81+
public void serverOptionsListRaw() throws IOException, ParserConfigurationException, SAXException {
82+
QueryManager queryMgr = Common.client.newQueryManager();
83+
QueryOptionsManager queryOptionsMgr = Common.client.newServerConfigManager().newQueryOptionsManager();
84+
85+
StringHandle results = queryMgr.optionsList(new StringHandle());
86+
assertNotNull(results);
87+
String resultsString = results.get();
88+
assertNotNull(resultsString);
89+
90+
StringHandle results2 = queryOptionsMgr.optionsList(new StringHandle());
91+
assertNotNull(results2);
92+
assertEquals(resultsString, results2.get());
93+
assertNotNull(resultsString);
94+
95+
}
7796

7897

7998
public class MyQueryOptionsListHandle extends QueryOptionsListHandle {

0 commit comments

Comments
 (0)