blob: fbca9d62b122609f412f2741344b2fb58bdc1502 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library domain.edit;
import 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/constants.dart';
import 'package:analysis_server/src/protocol.dart';
/**
* Instances of the class [EditDomainHandler] implement a [RequestHandler]
* that handles requests in the edit domain.
*/
class EditDomainHandler implements RequestHandler {
/**
* The analysis server that is using this handler to process requests.
*/
final AnalysisServer server;
/**
* Initialize a newly created handler to handle requests for the given [server].
*/
EditDomainHandler(this.server);
@override
Response handleRequest(Request request) {
try {
String requestName = request.method;
if (requestName == EDIT_APPLY_REFACTORING) {
return applyRefactoring(request);
} else if (requestName == EDIT_CREATE_REFACTORING) {
return createRefactoring(request);
} else if (requestName == EDIT_DELETE_REFACTORING) {
return deleteRefactoring(request);
} else if (requestName == EDIT_GET_ASSISTS) {
return getAssists(request);
} else if (requestName == EDIT_GET_FIXES) {
return getFixes(request);
} else if (requestName == EDIT_GET_REFACTORINGS) {
return getRefactorings(request);
} else if (requestName == EDIT_SET_REFACTORING_OPTIONS) {
return setRefactoringOptions(request);
}
} on RequestFailure catch (exception) {
return exception.response;
}
return null;
}
Response applyRefactoring(Request request) {
// id
RequestDatum idDatum = request.getRequiredParameter(ID);
String id = idDatum.asString();
// TODO(brianwilkerson) implement
return null;
}
Response createRefactoring(Request request) {
// kind
RequestDatum kindDatum = request.getRequiredParameter(KIND);
String kind = kindDatum.asString();
// file
RequestDatum fileDatum = request.getRequiredParameter(FILE);
String file = fileDatum.asString();
// offset
RequestDatum offsetDatum = request.getRequiredParameter(OFFSET);
int offset = offsetDatum.asInt();
// length
RequestDatum lengthDatum = request.getRequiredParameter(LENGTH);
int length = lengthDatum.asInt();
// TODO(brianwilkerson) implement
return null;
}
Response deleteRefactoring(Request request) {
// id
RequestDatum idDatum = request.getRequiredParameter(ID);
String id = idDatum.asString();
// TODO(brianwilkerson) implement
return null;
}
Response getAssists(Request request) {
// file
RequestDatum fileDatum = request.getRequiredParameter(FILE);
String file = fileDatum.asString();
// offset
RequestDatum offsetDatum = request.getRequiredParameter(OFFSET);
int offset = offsetDatum.asInt();
// length
RequestDatum lengthDatum = request.getRequiredParameter(LENGTH);
int length = lengthDatum.asInt();
// TODO(brianwilkerson) implement
return null;
}
Response getFixes(Request request) {
// errors
RequestDatum errorsDatum = request.getRequiredParameter(ERRORS);
// TODO(paulberry): the API for edit.getFixes should be changed to so that
// it doesn't use AnalysisError as an input type. This is necessary
// because the JSON protocol for an AnalysisError doesn't contain the
// errorCode, so we don't have enough information to reconstitute the error
// object.
// List<AnalysisError> errors = errorsDatum.asList((RequestDatum datum) {
// return _createAnalysisError(request, datum);
// });
// TODO(brianwilkerson) implement
return null;
}
Response getRefactorings(Request request) {
// file
RequestDatum fileDatum = request.getRequiredParameter(FILE);
String file = fileDatum.asString();
// offset
RequestDatum offsetDatum = request.getRequiredParameter(OFFSET);
int offset = offsetDatum.asInt();
// length
RequestDatum lengthDatum = request.getRequiredParameter(LENGTH);
int length = lengthDatum.asInt();
// TODO(brianwilkerson) implement
return null;
}
Response setRefactoringOptions(Request request) {
// id
RequestDatum idDatum = request.getRequiredParameter(ID);
String id = idDatum.asString();
// TODO(brianwilkerson) implement
return null;
}
}