Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package org.hypertrace.config.objectstore;

import io.grpc.Status;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import org.hypertrace.config.service.change.event.api.ConfigChangeEventGenerator;
import org.hypertrace.config.service.v1.ConfigServiceGrpc;
import org.hypertrace.config.service.v1.Filter;
import org.hypertrace.config.service.v1.GetAllConfigsRequest;
import org.hypertrace.config.service.v1.Pagination;
import org.hypertrace.config.service.v1.SortBy;
import org.hypertrace.core.grpcutils.context.RequestContext;

public abstract class IdentifiedFilterPushedDownObjectStore<T, F, S>
extends IdentifiedObjectStore<T> {

private final ConfigServiceGrpc.ConfigServiceBlockingStub configServiceBlockingStub;
private final String resourceNamespace;
private final String resourceName;

protected IdentifiedFilterPushedDownObjectStore(
ConfigServiceGrpc.ConfigServiceBlockingStub configServiceBlockingStub,
String resourceNamespace,
String resourceName,
ConfigChangeEventGenerator configChangeEventGenerator,
ClientConfig clientConfig) {
super(

Check warning on line 29 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L29

Added line #L29 was not covered by tests
configServiceBlockingStub,
resourceNamespace,
resourceName,
configChangeEventGenerator,
clientConfig);
this.configServiceBlockingStub = configServiceBlockingStub;
this.resourceNamespace = resourceNamespace;
this.resourceName = resourceName;
}

Check warning on line 38 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L35-L38

Added lines #L35 - L38 were not covered by tests

public List<ContextualConfigObject<T>> getMatchingObjects(
RequestContext context, F filterInput, List<S> sortInput, @Nullable Pagination pagination) {
Filter filter = buildFilter(filterInput);
List<SortBy> sortByList = sortInput.stream().map(this::buildSort).collect(Collectors.toList());
return getMatchingObjects(context, filter, sortByList, pagination);

Check warning on line 44 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L42-L44

Added lines #L42 - L44 were not covered by tests
}

public List<ContextualConfigObject<T>> getMatchingObjects(
RequestContext context, F filterInput, List<S> sortInput) {
return getMatchingObjects(context, filterInput, sortInput, null);

Check warning on line 49 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L49

Added line #L49 was not covered by tests
}

public List<T> getMatchingData(
RequestContext context, F filterInput, List<S> sortInput, @Nullable Pagination pagination) {
return getMatchingObjects(context, filterInput, sortInput, pagination).stream()
.map(ConfigObject::getData)
.collect(Collectors.toUnmodifiableList());

Check warning on line 56 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L54-L56

Added lines #L54 - L56 were not covered by tests
}

public Optional<ContextualConfigObject<T>> getMatchingObject(
RequestContext context, F filterInput, List<S> sortInput) {
List<ContextualConfigObject<T>> results = getMatchingObjects(context, filterInput, sortInput);

Check warning on line 61 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L61

Added line #L61 was not covered by tests
if (results.size() > 1) {
throw Status.FAILED_PRECONDITION
.withDescription("Multiple objects found when expecting at most one")
.asRuntimeException();

Check warning on line 65 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L63-L65

Added lines #L63 - L65 were not covered by tests
}
return results.stream().findFirst();

Check warning on line 67 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L67

Added line #L67 was not covered by tests
}

public Optional<T> getMatchingData(RequestContext context, F filterInput, List<S> sortInput) {
return getMatchingObject(context, filterInput, sortInput).map(ConfigObject::getData);

Check warning on line 71 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L71

Added line #L71 was not covered by tests
}

List<ContextualConfigObject<T>> getMatchingObjects(
RequestContext context, Filter filter, List<SortBy> sortByList, Pagination pagination) {
return context
.call(

Check warning on line 77 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L76-L77

Added lines #L76 - L77 were not covered by tests
() ->
this.configServiceBlockingStub
.withDeadline(getDeadline())
.getAllConfigs(buildGetAllConfigsRequest(filter, sortByList, pagination)))
.getContextSpecificConfigsList()
.stream()
.map(

Check warning on line 84 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L80-L84

Added lines #L80 - L84 were not covered by tests
contextSpecificConfig ->
ContextualConfigObjectImpl.tryBuild(

Check warning on line 86 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L86

Added line #L86 was not covered by tests
contextSpecificConfig, this::buildDataFromValue))
.flatMap(Optional::stream)
.collect(
Collectors.collectingAndThen(
Collectors.toUnmodifiableList(), this::orderFetchedObjects));

Check warning on line 91 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L88-L91

Added lines #L88 - L91 were not covered by tests
}

private GetAllConfigsRequest buildGetAllConfigsRequest(
Filter filter, List<SortBy> sortByList, Pagination pagination) {
Comment thread
pavan-traceable marked this conversation as resolved.
GetAllConfigsRequest.Builder getAllConfigsRequest =
GetAllConfigsRequest.newBuilder()
.setResourceName(this.resourceName)
.setResourceNamespace(this.resourceNamespace)
.setFilter(filter)
.addAllSortBy(sortByList);

Check warning on line 101 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L97-L101

Added lines #L97 - L101 were not covered by tests
if (pagination != null) {
getAllConfigsRequest.setPagination(pagination);

Check warning on line 103 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L103

Added line #L103 was not covered by tests
}
return getAllConfigsRequest.build();

Check warning on line 105 in config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java

View check run for this annotation

Codecov / codecov/patch

config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedFilterPushedDownObjectStore.java#L105

Added line #L105 was not covered by tests
}

protected abstract SortBy buildSort(S sortInput);

protected abstract Filter buildFilter(F filterInput);
}
Loading