Runnable createAsyncTaskRunner(final AsyncTask<A> task) { final ManagementRequestContext<A> context = this; final AsyncTaskRunner runner = new AsyncTaskRunner() { @Override protected void doExecute() { try { task.execute(context); } catch (Exception e) { resultHandler.failed(e); requests.remove(requestId); } } }; support.addCancellable(runner); return runner; }
Runnable createAsyncTaskRunner(final AsyncTask<A> task, final boolean cancellable) { final ManagementRequestContext<A> context = this; final AsyncTaskRunner runner = new AsyncTaskRunner(cancellable) { @Override protected void doExecute() { try { task.execute(context); } catch (Throwable t) { if(support.getResultHandler().failed(t)) { ManagementProtocolHeader requestHeader; if (task instanceof MultipleResponseAsyncTask) { requestHeader = ((MultipleResponseAsyncTask) task).getCurrentRequestHeader(); requestHeader = requestHeader == null ? header : requestHeader; } else { requestHeader = header; } AbstractMessageHandler.safeWriteErrorResponse(channel, requestHeader, t); } ProtocolLogger.ROOT_LOGGER.debugf(t, " failed to process async request for %s on channel %s", task, channel); } } }; if (cancellable) { support.addCancellable(runner); } return runner; }
Runnable createAsyncTaskRunner(final AsyncTask<A> task, final boolean cancellable) { final ManagementRequestContext<A> context = this; final AsyncTaskRunner runner = new AsyncTaskRunner(cancellable) { @Override protected void doExecute() { try { task.execute(context); } catch (Throwable t) { if(support.getResultHandler().failed(t)) { ManagementProtocolHeader requestHeader; if (task instanceof MultipleResponseAsyncTask) { requestHeader = ((MultipleResponseAsyncTask) task).getCurrentRequestHeader(); requestHeader = requestHeader == null ? header : requestHeader; } else { requestHeader = header; } AbstractMessageHandler.safeWriteErrorResponse(channel, requestHeader, t); } ProtocolLogger.ROOT_LOGGER.debugf(t, " failed to process async request for %s on channel %s", task, channel); } } }; if (cancellable) { support.addCancellable(runner); } return runner; }
Runnable createAsyncTaskRunner(final AsyncTask<A> task) { final ManagementRequestContext<A> context = this; final AsyncTaskRunner runner = new AsyncTaskRunner() { @Override protected void doExecute() { try { /*UserInfo userInfo = channel.getConnection().getUserInfo(); if (userInfo instanceof SubjectUserInfo) { Subject.doAs(((SubjectUserInfo) userInfo).getSubject(), new PrivilegedExceptionAction<Void>() { @Override public Void run() throws Exception { task.execute(context); return null; } }); } else {*/ task.execute(context); //} } catch (Exception e) { ProtocolLogger.ROOT_LOGGER.debugf(e, " failed to process async request for %s on channel %s", task, channel); if(resultHandler.failed(e)) { safeWriteErrorResponse(channel, header, e); } } } }; support.addCancellable(runner); return runner; }