Skip to content

Commit b1b9252

Browse files
committed
background framework implementation chanegs
1 parent ba7b2ad commit b1b9252

File tree

3 files changed

+58
-37
lines changed

3 files changed

+58
-37
lines changed

org.abapgit.adt.backend/src/org/abapgit/adt/backend/IRepositoryService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
public interface IRepositoryService {
1919

20+
// CHNG: Remove new pull relation
21+
String RELATION_PULL_NEW = "http://www.sap.com/adt/abapgit/relations/pullTry"; //$NON-NLS-1$
2022
String RELATION_PULL = "http://www.sap.com/adt/abapgit/relations/pull"; //$NON-NLS-1$
2123
String RELATION_STATUS = "http://www.sap.com/adt/abapgit/relations/status"; //$NON-NLS-1$
2224
String RELATION_LOG = "http://www.sap.com/adt/abapgit/relations/log"; //$NON-NLS-1$

org.abapgit.adt.backend/src/org/abapgit/adt/backend/internal/RepositoryService.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class RepositoryService implements IRepositoryService {
3333

3434
private final String destinationId;
3535
private final URI uri;
36+
private String result;
3637

3738
public RepositoryService(String destinationId, URI uri) {
3839
this.destinationId = destinationId;
@@ -292,13 +293,17 @@ public IAbapGitPullModifiedObjects getModifiedObjects(IProgressMonitor monitor,
292293

293294
}
294295

296+
// CHNG: Change it back to original pull relation
295297
@Override
296298
public IAbapObjects pullRepository(IRepository existingRepository, String branch, String transportRequest, String user, String password,
297299
IAbapGitPullModifiedObjects selectedObjectsToPull, IProgressMonitor monitor) {
298-
URI uriToRepo = getURIFromAtomLink(existingRepository, IRepositoryService.RELATION_PULL);
299-
IRestResource restResource = AdtRestResourceFactory.createRestResourceFactory().createResourceWithStatelessSession(uriToRepo,
300-
this.destinationId);
301-
300+
URI uriToRepo = getURIFromAtomLink(existingRepository, IRepositoryService.RELATION_PULL_NEW);
301+
URI backgroundUri = AdtBackgroundRunUriDiscoveryFactory.createBackgroundRunUriDiscovery(this.destinationId)
302+
.getBackgroundRunUriIfAuthorized(monitor);
303+
IRestResource restResource = AdtBackgroundRestResourceFactory.createBackgroundRestResourceFactory()
304+
.createResourceWithStatelessSession(backgroundUri, uriToRepo, this.destinationId);
305+
// IRestResource restResource = AdtRestResourceFactory.createRestResourceFactory().createResourceWithStatelessSession(uriToRepo,
306+
// this.destinationId);
302307
IContentHandler<IAbapGitPullRequest> requestContentHandlerV1 = new AbapGitPullRequestContentHandler();
303308
restResource.addContentHandler(requestContentHandlerV1);
304309

org.abapgit.adt.ui/src/org/abapgit/adt/ui/internal/wizards/AbapGitWizardPull.java

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.HashMap;
55
import java.util.List;
66
import java.util.Map;
7+
import java.util.Set;
78

89
import org.abapgit.adt.backend.IApackManifest;
910
import org.abapgit.adt.backend.IApackManifest.IApackDependency;
@@ -14,21 +15,28 @@
1415
import org.abapgit.adt.backend.model.agitpullmodifiedobjects.IAbapGitPullModifiedObjects;
1516
import org.abapgit.adt.ui.AbapGitUIPlugin;
1617
import org.abapgit.adt.ui.internal.i18n.Messages;
18+
import org.abapgit.adt.ui.internal.repositories.IRepositoryModifiedObjects;
1719
import org.abapgit.adt.ui.internal.util.AbapGitUIServiceFactory;
1820
import org.abapgit.adt.ui.internal.wizards.AbapGitWizard.CloneData;
1921
import org.eclipse.core.resources.IProject;
2022
import org.eclipse.core.runtime.Assert;
2123
import org.eclipse.core.runtime.IProgressMonitor;
24+
import org.eclipse.core.runtime.IStatus;
25+
import org.eclipse.core.runtime.Status;
26+
import org.eclipse.core.runtime.jobs.Job;
2227
import org.eclipse.jface.dialogs.DialogPage;
2328
import org.eclipse.jface.dialogs.IMessageProvider;
2429
import org.eclipse.jface.dialogs.IPageChangingListener;
30+
import org.eclipse.jface.dialogs.MessageDialog;
2531
import org.eclipse.jface.dialogs.PageChangingEvent;
2632
import org.eclipse.jface.operation.IRunnableWithProgress;
2733
import org.eclipse.jface.wizard.IWizardContainer;
2834
import org.eclipse.jface.wizard.IWizardPage;
2935
import org.eclipse.jface.wizard.Wizard;
3036
import org.eclipse.jface.wizard.WizardDialog;
3137
import org.eclipse.jface.wizard.WizardPage;
38+
import org.eclipse.swt.widgets.Display;
39+
import org.eclipse.swt.widgets.Shell;
3240
import org.eclipse.ui.PlatformUI;
3341
import org.eclipse.ui.plugin.AbstractUIPlugin;
3442

@@ -148,61 +156,67 @@ public void addPages() {
148156
@Override
149157
public boolean performFinish() {
150158

151-
try {
152-
getContainer().run(true, true, new IRunnableWithProgress() {
159+
// Extracting variable earlier to ensure consistency in asynchronous code flow
160+
Set<IRepositoryModifiedObjects> overwriteObjects = AbapGitWizardPull.this.pageOverwriteObjectsSelection.getSelectedObjects();
161+
Set<IRepositoryModifiedObjects> packageWarningObjects = AbapGitWizardPull.this.pagePackageWarningObjectsSelection
162+
.getSelectedObjects();
153163

154-
@Override
155-
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
164+
Job pullRepoJob = new Job(Messages.AbapGitWizard_task_pulling_repository) {
165+
@Override
166+
protected IStatus run(IProgressMonitor monitor) {
167+
try {
156168
monitor.beginTask(Messages.AbapGitWizard_task_pulling_repository, IProgressMonitor.UNKNOWN);
169+
157170
IRepositoryService repoService = RepositoryServiceFactory.createRepositoryService(AbapGitWizardPull.this.destination,
158171
monitor);
159172

160-
//get the selected objects to be pulled
173+
// Get the selected objects to be pulled
161174
AbapGitWizardPull.this.repoToSelectedObjects = AbapGitUIServiceFactory.createAbapGitPullService()
162-
.getSelectedObjectsToPullforRepo(AbapGitWizardPull.this.pageOverwriteObjectsSelection.getSelectedObjects(),
163-
AbapGitWizardPull.this.pagePackageWarningObjectsSelection.getSelectedObjects());
175+
.getSelectedObjectsToPullforRepo(overwriteObjects, packageWarningObjects);
164176

165-
//pull the selected objects
177+
// Pull the selected objects
166178
repoService.pullRepository(AbapGitWizardPull.this.selRepoData, AbapGitWizardPull.this.selRepoData.getBranchName(),
167179
AbapGitWizardPull.this.transportPage.getTransportRequestNumber(), AbapGitWizardPull.this.cloneData.user,
168180
AbapGitWizardPull.this.cloneData.pass,
169181
AbapGitWizardPull.this.repoToSelectedObjects.get(AbapGitWizardPull.this.selRepoData.getUrl()), monitor);
170182

183+
// Pull dependencies if any
171184
if (AbapGitWizardPull.this.cloneData.hasDependencies()) {
172185
pullDependencies(monitor, repoService);
173186
}
187+
188+
return Status.OK_STATUS;
189+
} catch (ResourceException e) {
190+
Display.getDefault().asyncExec(() -> {
191+
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
192+
MessageDialog.openError(shell, "Error", e.getMessage()); //$NON-NLS-1$
193+
});
194+
return new Status(IStatus.ERROR, AbapGitUIPlugin.PLUGIN_ID, e.getMessage(), e);
174195
}
196+
}
175197

176-
private void pullDependencies(IProgressMonitor monitor, IRepositoryService repoService) {
177-
for (IApackDependency apackDependency : AbapGitWizardPull.this.cloneData.apackManifest.getDescriptor()
178-
.getDependencies()) {
179-
if (apackDependency.requiresSynchronization()) {
180-
IRepository dependencyRepository = repoService.getRepositoryByURL(AbapGitWizardPull.this.cloneData.repositories,
181-
apackDependency.getGitUrl());
182-
if (dependencyRepository != null) {
183-
repoService.pullRepository(dependencyRepository, IApackManifest.MASTER_BRANCH,
184-
AbapGitWizardPull.this.transportPage.getTransportRequestNumber(),
185-
AbapGitWizardPull.this.cloneData.user, AbapGitWizardPull.this.cloneData.pass,
186-
AbapGitWizardPull.this.repoToSelectedObjects.get(dependencyRepository.getUrl()), monitor);
198+
private void pullDependencies(IProgressMonitor monitor, IRepositoryService repoService) {
199+
for (IApackDependency apackDependency : AbapGitWizardPull.this.cloneData.apackManifest.getDescriptor().getDependencies()) {
200+
if (apackDependency.requiresSynchronization()) {
201+
IRepository dependencyRepository = repoService.getRepositoryByURL(AbapGitWizardPull.this.cloneData.repositories,
202+
apackDependency.getGitUrl());
203+
if (dependencyRepository != null) {
204+
repoService.pullRepository(dependencyRepository, IApackManifest.MASTER_BRANCH,
205+
AbapGitWizardPull.this.transportPage.getTransportRequestNumber(), AbapGitWizardPull.this.cloneData.user,
206+
AbapGitWizardPull.this.cloneData.pass,
207+
AbapGitWizardPull.this.repoToSelectedObjects.get(dependencyRepository.getUrl()), monitor);
208+
}
187209
}
188210
}
189211
}
190-
}
191-
});
192212

193-
return true;
213+
};
214+
215+
pullRepoJob.setUser(true); // Shows the job in progress view
216+
pullRepoJob.schedule();
217+
218+
return true;
194219

195-
} catch (InterruptedException e) {
196-
return false;
197-
} catch (InvocationTargetException e) {
198-
((WizardPage) getContainer().getCurrentPage()).setPageComplete(false);
199-
((WizardPage) getContainer().getCurrentPage()).setMessage(e.getTargetException().getMessage(), DialogPage.ERROR);
200-
return false;
201-
} catch (ResourceException e) {
202-
((WizardPage) getContainer().getCurrentPage()).setPageComplete(false);
203-
((WizardPage) getContainer().getCurrentPage()).setMessage(e.getMessage(), DialogPage.ERROR);
204-
return false;
205-
}
206220
}
207221

208222
@Override

0 commit comments

Comments
 (0)