b6d62112e609f58ec405642cd5a59a02de0fa4bd
[idea/community.git] / plugins / gradle / tooling-extension-impl / src / org / jetbrains / plugins / gradle / tooling / tasks / DependencyNodeDeserializer.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package org.jetbrains.plugins.gradle.tooling.tasks;
3
4 import com.google.gson.*;
5 import com.intellij.openapi.externalSystem.model.project.dependencies.*;
6
7 import java.lang.reflect.Type;
8
9 public class DependencyNodeDeserializer implements JsonDeserializer<DependencyNode> {
10
11   @Override
12   public DependencyNode deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
13     JsonObject jsonObject = json.getAsJsonObject();
14     if (jsonObject.get("configurationName") != null) {
15       return context.deserialize(json, DependencyScopeNode.class);
16     }
17     else if (jsonObject.get("projectPath") != null) {
18       return context.deserialize(json, ProjectDependencyNodeImpl.class);
19     }
20     else if (jsonObject.get("module") != null) {
21       return context.deserialize(json, ArtifactDependencyNodeImpl.class);
22     }
23     else if (jsonObject.size() == 1 && jsonObject.get("id") != null) {
24       return context.deserialize(json, ReferenceNode.class);
25     }
26     else {
27       return context.deserialize(json, UnknownDependencyNode.class);
28     }
29   }
30 }