| Index: pkg/analysis_server/lib/src/domain_context.dart
|
| diff --git a/pkg/analysis_server/lib/src/domain_context.dart b/pkg/analysis_server/lib/src/domain_context.dart
|
| index acadd6fabdf721b1067250ff0c010d1b174a2472..0fc87591bde79f9c334c3a52885e73bbea201359 100644
|
| --- a/pkg/analysis_server/lib/src/domain_context.dart
|
| +++ b/pkg/analysis_server/lib/src/domain_context.dart
|
| @@ -20,6 +20,11 @@ class ContextDomainHandler implements RequestHandler {
|
| static const String APPLY_CHANGES_NAME = 'context.applyChanges';
|
|
|
| /**
|
| + * The name of the context.getFixes request.
|
| + */
|
| + static const String GET_FIXES_NAME = 'context.getFixes';
|
| +
|
| + /**
|
| * The name of the context.setOptions request.
|
| */
|
| static const String SET_OPTIONS_NAME = 'context.setOptions';
|
| @@ -30,6 +35,11 @@ class ContextDomainHandler implements RequestHandler {
|
| static const String SET_PRIORITY_SOURCES_NAME = 'context.setPrioritySources';
|
|
|
| /**
|
| + * The name of the added parameter.
|
| + */
|
| + static const String ADDED_PARAM = "added";
|
| +
|
| + /**
|
| * The name of the changes parameter.
|
| */
|
| static const String CHANGES_PARAM = 'changes';
|
| @@ -40,11 +50,21 @@ class ContextDomainHandler implements RequestHandler {
|
| static const String CONTEXT_ID_PARAM = 'contextId';
|
|
|
| /**
|
| + * The name of the modified parameter.
|
| + */
|
| + static const String MODIFIED_PARAM = "modified";
|
| +
|
| + /**
|
| * The name of the options parameter.
|
| */
|
| static const String OPTIONS_PARAM = 'options';
|
|
|
| /**
|
| + * The name of the removed parameter.
|
| + */
|
| + static const String REMOVED_PARAM = "removed";
|
| +
|
| + /**
|
| * The name of the sources parameter.
|
| */
|
| static const String SOURCES_PARAM = 'sources';
|
| @@ -95,6 +115,8 @@ class ContextDomainHandler implements RequestHandler {
|
| String requestName = request.method;
|
| if (requestName == APPLY_CHANGES_NAME) {
|
| return applyChanges(request);
|
| + } else if (requestName == GET_FIXES_NAME) {
|
| + return getFixes(request);
|
| } else if (requestName == SET_OPTIONS_NAME) {
|
| return setOptions(request);
|
| } else if (requestName == SET_PRIORITY_SOURCES_NAME) {
|
| @@ -114,7 +136,10 @@ class ContextDomainHandler implements RequestHandler {
|
| Response applyChanges(Request request) {
|
| AnalysisContext context = getAnalysisContext(request);
|
| Map<String, Object> changesData = request.getRequiredParameter(CHANGES_PARAM);
|
| - ChangeSet changeSet = createChangeSet(changesData);
|
| + ChangeSet changeSet = createChangeSet(
|
| + request,
|
| + context.sourceFactory,
|
| + changesData);
|
|
|
| context.applyChanges(changeSet);
|
| Response response = new Response(request.id);
|
| @@ -122,11 +147,44 @@ class ContextDomainHandler implements RequestHandler {
|
| }
|
|
|
| /**
|
| - * Convert the given JSON object into a [ChangeSet].
|
| + * Convert the given JSON object into a [ChangeSet], using the given
|
| + * [sourceFactory] to convert the embedded strings into sources.
|
| + */
|
| + ChangeSet createChangeSet(Request request, SourceFactory sourceFactory, Map<String, Object> jsonData) {
|
| + ChangeSet changeSet = new ChangeSet();
|
| + convertSources(request, sourceFactory, jsonData[ADDED_PARAM], (Source source) {
|
| + changeSet.addedSource(source);
|
| + });
|
| + convertSources(request, sourceFactory, jsonData[MODIFIED_PARAM], (Source source) {
|
| + changeSet.changedSource(source);
|
| + });
|
| + convertSources(request, sourceFactory, jsonData[REMOVED_PARAM], (Source source) {
|
| + changeSet.removedSource(source);
|
| + });
|
| + return changeSet;
|
| + }
|
| +
|
| + /**
|
| + * If the given [sources] is a list of strings, use the given [sourceFactory]
|
| + * to convert each string into a source and pass the source to the given
|
| + * [handler]. Otherwise, throw an exception indicating that the data in the
|
| + * request was not valid.
|
| */
|
| - ChangeSet createChangeSet(Map<String, Object> jsonData) {
|
| + void convertSources(Request request, SourceFactory sourceFactory, Object sources, void handler(Source source)) {
|
| + if (sources is! List<String>) {
|
| + throw new RequestFailure(new Response(request.id, new RequestError(1, 'Invalid sources')));
|
| + }
|
| + convertToSources(sourceFactory, sources).forEach(handler);
|
| + }
|
| +
|
| + /**
|
| + * Return the list of fixes that are available for problems related to the
|
| + * given error in the specified context.
|
| + */
|
| + Response getFixes(Request request) {
|
| // TODO(brianwilkerson) Implement this.
|
| - return new ChangeSet();
|
| + Response response = new Response(request.id);
|
| + return response;
|
| }
|
|
|
| /**
|
|
|