@Test /** Avoid regression on https://github.com/marklogic/java-client-api/issues/172 */ public void test_172() { ResourceExtensionsManager extensionMgr = Common.adminClient.newServerConfigManager().newResourceExtensionsManager(); Common.adminClient.release(); // since we released the existing connection, clear it out Common.adminClient = null; String expectedMessage = "You cannot use this connected object anymore--connection has already been released"; try { extensionMgr.writeServices(ResourceExtensionsTest.RESOURCE_NAME, null, null); } catch (IllegalStateException e) { assertEquals("Wrong error", expectedMessage, e.getMessage()); } try { extensionMgr.readServices(ResourceExtensionsTest.RESOURCE_NAME, new StringHandle()); } catch (IllegalStateException e) { assertEquals("Wrong error", expectedMessage, e.getMessage()); } try { extensionMgr.listServices(new DOMHandle()); } catch (IllegalStateException e) { assertEquals("Wrong error", expectedMessage, e.getMessage()); } try { extensionMgr.deleteServices(ResourceExtensionsTest.RESOURCE_NAME); } catch (IllegalStateException e) { assertEquals("Wrong error", expectedMessage, e.getMessage()); } }
JsonNode resourceExtensions = resourceExtensionsManager.listServices(new JacksonHandle()).get(); resourceExtensions.findValuesAsText("name").forEach( x -> { if (!services.contains(x)) { resourceExtensionsManager.deleteServices(x);
Common.adminClient.newServerConfigManager().newResourceExtensionsManager(); extensionMgr.writeServices( ResourceExtensionsTest.RESOURCE_NAME, new StringHandle().withFormat(Format.TEXT).with(resourceServices), assertXpathEvaluatesTo("true", "/deleted-doc/param", result); extensionMgr.deleteServices(ResourceExtensionsTest.RESOURCE_NAME);
@Test /** Avoid regression on https://github.com/marklogic/java-client-api/issues/761 */ public void test_issue_761() { DatabaseClient client = Common.newClient("Documents"); try { client.newServerConfigManager().newResourceExtensionsManager() .listServices(new DOMHandle()); } finally { client.release(); } }
/** * * @param r * @param metadata * @param methodParams * @return */ public Resource installService(Resource r, final ExtensionMetadata metadata, final MethodParameters... methodParams) { if (!hasFileBeenModified(r) || ignoreResource(r)) { return null; } final ResourceExtensionsManager extMgr = client.newServerConfigManager().newResourceExtensionsManager(); final String resourceName = getExtensionNameFromFile(r); if (metadata.getTitle() == null) { metadata.setTitle(resourceName + " resource extension"); } logger.info(String.format("Loading %s resource extension from file %s", resourceName, r.getFilename())); StringHandle h = new StringHandle(readAndReplaceTokens(r)); executeTask(() -> extMgr.writeServices(resourceName, h, metadata, methodParams)); updateTimestamp(r); return r; }
@After public void tearDown() throws Exception { resourceMgr.deleteServices("simpleJSResourceModule"); client.release(); }
@Test public void test1GetAllResourceServices() throws KeyManagementException, NoSuchAlgorithmException, Exception { JacksonHandle jh = new JacksonHandle(); resourceMgr.listServices(jh); assertEquals("Format on Handle", "JSON", jh.getFormat().name()); assertEquals("Mime Type on Handle", "application/json", jh.getMimetype()); String expectedList = "{\"resources\":{\"resource\":[{\"name\":\"simpleJSResourceModule\", \"source-format\":\"javascript\", \"description\":\"Testing resource extension for java script\", \"version\":\"1.0\", \"title\":\"BasicJSTest\", \"methods\":{\"method\":[{\"method-name\":\"get\", \"parameter\":[{\"parameter-name\":\"my-uri\", \"parameter-type\":\"xs:string?\"}]}, {\"method-name\":\"post\"}, {\"method-name\":\"put\"}, {\"method-name\":\"delete\"}]}, \"resource-source\":\"/v1/resources/simpleJSResourceModule\"}]}}"; JSONAssert.assertEquals(expectedList, jh.get().toString(), false); TestJSExtension tjs = new TestJSExtension(client); String expectedResponse = "{\"response\":[200, \"OK\"]}"; JSONAssert.assertEquals(expectedResponse, tjs.putJSON("helloJS.json"), false); String expAftrPut = "{\"argument1\":\"helloJS.json\", \"argument2\":\"Earth\",\"database-name\":\"TestJSResourceExtensionDB\", \"document-count\":1, \"content\":\"This is a JSON document\", \"document-content\":{\"argument1\":\"hello\", \"argument2\":\"Earth\", \"content\":\"This is a JSON document\", \"response\":[200, \"OK\"], \"outputTypes\":\"application/json\"}, \"response\":[200, \"OK\"], \"outputTypes\":[\"application/json\"]}"; JSONAssert.assertEquals(expAftrPut, tjs.getJSON("helloJS.json"), false); JSONAssert.assertEquals(expectedResponse, tjs.postJSON("helloJS.json"), false); String expAftrPost = "{\"argument1\":\"helloJS.json\", \"argument2\":\"Earth\", \"document-count\":1, \"content\":\"This is a JSON document\", \"document-content\":{\"argument1\":\"hello\", \"argument2\":\"Earth\", \"content\":\"This is a JSON document\", \"array\":[1, 2, 3], \"response\":[200, \"OK\"], \"outputTypes\":\"application/json\"}, \"response\":[200, \"OK\"], \"outputTypes\":[\"application/json\"]}"; JSONAssert.assertEquals(expAftrPost, tjs.getJSON("helloJS.json"), false); String expected = "{\"argument1\":\"helloJS.json\", \"argument2\":\"Earth\", \"document-count\":0, \"content\":\"This is a JSON document\", \"document-content\":null, \"response\":[200, \"OK\"], \"outputTypes\":[\"application/json\"]}"; JSONAssert.assertEquals(expectedResponse, tjs.deleteJSON("helloJS.json"), false); JSONAssert.assertEquals(expected, tjs.getJSON("helloJS.json"), false); }
@Before public void setUp() throws KeyManagementException, NoSuchAlgorithmException, Exception { int restPort = getRestServerPort(); String appServerHostname = getRestAppServerHostName(); client = getDatabaseClientOnDatabase(appServerHostname, restPort, dbName, "eval-user", "x", getConnType()); resourceMgr = client.newServerConfigManager().newResourceExtensionsManager(); ExtensionMetadata resextMetadata = new ExtensionMetadata(); resextMetadata.setTitle("BasicJSTest"); resextMetadata.setDescription("Testing resource extension for java script"); System.out.println(resextMetadata.getScriptLanguage()); resextMetadata.setScriptLanguage(ScriptLanguage.JAVASCRIPT); System.out.println(resextMetadata.getScriptLanguage()); resextMetadata.setVersion("1.0"); MethodParameters getParams = new MethodParameters(MethodType.GET); getParams.add("my-uri", "xs:string?"); FileInputStream myStream = new FileInputStream("src/test/java/com/marklogic/client/functionaltest/data/JSResource.js"); InputStreamHandle handle = new InputStreamHandle(myStream); handle.set(myStream); resourceMgr.writeServices("simpleJSResourceModule", handle, resextMetadata, getParams); }
@Test public void testResourceServiceExtension() throws XpathException, SAXException, IOException { ResourceExtensionsManager extensionMgr = Common.adminClient.newServerConfigManager().newResourceExtensionsManager(); StringHandle handle = new StringHandle(); ExtensionMetadata metadata = makeMetadata(); MethodParameters[] params = makeParameters(); handle.set(resourceServices); extensionMgr.writeServices(RESOURCE_NAME, handle, metadata, params); extensionMgr.readServices(RESOURCE_NAME, handle); assertEquals("Failed to retrieve resource services", resourceServices, handle.get()); String result = extensionMgr.listServices(new StringHandle().withFormat(Format.XML), true).get(); assertNotNull("Failed to retrieve resource services list", result); assertTrue("List without resource", xpather.getMatchingNodes( "/rapi:resources/rapi:resource/rapi:name[string(.) = 'testresource']", XMLUnit.buildControlDocument(result) ).getLength() == 1); extensionMgr.deleteServices(RESOURCE_NAME); result = extensionMgr.readServices(RESOURCE_NAME, handle).get(); assertTrue("Failed to delete resource services", result == null); } }