Skip to content

Commit

Permalink
remove deferred support
Browse files Browse the repository at this point in the history
  • Loading branch information
andimarek committed Jun 22, 2020
1 parent 3101f48 commit ddb850f
Show file tree
Hide file tree
Showing 24 changed files with 2 additions and 1,084 deletions.
16 changes: 0 additions & 16 deletions src/main/java/graphql/DeferredExecutionResult.java

This file was deleted.

68 changes: 0 additions & 68 deletions src/main/java/graphql/DeferredExecutionResultImpl.java

This file was deleted.

6 changes: 0 additions & 6 deletions src/main/java/graphql/GraphQL.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,6 @@
@PublicApi
public class GraphQL {

/**
* When @defer directives are used, this is the extension key name used to contain the {@link org.reactivestreams.Publisher}
* of deferred results
*/
public static final String DEFERRED_RESULTS = "deferredResults";

private static final Logger log = LoggerFactory.getLogger(GraphQL.class);
private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(GraphQL.class);

Expand Down
31 changes: 0 additions & 31 deletions src/main/java/graphql/execution/AsyncExecutionStrategy.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,14 @@
package graphql.execution;

import graphql.ExecutionResult;
import graphql.execution.instrumentation.DeferredFieldInstrumentationContext;
import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext;
import graphql.execution.instrumentation.Instrumentation;
import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLObjectType;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import java.util.function.Supplier;
import java.util.stream.Collectors;

/**
Expand Down Expand Up @@ -84,30 +79,4 @@ public CompletableFuture<ExecutionResult> execute(ExecutionContext executionCont
overallResult.whenComplete(executionStrategyCtx::onCompleted);
return overallResult;
}


@SuppressWarnings("FutureReturnValueIgnored")
private Supplier<CompletableFuture<ExecutionResult>> deferredExecutionResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters) {
return () -> {
GraphQLFieldDefinition fieldDef = getFieldDef(executionContext, parameters, parameters.getField().getSingleField());
GraphQLObjectType fieldContainer = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType();

Instrumentation instrumentation = executionContext.getInstrumentation();
DeferredFieldInstrumentationContext fieldCtx = instrumentation.beginDeferredField(
new InstrumentationDeferredFieldParameters(executionContext, parameters, fieldDef, createExecutionStepInfo(executionContext, parameters, fieldDef, fieldContainer))
);
CompletableFuture<ExecutionResult> result = new CompletableFuture<>();
fieldCtx.onDispatched(result);
CompletableFuture<FieldValueInfo> fieldValueInfoFuture = resolveFieldWithInfo(executionContext, parameters);

fieldValueInfoFuture.whenComplete((fieldValueInfo, throwable) -> {
fieldCtx.onFieldValueInfo(fieldValueInfo);

CompletableFuture<ExecutionResult> execResultFuture = fieldValueInfo.getFieldValue();
execResultFuture = execResultFuture.whenComplete(fieldCtx::onCompleted);
Async.copyResults(execResultFuture, result);
});
return result;
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import graphql.execution.FieldValueInfo;
import graphql.execution.MergedField;
import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters;
import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
Expand Down Expand Up @@ -121,15 +120,6 @@ public ExecutionStrategyInstrumentationContext beginExecutionStrategy(Instrument
.collect(toList()));
}

@Override
public DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) {
return new ChainedDeferredExecutionStrategyInstrumentationContext(instrumentations.stream()
.map(instrumentation -> {
InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState());
return instrumentation.beginDeferredField(parameters.withNewState(state));
})
.collect(toList()));
}

@Override
public InstrumentationContext<ExecutionResult> beginSubscribedFieldEvent(InstrumentationFieldParameters parameters) {
Expand Down Expand Up @@ -299,28 +289,5 @@ public void onDeferredField(MergedField field) {
}
}

private static class ChainedDeferredExecutionStrategyInstrumentationContext implements DeferredFieldInstrumentationContext {

private final List<DeferredFieldInstrumentationContext> contexts;

ChainedDeferredExecutionStrategyInstrumentationContext(List<DeferredFieldInstrumentationContext> contexts) {
this.contexts = Collections.unmodifiableList(contexts);
}

@Override
public void onDispatched(CompletableFuture<ExecutionResult> result) {
contexts.forEach(context -> context.onDispatched(result));
}

@Override
public void onCompleted(ExecutionResult result, Throwable t) {
contexts.forEach(context -> context.onCompleted(result, t));
}

@Override
public void onFieldValueInfo(FieldValueInfo fieldValueInfo) {
contexts.forEach(context -> context.onFieldValueInfo(fieldValueInfo));
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import graphql.ExecutionResult;
import graphql.execution.ExecutionContext;
import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters;
import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
Expand Down Expand Up @@ -105,14 +104,6 @@ default InstrumentationState createState(InstrumentationCreateStateParameters pa
*/
ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters);

