|
37 | 37 | import com.marklogic.client.DatabaseClient; |
38 | 38 | import com.marklogic.client.DatabaseClientFactory; |
39 | 39 | import com.marklogic.client.DatabaseClientFactory.Authentication; |
| 40 | +import com.marklogic.client.Transaction; |
40 | 41 | import com.marklogic.client.admin.ExtensionMetadata; |
41 | 42 | import com.marklogic.client.admin.TransformExtensionsManager; |
42 | 43 | import com.marklogic.client.document.DocumentPage; |
@@ -185,6 +186,91 @@ public void testBulkLoadWithXQueryTransform() throws Exception { |
185 | 186 | assertEquals("document count", 102,count); |
186 | 187 |
|
187 | 188 | } |
| 189 | + |
| 190 | + /* This test is similar to testBulkLoadWithXQueryTransform and is used to validate Git Issue 396. |
| 191 | + * |
| 192 | + * Verify that a ServerTransform object is passed along when in transactions. |
| 193 | + */ |
| 194 | + |
| 195 | + @Test |
| 196 | + public void testBulkXQYTransformWithTrans() throws Exception { |
| 197 | + |
| 198 | + TransformExtensionsManager transMgr = |
| 199 | + client.newServerConfigManager().newTransformExtensionsManager(); |
| 200 | + Transaction tRollback = client.openTransaction(); |
| 201 | + ExtensionMetadata metadata = new ExtensionMetadata(); |
| 202 | + metadata.setTitle("Adding attribute xquery Transform"); |
| 203 | + metadata.setDescription("This plugin transforms an XML document by adding attribute to root node"); |
| 204 | + metadata.setProvider("MarkLogic"); |
| 205 | + metadata.setVersion("0.1"); |
| 206 | + // get the transform file |
| 207 | + File transformFile = new File("src/test/java/com/marklogic/client/functionaltest/transforms/add-attr-xquery-transform.xqy"); |
| 208 | + FileHandle transformHandle = new FileHandle(transformFile); |
| 209 | + transMgr.writeXQueryTransform("add-attr-xquery-transform", transformHandle, metadata); |
| 210 | + ServerTransform transform = new ServerTransform("add-attr-xquery-transform"); |
| 211 | + transform.put("name", "Lang"); |
| 212 | + transform.put("value", "English"); |
| 213 | + int count=1; |
| 214 | + XMLDocumentManager docMgr = client.newXMLDocumentManager(); |
| 215 | + HashMap<String,String> map= new HashMap<String,String>(); |
| 216 | + DocumentWriteSet writesetRollback = docMgr.newWriteSet(); |
| 217 | + // Verify rollback with a smaller number of documents. |
| 218 | + for(int i = 0;i<12;i++){ |
| 219 | + |
| 220 | + writesetRollback.add(DIRECTORY+"fooWithTrans"+i+".xml", new DOMHandle(getDocumentContent("This is so foo"+i))); |
| 221 | + map.put(DIRECTORY+"fooWithTrans"+i+".xml", convertXMLDocumentToString(getDocumentContent("This is so foo"+i))); |
| 222 | + if(count%10 == 0){ |
| 223 | + docMgr.write(writesetRollback, transform, tRollback); |
| 224 | + writesetRollback = docMgr.newWriteSet(); |
| 225 | + } |
| 226 | + count++; |
| 227 | + } |
| 228 | + if(count%10 > 0){ |
| 229 | + docMgr.write(writesetRollback, transform, tRollback); |
| 230 | + } |
| 231 | + String uris[] = new String[102]; |
| 232 | + for(int i =0;i<102;i++){ |
| 233 | + uris[i]=DIRECTORY+"fooWithTrans"+i+".xml"; |
| 234 | + } |
| 235 | + |
| 236 | + try { |
| 237 | + // Verify rollback on DocumentManager write method with transform. |
| 238 | + tRollback.rollback(); |
| 239 | + DocumentPage pageRollback = docMgr.read(uris); |
| 240 | + assertEquals("Document count is not zero. Transaction did not rollback", 0, pageRollback.size()); |
| 241 | + |
| 242 | + // Perform write with a commit. |
| 243 | + Transaction tCommit = client.openTransaction(); |
| 244 | + DocumentWriteSet writeset = docMgr.newWriteSet(); |
| 245 | + for(int i =0;i<102;i++){ |
| 246 | + |
| 247 | + writeset.add(DIRECTORY+"fooWithTrans"+i+".xml", new DOMHandle(getDocumentContent("This is so foo"+i))); |
| 248 | + map.put(DIRECTORY+"fooWithTrans"+i+".xml", convertXMLDocumentToString(getDocumentContent("This is so foo"+i))); |
| 249 | + if(count%BATCH_SIZE == 0){ |
| 250 | + docMgr.write(writeset, transform, tCommit); |
| 251 | + writeset = docMgr.newWriteSet(); |
| 252 | + } |
| 253 | + count++; |
| 254 | + } |
| 255 | + if(count%BATCH_SIZE > 0){ |
| 256 | + docMgr.write(writeset, transform, tCommit); |
| 257 | + } |
| 258 | + tCommit.commit(); |
| 259 | + count=0; |
| 260 | + DocumentPage page = docMgr.read(uris); |
| 261 | + DOMHandle dh = new DOMHandle(); |
| 262 | + while(page.hasNext()){ |
| 263 | + DocumentRecord rec = page.next(); |
| 264 | + rec.getContent(dh); |
| 265 | + assertTrue("Element has attribure ? :",dh.get().getElementsByTagName("foo").item(0).hasAttributes()); |
| 266 | + count++; |
| 267 | + } |
| 268 | + }catch(Exception e) { |
| 269 | + System.out.println(e.getMessage());throw e; |
| 270 | + } |
| 271 | + assertEquals("document count", 102,count); |
| 272 | + } |
| 273 | + |
188 | 274 | @Test |
189 | 275 | public void testBulkReadWithXQueryTransform() throws Exception { |
190 | 276 |
|
|
0 commit comments