Open source the Sandbox plugin

Summary: This diff is mainly moving diffs around to open source the Sandbox plugin. I created the MD file writing some docs. The rest is just making our own FB implementation work

Reviewed By: danielbuechele

Differential Revision: D8731839

fbshipit-source-id: 27ac67223c6de9d1be406ab8c06b71b82d5407bc
This commit is contained in:
Edoardo Tognoni
2018-07-05 09:09:01 -07:00
committed by Facebook Github Bot
parent 03a8e696a9
commit 53753801b0
7 changed files with 276 additions and 1 deletions

View File

@@ -0,0 +1,71 @@
/*
* Copyright (c) 2004-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*
*/
package com.facebook.sonar.plugins.sandbox;
import com.facebook.sonar.core.SonarArray;
import com.facebook.sonar.core.SonarConnection;
import com.facebook.sonar.core.SonarObject;
import com.facebook.sonar.core.SonarPlugin;
import com.facebook.sonar.core.SonarReceiver;
import com.facebook.sonar.core.SonarResponder;
import java.util.Map;
public class SandboxSonarPlugin implements SonarPlugin {
public static final String ID = "Sandbox";
private static final String SET_METHOD_NAME = "setSandbox";
private static final String GET_METHOD_NAME = "getSandbox";
private final SandboxSonarPluginStrategy mStrategy;
public SandboxSonarPlugin(SandboxSonarPluginStrategy strategy) {
mStrategy = strategy;
}
@Override
public String getId() {
return ID;
}
@Override
public void onConnect(SonarConnection connection) {
connection.receive(
GET_METHOD_NAME,
new SonarReceiver() {
@Override
public void onReceive(SonarObject params, final SonarResponder responder) {
final SonarArray.Builder sandboxes = new SonarArray.Builder();
Map<String, String> knownSandboxes = mStrategy.getKnownSandboxes();
if (knownSandboxes == null) {
responder.success(sandboxes.build());
return;
}
for (String sandboxName : knownSandboxes.keySet()) {
sandboxes.put(
new SonarObject.Builder()
.put("name", sandboxName)
.put("value", knownSandboxes.get(sandboxName)));
}
responder.success(sandboxes.build());
}
});
connection.receive(
SET_METHOD_NAME,
new SonarReceiver() {
@Override
public void onReceive(SonarObject params, SonarResponder responder) throws Exception {
String sandbox = params.getString("sandbox");
mStrategy.setSandbox(sandbox);
responder.success(new SonarObject.Builder().put("result", true).build());
}
});
}
@Override
public void onDisconnect() {}
}

View File

@@ -0,0 +1,19 @@
/*
* Copyright (c) 2004-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*
*/
package com.facebook.sonar.plugins.sandbox;
import java.util.Map;
import javax.annotation.Nullable;
public interface SandboxSonarPluginStrategy {
@Nullable
Map<String, String> getKnownSandboxes();
void setSandbox(@Nullable String sandbox);
}