Skip to content

Commit c9444e9

Browse files
committed
Adding variable "canSort".
1 parent 2913253 commit c9444e9

File tree

2 files changed

+155
-8
lines changed

2 files changed

+155
-8
lines changed

marklogic-client-api/src/main/java/com/marklogic/client/impl/DocumentWriteSetImpl.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,30 @@
2727
import com.marklogic.client.io.marker.DocumentMetadataWriteHandle;
2828

2929
import java.util.*;
30+
import java.util.concurrent.atomic.AtomicBoolean;
3031

3132
public class DocumentWriteSetImpl implements Set<DocumentWriteOperation>,DocumentWriteSet {
3233

3334
private List<DocumentWriteOperation> operations;
34-
private int metadataCount;
35+
AtomicBoolean canSort;
3536

3637
DocumentWriteSetImpl(){
3738
operations = new ArrayList<>();
38-
metadataCount = 0;
39+
canSort = new AtomicBoolean(true);
3940
}
4041
@Override
4142
public DocumentWriteSet addDefault(DocumentMetadataWriteHandle metadataHandle) {
42-
this.metadataCount++;
43+
if(canSort.get() && operations.size() > 0)
44+
canSort = new AtomicBoolean(false);
4345
add(new DocumentWriteOperationImpl(OperationType.METADATA_DEFAULT,
4446
null, metadataHandle, null));
4547
return this;
4648
}
4749

4850
@Override
4951
public DocumentWriteSet disableDefault() {
50-
this.metadataCount++;
52+
if(canSort.get() && operations.size() > 0)
53+
canSort = new AtomicBoolean(false);
5154
add(new DocumentWriteOperationImpl(OperationType.DISABLE_METADATA_DEFAULT,
5255
null, new StringHandle("{ }").withFormat(Format.JSON), null));
5356
return this;
@@ -161,7 +164,7 @@ public boolean contains(Object o) {
161164

162165
@Override
163166
public Iterator<DocumentWriteOperation> iterator() {
164-
if(this.metadataCount <=1)
167+
if(canSort.get())
165168
Collections.sort(operations);
166169
return operations.iterator();
167170
}

marklogic-client-api/src/test/java/com/marklogic/client/test/document/DocumentWriteOperationTest.java

Lines changed: 147 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public static void setup() {
5353
}
5454

5555
@Test
56-
public void DocumentWriteSetImplTest() {
56+
public void DocumentWriteSetWithNoMetadataTest() {
5757

5858
DocumentWriteSet batch = textDocumentManager.newWriteSet();
5959

@@ -65,10 +65,9 @@ public void DocumentWriteSetImplTest() {
6565
batch.add("doc1.txt", doc1);
6666
batch.add("doc2.txt", doc2);
6767
batch.add("doc7.txt", doc7);
68-
batch.addDefault(defaultMetadata1);
6968

7069
List<String> list = new ArrayList<>();
71-
list.add(null);
70+
7271
list.add("doc1.txt");
7372
list.add("doc2.txt");
7473
list.add("doc3.txt");
@@ -150,6 +149,151 @@ public void DocumentWriteSetWithTwoMetadataTest() {
150149
textDocumentManager.readMetadata("doc8.txt", new DocumentMetadataHandle()).getQuality());
151150
}
152151

152+
@Test
153+
public void DocumentWriteSetWithOneMetadataTest() {
154+
155+
DocumentWriteSet batch = textDocumentManager.newWriteSet();
156+
157+
batch.addDefault(defaultMetadata1);
158+
batch.add("doc8.txt", doc8);
159+
batch.add("doc5.txt", doc5);
160+
batch.add("doc6.txt", doc6);
161+
batch.add("doc4.txt", doc4);
162+
batch.add("doc3.txt", doc3);
163+
batch.add("doc1.txt", doc1);
164+
batch.add("doc2.txt", doc2);
165+
batch.add("doc7.txt", doc7);
166+
167+
List<String> list = new ArrayList<>();
168+
list.add(null);
169+
list.add("doc1.txt");
170+
list.add("doc2.txt");
171+
list.add("doc3.txt");
172+
list.add("doc4.txt");
173+
list.add("doc5.txt");
174+
list.add("doc6.txt");
175+
list.add("doc7.txt");
176+
list.add("doc8.txt");
177+
int i = 0;
178+
179+
Iterator<DocumentWriteOperation> itr = batch.iterator();
180+
while(itr.hasNext()){
181+
assertEquals("Document uri not as expected", itr.next().getUri(), list.get(i));
182+
i++;
183+
}
184+
textDocumentManager.write(batch);
185+
}
186+
187+
@Test
188+
public void DocumentWriteSetWithOneMetadataTest_2() {
189+
190+
DocumentWriteSet batch = textDocumentManager.newWriteSet();
191+
192+
batch.add("doc8.txt", doc8);
193+
batch.add("doc5.txt", doc5);
194+
batch.add("doc6.txt", doc6);
195+
batch.addDefault(defaultMetadata1);
196+
batch.add("doc4.txt", doc4);
197+
batch.add("doc3.txt", doc3);
198+
batch.add("doc1.txt", doc1);
199+
batch.add("doc2.txt", doc2);
200+
batch.add("doc7.txt", doc7);
201+
202+
List<String> list = new ArrayList<>();
203+
204+
list.add("doc8.txt");
205+
list.add("doc5.txt");
206+
list.add("doc6.txt");
207+
list.add(null);
208+
list.add("doc4.txt");
209+
list.add("doc3.txt");
210+
list.add("doc1.txt");
211+
list.add("doc2.txt");
212+
list.add("doc7.txt");
213+
int i = 0;
214+
215+
Iterator<DocumentWriteOperation> itr = batch.iterator();
216+
while(itr.hasNext()){
217+
assertEquals("Document uri not as expected", itr.next().getUri(), list.get(i));
218+
i++;
219+
}
220+
textDocumentManager.write(batch);
221+
}
222+
223+
@Test
224+
public void DocumentWriteSetWithDisableMetadataTest() {
225+
226+
DocumentWriteSet batch = textDocumentManager.newWriteSet();
227+
228+
batch.disableDefault();
229+
batch.add("doc8.txt", doc8);
230+
batch.add("doc5.txt", doc5);
231+
batch.add("doc6.txt", doc6);
232+
batch.add("doc4.txt", doc4);
233+
batch.add("doc3.txt", doc3);
234+
batch.add("doc1.txt", doc1);
235+
batch.add("doc2.txt", doc2);
236+
batch.add("doc7.txt", doc7);
237+
238+
List<String> list = new ArrayList<>();
239+
240+
list.add(null);
241+
list.add("doc1.txt");
242+
list.add("doc2.txt");
243+
list.add("doc3.txt");
244+
list.add("doc4.txt");
245+
list.add("doc5.txt");
246+
list.add("doc6.txt");
247+
list.add("doc7.txt");
248+
list.add("doc8.txt");
249+
int i=0;
250+
251+
Iterator<DocumentWriteOperation> itr = batch.iterator();
252+
while(itr.hasNext()){
253+
assertEquals("Document uri not as expected", itr.next().getUri(), list.get(i));
254+
i++;
255+
}
256+
textDocumentManager.write(batch);
257+
}
258+
259+
@Test
260+
public void DocumentWriteSetWithDisableMetadataTest_2() {
261+
262+
DocumentWriteSet batch = textDocumentManager.newWriteSet();
263+
264+
265+
batch.add("doc8.txt", doc8);
266+
batch.add("doc5.txt", doc5);
267+
batch.add("doc6.txt", doc6);
268+
batch.add("doc4.txt", doc4);
269+
batch.disableDefault();
270+
batch.add("doc3.txt", doc3);
271+
batch.add("doc1.txt", doc1);
272+
batch.add("doc2.txt", doc2);
273+
batch.add("doc7.txt", doc7);
274+
275+
List<String> list = new ArrayList<>();
276+
277+
278+
list.add("doc8.txt");
279+
list.add("doc5.txt");
280+
list.add("doc6.txt");
281+
list.add("doc4.txt");
282+
list.add(null);
283+
list.add("doc3.txt");
284+
list.add("doc1.txt");
285+
list.add("doc2.txt");
286+
list.add("doc7.txt");
287+
int i=0;
288+
289+
Iterator<DocumentWriteOperation> itr = batch.iterator();
290+
while(itr.hasNext()){
291+
assertEquals("Document uri not as expected", itr.next().getUri(), list.get(i));
292+
i++;
293+
}
294+
textDocumentManager.write(batch);
295+
}
296+
153297
@AfterClass
154298
public static void cleanup() {
155299
QueryManager queryManager = Common.client.newQueryManager();

0 commit comments

Comments
 (0)