public Object execute(final ParseResult parseResult) throws RuntimeException { Validate.notNull(parseResult, "Parse result required"); synchronized (mutex) { Validate.isTrue(isReadyForCommands(), "ProcessManagerHostedExecutionStrategy not yet ready for commands"); return processManager.execute(new CommandCallback<Object>() { public Object callback() { try { return parseResult.getMethod().invoke(parseResult.getInstance(), parseResult.getArguments()); } catch (Exception e) { throw new RuntimeException(ObjectUtils.defaultIfNull(ExceptionUtils.getRootCause(e), e)); } } }); } }
@CliCommand(value = PROJECT_SCAN_STATUS_COMMAND, help = "Displays file system scanning information such as the time lasted for last scan " + "and scanning frequency.") public String scanningInfo() { if (processManager == null) { processManager = getProcessManager(); } Validate.notNull(processManager, "ProcessManager is required"); final StringBuilder sb = new StringBuilder("File system scanning "); final long duration = processManager.getLastScanDuration(); if (duration == 0) { sb.append("never executed; "); } else { sb.append("last took ").append(duration).append(" ms; "); } final long minimum = processManager.getMinimumDelayBetweenScan(); if (minimum == 0) { sb.append("automatic scanning is disabled"); } else if (minimum < 0) { sb.append("auto-scaled scanning is enabled"); } else { sb.append("scanning frequency has a minimum interval of ").append(minimum).append(" ms"); } return sb.toString(); }
public boolean isReadyForCommands() { synchronized (mutex) { if (processManager != null) { // BUSY_EXECUTION needed in case of recursive commands, such as // if executing a script // TERMINATED added in case of additional commands following a // quit or exit in a script - ROO-2270 final ProcessManagerStatus processManagerStatus = processManager.getProcessManagerStatus(); return processManagerStatus == ProcessManagerStatus.AVAILABLE || processManagerStatus == ProcessManagerStatus.BUSY_EXECUTING || processManagerStatus == ProcessManagerStatus.TERMINATED; } } return false; }
@CliCommand( value = PROJECT_SCAN_NOW_COMMAND, help = "Performs a manual file system scan, calling thread monitors and checking that all files " + "are updated.") public String scan() { if (processManager == null) { processManager = getProcessManager(); } Validate.notNull(processManager, "ProcessManager is required"); final long originalSetting = processManager.getMinimumDelayBetweenScan(); try { processManager.setMinimumDelayBetweenScan(1); processManager.timerBasedScan(); } finally { // Switch on manual scan again processManager.setMinimumDelayBetweenScan(originalSetting); } return "Manual scan completed"; }
public MutableFile updateFile(final String fileIdentifier) { if (fileMonitorService == null) { fileMonitorService = getFileMonitorService(); } if (processManager == null) { processManager = getProcessManager(); } if (filenameResolver == null) { filenameResolver = getFileNameResolver(); } if (undoManager == null) { undoManager = getUndoManager(); } Validate.notNull(fileIdentifier, "File identifier required"); Validate.notNull(fileMonitorService, "FileMonitorService required"); Validate.notNull(processManager, "ProcessManager required"); Validate.notNull(filenameResolver, "FilenameResolver required"); Validate.notNull(undoManager, "UndoManager required"); final File actual = new File(fileIdentifier); Validate.isTrue(actual.exists(), "File '%s' does not exist", fileIdentifier); new UpdateFile(undoManager, filenameResolver, actual); final ManagedMessageRenderer renderer = new ManagedMessageRenderer(filenameResolver, actual, false); renderer.setIncludeHashCode(processManager.isDevelopmentMode()); return new DefaultMutableFile(actual, fileMonitorService, renderer); }
public void terminate() { synchronized (mutex) { if (processManager != null) { processManager.terminate(); } } }
@CliCommand(value = PROJECT_SCAN_SPEED_COMMAND, help = "Changes the time inteval between file system scans.") public String scanningSpeed(@CliOption(key = {"", "ms"}, mandatory = true, help = "The number of milliseconds between each scan") final long minimumDelayBetweenScan) { if (processManager == null) { processManager = getProcessManager(); } Validate.notNull(processManager, "ProcessManager is required"); processManager.setMinimumDelayBetweenScan(minimumDelayBetweenScan); return scanningInfo(); }
@CliCommand( value = DEVELOPMENT_MODE_COMMAND, help = "Switches the system into development mode, which enables add-on development commands and " + "shows greater diagnostic information.") public String developmentMode(@CliOption(key = {"enabled"}, mandatory = false, specifiedDefaultValue = "true", unspecifiedDefaultValue = "true", help = "Activates development mode") final boolean enabled) { if (processManager == null) { processManager = getProcessManager(); } Validate.notNull(processManager, "ProcessManager is required"); if (shell == null) { shell = getShell(); } Validate.notNull(shell, "Shell is required"); processManager.setDevelopmentMode(enabled); shell.setDevelopmentMode(enabled); return "Development mode set to " + enabled; }
final ManagedMessageRenderer renderer = new ManagedMessageRenderer(filenameResolver, actual, true); renderer.setIncludeHashCode(processManager.isDevelopmentMode()); return new DefaultMutableFile(actual, null, renderer);
public void terminate() { synchronized (mutex) { if (processManager != null) { processManager.terminate(); } } }
@CliAvailabilityIndicator(PROCESS_MANAGER_DEBUG_COMMAND) public boolean isProcessManagerDebugAvailable() { return getShell().isDevelopmentMode() && getProcessManager().isDevelopmentMode(); }
public boolean isReadyForCommands() { synchronized (mutex) { if (processManager != null) { // BUSY_EXECUTION needed in case of recursive commands, such as // if executing a script // TERMINATED added in case of additional commands following a // quit or exit in a script - ROO-2270 final ProcessManagerStatus processManagerStatus = processManager.getProcessManagerStatus(); return processManagerStatus == ProcessManagerStatus.AVAILABLE || processManagerStatus == ProcessManagerStatus.BUSY_EXECUTING || processManagerStatus == ProcessManagerStatus.TERMINATED; } } return false; }
public Object execute(final ParseResult parseResult) throws RuntimeException { Validate.notNull(parseResult, "Parse result required"); synchronized (mutex) { Validate.isTrue(isReadyForCommands(), "ProcessManagerHostedExecutionStrategy not yet ready for commands"); return processManager.execute(new CommandCallback<Object>() { public Object callback() { try { return parseResult.getMethod().invoke(parseResult.getInstance(), parseResult.getArguments()); } catch (Exception e) { throw new RuntimeException(ObjectUtils.defaultIfNull(ExceptionUtils.getRootCause(e), e)); } } }); } }
@CliAvailabilityIndicator(REFERENCE_GUIDE_COMMAND) public boolean isReferenceGuideAvailable() { return getShell().isDevelopmentMode() && getProcessManager().isDevelopmentMode(); }
public MutableFile updateFile(final String fileIdentifier) { if (fileMonitorService == null) { fileMonitorService = getFileMonitorService(); } if (processManager == null) { processManager = getProcessManager(); } if (filenameResolver == null) { filenameResolver = getFileNameResolver(); } if (undoManager == null) { undoManager = getUndoManager(); } Validate.notNull(fileIdentifier, "File identifier required"); Validate.notNull(fileMonitorService, "FileMonitorService required"); Validate.notNull(processManager, "ProcessManager required"); Validate.notNull(filenameResolver, "FilenameResolver required"); Validate.notNull(undoManager, "UndoManager required"); final File actual = new File(fileIdentifier); Validate.isTrue(actual.exists(), "File '%s' does not exist", fileIdentifier); new UpdateFile(undoManager, filenameResolver, actual); final ManagedMessageRenderer renderer = new ManagedMessageRenderer(filenameResolver, actual, false); renderer.setIncludeHashCode(processManager.isDevelopmentMode()); return new DefaultMutableFile(actual, fileMonitorService, renderer); }
final ManagedMessageRenderer renderer = new ManagedMessageRenderer(filenameResolver, actual, true); renderer.setIncludeHashCode(processManager.isDevelopmentMode()); return new DefaultMutableFile(actual, null, renderer);
@CliAvailabilityIndicator(PROCESS_MANAGER_DEBUG_COMMAND) public boolean isProcessManagerDebugAvailable() { return getShell().isDevelopmentMode() && getProcessManager().isDevelopmentMode(); }