/**
* This is called just before a deferred field is resolved into a value.
*
* @param parameters the parameters to this step
*
* @return a non null {@link InstrumentationContext} object that will be called back when the step ends
*/
DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters);

/**
* This is called each time a subscription field produces a new reactive stream event value and it needs to be mapped over via the graphql field subselection.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import graphql.ExecutionResult;
import graphql.PublicApi;
import graphql.execution.ExecutionContext;
import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
Expand Down Expand Up @@ -69,21 +68,6 @@ public void onCompleted(ExecutionResult result, Throwable t) {
};
}

@Override
public DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) {
return new DeferredFieldInstrumentationContext() {
@Override
public void onDispatched(CompletableFuture<ExecutionResult> result) {

}

@Override
public void onCompleted(ExecutionResult result, Throwable t) {

}
};
}

@Override
public InstrumentationContext<ExecutionResult> beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) {
return new SimpleInstrumentationContext<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@
import graphql.execution.AsyncExecutionStrategy;
import graphql.execution.ExecutionContext;
import graphql.execution.ExecutionStrategy;
import graphql.execution.instrumentation.DeferredFieldInstrumentationContext;
import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext;
import graphql.execution.instrumentation.InstrumentationContext;
import graphql.execution.instrumentation.InstrumentationState;
import graphql.execution.instrumentation.SimpleInstrumentation;
import graphql.execution.instrumentation.SimpleInstrumentationContext;
import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters;
import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
Expand Down Expand Up @@ -143,26 +141,6 @@ public void onCompleted(ExecutionResult result, Throwable t) {
return state.getApproach().beginExecutionStrategy(parameters.withNewState(state.getState()));
}

@Override
public DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) {
DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState();
//
// if there are no data loaders, there is nothing to do
//
if (state.hasNoDataLoaders()) {
return new DeferredFieldInstrumentationContext() {
@Override
public void onDispatched(CompletableFuture<ExecutionResult> result) {
}

@Override
public void onCompleted(ExecutionResult result, Throwable t) {
}
};

}
return state.getApproach().beginDeferredField(parameters.withNewState(state.getState()));
}

@Override
public InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,14 @@
import graphql.execution.ExecutionPath;
import graphql.execution.FieldValueInfo;
import graphql.execution.MergedField;
import graphql.execution.instrumentation.DeferredFieldInstrumentationContext;
import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext;
import graphql.execution.instrumentation.InstrumentationContext;
import graphql.execution.instrumentation.InstrumentationState;
import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters;
import org.dataloader.DataLoaderRegistry;
import org.slf4j.Logger;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
Expand Down Expand Up @@ -205,35 +202,6 @@ private int getCountForList(FieldValueInfo fieldValueInfo) {
return result;
}

DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) {
CallStack callStack = parameters.getInstrumentationState();
int level = parameters.getExecutionStrategyParameters().getPath().getLevel();
synchronized (callStack) {
callStack.clearAndMarkCurrentLevelAsReady(level);
}

return new DeferredFieldInstrumentationContext() {
@Override
public void onDispatched(CompletableFuture<ExecutionResult> result) {

}

@Override
public void onCompleted(ExecutionResult result, Throwable t) {
}

@Override
public void onFieldValueInfo(FieldValueInfo fieldValueInfo) {
boolean dispatchNeeded;
synchronized (callStack) {
dispatchNeeded = handleOnFieldValuesInfo(Collections.singletonList(fieldValueInfo), callStack, level);
}
if (dispatchNeeded) {
dispatch();
}
}
};
}

public InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters) {
CallStack callStack = parameters.getInstrumentationState();
Expand Down

0 comments on commit ddb850f

Please sign in to comment.