Skip to content

Commit 4f15ab0

Browse files
committed
Adding changes to sort uris.
1 parent ad8d776 commit 4f15ab0

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

marklogic-client-api/src/main/java/com/marklogic/client/document/DocumentWriteOperation.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* {@link DocumentWriteSet#add add}, {@link DocumentWriteSet#addDefault addDefault}, or
2828
* {@link DocumentWriteSet#disableDefault disableDefault}.
2929
*/
30-
public interface DocumentWriteOperation {
30+
public interface DocumentWriteOperation extends Comparable<DocumentWriteOperation> {
3131
public enum OperationType {
3232
/** This write operation (REST API mime part) sets the defaults for the
3333
* rest of the request.
@@ -139,6 +139,10 @@ public String getTemporalDocumentURI() {
139139
return null;
140140
}
141141

142+
@Override
143+
public int compareTo(DocumentWriteOperation o) {
144+
return getUri().compareTo(o.getUri());
145+
}
142146
}
143147
final class WrapperImpl {
144148
private DocumentUriMaker docUriMaker;

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

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,24 @@
3030

3131
public class DocumentWriteSetImpl implements Set<DocumentWriteOperation>,DocumentWriteSet {
3232

33-
final private static String SET_TYPE = System.getProperty("com.marklogic.client.DocumentWriteSet.type", "sorted");
34-
private Set<DocumentWriteOperation> operations;
33+
private List<DocumentWriteOperation> operations;
34+
private int metadataCount;
3535

3636
DocumentWriteSetImpl(){
37-
setOperations(SET_TYPE);
38-
37+
operations = new ArrayList<>();
38+
metadataCount = 0;
3939
}
4040
@Override
4141
public DocumentWriteSet addDefault(DocumentMetadataWriteHandle metadataHandle) {
42+
this.metadataCount++;
4243
add(new DocumentWriteOperationImpl(OperationType.METADATA_DEFAULT,
4344
null, metadataHandle, null));
4445
return this;
4546
}
4647

4748
@Override
4849
public DocumentWriteSet disableDefault() {
50+
this.metadataCount++;
4951
add(new DocumentWriteOperationImpl(OperationType.DISABLE_METADATA_DEFAULT,
5052
null, new StringHandle("{ }").withFormat(Format.JSON), null));
5153
return this;
@@ -159,6 +161,8 @@ public boolean contains(Object o) {
159161

160162
@Override
161163
public Iterator<DocumentWriteOperation> iterator() {
164+
if(metadataCount <=1)
165+
Collections.sort(operations);
162166
return operations.iterator();
163167
}
164168

@@ -207,14 +211,4 @@ public void clear() {
207211
operations.clear();
208212
}
209213

210-
private void setOperations(String SET_TYPE) {
211-
212-
if(SET_TYPE.equals("sorted")) {
213-
this.operations = new TreeSet<DocumentWriteOperation>();
214-
} else if(SET_TYPE.equals("unsorted")) {
215-
this.operations = new LinkedHashSet<DocumentWriteOperation>();
216-
} else {
217-
throw new IllegalStateException("SET_TYPE should be either sorted or unsorted");
218-
}
219-
}
220214
}

0 commit comments

Comments
 (0)