Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Unified Diff: pkg/analysis_server/lib/src/domain_server.dart

Issue 297153002: Implementation of 'Server Domain' in dart analysis server. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixes for review comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/lib/src/domain_server.dart
diff --git a/pkg/analysis_server/lib/src/domain_server.dart b/pkg/analysis_server/lib/src/domain_server.dart
index e213bdd7a904d2d811b4609f7a65915cbc22a77f..89e101d1b1ad65549dfb2329b39c36e0b7e4ab60 100644
--- a/pkg/analysis_server/lib/src/domain_server.dart
+++ b/pkg/analysis_server/lib/src/domain_server.dart
@@ -6,11 +6,6 @@ library domain.server;
import 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/protocol.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/java_io.dart';
-import 'package:analyzer/src/generated/sdk_io.dart';
-import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/generated/source_io.dart';
/**
* Instances of the class [ServerDomainHandler] implement a [RequestHandler]
@@ -18,34 +13,24 @@ import 'package:analyzer/src/generated/source_io.dart';
*/
class ServerDomainHandler implements RequestHandler {
/**
- * The name of the server.createContext request.
+ * The name of the `server.getVersion` request.
*/
- static const String CREATE_CONTEXT_METHOD = 'server.createContext';
+ static const String GET_VERSION_METHOD = 'server.getVersion';
/**
- * The name of the server.deleteContext request.
+ * The name of the `server.setSubscriptions` request.
*/
- static const String DELETE_CONTEXT_METHOD = 'server.deleteContext';
+ static const String SET_SUBSCRIPTIONS_METHOD = 'server.setSubscriptions';
/**
- * The name of the server.shutdown request.
+ * The name of the `server.shutdown` request.
*/
static const String SHUTDOWN_METHOD = 'server.shutdown';
/**
- * The name of the server.version request.
+ * The name of the `subscriptions` parameter.
*/
- static const String VERSION_METHOD = 'server.version';
-
- /**
- * The name of the packageMap parameter.
- */
- static const String PACKAGE_MAP_PARAM = 'packageMap';
-
- /**
- * The name of the sdkDirectory parameter.
- */
- static const String SDK_DIRECTORY_PARAM = 'sdkDirectory';
+ static const String SUBSCRIPTIONS_PARAMETER = 'subscriptions';
/**
* The name of the version result value.
@@ -66,14 +51,12 @@ class ServerDomainHandler implements RequestHandler {
Response handleRequest(Request request) {
try {
String requestName = request.method;
- if (requestName == CREATE_CONTEXT_METHOD) {
- return createContext(request);
- } else if (requestName == DELETE_CONTEXT_METHOD) {
- return deleteContext(request);
+ if (requestName == GET_VERSION_METHOD) {
+ return getVersion(request);
+ } else if (requestName == SET_SUBSCRIPTIONS_METHOD) {
+ return setSubscriptions(request);
} else if (requestName == SHUTDOWN_METHOD) {
return shutdown(request);
- } else if (requestName == VERSION_METHOD) {
- return version(request);
}
} on RequestFailure catch (exception) {
return exception.response;
@@ -82,56 +65,68 @@ class ServerDomainHandler implements RequestHandler {
}
/**
- * Create a new context in which analysis can be performed. The context that
- * is created will persist until server.deleteContext is used to delete it.
- * Clients, therefore, are responsible for managing the lifetime of contexts.
+ * Subscribe for services.
+ *
+ * All previous subscriptions are replaced by the given set of subscriptions.
*/
- Response createContext(Request request) {
- String sdkDirectory = request.getRequiredParameter(SDK_DIRECTORY_PARAM).asString();
- Map<String, String> packageMap = request.getParameter(PACKAGE_MAP_PARAM, {}).asStringMap();
-
- String contextId = request.getRequiredParameter(AnalysisServer.CONTEXT_ID_PARAM).asString();
- if (server.contextMap.containsKey(contextId)) {
- return new Response.contextAlreadyExists(request);
- }
- AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
- // TODO(brianwilkerson) Use the information from the request to set the
- // source factory in the context.
- DirectoryBasedDartSdk sdk;
- try {
- sdk = new DirectoryBasedDartSdk(new JavaFile(sdkDirectory));
- } on Exception catch (e) {
- // TODO what error code should be returned here?
- return new Response(request.id, new RequestError(
- RequestError.CODE_SDK_ERROR, 'Failed to access sdk: $e'));
- }
- context.sourceFactory = new SourceFactory([
- new DartUriResolver(sdk),
- new FileUriResolver(),
- // new PackageUriResolver(),
- ]);
- server.contextMap[contextId] = context;
- server.contextIdMap[context] = contextId;
-
- Response response = new Response(request.id);
- return response;
+ Response setSubscriptions(Request request) {
+ RequestDatum subDatum = request.getRequiredParameter(SUBSCRIPTIONS_PARAMETER);
+ server.serverServices = subDatum.asEnumSet(ServerService.VALUES);
+ return new Response(request.id);
}
- /**
- * Delete the context with the given id. Future attempts to use the context id
- * will result in an error being returned.
- */
- Response deleteContext(Request request) {
- String contextId = request.getRequiredParameter(AnalysisServer.CONTEXT_ID_PARAM).asString();
-
- AnalysisContext removedContext = server.contextMap.remove(contextId);
- if (removedContext == null) {
- return new Response.contextDoesNotExist(request);
- }
- server.contextIdMap.remove(removedContext);
- Response response = new Response(request.id);
- return response;
- }
+ // TODO(scheglov) remove or move to the 'analysis' domain
+// /**
+// * Create a new context in which analysis can be performed. The context that
+// * is created will persist until server.deleteContext is used to delete it.
+// * Clients, therefore, are responsible for managing the lifetime of contexts.
+// */
+// Response createContext(Request request) {
+// String sdkDirectory = request.getRequiredParameter(SDK_DIRECTORY_PARAM).asString();
+// Map<String, String> packageMap = request.getParameter(PACKAGE_MAP_PARAM, {}).asStringMap();
+//
+// String contextId = request.getRequiredParameter(AnalysisServer.CONTEXT_ID_PARAM).asString();
+// if (server.contextMap.containsKey(contextId)) {
+// return new Response.contextAlreadyExists(request);
+// }
+// AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
+// // TODO(brianwilkerson) Use the information from the request to set the
+// // source factory in the context.
+// DirectoryBasedDartSdk sdk;
+// try {
+// sdk = new DirectoryBasedDartSdk(new JavaFile(sdkDirectory));
+// } on Exception catch (e) {
+// // TODO what error code should be returned here?
+// return new Response(request.id, new RequestError(
+// RequestError.CODE_SDK_ERROR, 'Failed to access sdk: $e'));
+// }
+// context.sourceFactory = new SourceFactory([
+// new DartUriResolver(sdk),
+// new FileUriResolver(),
+// // new PackageUriResolver(),
+// ]);
+// server.contextMap[contextId] = context;
+// server.contextIdMap[context] = contextId;
+//
+// Response response = new Response(request.id);
+// return response;
+// }
+//
+// /**
+// * Delete the context with the given id. Future attempts to use the context id
+// * will result in an error being returned.
+// */
+// Response deleteContext(Request request) {
+// String contextId = request.getRequiredParameter(AnalysisServer.CONTEXT_ID_PARAM).asString();
+//
+// AnalysisContext removedContext = server.contextMap.remove(contextId);
+// if (removedContext == null) {
+// return new Response.contextDoesNotExist(request);
+// }
+// server.contextIdMap.remove(removedContext);
+// Response response = new Response(request.id);
+// return response;
+// }
/**
* Cleanly shutdown the analysis server.
@@ -145,9 +140,9 @@ class ServerDomainHandler implements RequestHandler {
/**
* Return the version number of the analysis server.
*/
- Response version(Request request) {
+ Response getVersion(Request request) {
Response response = new Response(request.id);
response.setResult(VERSION_RESULT, '0.0.1');
return response;
}
-}
+}

Powered by Google App Engine
This is Rietveld 408576698