From 9a259efff1150de37951280287a7b382f53a68ca Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 25 Sep 2014 16:15:01 +0400 Subject: [PATCH] project set support: sending responce --- .../com/intellij/platform/ProjectSetReader.java | 8 ++++++++ .../platform/ProjectSetRequestHandler.java | 14 +++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/platform/ProjectSetReader.java b/platform/platform-impl/src/com/intellij/platform/ProjectSetReader.java index 8a163d08c64e..6e0d4bc9f200 100644 --- a/platform/platform-impl/src/com/intellij/platform/ProjectSetReader.java +++ b/platform/platform-impl/src/com/intellij/platform/ProjectSetReader.java @@ -19,6 +19,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonPrimitive; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.projectImport.ProjectSetProcessor; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; @@ -31,6 +32,8 @@ import java.util.Map; */ public class ProjectSetReader { + private static final Logger LOG = Logger.getInstance(ProjectSetReader.class); + public void readDescriptor(@Language("JSON") @NotNull String descriptor) { ProjectSetProcessor[] extensions = ProjectSetProcessor.EXTENSION_POINT_NAME.getExtensions(); @@ -43,6 +46,11 @@ public class ProjectSetReader { for (Map.Entry entry : parse.getAsJsonObject().entrySet()) { String key = entry.getKey(); ProjectSetProcessor processor = processors.get(key); + if (processor == null) { + LOG.error("Processor not found for " + key); + continue; + } + JsonObject object = entry.getValue().getAsJsonObject(); for (Map.Entry elementEntry : object.entrySet()) { Object o = processor.interactWithUser(); diff --git a/platform/platform-impl/src/com/intellij/platform/ProjectSetRequestHandler.java b/platform/platform-impl/src/com/intellij/platform/ProjectSetRequestHandler.java index 0a5348346d76..b232ecfe4f75 100644 --- a/platform/platform-impl/src/com/intellij/platform/ProjectSetRequestHandler.java +++ b/platform/platform-impl/src/com/intellij/platform/ProjectSetRequestHandler.java @@ -15,13 +15,16 @@ */ package com.intellij.platform; +import com.intellij.openapi.application.ApplicationManager; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpMethod; +import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.QueryStringDecoder; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; import org.jetbrains.ide.HttpRequestHandler; +import org.jetbrains.io.Responses; import java.io.IOException; import java.nio.charset.Charset; @@ -40,9 +43,14 @@ public class ProjectSetRequestHandler extends HttpRequestHandler { public boolean process(@NotNull QueryStringDecoder urlDecoder, @NotNull FullHttpRequest request, @NotNull ChannelHandlerContext context) throws IOException { - @Language("JSON") String desc = request.content().toString(Charset.defaultCharset()); - new ProjectSetReader().readDescriptor(desc); - + @Language("JSON") final String desc = request.content().toString(Charset.defaultCharset()); + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + new ProjectSetReader().readDescriptor(desc); + } + }); + Responses.sendStatus(HttpResponseStatus.OK, context.channel(), request); return true; } }