Launch classid validation async to not slowdown eclipse startup.
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java
index 5de5180..989519e 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java
@@ -97,7 +97,7 @@
catch (CoreException e) {
//nop
}
- ClassIdValidationJob.execute(0); // the modification of the annotation does not cause an annotation modify event to be triggered
+ ClassIdValidationJob.executeAsync(0); // the modification of the annotation does not cause an annotation modify event to be triggered
}
});
j.schedule();
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java
index fbe20b7..cd025eb 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java
@@ -236,21 +236,27 @@
IAnnotation annotation = (IAnnotation) event.getElement();
if (annotation != null && annotation.getElementName().endsWith(Signature.getSimpleName(IRuntimeClasses.ClassId))) {
if (TypeUtility.exists(event.getElement())) {
- execute(0);
+ executeAsync(1000);
}
}
}
}
}
- public static synchronized void execute(long startDelay) {
- // get the class id type outside of the job
- // because with the job rule a search cannot be performed -> IllegalArgumentException: Attempted to beginRule
- IType classId = TypeUtility.getType(IRuntimeClasses.ClassId);
- if (TypeUtility.exists(classId)) {
- Job.getJobManager().cancel(CLASS_ID_VALIDATION_JOB_FAMILY);
- new ClassIdValidationJob(classId).schedule(startDelay);
- }
+ public static synchronized void executeAsync(final long startDelay) {
+ new Job("schedule classid validation") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ // get the class id type outside of the validation job
+ // because with the job rule a search cannot be performed -> IllegalArgumentException: Attempted to beginRule
+ IType classId = TypeUtility.getType(IRuntimeClasses.ClassId);
+ if (TypeUtility.exists(classId)) {
+ Job.getJobManager().cancel(CLASS_ID_VALIDATION_JOB_FAMILY);
+ new ClassIdValidationJob(classId).schedule(startDelay);
+ }
+ return Status.OK_STATUS;
+ }
+ }.schedule();
}
private static final class P_SchedulingRule implements ISchedulingRule {
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java
index bbec9ca..dcdaa1e 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java
@@ -51,7 +51,7 @@
// start class id validation
ClassIdValidationJob.install();
- ClassIdValidationJob.execute(5000);
+ ClassIdValidationJob.executeAsync(5000);
// DTO auto update
m_autoUpdateManager = new DtoAutoUpdateManager();