Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 147290 Details for
Bug 283596
UIJob can be scheduled, but never run
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Bugfix
clipboard.txt (text/plain), 5.31 KB, created by
RĂ¼diger Herrmann
on 2009-09-16 05:55:48 EDT
(
hide
)
Description:
Bugfix
Filename:
MIME Type:
Creator:
RĂ¼diger Herrmann
Created:
2009-09-16 05:55:48 EDT
Size:
5.31 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rap.ui.workbench >Index: Eclipse UI/org/eclipse/rap/ui/internal/progress/JobManagerAdapter.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.ui.workbench/Eclipse UI/org/eclipse/rap/ui/internal/progress/JobManagerAdapter.java,v >retrieving revision 1.2 >diff -u -r1.2 JobManagerAdapter.java >--- Eclipse UI/org/eclipse/rap/ui/internal/progress/JobManagerAdapter.java 14 Sep 2009 12:06:43 -0000 1.2 >+++ Eclipse UI/org/eclipse/rap/ui/internal/progress/JobManagerAdapter.java 16 Sep 2009 09:53:48 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2007, 2008 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2007, 2009 Innoopract Informationssysteme GmbH. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -7,6 +7,7 @@ > * > * Contributors: > * Innoopract Informationssysteme GmbH - initial API and implementation >+ * EclipseSource - ongoing development > ******************************************************************************/ > package org.eclipse.rap.ui.internal.progress; > >@@ -25,13 +26,14 @@ > import org.eclipse.rwt.service.ISessionStore; > import org.eclipse.swt.widgets.Display; > import org.eclipse.ui.internal.progress.ProgressManager; >+import org.eclipse.ui.progress.UIJob; > > // RAP [fappel]: > public class JobManagerAdapter > extends ProgressProvider > implements IJobChangeListener > { >- >+ > private static JobManagerAdapter _instance; > private final Map jobs; > private final ProgressManager defaultProgressManager; >@@ -43,8 +45,8 @@ > } > return _instance; > } >- >- >+ >+ > private JobManagerAdapter() { > // To avoid deadlocks we have to use the same synchronisation lock. > // If anyone has a better idea - you're welcome. >@@ -63,16 +65,16 @@ > Job.getJobManager().setProgressProvider( this ); > Job.getJobManager().addJobChangeListener( this ); > } >- >- >+ >+ > /////////////////////////////// > // ProgressProvider >- >+ > public IProgressMonitor createMonitor( final Job job ) { > ProgressManager manager = findProgressManager( job ); > return manager.createMonitor( job ); > } >- >+ > public IProgressMonitor createMonitor( final Job job, > final IProgressMonitor group, > final int ticks ) >@@ -80,15 +82,15 @@ > ProgressManager manager = findProgressManager( job ); > return manager.createMonitor( job, group, ticks ); > } >- >+ > public IProgressMonitor createProgressGroup() { > return defaultProgressManager.createProgressGroup(); > } >- >- >+ >+ > /////////////////////////////// > // interface IJobChangeListener >- >+ > public void aboutToRun( final IJobChangeEvent event ) { > ProgressManager manager = findProgressManager( event.getJob() ); > manager.changeListener.aboutToRun( event ); >@@ -128,7 +130,7 @@ > } else { > // RAP [rh] fixes bug 283595 > event.getJob().cancel(); >- manager[ 0 ].changeListener.done( event ); >+ manager[ 0 ].changeListener.done( event ); > } > } > >@@ -139,27 +141,33 @@ > > public void scheduled( final IJobChangeEvent event ) { > ProgressManager manager; >+ Display display = findDisplay( event.getJob() ); > synchronized( lock ) { >- if( ContextProvider.hasContext() ) { >- jobs.put( event.getJob(), RWTLifeCycle.getSessionDisplay() ); >- bindToSession( event.getJob() ); >- String id = String.valueOf( event.getJob().hashCode() ); >- UICallBack.activate( id ); >+ if( display != null ) { >+ jobs.put( event.getJob(), display ); >+ Runnable runnable = new Runnable() { >+ public void run() { >+ bindToSession( event.getJob() ); >+ String id = String.valueOf( event.getJob().hashCode() ); >+ UICallBack.activate( id ); >+ } >+ }; >+ UICallBack.runNonUIThreadWithFakeContext( display, runnable ); > } > manager = findProgressManager( event.getJob() ); > } > manager.changeListener.scheduled( event ); > } > >+ > public void sleeping( final IJobChangeEvent event ) { > ProgressManager manager = findProgressManager( event.getJob() ); > manager.changeListener.sleeping( event ); > } > >- > ////////////////// > // helping methods >- >+ > private ProgressManager findProgressManager( final Job job ) { > synchronized( lock ) { > final ProgressManager result[] = new ProgressManager[ 1 ]; >@@ -180,7 +188,23 @@ > return result[ 0 ]; > } > } >- >+ >+ private static Display findDisplay( final Job job ) { >+ Display result = null; >+ if( ContextProvider.hasContext() ) { >+ result = RWTLifeCycle.getSessionDisplay(); >+ } else { >+ if( job instanceof UIJob ) { >+ UIJob uiJob = ( UIJob )job; >+ result = uiJob.getDisplay(); >+ if( result == null ) { >+ throw new IllegalStateException( "" ); >+ } >+ } >+ } >+ return result; >+ } >+ > private void bindToSession( final Object keyToRemove ) { > ISessionStore session = RWT.getSessionStore(); > HttpSessionBindingListener watchDog = new HttpSessionBindingListener() {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 283596
:
141679
|
141722
|
147289
| 147290