Skip to content

Commit 6a6ef5d

Browse files
authored
Use default colouring for stdout/stderr, and add java stacktrace linking (#2147)
1 parent 016e4f3 commit 6a6ef5d

5 files changed

Lines changed: 39 additions & 15 deletions

File tree

plugins/com.google.cloud.tools.eclipse.appengine.deploy.ui/META-INF/MANIFEST.MF

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ Import-Package: com.google.api.client.auth.oauth2;version="[1.22.0,1.23.0)",
5050
org.eclipse.core.runtime,
5151
org.eclipse.core.runtime.jobs,
5252
org.eclipse.core.runtime.preferences,
53+
org.eclipse.debug.ui,
54+
org.eclipse.debug.ui.console,
5355
org.eclipse.jface.action,
5456
org.eclipse.jface.databinding.dialog,
5557
org.eclipse.jface.databinding.preference,

plugins/com.google.cloud.tools.eclipse.appengine.deploy.ui/src/com/google/cloud/tools/eclipse/appengine/deploy/ui/DeployCommandHandler.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
5353
import org.eclipse.core.runtime.jobs.Job;
5454
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
55+
import org.eclipse.debug.ui.IDebugUIConstants;
56+
import org.eclipse.debug.ui.console.ConsoleColorProvider;
5557
import org.eclipse.jface.dialogs.MessageDialog;
5658
import org.eclipse.jface.window.Window;
5759
import org.eclipse.swt.widgets.Shell;
@@ -134,23 +136,28 @@ private void launchDeployJob(IProject project, Credential credential)
134136
AnalyticsPingManager.getInstance().sendPing(
135137
AnalyticsEvents.APP_ENGINE_DEPLOY, AnalyticsEvents.APP_ENGINE_DEPLOY_STANDARD, null);
136138

139+
IPath workDirectory = createWorkDirectory();
137140
DeployPreferences deployPreferences = new DeployPreferences(project);
141+
DefaultDeployConfiguration deployConfiguration = toDeployConfiguration(deployPreferences);
142+
boolean includeOptionalConfigurationFiles =
143+
deployPreferences.isIncludeOptionalConfigurationFiles();
144+
138145
DeployConsole messageConsole =
139146
MessageConsoleUtilities.createConsole(getConsoleName(deployPreferences.getProjectId()),
140147
new DeployConsole.Factory());
141148
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
142149
consoleManager.showConsoleView(messageConsole);
143-
144-
IPath workDirectory = createWorkDirectory();
150+
ConsoleColorProvider colorProvider = new ConsoleColorProvider();
145151
MessageConsoleStream outputStream = messageConsole.newMessageStream();
146-
DefaultDeployConfiguration deployConfiguration = toDeployConfiguration(deployPreferences);
147-
boolean includeOptionalConfigurationFiles =
148-
deployPreferences.isIncludeOptionalConfigurationFiles();
152+
MessageConsoleStream errorStream = messageConsole.newMessageStream();
153+
outputStream.setColor(colorProvider.getColor(IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM));
154+
errorStream.setColor(colorProvider.getColor(IDebugUIConstants.ID_STANDARD_ERROR_STREAM));
155+
149156
StagingDelegate stagingDelegate = getStagingDelegate(project);
150157

151158
DeployJob deploy = new DeployJob(project, credential, workDirectory,
152159
new MessageConsoleWriterOutputLineListener(outputStream),
153-
new MessageConsoleWriterOutputLineListener(outputStream),
160+
new MessageConsoleWriterOutputLineListener(errorStream),
154161
deployConfiguration, includeOptionalConfigurationFiles, stagingDelegate);
155162
messageConsole.setJob(deploy);
156163
deploy.addJobChangeListener(new JobChangeAdapter() {

plugins/com.google.cloud.tools.eclipse.appengine.localserver/src/com/google/cloud/tools/eclipse/appengine/localserver/server/LocalAppEngineServerBehaviour.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ public String getDescription() {
301301
* @param console the stream (Eclipse console) to send development server process output to
302302
*/
303303
void startDevServer(DefaultRunConfiguration devServerRunConfiguration,
304-
Path javaHomePath, MessageConsoleStream console)
304+
Path javaHomePath, MessageConsoleStream outputStream, MessageConsoleStream errorStream)
305305
throws CoreException {
306306

307307
PortChecker portInUse = new PortChecker() {
@@ -335,7 +335,7 @@ public boolean isInUse(InetAddress addr, int port) {
335335
setServerState(IServer.STATE_STARTING);
336336

337337
// Create dev app server instance
338-
initializeDevServer(console, javaHomePath);
338+
initializeDevServer(outputStream, errorStream, javaHomePath);
339339

340340
// Run server
341341
try {
@@ -350,15 +350,17 @@ private static int ifNull(Integer value, int defaultValue) {
350350
return value != null ? value : defaultValue;
351351
}
352352

353-
private void initializeDevServer(MessageConsoleStream console, Path javaHomePath) {
354-
MessageConsoleWriterOutputLineListener outputListener =
355-
new MessageConsoleWriterOutputLineListener(console);
353+
private void initializeDevServer(MessageConsoleStream stdout, MessageConsoleStream stderr,
354+
Path javaHomePath) {
355+
MessageConsoleWriterOutputLineListener stdoutListener =
356+
new MessageConsoleWriterOutputLineListener(stdout);
357+
MessageConsoleWriterOutputLineListener stderrListener =
358+
new MessageConsoleWriterOutputLineListener(stderr);
356359

357360
// dev_appserver output goes to stderr
358361
cloudSdk = new CloudSdk.Builder()
359362
.javaHome(javaHomePath)
360-
.addStdOutLineListener(outputListener)
361-
.addStdErrLineListener(outputListener)
363+
.addStdOutLineListener(stdoutListener).addStdErrLineListener(stderrListener)
362364
.addStdErrLineListener(serverOutputListener)
363365
.startListener(localAppEngineStartListener)
364366
.exitListener(localAppEngineExitListener)

plugins/com.google.cloud.tools.eclipse.appengine.localserver/src/com/google/cloud/tools/eclipse/appengine/localserver/server/LocalAppEngineServerLaunchConfigurationDelegate.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@
7676
import org.eclipse.debug.core.model.IMemoryBlock;
7777
import org.eclipse.debug.core.model.IProcess;
7878
import org.eclipse.debug.core.model.IThread;
79+
import org.eclipse.debug.ui.IDebugUIConstants;
80+
import org.eclipse.debug.ui.console.ConsoleColorProvider;
7981
import org.eclipse.jdt.core.IJavaProject;
8082
import org.eclipse.jdt.core.JavaCore;
8183
import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;
@@ -84,6 +86,7 @@
8486
import org.eclipse.jdt.launching.IVMInstall;
8587
import org.eclipse.jdt.launching.JavaRuntime;
8688
import org.eclipse.jdt.launching.SocketUtil;
89+
import org.eclipse.ui.console.MessageConsoleStream;
8790
import org.eclipse.wst.server.core.IModule;
8891
import org.eclipse.wst.server.core.IServer;
8992
import org.eclipse.wst.server.core.IServerListener;
@@ -416,11 +419,17 @@ public void launch(ILaunchConfiguration configuration, String mode, final ILaunc
416419
runnables.add(deployPath.toFile());
417420
}
418421

422+
// configure the console for output
423+
ConsoleColorProvider colorProvider = new ConsoleColorProvider();
419424
LocalAppEngineConsole console =
420425
MessageConsoleUtilities.findOrCreateConsole(configuration.getName(),
421426
new LocalAppEngineConsole.Factory(serverBehaviour));
422427
console.clearConsole();
423428
console.activate();
429+
MessageConsoleStream outputStream = console.newMessageStream();
430+
MessageConsoleStream errorStream = console.newMessageStream();
431+
outputStream.setColor(colorProvider.getColor(IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM));
432+
errorStream.setColor(colorProvider.getColor(IDebugUIConstants.ID_STANDARD_ERROR_STREAM));
424433

425434
// A launch must have at least one debug target or process, or it becomes a zombie
426435
CloudSdkDebugTarget target = new CloudSdkDebugTarget(launch, serverBehaviour);
@@ -445,7 +454,7 @@ public void launch(ILaunchConfiguration configuration, String mode, final ILaunc
445454

446455
String javaHome = vmInstall.getInstallLocation().getAbsolutePath();
447456
serverBehaviour.startDevServer(devServerRunConfiguration, Paths.get(javaHome),
448-
console.newMessageStream());
457+
outputStream, errorStream);
449458
} catch (CoreException ex) {
450459
launch.terminate();
451460
throw ex;

plugins/com.google.cloud.tools.eclipse.appengine.localserver/src/com/google/cloud/tools/eclipse/appengine/localserver/ui/LocalAppEngineConsole.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.google.cloud.tools.eclipse.appengine.localserver.Messages;
2020
import com.google.cloud.tools.eclipse.appengine.localserver.server.LocalAppEngineServerBehaviour;
21+
import com.google.cloud.tools.eclipse.appengine.ui.AppEngineImages;
2122
import com.google.cloud.tools.eclipse.ui.util.MessageConsoleUtilities.ConsoleFactory;
2223
import org.eclipse.core.runtime.IProgressMonitor;
2324
import org.eclipse.core.runtime.IStatus;
@@ -42,7 +43,10 @@ public void serverChanged(ServerEvent event) {
4243
};
4344

4445
private LocalAppEngineConsole(String name, LocalAppEngineServerBehaviour serverBehaviour) {
45-
super(name, null);
46+
// https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/2140
47+
// todo: setting "javaStackTraceConsole" as the console type seems distasteful
48+
// but is required to get stack-trace linking to work
49+
super(name, "javaStackTraceConsole", AppEngineImages.appEngine(16), true);
4650
this.unprefixedName = name;
4751
this.serverBehaviour = serverBehaviour;
4852
}

0 commit comments

Comments
 (0)