mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Cleanup (minor optimization; warnings; docs; formatting)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
* Copyright 2000-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -43,6 +43,7 @@ public class BaseOSProcessHandler extends ProcessHandler implements TaskExecutor
|
||||
|
||||
private static final Options ADAPTIVE_NON_BLOCKING = new Options() {
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public BaseDataReader.SleepingPolicy policy() {
|
||||
return new BaseDataReader.AdaptiveSleepingPolicy();
|
||||
}
|
||||
@@ -89,12 +90,14 @@ public class BaseOSProcessHandler extends ProcessHandler implements TaskExecutor
|
||||
return myProcess;
|
||||
}
|
||||
|
||||
/** @deprecated use {@link #readerOptions()} (to be removed in IDEA 18) */
|
||||
/** @deprecated use {@link #readerOptions()} (to be removed in IDEA 2018) */
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
protected boolean useAdaptiveSleepingPolicyWhenReadingOutput() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @deprecated use {@link #readerOptions()} (to be removed in IDEA 18) */
|
||||
/** @deprecated use {@link #readerOptions()} (to be removed in IDEA 2018) */
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
protected boolean useNonBlockingRead() {
|
||||
return !Registry.is("output.reader.blocking.mode", false);
|
||||
}
|
||||
@@ -163,12 +166,14 @@ public class BaseOSProcessHandler extends ProcessHandler implements TaskExecutor
|
||||
super.startNotify();
|
||||
}
|
||||
|
||||
/** @deprecated override {@link #createOutputDataReader()} (to be removed in IDEA 18) */
|
||||
/** @deprecated override {@link #createOutputDataReader()} (to be removed in IDEA 2018) */
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
protected BaseDataReader createErrorDataReader(@SuppressWarnings("UnusedParameters") BaseDataReader.SleepingPolicy policy) {
|
||||
return createErrorDataReader();
|
||||
}
|
||||
|
||||
/** @deprecated override {@link #createOutputDataReader()} (to be removed in IDEA 18) */
|
||||
/** @deprecated override {@link #createOutputDataReader()} (to be removed in IDEA 2018) */
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
protected BaseDataReader createOutputDataReader(@SuppressWarnings("UnusedParameters") BaseDataReader.SleepingPolicy policy) {
|
||||
return createOutputDataReader();
|
||||
}
|
||||
@@ -262,8 +267,8 @@ public class BaseOSProcessHandler extends ProcessHandler implements TaskExecutor
|
||||
return myCharset;
|
||||
}
|
||||
|
||||
/** @deprecated use {@link BaseOSProcessHandler#executeTask(Runnable)} instead (to be removed in IDEA 2018) */
|
||||
public static class ExecutorServiceHolder {
|
||||
/** @deprecated use {@link BaseOSProcessHandler#executeTask(Runnable)} instead (to be removed in IDEA 17) */
|
||||
public static Future<?> submit(@NotNull Runnable task) {
|
||||
LOG.warn("Deprecated method. Please use com.intellij.execution.process.BaseOSProcessHandler.executeTask() instead", new Throwable());
|
||||
return AppExecutorUtil.getAppExecutorService().submit(task);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
* Copyright 2000-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -29,7 +29,7 @@ public class ProcessWaitFor {
|
||||
private final Future<?> myWaitForThreadFuture;
|
||||
private final BlockingQueue<Consumer<Integer>> myTerminationCallback = new ArrayBlockingQueue<Consumer<Integer>>(1);
|
||||
|
||||
/** @deprecated use {@link #ProcessWaitFor(Process, TaskExecutor, String)} instead (to be removed in IDEA 17) */
|
||||
/** @deprecated use {@link #ProcessWaitFor(Process, TaskExecutor, String)} instead (to be removed in IDEA 2018) */
|
||||
@Deprecated
|
||||
public ProcessWaitFor(@NotNull final Process process, @NotNull TaskExecutor executor) {
|
||||
this(process, executor, "");
|
||||
@@ -39,30 +39,35 @@ public class ProcessWaitFor {
|
||||
myWaitForThreadFuture = executor.executeTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String oldThreadName = Thread.currentThread().getName();
|
||||
String oldThreadName = null;
|
||||
if (!StringUtil.isEmptyOrSpaces(presentableName)) {
|
||||
oldThreadName = Thread.currentThread().getName();
|
||||
Thread.currentThread().setName("ProcessWaitFor: " + presentableName);
|
||||
}
|
||||
int exitCode = 0;
|
||||
try {
|
||||
while (true) {
|
||||
int exitCode = 0;
|
||||
try {
|
||||
while (true) {
|
||||
try {
|
||||
exitCode = process.waitFor();
|
||||
break;
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
LOG.debug(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
try {
|
||||
exitCode = process.waitFor();
|
||||
break;
|
||||
myTerminationCallback.take().consume(exitCode);
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
LOG.debug(e);
|
||||
LOG.info(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
try {
|
||||
myTerminationCallback.take().consume(exitCode);
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
LOG.info(e);
|
||||
}
|
||||
finally {
|
||||
if (oldThreadName != null) {
|
||||
Thread.currentThread().setName(oldThreadName);
|
||||
}
|
||||
}
|
||||
@@ -82,11 +87,10 @@ public class ProcessWaitFor {
|
||||
try {
|
||||
myWaitForThreadFuture.get();
|
||||
}
|
||||
catch (CancellationException ignored) { }
|
||||
catch (ExecutionException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
catch (CancellationException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean waitFor(long timeout, @NotNull TimeUnit unit) throws InterruptedException {
|
||||
@@ -96,12 +100,9 @@ public class ProcessWaitFor {
|
||||
catch (ExecutionException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
catch (CancellationException ignored) {
|
||||
}
|
||||
catch (TimeoutException ignored) {
|
||||
}
|
||||
catch (CancellationException ignored) { }
|
||||
catch (TimeoutException ignored) { }
|
||||
|
||||
return myWaitForThreadFuture.isDone();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
* Copyright 2000-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -73,12 +73,11 @@ public abstract class BaseDataReader {
|
||||
}
|
||||
|
||||
/**
|
||||
* Please don't override this method as the BseOSProcessProcessHandler assumes that it can be two reading modes: blocking and non-blocking.
|
||||
* Please don't override this method as the BaseOSProcessProcessHandler assumes that it can be two reading modes: blocking and non-blocking.
|
||||
* Implement {@link #readAvailableBlocking} and {@link #readAvailableNonBlocking} instead.
|
||||
*
|
||||
*
|
||||
*
|
||||
* If the process handler assumes that reader handles the blocking mode, while it doesn't, it will result into premature stream close.
|
||||
*
|
||||
*
|
||||
* @return true in case any data was read
|
||||
* @throws IOException if an exception during IO happened
|
||||
*/
|
||||
@@ -87,9 +86,7 @@ public abstract class BaseDataReader {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Non-blocking read returns the control back to the process handler when there is no data to read.
|
||||
*
|
||||
*/
|
||||
protected boolean readAvailableNonBlocking() throws IOException {
|
||||
throw new UnsupportedOperationException();
|
||||
@@ -129,6 +126,8 @@ public abstract class BaseDataReader {
|
||||
int getTimeToSleep(boolean wasActive);
|
||||
}
|
||||
|
||||
/** @deprecated use one of default policies (recommended) or implement your own (to be removed in IDEA 2018) */
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
public static class AdaptiveSleepingPolicy implements SleepingPolicy {
|
||||
private static final int maxSleepTimeWhenIdle = 200;
|
||||
private static final int maxIterationsWithCurrentSleepTime = 50;
|
||||
@@ -170,9 +169,8 @@ public abstract class BaseDataReader {
|
||||
stopSignalled = isStopped;
|
||||
|
||||
if (!stopSignalled) {
|
||||
// if process stopped, there is no sense to sleep,
|
||||
// if process stopped, there is no sense to sleep,
|
||||
// just check if there is unread output in the stream
|
||||
|
||||
synchronized (mySleepMonitor) {
|
||||
mySleepMonitor.wait(mySleepingPolicy.getTimeToSleep(read));
|
||||
}
|
||||
@@ -194,7 +192,7 @@ public abstract class BaseDataReader {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void resumeReading() {
|
||||
synchronized (mySleepMonitor) {
|
||||
mySleepMonitor.notifyAll();
|
||||
@@ -225,4 +223,4 @@ public abstract class BaseDataReader {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user