Skip to content

Commit 63df509

Browse files
Fetch modified objects for pull in Modal thread (#276)
1 parent 4dcaf3b commit 63df509

File tree

5 files changed

+55
-13
lines changed

5 files changed

+55
-13
lines changed

org.abapgit.adt.ui/src/org/abapgit/adt/ui/internal/i18n/Messages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ public class Messages extends NLS {
8080
public static String AbapGitWizardPageBranchAndPackage_btn_browse;
8181
public static String AbapGitWizardPageBranchAndPackage_combobox_branch_message;
8282
public static String AbapGitWizardPageBranchAndPackage_description;
83+
public static String AbapGitWizardPageBranchAndPackage_FetchingModifiedObjectsForPull;
8384
public static String AbapGitWizardPageBranchAndPackageAndFolderLogic_description;
8485
public static String AbapGitWizardPageFolderLogic_AlreadyExists_Full;
8586
public static String AbapGitWizardPageFolderLogic_AlreadyExists_Prefix;

org.abapgit.adt.ui/src/org/abapgit/adt/ui/internal/i18n/messages.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ AbapGitWizardPageBranchAndPackage_chbox_activate_tooltip=Try to activate all obj
7373
AbapGitWizardPageBranchAndPackage_btn_browse=Browse...
7474
AbapGitWizardPageBranchAndPackage_combobox_branch_message=Specify a branch
7575
AbapGitWizardPageBranchAndPackage_description=Select repository branch, target ABAP package
76+
AbapGitWizardPageBranchAndPackage_FetchingModifiedObjectsForPull=Fetching objects differing between local and remote repository.
7677
AbapGitWizardPageBranchAndPackageAndFolderLogic_description=Select repository branch, target ABAP package and folder logic
7778
AbapGitWizardPageBranchAndPackage_label_branch=Branch\:
7879
AbapGitWizardPageBranchAndPackage_label_package=Package\:

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

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -268,20 +268,20 @@ public void handlePageChanging(final PageChangingEvent event) {
268268
return;
269269
}
270270

271-
//-> Any Page -> Folder Logic page
271+
//-> Any Page -> Folder Logic page
272272
//(If only linking a repository and no APACK dependencies, no need to show transport page and finish wizard )
273273
if (event.getTargetPage() == AbapGitWizard.this.pageFolderlogic && !AbapGitWizard.this.pageBranchAndPackage.getLnpSequence() && !AbapGitWizard.this.cloneData.hasDependencies() ) {
274274
AbapGitWizard.this.transportPage.setPageComplete(true);
275275
AbapGitWizard.this.pageFolderlogic.setPageComplete(true);
276276
}
277-
277+
278278
// -> Folder Logic page -> Branch & Package page
279279
if (event.getCurrentPage() == AbapGitWizard.this.pageFolderlogic
280280
&& event.getTargetPage() == AbapGitWizard.this.pageBranchAndPackage) {
281281
AbapGitWizard.this.transportPage.setPageComplete(false);
282282
}
283283

284-
//-> Any Page -> APACK page
284+
//-> Any Page -> APACK page
285285
//(If only linking a repository, no need to show transport page and finish wizard)
286286
if (event.getTargetPage() == AbapGitWizard.this.pageApack && !AbapGitWizard.this.pageBranchAndPackage.getLnpSequence()) {
287287
AbapGitWizard.this.transportPage.setPageComplete(true);
@@ -375,22 +375,47 @@ public boolean hasDependencies() {
375375

376376
/**
377377
* Fetch the modified objects for the main repository and dependencies (if
378-
* any) Then maintain the overWrite objects and warning package objects,
379-
* separately in the clone data object
378+
* any). Then maintain the overWrite objects and warning package objects,
379+
* separately in the clone data object.
380380
*
381381
* Return true in case there are modified objects, otherwise return false.
382382
*/
383383
private boolean fillModifiedObjectsinCloneData(IRepositoryService repoService, IRepository repository) {
384384

385385
IRepositories repositories = repoService.getRepositories(new NullProgressMonitor());
386386

387-
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(repository, repoService, this.cloneData);
387+
try {
388+
getContainer().run(true, true, new IRunnableWithProgress() {
389+
390+
@Override
391+
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
392+
monitor.beginTask(Messages.AbapGitWizardPageBranchAndPackage_FetchingModifiedObjectsForPull, IProgressMonitor.UNKNOWN);
393+
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(repository, repoService, AbapGitWizard.this.cloneData);
394+
}
395+
});
396+
} catch (InvocationTargetException | InterruptedException e) {
397+
e.printStackTrace();
398+
}
388399

389400
if (this.cloneData.hasDependencies()) {
390401
for (IApackDependency apackDependency : this.cloneData.apackManifest.getDescriptor().getDependencies()) {
391402
IRepository dependencyRepository = repoService.getRepositoryByURL(repositories, apackDependency.getGitUrl());
392403
if (dependencyRepository != null) {
393-
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(dependencyRepository, repoService, this.cloneData);
404+
405+
try {
406+
getContainer().run(true, true, new IRunnableWithProgress() {
407+
408+
@Override
409+
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
410+
monitor.beginTask(Messages.AbapGitWizardPageBranchAndPackage_FetchingModifiedObjectsForPull,
411+
IProgressMonitor.UNKNOWN);
412+
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(dependencyRepository, repoService,
413+
AbapGitWizard.this.cloneData);
414+
}
415+
});
416+
} catch (InvocationTargetException | InterruptedException e) {
417+
e.printStackTrace();
418+
}
394419
}
395420
}
396421
}

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.eclipse.swt.widgets.TableColumn;
3838
import org.eclipse.swt.widgets.TableItem;
3939

40-
import com.sap.adt.communication.resources.ResourceException;
4140
import com.sap.adt.tools.core.model.adtcore.IAdtCoreFactory;
4241
import com.sap.adt.tools.core.model.adtcore.IAdtObjectReference;
4342
import com.sap.adt.tools.core.ui.packages.AdtPackageServiceUIFactory;
@@ -390,8 +389,17 @@ public IWizardPage getNextPage() {
390389
// If selectivePull is not supported, fetching modified objects is not required and all objects are to be pulled
391390
if (dependencyRepository != null && abapGitService.isSelectivePullSupported(dependencyRepository)) {
392391
try {
393-
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(dependencyRepository, repoService, this.cloneData);
394-
} catch (ResourceException e) {
392+
getContainer().run(true, true, new IRunnableWithProgress() {
393+
394+
@Override
395+
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
396+
monitor.beginTask(Messages.AbapGitWizardPageBranchAndPackage_FetchingModifiedObjectsForPull,
397+
IProgressMonitor.UNKNOWN);
398+
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(dependencyRepository, repoService,
399+
AbapGitWizardPageApack.this.cloneData);
400+
}
401+
});
402+
} catch (InvocationTargetException | InterruptedException e) {
395403
setMessage(e.getMessage(), DialogPage.ERROR);
396404
setPageComplete(false);
397405
return null;

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import org.eclipse.swt.widgets.Composite;
4444
import org.eclipse.swt.widgets.Label;
4545

46-
import com.sap.adt.communication.resources.ResourceException;
4746
import com.sap.adt.tools.core.model.adtcore.IAdtObjectReference;
4847
import com.sap.adt.tools.core.ui.packages.AdtPackageProposalProviderFactory;
4948
import com.sap.adt.tools.core.ui.packages.AdtPackageServiceUIFactory;
@@ -318,8 +317,16 @@ public IWizardPage getNextPage() {
318317
// If selectivePull is not supported, fetching modified objects is not required and all objects are to be pulled
319318
if (abapGitService.isSelectivePullSupported(repository)) {
320319
try {
321-
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(repository, repoService, this.cloneData);
322-
} catch (ResourceException e) {
320+
getContainer().run(true, true, new IRunnableWithProgress() {
321+
322+
@Override
323+
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
324+
monitor.beginTask(Messages.AbapGitWizardPageBranchAndPackage_FetchingModifiedObjectsForPull, IProgressMonitor.UNKNOWN);
325+
RepositoryUtil.fetchAndExtractModifiedObjectsToPull(repository, repoService,
326+
AbapGitWizardPageBranchAndPackage.this.cloneData);
327+
}
328+
});
329+
} catch (InvocationTargetException | InterruptedException e) {
323330
setMessage(e.getMessage(), DialogPage.ERROR);
324331
setPageComplete(false);
325332
return null;

0 commit comments

Comments
 (0)