public Object execute()

in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/pr/RebasePullRequestHandler.java [49:105]


	public Object execute(final ExecutionEvent event) throws ExecutionException {
		final TaskData data = getTaskData(event);
		if (data == null)
			return null;
		Job job = new Job(MessageFormat.format(
				Messages.RebasePullRequestHandler_RebaseJob, data.getTaskId())) {

			@Override
			protected IStatus run(IProgressMonitor monitor) {
				try {
					PullRequestComposite prComp = PullRequestConnector
							.getPullRequest(data);
					if (prComp == null)
						return Status.CANCEL_STATUS;
					PullRequest request = prComp.getRequest();
					Repository repo = PullRequestUtils.getRepository(request);
					if (repo == null)
						return Status.CANCEL_STATUS;
					String branchName = PullRequestUtils.getBranchName(request);
					try {
						String target = request.getBase().getRef();
						Ref targetRef = repo
								.findRef(request.getBase().getRef());
						if (targetRef != null) {
							SubMonitor progress = SubMonitor.convert(monitor,
									2);
							if (!PullRequestUtils.isCurrentBranch(branchName,
									repo)) {
								progress.subTask(MessageFormat.format(
										Messages.RebasePullRequestHandler_TaskCheckout,
										branchName));
								BranchOperationUI.checkout(repo, branchName)
										.run(progress.newChild(1));
							}
							progress.subTask(MessageFormat.format(
									Messages.RebasePullRequestHandler_TaskRebase,
									branchName, target));
							new RebaseOperation(repo, targetRef)
									.execute(progress.newChild(1));
							executeCallback(event);
						}
					} catch (IOException e) {
						GitHubUi.logError(e);
					} catch (CoreException e) {
						GitHubUi.logError(e);
					}
					return Status.OK_STATUS;
				} finally {
					if (monitor != null) {
						monitor.done();
					}
				}
			}
		};
		schedule(job, event);
		return null;
	}