This is an automated email from the ASF dual-hosted git repository. ofuks pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/develop by this push: new a4d4b23 Sonar code smell changes a4d4b23 is described below commit a4d4b237c13a96d9959a02b247cb0d4036e63ef3 Author: Oleh Fuks <olegfuk...@gmail.com> AuthorDate: Thu Sep 10 15:15:20 2020 +0300 Sonar code smell changes --- .../azure/config/LoggingConfigurationFactory.java | 2 +- .../dlab/billing/azure/logging/AppenderFile.java | 22 +++--- .../backendapi/core/commands/DockerCommands.java | 63 ++++++++------- .../response/folderlistener/FolderListener.java | 66 +++++++--------- .../backendapi/modules/GcpProvisioningModule.java | 1 - .../service/RestoreCallbackHandlerService.java | 1 + .../com/epam/dlab/process/ProcessConveyor.java | 53 ++++++------- .../dlab/process/builder/ProcessInfoBuilder.java | 76 +++++++++--------- .../com/epam/dlab/process/model/DlabProcess.java | 91 ++++++++++++---------- .../com/epam/dlab/process/model/ProcessId.java | 16 ++-- 10 files changed, 199 insertions(+), 192 deletions(-) diff --git a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/LoggingConfigurationFactory.java b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/LoggingConfigurationFactory.java index 2bd185e..0c34a0d 100644 --- a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/LoggingConfigurationFactory.java +++ b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/LoggingConfigurationFactory.java @@ -83,7 +83,7 @@ public class LoggingConfigurationFactory { */ @JsonProperty public void setLoggers(ImmutableMap<String, JsonNode> loggers) throws InitializationException { - ImmutableMap.Builder<String, Level> levels = new ImmutableMap.Builder<String, Level>(); + ImmutableMap.Builder<String, Level> levels = new ImmutableMap.Builder<>(); for (String key : loggers.keySet()) { JsonNode node = loggers.get(key); levels.put(key, toLevel(node.asText())); diff --git a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/logging/AppenderFile.java b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/logging/AppenderFile.java index 34a11b3..28c14f8 100644 --- a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/logging/AppenderFile.java +++ b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/logging/AppenderFile.java @@ -129,7 +129,7 @@ public class AppenderFile extends AppenderBase { /** Create and return synchronous the file appender. */ private FileAppender<ILoggingEvent> getFileAppender() { - FileAppender<ILoggingEvent> appender = new FileAppender<ILoggingEvent>(); + FileAppender<ILoggingEvent> appender = new FileAppender<>(); appender.setFile(currentLogFilename); appender.setAppend(true); return appender; @@ -142,17 +142,17 @@ public class AppenderFile extends AppenderBase { if (archivedLogFilenamePattern == null || archivedLogFilenamePattern.trim().isEmpty()) { throw new InitializationException("Configuration property logging.appenders.archivedLogFilenamePattern cannot be null."); } - RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<ILoggingEvent>(); - appender.setFile(currentLogFilename); - appender.setAppend(true); + RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>(); + appender.setFile(currentLogFilename); + appender.setAppend(true); - TimeBasedFileNamingAndTriggeringPolicy<ILoggingEvent> triggerPolicy = new DefaultTimeBasedFileNamingAndTriggeringPolicy<ILoggingEvent>(); - triggerPolicy.setContext(context); - - TimeBasedRollingPolicy<ILoggingEvent> rollPolicy = new TimeBasedRollingPolicy<ILoggingEvent>(); - rollPolicy.setContext(context); - rollPolicy.setParent(appender); - rollPolicy.setFileNamePattern(archivedLogFilenamePattern); + TimeBasedFileNamingAndTriggeringPolicy<ILoggingEvent> triggerPolicy = new DefaultTimeBasedFileNamingAndTriggeringPolicy<>(); + triggerPolicy.setContext(context); + + TimeBasedRollingPolicy<ILoggingEvent> rollPolicy = new TimeBasedRollingPolicy<>(); + rollPolicy.setContext(context); + rollPolicy.setParent(appender); + rollPolicy.setFileNamePattern(archivedLogFilenamePattern); rollPolicy.setMaxHistory(archivedFileCount); rollPolicy.setTimeBasedFileNamingAndTriggeringPolicy(triggerPolicy); rollPolicy.start(); diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/DockerCommands.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/DockerCommands.java index dec60af..6a5f267 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/DockerCommands.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/DockerCommands.java @@ -25,40 +25,45 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.util.UUID; +@FunctionalInterface public interface DockerCommands { - String GET_IMAGES = new ImagesDockerCommand() - .pipe(UnixCommand.awk("{print $1\":\"$2}")) - .pipe(UnixCommand.sort()) - .pipe(UnixCommand.uniq()) - .pipe(UnixCommand.grep("dlab")) - .pipe(UnixCommand.grep("none", "-v")) - .pipe(UnixCommand.grep("base", "-v")) - .pipe(UnixCommand.grep("ssn", "-v")) - .pipe(UnixCommand.grep("edge", "-v")) - .pipe(UnixCommand.grep("project", "-v")) - .toCMD(); + String GET_IMAGES = new ImagesDockerCommand() + .pipe(UnixCommand.awk("{print $1\":\"$2}")) + .pipe(UnixCommand.sort()) + .pipe(UnixCommand.uniq()) + .pipe(UnixCommand.grep("dlab")) + .pipe(UnixCommand.grep("none", "-v")) + .pipe(UnixCommand.grep("base", "-v")) + .pipe(UnixCommand.grep("ssn", "-v")) + .pipe(UnixCommand.grep("edge", "-v")) + .pipe(UnixCommand.grep("project", "-v")) + .toCMD(); - String GET_RUNNING_CONTAINERS_FOR_USER = "docker ps --format \"{{.Names}}\" -f name=%s"; + String GET_RUNNING_CONTAINERS_FOR_USER = "docker ps --format \"{{.Names}}\" -f name=%s"; - ObjectMapper MAPPER = new ObjectMapper() - .configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, true); + ObjectMapper MAPPER = new ObjectMapper() + .configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, true); - static String generateUUID() { - return UUID.randomUUID().toString(); - } + static String generateUUID() { + return UUID.randomUUID().toString(); + } - static String extractUUID(String fileName) { - Integer beginIndex = fileName.lastIndexOf('_'); - Integer endIndex = fileName.lastIndexOf('.'); - beginIndex = beginIndex < 0 ? 0 : beginIndex + 1; - if (endIndex < 0) endIndex = fileName.length(); - if (beginIndex > endIndex) beginIndex = endIndex; - return fileName.substring(beginIndex, endIndex); - } + static String extractUUID(String fileName) { + Integer beginIndex = fileName.lastIndexOf('_'); + Integer endIndex = fileName.lastIndexOf('.'); + beginIndex = beginIndex < 0 ? 0 : beginIndex + 1; + if (endIndex < 0) { + endIndex = fileName.length(); + } + if (beginIndex > endIndex) { + beginIndex = endIndex; + } + return fileName.substring(beginIndex, endIndex); + } - default String nameContainer(String... names) { - return String.join("_", names) + "_" + System.currentTimeMillis(); - } + default String nameContainer(String... names) { + return String.join("_", names) + "_" + System.currentTimeMillis(); + } - String getResourceType(); + String getResourceType(); } diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/folderlistener/FolderListener.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/folderlistener/FolderListener.java index 3856a92..c137e76 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/folderlistener/FolderListener.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/folderlistener/FolderListener.java @@ -38,17 +38,14 @@ import static com.epam.dlab.backendapi.core.Constants.JSON_EXTENSION; */ public class FolderListener implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(FolderListener.class); - /** * Timeout of the check the file creation in milliseconds. */ public static final long LISTENER_TIMEOUT_MILLLIS = 1000; - /** * Timeout of the idle for the folder listener in milliseconds. */ public static final long LISTENER_IDLE_TIMEOUT_MILLLIS = 600L * 1000L; - /** * Timeout of waiting for the directory creation in milliseconds. */ @@ -58,7 +55,36 @@ public class FolderListener implements Runnable { * List of the folder listeners. */ private static final List<FolderListener> listeners = new ArrayList<>(); + /** + * Thread of the folder listener. + */ + private Thread thread; + /** + * List of the file handles. + */ + private WatchItemList itemList; + /** + * Flag of listening status. + */ + private boolean isListen = false; + /** + * Time when expired of idle for folder listener in milliseconds. + */ + private long expiredIdleMillis = 0; + + private FolderListener() { + } + + /** + * Creates thread of the folder listener + * + * @param directoryName Name of directory. + * @param dao + */ + private FolderListener(String directoryName, CallbackHandlerDao dao) { + itemList = new WatchItemList(directoryName, dao); + } /** * Appends the file handler for processing to the folder listener and returns instance of the file handler. @@ -144,38 +170,6 @@ public class FolderListener implements Runnable { return listeners; } - - /** - * Thread of the folder listener. - */ - private Thread thread; - /** - * List of the file handles. - */ - private WatchItemList itemList; - /** - * Flag of listening status. - */ - private boolean isListen = false; - /** - * Time when expired of idle for folder listener in milliseconds. - */ - private long expiredIdleMillis = 0; - - - private FolderListener() { - } - - /** - * Creates thread of the folder listener - * - * @param directoryName Name of directory. - * @param dao - */ - private FolderListener(String directoryName, CallbackHandlerDao dao) { - itemList = new WatchItemList(directoryName, dao); - } - /** * Starts the thread of the folder listener. */ @@ -198,7 +192,7 @@ public class FolderListener implements Runnable { * Returns <b>true</b> if the folder listener thread is running and is alive, otherwise <b>false</b>. */ public boolean isAlive() { - return (thread != null ? thread.isAlive() : false); + return (thread != null && thread.isAlive()); } /** diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/modules/GcpProvisioningModule.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/modules/GcpProvisioningModule.java index 1365c33..4553592 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/modules/GcpProvisioningModule.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/modules/GcpProvisioningModule.java @@ -19,7 +19,6 @@ package com.epam.dlab.backendapi.modules; -import com.epam.dlab.backendapi.resources.BucketResource; import com.epam.dlab.backendapi.resources.gcp.ComputationalResourceGcp; import com.epam.dlab.backendapi.resources.gcp.EdgeResourceGcp; import com.epam.dlab.backendapi.resources.gcp.ExploratoryResourceGcp; diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/RestoreCallbackHandlerService.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/RestoreCallbackHandlerService.java index e057891..73b908a 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/RestoreCallbackHandlerService.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/RestoreCallbackHandlerService.java @@ -19,6 +19,7 @@ package com.epam.dlab.backendapi.service; +@FunctionalInterface public interface RestoreCallbackHandlerService { void restore(); } diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/process/ProcessConveyor.java b/services/provisioning-service/src/main/java/com/epam/dlab/process/ProcessConveyor.java index 6893f1f..c2dbf37 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/process/ProcessConveyor.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/process/ProcessConveyor.java @@ -29,34 +29,31 @@ import com.epam.dlab.process.model.ProcessStep; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -public class ProcessConveyor extends AssemblingConveyor<ProcessId,ProcessStep,ProcessInfo>{ +public class ProcessConveyor extends AssemblingConveyor<ProcessId, ProcessStep, ProcessInfo> { - public ProcessConveyor() { - super(); - this.setName("ProcessConveyor"); - this.setIdleHeartBeat(1, TimeUnit.SECONDS); - this.enablePostponeExpiration(true); - this.enablePostponeExpirationOnTimeout(true); - this.setDefaultCartConsumer((l,v,b)->{ - LOG.warn("default processor for {} {} {}",l,v,b.get()); - if(v instanceof FutureCart) { - @SuppressWarnings("rawtypes") - FutureCart fc = (FutureCart)v; - fc.get().cancel(true); - } - }); - this.setResultConsumer((bin)->{ - LOG.debug("process finished: {}",bin); - }); - } - - public Supplier<? extends ProcessInfo> getInfoSupplier(ProcessId id) { - BuildingSite<ProcessId, ProcessStep, Cart<ProcessId, ?, ProcessStep>, ? extends ProcessInfo> bs = this.collector.get(id); - if(bs == null) { - return () -> null; - } else { - return bs.getProductSupplier(); - } - } + public ProcessConveyor() { + super(); + this.setName("ProcessConveyor"); + this.setIdleHeartBeat(1, TimeUnit.SECONDS); + this.enablePostponeExpiration(true); + this.enablePostponeExpirationOnTimeout(true); + this.setDefaultCartConsumer((l, v, b) -> { + LOG.warn("default processor for {} {} {}", l, v, b.get()); + if (v instanceof FutureCart) { + @SuppressWarnings("rawtypes") + FutureCart fc = (FutureCart) v; + fc.get().cancel(true); + } + }); + this.setResultConsumer(bin -> LOG.debug("process finished: {}", bin)); + } + public Supplier<? extends ProcessInfo> getInfoSupplier(ProcessId id) { + BuildingSite<ProcessId, ProcessStep, Cart<ProcessId, ?, ProcessStep>, ? extends ProcessInfo> bs = this.collector.get(id); + if (bs == null) { + return () -> null; + } else { + return bs.getProductSupplier(); + } + } } diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/process/builder/ProcessInfoBuilder.java b/services/provisioning-service/src/main/java/com/epam/dlab/process/builder/ProcessInfoBuilder.java index 15a0e1e..769bb05 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/process/builder/ProcessInfoBuilder.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/process/builder/ProcessInfoBuilder.java @@ -52,20 +52,19 @@ import static com.epam.dlab.process.model.ProcessStatus.TIMEOUT; @Slf4j public class ProcessInfoBuilder implements Supplier<ProcessInfo>, Testing, TimeoutAction, Expireable { + private static Function<Process, Integer> pidSupplier = null; private final ProcessId processId; private final long startTimeStamp = System.currentTimeMillis(); - private ProcessStatus status = CREATED; private final StringBuilder stdOut = new StringBuilder(); private final StringBuilder stdErr = new StringBuilder(); + private ProcessStatus status = CREATED; private int exitCode = -1; private String[] command = new String[]{"N/A"}; private Collection<ProcessInfo> rejected = null; private int pid = -1; - private boolean finished = false; private boolean stdOutClosed = false; private boolean stdErrClosed = false; - private Process p = null; private CompletableFuture<ProcessInfo> future; private long expirationTime; @@ -151,6 +150,40 @@ public class ProcessInfoBuilder implements Supplier<ProcessInfo>, Testing, Timeo } } + public static void future(ProcessInfoBuilder b, CompletableFuture<ProcessInfo> future) { + if (b.future == null) { + b.future = future; + } else { + future.cancel(true); + } + } + + public static int getPid(Process process) { + try { + if (pidSupplier == null) { + Class<?> cProcessImpl = process.getClass(); + final Field fPid = cProcessImpl.getDeclaredField("pid"); + log.debug("PID field found"); + if (!fPid.isAccessible()) { + fPid.setAccessible(true); + } + pidSupplier = p -> { + try { + return fPid.getInt(p); + } catch (IllegalAccessException e) { + log.error("Unable to access PID. {}", e.getMessage(), e); + return -1; + } + }; + } + return pidSupplier.apply(process); + } catch (NoSuchFieldException e) { + log.debug("PID field not found", e); + pidSupplier = p -> -1; + return -1; + } + } + private void launch() { DlabProcess.getInstance().getUsersExecutorService(processId.getUser()).submit(() -> { status = SCHEDULED; @@ -233,14 +266,6 @@ public class ProcessInfoBuilder implements Supplier<ProcessInfo>, Testing, Timeo stdErrClosed = true; } - public static void future(ProcessInfoBuilder b, CompletableFuture<ProcessInfo> future) { - if (b.future == null) { - b.future = future; - } else { - future.cancel(true); - } - } - @Override public void onTimeout() { if (status != TIMEOUT) { @@ -260,33 +285,4 @@ public class ProcessInfoBuilder implements Supplier<ProcessInfo>, Testing, Timeo public long getExpirationTime() { return expirationTime; } - - private static Function<Process, Integer> pidSupplier = null; - - public static int getPid(Process process) { - try { - if (pidSupplier == null) { - Class<?> cProcessImpl = process.getClass(); - final Field fPid = cProcessImpl.getDeclaredField("pid"); - log.debug("PID field found"); - if (!fPid.isAccessible()) { - fPid.setAccessible(true); - } - pidSupplier = p -> { - try { - return fPid.getInt(p); - } catch (IllegalAccessException e) { - log.error("Unable to access PID. {}", e.getMessage(), e); - return -1; - } - }; - } - return pidSupplier.apply(process); - } catch (NoSuchFieldException e) { - log.debug("PID field not found", e); - pidSupplier = p -> -1; - return -1; - } - } - } diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/process/model/DlabProcess.java b/services/provisioning-service/src/main/java/com/epam/dlab/process/model/DlabProcess.java index 6f65e30..e1bf636 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/process/model/DlabProcess.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/process/model/DlabProcess.java @@ -29,7 +29,11 @@ import java.io.StringWriter; import java.util.ArrayList; import java.util.Collection; import java.util.Map; -import java.util.concurrent.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -37,114 +41,119 @@ import java.util.stream.Collectors; public class DlabProcess { private final static DlabProcess INSTANCE = new DlabProcess(); - - private ExecutorService executorService = Executors.newFixedThreadPool(50*3); - private Map<String,ExecutorService> perUserService = new ConcurrentHashMap<>(); + private final ProcessConveyor processConveyor; + private ExecutorService executorService = Executors.newFixedThreadPool(50 * 3); + private Map<String, ExecutorService> perUserService = new ConcurrentHashMap<>(); private int userMaxparallelism = 5; private long expirationTime = TimeUnit.HOURS.toMillis(3); - public static DlabProcess getInstance() { - return INSTANCE; - } - - private final ProcessConveyor processConveyor; - private DlabProcess() { this.processConveyor = new ProcessConveyor(); } + public static DlabProcess getInstance() { + return INSTANCE; + } + public ExecutorService getExecutorService() { return executorService; } public void setMaxProcessesPerBox(int parallelism) { this.executorService.shutdown(); - this.executorService = Executors.newFixedThreadPool(3*parallelism); + this.executorService = Executors.newFixedThreadPool(3 * parallelism); } public void setMaxProcessesPerUser(int parallelism) { this.userMaxparallelism = parallelism; - this.perUserService.forEach((k, e)->{e.shutdown();}); + this.perUserService.forEach((k, e) -> e.shutdown()); this.perUserService = new ConcurrentHashMap<>(); } public ExecutorService getUsersExecutorService(String user) { - perUserService.putIfAbsent(user,Executors.newFixedThreadPool(userMaxparallelism)); + perUserService.putIfAbsent(user, Executors.newFixedThreadPool(userMaxparallelism)); return perUserService.get(user); } - public CompletableFuture<ProcessInfo> start(ProcessId id, String... command){ + public CompletableFuture<ProcessInfo> start(ProcessId id, String... command) { log.debug("Run OS command for user {} with UUID {}: {}", id.getUser(), id.getCommand(), SecurityUtils.hideCreds(command)); - CompletableFuture<ProcessInfo> future = processConveyor.createBuildFuture( id, ()-> new ProcessInfoBuilder(id, - expirationTime) ); + CompletableFuture<ProcessInfo> future = processConveyor.createBuildFuture(id, () -> new ProcessInfoBuilder(id, + expirationTime)); processConveyor.add(id, future, ProcessStep.FUTURE); processConveyor.add(id, command, ProcessStep.START); return future; } - public CompletableFuture<ProcessInfo> start(String username, String uniqDescriptor, String... command){ - return start(new ProcessId(username,uniqDescriptor),command); + public CompletableFuture<ProcessInfo> start(String username, String uniqDescriptor, String... command) { + return start(new ProcessId(username, uniqDescriptor), command); } - public CompletableFuture<ProcessInfo> start(String username, String... command){ - return start(new ProcessId(username,String.join(" ",command)),command); + public CompletableFuture<ProcessInfo> start(String username, String... command) { + return start(new ProcessId(username, String.join(" ", command)), command); } - public CompletableFuture<Boolean> stop(ProcessId id){ - return processConveyor.add(id,"STOP",ProcessStep.STOP); + public CompletableFuture<Boolean> stop(ProcessId id) { + return processConveyor.add(id, "STOP", ProcessStep.STOP); } - public CompletableFuture<Boolean> stop(String username, String command){ return stop(new ProcessId(username,command));} + public CompletableFuture<Boolean> stop(String username, String command) { + return stop(new ProcessId(username, command)); + } - public CompletableFuture<Boolean> kill(ProcessId id){ - return processConveyor.add(id,"KILL",ProcessStep.KILL); + public CompletableFuture<Boolean> kill(ProcessId id) { + return processConveyor.add(id, "KILL", ProcessStep.KILL); } - public CompletableFuture<Boolean> kill(String username, String command){ return kill(new ProcessId(username,command));} + public CompletableFuture<Boolean> kill(String username, String command) { + return kill(new ProcessId(username, command)); + } - public CompletableFuture<Boolean> failed(ProcessId id){ - return processConveyor.add(id,"FAILED",ProcessStep.FAILED); + public CompletableFuture<Boolean> failed(ProcessId id) { + return processConveyor.add(id, "FAILED", ProcessStep.FAILED); } - public CompletableFuture<Boolean> finish(ProcessId id, Integer exitStatus){ - return processConveyor.add(id,exitStatus,ProcessStep.FINISH); + public CompletableFuture<Boolean> finish(ProcessId id, Integer exitStatus) { + return processConveyor.add(id, exitStatus, ProcessStep.FINISH); } - public CompletableFuture<Boolean> toStdOut(ProcessId id, String msg){ - return processConveyor.add(id,msg,ProcessStep.STD_OUT); + public CompletableFuture<Boolean> toStdOut(ProcessId id, String msg) { + return processConveyor.add(id, msg, ProcessStep.STD_OUT); } - public CompletableFuture<Boolean> toStdErr(ProcessId id, String msg){ - return processConveyor.add(id,msg,ProcessStep.STD_ERR); + public CompletableFuture<Boolean> toStdErr(ProcessId id, String msg) { + return processConveyor.add(id, msg, ProcessStep.STD_ERR); } - public CompletableFuture<Boolean> toStdErr(ProcessId id, String msg, Exception err){ + public CompletableFuture<Boolean> toStdErr(ProcessId id, String msg, Exception err) { StringWriter sw = new StringWriter(); sw.append(msg); sw.append("\n"); PrintWriter pw = new PrintWriter(sw); err.printStackTrace(pw); - return processConveyor.add(id,sw.toString(),ProcessStep.STD_ERR); + return processConveyor.add(id, sw.toString(), ProcessStep.STD_ERR); } public Collection<ProcessId> getActiveProcesses() { Collection<ProcessId> pList = new ArrayList<>(); - processConveyor.forEachKeyAndBuilder( (k,b)-> pList.add(k) ); + processConveyor.forEachKeyAndBuilder((k, b) -> pList.add(k)); return pList; } - public Collection<ProcessId> getActiveProcesses(String username){ - return getActiveProcesses().stream().filter((id)->id.getUser().equals(username)).collect(Collectors.toList()); + public Collection<ProcessId> getActiveProcesses(String username) { + return getActiveProcesses() + .stream() + .filter(id -> id.getUser().equals(username)) + .collect(Collectors.toList()); } public Supplier<? extends ProcessInfo> getProcessInfoSupplier(ProcessId id) { return processConveyor.getInfoSupplier(id); } - public Supplier<? extends ProcessInfo> getProcessInfoSupplier(String username, String command){ - return getProcessInfoSupplier(new ProcessId(username,command)); + public Supplier<? extends ProcessInfo> getProcessInfoSupplier(String username, String command) { + return getProcessInfoSupplier(new ProcessId(username, command)); } public void setProcessTimeout(long time, TimeUnit unit) { diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/process/model/ProcessId.java b/services/provisioning-service/src/main/java/com/epam/dlab/process/model/ProcessId.java index a66559e..69f01b5 100644 --- a/services/provisioning-service/src/main/java/com/epam/dlab/process/model/ProcessId.java +++ b/services/provisioning-service/src/main/java/com/epam/dlab/process/model/ProcessId.java @@ -38,13 +38,19 @@ public class ProcessId { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } - ProcessId processId = (ProcessId) o; + ProcessId processId = (ProcessId) o; - if (user != null ? !user.equals(processId.user) : processId.user != null) return false; - return command != null ? command.equals(processId.command) : processId.command == null; + if (user != null ? !user.equals(processId.user) : processId.user != null) { + return false; + } + return command != null ? command.equals(processId.command) : processId.command == null; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org