Skip to content

Commit 0200bc0

Browse files
author
ehennum
committed
buffering as BufferableHandle instead of AbstractWriteHandle #1110
1 parent 2750564 commit 0200bc0

File tree

8 files changed

+163
-225
lines changed

8 files changed

+163
-225
lines changed

marklogic-client-api/src/main/java/com/marklogic/client/dataservices/impl/CallManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.fasterxml.jackson.databind.JsonNode;
2020
import com.marklogic.client.DatabaseClient;
2121
import com.marklogic.client.SessionState;
22-
import com.marklogic.client.io.marker.AbstractWriteHandle;
22+
import com.marklogic.client.io.marker.BufferableHandle;
2323
import com.marklogic.client.io.marker.JSONWriteHandle;
2424
import org.w3c.dom.Document;
2525
import org.xml.sax.InputSource;
@@ -229,7 +229,7 @@ interface CallArgs {
229229
* @param value the value to assign to the parameter
230230
* @return the CallArgs object for chained building of the arguments
231231
*/
232-
CallArgs param(String name, AbstractWriteHandle value);
232+
CallArgs param(String name, BufferableHandle value);
233233
/**
234234
* Sets a node parameter of the data service endpoint by means of multiple handles.
235235
* Handles provide adapters for Java IO representations and are thus
@@ -241,7 +241,7 @@ interface CallArgs {
241241
* @param values the value to assign to the parameter
242242
* @return the CallArgs object for chained building of the arguments
243243
*/
244-
CallArgs param(String name, AbstractWriteHandle[] values);
244+
CallArgs param(String name, BufferableHandle[] values);
245245
/**
246246
* Sets a decimal parameter of the data service endpoint to a Java BigDecimal value.
247247
* @param name the name of the parameter

marklogic-client-api/src/main/java/com/marklogic/client/dataservices/impl/CallManagerImpl.java

Lines changed: 53 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -691,12 +691,12 @@ public String[] getAssignedParamNames() {
691691
}
692692

693693
@Override
694-
public CallArgs param(String name, AbstractWriteHandle value) {
694+
public CallArgs param(String name, BufferableHandle value) {
695695
ParamdefImpl paramdef = getParamdef(name);
696696
return addField(paramdef.getFielder().field(name, paramdef.isNullable(), value));
697697
}
698698
@Override
699-
public CallArgs param(String name, AbstractWriteHandle[] values) {
699+
public CallArgs param(String name, BufferableHandle[] values) {
700700
ParamdefImpl paramdef = getParamdef(name);
701701
return addField(paramdef.getFielder().field(name, paramdef.isNullable(), paramdef.isMultiple(), values));
702702
}
@@ -1003,11 +1003,11 @@ boolean isMultiple(String name, boolean multiple, Object[] values) {
10031003
}
10041004

10051005
// overridden where the Java input type is valid for the server data type
1006-
CallField field(String name, boolean nullable, AbstractWriteHandle value) {
1007-
throw new IllegalArgumentException("AbstractWriteHandle value not accepted for "+name+" parameter");
1006+
CallField field(String name, boolean nullable, BufferableHandle value) {
1007+
throw new IllegalArgumentException("BufferableHandle value not accepted for "+name+" parameter");
10081008
}
1009-
CallField field(String name, boolean nullable, boolean multiple, AbstractWriteHandle[] values) {
1010-
throw new IllegalArgumentException("AbstractWriteHandle values not accepted for "+name+" parameter");
1009+
CallField field(String name, boolean nullable, boolean multiple, BufferableHandle[] values) {
1010+
throw new IllegalArgumentException("BufferableHandle values not accepted for "+name+" parameter");
10111011
}
10121012
CallField field(String name, boolean nullable, BigDecimal value) {
10131013
throw new IllegalArgumentException("BigDecimal value not accepted for "+name+" parameter");
@@ -1226,29 +1226,22 @@ private static abstract class NodeFieldifier extends BaseFieldifier {
12261226
Format getFormat() {
12271227
return format;
12281228
}
1229-
AbstractWriteHandle format(AbstractWriteHandle value) {
1229+
BufferableHandle format(BufferableHandle value) {
12301230
return NodeConverter.withFormat(value, getFormat());
12311231
}
1232-
BufferableHandle[] formatAll(AbstractWriteHandle[] value) {
1233-
BufferableHandle[] bufferableHandles = new BufferableHandle[value.length];
1234-
for (int i=0; i<value.length; i++) {
1235-
if(!(value[i] instanceof BufferableHandle))
1236-
throw new IllegalArgumentException("AbstractWriteHandle value is not an instance of BufferableHandle.");
1237-
NodeConverter.withFormat(value[i], getFormat());
1238-
bufferableHandles[i] = (BufferableHandle) value[i];
1239-
}
1240-
return bufferableHandles;
1232+
BufferableHandle[] formatAll(BufferableHandle[] values) {
1233+
return NodeConverter.arrayWithFormat(values, getFormat());
12411234
}
1242-
Stream<? extends AbstractWriteHandle> formatAll(Stream<? extends AbstractWriteHandle> value) {
1235+
Stream<? extends BufferableHandle> formatAll(Stream<? extends BufferableHandle> value) {
12431236
return NodeConverter.streamWithFormat(value, getFormat());
12441237
}
12451238
@Override
1246-
CallField field(String name, boolean nullable, AbstractWriteHandle value) {
1239+
CallField field(String name, boolean nullable, BufferableHandle value) {
12471240
if (isEmpty(name, nullable, value)) return null;
12481241
return field(name, value);
12491242
}
12501243
@Override
1251-
CallField field(String name, boolean nullable, boolean multiple, AbstractWriteHandle[] values) {
1244+
CallField field(String name, boolean nullable, boolean multiple, BufferableHandle[] values) {
12521245
if (isEmpty(name, nullable, values)) return null;
12531246
return isMultiple(name, multiple, values) ? field(name, values) : field(name, values[0]);
12541247
}
@@ -1284,67 +1277,65 @@ CallField field(String name, boolean nullable, boolean multiple, InputStream[] v
12841277
}
12851278
@Override
12861279
<T> ParamFieldifier<T> fieldifierFor(String name, Class<T> type) {
1287-
return AbstractWriteHandle.class.isAssignableFrom(type) ? (ParamFieldifier<T>) new AbstractWriteHandlifier(name, this) :
1288-
byte[].class.isAssignableFrom(type) ? (ParamFieldifier<T>) new Bytesifier(name, this) :
1289-
File.class.isAssignableFrom(type) ? (ParamFieldifier<T>) new Filifier(name, this) :
1290-
InputStream.class.isAssignableFrom(type) ? (ParamFieldifier<T>) new InputStreamifier(name, this) :
1280+
return BufferableHandle.class.isAssignableFrom(type) ? (ParamFieldifier<T>) new BufferableHandlifier(name, this) :
1281+
byte[].class.isAssignableFrom(type) ? (ParamFieldifier<T>) new Bytesifier(name, this) :
1282+
File.class.isAssignableFrom(type) ? (ParamFieldifier<T>) new Filifier(name, this) :
1283+
InputStream.class.isAssignableFrom(type) ? (ParamFieldifier<T>) new InputStreamifier(name, this) :
12911284
super.fieldifierFor(name, type);
12921285
}
1293-
CallField formattedField(String name, AbstractWriteHandle value) {
1294-
if(!(value instanceof BufferableHandle))
1295-
throw new IllegalArgumentException("AbstractWriteHandle value is not an instance of BufferableHandle.");
1296-
return new BufferedSingleNodeCallField(name, (BufferableHandle) value);
1286+
CallField formattedField(String name, BufferableHandle value) {
1287+
return new BufferedSingleNodeCallField(name, value);
12971288
}
12981289
CallField formattedField(String name, BufferableHandle[] values) {
12991290
return new BufferedMultipleNodeCallField(name, values);
13001291
}
1301-
CallField formattedField(String name, Stream<? extends AbstractWriteHandle> values) {
1292+
CallField formattedField(String name, Stream<? extends BufferableHandle> values) {
13021293
return new UnbufferedMultipleNodeCallField(name, values);
13031294
}
13041295

1305-
CallField field(String name, AbstractWriteHandle value) {
1296+
CallField field(String name, BufferableHandle value) {
13061297
return formattedField(name, format(value));
13071298
}
1308-
CallField field(String name, AbstractWriteHandle[] values) {
1299+
CallField field(String name, BufferableHandle[] values) {
13091300
return formattedField(name, formatAll(values));
13101301
}
1311-
CallField field(String name, Stream<? extends AbstractWriteHandle> values) {
1302+
CallField field(String name, Stream<? extends BufferableHandle> values) {
13121303
return formattedField(name, formatAll(values));
13131304
}
13141305
CallField field(String name, byte[] value) {
13151306
return field(name, NodeConverter.BytesToHandle(value));
13161307
}
13171308
CallField field(String name, byte[][] values) {
1318-
return field(name, NodeConverter.BytesToHandle(Stream.of(values)));
1309+
return field(name, NodeConverter.BytesToBufferableHandle(values));
13191310
}
13201311
CallField field(String name, File value) {
13211312
return field(name, NodeConverter.FileToHandle(value));
13221313
}
13231314
CallField field(String name, File[] values) {
1324-
return field(name, NodeConverter.FileToHandle(values));
1315+
return field(name, NodeConverter.FileToBufferableHandle(values));
13251316
}
13261317
CallField field(String name, InputStream value) {
13271318
return field(name, NodeConverter.InputStreamToHandle(value));
13281319
}
13291320
CallField field(String name, InputStream[] values) {
1330-
return field(name, NodeConverter.InputStreamToHandle(values));
1321+
return field(name, NodeConverter.InputStreamToBufferableHandle(values));
13311322
}
1332-
private static class AbstractWriteHandlifier extends ParamFieldifier<AbstractWriteHandle> {
1323+
private static class BufferableHandlifier extends ParamFieldifier<BufferableHandle> {
13331324
private NodeFieldifier fieldifier;
1334-
AbstractWriteHandlifier(String name, NodeFieldifier fieldifier) {
1325+
BufferableHandlifier(String name, NodeFieldifier fieldifier) {
13351326
super(name);
13361327
this.fieldifier = fieldifier;
13371328
}
13381329
@Override
1339-
CallField field(AbstractWriteHandle value) {
1330+
CallField field(BufferableHandle value) {
13401331
return fieldifier.field(getName(), value);
13411332
}
13421333
@Override
1343-
CallField field(AbstractWriteHandle[] values) {
1334+
CallField field(BufferableHandle[] values) {
13441335
return fieldifier.field(getName(), values);
13451336
}
13461337
@Override
1347-
CallField field(Stream<AbstractWriteHandle> values) {
1338+
CallField field(Stream<BufferableHandle> values) {
13481339
return fieldifier.field(getName(), values);
13491340
}
13501341
}
@@ -1440,13 +1431,13 @@ CallField field(String name, Reader value) {
14401431
return field(name, NodeConverter.ReaderToHandle(value));
14411432
}
14421433
CallField field(String name, Reader[] values) {
1443-
return field(name, NodeConverter.ReaderToHandle(values));
1434+
return field(name, NodeConverter.ReaderToBufferableHandle(values));
14441435
}
14451436
CallField field(String name, String value) {
14461437
return field(name, NodeConverter.StringToHandle(value));
14471438
}
14481439
CallField field(String name, String[] values) {
1449-
return field(name, NodeConverter.StringToHandle(values));
1440+
return field(name, NodeConverter.StringToBufferableHandle(values));
14501441
}
14511442
private static class Readerfier extends ParamFieldifier<Reader> {
14521443
private CharacterNodeFieldifier fieldifier;
@@ -2179,16 +2170,16 @@ <T> ParamFieldifier<T> fieldifierFor(String name, Class<T> type) {
21792170
super.fieldifierFor(name, type);
21802171
}
21812172
CallField field(String name, JsonNode value) {
2182-
return formattedField(name, BaseProxy.JsonDocumentType.fromJsonNode(value));
2173+
return formattedField(name, NodeConverter.JsonNodeToHandle(value));
21832174
}
21842175
CallField field(String name, JsonNode[] values) {
2185-
return formattedField(name, BaseProxy.JsonDocumentType.fromJsonNode(values));
2176+
return formattedField(name, NodeConverter.JsonNodeToBufferableHandle(values));
21862177
}
21872178
CallField field(String name, JsonParser value) {
2188-
return formattedField(name, BaseProxy.JsonDocumentType.fromJsonParser(value));
2179+
return formattedField(name, NodeConverter.JsonParserToHandle(value));
21892180
}
21902181
CallField field(String name, JsonParser[] values) {
2191-
return formattedField(name, BaseProxy.JsonDocumentType.fromJsonParser(values));
2182+
return formattedField(name, NodeConverter.JsonParserToBufferableHandle(values));
21922183
}
21932184
private static class JsonNodeifier extends ParamFieldifier<JsonNode> {
21942185
private JsonDocumentFieldifier fieldifier;
@@ -2206,7 +2197,7 @@ CallField field(JsonNode[] values) {
22062197
}
22072198
@Override
22082199
CallField field(Stream<JsonNode> values) {
2209-
return fieldifier.formattedField(getName(), BaseProxy.JsonDocumentType.fromJsonNode(values));
2200+
return fieldifier.formattedField(getName(), NodeConverter.JsonNodeToHandle(values));
22102201
}
22112202
}
22122203
private static class JsonParserfiier extends ParamFieldifier<JsonParser> {
@@ -2225,7 +2216,7 @@ CallField field(JsonParser[] values) {
22252216
}
22262217
@Override
22272218
CallField field(Stream<JsonParser> values) {
2228-
return fieldifier.formattedField(getName(), BaseProxy.JsonDocumentType.fromJsonParser(values));
2219+
return fieldifier.formattedField(getName(), NodeConverter.JsonParserToHandle(values));
22292220
}
22302221
}
22312222
}
@@ -2308,34 +2299,34 @@ <T> ParamFieldifier<T> fieldifierFor(String name, Class<T> type) {
23082299
super.fieldifierFor(name, type);
23092300
}
23102301
CallField field(String name, Document value) {
2311-
return formattedField(name, BaseProxy.XmlDocumentType.fromDocument(value));
2302+
return formattedField(name, NodeConverter.DocumentToHandle(value));
23122303
}
23132304
CallField field(String name, Document[] values) {
2314-
return formattedField(name, BaseProxy.XmlDocumentType.fromDocument(values));
2305+
return formattedField(name, NodeConverter.DocumentToBufferableHandle(values));
23152306
}
23162307
CallField field(String name, InputSource value) {
2317-
return formattedField(name, BaseProxy.XmlDocumentType.fromInputSource(value));
2308+
return formattedField(name, NodeConverter.InputSourceToHandle(value));
23182309
}
23192310
CallField field(String name, InputSource[] values) {
2320-
return formattedField(name, BaseProxy.XmlDocumentType.fromInputSource(values));
2311+
return formattedField(name, NodeConverter.InputSourceToBufferableHandle(values));
23212312
}
23222313
CallField field(String name, Source value) {
2323-
return formattedField(name, BaseProxy.XmlDocumentType.fromSource(value));
2314+
return formattedField(name, NodeConverter.SourceToHandle(value));
23242315
}
23252316
CallField field(String name, Source[] values) {
2326-
return formattedField(name, BaseProxy.XmlDocumentType.fromSource(values));
2317+
return formattedField(name, NodeConverter.SourceToBufferableHandle(values));
23272318
}
23282319
CallField field(String name, XMLEventReader value) {
2329-
return formattedField(name, BaseProxy.XmlDocumentType.fromXMLEventReader(value));
2320+
return formattedField(name, NodeConverter.XMLEventReaderToHandle(value));
23302321
}
23312322
CallField field(String name, XMLEventReader[] values) {
2332-
return formattedField(name, BaseProxy.XmlDocumentType.fromXMLEventReader(values));
2323+
return formattedField(name, NodeConverter.XMLEventReaderToBufferableHandle(values));
23332324
}
23342325
CallField field(String name, XMLStreamReader value) {
2335-
return formattedField(name, BaseProxy.XmlDocumentType.fromXMLStreamReader(value));
2326+
return formattedField(name, NodeConverter.XMLStreamReaderToHandle(value));
23362327
}
23372328
CallField field(String name, XMLStreamReader[] values) {
2338-
return formattedField(name, BaseProxy.XmlDocumentType.fromXMLStreamReader(values));
2329+
return formattedField(name, NodeConverter.XMLStreamReaderToBufferableHandle(values));
23392330
}
23402331
private static class Documentifier extends ParamFieldifier<Document> {
23412332
private XmlDocumentFieldifier fieldifier;
@@ -2353,7 +2344,7 @@ CallField field(Document[] values) {
23532344
}
23542345
@Override
23552346
CallField field(Stream<Document> values) {
2356-
return fieldifier.formattedField(getName(), BaseProxy.XmlDocumentType.fromDocument(values));
2347+
return fieldifier.formattedField(getName(), NodeConverter.DocumentToHandle(values));
23572348
}
23582349
}
23592350
private static class InputSourcifier extends ParamFieldifier<InputSource> {
@@ -2372,7 +2363,7 @@ CallField field(InputSource[] values) {
23722363
}
23732364
@Override
23742365
CallField field(Stream<InputSource> values) {
2375-
return fieldifier.formattedField(getName(), BaseProxy.XmlDocumentType.fromInputSource(values));
2366+
return fieldifier.formattedField(getName(), NodeConverter.InputSourceToHandle(values));
23762367
}
23772368
}
23782369
private static class Sourcifier extends ParamFieldifier<Source> {
@@ -2391,7 +2382,7 @@ CallField field(Source[] values) {
23912382
}
23922383
@Override
23932384
CallField field(Stream<Source> values) {
2394-
return fieldifier.formattedField(getName(), BaseProxy.XmlDocumentType.fromSource(values));
2385+
return fieldifier.formattedField(getName(), NodeConverter.SourceToHandle(values));
23952386
}
23962387
}
23972388
private static class XMLEventReaderifier extends ParamFieldifier<XMLEventReader> {
@@ -2410,7 +2401,7 @@ CallField field(XMLEventReader[] values) {
24102401
}
24112402
@Override
24122403
CallField field(Stream<XMLEventReader> values) {
2413-
return fieldifier.formattedField(getName(), BaseProxy.XmlDocumentType.fromXMLEventReader(values));
2404+
return fieldifier.formattedField(getName(), NodeConverter.XMLEventReaderToHandle(values));
24142405
}
24152406
}
24162407
private static class XMLStreamReaderifier extends ParamFieldifier<XMLStreamReader> {
@@ -2429,7 +2420,7 @@ CallField field(XMLStreamReader[] values) {
24292420
}
24302421
@Override
24312422
CallField field(Stream<XMLStreamReader> values) {
2432-
return fieldifier.formattedField(getName(), BaseProxy.XmlDocumentType.fromXMLStreamReader(values));
2423+
return fieldifier.formattedField(getName(), NodeConverter.XMLStreamReaderToHandle(values));
24332424
}
24342425
}
24352426
}

0 commit comments

Comments
 (0)