Java tutorial
/** * Copyright (c) 2015-2017 Angelo ZERR. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation */ package ts.internal.client.protocol; import java.lang.reflect.Type; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.InstanceCreator; import com.google.gson.JsonObject; import ts.client.CommandNames; import ts.client.IPositionProvider; import ts.client.Location; import ts.client.navbar.NavigationBarItem; /** * NavTree request; value of command field is "navtree". Return response giving * the navigation tree of the requested file. * * @see https://github.com/Microsoft/TypeScript/blob/master/src/server/protocol.ts */ public class NavTreeRequest extends FileRequest<FileRequestArgs> { // Set positionProvider to transient to ignore Gson serialization private final transient IPositionProvider positionProvider; public NavTreeRequest(String fileName, IPositionProvider positionProvider) { super(CommandNames.NavTree.getName(), new FileRequestArgs(fileName, null)); this.positionProvider = positionProvider; } @Override public Response<NavigationBarItem> parseResponse(JsonObject json) { Gson gson = GsonHelper.DEFAULT_GSON; if (positionProvider != null) { gson = new GsonBuilder().registerTypeAdapter(Location.class, new InstanceCreator<Location>() { @Override public Location createInstance(Type type) { return new Location(positionProvider); } }).create(); } return gson.fromJson(json, NavTreeResponse.class); } }