
com.github.davidmoten.odata.client.CollectionPageNonEntityRequest Maven / Gradle / Ivy
package com.github.davidmoten.odata.client;
import java.net.HttpURLConnection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Stream;
import com.fasterxml.jackson.annotation.JsonIgnoreType;
import com.github.davidmoten.guavamini.Preconditions;
import com.github.davidmoten.odata.client.internal.RequestHelper;
import com.github.davidmoten.odata.client.internal.TypedObject;
@JsonIgnoreType
public class CollectionPageNonEntityRequest implements Iterable {
private final ContextPath contextPath;
private final Class cls;
private final SchemaInfo schemaInfo;
// initial call made with this method, further pages use HttpMethod.GET
private final HttpMethod method;
private final Optional content;
private final int expectedResponseCode;
// should not be public api
public CollectionPageNonEntityRequest(ContextPath contextPath, Class cls,
SchemaInfo schemaInfo, HttpMethod method, Optional content,
int expectedResponseCode) {
Preconditions.checkArgument(method != HttpMethod.POST || content.isPresent());
this.contextPath = contextPath;
this.cls = cls;
this.schemaInfo = schemaInfo;
this.method = method;
this.content = content;
this.expectedResponseCode = expectedResponseCode;
}
public CollectionPageNonEntityRequest(ContextPath contextPath, Class cls,
SchemaInfo schemaInfo) {
this(contextPath, cls, schemaInfo, HttpMethod.GET, Optional.empty(),
HttpURLConnection.HTTP_CREATED);
}
public static CollectionPageNonEntityRequest forAction(ContextPath contextPath,
Class returnClass, Map parameters,
SchemaInfo returnTypeSchemaInfo) {
String json = contextPath.context().serializer().serialize(parameters);
return new CollectionPageNonEntityRequest( //
contextPath, //
returnClass, //
returnTypeSchemaInfo, //
HttpMethod.POST, //
Optional.of(json), //
HttpURLConnection.HTTP_OK);
}
CollectionPage get(RequestOptions options) {
ContextPath cp = contextPath.addQueries(options.getQueries());
final HttpResponse r;
List h = RequestHelper.cleanAndSupplementRequestHeaders(options, "minimal",
false);
if (method == HttpMethod.GET) {
r = cp.context().service().get(cp.toUrl(), h);
} else {
r = cp.context().service().post(cp.toUrl(), h, content.get());
}
RequestHelper.checkResponseCode(cp, r, expectedResponseCode);
return cp //
.context() //
.serializer() //
.deserializeCollectionPage( //
r.getText(), //
cls, //
cp, //
schemaInfo, //
h);
}
public CollectionPage get() {
return new CollectionNonEntityRequestOptionsBuilder(this).get();
}
public void forEach(Consumer super T> consumer) {
stream().forEach(consumer);
}
public Stream stream() {
return get().stream();
}
public List toList() {
return get().toList();
}
@Override
public Iterator iterator() {
return get().iterator();
}
public CollectionNonEntityRequestOptionsBuilder requestHeader(String key, String value) {
return new CollectionNonEntityRequestOptionsBuilder(this).requestHeader(key, value);
}
public CollectionNonEntityRequestOptionsBuilder requestHeader(RequestHeader header) {
return new CollectionNonEntityRequestOptionsBuilder(this).requestHeader(header);
}
public CollectionNonEntityRequestOptionsBuilder maxPageSize(int maxPageSize) {
return new CollectionNonEntityRequestOptionsBuilder(this).maxPageSize(maxPageSize);
}
public CollectionNonEntityRequestOptionsBuilder search(String clause) {
return new CollectionNonEntityRequestOptionsBuilder(this).search(clause);
}
public CollectionNonEntityRequestOptionsBuilder filter(String clause) {
return new CollectionNonEntityRequestOptionsBuilder(this).filter(clause);
}
public CollectionNonEntityRequestOptionsBuilder orderBy(String clause) {
return new CollectionNonEntityRequestOptionsBuilder(this).orderBy(clause);
}
public CollectionNonEntityRequestOptionsBuilder skip(long n) {
return new CollectionNonEntityRequestOptionsBuilder(this).skip(n);
}
public CollectionNonEntityRequestOptionsBuilder top(long n) {
return new CollectionNonEntityRequestOptionsBuilder(this).top(n);
}
public CollectionNonEntityRequestOptionsBuilder select(String clause) {
return new CollectionNonEntityRequestOptionsBuilder(this).select(clause);
}
public CollectionNonEntityRequestOptionsBuilder metadataFull() {
return new CollectionNonEntityRequestOptionsBuilder(this).metadataFull();
}
public CollectionNonEntityRequestOptionsBuilder metadataMinimal() {
return new CollectionNonEntityRequestOptionsBuilder(this).metadataMinimal();
}
public CollectionNonEntityRequestOptionsBuilder metadataNone() {
return new CollectionNonEntityRequestOptionsBuilder(this).metadataNone();
}
public CollectionNonEntityRequestOptionsBuilder urlOverride(String urlOverride) {
return new CollectionNonEntityRequestOptionsBuilder(this).urlOverride(urlOverride);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy