Skip to content

Commit

Permalink
Merge pull request graphql-java#1964 from graphql-java/remove-deferred-2
Browse files Browse the repository at this point in the history
remove deferred support 2
  • Loading branch information
andimarek committed Jun 22, 2020
2 parents 3101f48 + ddb850f commit a0d327d
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
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
@@ -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;
};
}
}
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.

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
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
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
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 a0d327d

Please sign in to comment.