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 211881 Details for
Bug 372960
Sometimes CurrentPhase#get() returns a wrong phase
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]
Updated patch
Bug-372960.patch (text/plain), 15.31 KB, created by
Ivan Furnadjiev
on 2012-03-01 09:33:30 EST
(
hide
)
Description:
Updated patch
Filename:
MIME Type:
Creator:
Ivan Furnadjiev
Created:
2012-03-01 09:33:30 EST
Size:
15.31 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rap.rwt >Index: src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager.java,v >retrieving revision 1.3 >diff -u -r1.3 PhaseListenerManager.java >--- src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager.java 11 Jul 2011 20:25:31 -0000 1.3 >+++ src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager.java 1 Mar 2012 14:30:27 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2011 EclipseSource and others. >+ * Copyright (c) 2011, 2012 EclipseSource and others. > * 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 >@@ -11,7 +11,7 @@ > package org.eclipse.rwt.internal.lifecycle; > > import java.text.MessageFormat; >-import java.util.HashSet; >+import java.util.LinkedHashSet; > import java.util.Set; > > import org.eclipse.rwt.internal.service.ServletLog; >@@ -24,20 +24,20 @@ > private final ILifeCycle eventSource; > private final Object lock; > private final Set<PhaseListener> phaseListeners; >- >+ > PhaseListenerManager( ILifeCycle eventSource ) { > this.eventSource = eventSource; > this.lock = new Object(); >- this.phaseListeners = new HashSet<PhaseListener>(); >+ this.phaseListeners = new LinkedHashSet<PhaseListener>(); > } >- >+ > void addPhaseListener( PhaseListener phaseListener ) { > ParamCheck.notNull( phaseListener, "phaseListener" ); > synchronized( lock ) { > phaseListeners.add( phaseListener ); > } > } >- >+ > void addPhaseListeners( PhaseListener[] phaseListeners ) { > ParamCheck.notNull( phaseListeners, "phaseListeners" ); > for( int i = 0; i < phaseListeners.length; i++ ) { >@@ -59,7 +59,7 @@ > return result; > } > } >- >+ > void notifyBeforePhase( PhaseId phase ) { > PhaseListener[] phaseListeners = getPhaseListeners(); > PhaseEvent event = new PhaseEvent( eventSource, phase ); >@@ -89,7 +89,7 @@ > } > } > } >- >+ > private static boolean mustNotify( PhaseId phase, PhaseId listenerPhase ) { > return listenerPhase == PhaseId.ANY || listenerPhase == phase; > } >Index: src/org/eclipse/rwt/internal/lifecycle/PhaseListenerRegistry.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/rwt/internal/lifecycle/PhaseListenerRegistry.java,v >retrieving revision 1.9 >diff -u -r1.9 PhaseListenerRegistry.java >--- src/org/eclipse/rwt/internal/lifecycle/PhaseListenerRegistry.java 16 Sep 2011 13:27:22 -0000 1.9 >+++ src/org/eclipse/rwt/internal/lifecycle/PhaseListenerRegistry.java 1 Mar 2012 14:30:27 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH and others. >+ * Copyright (c) 2002, 2012 Innoopract Informationssysteme GmbH and others. > * 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 >@@ -11,7 +11,7 @@ > ******************************************************************************/ > package org.eclipse.rwt.internal.lifecycle; > >-import java.util.HashSet; >+import java.util.LinkedHashSet; > import java.util.Set; > > import org.eclipse.rwt.internal.util.ParamCheck; >@@ -22,14 +22,14 @@ > private final Set<PhaseListener> phaseListeners; > > public PhaseListenerRegistry() { >- phaseListeners = new HashSet<PhaseListener>(); >+ phaseListeners = new LinkedHashSet<PhaseListener>(); > } >- >+ > public void add( PhaseListener listener ) { > ParamCheck.notNull( listener, "listener" ); > phaseListeners.add( listener ); > } >- >+ > public void remove( PhaseListener listener ) { > ParamCheck.notNull( listener, "listener" ); > phaseListeners.remove( listener ); >#P org.eclipse.rap.rwt.test >Index: src/org/eclipse/rwt/internal/engine/PhaseListenerRegistry_Test.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.test/src/org/eclipse/rwt/internal/engine/PhaseListenerRegistry_Test.java,v >retrieving revision 1.19 >diff -u -r1.19 PhaseListenerRegistry_Test.java >--- src/org/eclipse/rwt/internal/engine/PhaseListenerRegistry_Test.java 4 Dec 2011 18:49:26 -0000 1.19 >+++ src/org/eclipse/rwt/internal/engine/PhaseListenerRegistry_Test.java 1 Mar 2012 14:30:28 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH and others. >+ * Copyright (c) 2002, 2012 Innoopract Informationssysteme GmbH and others. > * 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 >@@ -33,7 +33,7 @@ > } > > private PhaseListenerRegistry phaseListenerRegistry; >- >+ > public void testAdd() { > PhaseListener phaseListener = new TestPhaseListener(); > phaseListenerRegistry.add( phaseListener ); >@@ -46,21 +46,21 @@ > } catch( NullPointerException expected ) { > } > } >- >+ > public void testRemove() { > PhaseListener phaseListener = new TestPhaseListener(); > phaseListenerRegistry.add( phaseListener ); > phaseListenerRegistry.remove( phaseListener ); > assertEquals( 0, phaseListenerRegistry.getAll().length ); > } >- >+ > public void testRemoveAll() { > PhaseListener phaseListener = new TestPhaseListener(); > phaseListenerRegistry.add( phaseListener ); > phaseListenerRegistry.removeAll(); > assertEquals( 0, phaseListenerRegistry.getAll().length ); > } >- >+ > public void testRemoveWithNullArgument() { > try { > phaseListenerRegistry.remove( null ); >@@ -68,11 +68,25 @@ > } catch( NullPointerException expected ) { > } > } >- >+ >+ public void testListenersOrder() { >+ PhaseListener phaseListener1 = new TestPhaseListener(); >+ PhaseListener phaseListener2 = new TestPhaseListener(); >+ phaseListenerRegistry.add( phaseListener1 ); >+ phaseListenerRegistry.add( phaseListener2 ); >+ >+ PhaseListener[] allListeners = phaseListenerRegistry.getAll(); >+ >+ assertSame( phaseListener1, allListeners[ 0 ] ); >+ assertSame( phaseListener2, allListeners[ 1 ] ); >+ } >+ >+ @Override > protected void setUp() { > phaseListenerRegistry = new PhaseListenerRegistry(); > } >- >+ >+ @Override > protected void tearDown() { > ensureServiceContextHasBeenDisposed(); > } >Index: src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager_Test.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.test/src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager_Test.java,v >retrieving revision 1.4 >diff -u -r1.4 PhaseListenerManager_Test.java >--- src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager_Test.java 26 Dec 2011 15:10:43 -0000 1.4 >+++ src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager_Test.java 1 Mar 2012 14:30:28 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2011 EclipseSource and others. >+ * Copyright (c) 2011, 2012 EclipseSource and others. > * 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 >@@ -19,12 +19,14 @@ > import org.eclipse.rap.rwt.testfixture.*; > import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener; > import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener.PhaseEventInfo; >+import org.eclipse.rwt.RWT; > import org.eclipse.rwt.internal.service.ContextProvider; > import org.eclipse.rwt.lifecycle.*; >+import org.eclipse.swt.widgets.Display; > > > public class PhaseListenerManager_Test extends TestCase { >- >+ > private static class TestError extends Error { > private static final long serialVersionUID = 1L; > } >@@ -62,15 +64,15 @@ > > private static class ErrorPhaseListener implements PhaseListener { > private static final long serialVersionUID = 1L; >- >+ > public void beforePhase( PhaseEvent event ) { > throw new TestError(); > } >- >+ > public void afterPhase( PhaseEvent event ) { > throw new TestError(); > } >- >+ > public PhaseId getPhaseId() { > return PhaseId.ANY; > } >@@ -80,7 +82,7 @@ > private List<Throwable> exceptionsInServletLog; > private PhaseListenerManager phaseListenerManager; > private ILifeCycle lifeCycle; >- >+ > public void testAddPhaseListenerWithNullArgument() { > try { > phaseListenerManager.addPhaseListener( null ); >@@ -88,7 +90,7 @@ > } catch( NullPointerException expected ) { > } > } >- >+ > public void testAddPhaseListener() { > LoggingPhaseListener phaseListener = new LoggingPhaseListener( null ); > phaseListenerManager.addPhaseListener( phaseListener ); >@@ -104,7 +106,7 @@ > PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners(); > assertEquals( 1, phaseListeners.length ); > } >- >+ > public void testAddPhaseListeners() { > PhaseListener phaseListener1 = new EmptyPhaseListener(); > PhaseListener phaseListener2 = new EmptyPhaseListener(); >@@ -113,7 +115,7 @@ > PhaseListener[] returnedPhaseListeners = phaseListenerManager.getPhaseListeners(); > assertEquals( 2, returnedPhaseListeners.length ); > } >- >+ > public void testAddPhaseListenersWithNullArgument() { > try { > phaseListenerManager.addPhaseListeners( null ); >@@ -121,7 +123,7 @@ > } catch( NullPointerException expected ) { > } > } >- >+ > public void testRemovePhaseListenerWithNullArgument() { > try { > phaseListenerManager.removePhaseListener( null ); >@@ -137,7 +139,7 @@ > PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners(); > assertEquals( 0, phaseListeners.length ); > } >- >+ > public void testRemovePhaseListenerTwice() { > LoggingPhaseListener phaseListener = new LoggingPhaseListener( null ); > phaseListenerManager.addPhaseListener( phaseListener ); >@@ -146,14 +148,14 @@ > PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners(); > assertEquals( 0, phaseListeners.length ); > } >- >+ > public void testRemovePhaseListenerWithUnknownPhaseListener() { > phaseListenerManager.addPhaseListener( new LoggingPhaseListener( null ) ); > phaseListenerManager.removePhaseListener( new LoggingPhaseListener( null ) ); > PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners(); > assertEquals( 1, phaseListeners.length ); > } >- >+ > public void testGetPhaseListenersReturnsSafeCopy() { > phaseListenerManager.addPhaseListener( new LoggingPhaseListener( null ) ); > PhaseListener[] phaseListeners1 = phaseListenerManager.getPhaseListeners(); >@@ -161,7 +163,7 @@ > PhaseListener[] phaseListeners2 = phaseListenerManager.getPhaseListeners(); > assertNotNull( phaseListeners2[ 0 ] ); > } >- >+ > public void testAddRemovePhaseListenerConcurently() throws InterruptedException { > final int threadCount = 120; > final List<Thread> succeededThreads = Collections.synchronizedList( new LinkedList<Thread>() ); >@@ -188,17 +190,17 @@ > phaseListenerManager.notifyBeforePhase( phase ); > assertEquals( 1, phaseListener.getLoggedEvents().length ); > PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ]; >- assertSame( lifeCycle, phaseEvent.source ); >+ assertSame( lifeCycle, phaseEvent.source ); > assertEquals( phase, phaseEvent.phaseId ); > } >- >+ > public void testNotifyBeforePhaseWithNonMatchingListener() { > LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.RENDER ); > phaseListenerManager.addPhaseListener( phaseListener ); > phaseListenerManager.notifyBeforePhase( PhaseId.READ_DATA ); > assertEquals( 0, phaseListener.getLoggedEvents().length ); > } >- >+ > public void testNotifyBeforePhaseWithANYListener() { > PhaseId phase = PhaseId.READ_DATA; > LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY ); >@@ -206,10 +208,10 @@ > phaseListenerManager.notifyBeforePhase( phase ); > assertEquals( 1, phaseListener.getLoggedEvents().length ); > PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ]; >- assertSame( lifeCycle, phaseEvent.source ); >+ assertSame( lifeCycle, phaseEvent.source ); > assertEquals( phase, phaseEvent.phaseId ); > } >- >+ > public void testExceptionsInBeforePhaseEvent() { > phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() ); > phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() ); >@@ -232,17 +234,17 @@ > phaseListenerManager.addPhaseListener( phaseListener ); > phaseListenerManager.notifyAfterPhase( phase ); > assertEquals( 1, phaseListener.getLoggedEvents().length ); >- assertSame( lifeCycle, phaseListener.getLoggedEvents()[ 0 ].source ); >+ assertSame( lifeCycle, phaseListener.getLoggedEvents()[ 0 ].source ); > assertEquals( phase, phaseListener.getLoggedEvents()[ 0 ].phaseId ); > } >- >+ > public void testNotifyAfterPhaseWithNonMatchingListener() { > LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.RENDER ); > phaseListenerManager.addPhaseListener( phaseListener ); > phaseListenerManager.notifyAfterPhase( PhaseId.READ_DATA ); > assertEquals( 0, phaseListener.getLoggedEvents().length ); > } >- >+ > public void testNotifyAfterPhaseWithANYListener() { > PhaseId phase = PhaseId.READ_DATA; > LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY ); >@@ -250,10 +252,10 @@ > phaseListenerManager.notifyAfterPhase( phase ); > assertEquals( 1, phaseListener.getLoggedEvents().length ); > PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ]; >- assertSame( lifeCycle, phaseEvent.source ); >+ assertSame( lifeCycle, phaseEvent.source ); > assertEquals( phase, phaseEvent.phaseId ); > } >- >+ > public void testExceptionsInAfterPhaseEvent() { > phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() ); > phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() ); >@@ -270,6 +272,28 @@ > } > } > >+ // see bug 372960 >+ public void testCurrentPhaseMatchPhaseEventPhase() { >+ new Display(); >+ final List<PhaseId> log = new ArrayList<PhaseId>(); >+ RWT.getLifeCycle().addPhaseListener( new PhaseListener() { >+ public PhaseId getPhaseId() { >+ return PhaseId.PROCESS_ACTION; >+ } >+ public void beforePhase( PhaseEvent event ) { >+ log.add( CurrentPhase.get() ); >+ log.add( event.getPhaseId() ); >+ } >+ public void afterPhase( PhaseEvent event ) { >+ } >+ } ); >+ >+ Fixture.executeLifeCycleFromServerThread(); >+ >+ assertEquals( log.get( 0 ), log.get( 1 ) ); >+ } >+ >+ @Override > protected void setUp() throws Exception { > Fixture.setUp(); > lifeCycle = new TestLifeCycle(); >@@ -278,6 +302,7 @@ > setupServletContextLog(); > } > >+ @Override > protected void tearDown() throws Exception { > Fixture.tearDown(); > }
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 372960
:
211867
|
211881
|
211919